diff --git a/.xbindkeysrc.scm b/.xbindkeysrc.scm new file mode 100644 index 0000000..0f1546c --- /dev/null +++ b/.xbindkeysrc.scm @@ -0,0 +1,100 @@ +;;; Modkey +(define modkey 'mod4) + +;;; Macros +(define-macro (cmd command) + `(lambda () + (run-command ,command) + (reset-main-binding))) + +;;; Functions +(define (reset-main-binding) + "reset first binding" + (ungrab-all-keys) + (remove-all-keys) + (main-binding) + (grab-all-keys)) + +;;; Maps +(define (main-binding) + "First binding" + (xbindkey `(,modkey shift "1") "dmenu_run") + (xbindkey-function `(,modkey x) X-functions) + (xbindkey-function `(,modkey w) W-functions) + (xbindkey-function `(,modkey s) S-functions) + (xbindkey `(,modkey Return) "urxvt") + (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 `(,modkey g) reset-main-binding)) + +(define (X-functions) + "Second binding" + (ungrab-all-keys) + (remove-all-keys) + (xbindkey-function '(b) (cmd "~/bin/switch_tags")) + (xbindkey-function `(,modkey c) (cmd "herbstclient quit")) + (xbindkey-function `(,modkey r) (cmd "herbstclient reload")) + (xbindkey-function '(k) (cmd "~/bin/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 `(,modkey g) reset-main-binding) + (grab-all-keys)) + +(define (W-functions) + (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) + (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) + (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)) + +;;; Main +(main-binding)