From d12f29015cfc01d1b6a62e1135961bb81d59c0b4 Mon Sep 17 00:00:00 2001 From: Salvo Date: Wed, 24 Dec 2025 19:46:04 +0100 Subject: [PATCH] Added user XDG variables --- src/auth.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/auth.zig b/src/auth.zig index 8bd7621..822bdee 100644 --- a/src/auth.zig +++ b/src/auth.zig @@ -198,6 +198,21 @@ fn initEnv(allocator: std.mem.Allocator, entry: interop.UsernameEntry, path_env: if (entry.home) |home| { try interop.setEnvironmentVariable(allocator, "HOME", home, true); try interop.setEnvironmentVariable(allocator, "PWD", home, true); + + // set XDG env as per https://wiki.archlinux.org/title/XDG_Base_Directory + const n = comptime 4; + const xdgVars: [n][]const u8 = .{ + "XDG_CONFIG_HOME", + "XDG_CACHE_HOME", + "XDG_DATA_HOME", + "XDG_STATE_HOME", + }; + const xdgPaths: [n][]const u8 = .{".config", ".cache", ".local/share", ".local/state"}; + for (0..n) |i| { + const value = try std.fmt.allocPrint(allocator, "{s}/{s}", .{ home, xdgPaths[i] }); + defer allocator.free(value); + try interop.setEnvironmentVariable(allocator, xdgVars[i], value, false); + } } else return error.NoHomeDirectory; try interop.setEnvironmentVariable(allocator, "SHELL", entry.shell.?, true);