Files
nixos/modules/home/music.nix
T

56 lines
1.6 KiB
Nix

{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 = [
"special:music, on-created-empty:hakase-music-launch"
];
bindd = [
"SUPER, M, Toggle Music, togglespecialworkspace, music"
"SUPER SHIFT, M, Move to Music Special Workspace, movetoworkspace, special:music"
];
windowrulev2 = [
# --- MUSIC RULES (Jellyfin-TUI) ---
"workspace special:music silent, title:^(jellyfin-tui)$"
"workspace special:music silent, initialTitle:^(jellyfin-tui)$"
# --- CAVA RULES ---
"workspace special:music silent, title:^(cava)$"
"workspace special:music silent, initialTitle:^(cava)$"
];
};
}