summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-09-26 03:23:44 -0700
committerroot <root@rshg054.dnsready.net>2013-09-26 03:23:44 -0700
commit5758d40da140a8e3602b08938ab5584a5afb0082 (patch)
treeaaa8636be276d63ddc435c80caef94749ca0e152
parent839df58b3e0710d90fb09388ab2797d47caa79ec (diff)
Thu Sep 26 03:20:04 PDT 2013
-rw-r--r--community/awesome/PKGBUILD5
-rw-r--r--community/freerdp/PKGBUILD11
-rw-r--r--community/freerdp/patch_numblock.patch12
-rw-r--r--community/libvirt/0001-Also-store-user-group-ID-values-in-virIdentity.patch156
-rw-r--r--community/libvirt/0002-Ensure-system-identity-includes-process-start-time.patch70
-rw-r--r--community/libvirt/0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch159
-rw-r--r--community/libvirt/PKGBUILD22
-rw-r--r--community/nodejs/PKGBUILD6
-rw-r--r--community/tint2/PKGBUILD35
-rw-r--r--community/tint2/fix_defunct_processes.patch31
-rw-r--r--community/tint2/middle_click_on_clock.patch75
-rw-r--r--community/virtualbox-modules-lts/PKGBUILD6
-rw-r--r--community/xboard/PKGBUILD7
-rw-r--r--extra/dovecot/PKGBUILD8
-rw-r--r--extra/kdesdk-poxml/PKGBUILD4
-rw-r--r--extra/mariadb/PKGBUILD76
-rw-r--r--extra/php-xcache/PKGBUILD6
-rw-r--r--extra/pigeonhole/PKGBUILD6
-rw-r--r--extra/ruby/0001-remove-db-support.patch35
-rw-r--r--extra/ruby/PKGBUILD15
-rw-r--r--extra/udisks2/PKGBUILD8
-rw-r--r--extra/xf86-video-fbdev/PKGBUILD16
-rw-r--r--extra/xf86-video-fbdev/git-fix.diff29
-rw-r--r--extra/xf86-video-savage/PKGBUILD18
-rw-r--r--extra/xf86-video-savage/git_fixes.diff64
-rw-r--r--kernels/linux-libre-pae/3.11-haswell-intel_pstate.patch32
-rw-r--r--kernels/linux-libre-pae/3.11.1-fix-skge.patch34
-rw-r--r--kernels/linux-libre-pae/PKGBUILD20
-rw-r--r--kernels/linux-libre-xen/3.11-haswell-intel_pstate.patch32
-rw-r--r--kernels/linux-libre-xen/3.11.1-fix-skge.patch34
-rw-r--r--kernels/linux-libre-xen/PKGBUILD20
-rw-r--r--libre/linux-libre/3.11-haswell-intel_pstate.patch32
-rw-r--r--libre/linux-libre/3.11.1-fix-skge.patch34
-rw-r--r--libre/linux-libre/PKGBUILD18
-rw-r--r--pcr/dratmenu/PKGBUILD36
-rw-r--r--pcr/python-jedi/PKGBUILD23
-rw-r--r--pcr/ttf-font-awesome/PKGBUILD19
-rw-r--r--pcr/ttf-font-awesome/ttf-font-awesome.install20
-rw-r--r--pcr/xfwm4-titleless/PKGBUILD46
-rw-r--r--pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch1456
-rw-r--r--pcr/xfwm4-titleless/xfwm4.install13
41 files changed, 2542 insertions, 207 deletions
diff --git a/community/awesome/PKGBUILD b/community/awesome/PKGBUILD
index d308ec13e..fc53a149f 100644
--- a/community/awesome/PKGBUILD
+++ b/community/awesome/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 97098 2013-09-12 18:19:17Z seblu $
+# $Id: PKGBUILD 97620 2013-09-25 19:19:38Z seblu $
# Maintainer: Sébastien Luttringer
# Contributor: xduugu
# Contributor: Ronald van Haren <ronald.archlinux.org>
@@ -6,7 +6,7 @@
pkgname=awesome
pkgver=3.5.1
-pkgrel=2
+pkgrel=3
pkgdesc='Highly configurable framework window manager'
arch=('i686' 'x86_64')
url='http://awesome.naquadah.org/'
@@ -42,6 +42,7 @@ optdepends=(
'vicious: widgets for the Awesome window manager'
)
provides=('notification-daemon')
+backup=('etc/xdg/awesome/rc.lua')
source=("$url/download/$pkgname-$pkgver.tar.xz")
md5sums=('f528f66ddcdb07f24e6f494837371702')
diff --git a/community/freerdp/PKGBUILD b/community/freerdp/PKGBUILD
index 7f6f85ca4..9bee67b95 100644
--- a/community/freerdp/PKGBUILD
+++ b/community/freerdp/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 94879 2013-08-01 06:54:53Z bpiotrowski $
+# $Id: PKGBUILD 97610 2013-09-25 13:56:48Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Stijn Segers <francesco dot borromini at gmail dot com>
pkgname=freerdp
pkgver=1.0.2
-pkgrel=3
+pkgrel=4
pkgdesc="Free RDP client"
arch=('i686' 'x86_64')
url="http://freerdp.sourceforge.net"
@@ -16,13 +16,16 @@ conflicts=('freerdp-git')
changelog=${pkgname}.changelog
options=('!libtool')
source=($pkgname-$pkgver.tar.gz::https://github.com/FreeRDP/FreeRDP/archive/$pkgver.tar.gz
- ffmpeg2.0.patch)
+ ffmpeg2.0.patch
+ patch_numblock.patch)
md5sums=('c260051a94caff590def5caa4fcf59d6'
- '1260eecf01ea5212e2db8ac9c5e7fa6d')
+ '1260eecf01ea5212e2db8ac9c5e7fa6d'
+ 'ac581d445ded7cdbd59082a48d9c28ac')
prepare() {
cd $srcdir/FreeRDP-$pkgver
patch -Np1 -i ../ffmpeg2.0.patch
+ patch -Np1 -i ../patch_numblock.patch
}
build() {
diff --git a/community/freerdp/patch_numblock.patch b/community/freerdp/patch_numblock.patch
new file mode 100644
index 000000000..62a23d582
--- /dev/null
+++ b/community/freerdp/patch_numblock.patch
@@ -0,0 +1,12 @@
+diff -u -r -N old/include/freerdp/kbd/vkcodes.h new/include/freerdp/kbd/vkcodes.h
+--- old/include/freerdp/kbd/vkcodes.h 2013-09-19 12:46:07.124339712 +0200
++++ new/include/freerdp/kbd/vkcodes.h 2013-09-19 12:45:51.621005583 +0200
+@@ -434,7 +434,7 @@
+ { 0x00, 0, "VK_SEPARATOR" , NULL },
+ { 0x4A, 0, "VK_SUBTRACT" , "KPSU" },
+ { 0x53, 0, "VK_DECIMAL" , "KPDL" },
+- { 0x35, 0, "VK_DIVIDE" , "KPDV" },
++ { 0x35, 1, "VK_DIVIDE" , "KPDV" },
+ { 0x3B, 0, "VK_F1" , "FK01" },
+ { 0x3C, 0, "VK_F2" , "FK02" },
+ { 0x3D, 0, "VK_F3" , "FK03" },
diff --git a/community/libvirt/0001-Also-store-user-group-ID-values-in-virIdentity.patch b/community/libvirt/0001-Also-store-user-group-ID-values-in-virIdentity.patch
new file mode 100644
index 000000000..70a613820
--- /dev/null
+++ b/community/libvirt/0001-Also-store-user-group-ID-values-in-virIdentity.patch
@@ -0,0 +1,156 @@
+From 02432e3afa32e9866fbf1317069b422ef552d1d4 Mon Sep 17 00:00:00 2001
+From: "Daniel P. Berrange" <berrange@redhat.com>
+Date: Thu, 22 Aug 2013 16:00:01 +0100
+Subject: [PATCH 1/3] Also store user & group ID values in virIdentity
+
+Future improvements to the polkit code will require access to
+the numeric user ID, not merely user name.
+
+Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
+---
+ src/rpc/virnetserverclient.c | 18 ++++++++++++++++++
+ src/util/viridentity.c | 23 +++++++++++++++++++----
+ src/util/viridentity.h | 2 ++
+ 3 files changed, 39 insertions(+), 4 deletions(-)
+
+diff --git a/src/rpc/virnetserverclient.c b/src/rpc/virnetserverclient.c
+index 83d5cf1..f30dd08 100644
+--- a/src/rpc/virnetserverclient.c
++++ b/src/rpc/virnetserverclient.c
+@@ -652,7 +652,9 @@ virNetServerClientCreateIdentity(virNetServerClientPtr client)
+ char *processid = NULL;
+ char *processtime = NULL;
+ char *username = NULL;
++ char *userid = NULL;
+ char *groupname = NULL;
++ char *groupid = NULL;
+ #if WITH_SASL
+ char *saslname = NULL;
+ #endif
+@@ -672,8 +674,12 @@ virNetServerClientCreateIdentity(virNetServerClientPtr client)
+
+ if (!(username = virGetUserName(uid)))
+ goto cleanup;
++ if (virAsprintf(&userid, "%d", uid) < 0)
++ goto cleanup;
+ if (!(groupname = virGetGroupName(gid)))
+ goto cleanup;
++ if (virAsprintf(&userid, "%d", gid) < 0)
++ goto cleanup;
+ if (virAsprintf(&processid, "%llu",
+ (unsigned long long)pid) < 0)
+ goto cleanup;
+@@ -710,11 +716,21 @@ virNetServerClientCreateIdentity(virNetServerClientPtr client)
+ VIR_IDENTITY_ATTR_UNIX_USER_NAME,
+ username) < 0)
+ goto error;
++ if (userid &&
++ virIdentitySetAttr(ret,
++ VIR_IDENTITY_ATTR_UNIX_USER_ID,
++ userid) < 0)
++ goto error;
+ if (groupname &&
+ virIdentitySetAttr(ret,
+ VIR_IDENTITY_ATTR_UNIX_GROUP_NAME,
+ groupname) < 0)
+ goto error;
++ if (groupid &&
++ virIdentitySetAttr(ret,
++ VIR_IDENTITY_ATTR_UNIX_GROUP_ID,
++ groupid) < 0)
++ goto error;
+ if (processid &&
+ virIdentitySetAttr(ret,
+ VIR_IDENTITY_ATTR_UNIX_PROCESS_ID,
+@@ -745,7 +761,9 @@ virNetServerClientCreateIdentity(virNetServerClientPtr client)
+
+ cleanup:
+ VIR_FREE(username);
++ VIR_FREE(userid);
+ VIR_FREE(groupname);
++ VIR_FREE(groupid);
+ VIR_FREE(processid);
+ VIR_FREE(processtime);
+ VIR_FREE(seccontext);
+diff --git a/src/util/viridentity.c b/src/util/viridentity.c
+index 781f660..03c375b 100644
+--- a/src/util/viridentity.c
++++ b/src/util/viridentity.c
+@@ -133,7 +133,9 @@ int virIdentitySetCurrent(virIdentityPtr ident)
+ virIdentityPtr virIdentityGetSystem(void)
+ {
+ char *username = NULL;
++ char *userid = NULL;
+ char *groupname = NULL;
++ char *groupid = NULL;
+ char *seccontext = NULL;
+ virIdentityPtr ret = NULL;
+ #if WITH_SELINUX
+@@ -147,8 +149,13 @@ virIdentityPtr virIdentityGetSystem(void)
+
+ if (!(username = virGetUserName(getuid())))
+ goto cleanup;
++ if (virAsprintf(&userid, "%d", (int)getuid()) < 0)
++ goto cleanup;
++
+ if (!(groupname = virGetGroupName(getgid())))
+ goto cleanup;
++ if (virAsprintf(&groupid, "%d", (int)getgid()) < 0)
++ goto cleanup;
+
+ #if WITH_SELINUX
+ if (getcon(&con) < 0) {
+@@ -166,16 +173,22 @@ virIdentityPtr virIdentityGetSystem(void)
+ if (!(ret = virIdentityNew()))
+ goto cleanup;
+
+- if (username &&
+- virIdentitySetAttr(ret,
++ if (virIdentitySetAttr(ret,
+ VIR_IDENTITY_ATTR_UNIX_USER_NAME,
+ username) < 0)
+ goto error;
+- if (groupname &&
+- virIdentitySetAttr(ret,
++ if (virIdentitySetAttr(ret,
++ VIR_IDENTITY_ATTR_UNIX_USER_ID,
++ userid) < 0)
++ goto error;
++ if (virIdentitySetAttr(ret,
+ VIR_IDENTITY_ATTR_UNIX_GROUP_NAME,
+ groupname) < 0)
+ goto error;
++ if (virIdentitySetAttr(ret,
++ VIR_IDENTITY_ATTR_UNIX_GROUP_ID,
++ groupid) < 0)
++ goto error;
+ if (seccontext &&
+ virIdentitySetAttr(ret,
+ VIR_IDENTITY_ATTR_SELINUX_CONTEXT,
+@@ -188,7 +201,9 @@ virIdentityPtr virIdentityGetSystem(void)
+
+ cleanup:
+ VIR_FREE(username);
++ VIR_FREE(userid);
+ VIR_FREE(groupname);
++ VIR_FREE(groupid);
+ VIR_FREE(seccontext);
+ VIR_FREE(processid);
+ return ret;
+diff --git a/src/util/viridentity.h b/src/util/viridentity.h
+index 4bae8d6..a240c2d 100644
+--- a/src/util/viridentity.h
++++ b/src/util/viridentity.h
+@@ -29,7 +29,9 @@ typedef virIdentity *virIdentityPtr;
+
+ typedef enum {
+ VIR_IDENTITY_ATTR_UNIX_USER_NAME,
++ VIR_IDENTITY_ATTR_UNIX_USER_ID,
+ VIR_IDENTITY_ATTR_UNIX_GROUP_NAME,
++ VIR_IDENTITY_ATTR_UNIX_GROUP_ID,
+ VIR_IDENTITY_ATTR_UNIX_PROCESS_ID,
+ VIR_IDENTITY_ATTR_UNIX_PROCESS_TIME,
+ VIR_IDENTITY_ATTR_SASL_USER_NAME,
+--
+1.8.3.1
+
diff --git a/community/libvirt/0002-Ensure-system-identity-includes-process-start-time.patch b/community/libvirt/0002-Ensure-system-identity-includes-process-start-time.patch
new file mode 100644
index 000000000..1fba7d56c
--- /dev/null
+++ b/community/libvirt/0002-Ensure-system-identity-includes-process-start-time.patch
@@ -0,0 +1,70 @@
+From f26b6e44bf0c3efe8167a528141224ccb7623b4a Mon Sep 17 00:00:00 2001
+From: "Daniel P. Berrange" <berrange@redhat.com>
+Date: Wed, 28 Aug 2013 15:22:05 +0100
+Subject: [PATCH 2/3] Ensure system identity includes process start time
+
+The polkit access driver will want to use the process start
+time field. This was already set for network identities, but
+not for the system identity.
+
+Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
+---
+ src/util/viridentity.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/src/util/viridentity.c b/src/util/viridentity.c
+index 03c375b..f681f85 100644
+--- a/src/util/viridentity.c
++++ b/src/util/viridentity.c
+@@ -35,6 +35,7 @@
+ #include "virthread.h"
+ #include "virutil.h"
+ #include "virstring.h"
++#include "virprocess.h"
+
+ #define VIR_FROM_THIS VIR_FROM_IDENTITY
+
+@@ -142,11 +143,20 @@ virIdentityPtr virIdentityGetSystem(void)
+ security_context_t con;
+ #endif
+ char *processid = NULL;
++ unsigned long long timestamp;
++ char *processtime = NULL;
+
+ if (virAsprintf(&processid, "%llu",
+ (unsigned long long)getpid()) < 0)
+ goto cleanup;
+
++ if (virProcessGetStartTime(getpid(), &timestamp) < 0)
++ goto cleanup;
++
++ if (timestamp != 0 &&
++ virAsprintf(&processtime, "%llu", timestamp) < 0)
++ goto cleanup;
++
+ if (!(username = virGetUserName(getuid())))
+ goto cleanup;
+ if (virAsprintf(&userid, "%d", (int)getuid()) < 0)
+@@ -198,6 +208,11 @@ virIdentityPtr virIdentityGetSystem(void)
+ VIR_IDENTITY_ATTR_UNIX_PROCESS_ID,
+ processid) < 0)
+ goto error;
++ if (processtime &&
++ virIdentitySetAttr(ret,
++ VIR_IDENTITY_ATTR_UNIX_PROCESS_TIME,
++ processtime) < 0)
++ goto error;
+
+ cleanup:
+ VIR_FREE(username);
+@@ -206,6 +221,7 @@ cleanup:
+ VIR_FREE(groupid);
+ VIR_FREE(seccontext);
+ VIR_FREE(processid);
++ VIR_FREE(processtime);
+ return ret;
+
+ error:
+--
+1.8.3.1
+
diff --git a/community/libvirt/0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch b/community/libvirt/0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch
new file mode 100644
index 000000000..8882f1227
--- /dev/null
+++ b/community/libvirt/0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch
@@ -0,0 +1,159 @@
+From 4a061ec8fe94857dd21acf401c66195ec51b1234 Mon Sep 17 00:00:00 2001
+From: "Daniel P. Berrange" <berrange@redhat.com>
+Date: Wed, 28 Aug 2013 15:25:40 +0100
+Subject: [PATCH 3/3] Add support for using 3-arg pkcheck syntax for process
+
+With the existing pkcheck (pid, start time) tuple for identifying
+the process, there is a race condition, where a process can make
+a libvirt RPC call and in another thread exec a setuid application,
+causing it to change to effective UID 0. This in turn causes polkit
+to do its permission check based on the wrong UID.
+
+To address this, libvirt must get the UID the caller had at time
+of connect() (from SO_PEERCRED) and pass a (pid, start time, uid)
+triple to the pkcheck program.
+
+Signed-off-by: Colin Walters <walters@redhat.com>
+Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
+---
+ configure.ac | 8 ++++++++
+ daemon/remote.c | 21 +++++++++++++++++---
+ src/access/viraccessdriverpolkit.c | 40 +++++++++++++++++++++++++++++++++-----
+ 3 files changed, 61 insertions(+), 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 94a2e19..3dfbb4d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1184,6 +1184,14 @@ if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then
+ AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH])
+ if test "x$PKCHECK_PATH" != "x" ; then
+ AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program])
++ AC_MSG_CHECKING([whether pkcheck supports uid value])
++ pkcheck_supports_uid=$($PKG_CONFIG --variable pkcheck_supports_uid polkit-gobject-1)
++ if test "x$pkcheck_supports_uid" = "xtrue"; then
++ AC_MSG_RESULT([yes])
++ AC_DEFINE_UNQUOTED([PKCHECK_SUPPORTS_UID], 1, [Pass uid to pkcheck])
++ else
++ AC_MSG_RESULT([no])
++ fi
+ AC_DEFINE_UNQUOTED([WITH_POLKIT], 1,
+ [use PolicyKit for UNIX socket access checks])
+ AC_DEFINE_UNQUOTED([WITH_POLKIT1], 1,
+diff --git a/daemon/remote.c b/daemon/remote.c
+index 03d5557..6132091 100644
+--- a/daemon/remote.c
++++ b/daemon/remote.c
+@@ -2731,10 +2731,12 @@ remoteDispatchAuthPolkit(virNetServerPtr server ATTRIBUTE_UNUSED,
+ int status = -1;
+ char *ident = NULL;
+ bool authdismissed = 0;
++ bool supportsuid = 0;
+ char *pkout = NULL;
+ struct daemonClientPrivate *priv =
+ virNetServerClientGetPrivateData(client);
+ virCommandPtr cmd = NULL;
++ static bool polkitInsecureWarned = false;
+
+ virMutexLock(&priv->lock);
+ action = virNetServerClientGetReadonly(client) ?
+@@ -2756,14 +2758,27 @@ remoteDispatchAuthPolkit(virNetServerPtr server ATTRIBUTE_UNUSED,
+ goto authfail;
+ }
+
++ if (timestamp == 0) {
++ VIR_WARN("Failing polkit auth due to missing client (pid=%lld) start time",
++ (long long)callerPid);
++ goto authfail;
++ }
++
+ VIR_INFO("Checking PID %lld running as %d",
+ (long long) callerPid, callerUid);
+
+ virCommandAddArg(cmd, "--process");
+- if (timestamp != 0) {
+- virCommandAddArgFormat(cmd, "%lld,%llu", (long long) callerPid, timestamp);
++# ifdef PKCHECK_SUPPORTS_UID
++ supportsuid = 1;
++# endif
++ if (supportsuid) {
++ virCommandAddArgFormat(cmd, "%lld,%llu,%lu", (long long) callerPid, timestamp, (unsigned long) callerUid);
+ } else {
+- virCommandAddArgFormat(cmd, "%lld", (long long) callerPid);
++ if (!polkitInsecureWarned) {
++ VIR_WARN("No support for caller UID with pkcheck. This deployment is known to be insecure.");
++ polkitInsecureWarned = true;
++ }
++ virCommandAddArgFormat(cmd, "%lld,%llu", (long long) callerPid, timestamp);
+ }
+ virCommandAddArg(cmd, "--allow-user-interaction");
+
+diff --git a/src/access/viraccessdriverpolkit.c b/src/access/viraccessdriverpolkit.c
+index 4c76e64..d980820 100644
+--- a/src/access/viraccessdriverpolkit.c
++++ b/src/access/viraccessdriverpolkit.c
+@@ -72,8 +72,12 @@ static char *
+ virAccessDriverPolkitFormatProcess(const char *actionid)
+ {
+ virIdentityPtr identity = virIdentityGetCurrent();
+- const char *process = NULL;
++ const char *callerPid = NULL;
++ const char *callerTime = NULL;
++ const char *callerUid = NULL;
+ char *ret = NULL;
++ bool supportsuid = 0;
++ static bool polkitInsecureWarned = false;
+
+ if (!identity) {
+ virAccessError(VIR_ERR_ACCESS_DENIED,
+@@ -81,17 +85,43 @@ virAccessDriverPolkitFormatProcess(const char *actionid)
+ actionid);
+ return NULL;
+ }
+- if (virIdentityGetAttr(identity, VIR_IDENTITY_ATTR_UNIX_PROCESS_ID, &process) < 0)
++ if (virIdentityGetAttr(identity, VIR_IDENTITY_ATTR_UNIX_PROCESS_ID, &callerPid) < 0)
++ goto cleanup;
++ if (virIdentityGetAttr(identity, VIR_IDENTITY_ATTR_UNIX_PROCESS_TIME, &callerTime) < 0)
++ goto cleanup;
++ if (virIdentityGetAttr(identity, VIR_IDENTITY_ATTR_UNIX_USER_ID, &callerUid) < 0)
+ goto cleanup;
+
+- if (!process) {
++ if (!callerPid) {
+ virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("No UNIX process ID available"));
+ goto cleanup;
+ }
+-
+- if (VIR_STRDUP(ret, process) < 0)
++ if (!callerTime) {
++ virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
++ _("No UNIX process start time available"));
++ goto cleanup;
++ }
++ if (!callerUid) {
++ virAccessError(VIR_ERR_INTERNAL_ERROR, "%s",
++ _("No UNIX caller UID available"));
+ goto cleanup;
++ }
++
++#ifdef PKCHECK_SUPPORTS_UID
++ supportsuid = 1;
++#endif
++ if (supportsuid) {
++ if (virAsprintf(&ret, "%s,%s,%s", callerPid, callerTime, callerUid) < 0)
++ goto cleanup;
++ } else {
++ if (!polkitInsecureWarned) {
++ VIR_WARN("No support for caller UID with pkcheck. This deployment is known to be insecure.");
++ polkitInsecureWarned = true;
++ }
++ if (virAsprintf(&ret, "%s,%s", callerPid, callerTime) < 0)
++ goto cleanup;
++ }
+
+ cleanup:
+ virObjectUnref(identity);
+--
+1.8.3.1
+
diff --git a/community/libvirt/PKGBUILD b/community/libvirt/PKGBUILD
index bb7d38bc7..cfeb7738b 100644
--- a/community/libvirt/PKGBUILD
+++ b/community/libvirt/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 96612 2013-09-02 10:46:37Z spupykin $
+# $Id: PKGBUILD 97608 2013-09-25 13:45:00Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Jonathan Wiersma <archaur at jonw dot org>
pkgname=libvirt
pkgver=1.1.2
-pkgrel=1
+pkgrel=2
pkgdesc="API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc)"
arch=('i686' 'x86_64')
url="http://libvirt.org/"
@@ -32,11 +32,25 @@ install="libvirt.install"
source=("http://libvirt.org/sources/$pkgname-$pkgver.tar.gz"
libvirtd.conf.d
libvirtd-guests.conf.d
- libvirt.tmpfiles.d)
+ libvirt.tmpfiles.d
+ 0001-Also-store-user-group-ID-values-in-virIdentity.patch
+ 0002-Ensure-system-identity-includes-process-start-time.patch
+ 0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch)
md5sums=('1835bbfa492099bce12e2934870e5611'
'3ed0e24f5b5e25bf553f5427d64915e6'
'0a96ed876ffb1fcb9dff5a9b3a609c1e'
- '020971887442ebbf1b6949e031c8dd3f')
+ '020971887442ebbf1b6949e031c8dd3f'
+ '60912fc049f0e8cf8d89c919ea619415'
+ 'a42387495f75dd918a6c25b36eb3b428'
+ '2dba51f17f37f59585852092e4c86e44')
+
+prepare() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 <$srcdir/0001-Also-store-user-group-ID-values-in-virIdentity.patch
+ patch -p1 <$srcdir/0002-Ensure-system-identity-includes-process-start-time.patch
+ patch -p1 <$srcdir/0003-Add-support-for-using-3-arg-pkcheck-syntax-for-proce.patch
+ autoreconf
+}
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/nodejs/PKGBUILD b/community/nodejs/PKGBUILD
index c17656108..1f5b7434a 100644
--- a/community/nodejs/PKGBUILD
+++ b/community/nodejs/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 96776 2013-09-04 21:38:52Z bpiotrowski $
+# $Id: PKGBUILD 97596 2013-09-25 06:59:41Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Thomas Dziedzic < gostrc at gmail >
# Contributor: James Campos <james.r.campos@gmail.com>
@@ -8,7 +8,7 @@
# Contributor: TIanyi Cui <tianyicui@gmail.com>
pkgname=nodejs
-pkgver=0.10.18
+pkgver=0.10.19
pkgrel=1
pkgdesc='Evented I/O for V8 javascript'
arch=('i686' 'x86_64')
@@ -19,7 +19,7 @@ makedepends=('python2')
checkdepends=('curl')
options=('!emptydirs')
source=(http://nodejs.org/dist/v$pkgver/node-v$pkgver.tar.gz)
-sha256sums=('3ee4436473869d4d84bb5cad4352b09ace00656467eca7d6db7cd7da5b8c5495')
+sha256sums=('e50787672cdf6afa6caeef9345ca40c4a69f96a31829a0884ea6ed63dfdde21e')
prepare() {
cd node-v$pkgver
diff --git a/community/tint2/PKGBUILD b/community/tint2/PKGBUILD
index 09bc4aff4..2571b8dee 100644
--- a/community/tint2/PKGBUILD
+++ b/community/tint2/PKGBUILD
@@ -1,43 +1,50 @@
-# $Id: PKGBUILD 64903 2012-02-18 20:04:04Z bpiotrowski $
+# $Id: PKGBUILD 97618 2013-09-25 18:19:34Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Blue Peppers <bluepeppers@archlinux.us>
# Contributor: Stefan Husmann< stefan-husmann@t-online.de>
pkgname=tint2
pkgver=0.11
-pkgrel=5
-pkgdesc="A basic, good-looking task manager for WMs"
+pkgrel=6
+pkgdesc='Basic, good-looking task manager for WMs'
arch=('i686' 'x86_64')
url="http://code.google.com/p/tint2/"
license=('GPL2')
conflicts=('ttm-svn' 'tint')
replaces=('tint')
depends=('gtk2' 'imlib2')
-optdepends=('pygtk: for using tint2conf')
+optdepends=('pygtk: for tint2wizard')
makedepends=('pygtk' 'cmake')
provides=('tint')
-source=("http://$pkgname.googlecode.com/files/$pkgname-${pkgver}.tar.bz2"
- 'add-power-now-support.patch')
+source=(http://tint2.googlecode.com/files/tint2-$pkgver.tar.bz2
+ add-power-now-support.patch
+ fix_defunct_processes.patch
+ middle_click_on_clock.patch)
md5sums=('6fc5731e7425125fa84a2add5cef4bff'
- '6cfcad028f1bd2f69812167f5395f890')
+ '6cfcad028f1bd2f69812167f5395f890'
+ 'b3d052ac5ada81c56e36133b1ecdee8c'
+ 'f7918d29a87422aab6fb9d922867d8f8')
-build() {
- cd "$srcdir/$pkgname-${pkgver}"
+prepare() {
+ cd $pkgname-$pkgver
- # add support for power_now battery attribute (fixes FS#21954)
patch -Np0 -i ../add-power-now-support.patch
+ patch -Np0 -i ../fix_defunct_processes.patch
+ patch -Np0 -i ../middle_click_on_clock.patch
# python2 fix
sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' src/tint2conf/tintwizard.py
sed -i 's_python _python2 _' src/tint2conf/main.c
+}
+
+build() {
+ cd $pkgname-$pkgver
- [ -d build ] || mkdir build
- cd build
- cmake -DCMAKE_INSTALL_PREFIX=/usr ../
+ cmake -DCMAKE_INSTALL_PREFIX=/usr .
make
}
package() {
- cd "$srcdir/$pkgname-${pkgver}/build"
+ cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
}
diff --git a/community/tint2/fix_defunct_processes.patch b/community/tint2/fix_defunct_processes.patch
new file mode 100644
index 000000000..28ea6c27a
--- /dev/null
+++ b/community/tint2/fix_defunct_processes.patch
@@ -0,0 +1,31 @@
+http://code.google.com/p/tint2/issues/detail?id=430
+Submitted By: David B. Cortarello (Nomius) <dcortarello at gmail dot com>
+Date: 18-05-2013
+Initial Package Version: subversion trunk (revision 652)
+Description: Fix zombie (defunct) processes created in clock_action.
+This patch provides the following bugfixes:
+ * This patch uses waitpid with WNOHANG to eliminate all zombie processes created by tint2 (in particular by the clock -right or left- click). This is done by a small hack in the update_clocks_min, called to "redraw" that area.
+
+--- src/clock/clock.c (revision 652)
++++ src/clock/clock.c (working copy)
+@@ -23,6 +23,8 @@
+ #include <cairo-xlib.h>
+ #include <pango/pangocairo.h>
+ #include <stdlib.h>
++#include <sys/types.h>
++#include <sys/wait.h>
+
+ #include "window.h"
+ #include "server.h"
+@@ -98,6 +103,10 @@
+ // remember old_sec because after suspend/hibernate the clock should be updated directly, and not
+ // on next minute change
+ time_t old_sec = time_clock.tv_sec;
++
++ // Little hack to wait executed commands in clock_action avoiding zombies
++ waitpid(-1, NULL, WNOHANG);
++
+ gettimeofday(&time_clock, 0);
+ if (time_clock.tv_sec % 60 == 0 || time_clock.tv_sec - old_sec > 60) {
+ int i;
+
diff --git a/community/tint2/middle_click_on_clock.patch b/community/tint2/middle_click_on_clock.patch
new file mode 100644
index 000000000..800c15c44
--- /dev/null
+++ b/community/tint2/middle_click_on_clock.patch
@@ -0,0 +1,75 @@
+http://code.google.com/p/tint2/issues/detail?id=430
+Submitted By: David B. Cortarello (Nomius) <dcortarello at gmail dot com>
+Date: 18-05-2013
+Initial Package Version: subversion trunk (revision 652)
+Description: Implemented middle click mouse button in the clock to execute tasks.
+* Implemented middle click mouse button over the clock by accepting the button 2 in the clock_action.
+* A new configuration parameter was created called clock_mclick_command, which works in the same way
+* clock_lclick_command and clock_rclick_command does.
+
+Index: src/clock/clock.c
+===================================================================
+--- src/clock/clock.c (revision 652)
++++ src/clock/clock.c (working copy)
+@@ -39,6 +41,7 @@
+ char *time_tooltip_format;
+ char *time_tooltip_timezone;
+ char *clock_lclick_command;
++char *clock_mclick_command;
+ char *clock_rclick_command;
+ struct timeval time_clock;
+ PangoFontDescription *time1_font_desc;
+@@ -61,6 +64,7 @@
+ time_tooltip_format = 0;
+ time_tooltip_timezone = 0;
+ clock_lclick_command = 0;
++ clock_mclick_command = 0;
+ clock_rclick_command = 0;
+ time1_font_desc = 0;
+ time2_font_desc = 0;
+@@ -77,6 +81,7 @@
+ if (time2_timezone) g_free(time2_timezone);
+ if (time_tooltip_timezone) g_free(time_tooltip_timezone);
+ if (clock_lclick_command) g_free(clock_lclick_command);
++ if (clock_mclick_command) g_free(clock_mclick_command);
+ if (clock_rclick_command) g_free(clock_rclick_command);
+ if (clock_timeout) stop_timeout(clock_timeout);
+ }
+@@ -254,6 +263,9 @@
+ case 1:
+ command = clock_lclick_command;
+ break;
++ case 2:
++ command = clock_mclick_command;
++ break;
+ case 3:
+ command = clock_rclick_command;
+ break;
+Index: src/clock/clock.h
+===================================================================
+--- src/clock/clock.h (revision 652)
++++ src/clock/clock.h (working copy)
+@@ -33,6 +33,7 @@
+ extern PangoFontDescription *time1_font_desc;
+ extern PangoFontDescription *time2_font_desc;
+ extern char *clock_lclick_command;
++extern char *clock_mclick_command;
+ extern char *clock_rclick_command;
+ extern int clock_enabled;
+
+Index: src/config.c
+===================================================================
+--- src/config.c (revision 652)
++++ src/config.c (working copy)
+@@ -396,6 +396,10 @@
+ if (strlen(value) > 0)
+ clock_lclick_command = strdup(value);
+ }
++ else if (strcmp(key, "clock_mclick_command") == 0) {
++ if (strlen(value) > 0)
++ clock_mclick_command = strdup(value);
++ }
+ else if (strcmp(key, "clock_rclick_command") == 0) {
+ if (strlen(value) > 0)
+ clock_rclick_command = strdup(value);
+
diff --git a/community/virtualbox-modules-lts/PKGBUILD b/community/virtualbox-modules-lts/PKGBUILD
index 22476422e..85bee4fb0 100644
--- a/community/virtualbox-modules-lts/PKGBUILD
+++ b/community/virtualbox-modules-lts/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 97440 2013-09-20 06:39:24Z bpiotrowski $
+# $Id: PKGBUILD 97616 2013-09-25 18:03:31Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Sébastien Luttringer
@@ -6,7 +6,7 @@
pkgbase=virtualbox-modules-lts
pkgname=('virtualbox-host-modules-lts' 'virtualbox-guest-modules-lts')
pkgver=4.2.18
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64')
url='http://virtualbox.org'
license=('GPL')
@@ -53,7 +53,7 @@ package_virtualbox-guest-modules-lts(){
depends=('linux-lts>=3.10' 'linux-lts<3.11')
replaces=('virtualbox-archlinux-modules-lts')
conflicts=('virtualbox-archlinux-modules-lts')
- provides=("virtualbox-host-modules=$pkgver")
+ provides=("virtualbox-guest-modules=$pkgver")
install=virtualbox-guest-modules-lts.install
cd "dkms/vboxguest/$pkgver/$_kernver/$CARCH/module"
diff --git a/community/xboard/PKGBUILD b/community/xboard/PKGBUILD
index 13c602417..f9687dc57 100644
--- a/community/xboard/PKGBUILD
+++ b/community/xboard/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 97535 2013-09-23 16:17:42Z spupykin $
+# $Id: PKGBUILD 97605 2013-09-25 13:39:22Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Jason Chu <jason@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=xboard
pkgver=4.7.2
-pkgrel=1
+pkgrel=2
pkgdesc="Graphical user interfaces for chess"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/xboard/"
@@ -29,7 +29,8 @@ build() {
--prefix=/usr \
--mandir=/usr/share/man \
--sysconfdir=/etc \
- --with-gtk
+ --with-gtk \
+ --enable-zippy
make
}
diff --git a/extra/dovecot/PKGBUILD b/extra/dovecot/PKGBUILD
index 4c7da1644..faec2395f 100644
--- a/extra/dovecot/PKGBUILD
+++ b/extra/dovecot/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 192152 2013-08-06 14:10:47Z andyrtr $
+# $Id: PKGBUILD 195140 2013-09-25 15:41:44Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Paul Mattal <paul@mattal.com>
# Contributor: Federico Quagliata (quaqo) <quaqo@despammed.com>
@@ -8,7 +8,7 @@
# --->>> remember to rebuild/bump pigeonhole in one step <<<---
pkgname=dovecot
-pkgver=2.2.5
+pkgver=2.2.6
pkgrel=1
pkgdesc="An IMAP and POP3 server written with security primarily in mind"
arch=('i686' 'x86_64')
@@ -24,7 +24,7 @@ options=('!libtool')
install=$pkgname.install
source=(http://dovecot.org/releases/2.2/${pkgname}-${pkgver}.tar.gz{,.sig}
dovecot.tmpfilesd)
-md5sums=('0096442e2a1739b1b7997a833248a263'
+md5sums=('db65988ef2e6889dd8b49c132b21fc8f'
'SKIP'
'342a28251d40f983c98c0d1f1bf3d07d')
@@ -32,7 +32,7 @@ build() {
cd ${srcdir}/$pkgname-$pkgver
# fix build with recent clucene (FC)
- sed -i '/DEFAULT_INCLUDES *=/s|$| '"$(pkg-config --cflags libclucene-core)|" src/plugins/fts-lucene/Makefile.in
+# sed -i '/DEFAULT_INCLUDES *=/s|$| '"$(pkg-config --cflags libclucene-core)|" src/plugins/fts-lucene/Makefile.in
# fix path in helper script
sed -i 's:OPENSSLCONFIG=${OPENSSLCONFIG-dovecot-openssl.cnf}:OPENSSLCONFIG=${OPENSSLCONFIG- /etc/ssl/dovecot-openssl.cnf}:' doc/mkcert.sh
diff --git a/extra/kdesdk-poxml/PKGBUILD b/extra/kdesdk-poxml/PKGBUILD
index 70346c1a9..7ac28eecf 100644
--- a/extra/kdesdk-poxml/PKGBUILD
+++ b/extra/kdesdk-poxml/PKGBUILD
@@ -3,14 +3,14 @@
pkgname=kdesdk-poxml
pkgver=4.11.1
-pkgrel=1
+pkgrel=2
pkgdesc='Translates DocBook XML files using gettext po files'
url='https://projects.kde.org/projects/kde/kdesdk/poxml'
arch=('i686' 'x86_64')
license=('GPL' 'LGPL' 'FDL')
groups=('kde' 'kdesdk')
depends=('kdelibs')
-makedepends=('cmake' 'automoc4')
+makedepends=('cmake' 'automoc4' 'antlr2')
optdepends=('antlr2: required for po2xml and swappo tool')
source=("http://download.kde.org/stable/${pkgver}/src/poxml-${pkgver}.tar.xz")
sha1sums=('5c43a53f4106d80826865590a218ea63aa6c15c7')
diff --git a/extra/mariadb/PKGBUILD b/extra/mariadb/PKGBUILD
index 25560318d..1125dfc74 100644
--- a/extra/mariadb/PKGBUILD
+++ b/extra/mariadb/PKGBUILD
@@ -1,30 +1,35 @@
-# $Id: PKGBUILD 193074 2013-08-15 15:18:16Z bpiotrowski $
+# $Id: PKGBUILD 195113 2013-09-25 07:07:22Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
pkgbase=mariadb
-pkgname=('libmariadbclient' 'mariadb-clients' 'mariadb')
-pkgver=5.5.32
-pkgrel=2
+pkgname=('libmariadbclient' 'mariadb-clients' 'mytop' 'mariadb')
+pkgver=5.5.33.a
+_pkgver=${pkgver/.a/a}
+pkgrel=1
arch=('i686' 'x86_64')
license=('GPL')
url='http://mariadb.org/'
makedepends=('cmake' 'openssl' 'zlib')
options=('!libtool')
-source=(http://mirrors.supportex.net/$pkgbase/$pkgbase-$pkgver/kvm-tarbake-jaunty-x86/$pkgbase-$pkgver.tar.gz
+source=(http://mirrors.supportex.net/$pkgbase/$pkgbase-$_pkgver/kvm-tarbake-jaunty-x86/$pkgbase-$_pkgver.tar.gz
mariadb.service
mariadb-post.sh
mariadb-tmpfile.conf)
-sha256sums=('cc76d143c60d9f24b551adaf80f694ef9beb4a6a9032c115a06f7b5c5d0ee468'
+sha256sums=('adf4d04087177fde6568082c3fee77e52e84dc3ae4eb5b994d5defaaa8c83d5b'
'a6cf5446159fff16598d0d787dd3a3c30a53a656a5f876ddb608bc60e234d334'
'368f9fd2454d80eb32abb8f29f703d1cf9553353fb9e1ae4529c4b851cb8c5dd'
'2af318c52ae0fe5428e8a9245d1b0fc3bc5ce153842d1563329ceb1edfa83ddd')
+prepare() {
+ cd $pkgbase-$_pkgver
+ sed -i '63d' storage/tokudb/ft-index/cmake_modules/TokuSetupCTest.cmake
+}
+
build() {
- cd $srcdir
mkdir build
cd build
- cmake ../$pkgbase-$pkgver \
+ cmake ../$pkgbase-$_pkgver \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DSYSCONFDIR=/etc/mysql \
@@ -53,6 +58,7 @@ build() {
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
+ -DWITH_TOKUDB_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_PBXT_STORAGE_ENGINE=1 \
@@ -70,16 +76,15 @@ package_libmariadbclient() {
conflicts=('libmysqlclient')
provides=("libmysqlclient=$pkgver")
- cd "$srcdir"/build
+ cd build
for dir in include libmysql libmysqld libservices; do
make -C $dir DESTDIR="$pkgdir" install
done
- install -d "$pkgdir"/usr/bin
- install -m755 scripts/mysql_config "$pkgdir"/usr/bin/
+ install -Dm755 scripts/mysql_config "$pkgdir"/usr/bin/mysql_config
install -d "$pkgdir"/usr/share/man/man1
for man in mysql_config mysql_client_test_embedded mysqltest_embedded; do
- install -m644 "$srcdir"/$pkgbase-$pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
+ install -m644 "$srcdir"/$pkgbase-$_pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
done
}
@@ -89,17 +94,26 @@ package_mariadb-clients() {
conflicts=('mysql-clients')
provides=("mysql-clients=$pkgver")
- cd "$srcdir"/build
+ cd build
make -C client DESTDIR="$pkgdir" install
# install man pages
install -d "$pkgdir"/usr/share/man/man1
for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap; do
- install -m644 "$srcdir"/$pkgbase-$pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
+ install -m644 "$srcdir"/$pkgbase-$_pkgver/man/$man.1 "$pkgdir"/usr/share/man/man1/$man.1
done
# provided by mariadb
rm "$pkgdir"/usr/bin/{mysql_{plugin,upgrade},mysqlbinlog,mysqltest}
+
+}
+
+package_mytop() {
+ pkgdesc='Top clone for MariaDB'
+ depends=('perl-dbd-mysql' 'perl-term-readkey')
+
+ cd build
+ install -Dm755 scripts/mytop "$pkgdir"/usr/bin/mytop
}
package_mariadb() {
@@ -107,31 +121,33 @@ package_mariadb() {
backup=('etc/mysql/my.cnf')
install=mariadb.install
depends=('mariadb-clients' 'inetutils')
- conflicts=('mysql' 'mytop')
- provides=("mysql=$pkgver" 'mytop')
- optdepends=('perl-dbd-mysql: mytop dependency'
- 'perl-term-readkey: mytop dependency')
+ conflicts=('mysql')
+ provides=("mysql=$pkgver")
options=('emptydirs')
- cd "$srcdir"/build
+ cd build
make DESTDIR="$pkgdir" install
install -Dm644 "$pkgdir"/usr/share/mysql/my-medium.cnf "$pkgdir"/etc/mysql/my.cnf
- install -Dm755 "$srcdir"/mariadb-post.sh "$pkgdir"/usr/bin/mysqld-post
- install -Dm644 "$srcdir"/mariadb.service "$pkgdir"/usr/lib/systemd/system/mysqld.service
- install -Dm644 "$srcdir"/mariadb-tmpfile.conf "$pkgdir"/usr/lib/tmpfiles.d/mysql.conf
+ install -Dm755 ../mariadb-post.sh "$pkgdir"/usr/bin/mysqld-post
+ install -Dm644 ../mariadb.service "$pkgdir"/usr/lib/systemd/system/mysqld.service
+ install -Dm644 ../mariadb-tmpfile.conf "$pkgdir"/usr/lib/tmpfiles.d/mysql.conf
# provided by libmariadbclient
- rm "$pkgdir"/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}
- rm "$pkgdir"/usr/lib/libmysql*
- rm -r "$pkgdir"/usr/include/
- rm "$pkgdir"/usr/share/man/man1/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}.1
+ cd "$pkgdir"
+ rm usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}
+ rm usr/lib/libmysql*
+ rm -r usr/include/
+ rm usr/share/man/man1/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}.1
# provided by mariadb-clients
- rm "$pkgdir"/usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}
- rm "$pkgdir"/usr/share/man/man1/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1
+ rm usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}
+ rm usr/share/man/man1/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1
+
+ # provided by mytop
+ rm usr/bin/mytop
# not needed
- rm -r "$pkgdir"/usr/{data,mysql-test,sql-bench}
- rm "$pkgdir"/usr/share/man/man1/mysql-test-run.pl.1
+ rm -r usr/{data,mysql-test,sql-bench}
+ rm usr/share/man/man1/mysql-test-run.pl.1
}
diff --git a/extra/php-xcache/PKGBUILD b/extra/php-xcache/PKGBUILD
index 37b93da0d..a995f2197 100644
--- a/extra/php-xcache/PKGBUILD
+++ b/extra/php-xcache/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 194213 2013-09-10 15:28:33Z pierre $
+# $Id: PKGBUILD 195126 2013-09-25 11:18:14Z pierre $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgname=php-xcache
pkgver=3.1.0dev
-_svnrev=1368
-pkgrel=13
+_svnrev=1394
+pkgrel=14
arch=('i686' 'x86_64')
pkgdesc='A PHP opcode cacher'
url='http://xcache.lighttpd.net/'
diff --git a/extra/pigeonhole/PKGBUILD b/extra/pigeonhole/PKGBUILD
index 34046030f..1d1fd930e 100644
--- a/extra/pigeonhole/PKGBUILD
+++ b/extra/pigeonhole/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 192153 2013-08-06 14:10:47Z andyrtr $
+# $Id: PKGBUILD 195141 2013-09-25 15:41:45Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributorr: Peter Lewis <plewis@aur.archlinux.org>
@@ -7,12 +7,12 @@
# This must be built against the version of dovecot being used,
# else mail delivery will fail.
# Specify the version of dovecot to be used here:
-_dcpkgver=2.2.5
+_dcpkgver=2.2.6
# Make sure to bump pkgrel if changing this.
pkgname=pigeonhole
pkgver=0.4.1
-pkgrel=2
+pkgrel=3
pkgdesc="Sieve implementation for Dovecot"
arch=('i686' 'x86_64')
url="http://pigeonhole.dovecot.org/"
diff --git a/extra/ruby/0001-remove-db-support.patch b/extra/ruby/0001-remove-db-support.patch
new file mode 100644
index 000000000..bdd7e5871
--- /dev/null
+++ b/extra/ruby/0001-remove-db-support.patch
@@ -0,0 +1,35 @@
+From b653d6ffe9ec25c203fc0cbbbdd72e9b42546283 Mon Sep 17 00:00:00 2001
+From: Thomas Dziedzic <gostrc@gmail.com>
+Date: Sat, 10 Aug 2013 10:50:16 -0700
+Subject: [PATCH] remove db support
+
+---
+ ext/dbm/extconf.rb | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb
+index 32a9446..2412404 100644
+--- a/ext/dbm/extconf.rb
++++ b/ext/dbm/extconf.rb
+@@ -5,17 +5,11 @@ dir_config("dbm")
+ if dblib = with_config("dbm-type", nil)
+ dblib = dblib.split(/[ ,]+/)
+ else
+- dblib = %w(libc db db2 db1 db5 db4 db3 gdbm_compat gdbm qdbm)
++ dblib = %w(libc gdbm_compat gdbm qdbm)
+ end
+
+ headers = {
+ "libc" => ["ndbm.h"], # 4.3BSD original ndbm, Berkeley DB 1 in 4.4BSD libc.
+- "db" => ["db.h"],
+- "db1" => ["db1/ndbm.h", "db1.h", "ndbm.h"],
+- "db2" => ["db2/db.h", "db2.h", "db.h"],
+- "db3" => ["db3/db.h", "db3.h", "db.h"],
+- "db4" => ["db4/db.h", "db4.h", "db.h"],
+- "db5" => ["db5/db.h", "db5.h", "db.h"],
+ "gdbm_compat" => ["gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h"], # GDBM since 1.8.1
+ "gdbm" => ["gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h"], # GDBM until 1.8.0
+ "qdbm" => ["qdbm/relic.h", "relic.h"],
+--
+1.8.3.4
+
diff --git a/extra/ruby/PKGBUILD b/extra/ruby/PKGBUILD
index 2446d2a73..5737c5a6a 100644
--- a/extra/ruby/PKGBUILD
+++ b/extra/ruby/PKGBUILD
@@ -5,20 +5,25 @@
pkgname=('ruby' 'ruby-docs')
pkgver=2.0.0_p247
-pkgrel=1
+pkgrel=3
arch=('i686' 'x86_64')
url='http://www.ruby-lang.org/en/'
license=('BSD' 'custom')
-makedepends=('openssl' 'tk' 'libffi' 'doxygen' 'graphviz' 'libyaml')
+makedepends=('gdbm' 'openssl' 'tk' 'libffi' 'doxygen' 'graphviz' 'libyaml')
options=('!emptydirs' '!makeflags')
source=("ftp://ftp.ruby-lang.org/pub/ruby/${pkgver%.*}/ruby-${pkgver//_/-}.tar.bz2"
- 'gemrc')
+ 'gemrc'
+ '0001-remove-db-support.patch')
md5sums=('60913f3eec0c4071f44df42600be2604'
- '6fb8e7a09955e0f64be3158fb4a27e7a')
+ '6fb8e7a09955e0f64be3158fb4a27e7a'
+ 'b93ff50214a3da26525244cf37b71a8f')
build() {
cd ruby-${pkgver//_/-}
+ # use gdbm because db v6 changed the license to AGPL
+ patch -Np1 -i ${srcdir}/0001-remove-db-support.patch
+
PKG_CONFIG=/usr/bin/pkg-config ./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -37,7 +42,7 @@ check() {
package_ruby() {
pkgdesc='An object-oriented language for quick and easy programming'
- depends=('openssl' 'libffi' 'libyaml')
+ depends=('gdbm' 'openssl' 'libffi' 'libyaml')
optdepends=('tk: for Ruby/TK'
'ruby-docs: Ruby documentation')
provides=('rubygems' 'rake')
diff --git a/extra/udisks2/PKGBUILD b/extra/udisks2/PKGBUILD
index 3ad4e5588..53aa1d3d4 100644
--- a/extra/udisks2/PKGBUILD
+++ b/extra/udisks2/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 194551 2013-09-18 12:53:28Z tomegun $
+# $Id: PKGBUILD 195132 2013-09-25 13:30:53Z jgc $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=udisks2
pkgver=2.1.1
-pkgrel=1
+pkgrel=3
pkgdesc="Disk Management Service, version 2"
arch=('i686' 'x86_64')
url="http://www.freedesktop.org/wiki/Software/udisks"
@@ -11,7 +11,9 @@ license=('GPL2')
depends=('glib2' 'systemd' 'polkit' 'libatasmart' 'util-linux')
makedepends=('intltool' 'docbook-xsl' 'gobject-introspection' 'python')
optdepends=('parted: partition management'
- 'gptfdisk: GUID partition table support')
+ 'gptfdisk: GUID partition table support'
+ 'ntfs-3g: NTFS filesystem management support'
+ 'dosfstools: VFAT filesystem management support')
options=(!libtool)
source=(http://udisks.freedesktop.org/releases/udisks-$pkgver.tar.bz2)
sha256sums=('013b09ff38aa256b89c01525771f4565cb088724d5c8c79b32e9f811e88086fb')
diff --git a/extra/xf86-video-fbdev/PKGBUILD b/extra/xf86-video-fbdev/PKGBUILD
index 6d7cec9fe..ec16a2fea 100644
--- a/extra/xf86-video-fbdev/PKGBUILD
+++ b/extra/xf86-video-fbdev/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 180197 2013-03-18 16:09:06Z andyrtr $
+# $Id: PKGBUILD 195144 2013-09-25 17:08:11Z andyrtr $
#Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-fbdev
-pkgver=0.4.3
-pkgrel=3
+pkgver=0.4.4
+pkgrel=1
pkgdesc="X.org framebuffer video driver"
arch=(i686 x86_64)
license=('custom')
@@ -13,19 +13,17 @@ makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=14' 'resourceproto' 'sc
conflicts=('xorg-server<1.14.0' 'X-ABI-VIDEODRV_VERSION<14' 'X-ABI-VIDEODRV_VERSION>=15')
groups=('xorg-drivers' 'xorg')
options=('!libtool')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 git-fix.diff)
-sha256sums=('ff7b037ad110040a4e2db5c84e9741125dbbaf3a08107db47760f3e11f9c4831'
- '4eb30cc4db5d1789429861d2d8f15238b21204d4311763ab7a1f4f32ff2b0321')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i ${srcdir}/git-fix.diff
+ cd ${pkgname}-${pkgver}
./configure --prefix=/usr
make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd ${pkgname}-${pkgver}
make DESTDIR="${pkgdir}" install
install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
diff --git a/extra/xf86-video-fbdev/git-fix.diff b/extra/xf86-video-fbdev/git-fix.diff
deleted file mode 100644
index 138d5bc2a..000000000
--- a/extra/xf86-video-fbdev/git-fix.diff
+++ /dev/null
@@ -1,29 +0,0 @@
-From ac293412a01d87f87eb61f4adb9db7486a75d3fc Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Tue, 25 Sep 2012 12:54:37 +0000
-Subject: Remove mibstore.h
-
-Signed-off-by: Adam Jackson <ajax@redhat.com>
----
-diff --git a/src/fbdev.c b/src/fbdev.c
-index cd7ebc5..f5a7378 100644
---- a/src/fbdev.c
-+++ b/src/fbdev.c
-@@ -14,7 +14,6 @@
- #include "xf86_OSproc.h"
-
- #include "mipointer.h"
--#include "mibstore.h"
- #include "micmap.h"
- #include "colormapst.h"
- #include "xf86cmap.h"
-@@ -845,7 +844,6 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
- }
-
- xf86SetBlackWhitePixels(pScreen);
-- miInitializeBackingStore(pScreen);
- xf86SetBackingStore(pScreen);
-
- /* software cursor */
---
-cgit v0.9.0.2-2-gbebe
diff --git a/extra/xf86-video-savage/PKGBUILD b/extra/xf86-video-savage/PKGBUILD
index d5f9a2eea..08158f8fc 100644
--- a/extra/xf86-video-savage/PKGBUILD
+++ b/extra/xf86-video-savage/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 181070 2013-03-31 08:09:15Z andyrtr $
+# $Id: PKGBUILD 195146 2013-09-25 17:11:53Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-savage
-pkgver=2.3.6
-pkgrel=4
+pkgver=2.3.7
+pkgrel=1
pkgdesc="X.org savage video driver"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
@@ -14,21 +14,17 @@ conflicts=('xorg-server<1.14.0' 'X-ABI-VIDEODRV_VERSION<14' 'X-ABI-VIDEODRV_VERS
optdepends=('savage-dri: DRI1 support from community repo')
options=(!libtool)
groups=('xorg-drivers' 'xorg')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
- git_fixes.diff)
-sha256sums=('48813ed8f4a08858e8c2466fd2dc810ea31f86842025fa39ec949d44f9ad63d6'
- 'b415bab5bbad890365c649fe3daa47db23428e92b4a4d8e5aa685e9d78de668d')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('041d4205c9222c1780fba6e0e397a559aed393b7a7991b58fa79ba8cccc54a44')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i ${srcdir}/git_fixes.diff
+ cd ${pkgname}-${pkgver}
./configure --prefix=/usr
make
}
package() {
- #cd "${srcdir}/${pkgname}-${pkgver}"
- cd ${srcdir}/${pkgname}*
+ cd ${pkgname}-${pkgver}
make DESTDIR="${pkgdir}" install
install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
diff --git a/extra/xf86-video-savage/git_fixes.diff b/extra/xf86-video-savage/git_fixes.diff
deleted file mode 100644
index 8d5ef49b0..000000000
--- a/extra/xf86-video-savage/git_fixes.diff
+++ /dev/null
@@ -1,64 +0,0 @@
-From 3d181030a6ba2205a57ef4665e53aed0251ccaa6 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied@gmail.com>
-Date: Wed, 18 Jul 2012 08:52:38 +0000
-Subject: savage: move compat-api.h down to proper place.
-
-This screws up when DRI isn't enabled.
-
-Signed-off-by: Dave Airlie <airlied@redhat.com>
----
-diff --git a/src/savage_driver.h b/src/savage_driver.h
-index b604292..ec4b1ea 100644
---- a/src/savage_driver.h
-+++ b/src/savage_driver.h
-@@ -85,8 +85,6 @@
- #include "GL/glxint.h"
- #include "xf86drm.h"
-
--#include "compat-api.h"
--
- /* Totals 2 Mbytes which equals 2^16 32-byte vertices divided among up
- * to 32 clients. */
- #define SAVAGE_NUM_BUFFERS 32
-@@ -153,6 +151,8 @@ typedef struct _server{
-
- #endif
-
-+#include "compat-api.h"
-+
- typedef enum {
- MT_NONE,
- MT_CRT,
---
-cgit v0.9.0.2-2-gbebe
-From ca9718a887ecbc59b76869af673791ab591b849b Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied@gmail.com>
-Date: Sat, 22 Dec 2012 10:00:00 +0000
-Subject: savage: fix default accel arch when built with no XAA
-
-Signed-off-by: Dave Airlie <airlied@redhat.com>
----
-diff --git a/src/savage_driver.c b/src/savage_driver.c
-index 026bf5c..5b49e60 100644
---- a/src/savage_driver.c
-+++ b/src/savage_driver.c
-@@ -1267,6 +1267,7 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
- from = X_DEFAULT;
- char *strptr;
- if((strptr = (char *)xf86GetOptValString(psav->Options, OPTION_ACCELMETHOD))) {
-+#ifdef HAVE_XAA_H
- if(!xf86NameCmp(strptr,"XAA")) {
- from = X_CONFIG;
- psav->useEXA = FALSE;
-@@ -1274,6 +1275,9 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
- from = X_CONFIG;
- psav->useEXA = TRUE;
- }
-+#else
-+ psav->useEXA = TRUE;
-+#endif
- }
- xf86DrvMsg(pScrn->scrnIndex, from, "Using %s acceleration architecture\n",
- psav->useEXA ? "EXA" : "XAA");
---
-cgit v0.9.0.2-2-gbebe
diff --git a/kernels/linux-libre-pae/3.11-haswell-intel_pstate.patch b/kernels/linux-libre-pae/3.11-haswell-intel_pstate.patch
new file mode 100644
index 000000000..1f376b518
--- /dev/null
+++ b/kernels/linux-libre-pae/3.11-haswell-intel_pstate.patch
@@ -0,0 +1,32 @@
+From 6cdcdb793791f776ea9408581b1242b636d43b37 Mon Sep 17 00:00:00 2001
+From: Nell Hardcastle <nell@spicious.com>
+Date: Sun, 30 Jun 2013 22:58:57 +0000
+Subject: intel_pstate: Add Haswell CPU models
+
+Enable the intel_pstate driver for Haswell CPUs. One missing Ivy Bridge
+model (0x3E) is also included. Models referenced from
+tools/power/x86/turbostat/turbostat.c:has_nehalem_turbo_ratio_limit
+
+Signed-off-by: Nell Hardcastle <nell@spicious.com>
+Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
+Acked-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+---
+diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
+index 6efd96c..9733f29 100644
+--- a/drivers/cpufreq/intel_pstate.c
++++ b/drivers/cpufreq/intel_pstate.c
+@@ -522,6 +522,11 @@ static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
+ ICPU(0x2a, default_policy),
+ ICPU(0x2d, default_policy),
+ ICPU(0x3a, default_policy),
++ ICPU(0x3c, default_policy),
++ ICPU(0x3e, default_policy),
++ ICPU(0x3f, default_policy),
++ ICPU(0x45, default_policy),
++ ICPU(0x46, default_policy),
+ {}
+ };
+ MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
+--
+cgit v0.9.2
diff --git a/kernels/linux-libre-pae/3.11.1-fix-skge.patch b/kernels/linux-libre-pae/3.11.1-fix-skge.patch
new file mode 100644
index 000000000..26d90e080
--- /dev/null
+++ b/kernels/linux-libre-pae/3.11.1-fix-skge.patch
@@ -0,0 +1,34 @@
+--- a/drivers/net/ethernet/marvell/skge.c 2013-09-02 16:46:10.000000000 -0400
++++ b/drivers/net/ethernet/marvell/skge.c 2013-09-22 11:14:10.232067541 -0400
+@@ -3086,23 +3086,27 @@
+ PCI_DMA_FROMDEVICE);
+ skge_rx_reuse(e, skge->rx_buf_size);
+ } else {
++ struct skge_element ee;
+ struct sk_buff *nskb;
+
+ nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);
+ if (!nskb)
+ goto resubmit;
+
++ ee = *e;
++
++ skb = ee.skb;
++ prefetch(skb->data);
++
+ if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
+ dev_kfree_skb(nskb);
+ goto resubmit;
+ }
+
+ pci_unmap_single(skge->hw->pdev,
+- dma_unmap_addr(e, mapaddr),
+- dma_unmap_len(e, maplen),
++ dma_unmap_addr(&ee, mapaddr),
++ dma_unmap_len(&ee, maplen),
+ PCI_DMA_FROMDEVICE);
+- skb = e->skb;
+- prefetch(skb->data);
+ }
+
+ skb_put(skb, len);
diff --git a/kernels/linux-libre-pae/PKGBUILD b/kernels/linux-libre-pae/PKGBUILD
index 2ca4cb45f..73b12e493 100644
--- a/kernels/linux-libre-pae/PKGBUILD
+++ b/kernels/linux-libre-pae/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 194378 2013-09-15 09:16:34Z tpowa $
+# $Id: PKGBUILD 195142 2013-09-25 15:58:07Z tpowa $
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
@@ -7,7 +7,7 @@ pkgbase=linux-libre-pae # Build stock -LIBRE-PAE kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.11
pkgver=${_basekernel}.1
-pkgrel=1
+pkgrel=3
arch=('i686')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -21,14 +21,18 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
"${pkgbase}.preset"
'boot-logo.patch'
'change-default-console-loglevel.patch'
- 'criu-no-expert.patch')
+ 'criu-no-expert.patch'
+ '3.11.1-fix-skge.patch'
+ '3.11-haswell-intel_pstate.patch')
md5sums=('7ec84223c7adcf01a5287eb7af96b7e7'
'7b051faf375c76d4763a24048c52600b'
'bef7b3ced683c4dc9361f8739ec9f566'
'f302c931bd85309da9d9792b4cc96467'
'36e90334b12b2e9d53fd92129ee98f5b'
'98beb36f9b8cf16e58de2483ea9985e3'
- 'd50c1ac47394e9aec637002ef3392bd1')
+ 'd50c1ac47394e9aec637002ef3392bd1'
+ '4fcee2b4485492dcfdead632275198eb'
+ '1040ae6c10d4a68f89899f94a2318a17')
_kernelname=${pkgbase#linux-libre}
_localversionname=-LIBRE-PAE
@@ -48,6 +52,14 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # #36865 fix broken skge network module
+ patch -Np1 -i "${srcdir}/3.11.1-fix-skge.patch"
+
+ # add intel haswell support to intel_pstate
+ # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=6cdcdb793791f776ea9408581b1242b636d43b37
+ # will be in 3.12
+ patch -Np1 -i "${srcdir}/3.11-haswell-intel_pstate.patch"
+
# allow criu without expert option set
# patch from fedora
patch -Np1 -i "${srcdir}/criu-no-expert.patch"
diff --git a/kernels/linux-libre-xen/3.11-haswell-intel_pstate.patch b/kernels/linux-libre-xen/3.11-haswell-intel_pstate.patch
new file mode 100644
index 000000000..1f376b518
--- /dev/null
+++ b/kernels/linux-libre-xen/3.11-haswell-intel_pstate.patch
@@ -0,0 +1,32 @@
+From 6cdcdb793791f776ea9408581b1242b636d43b37 Mon Sep 17 00:00:00 2001
+From: Nell Hardcastle <nell@spicious.com>
+Date: Sun, 30 Jun 2013 22:58:57 +0000
+Subject: intel_pstate: Add Haswell CPU models
+
+Enable the intel_pstate driver for Haswell CPUs. One missing Ivy Bridge
+model (0x3E) is also included. Models referenced from
+tools/power/x86/turbostat/turbostat.c:has_nehalem_turbo_ratio_limit
+
+Signed-off-by: Nell Hardcastle <nell@spicious.com>
+Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
+Acked-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+---
+diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
+index 6efd96c..9733f29 100644
+--- a/drivers/cpufreq/intel_pstate.c
++++ b/drivers/cpufreq/intel_pstate.c
+@@ -522,6 +522,11 @@ static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
+ ICPU(0x2a, default_policy),
+ ICPU(0x2d, default_policy),
+ ICPU(0x3a, default_policy),
++ ICPU(0x3c, default_policy),
++ ICPU(0x3e, default_policy),
++ ICPU(0x3f, default_policy),
++ ICPU(0x45, default_policy),
++ ICPU(0x46, default_policy),
+ {}
+ };
+ MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
+--
+cgit v0.9.2
diff --git a/kernels/linux-libre-xen/3.11.1-fix-skge.patch b/kernels/linux-libre-xen/3.11.1-fix-skge.patch
new file mode 100644
index 000000000..26d90e080
--- /dev/null
+++ b/kernels/linux-libre-xen/3.11.1-fix-skge.patch
@@ -0,0 +1,34 @@
+--- a/drivers/net/ethernet/marvell/skge.c 2013-09-02 16:46:10.000000000 -0400
++++ b/drivers/net/ethernet/marvell/skge.c 2013-09-22 11:14:10.232067541 -0400
+@@ -3086,23 +3086,27 @@
+ PCI_DMA_FROMDEVICE);
+ skge_rx_reuse(e, skge->rx_buf_size);
+ } else {
++ struct skge_element ee;
+ struct sk_buff *nskb;
+
+ nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);
+ if (!nskb)
+ goto resubmit;
+
++ ee = *e;
++
++ skb = ee.skb;
++ prefetch(skb->data);
++
+ if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
+ dev_kfree_skb(nskb);
+ goto resubmit;
+ }
+
+ pci_unmap_single(skge->hw->pdev,
+- dma_unmap_addr(e, mapaddr),
+- dma_unmap_len(e, maplen),
++ dma_unmap_addr(&ee, mapaddr),
++ dma_unmap_len(&ee, maplen),
+ PCI_DMA_FROMDEVICE);
+- skb = e->skb;
+- prefetch(skb->data);
+ }
+
+ skb_put(skb, len);
diff --git a/kernels/linux-libre-xen/PKGBUILD b/kernels/linux-libre-xen/PKGBUILD
index 7ff630c05..437c48670 100644
--- a/kernels/linux-libre-xen/PKGBUILD
+++ b/kernels/linux-libre-xen/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 194378 2013-09-15 09:16:34Z tpowa $
+# $Id: PKGBUILD 195142 2013-09-25 15:58:07Z tpowa $
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
@@ -7,7 +7,7 @@ pkgbase=linux-libre-xen # Build stock -LIBRE-XEN kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.11
pkgver=${_basekernel}.1
-pkgrel=1
+pkgrel=3
arch=('i686')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -21,14 +21,18 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
"${pkgbase}.preset"
'boot-logo.patch'
'change-default-console-loglevel.patch'
- 'criu-no-expert.patch')
+ 'criu-no-expert.patch'
+ '3.11.1-fix-skge.patch'
+ '3.11-haswell-intel_pstate.patch')
md5sums=('7ec84223c7adcf01a5287eb7af96b7e7'
'7b051faf375c76d4763a24048c52600b'
'212338fa662436f9590026c9a71d82f7'
'b7c2805bb287a644c0a303bf7721e534'
'36e90334b12b2e9d53fd92129ee98f5b'
'98beb36f9b8cf16e58de2483ea9985e3'
- 'd50c1ac47394e9aec637002ef3392bd1')
+ 'd50c1ac47394e9aec637002ef3392bd1'
+ '4fcee2b4485492dcfdead632275198eb'
+ '1040ae6c10d4a68f89899f94a2318a17')
_kernelname=${pkgbase#linux-libre}
_localversionname=-LIBRE-XEN
@@ -48,6 +52,14 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # #36865 fix broken skge network module
+ patch -Np1 -i "${srcdir}/3.11.1-fix-skge.patch"
+
+ # add intel haswell support to intel_pstate
+ # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=6cdcdb793791f776ea9408581b1242b636d43b37
+ # will be in 3.12
+ patch -Np1 -i "${srcdir}/3.11-haswell-intel_pstate.patch"
+
# allow criu without expert option set
# patch from fedora
patch -Np1 -i "${srcdir}/criu-no-expert.patch"
diff --git a/libre/linux-libre/3.11-haswell-intel_pstate.patch b/libre/linux-libre/3.11-haswell-intel_pstate.patch
new file mode 100644
index 000000000..1f376b518
--- /dev/null
+++ b/libre/linux-libre/3.11-haswell-intel_pstate.patch
@@ -0,0 +1,32 @@
+From 6cdcdb793791f776ea9408581b1242b636d43b37 Mon Sep 17 00:00:00 2001
+From: Nell Hardcastle <nell@spicious.com>
+Date: Sun, 30 Jun 2013 22:58:57 +0000
+Subject: intel_pstate: Add Haswell CPU models
+
+Enable the intel_pstate driver for Haswell CPUs. One missing Ivy Bridge
+model (0x3E) is also included. Models referenced from
+tools/power/x86/turbostat/turbostat.c:has_nehalem_turbo_ratio_limit
+
+Signed-off-by: Nell Hardcastle <nell@spicious.com>
+Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
+Acked-by: Dirk Brandewie <dirk.j.brandewie@intel.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+---
+diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
+index 6efd96c..9733f29 100644
+--- a/drivers/cpufreq/intel_pstate.c
++++ b/drivers/cpufreq/intel_pstate.c
+@@ -522,6 +522,11 @@ static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
+ ICPU(0x2a, default_policy),
+ ICPU(0x2d, default_policy),
+ ICPU(0x3a, default_policy),
++ ICPU(0x3c, default_policy),
++ ICPU(0x3e, default_policy),
++ ICPU(0x3f, default_policy),
++ ICPU(0x45, default_policy),
++ ICPU(0x46, default_policy),
+ {}
+ };
+ MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
+--
+cgit v0.9.2
diff --git a/libre/linux-libre/3.11.1-fix-skge.patch b/libre/linux-libre/3.11.1-fix-skge.patch
new file mode 100644
index 000000000..26d90e080
--- /dev/null
+++ b/libre/linux-libre/3.11.1-fix-skge.patch
@@ -0,0 +1,34 @@
+--- a/drivers/net/ethernet/marvell/skge.c 2013-09-02 16:46:10.000000000 -0400
++++ b/drivers/net/ethernet/marvell/skge.c 2013-09-22 11:14:10.232067541 -0400
+@@ -3086,23 +3086,27 @@
+ PCI_DMA_FROMDEVICE);
+ skge_rx_reuse(e, skge->rx_buf_size);
+ } else {
++ struct skge_element ee;
+ struct sk_buff *nskb;
+
+ nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);
+ if (!nskb)
+ goto resubmit;
+
++ ee = *e;
++
++ skb = ee.skb;
++ prefetch(skb->data);
++
+ if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
+ dev_kfree_skb(nskb);
+ goto resubmit;
+ }
+
+ pci_unmap_single(skge->hw->pdev,
+- dma_unmap_addr(e, mapaddr),
+- dma_unmap_len(e, maplen),
++ dma_unmap_addr(&ee, mapaddr),
++ dma_unmap_len(&ee, maplen),
+ PCI_DMA_FROMDEVICE);
+- skb = e->skb;
+- prefetch(skb->data);
+ }
+
+ skb_put(skb, len);
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD
index 70d9f739b..1f0e471eb 100644
--- a/libre/linux-libre/PKGBUILD
+++ b/libre/linux-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 194378 2013-09-15 09:16:34Z tpowa $
+# $Id: PKGBUILD 195142 2013-09-25 15:58:07Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
@@ -12,8 +12,8 @@ pkgbase=linux-libre # Build stock -LIBRE kernel
_basekernel=3.11
_sublevel=1
pkgver=${_basekernel}.${_sublevel}
-pkgrel=1
-_lxopkgver=${_basekernel}.0 # nearly always the same as pkgver
+pkgrel=3
+_lxopkgver=${_basekernel}.1 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -30,6 +30,8 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'boot-logo.patch'
'change-default-console-loglevel.patch'
'criu-no-expert.patch'
+ '3.11.1-fix-skge.patch'
+ '3.11-haswell-intel_pstate.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2")
md5sums=('7ec84223c7adcf01a5287eb7af96b7e7'
'7b051faf375c76d4763a24048c52600b'
@@ -41,6 +43,8 @@ md5sums=('7ec84223c7adcf01a5287eb7af96b7e7'
'36e90334b12b2e9d53fd92129ee98f5b'
'98beb36f9b8cf16e58de2483ea9985e3'
'd50c1ac47394e9aec637002ef3392bd1'
+ '4fcee2b4485492dcfdead632275198eb'
+ '1040ae6c10d4a68f89899f94a2318a17'
'135ff203ec680a91e87eed4df72f453d')
if [ "$CARCH" != "mips64el" ]; then
# don't use the Loongson-specific patches on non-mips64el arches.
@@ -66,6 +70,14 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # #36865 fix broken skge network module
+ patch -Np1 -i "${srcdir}/3.11.1-fix-skge.patch"
+
+ # add intel haswell support to intel_pstate
+ # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=6cdcdb793791f776ea9408581b1242b636d43b37
+ # will be in 3.12
+ patch -Np1 -i "${srcdir}/3.11-haswell-intel_pstate.patch"
+
# allow criu without expert option set
# patch from fedora
patch -Np1 -i "${srcdir}/criu-no-expert.patch"
diff --git a/pcr/dratmenu/PKGBUILD b/pcr/dratmenu/PKGBUILD
new file mode 100644
index 000000000..8d6a2b357
--- /dev/null
+++ b/pcr/dratmenu/PKGBUILD
@@ -0,0 +1,36 @@
+# Contributor: ivoarch <ivkuzev@gmail.com>
+# Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@replicant.io>
+
+pkgname=dratmenu
+pkgver=20121218
+pkgrel=1
+pkgdesc="ratpoison window dmenu"
+arch=('any')
+url="https://github.com/dimatura/dratmenu.git"
+license=('GPL')
+depends=('dmenu' 'python2')
+makedepends=('git')
+
+_gitroot="https://github.com/dimatura/dratmenu.git"
+_gitname="master"
+
+build() {
+ cd $srcdir
+
+ if [ -d $srcdir/$pkgname ] ; then
+ msg "update git"
+ cd $pkgname && git pull origin
+ else
+ msg "clone git"
+ git clone $_gitroot
+ fi
+}
+
+package() {
+ mkdir -p $pkgdir/usr/lib/python2.7/site-packages
+ cp -r $srcdir/$pkgname $pkgdir/usr/lib/python2.7/site-packages
+ mkdir -p $pkgdir/usr/bin
+ echo "#!/bin/bash
+ python2 /usr/lib/python2.7/site-packages/$pkgname/dratmenu.py" > $pkgdir/usr/bin/dratmenu
+ chmod +x $pkgdir/usr/bin/dratmenu
+}
diff --git a/pcr/python-jedi/PKGBUILD b/pcr/python-jedi/PKGBUILD
new file mode 100644
index 000000000..d34823097
--- /dev/null
+++ b/pcr/python-jedi/PKGBUILD
@@ -0,0 +1,23 @@
+# Contributor: Jesus Alvarez
+# Contributor: Danilo Bargen <gezuru@gmail.com>
+# Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@replicant.io>
+pkgname=python-jedi
+pkgver=0.7.0
+pkgrel=1
+pkgdesc="Awesome autocompletion for python. Official PKGBUILD."
+arch=('any')
+url="https://github.com/davidhalter/jedi"
+license=('LGPL3')
+depends=('python')
+makedepends=('python-distribute')
+conflicts=('jedi-git' 'python3-jedi-git')
+options=(!emptydirs)
+source=("https://pypi.python.org/packages/source/j/jedi/jedi-${pkgver}.tar.gz")
+
+
+package() {
+ cd "$srcdir/jedi-$pkgver"
+ python setup.py install --root="$pkgdir/" --optimize=1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/ttf-font-awesome/PKGBUILD b/pcr/ttf-font-awesome/PKGBUILD
new file mode 100644
index 000000000..abb63b8a6
--- /dev/null
+++ b/pcr/ttf-font-awesome/PKGBUILD
@@ -0,0 +1,19 @@
+#Contributer: UNKNOWN o_O
+#Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@replicant.io>
+
+pkgname=ttf-font-awesome
+pkgver=3.2.1
+pkgrel=2
+pkgdesc="Iconic font designed for Bootstrap"
+url="http://fortawesome.github.io/Font-Awesome/"
+license=('CCPL')
+depends=('fontconfig' 'xorg-font-utils')
+options=("!strip")
+install=$pkgname.install
+arch=('any')
+source=('http://fortawesome.github.io/Font-Awesome/assets/font-awesome.zip')
+
+package() {
+ install -d "$pkgdir/usr/share/fonts/TTF"
+ cp -dpr --no-preserve=ownership "$srcdir/font-awesome/font/"*.ttf "$pkgdir/usr/share/fonts/TTF/"
+}
diff --git a/pcr/ttf-font-awesome/ttf-font-awesome.install b/pcr/ttf-font-awesome/ttf-font-awesome.install
new file mode 100644
index 000000000..56632d242
--- /dev/null
+++ b/pcr/ttf-font-awesome/ttf-font-awesome.install
@@ -0,0 +1,20 @@
+post_install() {
+ echo -n "Updating font cache..."
+ fc-cache -f > /dev/null
+ mkfontscale /usr/share/fonts/TTF
+ mkfontdir /usr/share/fonts/TTF
+ echo "done."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/pcr/xfwm4-titleless/PKGBUILD b/pcr/xfwm4-titleless/PKGBUILD
new file mode 100644
index 000000000..dd80d287d
--- /dev/null
+++ b/pcr/xfwm4-titleless/PKGBUILD
@@ -0,0 +1,46 @@
+# Contributor: Christian Hesse <mail@eworm.de>
+# Contributor: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: tobias <tobias funnychar archlinux.org>
+# Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@replicant.io>
+
+pkgname=xfwm4-titleless
+pkgver=4.10.1
+pkgrel=1
+pkgdesc="Xfce window manager - patched with option to hide titlebar when maximized"
+arch=('i686' 'x86_64')
+url="https://bitbucket.org/thesame/xfwm4-titleless"
+license=('GPL2')
+depends=('libxfce4ui' 'libwnck' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+conflicts=('xfwm4')
+provides=('xfwm4')
+install=${pkgname%%-*}.install
+source=("http://archive.xfce.org/src/xfce/${pkgname%%-*}/4.10/${pkgname%%-*}-${pkgver}.tar.bz2"
+ "xfwm4-hide-titlebar-when-maximized.patch")
+
+build() {
+ cd "${srcdir}/${pkgname%%-*}-${pkgver}"
+
+ patch -Np1 < ${srcdir}/xfwm4-hide-titlebar-when-maximized.patch
+
+ ./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}/${pkgname%%-*}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
+
diff --git a/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch b/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch
new file mode 100644
index 000000000..fa43b6b8e
--- /dev/null
+++ b/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch
@@ -0,0 +1,1456 @@
+From 999c375f5342947525813584fbdc92f3b63dced6 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <eworm@leda.eworm.de>
+Date: Wed, 25 Sep 2013 15:16:57 +0200
+Subject: [PATCH 1/1] xfwm4: hide titlebar when maximized
+
+---
+ defaults/defaults | 1 +
+ settings-dialogs/tweaks-settings.c | 5 +
+ settings-dialogs/xfwm4-tweaks-dialog.glade | 25 +-
+ settings-dialogs/xfwm4-tweaks-dialog_ui.h | 612 +++++++++++++++--------------
+ src/client.c | 6 +
+ src/client.h | 1 +
+ src/display.c | 3 +-
+ src/display.h | 1 +
+ src/events.c | 5 +
+ src/frame.c | 366 ++++++++++-------
+ src/netwm.c | 38 ++
+ src/placement.c | 4 +-
+ src/settings.c | 8 +
+ src/settings.h | 1 +
+ 14 files changed, 616 insertions(+), 460 deletions(-)
+
+diff --git a/defaults/defaults b/defaults/defaults
+index 6db210a..1582fc1 100644
+--- a/defaults/defaults
++++ b/defaults/defaults
+@@ -1,5 +1,6 @@
+ activate_action=bring
+ borderless_maximize=true
++titleless_maximize=false
+ box_move=false
+ box_resize=false
+ button_layout=O|SHMC
+diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c
+index f60b606..2532733 100644
+--- a/settings-dialogs/tweaks-settings.c
++++ b/settings-dialogs/tweaks-settings.c
+@@ -180,6 +180,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder)
+ GtkWidget *easy_click_combo_box = GTK_WIDGET (gtk_builder_get_object (builder, "easy_click_combo_box"));
+ GtkWidget *raise_with_any_button_check = GTK_WIDGET (gtk_builder_get_object (builder, "raise_with_any_button_check"));
+ GtkWidget *borderless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "borderless_maximize_check"));
++ GtkWidget *titleless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "titleless_maximize_check"));
+ GtkWidget *restore_on_move_check = GTK_WIDGET (gtk_builder_get_object (builder, "restore_on_move_check"));
+ GtkWidget *tile_on_move_check = GTK_WIDGET (gtk_builder_get_object (builder, "tile_on_move_check"));
+ GtkWidget *snap_resist_check = GTK_WIDGET (gtk_builder_get_object (builder, "snap_resist_check"));
+@@ -336,6 +337,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder)
+ G_TYPE_BOOLEAN,
+ (GObject *)borderless_maximize_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
++ "/general/titleless_maximize",
++ G_TYPE_BOOLEAN,
++ (GObject *)titleless_maximize_check, "active");
++ xfconf_g_property_bind (xfwm4_channel,
+ "/general/restore_on_move",
+ G_TYPE_BOOLEAN,
+ (GObject *)restore_on_move_check, "active");
+diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade
+index bd2a86f..7d604c6 100644
+--- a/settings-dialogs/xfwm4-tweaks-dialog.glade
++++ b/settings-dialogs/xfwm4-tweaks-dialog.glade
+@@ -343,6 +343,21 @@ or "skip taskbar" properties set</property>
+ </packing>
+ </child>
+ <child>
++ <object class="GtkCheckButton" id="titleless_maximize_check">
++ <property name="label" translatable="yes">Hide _title of windows when maximized</property>
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="receives_default">False</property>
++ <property name="use_underline">True</property>
++ <property name="draw_indicator">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">3</property>
++ </packing>
++ </child>
++ <child>
+ <object class="GtkCheckButton" id="restore_on_move_check">
+ <property name="label" translatable="yes">Restore original _size of maximized windows when moving</property>
+ <property name="visible">True</property>
+@@ -354,7 +369,7 @@ or "skip taskbar" properties set</property>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">3</property>
++ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+@@ -369,7 +384,7 @@ or "skip taskbar" properties set</property>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">4</property>
++ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+@@ -384,7 +399,7 @@ or "skip taskbar" properties set</property>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">5</property>
++ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+@@ -399,7 +414,7 @@ or "skip taskbar" properties set</property>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">5</property>
++ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+@@ -414,7 +429,7 @@ or "skip taskbar" properties set</property>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+- <property name="position">6</property>
++ <property name="position">8</property>
+ </packing>
+ </child>
+ </object>
+diff --git a/settings-dialogs/xfwm4-tweaks-dialog_ui.h b/settings-dialogs/xfwm4-tweaks-dialog_ui.h
+index a6121dd..8ddbf30 100644
+--- a/settings-dialogs/xfwm4-tweaks-dialog_ui.h
++++ b/settings-dialogs/xfwm4-tweaks-dialog_ui.h
+@@ -177,332 +177,340 @@ static const char tweaks_dialog_ui[] =
+ "y><property name=\"draw_indicator\">True</property></object><packing><p"
+ "roperty name=\"expand\">False</property><property name=\"fill\">False</"
+ "property><property name=\"position\">2</property></packing></child><chi"
+- "ld><object class=\"GtkCheckButton\" id=\"restore_on_move_check\"><prope"
+- "rty name=\"label\" translatable=\"yes\">Restore original _size of maxim"
+- "ized windows when moving</property><property name=\"visible\">True</pro"
+- "perty><property name=\"can_focus\">True</property><property name=\"rece"
+- "ives_default\">False</property><property name=\"use_underline\">True</p"
+- "roperty><property name=\"draw_indicator\">True</property></object><pack"
+- "ing><property name=\"expand\">False</property><property name=\"fill\">F"
+- "alse</property><property name=\"position\">3</property></packing></chil"
+- "d><child><object class=\"GtkCheckButton\" id=\"tile_on_move_check\"><pr"
+- "operty name=\"label\" translatable=\"yes\">Automatically _tile windows "
+- "when moving toward the screen edge</property><property name=\"visible\""
+- ">True</property><property name=\"can_focus\">True</property><property n"
+- "ame=\"receives_default\">False</property><property name=\"use_underline"
+- "\">True</property><property name=\"draw_indicator\">True</property></ob"
+- "ject><packing><property name=\"expand\">False</property><property name="
+- "\"fill\">False</property><property name=\"position\">4</property></pack"
+- "ing></child><child><object class=\"GtkCheckButton\" id=\"snap_resist_ch"
+- "eck\"><property name=\"label\" translatable=\"yes\">Use _edge resistanc"
+- "e instead of window snapping</property><property name=\"visible\">True<"
+- "/property><property name=\"can_focus\">True</property><property name=\""
+- "receives_default\">False</property><property name=\"use_underline\">Tru"
+- "e</property><property name=\"draw_indicator\">True</property></object><"
+- "packing><property name=\"expand\">False</property><property name=\"fill"
+- "\">False</property><property name=\"position\">5</property></packing></"
+- "child><child><object class=\"GtkCheckButton\" id=\"urgent_blink\"><prop"
+- "erty name=\"label\" translatable=\"yes\">Notify of _urgency by making w"
+- "indow\'s decoration blink</property><property name=\"visible\">True</pr"
++ "ld><object class=\"GtkCheckButton\" id=\"titleless_maximize_check\"><pr"
++ "operty name=\"label\" translatable=\"yes\">Hide _title of windows when "
++ "maximized</property><property name=\"visible\">True</property><property"
++ " name=\"can_focus\">True</property><property name=\"receives_default\">"
++ "False</property><property name=\"use_underline\">True</property><proper"
++ "ty name=\"draw_indicator\">True</property></object><packing><property n"
++ "ame=\"expand\">False</property><property name=\"fill\">False</property>"
++ "<property name=\"position\">3</property></packing></child><child><objec"
++ "t class=\"GtkCheckButton\" id=\"restore_on_move_check\"><property name="
++ "\"label\" translatable=\"yes\">Restore original _size of maximized wind"
++ "ows when moving</property><property name=\"visible\">True</property><pr"
++ "operty name=\"can_focus\">True</property><property name=\"receives_defa"
++ "ult\">False</property><property name=\"use_underline\">True</property><"
++ "property name=\"draw_indicator\">True</property></object><packing><prop"
++ "erty name=\"expand\">False</property><property name=\"fill\">False</pro"
++ "perty><property name=\"position\">4</property></packing></child><child>"
++ "<object class=\"GtkCheckButton\" id=\"tile_on_move_check\"><property na"
++ "me=\"label\" translatable=\"yes\">Automatically _tile windows when movi"
++ "ng toward the screen edge</property><property name=\"visible\">True</pr"
+ "operty><property name=\"can_focus\">True</property><property name=\"rec"
+ "eives_default\">False</property><property name=\"use_underline\">True</"
+ "property><property name=\"draw_indicator\">True</property></object><pac"
+ "king><property name=\"expand\">False</property><property name=\"fill\">"
+ "False</property><property name=\"position\">5</property></packing></chi"
+- "ld><child><object class=\"GtkCheckButton\" id=\"repeat_urgent_blink\"><"
+- "property name=\"label\" translatable=\"yes\">Keep urgent windows _blink"
+- "ing repeatedly</property><property name=\"visible\">True</property><pro"
++ "ld><child><object class=\"GtkCheckButton\" id=\"snap_resist_check\"><pr"
++ "operty name=\"label\" translatable=\"yes\">Use _edge resistance instead"
++ " of window snapping</property><property name=\"visible\">True</property"
++ "><property name=\"can_focus\">True</property><property name=\"receives_"
++ "default\">False</property><property name=\"use_underline\">True</proper"
++ "ty><property name=\"draw_indicator\">True</property></object><packing><"
++ "property name=\"expand\">False</property><property name=\"fill\">False<"
++ "/property><property name=\"position\">6</property></packing></child><ch"
++ "ild><object class=\"GtkCheckButton\" id=\"urgent_blink\"><property name"
++ "=\"label\" translatable=\"yes\">Notify of _urgency by making window\'s "
++ "decoration blink</property><property name=\"visible\">True</property><p"
++ "roperty name=\"can_focus\">True</property><property name=\"receives_def"
++ "ault\">False</property><property name=\"use_underline\">True</property>"
++ "<property name=\"draw_indicator\">True</property></object><packing><pro"
++ "perty name=\"expand\">False</property><property name=\"fill\">False</pr"
++ "operty><property name=\"position\">7</property></packing></child><child"
++ "><object class=\"GtkCheckButton\" id=\"repeat_urgent_blink\"><property "
++ "name=\"label\" translatable=\"yes\">Keep urgent windows _blinking repea"
++ "tedly</property><property name=\"visible\">True</property><property nam"
++ "e=\"can_focus\">True</property><property name=\"receives_default\">Fals"
++ "e</property><property name=\"use_underline\">True</property><property n"
++ "ame=\"draw_indicator\">True</property></object><packing><property name="
++ "\"expand\">False</property><property name=\"fill\">False</property><pro"
++ "perty name=\"position\">8</property></packing></child></object><packing"
++ "><property name=\"position\">2</property></packing></child><child type="
++ "\"tab\"><object class=\"GtkLabel\" id=\"label3\"><property name=\"visib"
++ "le\">True</property><property name=\"label\" translatable=\"yes\">_Acce"
++ "ssibility</property><property name=\"use_underline\">True</property></o"
++ "bject><packing><property name=\"position\">2</property><property name=\""
++ "tab_fill\">False</property></packing></child><child><object class=\"Gtk"
++ "VBox\" id=\"vbox5\"><property name=\"visible\">True</property><property"
++ " name=\"border_width\">12</property><property name=\"orientation\">vert"
++ "ical</property><property name=\"spacing\">6</property><child><object cl"
++ "ass=\"GtkCheckButton\" id=\"scroll_workspaces_check\"><property name=\""
++ "label\" translatable=\"yes\">Use the _mouse wheel on the desktop to swi"
++ "tch workspaces</property><property name=\"visible\">True</property><pro"
+ "perty name=\"can_focus\">True</property><property name=\"receives_defau"
+ "lt\">False</property><property name=\"use_underline\">True</property><p"
+ "roperty name=\"draw_indicator\">True</property></object><packing><prope"
+ "rty name=\"expand\">False</property><property name=\"fill\">False</prop"
+- "erty><property name=\"position\">6</property></packing></child></object"
+- "><packing><property name=\"position\">2</property></packing></child><ch"
+- "ild type=\"tab\"><object class=\"GtkLabel\" id=\"label3\"><property nam"
+- "e=\"visible\">True</property><property name=\"label\" translatable=\"ye"
+- "s\">_Accessibility</property><property name=\"use_underline\">True</pro"
+- "perty></object><packing><property name=\"position\">2</property><proper"
+- "ty name=\"tab_fill\">False</property></packing></child><child><object c"
+- "lass=\"GtkVBox\" id=\"vbox5\"><property name=\"visible\">True</property"
+- "><property name=\"border_width\">12</property><property name=\"orientat"
+- "ion\">vertical</property><property name=\"spacing\">6</property><child>"
+- "<object class=\"GtkCheckButton\" id=\"scroll_workspaces_check\"><proper"
+- "ty name=\"label\" translatable=\"yes\">Use the _mouse wheel on the desk"
+- "top to switch workspaces</property><property name=\"visible\">True</pro"
+- "perty><property name=\"can_focus\">True</property><property name=\"rece"
+- "ives_default\">False</property><property name=\"use_underline\">True</p"
+- "roperty><property name=\"draw_indicator\">True</property></object><pack"
+- "ing><property name=\"expand\">False</property><property name=\"fill\">F"
+- "alse</property><property name=\"position\">0</property></packing></chil"
+- "d><child><object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\""
+- "><property name=\"label\" translatable=\"yes\">_Remember and recall pre"
+- "vious workspace\nwhen switching via keyboard shortcuts</property><prope"
+- "rty name=\"visible\">True</property><property name=\"can_focus\">True</"
+- "property><property name=\"receives_default\">False</property><property "
+- "name=\"use_underline\">True</property><property name=\"draw_indicator\""
+- ">True</property></object><packing><property name=\"expand\">False</prop"
+- "erty><property name=\"fill\">False</property><property name=\"position\""
+- ">1</property></packing></child><child><object class=\"GtkCheckButton\" "
+- "id=\"wrap_layout_check\"><property name=\"label\" translatable=\"yes\">"
+- "Wrap workspaces depending on the actual desktop _layout</property><prop"
+- "erty name=\"visible\">True</property><property name=\"can_focus\">True<"
+- "/property><property name=\"receives_default\">False</property><property"
+- " name=\"use_underline\">True</property><property name=\"draw_indicator\""
+- ">True</property></object><packing><property name=\"expand\">False</prop"
+- "erty><property name=\"fill\">False</property><property name=\"position\""
+- ">2</property></packing></child><child><object class=\"GtkCheckButton\" "
+- "id=\"wrap_cycle_check\"><property name=\"label\" translatable=\"yes\">W"
+- "rap workspaces when the _first or the last workspace is reached</proper"
+- "ty><property name=\"visible\">True</property><property name=\"can_focus"
+- "\">True</property><property name=\"receives_default\">False</property><"
+- "property name=\"use_underline\">True</property><property name=\"draw_in"
+- "dicator\">True</property></object><packing><property name=\"expand\">Fa"
+- "lse</property><property name=\"fill\">False</property><property name=\""
+- "position\">3</property></packing></child></object><packing><property na"
+- "me=\"position\">3</property></packing></child><child type=\"tab\"><obje"
+- "ct class=\"GtkLabel\" id=\"label4\"><property name=\"visible\">True</pr"
+- "operty><property name=\"label\" translatable=\"yes\">_Workspaces</prope"
+- "rty><property name=\"use_underline\">True</property></object><packing><"
+- "property name=\"position\">3</property><property name=\"tab_fill\">Fals"
+- "e</property></packing></child><child><object class=\"GtkVBox\" id=\"vbo"
+- "x6\"><property name=\"visible\">True</property><property name=\"border_"
+- "width\">12</property><property name=\"orientation\">vertical</property>"
+- "<property name=\"spacing\">6</property><child><object class=\"GtkLabel\""
+- " id=\"label8\"><property name=\"visible\">True</property><property name"
+- "=\"xalign\">0</property><property name=\"label\" translatable=\"yes\">_"
+- "Minimum size of windows to trigger smart placement:</property><property"
+- " name=\"use_underline\">True</property><property name=\"mnemonic_widget"
+- "\">placement_ratio_scale</property></object><packing><property name=\"e"
+- "xpand\">False</property><property name=\"fill\">False</property><proper"
+- "ty name=\"position\">0</property></packing></child><child><object class"
+- "=\"GtkAlignment\" id=\"alignment4\"><property name=\"visible\">True</pr"
+- "operty><property name=\"bottom_padding\">6</property><property name=\"l"
+- "eft_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox2\""
+- "><property name=\"visible\">True</property><property name=\"spacing\">1"
+- "2</property><child><object class=\"GtkLabel\" id=\"label9\"><property n"
+- "ame=\"visible\">True</property><property name=\"label\" translatable=\""
+- "yes\" comments=\"Smart placement size\">&lt;i&gt;Small&lt;/i&gt;</prope"
+- "rty><property name=\"use_markup\">True</property></object><packing><pro"
+- "perty name=\"expand\">False</property><property name=\"fill\">False</pr"
+- "operty><property name=\"position\">0</property></packing></child><child"
+- "><object class=\"GtkHScale\" id=\"placement_ratio_scale\"><property nam"
+- "e=\"visible\">True</property><property name=\"can_focus\">True</propert"
+- "y><property name=\"adjustment\">adjustment1</property><property name=\""
+- "restrict_to_fill_level\">False</property><property name=\"draw_value\">"
+- "False</property></object><packing><property name=\"position\">1</proper"
+- "ty></packing></child><child><object class=\"GtkLabel\" id=\"label10\"><"
+- "property name=\"visible\">True</property><property name=\"label\" trans"
+- "latable=\"yes\" comments=\"Smart placement size\">&lt;i&gt;Large&lt;/i&"
+- "gt;</property><property name=\"use_markup\">True</property></object><pa"
+- "cking><property name=\"expand\">False</property><property name=\"positi"
+- "on\">2</property></packing></child></object></child></object><packing><"
+- "property name=\"expand\">False</property><property name=\"fill\">False<"
+- "/property><property name=\"position\">1</property></packing></child><ch"
+- "ild><object class=\"GtkVBox\" id=\"default_placement_box\"><property na"
+- "me=\"visible\">True</property><property name=\"orientation\">vertical</"
+- "property><property name=\"spacing\">6</property><child><object class=\""
+- "GtkLabel\" id=\"label27\"><property name=\"visible\">True</property><pr"
+- "operty name=\"xalign\">0</property><property name=\"label\" translatabl"
+- "e=\"yes\">By default, place windows:</property></object><packing><prope"
+- "rty name=\"position\">0</property></packing></child><child><object clas"
+- "s=\"GtkAlignment\" id=\"alignment10\"><property name=\"visible\">True</"
+- "property><property name=\"bottom_padding\">6</property><property name=\""
+- "left_padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox1"
+- "8\"><property name=\"visible\">True</property><property name=\"border_w"
+- "idth\">6</property><property name=\"orientation\">vertical</property><p"
+- "roperty name=\"spacing\">6</property><child><object class=\"GtkRadioBut"
+- "ton\" id=\"placement_center_option\"><property name=\"label\" translata"
+- "ble=\"yes\">At the _center of the screen</property><property name=\"vis"
+- "ible\">True</property><property name=\"can_focus\">True</property><prop"
+- "erty name=\"receives_default\">False</property><property name=\"use_und"
+- "erline\">True</property><property name=\"draw_indicator\">True</propert"
+- "y></object><packing><property name=\"position\">0</property></packing><"
+- "/child><child><object class=\"GtkRadioButton\" id=\"placement_mouse_opt"
+- "ion\"><property name=\"label\" translatable=\"yes\">Under the mouse _po"
+- "inter</property><property name=\"visible\">True</property><property nam"
+- "e=\"can_focus\">True</property><property name=\"receives_default\">Fals"
+- "e</property><property name=\"use_underline\">True</property><property n"
+- "ame=\"active\">True</property><property name=\"draw_indicator\">True</p"
+- "roperty><property name=\"group\">placement_center_option</property></ob"
+- "ject><packing><property name=\"position\">1</property></packing></child"
+- "></object></child></object><packing><property name=\"position\">1</prop"
+- "erty></packing></child></object><packing><property name=\"expand\">Fals"
+- "e</property><property name=\"fill\">False</property><property name=\"po"
+- "sition\">2</property></packing></child></object><packing><property name"
+- "=\"position\">4</property></packing></child><child type=\"tab\"><object"
+- " class=\"GtkLabel\" id=\"label5\"><property name=\"visible\">True</prop"
+- "erty><property name=\"label\" translatable=\"yes\">_Placement</property"
+- "><property name=\"use_underline\">True</property></object><packing><pro"
+- "perty name=\"position\">4</property><property name=\"tab_fill\">False</"
+- "property></packing></child><child><object class=\"GtkVBox\" id=\"vbox7\""
+- "><property name=\"visible\">True</property><property name=\"border_widt"
+- "h\">12</property><property name=\"orientation\">vertical</property><pro"
+- "perty name=\"spacing\">6</property><child><object class=\"GtkCheckButto"
+- "n\" id=\"use_compositing_check\"><property name=\"label\" translatable="
+- "\"yes\">_Enable display compositing</property><property name=\"visible\""
+- ">True</property><property name=\"can_focus\">True</property><property n"
+- "ame=\"receives_default\">False</property><property name=\"use_underline"
+- "\">True</property><property name=\"draw_indicator\">True</property></ob"
+- "ject><packing><property name=\"expand\">False</property><property name="
+- "\"fill\">False</property><property name=\"position\">0</property></pack"
+- "ing></child><child><object class=\"GtkScrolledWindow\" id=\"use_composi"
+- "ting_box\"><property name=\"visible\">True</property><property name=\"s"
+- "ensitive\">False</property><property name=\"can_focus\">True</property>"
+- "<property name=\"hscrollbar_policy\">never</property><property name=\"v"
+- "scrollbar_policy\">automatic</property><child><object class=\"GtkViewpo"
+- "rt\" id=\"viewport1\"><property name=\"visible\">True</property><proper"
+- "ty name=\"resize_mode\">queue</property><property name=\"shadow_type\">"
+- "none</property><child><object class=\"GtkAlignment\" id=\"alignment3\">"
+- "<property name=\"visible\">True</property><property name=\"bottom_paddi"
+- "ng\">6</property><property name=\"left_padding\">12</property><child><o"
+- "bject class=\"GtkVBox\" id=\"vbox8\"><property name=\"visible\">True</p"
+- "roperty><property name=\"orientation\">vertical</property><property nam"
+- "e=\"spacing\">6</property><child><object class=\"GtkCheckButton\" id=\""
+- "unredirect_overlays_check\"><property name=\"label\" translatable=\"yes"
+- "\">Display _fullscreen overlay windows directly</property><property nam"
++ "erty><property name=\"position\">0</property></packing></child><child><"
++ "object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\"><propert"
++ "y name=\"label\" translatable=\"yes\">_Remember and recall previous wor"
++ "kspace\nwhen switching via keyboard shortcuts</property><property name="
++ "\"visible\">True</property><property name=\"can_focus\">True</property>"
++ "<property name=\"receives_default\">False</property><property name=\"us"
++ "e_underline\">True</property><property name=\"draw_indicator\">True</pr"
++ "operty></object><packing><property name=\"expand\">False</property><pro"
++ "perty name=\"fill\">False</property><property name=\"position\">1</prop"
++ "erty></packing></child><child><object class=\"GtkCheckButton\" id=\"wra"
++ "p_layout_check\"><property name=\"label\" translatable=\"yes\">Wrap wor"
++ "kspaces depending on the actual desktop _layout</property><property nam"
+ "e=\"visible\">True</property><property name=\"can_focus\">True</propert"
+ "y><property name=\"receives_default\">False</property><property name=\""
+ "use_underline\">True</property><property name=\"draw_indicator\">True</"
+ "property></object><packing><property name=\"expand\">False</property><p"
+- "roperty name=\"position\">0</property></packing></child><child><object "
+- "class=\"GtkCheckButton\" id=\"show_frame_shadow_check\"><property name="
+- "\"label\" translatable=\"yes\">Show shadows under _regular windows</pro"
+- "perty><property name=\"visible\">True</property><property name=\"can_fo"
+- "cus\">True</property><property name=\"receives_default\">False</propert"
+- "y><property name=\"use_underline\">True</property><property name=\"draw"
+- "_indicator\">True</property></object><packing><property name=\"expand\""
+- ">False</property><property name=\"position\">1</property></packing></ch"
+- "ild><child><object class=\"GtkCheckButton\" id=\"show_popup_shadow_chec"
+- "k\"><property name=\"label\" translatable=\"yes\">Show shadows under po"
+- "p_up windows</property><property name=\"visible\">True</property><prope"
+- "rty name=\"can_focus\">True</property><property name=\"receives_default"
+- "\">False</property><property name=\"use_underline\">True</property><pro"
+- "perty name=\"draw_indicator\">True</property></object><packing><propert"
+- "y name=\"expand\">False</property><property name=\"position\">2</proper"
+- "ty></packing></child><child><object class=\"GtkCheckButton\" id=\"show_"
+- "dock_shadow_check\"><property name=\"label\" translatable=\"yes\">Show "
+- "shadows under _dock windows</property><property name=\"visible\">True</"
+- "property><property name=\"can_focus\">True</property><property name=\"r"
+- "eceives_default\">False</property><property name=\"use_underline\">True"
+- "</property><property name=\"draw_indicator\">True</property></object><p"
+- "acking><property name=\"expand\">False</property><property name=\"posit"
+- "ion\">3</property></packing></child><child><object class=\"GtkLabel\" i"
+- "d=\"label12\"><property name=\"visible\">True</property><property name="
+- "\"xalign\">0</property><property name=\"label\" translatable=\"yes\">Op"
+- "aci_ty of window decorations:</property><property name=\"use_underline\""
+- ">True</property><property name=\"mnemonic_widget\">frame_opacity_scale<"
+- "/property></object><packing><property name=\"expand\">False</property><"
+- "property name=\"position\">4</property></packing></child><child><object"
+- " class=\"GtkAlignment\" id=\"alignment5\"><property name=\"visible\">Tr"
+- "ue</property><property name=\"top_padding\">2</property><property name="
+- "\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbo"
+- "x3\"><property name=\"visible\">True</property><child><object class=\"G"
+- "tkLabel\" id=\"label17\"><property name=\"visible\">True</property><pro"
+- "perty name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&gt"
+- ";</property><property name=\"use_markup\">True</property></object><pack"
+- "ing><property name=\"expand\">False</property><property name=\"fill\">F"
+- "alse</property><property name=\"position\">0</property></packing></chil"
+- "d><child><object class=\"GtkHScale\" id=\"frame_opacity_scale\"><proper"
++ "roperty name=\"fill\">False</property><property name=\"position\">2</pr"
++ "operty></packing></child><child><object class=\"GtkCheckButton\" id=\"w"
++ "rap_cycle_check\"><property name=\"label\" translatable=\"yes\">Wrap wo"
++ "rkspaces when the _first or the last workspace is reached</property><pr"
++ "operty name=\"visible\">True</property><property name=\"can_focus\">Tru"
++ "e</property><property name=\"receives_default\">False</property><proper"
++ "ty name=\"use_underline\">True</property><property name=\"draw_indicato"
++ "r\">True</property></object><packing><property name=\"expand\">False</p"
++ "roperty><property name=\"fill\">False</property><property name=\"positi"
++ "on\">3</property></packing></child></object><packing><property name=\"p"
++ "osition\">3</property></packing></child><child type=\"tab\"><object cla"
++ "ss=\"GtkLabel\" id=\"label4\"><property name=\"visible\">True</property"
++ "><property name=\"label\" translatable=\"yes\">_Workspaces</property><p"
++ "roperty name=\"use_underline\">True</property></object><packing><proper"
++ "ty name=\"position\">3</property><property name=\"tab_fill\">False</pro"
++ "perty></packing></child><child><object class=\"GtkVBox\" id=\"vbox6\"><"
++ "property name=\"visible\">True</property><property name=\"border_width\""
++ ">12</property><property name=\"orientation\">vertical</property><proper"
++ "ty name=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\""
++ "label8\"><property name=\"visible\">True</property><property name=\"xal"
++ "ign\">0</property><property name=\"label\" translatable=\"yes\">_Minimu"
++ "m size of windows to trigger smart placement:</property><property name="
++ "\"use_underline\">True</property><property name=\"mnemonic_widget\">pla"
++ "cement_ratio_scale</property></object><packing><property name=\"expand\""
++ ">False</property><property name=\"fill\">False</property><property name"
++ "=\"position\">0</property></packing></child><child><object class=\"GtkA"
++ "lignment\" id=\"alignment4\"><property name=\"visible\">True</property>"
++ "<property name=\"bottom_padding\">6</property><property name=\"left_pad"
++ "ding\">12</property><child><object class=\"GtkHBox\" id=\"hbox2\"><prop"
++ "erty name=\"visible\">True</property><property name=\"spacing\">12</pro"
++ "perty><child><object class=\"GtkLabel\" id=\"label9\"><property name=\""
++ "visible\">True</property><property name=\"label\" translatable=\"yes\" "
++ "comments=\"Smart placement size\">&lt;i&gt;Small&lt;/i&gt;</property><p"
++ "roperty name=\"use_markup\">True</property></object><packing><property "
++ "name=\"expand\">False</property><property name=\"fill\">False</property"
++ "><property name=\"position\">0</property></packing></child><child><obje"
++ "ct class=\"GtkHScale\" id=\"placement_ratio_scale\"><property name=\"vi"
++ "sible\">True</property><property name=\"can_focus\">True</property><pro"
++ "perty name=\"adjustment\">adjustment1</property><property name=\"restri"
++ "ct_to_fill_level\">False</property><property name=\"draw_value\">False<"
++ "/property></object><packing><property name=\"position\">1</property></p"
++ "acking></child><child><object class=\"GtkLabel\" id=\"label10\"><proper"
++ "ty name=\"visible\">True</property><property name=\"label\" translatabl"
++ "e=\"yes\" comments=\"Smart placement size\">&lt;i&gt;Large&lt;/i&gt;</p"
++ "roperty><property name=\"use_markup\">True</property></object><packing>"
++ "<property name=\"expand\">False</property><property name=\"position\">2"
++ "</property></packing></child></object></child></object><packing><proper"
++ "ty name=\"expand\">False</property><property name=\"fill\">False</prope"
++ "rty><property name=\"position\">1</property></packing></child><child><o"
++ "bject class=\"GtkVBox\" id=\"default_placement_box\"><property name=\"v"
++ "isible\">True</property><property name=\"orientation\">vertical</proper"
++ "ty><property name=\"spacing\">6</property><child><object class=\"GtkLab"
++ "el\" id=\"label27\"><property name=\"visible\">True</property><property"
++ " name=\"xalign\">0</property><property name=\"label\" translatable=\"ye"
++ "s\">By default, place windows:</property></object><packing><property na"
++ "me=\"position\">0</property></packing></child><child><object class=\"Gt"
++ "kAlignment\" id=\"alignment10\"><property name=\"visible\">True</proper"
++ "ty><property name=\"bottom_padding\">6</property><property name=\"left_"
++ "padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox18\"><"
++ "property name=\"visible\">True</property><property name=\"border_width\""
++ ">6</property><property name=\"orientation\">vertical</property><propert"
++ "y name=\"spacing\">6</property><child><object class=\"GtkRadioButton\" "
++ "id=\"placement_center_option\"><property name=\"label\" translatable=\""
++ "yes\">At the _center of the screen</property><property name=\"visible\""
++ ">True</property><property name=\"can_focus\">True</property><property n"
++ "ame=\"receives_default\">False</property><property name=\"use_underline"
++ "\">True</property><property name=\"draw_indicator\">True</property></ob"
++ "ject><packing><property name=\"position\">0</property></packing></child"
++ "><child><object class=\"GtkRadioButton\" id=\"placement_mouse_option\">"
++ "<property name=\"label\" translatable=\"yes\">Under the mouse _pointer<"
++ "/property><property name=\"visible\">True</property><property name=\"ca"
++ "n_focus\">True</property><property name=\"receives_default\">False</pro"
++ "perty><property name=\"use_underline\">True</property><property name=\""
++ "active\">True</property><property name=\"draw_indicator\">True</propert"
++ "y><property name=\"group\">placement_center_option</property></object><"
++ "packing><property name=\"position\">1</property></packing></child></obj"
++ "ect></child></object><packing><property name=\"position\">1</property><"
++ "/packing></child></object><packing><property name=\"expand\">False</pro"
++ "perty><property name=\"fill\">False</property><property name=\"position"
++ "\">2</property></packing></child></object><packing><property name=\"pos"
++ "ition\">4</property></packing></child><child type=\"tab\"><object class"
++ "=\"GtkLabel\" id=\"label5\"><property name=\"visible\">True</property><"
++ "property name=\"label\" translatable=\"yes\">_Placement</property><prop"
++ "erty name=\"use_underline\">True</property></object><packing><property "
++ "name=\"position\">4</property><property name=\"tab_fill\">False</proper"
++ "ty></packing></child><child><object class=\"GtkVBox\" id=\"vbox7\"><pro"
++ "perty name=\"visible\">True</property><property name=\"border_width\">1"
++ "2</property><property name=\"orientation\">vertical</property><property"
++ " name=\"spacing\">6</property><child><object class=\"GtkCheckButton\" i"
++ "d=\"use_compositing_check\"><property name=\"label\" translatable=\"yes"
++ "\">_Enable display compositing</property><property name=\"visible\">Tru"
++ "e</property><property name=\"can_focus\">True</property><property name="
++ "\"receives_default\">False</property><property name=\"use_underline\">T"
++ "rue</property><property name=\"draw_indicator\">True</property></object"
++ "><packing><property name=\"expand\">False</property><property name=\"fi"
++ "ll\">False</property><property name=\"position\">0</property></packing>"
++ "</child><child><object class=\"GtkScrolledWindow\" id=\"use_compositing"
++ "_box\"><property name=\"visible\">True</property><property name=\"sensi"
++ "tive\">False</property><property name=\"can_focus\">True</property><pro"
++ "perty name=\"hscrollbar_policy\">never</property><property name=\"vscro"
++ "llbar_policy\">automatic</property><child><object class=\"GtkViewport\""
++ " id=\"viewport1\"><property name=\"visible\">True</property><property n"
++ "ame=\"resize_mode\">queue</property><property name=\"shadow_type\">none"
++ "</property><child><object class=\"GtkAlignment\" id=\"alignment3\"><pro"
++ "perty name=\"visible\">True</property><property name=\"bottom_padding\""
++ ">6</property><property name=\"left_padding\">12</property><child><objec"
++ "t class=\"GtkVBox\" id=\"vbox8\"><property name=\"visible\">True</prope"
++ "rty><property name=\"orientation\">vertical</property><property name=\""
++ "spacing\">6</property><child><object class=\"GtkCheckButton\" id=\"unre"
++ "direct_overlays_check\"><property name=\"label\" translatable=\"yes\">D"
++ "isplay _fullscreen overlay windows directly</property><property name=\""
++ "visible\">True</property><property name=\"can_focus\">True</property><p"
++ "roperty name=\"receives_default\">False</property><property name=\"use_"
++ "underline\">True</property><property name=\"draw_indicator\">True</prop"
++ "erty></object><packing><property name=\"expand\">False</property><prope"
++ "rty name=\"position\">0</property></packing></child><child><object clas"
++ "s=\"GtkCheckButton\" id=\"show_frame_shadow_check\"><property name=\"la"
++ "bel\" translatable=\"yes\">Show shadows under _regular windows</propert"
++ "y><property name=\"visible\">True</property><property name=\"can_focus\""
++ ">True</property><property name=\"receives_default\">False</property><pr"
++ "operty name=\"use_underline\">True</property><property name=\"draw_indi"
++ "cator\">True</property></object><packing><property name=\"expand\">Fals"
++ "e</property><property name=\"position\">1</property></packing></child><"
++ "child><object class=\"GtkCheckButton\" id=\"show_popup_shadow_check\"><"
++ "property name=\"label\" translatable=\"yes\">Show shadows under pop_up "
++ "windows</property><property name=\"visible\">True</property><property n"
++ "ame=\"can_focus\">True</property><property name=\"receives_default\">Fa"
++ "lse</property><property name=\"use_underline\">True</property><property"
++ " name=\"draw_indicator\">True</property></object><packing><property nam"
++ "e=\"expand\">False</property><property name=\"position\">2</property></"
++ "packing></child><child><object class=\"GtkCheckButton\" id=\"show_dock_"
++ "shadow_check\"><property name=\"label\" translatable=\"yes\">Show shado"
++ "ws under _dock windows</property><property name=\"visible\">True</prope"
++ "rty><property name=\"can_focus\">True</property><property name=\"receiv"
++ "es_default\">False</property><property name=\"use_underline\">True</pro"
++ "perty><property name=\"draw_indicator\">True</property></object><packin"
++ "g><property name=\"expand\">False</property><property name=\"position\""
++ ">3</property></packing></child><child><object class=\"GtkLabel\" id=\"l"
++ "abel12\"><property name=\"visible\">True</property><property name=\"xal"
++ "ign\">0</property><property name=\"label\" translatable=\"yes\">Opaci_t"
++ "y of window decorations:</property><property name=\"use_underline\">Tru"
++ "e</property><property name=\"mnemonic_widget\">frame_opacity_scale</pro"
++ "perty></object><packing><property name=\"expand\">False</property><prop"
++ "erty name=\"position\">4</property></packing></child><child><object cla"
++ "ss=\"GtkAlignment\" id=\"alignment5\"><property name=\"visible\">True</"
++ "property><property name=\"top_padding\">2</property><property name=\"le"
++ "ft_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox3\""
++ "><property name=\"visible\">True</property><child><object class=\"GtkLa"
++ "bel\" id=\"label17\"><property name=\"visible\">True</property><propert"
++ "y name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&gt;</p"
++ "roperty><property name=\"use_markup\">True</property></object><packing>"
++ "<property name=\"expand\">False</property><property name=\"fill\">False"
++ "</property><property name=\"position\">0</property></packing></child><c"
++ "hild><object class=\"GtkHScale\" id=\"frame_opacity_scale\"><property n"
++ "ame=\"visible\">True</property><property name=\"can_focus\">True</prope"
++ "rty><property name=\"update_policy\">discontinuous</property><property "
++ "name=\"adjustment\">adjustment2</property><property name=\"restrict_to_"
++ "fill_level\">False</property><property name=\"draw_value\">False</prope"
++ "rty></object><packing><property name=\"position\">1</property></packing"
++ "></child><child><object class=\"GtkLabel\" id=\"label18\"><property nam"
++ "e=\"visible\">True</property><property name=\"label\" translatable=\"ye"
++ "s\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use_markup\">T"
++ "rue</property></object><packing><property name=\"expand\">False</proper"
++ "ty><property name=\"fill\">False</property><property name=\"position\">"
++ "2</property></packing></child></object></child></object><packing><prope"
++ "rty name=\"expand\">False</property><property name=\"fill\">False</prop"
++ "erty><property name=\"position\">5</property></packing></child><child><"
++ "object class=\"GtkLabel\" id=\"label13\"><property name=\"visible\">Tru"
++ "e</property><property name=\"xalign\">0</property><property name=\"labe"
++ "l\" translatable=\"yes\">Opacity of _inactive windows:</property><prope"
++ "rty name=\"use_underline\">True</property><property name=\"mnemonic_wid"
++ "get\">inactive_opacity_scale</property></object><packing><property name"
++ "=\"expand\">False</property><property name=\"fill\">False</property><pr"
++ "operty name=\"position\">6</property></packing></child><child><object c"
++ "lass=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible\">True"
++ "</property><property name=\"top_padding\">2</property><property name=\""
++ "left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox4"
++ "\"><property name=\"visible\">True</property><child><object class=\"Gtk"
++ "Label\" id=\"label19\"><property name=\"visible\">True</property><prope"
++ "rty name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&gt;<"
++ "/property><property name=\"use_markup\">True</property></object><packin"
++ "g><property name=\"expand\">False</property><property name=\"fill\">Fal"
++ "se</property><property name=\"position\">0</property></packing></child>"
++ "<child><object class=\"GtkHScale\" id=\"inactive_opacity_scale\"><prope"
++ "rty name=\"visible\">True</property><property name=\"can_focus\">True</"
++ "property><property name=\"update_policy\">discontinuous</property><prop"
++ "erty name=\"adjustment\">adjustment3</property><property name=\"restric"
++ "t_to_fill_level\">False</property><property name=\"draw_value\">False</"
++ "property></object><packing><property name=\"position\">1</property></pa"
++ "cking></child><child><object class=\"GtkLabel\" id=\"label20\"><propert"
++ "y name=\"visible\">True</property><property name=\"label\" translatable"
++ "=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use_marku"
++ "p\">True</property></object><packing><property name=\"expand\">False</p"
++ "roperty><property name=\"fill\">False</property><property name=\"positi"
++ "on\">2</property></packing></child></object></child></object><packing><"
++ "property name=\"expand\">False</property><property name=\"fill\">False<"
++ "/property><property name=\"position\">7</property></packing></child><ch"
++ "ild><object class=\"GtkLabel\" id=\"label14\"><property name=\"visible\""
++ ">True</property><property name=\"xalign\">0</property><property name=\""
++ "label\" translatable=\"yes\">Opacity of windows during _move:</property"
++ "><property name=\"use_underline\">True</property><property name=\"mnemo"
++ "nic_widget\">move_opacity_scale</property></object><packing><property n"
++ "ame=\"expand\">False</property><property name=\"fill\">False</property>"
++ "<property name=\"position\">8</property></packing></child><child><objec"
++ "t class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible\">T"
++ "rue</property><property name=\"top_padding\">2</property><property name"
++ "=\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hb"
++ "ox5\"><property name=\"visible\">True</property><child><object class=\""
++ "GtkLabel\" id=\"label21\"><property name=\"visible\">True</property><pr"
++ "operty name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&g"
++ "t;</property><property name=\"use_markup\">True</property></object><pac"
++ "king><property name=\"expand\">False</property><property name=\"fill\">"
++ "False</property><property name=\"position\">0</property></packing></chi"
++ "ld><child><object class=\"GtkHScale\" id=\"move_opacity_scale\"><proper"
+ "ty name=\"visible\">True</property><property name=\"can_focus\">True</p"
+ "roperty><property name=\"update_policy\">discontinuous</property><prope"
+- "rty name=\"adjustment\">adjustment2</property><property name=\"restrict"
++ "rty name=\"adjustment\">adjustment4</property><property name=\"restrict"
+ "_to_fill_level\">False</property><property name=\"draw_value\">False</p"
+ "roperty></object><packing><property name=\"position\">1</property></pac"
+- "king></child><child><object class=\"GtkLabel\" id=\"label18\"><property"
++ "king></child><child><object class=\"GtkLabel\" id=\"label22\"><property"
+ " name=\"visible\">True</property><property name=\"label\" translatable="
+ "\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use_markup"
+ "\">True</property></object><packing><property name=\"expand\">False</pr"
+ "operty><property name=\"fill\">False</property><property name=\"positio"
+ "n\">2</property></packing></child></object></child></object><packing><p"
+ "roperty name=\"expand\">False</property><property name=\"fill\">False</"
+- "property><property name=\"position\">5</property></packing></child><chi"
+- "ld><object class=\"GtkLabel\" id=\"label13\"><property name=\"visible\""
++ "property><property name=\"position\">9</property></packing></child><chi"
++ "ld><object class=\"GtkLabel\" id=\"label15\"><property name=\"visible\""
+ ">True</property><property name=\"xalign\">0</property><property name=\""
+- "label\" translatable=\"yes\">Opacity of _inactive windows:</property><p"
+- "roperty name=\"use_underline\">True</property><property name=\"mnemonic"
+- "_widget\">inactive_opacity_scale</property></object><packing><property "
+- "name=\"expand\">False</property><property name=\"fill\">False</property"
+- "><property name=\"position\">6</property></packing></child><child><obje"
+- "ct class=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible\">"
+- "True</property><property name=\"top_padding\">2</property><property nam"
+- "e=\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"h"
+- "box4\"><property name=\"visible\">True</property><child><object class=\""
+- "GtkLabel\" id=\"label19\"><property name=\"visible\">True</property><pr"
+- "operty name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;/i&g"
+- "t;</property><property name=\"use_markup\">True</property></object><pac"
+- "king><property name=\"expand\">False</property><property name=\"fill\">"
+- "False</property><property name=\"position\">0</property></packing></chi"
+- "ld><child><object class=\"GtkHScale\" id=\"inactive_opacity_scale\"><pr"
+- "operty name=\"visible\">True</property><property name=\"can_focus\">Tru"
+- "e</property><property name=\"update_policy\">discontinuous</property><p"
+- "roperty name=\"adjustment\">adjustment3</property><property name=\"rest"
+- "rict_to_fill_level\">False</property><property name=\"draw_value\">Fals"
+- "e</property></object><packing><property name=\"position\">1</property><"
+- "/packing></child><child><object class=\"GtkLabel\" id=\"label20\"><prop"
+- "erty name=\"visible\">True</property><property name=\"label\" translata"
+- "ble=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use_ma"
+- "rkup\">True</property></object><packing><property name=\"expand\">False"
+- "</property><property name=\"fill\">False</property><property name=\"pos"
+- "ition\">2</property></packing></child></object></child></object><packin"
+- "g><property name=\"expand\">False</property><property name=\"fill\">Fal"
+- "se</property><property name=\"position\">7</property></packing></child>"
+- "<child><object class=\"GtkLabel\" id=\"label14\"><property name=\"visib"
+- "le\">True</property><property name=\"xalign\">0</property><property nam"
+- "e=\"label\" translatable=\"yes\">Opacity of windows during _move:</prop"
+- "erty><property name=\"use_underline\">True</property><property name=\"m"
+- "nemonic_widget\">move_opacity_scale</property></object><packing><proper"
++ "label\" translatable=\"yes\">Opacity of windows during resi_ze:</proper"
++ "ty><property name=\"use_underline\">True</property><property name=\"mne"
++ "monic_widget\">resize_opacity_scale</property></object><packing><proper"
+ "ty name=\"expand\">False</property><property name=\"fill\">False</prope"
+- "rty><property name=\"position\">8</property></packing></child><child><o"
+- "bject class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible"
+- "\">True</property><property name=\"top_padding\">2</property><property "
+- "name=\"left_padding\">12</property><child><object class=\"GtkHBox\" id="
+- "\"hbox5\"><property name=\"visible\">True</property><child><object clas"
+- "s=\"GtkLabel\" id=\"label21\"><property name=\"visible\">True</property"
+- "><property name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt;"
+- "/i&gt;</property><property name=\"use_markup\">True</property></object>"
+- "<packing><property name=\"expand\">False</property><property name=\"fil"
+- "l\">False</property><property name=\"position\">0</property></packing><"
+- "/child><child><object class=\"GtkHScale\" id=\"move_opacity_scale\"><pr"
+- "operty name=\"visible\">True</property><property name=\"can_focus\">Tru"
+- "e</property><property name=\"update_policy\">discontinuous</property><p"
+- "roperty name=\"adjustment\">adjustment4</property><property name=\"rest"
+- "rict_to_fill_level\">False</property><property name=\"draw_value\">Fals"
+- "e</property></object><packing><property name=\"position\">1</property><"
+- "/packing></child><child><object class=\"GtkLabel\" id=\"label22\"><prop"
+- "erty name=\"visible\">True</property><property name=\"label\" translata"
+- "ble=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use_ma"
+- "rkup\">True</property></object><packing><property name=\"expand\">False"
+- "</property><property name=\"fill\">False</property><property name=\"pos"
+- "ition\">2</property></packing></child></object></child></object><packin"
+- "g><property name=\"expand\">False</property><property name=\"fill\">Fal"
+- "se</property><property name=\"position\">9</property></packing></child>"
+- "<child><object class=\"GtkLabel\" id=\"label15\"><property name=\"visib"
+- "le\">True</property><property name=\"xalign\">0</property><property nam"
+- "e=\"label\" translatable=\"yes\">Opacity of windows during resi_ze:</pr"
+- "operty><property name=\"use_underline\">True</property><property name=\""
+- "mnemonic_widget\">resize_opacity_scale</property></object><packing><pro"
+- "perty name=\"expand\">False</property><property name=\"fill\">False</pr"
+- "operty><property name=\"position\">10</property></packing></child><chil"
+- "d><object class=\"GtkAlignment\" id=\"alignment8\"><property name=\"vis"
+- "ible\">True</property><property name=\"top_padding\">2</property><prope"
+- "rty name=\"left_padding\">12</property><child><object class=\"GtkHBox\""
+- " id=\"hbox6\"><property name=\"visible\">True</property><child><object "
+- "class=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</prop"
+- "erty><property name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent"
+- "&lt;/i&gt;</property><property name=\"use_markup\">True</property></obj"
+- "ect><packing><property name=\"expand\">False</property><property name=\""
+- "fill\">False</property><property name=\"position\">0</property></packin"
+- "g></child><child><object class=\"GtkHScale\" id=\"resize_opacity_scale\""
+- "><property name=\"visible\">True</property><property name=\"can_focus\""
+- ">True</property><property name=\"update_policy\">discontinuous</propert"
+- "y><property name=\"adjustment\">adjustment5</property><property name=\""
+- "restrict_to_fill_level\">False</property><property name=\"draw_value\">"
+- "False</property></object><packing><property name=\"position\">1</proper"
+- "ty></packing></child><child><object class=\"GtkLabel\" id=\"label24\"><"
+- "property name=\"visible\">True</property><property name=\"label\" trans"
+- "latable=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"us"
+- "e_markup\">True</property></object><packing><property name=\"expand\">F"
+- "alse</property><property name=\"fill\">False</property><property name=\""
++ "rty><property name=\"position\">10</property></packing></child><child><"
++ "object class=\"GtkAlignment\" id=\"alignment8\"><property name=\"visibl"
++ "e\">True</property><property name=\"top_padding\">2</property><property"
++ " name=\"left_padding\">12</property><child><object class=\"GtkHBox\" id"
++ "=\"hbox6\"><property name=\"visible\">True</property><child><object cla"
++ "ss=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</propert"
++ "y><property name=\"label\" translatable=\"yes\">&lt;i&gt;Transparent&lt"
++ ";/i&gt;</property><property name=\"use_markup\">True</property></object"
++ "><packing><property name=\"expand\">False</property><property name=\"fi"
++ "ll\">False</property><property name=\"position\">0</property></packing>"
++ "</child><child><object class=\"GtkHScale\" id=\"resize_opacity_scale\">"
++ "<property name=\"visible\">True</property><property name=\"can_focus\">"
++ "True</property><property name=\"update_policy\">discontinuous</property"
++ "><property name=\"adjustment\">adjustment5</property><property name=\"r"
++ "estrict_to_fill_level\">False</property><property name=\"draw_value\">F"
++ "alse</property></object><packing><property name=\"position\">1</propert"
++ "y></packing></child><child><object class=\"GtkLabel\" id=\"label24\"><p"
++ "roperty name=\"visible\">True</property><property name=\"label\" transl"
++ "atable=\"yes\">&lt;i&gt;Opaque&lt;/i&gt;</property><property name=\"use"
++ "_markup\">True</property></object><packing><property name=\"expand\">Fa"
++ "lse</property><property name=\"fill\">False</property><property name=\""
+ "position\">2</property></packing></child></object></child></object><pac"
+ "king><property name=\"expand\">False</property><property name=\"fill\">"
+ "False</property><property name=\"position\">11</property></packing></ch"
+@@ -568,5 +576,5 @@ static const char tweaks_dialog_ui[] =
+ "et></action-widgets></object></interface>"
+ };
+
+-static const unsigned tweaks_dialog_ui_length = 37803u;
++static const unsigned tweaks_dialog_ui_length = 38338u;
+
+diff --git a/src/client.c b/src/client.c
+index 4e86808..b92c264 100644
+--- a/src/client.c
++++ b/src/client.c
+@@ -64,6 +64,8 @@
+ #include "xsync.h"
+ #include "event_filter.h"
+
++//#define TRACE(fmt, ...) printf(fmt"\n", ##__VA_ARGS__); fflush(stdout);
++
+ /* Event mask definition */
+
+ #define POINTER_EVENT_MASK \
+@@ -173,6 +175,7 @@ clientCreateTitleName (Client *c, gchar *name, gchar *hostname)
+ gchar *title;
+
+ g_return_val_if_fail (c != NULL, NULL);
++
+ TRACE ("entering clientCreateTitleName");
+
+ screen_info = c->screen_info;
+@@ -1729,6 +1732,7 @@ clientFrame (DisplayInfo *display_info, Window w, gboolean recapture)
+ clientGetInitialNetWmDesktop (c);
+ /* workarea will be updated when shown, no need to worry here */
+ clientGetNetStruts (c);
++ clientGetExtra (c);
+
+ /* Once we know the type of window, we can initialize window position */
+ if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_SESSION_MANAGED))
+@@ -3137,6 +3141,8 @@ clientNewMaxSize (Client *c, XWindowChanges *wc, GdkRectangle *rect, tilePositio
+ wc->width = full_w - frameLeft (c) - frameRight (c);
+ wc->height = full_h - frameTop (c) - frameBottom (c);
+
++ TRACE ("clientNewMaxSize %d %d %d %d", wc->x, wc->y, wc->width, wc->height);
++
+ return ((wc->width <= c->size->max_width) && (wc->height <= c->size->max_height));
+ }
+
+diff --git a/src/client.h b/src/client.h
+index e8bc4e3..b5e54df 100644
+--- a/src/client.h
++++ b/src/client.h
+@@ -161,6 +161,7 @@
+ #define CLIENT_FLAG_DEMANDS_ATTENTION (1L<<17)
+ #define CLIENT_FLAG_HAS_SHAPE (1L<<18)
+ #define CLIENT_FLAG_FULLSCREN_MONITORS (1L<<19)
++#define CLIENT_FLAG_TITLELESS_MAXIMIZE (1L<<20)
+
+ #define WM_FLAG_DELETE (1L<<0)
+ #define WM_FLAG_INPUT (1L<<1)
+diff --git a/src/display.c b/src/display.c
+index 00318d5..4f847f4 100644
+--- a/src/display.c
++++ b/src/display.c
+@@ -169,7 +169,8 @@ myDisplayInitAtoms (DisplayInfo *display_info)
+ "XFWM4_COMPOSITING_MANAGER",
+ "XFWM4_TIMESTAMP_PROP",
+ "_XROOTPMAP_ID",
+- "_XSETROOT_ID"
++ "_XSETROOT_ID",
++ "_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED"
+ };
+
+ g_assert (ATOM_COUNT == G_N_ELEMENTS (atom_names));
+diff --git a/src/display.h b/src/display.h
+index 8797237..a297cf2 100644
+--- a/src/display.h
++++ b/src/display.h
+@@ -265,6 +265,7 @@ enum
+ XFWM4_TIMESTAMP_PROP,
+ XROOTPMAP,
+ XSETROOT,
++ _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED,
+ ATOM_COUNT
+ };
+
+diff --git a/src/events.c b/src/events.c
+index 4b49171..044cd11 100644
+--- a/src/events.c
++++ b/src/events.c
+@@ -1921,6 +1921,11 @@ handlePropertyNotify (DisplayInfo *display_info, XPropertyEvent * ev)
+ TRACE ("Window 0x%lx has NET_WM_SYNC_REQUEST_COUNTER set to 0x%lx", c->window, c->xsync_counter);
+ }
+ #endif /* HAVE_XSYNC */
++ else if (ev->atom == display_info->atoms[_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED])
++ {
++ TRACE ("Client \"%s\" Window 0x%lx has received GTK CRAP\n", c->name, c->window);
++ clientUpdateExtra (c);
++ }
+
+ return status;
+ }
+diff --git a/src/frame.c b/src/frame.c
+index 7f4cbd3..23c01cd 100644
+--- a/src/frame.c
++++ b/src/frame.c
+@@ -39,6 +39,8 @@
+ #include "frame.h"
+ #include "compositor.h"
+
++//#define TRACE(fmt, ...) printf(fmt"\n", ##__VA_ARGS__); fflush(stdout);
++
+ typedef struct
+ {
+ xfwmPixmap pm_title;
+@@ -121,7 +123,14 @@ frameTop (Client * c)
+
+ g_return_val_if_fail (c != NULL, 0);
+ if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
+- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
++ && !(FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)
++ || (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT)
++ && (c->screen_info->params->titleless_maximize
++ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE))
++ && c->screen_info->params->borderless_maximize
++ )
++ )
++ )
+ {
+ return c->screen_info->title[TITLE_3][ACTIVE].height;
+ }
+@@ -136,8 +145,13 @@ frameBottom (Client * c)
+ g_return_val_if_fail (c != NULL, 0);
+ if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
+ && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)
+- && (!FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
+- || !(c->screen_info->params->borderless_maximize)))
++ && !(FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
++ && (c->screen_info->params->borderless_maximize))
++ && !(FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT)
++ && (c->screen_info->params->borderless_maximize)
++ && (c->screen_info->params->titleless_maximize
++ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE)))
++ )
+ {
+ return c->screen_info->sides[SIDE_BOTTOM][ACTIVE].height;
+ }
+@@ -203,7 +217,14 @@ frameHeight (Client * c)
+ return frameTop (c) + frameBottom (c);
+ }
+ else if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
+- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
++ && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)
++ && !(
++ FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT)
++ && (c->screen_info->params->borderless_maximize)
++ && (c->screen_info->params->titleless_maximize
++ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE))
++ ))
++
+ {
+ return c->height + frameTop (c) + frameBottom (c);
+ }
+@@ -882,6 +903,7 @@ frameDrawWin (Client * c)
+ gboolean requires_clearing;
+ gboolean width_changed;
+ gboolean height_changed;
++ gboolean vert_only;
+
+ TRACE ("entering frameDraw");
+ TRACE ("drawing frame for \"%s\" (0x%lx)", c->name, c->window);
+@@ -955,128 +977,152 @@ frameDrawWin (Client * c)
+ }
+
+ if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER)
+- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN))
++ && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)
++ && !(FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
++ && (c->screen_info->params->borderless_maximize)
++ && (c->screen_info->params->titleless_maximize
++ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE))
++ ))
+ {
+- /* First, hide the buttons that we don't have... */
+- for (i = 0; i < BUTTON_COUNT; i++)
++ vert_only = FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT)
++ && (c->screen_info->params->borderless_maximize) //only vertical decorations shown (titleless vertical maximize)
++ && (c->screen_info->params->titleless_maximize
++ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE));
++
++ if (vert_only)
+ {
+- char b = getLetterFromButton (i, c);
+- if ((!b) || !strchr (screen_info->params->button_layout, b))
++ //hide all buttons
++ for (i = 0; i < BUTTON_COUNT; i++)
+ {
+ xfwmWindowHide (&c->buttons[i]);
+ }
++ xfwmWindowHide (&c->title);
++ xfwmWindowHide (&c->sides[SIDE_BOTTOM]);
++ xfwmWindowHide (&c->sides[SIDE_TOP]);
++ xfwmWindowHide (&c->corners[CORNER_TOP_LEFT]);
++ xfwmWindowHide (&c->corners[CORNER_TOP_RIGHT]);
++ xfwmWindowHide (&c->corners[CORNER_BOTTOM_LEFT]);
++ xfwmWindowHide (&c->corners[CORNER_BOTTOM_RIGHT]);
+ }
+-
+- /* Then, show the ones that we do have on left... */
+- x = frameLeft (c) + frameButtonOffset (c);
+- if (x < 0)
+- {
+- x = 0;
+- }
+- right = frameWidth (c) - frameRight (c) - frameButtonOffset (c);
+- for (i = 0; i < strlen (screen_info->params->button_layout); i++)
++ else
+ {
+- button = getButtonFromLetter (screen_info->params->button_layout[i], c);
+- if (button == TITLE_SEPARATOR)
++ /* First, hide the buttons that we don't have... */
++ for (i = 0; i < BUTTON_COUNT; i++)
+ {
+- break;
+- }
+- else if (button >= 0)
+- {
+- if (x + screen_info->buttons[button][state].width + screen_info->params->button_spacing < right)
+- {
+- my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state));
+- if (!xfwmPixmapNone(my_pixmap))
+- {
+- xfwmWindowSetBG (&c->buttons[button], my_pixmap);
+- }
+- xfwmWindowShow (&c->buttons[button], x,
+- (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2,
+- screen_info->buttons[button][state].width,
+- screen_info->buttons[button][state].height, TRUE);
+- button_x[button] = x;
+- x = x + screen_info->buttons[button][state].width +
+- screen_info->params->button_spacing;
+- }
+- else
++ char b = getLetterFromButton (i, c);
++ if ((!b) || !strchr (screen_info->params->button_layout, b))
+ {
+- xfwmWindowHide (&c->buttons[button]);
++ xfwmWindowHide (&c->buttons[i]);
+ }
+ }
+- }
+- left = x + screen_info->params->button_spacing;
+
+- /* and those that we do have on right... */
+- x = frameWidth (c) - frameRight (c) + screen_info->params->button_spacing -
+- frameButtonOffset (c);
+- for (j = strlen (screen_info->params->button_layout) - 1; j >= i; j--)
+- {
+- button = getButtonFromLetter (screen_info->params->button_layout[j], c);
+- if (button == TITLE_SEPARATOR)
++ /* Then, show the ones that we do have on left... */
++ x = frameLeft (c) + frameButtonOffset (c);
++ if (x < 0)
+ {
+- break;
++ x = 0;
+ }
+- else if (button >= 0)
++ right = frameWidth (c) - frameRight (c) - frameButtonOffset (c);
++ for (i = 0; i < strlen (screen_info->params->button_layout); i++)
+ {
+- if (x - screen_info->buttons[button][state].width - screen_info->params->button_spacing > left)
++ button = getButtonFromLetter (screen_info->params->button_layout[i], c);
++ if (button == TITLE_SEPARATOR)
+ {
+- my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state));
+- if (!xfwmPixmapNone(my_pixmap))
++ break;
++ }
++ else if (button >= 0)
++ {
++ if (x + screen_info->buttons[button][state].width + screen_info->params->button_spacing < right)
++ {
++ my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state));
++ if (!xfwmPixmapNone(my_pixmap))
++ {
++ xfwmWindowSetBG (&c->buttons[button], my_pixmap);
++ }
++ xfwmWindowShow (&c->buttons[button], x,
++ (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2,
++ screen_info->buttons[button][state].width,
++ screen_info->buttons[button][state].height, TRUE);
++ button_x[button] = x;
++ x = x + screen_info->buttons[button][state].width +
++ screen_info->params->button_spacing;
++ }
++ else
+ {
+- xfwmWindowSetBG (&c->buttons[button], my_pixmap);
++ xfwmWindowHide (&c->buttons[button]);
+ }
+- x = x - screen_info->buttons[button][state].width -
+- screen_info->params->button_spacing;
+- xfwmWindowShow (&c->buttons[button], x,
+- (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2,
+- screen_info->buttons[button][state].width,
+- screen_info->buttons[button][state].height, TRUE);
+- button_x[button] = x;
+ }
+- else
++ }
++ left = x + screen_info->params->button_spacing;
++
++ /* and those that we do have on right... */
++ x = frameWidth (c) - frameRight (c) + screen_info->params->button_spacing -
++ frameButtonOffset (c);
++ for (j = strlen (screen_info->params->button_layout) - 1; j >= i; j--)
++ {
++ button = getButtonFromLetter (screen_info->params->button_layout[j], c);
++ if (button == TITLE_SEPARATOR)
+ {
+- xfwmWindowHide (&c->buttons[button]);
++ break;
++ }
++ else if (button >= 0)
++ {
++ if (x - screen_info->buttons[button][state].width - screen_info->params->button_spacing > left)
++ {
++ my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state));
++ if (!xfwmPixmapNone(my_pixmap))
++ {
++ xfwmWindowSetBG (&c->buttons[button], my_pixmap);
++ }
++ x = x - screen_info->buttons[button][state].width -
++ screen_info->params->button_spacing;
++ xfwmWindowShow (&c->buttons[button], x,
++ (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2,
++ screen_info->buttons[button][state].width,
++ screen_info->buttons[button][state].height, TRUE);
++ button_x[button] = x;
++ }
++ else
++ {
++ xfwmWindowHide (&c->buttons[button]);
++ }
+ }
+ }
++ left = left - 2 * screen_info->params->button_spacing;
++ right = x;
++ xfwmPixmapInit (screen_info, &frame_pix.pm_title);
++ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_TOP]);
++ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]);
++
++ top_width = frameWidth (c) - frameTopLeftWidth (c, state) - frameTopRightWidth (c, state);
++ bottom_width = frameWidth (c) -
++ screen_info->corners[CORNER_BOTTOM_LEFT][state].width -
++ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width;
++
++ /* The title is almost always visible */
++ frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title, &frame_pix.pm_sides[SIDE_TOP]);
++ xfwmWindowSetBG (&c->title, &frame_pix.pm_title);
++ xfwmWindowShow (&c->title,
++ frameTopLeftWidth (c, state), 0, top_width,
++ frameTop (c), (requires_clearing | width_changed));
++
++ /* Corners are never resized, we need to update them separately */
++ if (requires_clearing)
++ {
++ xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT],
++ &screen_info->corners[CORNER_TOP_LEFT][state]);
++ xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT],
++ &screen_info->corners[CORNER_TOP_RIGHT][state]);
++ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT],
++ &screen_info->corners[CORNER_BOTTOM_LEFT][state]);
++ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT],
++ &screen_info->corners[CORNER_BOTTOM_RIGHT][state]);
++ }
+ }
+- left = left - 2 * screen_info->params->button_spacing;
+- right = x;
+-
+- top_width = frameWidth (c) - frameTopLeftWidth (c, state) - frameTopRightWidth (c, state);
+- bottom_width = frameWidth (c) -
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].width -
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width;
+- left_height = frameHeight (c) - frameTop (c) -
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].height;
+- right_height = frameHeight (c) - frameTop (c) -
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height;
+-
+- xfwmPixmapInit (screen_info, &frame_pix.pm_title);
+- xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_TOP]);
+- xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]);
++
+ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_LEFT]);
+ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_RIGHT]);
+
+- /* The title is always visible */
+- frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title, &frame_pix.pm_sides[SIDE_TOP]);
+- xfwmWindowSetBG (&c->title, &frame_pix.pm_title);
+- xfwmWindowShow (&c->title,
+- frameTopLeftWidth (c, state), 0, top_width,
+- frameTop (c), (requires_clearing | width_changed));
+-
+- /* Corners are never resized, we need to update them separately */
+- if (requires_clearing)
+- {
+- xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT],
+- &screen_info->corners[CORNER_TOP_LEFT][state]);
+- xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT],
+- &screen_info->corners[CORNER_TOP_RIGHT][state]);
+- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT],
+- &screen_info->corners[CORNER_BOTTOM_LEFT][state]);
+- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT],
+- &screen_info->corners[CORNER_BOTTOM_RIGHT][state]);
+- }
+-
+ if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED)
+ && (c->screen_info->params->borderless_maximize))
+ {
+@@ -1091,6 +1137,18 @@ frameDrawWin (Client * c)
+ }
+ else
+ {
++ if (vert_only)
++ {
++ left_height = right_height = c->height;
++ }
++ else
++ {
++ left_height = frameHeight (c) - frameTop (c)
++ - screen_info->corners[CORNER_BOTTOM_LEFT][state].height;
++ right_height = frameHeight (c) - frameTop (c)
++ - screen_info->corners[CORNER_BOTTOM_RIGHT][state].height;
++ }
++
+ if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED))
+ {
+ xfwmWindowHide (&c->sides[SIDE_LEFT]);
+@@ -1120,63 +1178,69 @@ frameDrawWin (Client * c)
+ right_height, (requires_clearing | height_changed));
+ }
+
+- xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM],
+- bottom_width, frameBottom (c));
+- xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state],
+- &frame_pix.pm_sides[SIDE_BOTTOM],
+- 0, 0, bottom_width, frameBottom (c));
+- xfwmWindowSetBG (&c->sides[SIDE_BOTTOM],
+- &frame_pix.pm_sides[SIDE_BOTTOM]);
+- xfwmWindowShow (&c->sides[SIDE_BOTTOM],
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
+- frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c),
+- (requires_clearing | width_changed));
+-
+- if (!xfwmPixmapNone(&frame_pix.pm_sides[SIDE_TOP]))
++ if (!vert_only)
+ {
+- xfwmWindowSetBG (&c->sides[SIDE_TOP], &frame_pix.pm_sides[SIDE_TOP]);
+- xfwmWindowShow (&c->sides[SIDE_TOP],
+- screen_info->corners[CORNER_TOP_LEFT][state].width,
+- 0, top_width, frame_pix.pm_sides[SIDE_TOP].height,
++ xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM],
++ bottom_width, frameBottom (c));
++ xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state],
++ &frame_pix.pm_sides[SIDE_BOTTOM],
++ 0, 0, bottom_width, frameBottom (c));
++ xfwmWindowSetBG (&c->sides[SIDE_BOTTOM],
++ &frame_pix.pm_sides[SIDE_BOTTOM]);
++ xfwmWindowShow (&c->sides[SIDE_BOTTOM],
++ screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
++ frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c),
+ (requires_clearing | width_changed));
+- }
+- else
+- {
+- xfwmWindowHide (&c->sides[SIDE_TOP]);
+- }
+
+- xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0,
+- frameTopLeftWidth (c, state),
+- screen_info->corners[CORNER_TOP_LEFT][state].height,
+- requires_clearing);
+-
+- xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT],
+- frameWidth (c) - frameTopRightWidth (c, state),
+- 0, frameTopRightWidth (c, state),
+- screen_info->corners[CORNER_TOP_RIGHT][state].height,
+- requires_clearing);
+-
+- xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0,
+- frameHeight (c) -
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
+- screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
+- requires_clearing);
+-
+- xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT],
+- frameWidth (c) -
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width,
+- frameHeight (c) -
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height,
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width,
+- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height,
+- requires_clearing);
++ if (!xfwmPixmapNone(&frame_pix.pm_sides[SIDE_TOP]))
++ {
++ xfwmWindowSetBG (&c->sides[SIDE_TOP], &frame_pix.pm_sides[SIDE_TOP]);
++ xfwmWindowShow (&c->sides[SIDE_TOP],
++ screen_info->corners[CORNER_TOP_LEFT][state].width,
++ 0, top_width, frame_pix.pm_sides[SIDE_TOP].height,
++ (requires_clearing | width_changed));
++ }
++ else
++ {
++ xfwmWindowHide (&c->sides[SIDE_TOP]);
++ }
++
++ xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0,
++ frameTopLeftWidth (c, state),
++ screen_info->corners[CORNER_TOP_LEFT][state].height,
++ requires_clearing);
++
++ xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT],
++ frameWidth (c) - frameTopRightWidth (c, state),
++ 0, frameTopRightWidth (c, state),
++ screen_info->corners[CORNER_TOP_RIGHT][state].height,
++ requires_clearing);
++
++ xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0,
++ frameHeight (c) -
++ screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
++ screen_info->corners[CORNER_BOTTOM_LEFT][state].width,
++ screen_info->corners[CORNER_BOTTOM_LEFT][state].height,
++ requires_clearing);
++
++ xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT],
++ frameWidth (c) -
++ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width,
++ frameHeight (c) -
++ screen_info->corners[CORNER_BOTTOM_RIGHT][state].height,
++ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width,
++ screen_info->corners[CORNER_BOTTOM_RIGHT][state].height,
++ requires_clearing);
++ }
+ }
+ frameSetShape (c, state, &frame_pix, button_x);
+
+- xfwmPixmapFree (&frame_pix.pm_title);
+- xfwmPixmapFree (&frame_pix.pm_sides[SIDE_TOP]);
+- xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
++ if (!vert_only)
++ {
++ xfwmPixmapFree (&frame_pix.pm_title);
++ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_TOP]);
++ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]);
++ }
+ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]);
+ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_RIGHT]);
+ }
+diff --git a/src/netwm.c b/src/netwm.c
+index 1352f08..9e3647c 100644
+--- a/src/netwm.c
++++ b/src/netwm.c
+@@ -136,6 +136,44 @@ clientSetNetState (Client * c)
+ }
+
+ void
++clientGetExtra (Client *c)
++{
++ long val;
++ DisplayInfo *display_info;
++
++ display_info = c->screen_info->display_info;
++
++ getHint (display_info, c->window, _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED, &val);
++ if (val)
++ FLAG_SET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE);
++}
++
++void
++clientUpdateExtra (Client *c)
++{
++ long val;
++ unsigned long maximization_flags = 0L;
++ DisplayInfo *display_info;
++
++ display_info = c->screen_info->display_info;
++
++ getHint (display_info, c->window, _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED, &val);
++ if (val)
++ FLAG_SET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE);
++ else
++ FLAG_UNSET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE);
++
++ if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED))
++ {
++ maximization_flags = c->flags & CLIENT_FLAG_MAXIMIZED;
++
++ /* Force an update by clearing the internal flags */
++ FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT);
++ clientToggleMaximized (c, maximization_flags, TRUE);
++ }
++}
++
++void
+ clientGetNetState (Client * c)
+ {
+ ScreenInfo *screen_info;
+diff --git a/src/placement.c b/src/placement.c
+index 01f2590..64719a7 100644
+--- a/src/placement.c
++++ b/src/placement.c
+@@ -38,7 +38,6 @@
+ #include "frame.h"
+ #include "netwm.h"
+
+-
+ /* Compute rectangle overlap area */
+
+ static inline unsigned long
+@@ -108,6 +107,8 @@ clientMaxSpace (ScreenInfo *screen_info, int *x, int *y, int *w, int *h)
+ g_return_if_fail (w != NULL);
+ g_return_if_fail (h != NULL);
+
++ TRACE ("entering clientMaxSpace");
++
+ screen_width = 0;
+ screen_height = 0;
+ delta = 0;
+@@ -157,6 +158,7 @@ clientMaxSpace (ScreenInfo *screen_info, int *x, int *y, int *w, int *h)
+ }
+ }
+ }
++ TRACE ("clientMaxSpace result %d %d %d %d", *x, *y, *w, *h);
+ }
+
+ gboolean
+diff --git a/src/settings.c b/src/settings.c
+index 607bb7b..37b6c2a 100644
+--- a/src/settings.c
++++ b/src/settings.c
+@@ -667,6 +667,7 @@ loadSettings (ScreenInfo *screen_info)
+ /* You can change the order of the following parameters */
+ {"activate_action", NULL, G_TYPE_STRING, TRUE},
+ {"borderless_maximize", NULL, G_TYPE_BOOLEAN, TRUE},
++ {"titleless_maximize", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"box_move", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"box_resize", NULL, G_TYPE_BOOLEAN, TRUE},
+ {"button_layout", NULL, G_TYPE_STRING, TRUE},
+@@ -753,6 +754,8 @@ loadSettings (ScreenInfo *screen_info)
+
+ screen_info->params->borderless_maximize =
+ getBoolValue ("borderless_maximize", rc);
++ screen_info->params->titleless_maximize =
++ getBoolValue ("titleless_maximize", rc);
+ screen_info->params->box_resize =
+ getBoolValue ("box_resize", rc);
+ screen_info->params->box_move =
+@@ -1261,6 +1264,11 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_
+ screen_info->params->borderless_maximize = g_value_get_boolean (value);
+ reloadScreenSettings (screen_info, UPDATE_MAXIMIZE);
+ }
++ else if (!strcmp (name, "titleless_maximize"))
++ {
++ screen_info->params->titleless_maximize = g_value_get_boolean (value);
++ reloadScreenSettings (screen_info, UPDATE_MAXIMIZE);
++ }
+ else if (!strcmp (name, "cycle_minimum"))
+ {
+ screen_info->params->cycle_minimum = g_value_get_boolean (value);
+diff --git a/src/settings.h b/src/settings.h
+index be01b6b..ea8b79b 100644
+--- a/src/settings.h
++++ b/src/settings.h
+@@ -197,6 +197,7 @@ struct _XfwmParams
+ int title_shadow[2];
+ int wrap_resistance;
+ gboolean borderless_maximize;
++ gboolean titleless_maximize;
+ gboolean box_move;
+ gboolean box_resize;
+ gboolean click_to_focus;
+--
+1.8.4
+
diff --git a/pcr/xfwm4-titleless/xfwm4.install b/pcr/xfwm4-titleless/xfwm4.install
new file mode 100644
index 000000000..e4f8fd06c
--- /dev/null
+++ b/pcr/xfwm4-titleless/xfwm4.install
@@ -0,0 +1,13 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et: