From 1e1f79b57309a7c810027dae822adf03d6ecbda7 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 5 Apr 2012 23:38:41 +0200 Subject: .xbindkeysrc.scm --- .xbindkeysrc.scm | 440 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 271 insertions(+), 169 deletions(-) (limited to '.xbindkeysrc.scm') diff --git a/.xbindkeysrc.scm b/.xbindkeysrc.scm index 205bf0d..d58e4db 100644 --- a/.xbindkeysrc.scm +++ b/.xbindkeysrc.scm @@ -1,122 +1,135 @@ ;;;_ Import -(use-modules (ice-9 popen) - (ice-9 rdelim)) - +;; (use-modules (ice-9 popen) +;; (ice-9 rdelim)) +(use-modules (srfi srfi-19)) ;;;_ Variables +(define browser (getenv "BROWSER")) +(define dmenu-cmd "dmenu") +(define dzen-cmd "dzen2") +(define dzen-pipe '()) +(define editor (getenv "EDITOR")) (define modkey 'mod4) +(define prefix `(,modkey w)) +(define terminal "urxvt") +(define date-format "~a ~d ~b ~Y ~H:~M") + (define dmenu-font "-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*") -(define dmenu-cmd "dmenu") + (define dmenu-args (string-append "-b -nb '#000000' -nf '#15abc3' -sb '#e0c625' -sf '#000000' -fn '" dmenu-font "'")) + (define dzen-font "-misc-tamsyn-medium-r-normal-*-17-*-*-*-*-*-iso8859-*") -(define dzen-cmd "dzen2") + (define dzen-args (string-append " -fn '" dzen-font "' -x 5 -y 5 -bg '#000000' -fg '#15abc3'")) -(define dzen-pipe '()) -(define previous-tag '()) -(define current-tag "default") -(define terminal "st") +;; (define previous-tag '()) +;; (define current-tag "default") ;;;_ Macros -(define-macro (cmd command) - `(lambda () - (run-command ,command) - (reset-main-binding))) - -(define-macro (create-map name binding . more) - `(define (,name) - (ungrab-all-keys) - (remove-all-keys) - (begin ,binding . ,more) - (xbindkey-function `(,modkey g) reset-main-binding) - (grab-all-keys))) +;; (define-macro (cmd command) +;; `(lambda () +;; (run-command ,command) +;; (reset-main-binding))) + +;; (define-macro (run application) +;; `(lambda () +;; (run-command (string-append ,application " &")) +;; (reset-main-binding))) + +;; (define-macro (create-map name binding . more) +;; `(define (,name) +;; (ungrab-all-keys) +;; (remove-all-keys) +;; (begin ,binding . ,more) +;; (xbindkey-function `(,modkey g) reset-main-binding) +;; (grab-all-keys))) ;;;_ Functions -(define (reset-main-binding) - "reset first binding" - (close-gui-window) - (ungrab-all-keys) - (remove-all-keys) - (main-binding) - (grab-all-keys)) +;; (define (reset-main-binding) +;; "reset first binding" +;; (close-gui-window) +;; (ungrab-all-keys) +;; (remove-all-keys) +;; (prefix-binding) +;; (grab-all-keys)) + +;; (define (get-tags) +;; "Get a list of tags" +;; (let* ((file (open-input-pipe +;; "TAGS=( $(herbstclient tag_status 0 | tr \":\\!.+#\" \" \") ); echo ${TAGS[@]}")) +;; (tags (string-split (read-line file) #\ ))) +;; (close-port file) +;; (set! tags (delete current-tag tags)) +;; (set! tags (delete previous-tag tags)) +;; (if (not (null? previous-tag)) +;; (append `(,previous-tag) (append tags `(,current-tag))) +;; (append tags `(,current-tag))))) -(define (get-tags) - "Get a list of tags" - (let* ((file (open-input-pipe - "TAGS=( $(herbstclient tag_status 0 | tr \":\\!.+#\" \" \") ); echo ${TAGS[@]}")) - (tags (string-split (read-line file) #\ ))) - (close-port file) - (set! tags (delete current-tag tags)) - (set! tags (delete previous-tag tags)) - (if (not (null? previous-tag)) - (append `(,previous-tag) (append tags `(,current-tag))) - (append tags `(,current-tag))))) - -(define (choose-tag prompt tags) - "Ask to choose a tag" - (let* ((file (open-input-pipe - (string-append "echo '" (string-join tags "\n") - "' | " dmenu-cmd " " dmenu-args " -p '" prompt ":'"))) - (tag (read-line file))) - (close-port file) - tag)) - -(define (switch-to-tag tag) - (let ((tags (get-tags))) - (if (string? tag) - (begin - (if (not (member tag tags)) - (system (string-append "herbstclient add " tag))) - (set! previous-tag current-tag) - (set! current-tag tag) - (run-command (string-append "herbstclient use " tag)))))) - -(define (switch-tags) - "Switch to another tag" - (let* ((tags (get-tags)) - (tag (choose-tag "Switch to tag" tags))) - (switch-to-tag tag) - (reset-main-binding))) - -(define (switch-and-run) - "Ask for a command to run, switch to a tag with that name and run -the command." - (let* ((file (open-input-pipe - (string-append "dmenu_pick -p 'Run:' " dmenu-args))) - (prog (read-line file))) - (close-port file) - (if (string? prog) - (begin - (switch-to-tag prog) - (run-command prog))) - (reset-main-binding))) - -(define (kill-tag) - "Kill a selected tag" - (let* ((tags (get-tags)) - (tag (choose-tag "Kill tag" tags))) - (if (string? tag) - (begin - (if (member tag tags) - (run-command (string-append "herbstclient merge_tag " tag))))) - (reset-main-binding))) - -(define (move-to-tag) - "Move selected window to another tag" - (let* ((tags (get-tags)) - (tag (choose-tag "Move to tag" tags))) - (if (string? tag) - (begin - (if (not (member tag tags)) - (system (string-append "herbstclient add " tag))) - (run-command (string-append "herbstclient move " tag)))) - (reset-main-binding))) +;; (define (choose-tag prompt tags) +;; "Ask to choose a tag" +;; (let* ((file (open-input-pipe +;; (string-append "echo '" (string-join tags "\n") +;; "' | " dmenu-cmd " " dmenu-args " -p '" prompt ":'"))) +;; (tag (read-line file))) +;; (close-port file) +;; tag)) + +;; (define (switch-to-tag tag) +;; (let ((tags (get-tags))) +;; (if (string? tag) +;; (begin +;; (if (not (member tag tags)) +;; (system (string-append "herbstclient add " tag))) +;; (set! previous-tag current-tag) +;; (set! current-tag tag) +;; (run-command (string-append "herbstclient use " tag)))))) + +;; (define (switch-tags) +;; "Switch to another tag" +;; (let* ((tags (get-tags)) +;; (tag (choose-tag "Switch to tag" tags))) +;; (switch-to-tag tag) +;; (reset-main-binding))) + +;; (define (switch-and-run) +;; "Ask for a command to run, switch to a tag with that name and run +;; the command." +;; (let* ((file (open-input-pipe +;; (string-append "dmenu_pick -p 'Run:' " dmenu-args))) +;; (prog (read-line file))) +;; (close-port file) +;; (if (string? prog) +;; (begin +;; (switch-to-tag prog) +;; (run-command prog))) +;; (reset-main-binding))) + +;; (define (kill-tag) +;; "Kill a selected tag" +;; (let* ((tags (get-tags)) +;; (tag (choose-tag "Kill tag" tags))) +;; (if (string? tag) +;; (begin +;; (if (member tag tags) +;; (run-command (string-append "herbstclient merge_tag " tag))))) +;; (reset-main-binding))) + +;; (define (move-to-tag) +;; "Move selected window to another tag" +;; (let* ((tags (get-tags)) +;; (tag (choose-tag "Move to tag" tags))) +;; (if (string? tag) +;; (begin +;; (if (not (member tag tags)) +;; (system (string-append "herbstclient add " tag))) +;; (run-command (string-append "herbstclient move " tag)))) +;; (reset-main-binding))) (define (text-width font text) (let* ((pipe (open-input-pipe (string-append "textwidth '" font "' '" text "'"))) @@ -141,81 +154,170 @@ the command." (close-pipe dzen-pipe) (set! dzen-pipe '()))) +(define (notify msg) + (run-command (string-append "notify-send \"" msg "\""))) + ;;;_ Maps -(define (main-binding) +;; (define (prefix-binding) +;; "Binding of a prefix key for all commands" +;; (xbindkey-function prefix main-map)) + +;; (create-map main-map +;; (gui-print "S-w") +;; (xbindkey-function '(control c) (run terminal)) +;; (xbindkey-function '(Return) (lambda () +;; (system "urxvt &") +;; (reset-main-binding))) +;; (xbindkey-function '(e) (cmd editor)) +;; (xbindkey-function '(control e) (cmd editor))) + +;; ;; (xbindkey `(,modkey shift "1") (string-append "dmenu_run -p 'Run:' " dmenu-args)) +;; ;; (xbindkey `(,modkey "0") "herbstclient remove") +;; ;; (xbindkey `(,modkey "2") "herbstclient split vertical 0.5") +;; ;; (xbindkey `(,modkey "3") "herbstclient split horizontal 0.5") +;; ;; (xbindkey-function `(,modkey x) X-function-map) +;; ;; (xbindkey-function `(,modkey w) W-function-map) +;; ;; (xbindkey-function `(,modkey s) S-function-map) +;; ;; (xbindkey `(,modkey Return) terminal) +;; ;; (xbindkey '(control alt l) "i3lock -c 000000") +;; ;; (xbindkey '(XF86HomePage) "conkeror") +;; ;; (xbindkey '(XF86Mail) "mutt") +;; ;; (xbindkey '(XF86AudioPlay) "mpc toggle") +;; ;; (xbindkey '(XF86AudioStop) "mpc stop") +;; ;; (xbindkey '(XF86AudioMute) "amixer sset Master toggle") +;; ;; (xbindkey '(XF86AudioLowerVolume) "mcp volume -5") +;; ;; (xbindkey '(XF86AudioRaiseVolume) "mcp volume +5") +;; ;; (xbindkey '(XF86AudioPrev) "mpc prev") +;; ;; (xbindkey '(XF86AudioNext) "mpc next") +;; ;; (xbindkey '(XF86Tools) "ncmpcpp") +;; ;; (xbindkey `(,modkey b) "herbstclient focus left") +;; ;; (xbindkey `(,modkey n) "herbstclient focus down") +;; ;; (xbindkey `(,modkey p) "herbstclient focus up") +;; ;; (xbindkey `(,modkey f) "herbstclient focus right")) + +;; (create-map X-function-map +;; (gui-print "S-x") +;; (xbindkey-function '(b) switch-tags) +;; (xbindkey-function `(,modkey c) (cmd "herbstclient quit")) +;; (xbindkey-function `(,modkey r) (cmd "herbstclient reload")) +;; (xbindkey-function '(k) kill-tag) +;; (xbindkey-function '("0") (cmd "herbstclient remove")) +;; (xbindkey-function '("3") (cmd "herbstclient split horizontal 0.5")) +;; (xbindkey-function '("2") (cmd "herbstclient split vertical 0.5")) +;; (xbindkey-function '(space) (cmd "herbstclient cycle_layout 1")) +;; (xbindkey-function '(f) (cmd "herbstclient floating toggle")) +;; (xbindkey-function '(shift f) (cmd "herbstclient fullscreen toggle")) +;; (xbindkey-function '(p) (cmd "herbstclient pseudotile toggle")) +;; (xbindkey-function '(r) resize-map) +;; (xbindkey-function '(m) move-to-tag) +;; (xbindkey-function `(,modkey f) switch-and-run)) + +;; (create-map W-function-map +;; (gui-print "S-w") +;; (xbindkey-function '(k) (cmd "herbstclient close")) +;; (xbindkey-function '(w) (cmd "herbstclient cycle")) +;; (xbindkey-function '(o) (cmd "herbstclient cycle_all +1")) +;; (xbindkey-function '(b) (cmd "herbstclient focus left")) +;; (xbindkey-function '(n) (cmd "herbstclient focus down")) +;; (xbindkey-function '(p) (cmd "herbstclient focus up")) +;; (xbindkey-function '(f) (cmd "herbstclient focus right")) +;; (xbindkey-function '(shift b) (cmd "herbstclient shift left")) +;; (xbindkey-function '(shift n) (cmd "herbstclient shift down")) +;; (xbindkey-function '(shift p) (cmd "herbstclient shift up")) +;; (xbindkey-function '(shift f) (cmd "herbstclient shift right"))) + +;; (create-map S-function-map +;; (gui-print "S-s") +;; (xbindkey-function '(o) (cmd "herbstclient cycle_monitor"))) + +;; (create-map resize-map +;; (gui-print "Resizing") +;; (xbindkey `(,modkey b) "herbstclient resize left +0.05") +;; (xbindkey `(,modkey n) "herbstclient resize down +0.05") +;; (xbindkey `(,modkey p) "herbstclient resize up +0.05") +;; (xbindkey `(,modkey f) "herbstclient resize right +0.05") +;; (xbindkey-function '(Return) reset-main-binding)) + +;;;_ Main +;; (prefix-binding) + +;; ;;;_ Local Variables +;; ;; Local Variables: +;; ;; eval: (git-auto-commit-mode 1) +;; ;; End: + +(define (first-binding) "First binding" - (xbindkey `(,modkey shift "1") (string-append "dmenu_run -p 'Run:' " dmenu-args)) - (xbindkey `(,modkey "0") "herbstclient remove") - (xbindkey `(,modkey "2") "herbstclient split vertical 0.5") - (xbindkey `(,modkey "3") "herbstclient split horizontal 0.5") - (xbindkey-function `(,modkey x) X-function-map) - (xbindkey-function `(,modkey w) W-function-map) - (xbindkey-function `(,modkey s) S-function-map) - (xbindkey `(,modkey Return) terminal) - (xbindkey '(control alt l) "i3lock -c 000000") - (xbindkey '(XF86HomePage) "conkeror") - (xbindkey '(XF86Mail) "mutt") - (xbindkey '(XF86AudioPlay) "mpc toggle") - (xbindkey '(XF86AudioStop) "mpc stop") - (xbindkey '(XF86AudioMute) "amixer sset Master toggle") - (xbindkey '(XF86AudioLowerVolume) "mcp volume -5") - (xbindkey '(XF86AudioRaiseVolume) "mcp volume +5") - (xbindkey '(XF86AudioPrev) "mpc prev") - (xbindkey '(XF86AudioNext) "mpc next") - (xbindkey '(XF86Tools) "ncmpcpp") + (xbindkey-function prefix second-binding) + (xbindkey '(control mod1 l) "i3lock -c 000000") + (xbindkey `(,modkey period) "herbstclient cycle_monitor 1") + (xbindkey `(,modkey comma) "herbstclient cycle_monitor -1") + (xbindkey `(,modkey s) "herbstclient split vertical 0.5") + (xbindkey `(,modkey shift s) "herbstclient split horizontal 0.5") + (xbindkey `(,modkey q) "herbstclient remove") + (xbindkey `(,modkey o) "herbstclient cycle_all") + (xbindkey `(,modkey control b) "herbstclient resize left +0.05") + (xbindkey `(,modkey control n) "herbstclient resize down +0.05") + (xbindkey `(,modkey control p) "herbstclient resize up +0.05") + (xbindkey `(,modkey control f) "herbstclient resize right +0.05") (xbindkey `(,modkey b) "herbstclient focus left") (xbindkey `(,modkey n) "herbstclient focus down") (xbindkey `(,modkey p) "herbstclient focus up") (xbindkey `(,modkey f) "herbstclient focus right") - (xbindkey-function `(,modkey g) reset-main-binding)) - -(create-map X-function-map - (gui-print "S-x") - (xbindkey-function '(b) switch-tags) - (xbindkey-function `(,modkey c) (cmd "herbstclient quit")) - (xbindkey-function `(,modkey r) (cmd "herbstclient reload")) - (xbindkey-function '(k) kill-tag) - (xbindkey-function '("0") (cmd "herbstclient remove")) - (xbindkey-function '("3") (cmd "herbstclient split horizontal 0.5")) - (xbindkey-function '("2") (cmd "herbstclient split vertical 0.5")) - (xbindkey-function '(space) (cmd "herbstclient cycle_layout 1")) - (xbindkey-function '(f) (cmd "herbstclient floating toggle")) - (xbindkey-function '(shift f) (cmd "herbstclient fullscreen toggle")) - (xbindkey-function '(p) (cmd "herbstclient pseudotile toggle")) - (xbindkey-function '(r) resize-map) - (xbindkey-function '(m) move-to-tag) - (xbindkey-function `(,modkey f) switch-and-run)) - -(create-map W-function-map - (gui-print "S-w") - (xbindkey-function '(k) (cmd "herbstclient close")) - (xbindkey-function '(w) (cmd "herbstclient cycle")) - (xbindkey-function '(o) (cmd "herbstclient cycle_all +1")) - (xbindkey-function '(b) (cmd "herbstclient focus left")) - (xbindkey-function '(n) (cmd "herbstclient focus down")) - (xbindkey-function '(p) (cmd "herbstclient focus up")) - (xbindkey-function '(f) (cmd "herbstclient focus right")) - (xbindkey-function '(shift b) (cmd "herbstclient shift left")) - (xbindkey-function '(shift n) (cmd "herbstclient shift down")) - (xbindkey-function '(shift p) (cmd "herbstclient shift up")) - (xbindkey-function '(shift f) (cmd "herbstclient shift right"))) - -(create-map S-function-map - (gui-print "S-s") - (xbindkey-function '(o) (cmd "herbstclient cycle_monitor"))) - -(create-map resize-map - (gui-print "Resizing") - (xbindkey `(,modkey b) "herbstclient resize left +0.05") - (xbindkey `(,modkey n) "herbstclient resize down +0.05") - (xbindkey `(,modkey p) "herbstclient resize up +0.05") - (xbindkey `(,modkey f) "herbstclient resize right +0.05") - (xbindkey-function '(Return) reset-main-binding)) + (xbindkey `(,modkey shift b) "herbstclient shift left") + (xbindkey `(,modkey shift n) "herbstclient shift down") + (xbindkey `(,modkey shift p) "herbstclient shift up") + (xbindkey `(,modkey shift f) "herbstclient shift right") + (xbindkey `(,modkey space) "herbstclient cycle_layout 1")) -;;;_ Main -(main-binding) +(define (reset-first-binding) + "reset first binding" + (ungrab-all-keys) + (remove-all-keys) + (first-binding) + (grab-all-keys)) + +(define (run-terminal) + "Run the specified terminal program." + (run-command terminal) + (reset-first-binding)) + +(define (run-browser) + "Run the specified browser." + (run-command browser) + (reset-first-binding)) + +(define (run-editor) + "Run the specified terminal editor." + (run-command editor) + (reset-first-binding)) + +(define (banish) + "Banish the mouse cursor to the bottom-right corner of the screen." + (run-command "xte 'mousemove 4000 1100'") + (reset-first-binding)) + +(define (showtime) + "Show the time." + (notify (date->string (current-date) date-format)) + (reset-first-binding)) + +(define (exec) + "Run a program." + (run-command (string-append "dmenu_run -p 'Run:' " dmenu-args)) + (reset-first-binding)) + +(define (second-binding) + "Second binding" + (ungrab-all-keys) + (remove-all-keys) + (xbindkey-function 'c run-terminal) + (xbindkey-function 'e run-editor) + (xbindkey-function 'w run-browser) + (xbindkey-function 'z banish) + (xbindkey-function 'a showtime) + (xbindkey-function '(shift "1") exec) + (xbindkey-function '(control g) reset-first-binding) + (grab-all-keys)) -;;;_ Local Variables -;; Local Variables: -;; eval: (git-auto-commit-mode 1) -;; End: +(first-binding) -- cgit v1.2.3-54-g00ecf