From 759d8448986e982fc09c61572ff09a5df4a2b6dc Mon Sep 17 00:00:00 2001 From: pierrelasse <76223390+pierrelasse@users.noreply.github.com> Date: Thu, 15 Jan 2026 18:05:02 +0000 Subject: [PATCH 1/3] linux: don't use GNOME's custom title bar --- .../templates/linux/my_application.cc | 31 ++----------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/scripts/app_config/templates/linux/my_application.cc b/scripts/app_config/templates/linux/my_application.cc index 58584f452..9a9266bea 100644 --- a/scripts/app_config/templates/linux/my_application.cc +++ b/scripts/app_config/templates/linux/my_application.cc @@ -26,34 +26,7 @@ static void my_application_activate(GApplication* application) { GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - const char* gtk_csd_env_var = getenv("GTK_CSD"); - gboolean use_gtk_csd = !gtk_csd_env_var || strcmp(gtk_csd_env_var, "0") != 0; - if (use_header_bar && use_gtk_csd) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "PlaceHolderName"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "PlaceHolderName"); - } + gtk_window_set_title(window, "Stack Wallet"); gtk_window_set_default_size(window, 1220, 500); gtk_widget_show(GTK_WIDGET(window)); @@ -141,7 +114,7 @@ MyApplication* my_application_new() { g_set_prgname(APPLICATION_ID); return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, + "stack_wallet", APPLICATION_ID, "flags", G_APPLICATION_NON_UNIQUE, nullptr)); } From c715d97a22041ec515719bedff9028d9d03a5fc4 Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 7 May 2026 14:18:34 -0500 Subject: [PATCH 2/3] fix: restore template placeholder and GApplication property name --- scripts/app_config/templates/linux/my_application.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/scripts/app_config/templates/linux/my_application.cc b/scripts/app_config/templates/linux/my_application.cc index 9a9266bea..7ee25a953 100644 --- a/scripts/app_config/templates/linux/my_application.cc +++ b/scripts/app_config/templates/linux/my_application.cc @@ -1,9 +1,6 @@ #include "my_application.h" #include -#ifdef GDK_WINDOWING_X11 -#include -#endif #include "flutter/generated_plugin_registrant.h" @@ -26,7 +23,7 @@ static void my_application_activate(GApplication* application) { GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - gtk_window_set_title(window, "Stack Wallet"); + gtk_window_set_title(window, "PlaceHolderName"); gtk_window_set_default_size(window, 1220, 500); gtk_widget_show(GTK_WIDGET(window)); @@ -114,7 +111,7 @@ MyApplication* my_application_new() { g_set_prgname(APPLICATION_ID); return MY_APPLICATION(g_object_new(my_application_get_type(), - "stack_wallet", APPLICATION_ID, + "application-id", APPLICATION_ID, "flags", G_APPLICATION_NON_UNIQUE, nullptr)); } From dd156702e0ced9f8a2bd94234218660be4dd74bb Mon Sep 17 00:00:00 2001 From: sneurlax Date: Thu, 7 May 2026 14:31:32 -0500 Subject: [PATCH 3/3] feat: keep GTK_CSD env var as opt-in for GNOME header bar preserves the user-facing escape hatch added in #1211 by flipping it from opt-out to opt-in: the traditional title bar is now the default, and GTK_CSD=1 brings back the GNOME-style header bar without rebuilding. --- .../app_config/templates/linux/my_application.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/app_config/templates/linux/my_application.cc b/scripts/app_config/templates/linux/my_application.cc index 7ee25a953..0954bbc89 100644 --- a/scripts/app_config/templates/linux/my_application.cc +++ b/scripts/app_config/templates/linux/my_application.cc @@ -23,7 +23,19 @@ static void my_application_activate(GApplication* application) { GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - gtk_window_set_title(window, "PlaceHolderName"); + // Use a traditional title bar by default for best compatibility across + // desktop environments (KDE, XFCE, tiling WMs, etc.). + // Set GTK_CSD=1 to use a GNOME-style header bar instead. + const char* gtk_csd_env_var = getenv("GTK_CSD"); + if (gtk_csd_env_var && strcmp(gtk_csd_env_var, "1") == 0) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "PlaceHolderName"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "PlaceHolderName"); + } gtk_window_set_default_size(window, 1220, 500); gtk_widget_show(GTK_WIDGET(window));