Will it be possible to generalize a launch-or-focus script in the world of Wayland, at least when using Kwin?
Will it be possible to generalize a launch-or-focus script in the world of Wayland, at least when using Kwin?
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 &