Hello!
I’m still using X11, and one of the things that’s keeping me there is that I make heavy use of a launch-or-focus script, so that I hit a certain hotkey and no matter what a browser/chat/editor/terminal/file-manager/etc. shows up focused on my current desktop.
In the world of Wayland, this isn’t so easy. If this can be recreated at all, I think it’ll have to be made to rely on some sort of interface to Kwin.
I don’t think it’s possible now, but might it be in the future?
Here’s my script, let’s see if the lemmy interface mangles it (EDIT: yes, the last character should be an ampersand, not &
):
#!/bin/zsh -ex
# -- Usage --
# ./toggle_window.zsh LAUNCH_CMD [ WM_CLASS [ CHECK_CMD ] ]
# -- Defaults --
# WM_CLASS and CHECK_CMD each default to the value of LAUNCH_CMD
# -- Examples --
# ./toggle_window.zsh dolphin
# ./toggle_window.zsh wezterm-gui org.wezfurlong.wezterm
# ./toggle_window.zsh firefox firefox firefox-bin
# ./toggle_window.zsh \
# 'flatpak run --branch=stable --arch=x86_64 --command=telegram-desktop --file-forwarding org.telegram.desktop' \
# telegram-desktop telegram-deskto
# Yes, "telegram-deskto" without a final p. Hmm.
# -- Dependencies --
# - procps (pgrep)
# - wmctrl
# - x11-utils (xprop)
# - xdotool
# -- TODO --
# - wayland
launch_cmd=(${(z)1})
wm_class=${2:-$1}
check_cmd=${3:-$1}
if [[ $(xprop -id $(xdotool getactivewindow) WM_CLASS) =~ \"$wm_class\" ]] {
xdotool getactivewindow windowminimize
} else {
wmctrl -xR $wm_class || true
}
pgrep -u $USER -x $check_cmd || exec $launch_cmd &
Oooh wee, great, thanks!