From 662430b442dd1a3398f9aca64bfd16c8a731d491 Mon Sep 17 00:00:00 2001 From: AnErrupTion Date: Wed, 20 Apr 2022 17:43:45 +0200 Subject: [PATCH] Try the other method again --- src/inputs.c | 18 ++++++++++++++++++ src/inputs.h | 1 + src/login.c | 7 +++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/inputs.c b/src/inputs.c index 861ba62..f5341fc 100644 --- a/src/inputs.c +++ b/src/inputs.c @@ -7,6 +7,7 @@ #include #include #include +#include void handle_desktop(void* input_struct, struct tb_event* event) { @@ -76,6 +77,7 @@ void handle_text(void* input_struct, struct tb_event* event) void input_desktop(struct desktop* target) { target->list = NULL; + target->list_simple = NULL; target->cmd = NULL; target->display_server = NULL; target->cur = 0; @@ -176,6 +178,7 @@ void input_desktop_add( { ++(target->len); target->list = realloc(target->list, target->len * (sizeof (char*))); + target->list_simple = realloc(target->list_simple, target->len * (sizeof (char*))); target->cmd = realloc(target->cmd, target->len * (sizeof (char*))); target->display_server = realloc( target->display_server, @@ -190,7 +193,22 @@ void input_desktop_add( return; } + int name_len = strlen(name); + target->list[target->cur] = name; + + char* name_simple = *name; + if (strstr(name_simple, " ") != NULL) + { + name_simple = strtok(name_simple, " "); + } + + for (int i = 0; i < name_len; i++) + { + name_simple[i] = tolower(name_simple[i]); + } + + target->list_simple[target->cur] = name_simple; target->cmd[target->cur] = cmd; target->display_server[target->cur] = display_server; } diff --git a/src/inputs.h b/src/inputs.h index 6ba1448..d0f0f61 100644 --- a/src/inputs.h +++ b/src/inputs.h @@ -23,6 +23,7 @@ struct text struct desktop { char** list; + char** list_simple; char** cmd; enum display_server* display_server; diff --git a/src/login.c b/src/login.c index 186ad00..19e2a25 100644 --- a/src/login.c +++ b/src/login.c @@ -265,15 +265,14 @@ void env_xdg_session(const enum display_server display_server) } } -void env_xdg(const char* tty_id) +void env_xdg(const char* tty_id, const char* desktop_name) { char user[15]; - char* desktop = getenv("XDG_CURRENT_DESKTOP"); snprintf(user, 15, "/run/user/%d", getuid()); setenv("XDG_RUNTIME_DIR", user, 0); setenv("XDG_SESSION_CLASS", "user", 0); setenv("XDG_SESSION_ID", "1", 0); - setenv("XDG_SESSION_DESKTOP", desktop ? desktop : "none", 0); + setenv("XDG_SESSION_DESKTOP", desktop_name, 0); setenv("XDG_SEAT", "seat0", 0); setenv("XDG_VTNR", tty_id, 0); } @@ -610,7 +609,7 @@ void auth( } // add xdg variables - env_xdg(tty_id); + env_xdg(tty_id, desktop->list_simple[desktop->cur]); // execute int ok = chdir(pwd->pw_dir);