diff --git a/nix/homeModules/common/cmus/default.nix b/nix/homeModules/common/cmus/default.nix index 7af6e168..90312a3a 100644 --- a/nix/homeModules/common/cmus/default.nix +++ b/nix/homeModules/common/cmus/default.nix @@ -4,11 +4,13 @@ ... }: { programs.cmus.extraConfig = let - # Dispatch to multiple callbacks (if needed) - # Right now only notify-send is called + # dispatch to multiple callbacks callback-script = pkgs.writeShellApplication { name = "cmus-callback-script"; - runtimeInputs = [pkgs.libnotify]; + runtimeInputs = [ + pkgs.cmusfm + pkgs.libnotify + ]; text = '' # All keys contain only chars a-z. Values are UTF-8 strings. # @@ -17,9 +19,8 @@ # - file or url is given only if track is 'loaded' in cmus # - other keys/values are given only if they are available - # Keep a copy of arguments - # argv=("$@") - + # Use a map so that we can redirect all the args to cmusfm + argv=("$@") declare -A map while [ $# -gt 0 ]; do map["$1"]="$2" @@ -40,22 +41,26 @@ notify-send \ "$SYMB ''${map[title]}" \ "''${map[artist]} / ''${map[album]}" + cmusfm "''${argv[@]}" ''; }; in (builtins.readFile ./rc) - + lib.optionalString pkgs.stdenv.isLinux '' + + (lib.optionalString pkgs.stdenv.isLinux '' set status_display_program=${lib.getExe callback-script} - '' + '') + + (lib.optionalString pkgs.stdenv.isDarwin '' + set status_display_program=${lib.getExe pkgs.cmusfm} + '') # This handles volume better # Alsa backend has this behavior where system volume button will unsync two channels - + lib.optionalString pkgs.stdenv.isLinux '' + + (lib.optionalString pkgs.stdenv.isLinux '' set output_plugin=pulse - '' + '') # When switching over bluetooth, toggle the output device to coreaudio # and back to ao would fix the no sound issue. - + lib.optionalString pkgs.stdenv.isDarwin '' + + (lib.optionalString pkgs.stdenv.isDarwin '' # distortion fix https://github.com/cmus/cmus/issues/1130#issuecomment-1003324193 set output_plugin=ao - ''; + ''); }