Skip to content

Commit

Permalink
Allow CSD to be disabled on non-GNOME Wayland sessions
Browse files Browse the repository at this point in the history
  • Loading branch information
9ary committed Dec 29, 2019
1 parent cc4b3da commit bcc1f12
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 30 deletions.
20 changes: 10 additions & 10 deletions .SRCINFO
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
pkgbase = gtk3-mushrooms
pkgdesc = GTK3 patched for classic desktops like XFCE or MATE. Please see README.
pkgver = 3.24.8
pkgrel = 1
url = https://github.com/TomaszGasior/gtk3-mushrooms
pkgver = 3.24.11
pkgrel = 2
url = https://github.com/krumelmonster/gtk3-mushrooms
arch = x86_64
license = LGPL
makedepends = gobject-introspection
Expand Down Expand Up @@ -37,8 +37,8 @@ pkgbase = gtk3-mushrooms
optdepends = libcanberra: sounds events
optdepends = adwaita-icon-theme: default icon theme
optdepends = cantarell-fonts: default font
provides = gtk3=3.24.8
provides = gtk3-classic=3.24.8
provides = gtk3=3.24.11
provides = gtk3-classic=3.24.11
provides = gtk3-print-backends
conflicts = gtk3
conflicts = gtk3-print-backends
Expand All @@ -62,7 +62,7 @@ pkgbase = gtk3-mushrooms
source = popovers__file-chooser-list.patch
source = popovers__places-sidebar.patch
source = smaller-adwaita.css
source = https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.8.tar.xz
source = https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.11.tar.xz
source = settings.ini::https://git.archlinux.org/svntogit/packages.git/plain/trunk/settings.ini?h=packages/gtk3&id=89cd85e778e9d797f97c66749e5f1d59889b7036
source = gtk-query-immodules-3.0.hook::https://git.archlinux.org/svntogit/packages.git/plain/trunk/gtk-query-immodules-3.0.hook?h=packages/gtk3&id=89cd85e778e9d797f97c66749e5f1d59889b7036
sha256sums = 68b26360764a2ea7e057a2aaa29c6fdfe164b9987866e038d8d0188a025477fb
Expand All @@ -72,20 +72,20 @@ pkgbase = gtk3-mushrooms
sha256sums = be4ddf03a5cce8270e8118eb331b3056972c0bd490faa6e4a4ebe332ec4c2e91
sha256sums = 81138fbaff82e37a83da1c4aa074a6c708e6c50340e0ddeff3fb70e2a0b52e1f
sha256sums = 515ff6df72934aa4294cdb1befd6c542a187fe3b4326cda68a8541dabbe657fd
sha256sums = 63bf214d836f688e628b30d1743ff9e47deb64d0f4bde9f0eb9c352fc00ca8d4
sha256sums = 1508ddc7e682cdaace327ffe2955abe90f903cf7ec923892b85673a37f76a32f
sha256sums = a95f5de37061ea53d0ca1ebd025c521686ee6b5f725e14280ba0e55799f10f7b
sha256sums = aab6047e6bae29eea6b982bf3ce7e69c075ce14e188740060da60589ace92334
sha256sums = 8271342e6a0394f70b6e5a21afb21e2e0b645edf39a0d149d5e8b4d6b062846d
sha256sums = 7b987cc9bd7ca9722bfb881b30b082c0d7409e3cd68592f5e7a1f401d73e7672
sha256sums = 99b12d7af7efc6a014e6afcab1ee82ea0feb0b5a4e9bbd663d1c45354cd34f2b
sha256sums = 7a604d453beb9c425b8ed4a60b5e9435c3f4ee10438490641c0ade448401306a
sha256sums = 37e3278dd33542b706eb9e1db56997b194a7e2f1fd729a8511369387a74b22bd
sha256sums = 64379ca813321b5e8b603dc1557cbc72777031ecbcc1ad9dcc042768f51ae253
sha256sums = acd3babd22add981690728e84a89fb8bb332b7ac746e9db7cdb27c47f1ac0042
sha256sums = c213812e1fafeb5565f7e329c4501195f04adcfe377b88439a6d51d478edc071
sha256sums = 7f3e5da1622e243243ea9b1e487460f608dc375e79d800d2f0d826fd30be68ed
sha256sums = ef4fed3a364db8eb9c15c9ce0e733035722f168dc88b385df2178fc1168ada54
sha256sums = 2de68b575494d0d034accd7cd0ce881f366d5201a48496d8748c43f297836eac
sha256sums = ba93f62e249f2713dbfe6c82de1be4ac655264d6407ed3dc5e05323027520f31
sha256sums = 666962de9b9768fe9ca785b0e2f42c8b9db3868a12fa9b356b167238d70ac799
sha256sums = dba7658d0a2e1bfad8260f5210ca02988f233d1d86edacb95eceed7eca982895
sha256sums = 01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202
sha256sums = de46e5514ff39a7a65e01e485e874775ab1c0ad20b8e94ada43f4a6af1370845

Expand Down
6 changes: 3 additions & 3 deletions PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ __arch_pkg_commit="89cd85e778e9d797f97c66749e5f1d59889b7036"

pkgname=gtk3-mushrooms
pkgver=3.24.11
pkgrel=1
pkgrel=2
pkgdesc="GTK3 patched for classic desktops like XFCE or MATE. Please see README."
url="https://github.com/krumelmonster/gtk3-mushrooms"
conflicts=(gtk3 gtk3-print-backends)
Expand Down Expand Up @@ -69,8 +69,8 @@ sha256sums=('68b26360764a2ea7e057a2aaa29c6fdfe164b9987866e038d8d0188a025477fb'
'be4ddf03a5cce8270e8118eb331b3056972c0bd490faa6e4a4ebe332ec4c2e91'
'81138fbaff82e37a83da1c4aa074a6c708e6c50340e0ddeff3fb70e2a0b52e1f'
'515ff6df72934aa4294cdb1befd6c542a187fe3b4326cda68a8541dabbe657fd'
'63bf214d836f688e628b30d1743ff9e47deb64d0f4bde9f0eb9c352fc00ca8d4'
'1508ddc7e682cdaace327ffe2955abe90f903cf7ec923892b85673a37f76a32f'
'a95f5de37061ea53d0ca1ebd025c521686ee6b5f725e14280ba0e55799f10f7b'
'aab6047e6bae29eea6b982bf3ce7e69c075ce14e188740060da60589ace92334'
'8271342e6a0394f70b6e5a21afb21e2e0b645edf39a0d149d5e8b4d6b062846d'
'7b987cc9bd7ca9722bfb881b30b082c0d7409e3cd68592f5e7a1f401d73e7672'
'99b12d7af7efc6a014e6afcab1ee82ea0feb0b5a4e9bbd663d1c45354cd34f2b'
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This is a set of patches for GTK3 library that makes it better for me and maybe

This package is based on official GTK3 package from Arch Linux. In my version library is compiled without documentation and example applications. Using this package with GNOME desktop is not recommended. It's for classic GTK-based environments like MATE or XFCE.

Client Side Decorations (only on Xorg)
Client Side Decorations (except for GNOME on Wayland)
---

* CSDs are totally disabled by default. All windows are decorated only by window manager. You can enable CSDs by setting `GTK_CSD=0` environment variable (or `GTK_CSD=1` to force CSDs on each GTK3 window).
Expand Down
19 changes: 12 additions & 7 deletions csd__disabled-by-default.patch
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
diff --color -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c
--- ./org/gtk/gtkwindow.c 2018-01-15 14:21:38.000000000 +0100
+++ ./mod/gtk/gtkwindow.c 2018-05-29 10:39:33.013711354 +0200
@@ -4151,10 +4151,18 @@
--- ./org/gtk/gtkwindow.c 2019-09-03 21:53:07.000000000 +0300
+++ ./mod/gtk/gtkwindow.c 2019-12-29 16:24:09.937549137 +0200
@@ -4160,10 +4160,22 @@
{
gtk_style_context_add_class (gtk_widget_get_style_context (widget), "solid-csd");
}

priv->client_decorated = TRUE;
+
+ gboolean is_gnome_wayland = g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") == 0;
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (widget)) && g_getenv("GTK_CSD") == FALSE)
+ is_gnome_wayland = is_gnome_wayland && !GDK_IS_X11_DISPLAY (gtk_widget_get_display (widget));
+#endif
+
+ if (!is_gnome_wayland && g_getenv("GTK_CSD") == FALSE)
+ {
+ gtk_style_context_remove_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_CSD);
+ gtk_style_context_remove_class (gtk_widget_get_style_context (widget), "solid-csd");
+ priv->client_decorated = FALSE;
+ }
+#endif
}

static void
on_titlebar_title_notify (GtkHeaderBar *titlebar,
GParamSpec *pspec,
Only in ./mod/gtk: gtkwindow.c.orig
25 changes: 16 additions & 9 deletions csd__server-side-shadow.patch
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
diff --color -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c
--- ./org/gtk/gtkwindow.c 2018-01-15 14:21:38.000000000 +0100
+++ ./mod/gtk/gtkwindow.c 2018-05-30 01:00:23.948990000 +0200
@@ -4100,10 +4100,12 @@
--- ./org/gtk/gtkwindow.c 2019-09-03 21:53:07.000000000 +0300
+++ ./mod/gtk/gtkwindow.c 2019-12-29 16:29:21.159036758 +0200
@@ -4106,10 +4106,18 @@
GdkVisual *visual;

screen = _gtk_window_get_screen (window);
display = gdk_screen_get_display (screen);


+ gboolean is_gnome_wayland = g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") == 0;
+#ifdef GDK_WINDOWING_X11
+ is_gnome_wayland = is_gnome_wayland && !GDK_IS_X11_DISPLAY (display);
+#endif
+
+ if (!is_gnome_wayland && g_strcmp0 (g_getenv ("GTK_CSD"), "1") != 0)
+ return FALSE;
+
#ifdef GDK_WINDOWING_X11
if (GDK_IS_X11_DISPLAY (display))
{
+ if (g_strcmp0 (g_getenv ("GTK_CSD"), "1") != 0)
+ return FALSE;
if (!gdk_screen_is_composited (screen))
return FALSE;

if (!gdk_x11_screen_supports_net_wm_hint (screen, gdk_atom_intern_static_string ("_GTK_FRAME_EXTENTS")))
return FALSE;
Only in ./mod/gtk: gtkwindow.c.orig

0 comments on commit bcc1f12

Please sign in to comment.