aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/i3
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/i3/i3bar-river/module.nix21
-rw-r--r--modules/by-name/i3/i3status-rust/module.nix4
-rwxr-xr-xmodules/by-name/i3/i3status-rust/scripts/mpd_song_name.sh8
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 ""