glib: support gnome-console

This commit is contained in:
oreo639 2022-04-09 04:27:04 -07:00 committed by Michal Vasilek
parent 1267fa0bae
commit a8c02f9d19
2 changed files with 63 additions and 1 deletions

View File

@ -0,0 +1,62 @@
Currently glib hardcodes a list of terminals and that list will not be expanding.
The hope being that it will eventually be replaced with some kind of api.
Until then, we might as well add gnome-console/kgx to the list
See: https://gitlab.gnome.org/GNOME/gnome-build-meta/-/merge_requests/1404#note_1331262
Source: https://github.com/NixOS/nixpkgs/commit/c987121acf5c87436a0b05ca75cd70bf38c452ca
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index 60d6debb2..a441bfec9 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -2627,6 +2627,7 @@ prepend_terminal_to_vector (int *argc,
int i, j;
char **term_argv = NULL;
int term_argc = 0;
+ gboolean pass_cmd_as_single_arg = FALSE;
char *check;
char **the_argv;
@@ -2672,6 +2673,11 @@ prepend_terminal_to_vector (int *argc,
}
else
{
+ if (check == NULL) {
+ check = g_find_program_in_path ("kgx");
+ if (check != NULL)
+ pass_cmd_as_single_arg = TRUE;
+ }
if (check == NULL)
check = g_find_program_in_path ("tilix");
if (check == NULL)
@@ -2697,14 +2703,27 @@ prepend_terminal_to_vector (int *argc,
}
}
- real_argc = term_argc + *argc;
+ real_argc = term_argc + (pass_cmd_as_single_arg ? 1 : *argc);
real_argv = g_new (char *, real_argc + 1);
for (i = 0; i < term_argc; i++)
real_argv[i] = term_argv[i];
- for (j = 0; j < *argc; j++, i++)
- real_argv[i] = (char *)the_argv[j];
+ if (pass_cmd_as_single_arg) {
+ char **quoted_argv = g_new (char *, *argc + 1);
+
+ for (j = 0; j < *argc; j++) {
+ quoted_argv[j] = g_shell_quote (the_argv[j]);
+ g_free (the_argv[j]);
+ }
+ quoted_argv[j] = NULL;
+
+ real_argv[i++] = g_strjoinv (" ", quoted_argv);
+ g_strfreev (quoted_argv);
+ } else {
+ for (j = 0; j < *argc; j++, i++)
+ real_argv[i] = (char *)the_argv[j];
+ }
real_argv[i] = NULL;

View File

@ -1,7 +1,7 @@
# Template file for 'glib'
pkgname=glib
version=2.72.2
revision=1
revision=2
build_style=meson
# static version is necessary for qemu-user-static;
# also disable LTO, otherwise there are multiple failures when linking qemu