From 01a0c630672d869a7df0f4aae835433c7e68e939 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Tue, 7 Feb 2012 22:10:35 +0100 Subject: XBINDKEYS: Macro-ify --- .xbindkeysrc.scm | 120 ++++++++++++++++++++++++------------------------------- 1 file changed, 53 insertions(+), 67 deletions(-) diff --git a/.xbindkeysrc.scm b/.xbindkeysrc.scm index 38d33a1..9d87a2e 100644 --- a/.xbindkeysrc.scm +++ b/.xbindkeysrc.scm @@ -18,6 +18,14 @@ (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" @@ -85,6 +93,7 @@ -1))) (define (gui-print text) + (close-gui-window) (let ((width (+ (text-width font text) 10))) (set! dzen-pipe (open-output-pipe (string-append dzen-cmd " -w " (number->string width) @@ -102,9 +111,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") @@ -119,70 +128,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) -- cgit v1.2.3-54-g00ecf