Use flatpak specific path for gsr-global-hotkeys

This commit is contained in:
dec05eba
2024-12-29 18:56:42 +01:00
parent 4b506e865a
commit 5ab4c7b752
3 changed files with 22 additions and 6 deletions

2
TODO
View File

@@ -66,7 +66,7 @@ Make save-video-in-game-folder.sh and notify-saved-name.sh run ~/.config/gpu-scr
if the profile is called 4chan. if the profile is called 4chan.
Create a directory of such example scripts, including 4chan webm one. Create a directory of such example scripts, including 4chan webm one.
On nvidia check if suspend fix is applied. If not, show a popup asking the user to apply it (and apply it automatically). This is a requirement before this package is made to a flatpak. On nvidia check if suspend fix is applied. If not, show a popup asking the user to apply it (and apply it automatically).
Show warning when using steam deck or when trying to capture hevc/av1 on amd (the same warnings as gpu screen recorder gtk). Show warning when using steam deck or when trying to capture hevc/av1 on amd (the same warnings as gpu screen recorder gtk).

View File

@@ -2,6 +2,7 @@
#include <signal.h> #include <signal.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <fcntl.h> #include <fcntl.h>
#include <limits.h>
#include <string.h> #include <string.h>
#define PIPE_READ 0 #define PIPE_READ 0
@@ -31,6 +32,14 @@ namespace gsr {
} }
bool GlobalHotkeysLinux::start() { 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) if(process_id > 0)
return false; return false;
@@ -51,8 +60,14 @@ namespace gsr {
close(pipes[i]); close(pipes[i]);
} }
const char *args[] = { "gsr-global-hotkeys", NULL }; if(inside_flatpak) {
execvp(args[0], (char* const*)args); 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"); perror("execvp");
_exit(127); _exit(127);
} else { /* parent */ } else { /* parent */

View File

@@ -177,12 +177,13 @@ int main(int argc, char **argv) {
if(argc == 1) { if(argc == 1) {
launch_action = LaunchAction::LAUNCH_HIDE; launch_action = LaunchAction::LAUNCH_HIDE;
} else if(argc == 2) { } else if(argc == 2) {
if(strcmp(argv[1], "launch-show") == 0) { const char *launch_action_opt = argv[1];
if(strcmp(launch_action_opt, "launch-show") == 0) {
launch_action = LaunchAction::LAUNCH_SHOW; launch_action = LaunchAction::LAUNCH_SHOW;
} else if(strcmp(argv[1], "launch-hide") == 0) { } else if(strcmp(launch_action_opt, "launch-hide") == 0) {
launch_action = LaunchAction::LAUNCH_HIDE; launch_action = LaunchAction::LAUNCH_HIDE;
} else { } else {
printf("error: invalid action \"%s\", expected \"launch-show\" or \"launch-hide\".\n", argv[1]); printf("error: invalid action \"%s\", expected \"launch-show\" or \"launch-hide\".\n", launch_action_opt);
usage(); usage();
} }
} else { } else {