aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2025-04-09 18:27:31 +0200
committerdec05eba <dec05eba@protonmail.com>2025-04-09 18:27:45 +0200
commit9ada8caabc75c32296bcea1e83580dde32dd5a37 (patch)
treef77e1af290beda435516b94082e2ffd6c2ae003e /src
parent746ce51e65232bfb6fc33a17a1450a90e020c341 (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.cpp20
-rw-r--r--src/main.cpp3
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;