fix: linux titlebar height on non-GNOME DEs

This commit is contained in:
edde746
2026-03-21 15:57:03 +01:00
parent 0539c1d869
commit e8c02d04ae
+5 -20
View File
@@ -1,10 +1,6 @@
#include "my_application.h"
#include <flutter_linux/flutter_linux.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include "flutter/generated_plugin_registrant.h"
#include "mpv/mpv_plugin.h"
@@ -22,23 +18,12 @@ 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;
}
// Default to traditional titlebar. Set GTK_CSD=1 to use a header bar.
gboolean use_header_bar = FALSE;
const gchar* gtk_csd = g_getenv("GTK_CSD");
if (gtk_csd != nullptr && g_strcmp0(gtk_csd, "1") == 0) {
use_header_bar = TRUE;
}
#endif
if (use_header_bar) {
GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
gtk_widget_show(GTK_WIDGET(header_bar));