aboutsummaryrefslogtreecommitdiffstats
path: root/oni/home
diff options
context:
space:
mode:
authorGravatar Tom Willemse2022-04-20 01:23:26 -0700
committerGravatar Tom Willemse2022-04-20 01:23:26 -0700
commit2489c0fc26728f505cc95f9518b5f1ff17bae6e7 (patch)
tree189834d82e0ad3d5b311cc9c88d3ca7098eb801b /oni/home
parentedba4af64db8808fae99e8327251af1283a35a91 (diff)
downloadnew-dotfiles-2489c0fc26728f505cc95f9518b5f1ff17bae6e7.tar.gz
new-dotfiles-2489c0fc26728f505cc95f9518b5f1ff17bae6e7.zip
Add keybindings of xbindkeys
Diffstat (limited to 'oni/home')
-rw-r--r--oni/home/data/config.scm52
-rw-r--r--oni/home/services/xbindkeys.scm64
2 files changed, 112 insertions, 4 deletions
diff --git a/oni/home/data/config.scm b/oni/home/data/config.scm
index 90c0ada..1e50776 100644
--- a/oni/home/data/config.scm
+++ b/oni/home/data/config.scm
@@ -244,7 +244,57 @@
"class_g = 'trayer'"
"bounding_shaped"))))))
- (service home-xbindkeys-service-type)
+ (service home-xbindkeys-service-type
+ (home-xbindkeys-configuration
+ (keybindings
+ '(((mod4 shift q) . "herbstclient quit")
+ ((mod4 shift e) . "herbstclient reload")
+ ((mod4 k) . "hersbtclient close")
+ ((mod4 mod1 k) . "herbstclient remove")
+ ((mod4 Return) . "herbstclient spawn kitty")
+ ((mod4 t) . "herbstclient spawn hlwm-run-or-raise \"\\(URxct\\|Hyper\\|kitty\\)\" kitty")
+ ((mod4 b) . "herbstclient spawn hlwm-run-or-raise \"\\(Conkeror\\|[Ff]irefox\\|Chromium\\|Next\\|qutebrowser\\)\" firefox")
+ ((mod4 e) . "herbstclient spawn hlwm-run-or-raise Emacs emacsclient --create-frame")
+ ((control mod1 l) . "herbstclient spawn i3lock")
+ ((mod4 x) . "herbstclient spawn hlwm-switch-tags")
+ ((mod4 shift b) . "herbstclient shift left")
+ ((mod4 shift n) . "herbstclient shift down")
+ ((mod4 shift p) . "herbstclient shift up")
+ ((mod4 shift f) . "herbstclient shift right")
+ ((mod4 control b) . "herbstclient resize left +0.05")
+ ((mod4 control n) . "herbstclient resize down +0.05")
+ ((mod4 control p) . "herbstclient resize up +0.05")
+ ((mod4 control f) . "herbstclient resize right +0.05")
+ ((mod4 shift underscore) . "herbstclient split bottom 0.5")
+ ((mod4 shift bar) . "herbstclient split right 0.5")
+ ((mod4 period) . "herbstclient use_index +1 --skip-visible")
+ ((mod4 comma) . "herbstclient use_index -1 --skip-visible")
+ ((mod4 shift control f) . "herbstclient floating toggle")
+ ((mod4 f) . "herbstclient cycle_layout 1 vertical max")
+ ((mod4 m) . "herbstclient fullscreen toggle")
+ ((mod4 p) . "herbstclient pseudotile toggle")
+ ((mod4 space) . "herbstclient or , and . compare tags.focus.curframe_wcount = 2 . cycle_layout +1 vertical horizontal max vertical grid , cycle_layout +1")
+ ((mod4 BackSpace) . "herbstclient cycle_monitor")
+ ((mod4 u) . "herbstclient jumpto urgent")
+ ((XF86AudioPlay) . "herbstclient spawn mpc toggle")
+ ((XF86AudioNext) . "herbstclient spawn mpc next")
+ ((XF86AudioPrev) . "herbstclient spawn mpc prev")
+ ((mod4 r) . "herbstclient spawn rofi -show run")
+ ((mod4 w) . "herbstclient spawn rofi -show window -window-command \"/home/chelys/usr/bin/hlwm-switch-to-window {window}\"")
+ ((mod4 c)
+ ("1" . "herbstclient move_index 0")
+ ("2" . "herbstclient move_index 1")
+ ("3" . "herbstclient move_index 2")
+ ("4" . "herbstclient move_index 3")
+ ("5" . "herbstclient move_index 4")
+ ("6" . "herbstclient move_index 5")
+ ("7" . "herbstclient move_index 6")
+ ("8" . "herbstclient move_index 7")
+ ("9" . "herbstclient move_index 8")
+ ("0" . "herbstclient move_index 9"))
+ ((mod4 s)
+ ("f" . "flameshot full ~/pictures/screenshots/")
+ ("c" . "flameshot gui"))))))
(service home-herbstluftwm-service-type
(home-herbstluftwm-configuration
diff --git a/oni/home/services/xbindkeys.scm b/oni/home/services/xbindkeys.scm
index b8e7cc9..984a163 100644
--- a/oni/home/services/xbindkeys.scm
+++ b/oni/home/services/xbindkeys.scm
@@ -10,10 +10,67 @@
#:export (home-xbindkeys-service-type
home-xbindkeys-configuration))
-(define-configuration/no-serialization home-xbindkeys-configuration
+(define-configuration home-xbindkeys-configuration
(package
(package xbindkeys)
- "Package to use for setting xbindkeys"))
+ "Package to use for setting xbindkeys")
+ (keybindings
+ (alist '())
+ "Keybindings")
+ (no-serialization))
+
+(define (serialize-keymap parent keymap)
+ (string-join
+ (let* ((prefixes (filter (lambda (pair) (list? (cdr pair))) keymap))
+ (others (filter (lambda (pair) (not (list? (cdr pair)))) keymap))
+ (names (map (lambda (_) (gensym)) prefixes)))
+ (append
+ (map (lambda (key-pair sym)
+ (format #f " (define (~s)\n (ungrab-all-keys)\n (remove-all-keys)\n ~a\n (xbindkey-function '(control g) (reset-higher-level-binding ~a))\n (xbindkey-function '(Return) (reset-higher-level-binding ~a))\n (xbindkey-function '(Escape) (reset-higher-level-binding ~a))\n (grab-all-keys))\n"
+ sym
+ (serialize-keymap sym (cdr key-pair))
+ parent
+ parent
+ parent))
+ prefixes names)
+ (map (lambda (key-pair)
+ (let ((key (car key-pair)))
+ (format #f " (xbindkey ~s ~s)\n (xbindkey-function '(release ~s) (reset-higher-level-binding ~a))\n"
+ (if (string? key) key `(quote ,key))
+ (cdr key-pair)
+ (car key-pair)
+ parent)))
+ others)))
+ "\n"))
+
+(define (home-xbindkeys-configuration-file config)
+ (apply mixed-text-file
+ "xbindkeysrc.scm"
+ "(define (reset-higher-level-binding level) (lambda () (ungrab-all-keys) (remove-all-keys) (level) (grab-all-keys)))\n"
+ (let* ((prefixes (filter (lambda (pair) (list? (cdr pair)))
+ (home-xbindkeys-configuration-keybindings config)))
+ (others (filter (lambda (pair) (not (list? (cdr pair))))
+ (home-xbindkeys-configuration-keybindings config)))
+ (names (map (lambda (_) (gensym)) prefixes)))
+ (append
+ (map (lambda (key-pair sym)
+ (format #f " (define (~s)\n (ungrab-all-keys)\n (remove-all-keys)\n ~a\n (xbindkey-function '(control g) (reset-higher-level-binding ~a))\n (xbindkey-function '(Return) (reset-higher-level-binding ~a))\n (xbindkey-function '(Escape) (reset-higher-level-binding ~a))\n (grab-all-keys))\n"
+ sym
+ (serialize-keymap "first-binding" (cdr key-pair))
+ 'first-binding
+ 'first-binding
+ 'first-binding))
+ prefixes names)
+ (list "(define (first-binding)\n"
+ " \"Top-level bindings\"\n")
+ (map (lambda (key-pair sym)
+ (let ((key (car key-pair)))
+ (format #f "(xbindkey-function ~s ~s)\n" (if (string? key) key `(quote ,key)) sym)))
+ prefixes names)
+ (map (lambda (key-pair)
+ (format #f " (xbindkey (quote ~s) ~s) \n" (car key-pair) (cdr key-pair)))
+ others)
+ (list " )\n")))))
(define (add-xbindkeys-packages config)
(list (home-xbindkeys-configuration-package config)))
@@ -27,7 +84,8 @@
(start
#~(make-forkexec-constructor
(list #$(file-append (home-xbindkeys-configuration-package config) "/bin/xbindkeys")
- "--nodaemon")
+ "--nodaemon"
+ "--file-guile" #$(home-xbindkeys-configuration-file config))
#:log-file (format #f "~a/.local/var/log/xbindkeys.log" (getenv "HOME"))))
(stop #~(make-kill-destructor)))))