Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gpu-screen-recorder-gtk for openSUSE:Factory checked in at 2025-01-27 20:54:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gpu-screen-recorder-gtk (Old) and /work/SRC/openSUSE:Factory/.gpu-screen-recorder-gtk.new.2316 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpu-screen-recorder-gtk" Mon Jan 27 20:54:53 2025 rev:14 rq:1240414 version:20250126 Changes: -------- --- /work/SRC/openSUSE:Factory/gpu-screen-recorder-gtk/gpu-screen-recorder-gtk.changes 2025-01-21 21:11:01.304331163 +0100 +++ /work/SRC/openSUSE:Factory/.gpu-screen-recorder-gtk.new.2316/gpu-screen-recorder-gtk.changes 2025-01-27 20:55:34.931445049 +0100 @@ -1,0 +2,10 @@ +Sun Jan 26 21:54:57 UTC 2025 - mantari...@pm.me + +- Update to version 20250126: + * Fix hotkeys not working on some keyboards (usually laptops) + * Make hotkeys configurable, fix hotkey keyboard layout issues + and add option to save replay with (ps4) controller + * Make notification smoother on wayland and other wayland fixes + * Improve startup time (fixes key getting grabbed for too long) + +------------------------------------------------------------------- Old: ---- gpu-screen-recorder-gtk-20250118.tar.zst New: ---- gpu-screen-recorder-gtk-20250126.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpu-screen-recorder-gtk.spec ++++++ --- /var/tmp/diff_new_pack.BJQR8T/_old 2025-01-27 20:55:35.687476209 +0100 +++ /var/tmp/diff_new_pack.BJQR8T/_new 2025-01-27 20:55:35.691476374 +0100 @@ -19,7 +19,7 @@ %bcond_with test %define appid com.dec05eba.gpu_screen_recorder Name: gpu-screen-recorder-gtk -Version: 20250118 +Version: 20250126 Release: 0 Summary: GTK frontend for GPU Screen Recorder License: GPL-3.0-only ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.BJQR8T/_old 2025-01-27 20:55:35.723477693 +0100 +++ /var/tmp/diff_new_pack.BJQR8T/_new 2025-01-27 20:55:35.727477858 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://repo.dec05eba.com/gpu-screen-recorder-gtk.git</param> - <param name="changesrevision">04aa90e45bcf8d7689291dfc8300b4a1ddcb7b40</param></service></servicedata> + <param name="changesrevision">219b6f0c6983e7e98b17ab0da3ed2729181fce8d</param></service></servicedata> (No newline at EOF) ++++++ gpu-screen-recorder-gtk-20250118.tar.zst -> gpu-screen-recorder-gtk-20250126.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250118/com.dec05eba.gpu_screen_recorder.appdata.xml new/gpu-screen-recorder-gtk-20250126/com.dec05eba.gpu_screen_recorder.appdata.xml --- old/gpu-screen-recorder-gtk-20250118/com.dec05eba.gpu_screen_recorder.appdata.xml 2025-01-18 22:22:07.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250126/com.dec05eba.gpu_screen_recorder.appdata.xml 2025-01-26 11:54:55.000000000 +0100 @@ -93,6 +93,29 @@ </screenshots> <releases> + <release version="5.1.2" date="2025-01-26"> + <description> + <ul> + <li>Fix hotkeys not working on some keyboards (usually laptops)</li> + </ul> + </description> + </release> + <release version="5.1.1" date="2025-01-25"> + <description> + <ul> + <li>Fix microphone volume being low when merging audio devices (don't normalize audio)</li> + </ul> + </description> + </release> + <release version="5.1.0" date="2025-01-24"> + <description> + <ul> + <li>Make hotkeys configurable, fix hotkey keyboard layout issues and add option to save replay with (ps4) controller</li> + <li>Make notification smoother on wayland and other wayland fixes</li> + <li>Improve startup time (fixes key getting grabbed for too long)</li> + </ul> + </description> + </release> <release version="5.0.10" date="2025-01-18"> <description> <ul> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250118/meson.build new/gpu-screen-recorder-gtk-20250126/meson.build --- old/gpu-screen-recorder-gtk-20250118/meson.build 2025-01-18 22:22:07.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250126/meson.build 2025-01-26 11:54:55.000000000 +0100 @@ -1,4 +1,4 @@ -project('gpu-screen-recorder-gtk', ['c', 'cpp'], version : '5.0.10', default_options : ['warning_level=2']) +project('gpu-screen-recorder-gtk', ['c', 'cpp'], version : '5.1.2', default_options : ['warning_level=2']) add_project_arguments('-Wshadow', language : ['c', 'cpp']) if get_option('buildtype') == 'debug' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250118/project.conf new/gpu-screen-recorder-gtk-20250126/project.conf --- old/gpu-screen-recorder-gtk-20250118/project.conf 2025-01-18 22:22:07.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250126/project.conf 2025-01-26 11:54:55.000000000 +0100 @@ -1,7 +1,7 @@ [package] name = "gpu-screen-recorder-gtk" type = "executable" -version = "5.0.10" +version = "5.1.2" platforms = ["posix"] [config] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250118/src/config.hpp new/gpu-screen-recorder-gtk-20250126/src/config.hpp --- old/gpu-screen-recorder-gtk-20250118/src/config.hpp 2025-01-18 22:22:07.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250126/src/config.hpp 2025-01-26 11:54:55.000000000 +0100 @@ -50,6 +50,7 @@ bool restore_portal_session = true; bool use_new_ui = false; int32_t installed_gsr_global_hotkeys_version = 0; + bool kbd_mouse_update_installed = false; }; struct YoutubeStreamConfig { @@ -338,6 +339,7 @@ {"main.restore_portal_session", {CONFIG_TYPE_BOOL, &config.main_config.restore_portal_session}}, {"main.use_new_ui", {CONFIG_TYPE_BOOL, &config.main_config.use_new_ui}}, {"main.installed_gsr_global_hotkeys_version", {CONFIG_TYPE_I32, &config.main_config.installed_gsr_global_hotkeys_version}}, + {"main.kbd_mouse_update_installed", {CONFIG_TYPE_BOOL, &config.main_config.kbd_mouse_update_installed}}, {"streaming.service", {CONFIG_TYPE_STRING, &config.streaming_config.streaming_service}}, {"streaming.youtube.key", {CONFIG_TYPE_STRING, &config.streaming_config.youtube.stream_key}}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpu-screen-recorder-gtk-20250118/src/main.cpp new/gpu-screen-recorder-gtk-20250126/src/main.cpp --- old/gpu-screen-recorder-gtk-20250118/src/main.cpp 2025-01-18 22:22:07.000000000 +0100 +++ new/gpu-screen-recorder-gtk-20250126/src/main.cpp 2025-01-26 11:54:55.000000000 +0100 @@ -20,7 +20,7 @@ #include <vector> #include <libayatana-appindicator/app-indicator.h> -#define GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION 3 +#define GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION 4 #ifndef GSR_VERSION #define GSR_VERSION "unknown" @@ -2734,6 +2734,40 @@ gtk_widget_destroy(dialog); } +static bool kms_server_proxy_setup_gsr_ui(const char *msg) { + GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", msg); + const gint response = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + + switch(response) { + case GTK_RESPONSE_YES: + break; + case GTK_RESPONSE_NO: + default: { + config.main_config.use_new_ui = false; + save_config(config); + return false; + } + } + + const int exit_code = system("flatpak-spawn --host -- /var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/bin/kms-server-proxy setup-gsr-ui"); + if(exit_code != 0) { + GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Failed to setup the new UI. You either cancelled the installation or you don't have pkexec installed and a polkit agent running."); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + + config.main_config.use_new_ui = false; + save_configs(); + return false; + } + + config.main_config.use_new_ui = true; + config.main_config.installed_gsr_global_hotkeys_version = GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION; + config.main_config.kbd_mouse_update_installed = true; + save_config(config); + return true; +} + static gboolean on_click_switch_to_new_ui(GtkButton*, gpointer) { if(!dpy) { GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, @@ -2765,7 +2799,6 @@ GtkWidget *dialog = gtk_message_dialog_new_with_markup(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "You are about to try out the new UI, which is a ShadowPlay-like fullscreen UI. It runs in the background and you have to show/hide it by pressing Left Alt+Z.\n" "This new UI is still experimental and you may experience issues depending on your system. You can switch back to the old UI at any time by opening the UI and clicking on the settings button and clicking on the \"Go back to the old UI\" button.\n" - "Note that at the moment the flatpak version of the software assumes you are using a keyboard with qwerty layout. If you are using another keyboard layout then instead of pressing Left Alt+Z you have to press the key that has been switched the with Z key.\n" "\n" "This new UI comes with new features, such as being able to automatically launch it on system startup by enabling it in settings, and hotkey support on any Wayland compositor.\n" "\n" @@ -2784,39 +2817,19 @@ return true; } - dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, + const bool kms_server_setup_finished = kms_server_proxy_setup_gsr_ui( "The new UI needs root privileges to finish setup to make global hotkeys and recording work on any system. The new UI will also be added to system startup.\n" "\n" "Are you sure you want to continue?"); - response = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - switch(response) { - case GTK_RESPONSE_YES: - break; - case GTK_RESPONSE_NO: - default: - return true; - } - - const int exit_code = system("flatpak-spawn --host -- /var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/bin/kms-server-proxy setup-gsr-ui"); - if(exit_code != 0) { - GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, - "Failed to setup the new UI. You either cancelled the installation or you don't have pkexec installed and a polkit agent running."); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); + if(!kms_server_setup_finished) return true; - } - - config.main_config.use_new_ui = true; - config.main_config.installed_gsr_global_hotkeys_version = GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION; - save_configs(); bool service_install_successful = (system( "data_home=$(flatpak-spawn --host -- /bin/sh -c 'echo \"${XDG_DATA_HOME:-$HOME/.local/share}\"') && " "flatpak-spawn --host -- install -Dm644 /var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/share/gpu-screen-recorder/gpu-screen-recorder-ui.service \"$data_home/systemd/user/gpu-screen-recorder-ui.service\"") == 0); service_install_successful &= (system("flatpak-spawn --host -- systemctl --user daemon-reload") == 0); - service_install_successful &= (system("flatpak-spawn --host -- systemctl enable --now --user gpu-screen-recorder-ui") == 0); + service_install_successful &= (system("flatpak-spawn --host -- systemctl enable --user gpu-screen-recorder-ui") == 0); + service_install_successful &= (system("flatpak-spawn --host -- systemctl start --user gpu-screen-recorder-ui") == 0); if(!service_install_successful) { GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "Failed to add GPU Screen Recorder to system startup. If you want the new UI to start on system startup then you need to add this command to system startup:\n" @@ -4452,39 +4465,6 @@ } } -static bool kms_server_proxy_setup_gsr_ui(const char *msg) { - GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", msg); - const gint response = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - switch(response) { - case GTK_RESPONSE_YES: - break; - case GTK_RESPONSE_NO: - default: { - config.main_config.use_new_ui = false; - save_config(config); - return false; - } - } - - const int exit_code = system("flatpak-spawn --host -- /var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/bin/kms-server-proxy setup-gsr-ui"); - if(exit_code != 0) { - GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Failed to setup the new UI. You either cancelled the installation or you don't have pkexec installed and a polkit agent running."); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - - config.main_config.use_new_ui = false; - save_configs(); - return false; - } - - config.main_config.use_new_ui = true; - config.main_config.installed_gsr_global_hotkeys_version = GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION; - save_config(config); - return true; -} - static bool is_gsr_global_hotkeys_installed() { const char *user_homepath = getenv("HOME"); if(!user_homepath) @@ -4522,6 +4502,28 @@ g_object_unref(app); } +// TODO: Remove this once GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION is updated to 5 +static bool has_input_device_with_keyboard_and_mouse() { + FILE *f = fopen("/proc/bus/input/devices", "rb"); + if(!f) + return false; + + bool current_device_is_virtual = false; + bool kbd_and_mouse = false; + char line[1024]; + while(fgets(line, sizeof(line), f)) { + if(strncmp(line, "S:", 2) == 0) { + current_device_is_virtual = strstr(line, "/virtual/") != nullptr; + } else if(!current_device_is_virtual && strncmp(line, "H:", 2) == 0 && strstr(line, "kbd") && strstr(line, "mouse")) { + kbd_and_mouse = true; + break; + } + } + + fclose(f); + return kbd_and_mouse; +} + static void startup_new_ui(bool launched_by_daemon) { if(!dpy) { if(launched_by_daemon) { @@ -4534,7 +4536,7 @@ gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); }); - + config.main_config.use_new_ui = false; save_config(config); return; @@ -4553,11 +4555,12 @@ return; } - if(config.main_config.installed_gsr_global_hotkeys_version != GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION) { + if(config.main_config.installed_gsr_global_hotkeys_version != GSR_CURRENT_GLOBAL_HOTKEYS_CODE_VERSION || (!config.main_config.kbd_mouse_update_installed && has_input_device_with_keyboard_and_mouse())) { bool finished = false; start_gtk_run_handler([&finished]() { finished = kms_server_proxy_setup_gsr_ui( "An update is available. The new GPU Screen Recorder UI needs root privileges to finish update to make global hotkeys and recording work on any system.\n" + "You will need to restart the application to apply the update.\n" "\n" "Are you sure you want to continue?"); });