diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-04-09 18:27:31 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-04-09 18:27:45 +0200 |
commit | 9ada8caabc75c32296bcea1e83580dde32dd5a37 (patch) | |
tree | f77e1af290beda435516b94082e2ffd6c2ae003e /src | |
parent | 746ce51e65232bfb6fc33a17a1450a90e020c341 (diff) |
Add emergency exit buttons, (left) ctrl+shift+alt+esc to close gpu screen recorder and remove it from system startup
Diffstat (limited to 'src')
-rw-r--r-- | src/Overlay.cpp | 20 | ||||
-rw-r--r-- | src/main.cpp | 3 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/Overlay.cpp b/src/Overlay.cpp index 2e79d31..2a4ca81 100644 --- a/src/Overlay.cpp +++ b/src/Overlay.cpp @@ -338,6 +338,13 @@ namespace gsr { fprintf(stderr, "pressed %s\n", id.c_str()); overlay->take_screenshot_region(); }); + + global_hotkeys->bind_key_press( + config_hotkey_to_hotkey(ConfigHotkey{ mgl::Keyboard::Key::Escape, HOTKEY_MOD_LCTRL | HOTKEY_MOD_LSHIFT | HOTKEY_MOD_LALT }), + "exit", [overlay](const std::string &id) { + fprintf(stderr, "pressed %s\n", id.c_str()); + overlay->go_back_to_old_ui(); + }); } static std::unique_ptr<GlobalHotkeysLinux> register_linux_hotkeys(Overlay *overlay, GlobalHotkeysLinux::GrabType grab_type) { @@ -1468,6 +1475,19 @@ namespace gsr { do_exit = true; } + void Overlay::go_back_to_old_ui() { + const bool inside_flatpak = getenv("FLATPAK_ID") != NULL; + if(inside_flatpak) + exit_reason = "back-to-old-ui"; + else + exit_reason = "exit"; + + const char *args[] = { "systemctl", "disable", "--user", "gpu-screen-recorder-ui", nullptr }; + std::string stdout_str; + exec_program_on_host_get_stdout(args, stdout_str); + exit(); + } + const Config& Overlay::get_config() const { return config; } diff --git a/src/main.cpp b/src/main.cpp index 7c10a6e..be2f6d0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -303,9 +303,6 @@ int main(int argc, char **argv) { if(exit_reason == "back-to-old-ui") { const char *args[] = { "gpu-screen-recorder-gtk", "use-old-ui", nullptr }; execvp(args[0], (char* const*)args); - } else if(exit_reason == "restart") { - const char *args[] = { "gsr-ui", "launch-show", nullptr }; - execvp(args[0], (char* const*)args); } return 0; |