From b1cb576f67073a063e0035fbf5e7eab60dd553a3 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Tue, 30 Dec 2025 17:38:22 +0100 Subject: [PATCH] Check for session file name in autologin (closes #895) Signed-off-by: AnErrupTion --- src/Environment.zig | 1 + src/main.zig | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Environment.zig b/src/Environment.zig index eab875d..48b68a3 100644 --- a/src/Environment.zig +++ b/src/Environment.zig @@ -14,6 +14,7 @@ pub const DesktopEntry = struct { pub const Entry = struct { @"Desktop Entry": DesktopEntry = .{} }; entry_ini: ?Ini(Entry) = null, +file_name: []const u8 = "", name: []const u8 = "", xdg_session_desktop: ?[]const u8 = null, xdg_session_desktop_owned: bool = false, diff --git a/src/main.zig b/src/main.zig index 8565c9a..7bba2f1 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1251,6 +1251,7 @@ fn crawl(session: *Session, lang: Lang, path: []const u8, display_server: Displa }); errdefer entry_ini.deinit(); + const file_name = std.fs.path.stem(item.name); const entry = entry_ini.data.@"Desktop Entry"; var maybe_xdg_session_desktop: ?[]const u8 = null; var maybe_xdg_desktop_names: ?[]const u8 = null; @@ -1268,15 +1269,15 @@ fn crawl(session: *Session, lang: Lang, path: []const u8, display_server: Displa } else if (display_server != .custom) { // If DesktopNames is empty, and this isn't a custom session entry, // we'll take the name of the session file - const stem = std.fs.path.stem(item.name); - if (stem.len > 0) { - maybe_xdg_session_desktop = try session.label.allocator.dupe(u8, stem); + if (file_name.len > 0) { + maybe_xdg_session_desktop = try session.label.allocator.dupe(u8, file_name); xdg_session_desktop_owned = true; } } try session.addEnvironment(.{ .entry_ini = entry_ini, + .file_name = std.fs.path.stem(item.name), .name = entry.Name, .xdg_session_desktop = maybe_xdg_session_desktop, .xdg_session_desktop_owned = xdg_session_desktop_owned, @@ -1310,6 +1311,7 @@ fn findSessionByName(session: *Session, name: []const u8) ?usize { if (std.ascii.eqlIgnoreCase(session_desktop_name, name)) return i; } if (std.ascii.eqlIgnoreCase(env.environment.name, name)) return i; + if (std.ascii.eqlIgnoreCase(env.environment.file_name, name)) return i; } return null; }