From 4fe17709a2abc20d3abab05f17770682cd79c2ec Mon Sep 17 00:00:00 2001 From: jao Date: Sat, 10 Sep 2022 22:07:35 +0100 Subject: xdotool helpers --- init.el | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'init.el') diff --git a/init.el b/init.el index 20d6daa..087770a 100644 --- a/init.el +++ b/init.el @@ -427,6 +427,26 @@ (let ((level (if jao-transparent-frame 100 jao-frames-default-alpha))) (jao-set-transparency level all))) +;;;; x11 utils +(defun jao-xdotool (arg-or-wait &rest args) + (apply 'jao-shell-exec* + (if (stringp arg-or-wait) "xdotool" arg-or-wait) + (if (stringp arg-or-wait) arg-or-wait "xdotool") + args)) + +(defsubst jao-xdotool-string (&rest args) + (apply 'jao-shell-string "xdotool" args)) + +(defsubst jao-x11-focused-id () (jao-xdotool-string "getwindowfocus")) + +(defsubst jao-x11-window-name (&optional wid) + (jao-xdotool-string "getwindowname" (or wid (jao-x11-focused-id)))) + +(defsubst jao-x11-search-window (title) + (jao-xdotool-string "search" "--name" title)) + +(defsubst jao-x11-goto-ws (n) (jao-xdotool t "set_desktop" (format "%s" n))) + ;;;; exwm (defvar jao-exwm-enabled nil) (defun jao-exwm-enabled-p () jao-exwm-enabled) @@ -527,12 +547,11 @@ (defun jao-screensaver-toggle () (interactive) - (let ((wid (jao-shell-string "xdotool getwindowfocus"))) + (let ((wid (jao-x11-focused-id))) (if (jao-screensaver-enabled) (jao-shell-exec* "xdg-screensaver" "suspend" wid) (jao-shell-exec* "xdg-screensaver" wid)) - (jao-notify (format "Using '%s'" - (jao-shell-string "xdotool getwindownames" wid)) + (jao-notify (format "Using '%s'" (jao-x11-window-name wid)) (format "Screensaver %s" (jao-shell-string "xdg-screensaver status"))))) @@ -1742,13 +1761,11 @@ (setq jao-org-open-pdf-fun 'jao-find-or-open) (defun jao-zathura-open (file page) - (let ((id (jao-shell-string (format "xdotool search --name %s" - (file-name-nondirectory file))))) + (let ((id (jao-x11-search-window (file-name-nondirectory file)))) (if (string-blank-p id) (progn - (when jao-xmonad-enabled - (jao-shell-exec "xdotool set_destktop 2" t)) - (jao-shell-exec (jao-pdf-zathura-open-cmd file page) t)) + (when jao-xmonad-enabled (jao-x11-goto-ws 2)) + (jao-shell-exec (jao-pdf-zathura-open-cmd file page))) (let* ((page (if page (format " && xdotool type %dg" page) "")) (cmd (format "xdotool windowactivate %s%s" id page))) (jao-shell-exec cmd t))))) -- cgit v1.2.3