Move a couple of keybindings to herbstluftwm
This commit is contained in:
parent
7957b236de
commit
e8cdf76fbf
5 changed files with 84 additions and 9 deletions
|
@ -143,6 +143,9 @@ nyxt: nyxt/.config/nyxt/init.lisp
|
||||||
%.zwc: %
|
%.zwc: %
|
||||||
zsh -c "zcompile $@ $^"
|
zsh -c "zcompile $@ $^"
|
||||||
|
|
||||||
|
check:
|
||||||
|
$(SCHEME_IMPLEMENTATION) --no-auto-compile test.scm
|
||||||
|
|
||||||
# Local Variables:
|
# Local Variables:
|
||||||
# outline-regexp: "##+"
|
# outline-regexp: "##+"
|
||||||
# End:
|
# End:
|
||||||
|
|
|
@ -255,9 +255,7 @@
|
||||||
(service home-xbindkeys-service-type
|
(service home-xbindkeys-service-type
|
||||||
(home-xbindkeys-configuration
|
(home-xbindkeys-configuration
|
||||||
(keybindings
|
(keybindings
|
||||||
'(((mod4 shift q) . "herbstclient quit")
|
'(((mod4 k) . "hersbtclient close")
|
||||||
((mod4 shift e) . "herbstclient reload")
|
|
||||||
((mod4 k) . "hersbtclient close")
|
|
||||||
((mod4 mod1 k) . "herbstclient remove")
|
((mod4 mod1 k) . "herbstclient remove")
|
||||||
((mod4 Return) . "herbstclient spawn kitty")
|
((mod4 Return) . "herbstclient spawn kitty")
|
||||||
((mod4 t) . "herbstclient spawn hlwm-run-or-raise \"\\(URxct\\|Hyper\\|kitty\\)\" kitty")
|
((mod4 t) . "herbstclient spawn hlwm-run-or-raise \"\\(URxct\\|Hyper\\|kitty\\)\" kitty")
|
||||||
|
@ -305,10 +303,13 @@
|
||||||
(service home-herbstluftwm-service-type
|
(service home-herbstluftwm-service-type
|
||||||
(home-herbstluftwm-configuration
|
(home-herbstluftwm-configuration
|
||||||
(tags '(dev web game))
|
(tags '(dev web game))
|
||||||
|
(key-bindings
|
||||||
|
'(("s-S-q" . "quit")
|
||||||
|
("s-S-e" . "reload")))
|
||||||
(mouse-bindings
|
(mouse-bindings
|
||||||
'(("Mod4-Button1" . "move")
|
'(("s-Button1" . "move")
|
||||||
("Mod4-Button2" . "zoom")
|
("s-Button2" . "zoom")
|
||||||
("Mod4-Button3" . "resize")))
|
("s-Button3" . "resize")))
|
||||||
(settings
|
(settings
|
||||||
'((default_frame_layout . 2)
|
'((default_frame_layout . 2)
|
||||||
(frame_border_active_color . "#3d3d3d")
|
(frame_border_active_color . "#3d3d3d")
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
#:use-module (oni home services xinit)
|
#:use-module (oni home services xinit)
|
||||||
#:use-module (oni gexp)
|
#:use-module (oni gexp)
|
||||||
|
#:use-module (oni kbd)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
|
|
||||||
#:export (home-herbstluftwm-service-type
|
#:export (home-herbstluftwm-service-type
|
||||||
|
@ -17,6 +18,9 @@
|
||||||
(package
|
(package
|
||||||
(package herbstluftwm)
|
(package herbstluftwm)
|
||||||
"Package use for setting herbstluftwm")
|
"Package use for setting herbstluftwm")
|
||||||
|
(key-bindings
|
||||||
|
(alist '())
|
||||||
|
"Key bindings")
|
||||||
(mouse-bindings
|
(mouse-bindings
|
||||||
(alist '())
|
(alist '())
|
||||||
"Mouse bindings")
|
"Mouse bindings")
|
||||||
|
@ -48,17 +52,27 @@
|
||||||
(define (add-herbstluftwm-packages config)
|
(define (add-herbstluftwm-packages config)
|
||||||
(list (home-herbstluftwm-configuration-package config) zsh))
|
(list (home-herbstluftwm-configuration-package config) zsh))
|
||||||
|
|
||||||
|
(define (build-keybindings bindings)
|
||||||
|
(append
|
||||||
|
(list "herbstclient keyunbind --all\n")
|
||||||
|
(map (lambda (binding)
|
||||||
|
(format #f "herbstclient keybind ~a ~a\n"
|
||||||
|
(kbd (car binding)) (cdr binding)))
|
||||||
|
bindings)))
|
||||||
|
|
||||||
(define (home-herbstluftwm-autostart-file config)
|
(define (home-herbstluftwm-autostart-file config)
|
||||||
(apply mixed-executable-file
|
(apply mixed-executable-file
|
||||||
"autostart"
|
"autostart"
|
||||||
"#!" zsh "/bin/zsh\n"
|
"#!" zsh "/bin/zsh\n"
|
||||||
"herbstclient emit_hook reload\n"
|
"herbstclient emit_hook reload\n"
|
||||||
"herbstclient keyunbind --all\n"
|
|
||||||
(let ((tags (home-herbstluftwm-configuration-tags config)))
|
(let ((tags (home-herbstluftwm-configuration-tags config)))
|
||||||
(append (list "herbstclient mouseunbind --all\n")
|
(append (build-keybindings
|
||||||
|
(home-herbstluftwm-configuration-key-bindings config))
|
||||||
|
|
||||||
|
(list "herbstclient mouseunbind --all\n")
|
||||||
(map (lambda (binding)
|
(map (lambda (binding)
|
||||||
(format #f "herbstclient mousebind ~a ~a\n"
|
(format #f "herbstclient mousebind ~a ~a\n"
|
||||||
(car binding) (cdr binding)))
|
(kbd (car binding)) (cdr binding)))
|
||||||
(home-herbstluftwm-configuration-mouse-bindings config))
|
(home-herbstluftwm-configuration-mouse-bindings config))
|
||||||
(map (lambda (setting)
|
(map (lambda (setting)
|
||||||
(format #f "herbstclient set ~s ~s\n"
|
(format #f "herbstclient set ~s ~s\n"
|
||||||
|
|
29
oni/kbd.scm
Normal file
29
oni/kbd.scm
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
(define-module (oni kbd)
|
||||||
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
|
|
||||||
|
#:export (kbd))
|
||||||
|
|
||||||
|
(define (convert-modifier mod)
|
||||||
|
(match mod
|
||||||
|
("C" "Ctrl")
|
||||||
|
("M" "Mod1")
|
||||||
|
("S" "Shift")
|
||||||
|
("s" "Mod4")))
|
||||||
|
|
||||||
|
(define (convert-key key)
|
||||||
|
(match key
|
||||||
|
("RET" "Return")
|
||||||
|
("SPC" "space")
|
||||||
|
("<backspace>" "BackSpace")
|
||||||
|
(_ key)))
|
||||||
|
|
||||||
|
(define (kbd str)
|
||||||
|
(let ((parts (string-split str #\-)))
|
||||||
|
(string-join
|
||||||
|
(fold-right (lambda (key previous)
|
||||||
|
(if (null? previous)
|
||||||
|
(list (convert-key key))
|
||||||
|
(cons (convert-modifier key) previous)))
|
||||||
|
'() parts)
|
||||||
|
"-")))
|
28
test/kbd.scm
Normal file
28
test/kbd.scm
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
(define-module (test kbd)
|
||||||
|
#:use-module (srfi srfi-64)
|
||||||
|
#:use-module (oni kbd))
|
||||||
|
|
||||||
|
(test-begin "kbd-test")
|
||||||
|
|
||||||
|
(test-equal "Any letter alone is untouched"
|
||||||
|
"s" (kbd "s"))
|
||||||
|
(test-equal "The `s' modifier is converted to `Mod4'"
|
||||||
|
"Mod4-s" (kbd "s-s"))
|
||||||
|
(test-equal "The `S' modifier is converted to `Shift'"
|
||||||
|
"Shift-s" (kbd "S-s"))
|
||||||
|
(test-equal "The `M' modifier is converted to `Mod1'"
|
||||||
|
"Mod1-x" (kbd "M-x"))
|
||||||
|
(test-equal "The `C' modifier is converted to `Ctrl'"
|
||||||
|
"Ctrl-f" (kbd "C-f"))
|
||||||
|
(test-equal "Two modifiers can be combined"
|
||||||
|
"Mod4-Shift-q" (kbd "s-S-q"))
|
||||||
|
(test-equal "Three modifiers can be combined"
|
||||||
|
"Mod4-Shift-Ctrl-f" (kbd "s-S-C-f"))
|
||||||
|
(test-equal "The `RET' key is converted to `Return'"
|
||||||
|
"Mod4-Return" (kbd "s-RET"))
|
||||||
|
(test-equal "The `SPC' key is converted to `space'"
|
||||||
|
"Ctrl-space" (kbd "C-SPC"))
|
||||||
|
(test-equal "The `<backspace>' key is converted to `BackSpace'"
|
||||||
|
"Mod1-BackSpace" (kbd "M-<backspace>"))
|
||||||
|
|
||||||
|
(test-end "kbd-test")
|
Loading…
Reference in a new issue