diff options
author | mintsuki | 2022-06-01 08:14:20 +0200 |
---|---|---|
committer | mintsuki | 2022-06-01 08:14:20 +0200 |
commit | 861ca1af8c57b067b0e49b83dcd7142e3c436f93 (patch) | |
tree | 8ddabccfad07c0aed0f62c79cb63bd278552d50f | |
download | aur-861ca1af8c57b067b0e49b83dcd7142e3c436f93.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 25 | ||||
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | PKGBUILD | 50 | ||||
-rw-r--r-- | client-Handle-removal-of-GTK_FRAME_EXTENTS.patch | 53 | ||||
-rw-r--r-- | gaps.patch | 99 |
5 files changed, 233 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..b9c20448f6c2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,25 @@ +pkgbase = xfwm4-gaps + pkgdesc = Xfce's window manager - now with extra gaps + pkgver = 4.16.1 + pkgrel = 1 + url = https://docs.xfce.org/xfce/xfwm4/start + arch = x86_64 + groups = xfce4 + license = GPL2 + makedepends = intltool + depends = libxfce4ui + depends = xfconf + depends = libwnck3 + depends = libepoxy + depends = libxpresent + depends = hicolor-icon-theme + provides = xfwm4 + conflicts = xfwm4 + source = https://archive.xfce.org/src/xfce/xfwm4/4.16/xfwm4-4.16.1.tar.bz2 + source = client-Handle-removal-of-GTK_FRAME_EXTENTS.patch + source = gaps.patch + sha256sums = b5b24ca04bd73c642db0a4b4df81d262381d758f01b51108257d48b391b8718c + sha256sums = SKIP + sha256sums = SKIP + +pkgname = xfwm4-gaps diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..7c83da3e722f --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +* +!PKGBUILD +!.SRCINFO +!client-Handle-removal-of-GTK_FRAME_EXTENTS.patch +!gaps.patch +!.gitignore diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..a6ea92ec3362 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=xfwm4-gaps +pkgver=4.16.1 +pkgrel=1 +pkgdesc="Xfce's window manager - now with extra gaps" +arch=('x86_64') +url="https://docs.xfce.org/xfce/xfwm4/start" +license=('GPL2') +groups=('xfce4') +depends=('libxfce4ui' 'xfconf' 'libwnck3' 'libepoxy' 'libxpresent' + 'hicolor-icon-theme') +makedepends=('intltool') +provides=('xfwm4') +conflicts=('xfwm4') +source=(https://archive.xfce.org/src/xfce/xfwm4/${pkgver%.*}/xfwm4-$pkgver.tar.bz2 + client-Handle-removal-of-GTK_FRAME_EXTENTS.patch + gaps.patch) +sha256sums=('b5b24ca04bd73c642db0a4b4df81d262381d758f01b51108257d48b391b8718c' + SKIP + SKIP) + +prepare() { + cd "$srcdir/xfwm4-$pkgver" + # https://gitlab.xfce.org/xfce/xfwm4/-/issues/603 + patch -Np1 -i ../client-Handle-removal-of-GTK_FRAME_EXTENTS.patch + patch -Np1 -i ../gaps.patch +} + +build() { + cd "$srcdir/xfwm4-$pkgver" + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib \ + --localstatedir=/var \ + --disable-static \ + --enable-startup-notification \ + --enable-randr \ + --enable-compositor \ + --enable-xsync \ + --disable-debug + make +} + +package() { + cd "$srcdir/xfwm4-$pkgver" + make DESTDIR="$pkgdir" install +} + +# vim:set ts=2 sw=2 et: diff --git a/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch b/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch new file mode 100644 index 000000000000..c0d5b69817ac --- /dev/null +++ b/client-Handle-removal-of-GTK_FRAME_EXTENTS.patch @@ -0,0 +1,53 @@ +From 488288f6e35d5d3dc077e87fe2ed83129692f62e Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan <fourdan@xfce.org> +Date: Sun, 14 Nov 2021 11:00:55 +0100 +Subject: [PATCH] client: Handle removal of GTK_FRAME_EXTENTS + +Chromium and GOOGLE Chrome have now support for GTK_FRAME_EXTENTS. + +When maximizing a window, Chromium/Chrome simply removes the property +on its toplevel rather than setting all values to 0. + +xfwm4 would simply ignore the property change because it could not read +the values and therefore apply the old, wrong values. + +Fix xfwm4 to handle the property removal like an actual property change +to 0. + +Signed-off-by: Olivier Fourdan <fourdan@xfce.org> +Closes: https://gitlab.xfce.org/xfce/xfwm4/-/issues/603 +--- + src/client.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/client.c b/src/client.c +index 4e6affcfd..310cf90aa 100644 +--- a/src/client.c ++++ b/src/client.c +@@ -4200,6 +4200,7 @@ clientGetGtkFrameExtents (Client * c) + DisplayInfo *display_info; + gboolean value_changed = FALSE; + gulong *extents; ++ unsigned long old_value; + int nitems; + int i; + +@@ -4209,6 +4210,8 @@ clientGetGtkFrameExtents (Client * c) + screen_info = c->screen_info; + display_info = screen_info->display_info; + extents = NULL; ++ ++ old_value = FLAG_TEST (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS); + FLAG_UNSET (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS); + + if (getCardinalList (display_info, c->window, GTK_FRAME_EXTENTS, &extents, &nitems)) +@@ -4232,6 +4235,9 @@ clientGetGtkFrameExtents (Client * c) + XFree (extents); + } + ++ /* Adding or removing the property also counts as a change */ ++ value_changed |= (old_value ^ FLAG_TEST (c->flags, CLIENT_FLAG_HAS_FRAME_EXTENTS)); ++ + return value_changed; + } + diff --git a/gaps.patch b/gaps.patch new file mode 100644 index 000000000000..744debb35964 --- /dev/null +++ b/gaps.patch @@ -0,0 +1,99 @@ +diff --git a/src/client.c b/src/client.c +index 3923dd98b..009f3dd58 100644 +--- a/src/client.c ++++ b/src/client.c +@@ -3296,6 +3296,9 @@ clientNewMaxState (Client *c, XWindowChanges *wc, int mode) + } + } + ++// @gaps@ ++#define GAPS_SIZE 25 ++ + static gboolean + clientNewTileSize (Client *c, XWindowChanges *wc, GdkRectangle *rect, tilePositionType tile) + { +@@ -3331,36 +3334,72 @@ clientNewTileSize (Client *c, XWindowChanges *wc, GdkRectangle *rect, tilePositi + wc->y = full_y + frameExtentTop (c); + wc->width = full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE; ++ wc->y += GAPS_SIZE; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE * 2; ++ + break; + case TILE_RIGHT: + wc->x = full_x + full_w / 2 + frameExtentLeft (c); + wc->y = full_y + frameExtentTop (c); + wc->width = full_w - full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE / 2; ++ wc->y += GAPS_SIZE; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE * 2; ++ + break; + case TILE_DOWN_LEFT: + wc->x = full_x + frameExtentLeft (c); + wc->y = full_y + full_h / 2 + frameExtentTop (c); + wc->width = full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h - full_h / 2 - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE; ++ wc->y += GAPS_SIZE / 2; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE + (GAPS_SIZE / 2); ++ + break; + case TILE_DOWN_RIGHT: + wc->x = full_x + full_w /2 + frameExtentLeft (c); + wc->y = full_y + full_h / 2 + frameExtentTop (c); + wc->width = full_w - full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h - full_h / 2 - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE / 2; ++ wc->y += GAPS_SIZE / 2; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE + (GAPS_SIZE / 2); ++ + break; + case TILE_UP_LEFT: + wc->x = full_x + frameExtentLeft (c); + wc->y = full_y + frameExtentTop (c); + wc->width = full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h / 2 - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE; ++ wc->y += GAPS_SIZE; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE + (GAPS_SIZE / 2); ++ + break; + case TILE_UP_RIGHT: + wc->x = full_x + full_w /2 + frameExtentLeft (c); + wc->y = full_y + frameExtentTop (c); + wc->width = full_w - full_w / 2 - frameExtentLeft (c) - frameExtentRight (c); + wc->height = full_h / 2 - frameExtentTop (c) - frameExtentBottom (c); ++ ++ wc->x += GAPS_SIZE / 2; ++ wc->y += GAPS_SIZE; ++ wc->width -= GAPS_SIZE + (GAPS_SIZE / 2); ++ wc->height -= GAPS_SIZE + (GAPS_SIZE / 2); ++ + break; + default: + break; +@@ -3400,6 +3439,11 @@ clientNewMaxSize (Client *c, XWindowChanges *wc, GdkRectangle *rect) + wc->height = full_h - frameExtentTop (c) - frameExtentBottom (c); + } + ++ wc->x += GAPS_SIZE; ++ wc->y += GAPS_SIZE; ++ wc->width -= GAPS_SIZE * 2; ++ wc->height -= GAPS_SIZE * 2; ++ + return ((wc->height >= c->size->min_height) && (wc->height <= c->size->max_height) && + (wc->width >= c->size->min_width) && (wc->width <= c->size->max_width)); + } |