From 8521f1254860bf66cc2c5447682708f1ac1d4a94 Mon Sep 17 00:00:00 2001 From: "Thomas G. Lopes" Date: Wed, 25 Mar 2026 16:01:10 +0000 Subject: [PATCH] use per-user runtime stats path for reliable gsfd+tui updates --- README.md | 2 +- crates/core/src/inputspeed.rs | 7 ++++++- daemon/src/main.rs | 7 ++++++- nix/module.nix | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d966be..2a8f563 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Default config path: Default speed stats path: - `$XDG_RUNTIME_DIR/gsf-speed.txt` (if available) -- fallback `~/.local/state/gsf/speed.txt` +- fallback `/tmp/gsf-speed.txt` - override with `GSF_STATS_PATH` ## runtime requirements diff --git a/crates/core/src/inputspeed.rs b/crates/core/src/inputspeed.rs index c24134e..4ff7795 100644 --- a/crates/core/src/inputspeed.rs +++ b/crates/core/src/inputspeed.rs @@ -44,6 +44,11 @@ fn stats_path() -> PathBuf { return PathBuf::from(path); } - // Keep default shared across sudo/non-sudo runs. + if let Ok(runtime_dir) = std::env::var("XDG_RUNTIME_DIR") + && !runtime_dir.is_empty() + { + return PathBuf::from(runtime_dir).join("gsf-speed.txt"); + } + PathBuf::from("/tmp/gsf-speed.txt") } diff --git a/daemon/src/main.rs b/daemon/src/main.rs index 84ca94b..7162b26 100644 --- a/daemon/src/main.rs +++ b/daemon/src/main.rs @@ -367,6 +367,11 @@ fn stats_path() -> PathBuf { return PathBuf::from(path); } - // Keep default shared across sudo/non-sudo runs. + if let Ok(runtime_dir) = std::env::var("XDG_RUNTIME_DIR") + && !runtime_dir.is_empty() + { + return PathBuf::from(runtime_dir).join("gsf-speed.txt"); + } + PathBuf::from("/tmp/gsf-speed.txt") } diff --git a/nix/module.nix b/nix/module.nix index 1fba052..12c93de 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -89,6 +89,7 @@ in wantedBy = ["default.target"]; after = ["graphical-session.target"]; serviceConfig = { + Environment = ["GSF_STATS_PATH=%t/gsf-speed.txt"]; ExecStart = "${cfg.package}/bin/gsfd --device ${lib.escapeShellArg cfg.device}${lib.optionalString (cfg.extraArgs != []) " ${extraArgs}"}"; Restart = "on-failure"; RestartSec = 1;