glib: support gnome-console
This commit is contained in:
parent
1267fa0bae
commit
a8c02f9d19
|
@ -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;
|
||||
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue