diff options
Diffstat (limited to '.xbindkeysrc.scm')
-rw-r--r-- | .xbindkeysrc.scm | 151 |
1 files changed, 78 insertions, 73 deletions
diff --git a/.xbindkeysrc.scm b/.xbindkeysrc.scm index 3bea5fe..9e17422 100644 --- a/.xbindkeysrc.scm +++ b/.xbindkeysrc.scm @@ -4,18 +4,38 @@ ;;; Variables (define modkey 'mod4) -(define font "-misc-tamsyn-medium-r-normal-*-17-*-*-*-*-*-iso8859-*") +(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 '" font "'")) + (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") + ;;; 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))) + ;;; Functions (define (reset-main-binding) "reset first binding" @@ -26,11 +46,16 @@ (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) - tags)) + (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" @@ -49,6 +74,8 @@ (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)))) (reset-main-binding))) @@ -82,10 +109,11 @@ -1))) (define (gui-print text) - (let ((width (+ (text-width font text) 10))) + (close-gui-window) + (let ((width (+ (text-width dzen-font text) 10))) (set! dzen-pipe (open-output-pipe - (string-append "dzen2 -w " (number->string width) - " -fn '" font "' -x 5 -y 5 -bg '#000000' -fg '#15abc3'")))) + (string-append dzen-cmd " -w " (number->string width) + " " dzen-args)))) (display text dzen-pipe) (newline dzen-pipe)) @@ -99,9 +127,9 @@ (define (main-binding) "First binding" (xbindkey `(,modkey shift "1") (string-append "dmenu_run -p 'Run:' " dmenu-args)) - (xbindkey-function `(,modkey x) X-functions) - (xbindkey-function `(,modkey w) W-functions) - (xbindkey-function `(,modkey s) S-functions) + (xbindkey-function `(,modkey x) X-function-map) + (xbindkey-function `(,modkey w) W-function-map) + (xbindkey-function `(,modkey s) S-function-map) (xbindkey `(,modkey Return) "urxvt") (xbindkey '(control alt l) "i3lock -c 000000") (xbindkey '(XF86HomePage) "conkeror") @@ -116,70 +144,47 @@ (xbindkey '(XF86Tools) "ncmpcpp") (xbindkey-function `(,modkey g) reset-main-binding)) -(define (X-functions) - "Second binding" - (gui-print "S-x") - (ungrab-all-keys) - (remove-all-keys) - (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 g) reset-main-binding) - (grab-all-keys)) - -(define (W-functions) - (gui-print "S-w") - (ungrab-all-keys) - (remove-all-keys) - (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")) - (xbindkey-function `(,modkey g) reset-main-binding) - (grab-all-keys)) - -(define (S-functions) - (gui-print "S-s") - (ungrab-all-keys) - (remove-all-keys) - (xbindkey-function '(o) (cmd "herbstclient cycle_monitor")) - (xbindkey-function `(,modkey g) reset-main-binding) - (grab-all-keys)) - -(define (P-functions) - (ungrab-all-keys) - (remove-all-keys) - - (grab-all-keys)) - -(define (resize-map) - (gui-print "Resizing") - (ungrab-all-keys) - (remove-all-keys) - (xbindkey `(,modkey b) "herbstclient resize left +0.05") - (xbindkey `(,modkey n) "herbstclient rezise 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-function `(,modkey g) reset-main-binding) - (grab-all-keys)) +(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)) + +(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 (main-binding) |