128 lines
4.3 KiB
Scheme
128 lines
4.3 KiB
Scheme
;; -*- eval: (git-auto-commit-mode 1) -*-
|
|
(use-modules (ice-9 popen)
|
|
(ice-9 rdelim))
|
|
|
|
;;; 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))
|
|
|
|
(define (get-tags)
|
|
(let* ((file (open-input-pipe
|
|
"TAGS=( $(herbstclient tag_status 0 | tr \":\\!.+#\" \" \") ); echo ${TAGS[@]}"))
|
|
(tags (string-split (read-line file) #\ )))
|
|
(close-port file)
|
|
tags))
|
|
|
|
(define (get-tag tags pipe)
|
|
(read-line pipe))
|
|
|
|
(define (choose-tag tags)
|
|
(let* ((file (open-input-pipe (string-append "echo '" (string-join tags "\n") "' | dmenu")))
|
|
(tag (read-line file)))
|
|
(close-port file)
|
|
tag))
|
|
|
|
(define (switch-tags)
|
|
"Switch to another tag"
|
|
(let ((tag (choose-tag (get-tags))))
|
|
(run-command (string-append "herbtsclient use " tag))
|
|
(reset-main-binding)))
|
|
|
|
;;; 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 '(b) 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 '(m) (cmd "~/bin/move_to_tag"))
|
|
(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)
|