summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan-boikov <ik.boikov.public@protonmail.com>2024-12-22 15:54:45 +0100
committerivan-boikov <ik.boikov.public@protonmail.com>2024-12-22 15:54:45 +0100
commitccd25c1cca66c17d5473f907ef3d47ac9376ac47 (patch)
treeedfba5cc1afdeb9552155b5b79086b8b69601055
parent355055d36f1248e4b3dc70c901dfb00e66a4d236 (diff)
XDG_RUNTIME_DIR handling
-rw-r--r--config.h4
-rw-r--r--slstatus.c22
2 files changed, 23 insertions, 3 deletions
diff --git a/config.h b/config.h
index 498350d..c8b32a1 100644
--- a/config.h
+++ b/config.h
@@ -65,8 +65,8 @@ static const char unknown_str[] = "n/a";
*/
static const struct arg args[] = {
/* function format argument */
- { mpd_track, "[%s", "/tmp/mpd.playing" },
- { cat, " %3s%%]", "/tmp/volume" },
+ { mpd_track, "[%s]", "$XDG_RUNTIME_DIR/mpd.playing" },
+ { cat, "[%3s%%]", "$XDG_RUNTIME_DIR/volume" },
// BATSTATE
// NETSPEED
{ vpn_status, "%s", NULL },
diff --git a/slstatus.c b/slstatus.c
index fd31313..88204de 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -54,6 +54,11 @@ main(int argc, char *argv[])
char status[MAXLEN];
const char *res;
+ char *XDG_RUNTIME_DIR = getenv("XDG_RUNTIME_DIR");
+ const char tok_XDG_RUNTIME_DIR[] = "$XDG_RUNTIME_DIR";
+ char fpath[1024];
+ char *arg;
+
sflag = 0;
ARGBEGIN {
case 'v':
@@ -87,7 +92,22 @@ main(int argc, char *argv[])
status[0] = '\0';
for (i = len = 0; i < LEN(args); i++) {
- if (!(res = args[i].func(args[i].args)))
+
+ if (args[i].args) {
+ // replace $XDG_RUNTIME_DIR with cached env variable
+ strcpy(fpath, args[i].args);
+ arg = strstr(fpath, tok_XDG_RUNTIME_DIR); // arg acts as a temp var
+ if (arg) {
+ strcpy(arg, XDG_RUNTIME_DIR);
+ strcpy(arg + strlen(XDG_RUNTIME_DIR), args[i].args + strlen(tok_XDG_RUNTIME_DIR));
+ }
+ arg = fpath;
+ }
+ else {
+ arg = args[i].args;
+ }
+
+ if (!(res = args[i].func(arg)))
res = unknown_str;
if ((ret = esnprintf(status + len, sizeof(status) - len,