From b865f5cae3c503be65ce55b58fae09589cff3b0f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 29 Dec 2024 19:29:27 +0100 Subject: Change name of flatpak systemd service --- flatpak/gpu-screen-recorder-ui-flatpak.service | 11 +++++++++ flatpak/gpu-screen-recorder-ui.service | 11 --------- include/Process.hpp | 4 ---- src/Process.cpp | 33 -------------------------- src/gui/GlobalSettingsPage.cpp | 24 +++++++++++++++---- 5 files changed, 31 insertions(+), 52 deletions(-) create mode 100644 flatpak/gpu-screen-recorder-ui-flatpak.service delete mode 100644 flatpak/gpu-screen-recorder-ui.service diff --git a/flatpak/gpu-screen-recorder-ui-flatpak.service b/flatpak/gpu-screen-recorder-ui-flatpak.service new file mode 100644 index 0000000..3ed7f4b --- /dev/null +++ b/flatpak/gpu-screen-recorder-ui-flatpak.service @@ -0,0 +1,11 @@ +[Unit] +Description=GPU Screen Recorder UI Service + +[Service] +ExecStart=flatpak run com.dec05eba.gpu_screen_recorder gsr-ui +KillSignal=SIGINT +Restart=on-failure +RestartSec=5s + +[Install] +WantedBy=default.target \ No newline at end of file diff --git a/flatpak/gpu-screen-recorder-ui.service b/flatpak/gpu-screen-recorder-ui.service deleted file mode 100644 index 3ed7f4b..0000000 --- a/flatpak/gpu-screen-recorder-ui.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=GPU Screen Recorder UI Service - -[Service] -ExecStart=flatpak run com.dec05eba.gpu_screen_recorder gsr-ui -KillSignal=SIGINT -Restart=on-failure -RestartSec=5s - -[Install] -WantedBy=default.target \ No newline at end of file diff --git a/include/Process.hpp b/include/Process.hpp index 9662126..6fd8c31 100644 --- a/include/Process.hpp +++ b/include/Process.hpp @@ -17,9 +17,5 @@ namespace gsr { pid_t exec_program(const char **args, int *read_fd); // Arguments ending with NULL. Returns the exit status of the program or -1 on error int exec_program_get_stdout(const char **args, std::string &result); - // Arguments ending with NULL. Returns the exit status of the program or -1 on error. - // This works the same as |exec_program_get_stdout|, except on flatpak where this runs the program on the - // host machine with flatpak-spawn --host - int exec_program_on_host_get_stdout(const char **args, std::string &result); pid_t pidof(const char *process_name); } \ No newline at end of file diff --git a/src/Process.cpp b/src/Process.cpp index 347c485..2a704de 100644 --- a/src/Process.cpp +++ b/src/Process.cpp @@ -31,15 +31,6 @@ namespace gsr { return true; } - static int count_num_args(const char **args) { - int num_args = 0; - while(*args) { - ++num_args; - ++args; - } - return num_args; - } - bool exec_program_daemonized(const char **args) { /* 1 argument */ if(args[0] == nullptr) @@ -152,30 +143,6 @@ namespace gsr { return exit_status; } - int exec_program_on_host_get_stdout(const char **args, std::string &result) { - if(count_num_args(args) > 64 - 3) { - fprintf(stderr, "Error: too many arguments when trying to launch \"%s\"\n", args[0]); - return -1; - } - - const bool inside_flatpak = getenv("FLATPAK_ID") != NULL; - if(inside_flatpak) { - // Assumes programs wont need more than 64 - 3 args - const char *modified_args[64] = { "flatpak-spawn", "--host", "--" }; - for(int i = 3; i < 64; ++i) { - const char *arg = args[i - 3]; - if(!arg) { - modified_args[i] = nullptr; - break; - } - modified_args[i] = arg; - } - return exec_program_get_stdout(modified_args, result); - } else { - return exec_program_get_stdout(args, result); - } - } - // |output_buffer| should be at least PATH_MAX in size bool read_cmdline_arg0(const char *filepath, char *output_buffer, int output_buffer_size) { output_buffer[0] = '\0'; diff --git a/src/gui/GlobalSettingsPage.cpp b/src/gui/GlobalSettingsPage.cpp index 7e79c16..04c2874 100644 --- a/src/gui/GlobalSettingsPage.cpp +++ b/src/gui/GlobalSettingsPage.cpp @@ -75,9 +75,17 @@ namespace gsr { else return; - const char *args[] = { "systemctl", enable ? "enable" : "disable", "--user", "gpu-screen-recorder-ui", nullptr }; std::string stdout_str; - const int exit_status = exec_program_on_host_get_stdout(args, stdout_str); + int exit_status = 0; + const bool inside_flatpak = getenv("FLATPAK_ID") != NULL; + if(inside_flatpak) { + const char *args[] = { "flatpak-spawn", "--host", "--", "systemctl", enable ? "enable" : "disable", "--user", "gpu-screen-recorder-ui-flatpak", nullptr }; + exit_status = exec_program_get_stdout(args, stdout_str); + } else { + const char *args[] = { "systemctl", enable ? "enable" : "disable", "--user", "gpu-screen-recorder-ui", nullptr }; + exit_status = exec_program_get_stdout(args, stdout_str); + } + if(on_startup_changed) on_startup_changed(enable, exit_status); }; @@ -107,9 +115,17 @@ namespace gsr { else tint_color_radio_button_ptr->set_selected_item(config.main_config.tint_color); - const char *args[] = { "systemctl", "is-enabled", "--quiet", "--user", "gpu-screen-recorder-ui", nullptr }; std::string stdout_str; - const int exit_status = exec_program_on_host_get_stdout(args, stdout_str); + int exit_status = 0; + const bool inside_flatpak = getenv("FLATPAK_ID") != NULL; + if(inside_flatpak) { + const char *args[] = { "flatpak-spawn", "--host", "--", "systemctl", "is-enabled", "--quiet", "--user", "gpu-screen-recorder-ui", nullptr }; + exit_status = exec_program_get_stdout(args, stdout_str); + } else { + const char *args[] = { "systemctl", "is-enabled", "--quiet", "--user", "gpu-screen-recorder-ui", nullptr }; + exit_status = exec_program_get_stdout(args, stdout_str); + } + startup_radio_button_ptr->set_selected_item(exit_status == 0 ? "start_on_system_startup" : "dont_start_on_system_startup", false, false); } -- cgit v1.2.3