diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/by-name/i3/i3bar-river/module.nix | 21 | ||||
| -rw-r--r-- | modules/by-name/i3/i3status-rust/module.nix | 4 | ||||
| -rwxr-xr-x | modules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh | 8 |
3 files changed, 29 insertions, 4 deletions
diff --git a/modules/by-name/i3/i3bar-river/module.nix b/modules/by-name/i3/i3bar-river/module.nix index 8a2203aa..982ec1e3 100644 --- a/modules/by-name/i3/i3bar-river/module.nix +++ b/modules/by-name/i3/i3bar-river/module.nix @@ -110,7 +110,26 @@ in { }; config = lib.mkIf cfg.enable { - soispha.programs.river.init.backgroundStart = [cfg.package]; + systemd.user.services."i3bar-river" = { + description = "Highly customizable Wayland bar for river"; + partOf = ["graphical-session.target"]; + after = ["graphical-session.target"]; + requisite = ["graphical-session.target"]; + + path = [ + pkgs.bash # `sh` is needed for starting the status command + + # TODO: This should be a wrapper of the status command <2026-06-23> + pkgs.btrfs-progs # `btrfs` is needed by the storage block in the status command + ]; + + serviceConfig = { + ExecStart = "${lib.getExe cfg.package}"; + ExecReload = "kill -SIGUSR2 $MAINPID"; + Restart = "on-failure"; + }; + wantedBy = ["graphical-session.target"]; + }; home-manager.users.soispha = { programs.i3bar-river = { diff --git a/modules/by-name/i3/i3status-rust/module.nix b/modules/by-name/i3/i3status-rust/module.nix index 48bcd5de..1e247100 100644 --- a/modules/by-name/i3/i3status-rust/module.nix +++ b/modules/by-name/i3/i3status-rust/module.nix @@ -18,7 +18,7 @@ in { options.soispha.programs.i3status-rust = { enable = lib.mkEnableOption "i3status-rust"; - package = lib.mkPackageOption pkgs "i3status-rust-patched" {}; + package = lib.mkPackageOption pkgs "i3status-rust" {}; }; config = lib.mkIf cfg.enable { @@ -63,7 +63,7 @@ in { block = "custom"; interval = "once"; persistent = true; - command = mkScript "mpd_song_name.sh" [pkgs.mpc pkgs.coreutils]; + command = mkScript "mpd_song_name.sh" [pkgs.mpc pkgs.mpdpopm pkgs.coreutils]; hide_when_empty = true; shell = "${lib.getExe pkgs.dash}"; format = " $text.str(max_width:60,rot_interval:0.5) "; diff --git a/modules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh b/modules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh index 28921520..edd5da2c 100755 --- a/modules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh +++ b/modules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh @@ -16,8 +16,14 @@ while true; do if [ "$state" = "playing" ]; then song="$(mpc --format '[[%artist% - ]%title%]|[%file%]' current)" progress="$(mpc status "%currenttime%/%totaltime%")" + base_rating="$(mpdpopm rating get)" - echo "$song :: $progress" + rating="" + if [ "$base_rating" != 0 ]; then + rating=" ($base_rating)" + fi + + echo "$song :: ${progress}${rating}" else # The song has stopped, we are done displaying it. echo "" |
