diff options
21 files changed, 1928 insertions, 20 deletions
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/icecat-noscript/PKGBUILD b/libre/icecat-noscript/PKGBUILD index 9ce528bd3..35e6d73c1 100644 --- a/libre/icecat-noscript/PKGBUILD +++ b/libre/icecat-noscript/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 93410 2013-07-03 10:50:31Z spupykin $ +# $Id: PKGBUILD 97515 2013-09-23 16:13:35Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=firefox-noscript pkgname=icecat-noscript -pkgver=2.6.6.7 -pkgrel=1.1 +pkgver=2.6.7.1 +pkgrel=1 pkgdesc="plugin for icecat which disables script" arch=('any') url="http://noscript.net/" @@ -14,7 +14,7 @@ depends=() provides=$_pkgname=$pkgver makedepends=('unzip') source=(https://secure.informaction.com/download/releases/noscript-$pkgver.xpi) -md5sums=('10b6704f34568d226fb5fe69b7d6043d') +md5sums=('fcc2cbd8792d215604e3fe89847bc936') package() { # _ffver=`pacman -Q icecat | cut -f2 -d\ | cut -f1 -d-` diff --git a/libre/iceweasel-noscript/PKGBUILD b/libre/iceweasel-noscript/PKGBUILD index 2d5f48040..f6e6a2d43 100644 --- a/libre/iceweasel-noscript/PKGBUILD +++ b/libre/iceweasel-noscript/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 93410 2013-07-03 10:50:31Z spupykin $ +# $Id: PKGBUILD 97515 2013-09-23 16:13:35Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=firefox-noscript pkgname=iceweasel-noscript -pkgver=2.6.6.7 +pkgver=2.6.7.1 pkgrel=1 pkgdesc="plugin for iceweasel which disables script" arch=('any') @@ -14,7 +14,7 @@ depends=() provides=$_pkgname=$pkgver makedepends=('unzip') source=(https://secure.informaction.com/download/releases/noscript-$pkgver.xpi) -md5sums=('10b6704f34568d226fb5fe69b7d6043d') +md5sums=('fcc2cbd8792d215604e3fe89847bc936') package() { # _ffver=`pacman -Q iceweasel-libre | cut -f2 -d\ | cut -f1 -d-` 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/gnomeradio/PKGBUILD b/pcr/gnomeradio/PKGBUILD new file mode 100644 index 000000000..1fa76de08 --- /dev/null +++ b/pcr/gnomeradio/PKGBUILD @@ -0,0 +1,49 @@ +# Maintainer: none +# Contributor: Luke Shumaker <lukeshu@sbcglobal.net> +# Maintainer (AUR): tritonas00 <tritonas00@gmail.com> +# Contributor: Ivan Rojas <kirdux@gmail.com> + +# Because gnomeradio is written against ancient libraries, we must patch it to +# compile and work on a modern system. Let's just grab the patch series that +# Debian uses. +_debver=1.8-2 # which patches to grab from Debian +_debrepo=http://ftp.debian.org/debian/pool/main +_debfile() { echo "${_debrepo}/${1:0:1}/${1}/${1}_${2}"; } + +pkgname=gnomeradio +pkgver=1.8 +pkgrel=6.1 +pkgdesc="An FM-radio tuner for the GNOME desktop" +url="https://projects.gnome.org/gnomeradio/" +license=('GPL') +arch=('i686' 'x86_64') +install=gnomeradio.install +depends=(libgnome-media-profiles lirc-utils hicolor-icon-theme) +makedepends=(gnome-doc-utils intltool gnome-vfs libgnomeui v4l-utils) +source=(https://launchpad.net/$pkgname/stable/$pkgver/+download/$pkgname-$pkgver.tar.gz + $(_debfile "$pkgname" "$_debver").debian.tar.gz) + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + while read -r patchfile; do + patch -p1 -i "$srcdir/debian/patches/$patchfile" + done <"$srcdir/debian/patches/series" + autoconf +} + +build() { + cd "$srcdir/$pkgname-$pkgver" + LIBS=-lm ./configure --prefix=/usr --sysconfdir=/etc --disable-scrollkeeper \ + --disable-install-schemas + make +} + +package () { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install + mkdir "$pkgdir"/usr/share/pixmaps + install data/icons/scalable/gnomeradio.svg "$pkgdir"/usr/share/pixmaps/gnomeradio.svg +} + +md5sums=('26f07c432dffeebec3cc904f99295427' + '019ce748f8463d3eaebbb3e88d18d3e0') diff --git a/pcr/gnomeradio/gnomeradio.install b/pcr/gnomeradio/gnomeradio.install new file mode 100644 index 000000000..1a05f573e --- /dev/null +++ b/pcr/gnomeradio/gnomeradio.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} 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\"><i>Small</i></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\"><i>Large</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\"><i>Transparent</i>" +- ";</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\"><i>Small</i></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\"><i>Large</i></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\"><i>Transparent</i></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\"><i>Opaque</i></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\"><i>Transparent</i><" ++ "/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\"><i>Opaque</i></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\"><i>Transparent</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\"><i>Opaque</i></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\"><i>Transparent</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\"><i>Opaque</i></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\"><i>Transparent<" +- "/i></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\"><i>Opaque</i></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\"><i>Transparent" +- "</i></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\"><i>Opaque</i></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\"><i>Transparent<" ++ ";/i></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\"><i>Opaque</i></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: diff --git a/pcr/youtube-dl-current/PKGBUILD b/pcr/youtube-dl-current/PKGBUILD index 1f7b10296..011a91bdc 100644 --- a/pcr/youtube-dl-current/PKGBUILD +++ b/pcr/youtube-dl-current/PKGBUILD @@ -5,7 +5,7 @@ pkgname=youtube-dl-current _pkgname=youtube-dl provides=(youtube-dl) -pkgver=2013.09.20.1 +pkgver=2013.09.24.2 pkgrel=1 pkgdesc="A small command-line program to download videos from YouTube.com and a few more sites" arch=('any') @@ -28,5 +28,6 @@ package() { install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE" } -md5sums=('ee26e1e7558bd5f411aae9b1bf9e7e47' + +md5sums=('f62dcb15581a3ce35cfc323bf9aed905' 'SKIP') |