aboutsummaryrefslogtreecommitdiff
path: root/src/GlobalHotkeysLinux.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-12-29 18:56:42 +0100
committerdec05eba <dec05eba@protonmail.com>2024-12-29 18:56:42 +0100
commit5ab4c7b7525d3cf36777fd1dd77813dc8879dbfc (patch)
tree3761aadee6e89975443df50171f5fdcd343b8340 /src/GlobalHotkeysLinux.cpp
parent4b506e865a6997fd24b39335a96cfeea7d14c209 (diff)
Use flatpak specific path for gsr-global-hotkeys
Diffstat (limited to 'src/GlobalHotkeysLinux.cpp')
-rw-r--r--src/GlobalHotkeysLinux.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/GlobalHotkeysLinux.cpp b/src/GlobalHotkeysLinux.cpp
index b0e8e52..f3ec2b3 100644
--- a/src/GlobalHotkeysLinux.cpp
+++ b/src/GlobalHotkeysLinux.cpp
@@ -2,6 +2,7 @@
#include <signal.h>
#include <sys/wait.h>
#include <fcntl.h>
+#include <limits.h>
#include <string.h>
#define PIPE_READ 0
@@ -31,6 +32,14 @@ namespace gsr {
}
bool GlobalHotkeysLinux::start() {
+ const bool inside_flatpak = getenv("FLATPAK_ID") != NULL;
+ const char *user_homepath = getenv("HOME");
+ if(!user_homepath)
+ user_homepath = "/tmp";
+
+ char gsr_global_hotkeys_flatpak[PATH_MAX];
+ snprintf(gsr_global_hotkeys_flatpak, sizeof(gsr_global_hotkeys_flatpak), "%s/.local/share/gpu-screen-recorder/gsr-global-hotkeys", user_homepath);
+
if(process_id > 0)
return false;
@@ -51,8 +60,14 @@ namespace gsr {
close(pipes[i]);
}
- const char *args[] = { "gsr-global-hotkeys", NULL };
- execvp(args[0], (char* const*)args);
+ if(inside_flatpak) {
+ const char *args[] = { "flatpak-spawn", "--host", "--", gsr_global_hotkeys_flatpak, NULL };
+ execvp(args[0], (char* const*)args);
+ } else {
+ const char *args[] = { "gsr-global-hotkeys", NULL };
+ execvp(args[0], (char* const*)args);
+ }
+
perror("execvp");
_exit(127);
} else { /* parent */