hypr/autostart: route joplin and teamspeak to named workspaces

This commit is contained in:
2026-02-28 20:17:07 +01:00
parent dadad155b2
commit 24d57001df
6 changed files with 55 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
[Desktop Entry]
Name=Joplin
Comment=Joplin for Desktop
Exec=/usr/bin/joplin-desktop
Terminal=false
Icon=joplin-desktop
StartupWMClass=@joplin/app-desktop
Type=Application
Categories=Office;
MimeType=x-scheme-handler/joplin;
SingleMainWindow=true

View File

@@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
StartupNotify=false
Name=TeamSpeak
Icon=teamspeak-client
Comment=TeamSpeak Voice Communication Client
Categories=Audio;Chat;Network;
StartupWMClass=TeamSpeak
MimeType=x-scheme-handler/ts3server;x-scheme-handler/teamspeak;
Exec=teamspeak %u

View File

@@ -82,13 +82,16 @@ workspace = special:passwordmgr, on-created-empty:bitwarden-desktop
## ========== Communication ==========
# Comms
windowrule = match:class ^(info\.mumble\.Mumble|discord|TeamSpeak|teamspeak3|vesktop)$, workspace name:comms
windowrule = match:class ^(info\.mumble\.Mumble|discord|vesktop|teamspeak-client|TeamSpeak|TeamSpeak 3|teamspeak3)$, workspace name:comms
# Element
windowrule = match:class ^(Element)$, workspace name:element
## ========== Mail ==========
windowrule = match:class ^(org\.mozilla\.Thunderbird)$, workspace name:mail
## ========== Notes ==========
windowrule = match:class ^(@joplin/app-desktop)$, workspace name:joplin
## ========== Multimedia ==========
windowrule = match:class Spotify, workspace 10

View File

@@ -65,6 +65,9 @@ bind = $mainMod, D, exec, hypr-comms-toggle
# Mail
bind = $mainMod SHIFT, A, exec, hypr-mail-toggle
# Notes
bind = $mainMod SHIFT, D, exec, hypr-joplin-toggle
# Gaming
bind = $mainMod, S, exec, hypr-steam-toggle

View File

@@ -77,6 +77,7 @@
"comms": "",
"element": "",
"mail": "",
"joplin": "",
"steam": "",
"default": "",
"special": ""

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -euo pipefail
joplin_ws="name:joplin"
joplin_name="joplin"
active_name=""
if json="$(hyprctl -j activeworkspace 2>/dev/null)"; then
if command -v jq >/dev/null 2>&1; then
active_name="$(printf '%s' "$json" | jq -r '.name // empty')"
else
active_name="$(printf '%s' "$json" | sed -n 's/.*"name":"\\([^"]*\\)".*/\\1/p')"
fi
fi
if [[ -z "$active_name" ]]; then
active_name="$(hyprctl activeworkspace 2>/dev/null | sed -n 's/.*(\\(.*\\)).*/\\1/p' | head -n1)"
fi
if [[ "$active_name" == "$joplin_name" || "$active_name" == "$joplin_ws" ]]; then
hyprctl dispatch workspace previous
else
hyprctl dispatch moveworkspacetomonitor "$joplin_ws" current
hyprctl dispatch workspace "$joplin_ws"
fi