{pkgs, ...}: let launch-music = pkgs.writeShellScriptBin "hakase-music-launch" '' echo "--- Launching Music Apps ---" echo "Launching jellyfin-tui..." uwsm app -- /usr/bin/env ghostty --class=jellyfin-tui --title=jellyfin-tui -e jellyfin-tui & PID_JELLY=$! echo "Jellyfin launched with PID $PID_JELLY" echo "Waiting for window..." sleep 0.1 echo "Focusing jellyfin-tui..." hyprctl dispatch focuswindow title:jellyfin-tui echo "Preselecting down..." hyprctl dispatch layoutmsg preselect d echo "Launching cava..." uwsm app -- /usr/bin/env ghostty --class=cava --title=cava -e cava & PID_CAVA=$! echo "Cava launched with PID $PID_CAVA" echo "Launch script completed." ''; in { imports = [ # TODO: must be an option a user can set of which music player to use ../../apps/jellyfin-tui ../../apps/cava ]; home.packages = [ launch-music ]; wayland.windowManager.hyprland.settings = { workspace = [ "name:music, on-created-empty:hakase-music-launch" ]; bindd = [ "SUPER, M, Switch to Music, workspace, name:music" "SUPER SHIFT, M, Move to Music Workspace, movetoworkspace, name:music" ]; windowrule = [ # --- MUSIC RULES (Jellyfin-TUI) --- "match:title ^(jellyfin-tui)$, workspace name:music silent" "match:initial_title ^(jellyfin-tui)$, workspace name:music silent" # --- CAVA RULES --- "match:title ^(cava)$, workspace name:music silent" "match:initial_title ^(cava)$, workspace name:music silent" ]; }; }