From 34288685116e90826aaa5639bafc4b5ef58b2575 Mon Sep 17 00:00:00 2001 From: jao Date: Tue, 26 Oct 2021 07:11:58 +0100 Subject: dehydration: transient is all we need --- exwm.org | 190 ++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 103 insertions(+), 87 deletions(-) (limited to 'exwm.org') diff --git a/exwm.org b/exwm.org index 1a7a38d..352c8b0 100644 --- a/exwm.org +++ b/exwm.org @@ -326,6 +326,7 @@ (jao-exwm--send-str (format "%sg" page-no))) (defun jao-zathura-open-doc (&optional file-name page-no height) + (interactive) (let* ((file-name (expand-file-name (or file-name (buffer-file-name)))) (buffer (seq-find `(lambda (b) (string= ,file-name @@ -420,6 +421,13 @@ (jao-afio--goto-docs) (pop-to-buffer b))) + + (let ((viewers ["External viewers" + ("z" "open with zathura" jao-zathura-open-doc) + ("m" "open with mupdf" jao-exwm-open-with-mupdf)])) + (jao-transient-major-mode+ pdf-view viewers) + (jao-transient-major-mode+ doc-view viewers)) + #+end_src * Firefox helpers #+begin_src emacs-lisp @@ -431,92 +439,100 @@ (jao-exwm--send-str "yy") (switch-to-buffer cb)))) #+end_src -* Hydras +* Transients #+begin_src emacs-lisp - (major-mode-hydra-define+ (doc-view-mode pdf-view-mode) nil - ("External" - (("z" (jao-zathura-open-doc) "open with zathura") - ("m" jao-exwm-open-with-mupdf "open with mupdf")))) - - (defhydra jao-hydra-float (:color blue) - "Float" - ("f" exwm-floating-toggle-floating "float") - ("F" exwm-layout-toggle-fullscreen "full") - ("tl" (jao-exwm--float-to 20 20)) - ("tr" (jao-exwm--float-to -20 20)) - ("bl" (jao-exwm--float-to 20 -20)) - ("br" (jao-exwm--float-to -20 -20)) - ("c" jao-exwm--center-float) - ("k" (exwm-floating-move 0 -5) :color red) - ("j" (exwm-floating-move 0 5) :color red) - ("h" (exwm-floating-move -5 0) :color red) - ("l" (exwm-floating-move 5 0) :color red) - ("K" (exwm-layout-enlarge-window 5) :color red) - ("J" (exwm-layout-enlarge-window -5) :color red) - ("H" (exwm-layout-enlarge-window 5 t) :color red) - ("L" (exwm-layout-enlarge-window -5 t) :color red) - ("q" nil "")) - - (pretty-hydra-define jao-hydra-exwm-misc (:color blue :quit-key "q") - ("Jump around" - (("s" jao-slack-download "slack downloads") - ("h" (jao-buffer-same-mode 'helpful) "helpful buffer") - ("g" exwm-workspace-switch nil)) - "X-Windows" - (("f" exwm-floating-toggle-floating "toggle floating window") - ("F" exwm-layout-toggle-fullscreen "toggle fullscreen mode") - ("m" exwm-workspace-move-window nil)) - "Zathura" - (("o" jao-exwm-zathura-goto-org "Go to org notes") - ("O" (jao-exwm-zathura-goto-org t) "Go to org notes, linking")) - "Exwm utilities" - (("k" exwm-input-release-keyboard "release keyboard") - ("x" exwm-reset "reset exwm")))) - - (pretty-hydra-define jao-hydra-exwm - (global-map "s-w" :color blue :quit-key "q") - ("Notes" - (("n" jao-org-notes-open-or-create "capture note") - ("/" jao-org-notes-open "search notes") - ("d" jao-exwm-select-pdf "go to doc") - ("D" jao-open-doc "open to doc")) - "Packages" - (("a" jao-term-aptitude "aptitude") - ("l" jao-exwm-packages "packages") - ("s-w" jao-hydra-exwm/body nil)) - "Monitors" - (("p" jao-term-htop "htop") - ("x" jao-exwm-xmobar "restart xmobar") - ("X" jao-exwm-kill-xmobar "kill xmobar")) - "Network" - (("S" jao-ssh "ssh") - ("b" jao-exwm-bluetooth "bluetooth") - ("c" (jao-chats t) "connect chats") - ("v" jao-mullvad-status "vpn status")) - "Chats" - (("t" (jao-buffer-same-mode '(telega-root-mode telega-chat-mode)) "telegram") - ("T" telega "telegram rooster") - ("s" (jao-buffer-same-mode 'slack-message-buffer-mode) "slack") - ("i" (jao-buffer-same-mode '(circe-channel-mode circe-query-mode erc-mode)) - "irc")) - "Winner" - (("f" winner-undo "Previous window layout" :color red) - ("F" winner-redo "Undo window layout restore" :color red)) - "Helpers" - (("r" org-reveal "org reveal") - ("w" jao-set-wallpaper "set wallpaper") - ("W" jao-set-random-wallpaper "set radom wallpaper") - ("k" jao-kb-toggle "toggle keyboard" :toggle (jao-kb-toggled-p)) - ("M" jao-minibuffer-toggle "toggle minibuffer" - :toggle jao-minibuffer-enabled-p)))) - #+end_src + (defmacro jao-exwm--mover (x y dx dy) + `(progn + (defun ,(intern (format "jao-exwm-move-%d-%d" dx dy)) () + ,(format "Nudge window by %d, %s" dx dy) + (interactive) + (exwm-floating-move ,dx ,dy)) + (defun ,(intern (format "jao-exwm-float-to-%d-%d" x y)) () + ,(format "Move window to %d, %s" x y) + (interactive) + (jao-exwm--float-to ,x ,y)) + (defun ,(intern (format "jao-exwm-enlarge-%d-%d" dx dy)) () + ,(format "Enlarge window by %d, %s" dx dy) + (interactive) + (exwm-layout-enlarge-window ,(if (zerop dx) dy dx) ,(zerop dx))))) + + (jao-exwm--mover 20 -20 0 -5) + (jao-exwm--mover 20 20 0 5) + (jao-exwm--mover -20 20 5 0) + (jao-exwm--mover -20 -20 -5 0) + (defun jao-exwm--floating-p () exwm--floating-frame) + + (transient-define-prefix jao-transient-float () + "Operations on EXWM floating windows." + :transient-non-suffix 'transient--do-quit-one + [["Float" + ("f" "float" exwm-floating-toggle-floating) + ("F" "full" exwm-layout-toggle-fullscreen) + ("c" "center" jao-exwm--center-float :if jao-exwm--floating-p)] + ["Slide" + :if jao-exwm--floating-p + ("k" "up" jao-exwm-move-0--5 :transient t) + ("j" "down" jao-exwm-move-0-5 :transient t) + ("h" "left" jao-exwm-move--5-0 :transient t) + ("l" "right" jao-exwm-move-5-0 :transient t)] + ["Resize" + :if jao-exwm--floating-p + ("K" "up" jao-exwm-enlarge-5-0 :transient t) + ("J" "down" jao-exwm-enlarge--5-0 :transient t) + ("H" "left" jao-exwm-enlarge-0-5 :transient t) + ("L" "right" jao-exwm-enlarge-0--5 :transient t)] + ["Nudge" + :if jao-exwm--floating-p + ("tl" "top-left" jao-exwm-float-to-20-20) + ("tr" "top-right" jao-exwm-float-to--20-20) + ("bl" "bottom-left" jao-exwm-float-to-20--20) + ("br" "bottom-right " jao-exwm-float-to--20--20)]]) + + (transient-define-prefix jao-transient-exwm () + "Global operations in EXWM." + [["Notes" + ("n" "capture note" jao-org-notes-open-or-create) + ("/" "search notes" jao-org-notes-open) + ("d" "go to doc" jao-exwm-select-pdf) + ("D" "open to doc" jao-open-doc)] + ["Packages" + ("a" "aptitude" jao-term-aptitude) + ("l" "packages" jao-exwm-packages)] + ["Monitors" + ("p" "htop" jao-term-htop) + ("x" "restart xmobar" jao-exwm-xmobar) + ("X" "kill xmobar" jao-exwm-kill-xmobar)] + ["Network" + ("S" "ssh" jao-ssh) + ("b" "bluetooth" jao-exwm-bluetooth) + ("c" "connect chats" jao-all-chats) + ("v" "vpn status" jao-mullvad-status)] + ["Chats" + ("t" "telegram" jao-chats-telega) + ("T" "telegram rooster" telega) + ("s" "slack" jao-chats-slack) + ("i" "irc" jao-chats-irc)] + ["Windows" + ("f" "Previous window layout" winner-undo :transient t) + ("F" "Undo window layout restore" winner-redo :transient t) + ("w" "set wallpaper" jao-set-wallpaper) + ("W" "set radom wallpaper" jao-set-random-wallpaper)] + ["PDFs" + :if (lambda () (derived-mode-p 'doc-view-mode 'pdf-view-mode)) + ("z" "open with zathura" jao-zathura-open-doc) + ("m" "open with mupdf" jao-exwm-open-with-mupdf)] + ["Helpers" + ("r" "org reveal" org-reveal) + ("k" (lambda () (concat "keyboard" (when (jao-kb-toggled-p) "*"))) + jao-kb-toggle) + ("M" (lambda () (concat "minibuffer" (when jao-minibuffer-enabled-p "*"))) + jao-minibuffer-toggle)]]) + + #+end_src * Keybindings #+begin_src emacs-lisp (define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key) - (define-key exwm-mode-map [?\s-f] #'jao-hydra-float/body) - (define-key exwm-mode-map [?\s-m] #'jao-hydra-media/body) - (define-key exwm-mode-map [?\s-s] #'jao-hydra-spotify/body) - (define-key exwm-mode-map [?\s-w] #'jao-hydra-exwm/body) + (define-key exwm-mode-map [?\s-f] #'jao-transient-float) (define-key exwm-mode-map (kbd "C-c o") #'jao-exwm-zathura-goto-org) (define-key exwm-mode-map (kbd "C-c O") #'jao-exwm-zathura-goto-org*) (define-key exwm-mode-map (kbd "M-o") #'other-window) @@ -531,18 +547,18 @@ ([?\s-4] . jao-afio--goto-docs) ([?\s-A] . org-agenda-list) ([?\s-a] . jao-first-window) - ([?\s-b] . jao-hydra-org-blog/body) - ([?\s-c] . jao-hydra-chats/body) + ([?\s-b] . jao-transient-org-blog) ([?\s-e] . jao-exwm-firefox-1) ([?\s-t] . jao-term-here-toggle) - ([?\s-n] . jao-hydra-ednc/body) + ([?\s-m] . jao-transient-media) ([?\s-O] . jao-transpose-windows) ([?\s-o] . jao-other-window) ([?\s-P] . jao-transpose-windows-prev) ([?\s-p] . jao-prev-window) ([?\s-r] . app-launcher-run-app) - ([?\s-x] . jao-hydra-exwm-misc/body) - ([?\s-z] . jao-hydra-sleep/body) + ([?\s-s] . jao-transient-spotify) + ([?\s-w] . jao-transient-exwm) + ([?\s-z] . jao-transient-sleep) ([XF86AudioMute] . jao-mixer-master-toggle) ([XF86AudioPlay] . jao-player-toggle) ([XF86AudioPause] . jao-player-toggle) -- cgit v1.2.3