Toggle Polybar Visibility in Emacs # Write a toggle [ErgoEmacs](http://ergoemacs.org/index.html) has a nifty [post](http://ergoemacs.org/emacs/elisp_toggle_command.html) on something I have done before in [numertous](https://squidbillies.fandom.com/wiki/Early_Cuyler) ways. This one just feels better. So I attempted something just for fun and this is the result. (defun toggle-polybar () "Toggle visibility of polybar. Initial 'state (nil t) is pulled from xdotool." (interactive) (if (eq (shell-command "xdotool search --onlyvisible --name Polybar" nil nil) 0) (progn (shell-command "xdo hide -N Polybar" nil nil)) (progn (shell-command "xdo show -N Polybar" nil nil)))) (global-set-key (kbd "C-c t p") #'toggle-polybar) Originally I was using a plist to set the state, but that is not required since all linux commands return an exit code which you can trap and test. So the if statement first checks to see if polybar is visible. *xdotool* returns 0 or 1 zero being success. Test that return and execute the show or hide based on that result. Here is the same functionality in bash. That might show better what is happening. #!/bin/bash xdotool search --onlyvisible --name Polybar; ec=$? case $ec in 0) xdo hide -N Polybar ;; 1) xdo show -N Polybar ;; esac In anycase, I have been using both versions with no faults…yet. tags: emacs elisp linux