From 8e66363352eed29b70cab5817810881719d7cd76 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 30 Nov 2023 18:44:45 +0100 Subject: flatpak: run gsr kms server on host if the file has root capacity --- kms/client/kms_client.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'kms') diff --git a/kms/client/kms_client.c b/kms/client/kms_client.c index 0ea7cab..bcd6870 100644 --- a/kms/client/kms_client.c +++ b/kms/client/kms_client.c @@ -244,12 +244,17 @@ int gsr_kms_client_init(gsr_kms_client *self, const char *card_path) { fprintf(stderr, "gsr error: gsr_kms_client_init: fork failed, error: %s\n", strerror(errno)); goto err; } else if(pid == 0) { /* child */ - if(has_perm) { + if(inside_flatpak) { + if(has_perm) { + const char *args[] = { "flatpak-spawn", "--host", "/var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/bin/gsr-kms-server", self->initial_socket_path, card_path, NULL }; + execvp(args[0], (char *const*)args); + } else { + const char *args[] = { "flatpak-spawn", "--host", "pkexec", "flatpak", "run", "--command=gsr-kms-server", "com.dec05eba.gpu_screen_recorder", self->initial_socket_path, card_path, NULL }; + execvp(args[0], (char *const*)args); + } + } else if(has_perm) { const char *args[] = { server_filepath, self->initial_socket_path, card_path, NULL }; execvp(args[0], (char *const*)args); - } else if(inside_flatpak) { - const char *args[] = { "flatpak-spawn", "--host", "pkexec", "flatpak", "run", "--command=gsr-kms-server", "com.dec05eba.gpu_screen_recorder", self->initial_socket_path, card_path, NULL }; - execvp(args[0], (char *const*)args); } else { const char *args[] = { "pkexec", server_filepath, self->initial_socket_path, card_path, NULL }; execvp(args[0], (char *const*)args); -- cgit v1.2.3