mirror of https://github.com/fairyglade/ly.git
Try to fix bug in GNOME for duplicate entries in Ly
This commit is contained in:
parent
bd59e5dda8
commit
b6cf448f3d
22
src/utils.c
22
src/utils.c
|
|
@ -95,11 +95,13 @@ void desktop_crawl(
|
||||||
strncat(path, dir_info->d_name, (sizeof (path)) - 1);
|
strncat(path, dir_info->d_name, (sizeof (path)) - 1);
|
||||||
configator(&desktop_config, path);
|
configator(&desktop_config, path);
|
||||||
|
|
||||||
|
const char wayland_specifier[] = " (Wayland)";
|
||||||
|
const char gnome_wayland_specifier[] = " on Wayland";
|
||||||
|
|
||||||
// if these are wayland sessions, add " (Wayland)" to their names,
|
// if these are wayland sessions, add " (Wayland)" to their names,
|
||||||
// as long as their names don't already contain that string
|
// as long as their names don't already contain that string
|
||||||
if (server == DS_WAYLAND && config.wayland_specifier)
|
if (server == DS_WAYLAND && config.wayland_specifier)
|
||||||
{
|
{
|
||||||
const char wayland_specifier[] = " (Wayland)";
|
|
||||||
if (strstr(name, wayland_specifier) == NULL)
|
if (strstr(name, wayland_specifier) == NULL)
|
||||||
{
|
{
|
||||||
name = realloc(name, (strlen(name) + sizeof(wayland_specifier) + 1));
|
name = realloc(name, (strlen(name) + sizeof(wayland_specifier) + 1));
|
||||||
|
|
@ -110,7 +112,10 @@ void desktop_crawl(
|
||||||
|
|
||||||
if ((name != NULL) && (exec != NULL))
|
if ((name != NULL) && (exec != NULL))
|
||||||
{
|
{
|
||||||
input_desktop_add(target, name, exec, server);
|
if (!(strstr(name, wayland_specifier) != NULL && contains(target->list, target->len, gnome_wayland_specifier) == 1))
|
||||||
|
{
|
||||||
|
input_desktop_add(target, name, exec, server);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
name = NULL;
|
name = NULL;
|
||||||
|
|
@ -274,3 +279,16 @@ void load(struct desktop* desktop, struct text* login)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
free(line);
|
free(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int contains(char** ptr, int len, const char* substr)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
if (strstr(ptr[i], substr) != NULL)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -11,5 +11,6 @@ void free_hostname();
|
||||||
void switch_tty(struct term_buf* buf);
|
void switch_tty(struct term_buf* buf);
|
||||||
void save(struct desktop* desktop, struct text* login);
|
void save(struct desktop* desktop, struct text* login);
|
||||||
void load(struct desktop* desktop, struct text* login);
|
void load(struct desktop* desktop, struct text* login);
|
||||||
|
int contains(char** ptr, int len, const char* substr);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue