aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gsr-config-page.c49
-rw-r--r--src/gsr-window.c43
-rw-r--r--src/main.c8
3 files changed, 48 insertions, 52 deletions
diff --git a/src/gsr-config-page.c b/src/gsr-config-page.c
index b1c325c..9beb39d 100644
--- a/src/gsr-config-page.c
+++ b/src/gsr-config-page.c
@@ -200,21 +200,22 @@ build_capture_group(GsrConfigPage *self)
const GsrInfo *info = self->info;
- /* "Window" */
- if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND)
- gtk_string_list_append(self->record_area_model, "Window (Wayland N/A)");
- else
+#ifdef HAVE_X11
+ /* "Window" — X11 only */
+ if (info->system_info.display_server == GSR_DISPLAY_SERVER_X11) {
gtk_string_list_append(self->record_area_model, "Window");
- ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "window");
+ ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "window");
+ }
- /* "Follow focused window" */
- if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND)
- gtk_string_list_append(self->record_area_model, "Focused window (Wayland N/A)");
- else
+ /* "Follow focused window" — X11 only */
+ if (info->system_info.display_server == GSR_DISPLAY_SERVER_X11) {
gtk_string_list_append(self->record_area_model, "Focused window");
- ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "focused");
+ ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "focused");
+ }
+#endif
/* Monitors */
+ int first_monitor_idx = self->n_record_area_ids;
for (int i = 0; i < info->supported_capture_options.n_monitors; i++) {
const GsrMonitor *m = &info->supported_capture_options.monitors[i];
char *label;
@@ -227,28 +228,24 @@ build_capture_group(GsrConfigPage *self)
g_free(label);
}
- /* Desktop portal */
- if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND) {
- if (info->supported_capture_options.portal)
- gtk_string_list_append(self->record_area_model, "Desktop portal (no HDR)");
- else
- gtk_string_list_append(self->record_area_model, "Desktop portal (N/A)");
- } else {
- gtk_string_list_append(self->record_area_model, "Desktop portal (X11 N/A)");
+ /* Desktop portal — only on Wayland with portal support */
+ if (info->system_info.display_server == GSR_DISPLAY_SERVER_WAYLAND
+ && info->supported_capture_options.portal) {
+ gtk_string_list_append(self->record_area_model, "Desktop portal (no HDR)");
+ ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "portal");
}
- ids_array_append(&self->record_area_ids, &self->n_record_area_ids, &cap, "portal");
self->record_area_row = ADW_COMBO_ROW(adw_combo_row_new());
adw_preferences_row_set_title(ADW_PREFERENCES_ROW(self->record_area_row), "Record area");
+
+ /* Default selection: first monitor if available, else first entry */
+ guint default_idx = (info->supported_capture_options.n_monitors > 0)
+ ? (guint)first_monitor_idx : 0;
+ adw_combo_row_set_selected(self->record_area_row, default_idx);
+
adw_combo_row_set_model(self->record_area_row,
G_LIST_MODEL(self->record_area_model));
- adw_combo_row_set_use_subtitle(self->record_area_row, TRUE);
-
- /* Default selection: first monitor if available (index 2), else window (index 0) */
- if (info->supported_capture_options.n_monitors > 0)
- adw_combo_row_set_selected(self->record_area_row, 2);
- else
- adw_combo_row_set_selected(self->record_area_row, 0);
+ adw_combo_row_set_selected(self->record_area_row, default_idx);
g_signal_connect(self->record_area_row, "notify::selected",
G_CALLBACK(on_record_area_changed), self);
diff --git a/src/gsr-window.c b/src/gsr-window.c
index d224aba..e2c1ab7 100644
--- a/src/gsr-window.c
+++ b/src/gsr-window.c
@@ -526,23 +526,22 @@ handle_child_death(GsrWindow *self, int exit_status)
/* Canceled by user — silent */
} else if (exit_status == 0) {
/* Success */
- gboolean notify = gsr_config_page_get_notify_stopped(self->config_page);
- if (notify) {
- if (mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) {
+ if (mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) {
+ if (gsr_config_page_get_notify_saved(self->config_page)) {
char *msg = g_strdup_printf("Recording saved to %s",
self->record_filename);
send_notification(self, "GPU Screen Recorder", msg,
G_NOTIFICATION_PRIORITY_NORMAL);
g_free(msg);
- } else {
- const char *mode_str =
- mode == GSR_ACTIVE_MODE_STREAM ? "streaming" :
- mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "recording";
- char *msg = g_strdup_printf("Stopped %s", mode_str);
- send_notification(self, "GPU Screen Recorder", msg,
- G_NOTIFICATION_PRIORITY_NORMAL);
- g_free(msg);
}
+ } else if (gsr_config_page_get_notify_stopped(self->config_page)) {
+ const char *mode_str =
+ mode == GSR_ACTIVE_MODE_STREAM ? "streaming" :
+ mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "recording";
+ char *msg = g_strdup_printf("Stopped %s", mode_str);
+ send_notification(self, "GPU Screen Recorder", msg,
+ G_NOTIFICATION_PRIORITY_NORMAL);
+ g_free(msg);
}
} else {
/* Error — always notify regardless of user prefs */
@@ -1077,23 +1076,23 @@ gsr_window_stop_process(GsrWindow *self, gboolean *already_dead)
self->active_mode = GSR_ACTIVE_MODE_NONE;
/* Show stop notification (respecting user prefs) */
- if (gsr_config_page_get_notify_stopped(self->config_page)) {
- if (success && mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) {
+ if (success && mode == GSR_ACTIVE_MODE_RECORD && self->record_filename) {
+ if (gsr_config_page_get_notify_saved(self->config_page)) {
char *msg = g_strdup_printf("Recording saved to %s",
self->record_filename);
send_notification(self, "GPU Screen Recorder", msg,
G_NOTIFICATION_PRIORITY_NORMAL);
g_free(msg);
- } else {
- const char *mode_str =
- mode == GSR_ACTIVE_MODE_STREAM ? "streaming" :
- mode == GSR_ACTIVE_MODE_RECORD ? "recording" :
- mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "unknown";
- char *msg = g_strdup_printf("Stopped %s", mode_str);
- send_notification(self, "GPU Screen Recorder", msg,
- G_NOTIFICATION_PRIORITY_NORMAL);
- g_free(msg);
}
+ } else if (gsr_config_page_get_notify_stopped(self->config_page)) {
+ const char *mode_str =
+ mode == GSR_ACTIVE_MODE_STREAM ? "streaming" :
+ mode == GSR_ACTIVE_MODE_RECORD ? "recording" :
+ mode == GSR_ACTIVE_MODE_REPLAY ? "replay" : "unknown";
+ char *msg = g_strdup_printf("Stopped %s", mode_str);
+ send_notification(self, "GPU Screen Recorder", msg,
+ G_NOTIFICATION_PRIORITY_NORMAL);
+ g_free(msg);
}
return success;
diff --git a/src/main.c b/src/main.c
index cd90ea8..02487c1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -17,7 +17,7 @@ on_about_action(GSimpleAction *action,
AdwAboutDialog *about = ADW_ABOUT_DIALOG(adw_about_dialog_new());
adw_about_dialog_set_application_name(about, "GPU Screen Recorder");
adw_about_dialog_set_version(about, GSR_VERSION);
- adw_about_dialog_set_developer_name(about, "Trung Lê");
+ adw_about_dialog_set_developer_name(about, "dec05eba");
adw_about_dialog_set_application_icon(about,
"com.dec05eba.gpu_screen_recorder");
adw_about_dialog_set_license_type(about, GTK_LICENSE_GPL_3_0);
@@ -26,11 +26,11 @@ on_about_action(GSimpleAction *action,
adw_about_dialog_set_issue_url(about,
"https://github.com/runlevel5/gpu-screen-recorder-adwaita/issues");
- const char *developers[] = { "Trung Lê", NULL };
+ const char *developers[] = { "dec05eba", NULL };
adw_about_dialog_set_developers(about, developers);
- adw_about_dialog_add_credit_section(about, "Original GTK3 Version",
- (const char *[]){ "dec05eba", NULL });
+ adw_about_dialog_add_credit_section(about, "Adwaita Port",
+ (const char *[]){ "Trung Lê", NULL });
adw_dialog_present(ADW_DIALOG(about), GTK_WIDGET(win));
}