From f73a4c63de6e8d53ef552ae5fb5a7a5b379634d2 Mon Sep 17 00:00:00 2001
From: André Fabian Silva Delgado
Date: Mon, 23 Sep 2013 18:55:52 -0300
Subject: ice{cat,weasel}-noscript-2.6.7.1-1: updating version
---
libre/icecat-noscript/PKGBUILD | 8 ++++----
libre/iceweasel-noscript/PKGBUILD | 6 +++---
2 files changed, 7 insertions(+), 7 deletions(-)
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
# Maintainer (Parabola): André Silva
_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
# Maintainer (Parabola): André Silva
_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-`
--
cgit v1.2.3-54-g00ecf
From 9b9d179e527858deb6f4f67504bb73c238bc2a28 Mon Sep 17 00:00:00 2001
From: Luke Shumaker
Date: Tue, 24 Sep 2013 14:45:39 -0400
Subject: add pcr/gnomeradio
---
pcr/gnomeradio/PKGBUILD | 49 +++++++++++++++++++++++++++++++++++++++
pcr/gnomeradio/gnomeradio.install | 11 +++++++++
2 files changed, 60 insertions(+)
create mode 100644 pcr/gnomeradio/PKGBUILD
create mode 100644 pcr/gnomeradio/gnomeradio.install
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
+# Maintainer (AUR): tritonas00
+# Contributor: Ivan Rojas
+
+# 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
+}
--
cgit v1.2.3-54-g00ecf
From 9792f551f8d4e7f0ed26b5b933d0e20a3734b4b8 Mon Sep 17 00:00:00 2001
From: Alon Ivtsan
Date: Wed, 25 Sep 2013 07:02:57 +0300
Subject: updating youtube-dl-current to version 2013.09.24.2
---
pcr/youtube-dl-current/PKGBUILD | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
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')
--
cgit v1.2.3-54-g00ecf
From c2307a65147cd7aa22e30e6edd69c460b153bbbc Mon Sep 17 00:00:00 2001
From: aurelien
Date: Wed, 25 Sep 2013 15:57:53 +0200
Subject: + xfwm4-titleless
---
pcr/xfwm4-titleless/PKGBUILD | 46 +
.../xfwm4-hide-titlebar-when-maximized.patch | 1456 ++++++++++++++++++++
pcr/xfwm4-titleless/xfwm4.install | 13 +
3 files changed, 1515 insertions(+)
create mode 100644 pcr/xfwm4-titleless/PKGBUILD
create mode 100644 pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch
create mode 100644 pcr/xfwm4-titleless/xfwm4.install
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
+# Contributor: Evangelos Foutras
+# Contributor: tobias
+# Maintainer : Parabola Aurélien DESBRIÈRES
+
+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
+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
+
+
+
++
++ Hide _title of windows when maximized
++ True
++ True
++ False
++ True
++ True
++
++
++ False
++ False
++ 3
++
++
++
+
+ Restore original _size of maximized windows when moving
+ True
+@@ -354,7 +369,7 @@ or "skip taskbar" properties set
+
+ False
+ False
+- 3
++ 4
+
+
+
+@@ -369,7 +384,7 @@ or "skip taskbar" properties set
+
+ False
+ False
+- 4
++ 5
+
+
+
+@@ -384,7 +399,7 @@ or "skip taskbar" properties set
+
+ False
+ False
+- 5
++ 6
+
+
+
+@@ -399,7 +414,7 @@ or "skip taskbar" properties set
+
+ False
+ False
+- 5
++ 7
+
+
+
+@@ -414,7 +429,7 @@ or "skip taskbar" properties set
+
+ False
+ False
+- 6
++ 8
+
+
+
+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>True FalseFalse"
+ "property>2
Restore original _size of maxim"
+- "ized windows when movingTrueTrue False True
True False F"
+- "alse 3 Automatically _tile windows "
+- "when moving toward the screen edgeTrue True False True True False False 4 Use _edge resistanc"
+- "e instead of window snapping True<"
+- "/property>True False Tru"
+- "e True <"
+- "packing>False False 5 "
+- "child>Notify of _urgency by making w"
+- "indow\'s decoration blinkTrueHide _title of windows when "
++ "maximized True True "
++ "False True True False False "
++ "3 Restore original _size of maximized wind"
++ "ows when moving True TrueFalse True <"
++ "property name=\"draw_indicator\">TrueFalseFalse4 "
++ "Automatically _tile windows when movi"
++ "ng toward the screen edge TrueTrue False True"
+ "property>True False "
+ "False 5 <"
+- "property name=\"label\" translatable=\"yes\">Keep urgent windows _blink"
+- "ing repeatedlyTrue Use _edge resistance instead"
++ " of window snappingTrue True False TrueTrue <"
++ "property name=\"expand\">FalseFalse<"
++ "/property>6 Notify of _urgency by making window\'s "
++ "decoration blink True TrueFalse True "
++ "True
FalseFalse7 Keep urgent windows _blinking repea"
++ "tedly True True Fals"
++ "e True True False False 8 2 True _Acce"
++ "ssibility True 2 False True 12 vert"
++ "ical 6 Use the _mouse wheel on the desktop to swi"
++ "tch workspaces True TrueFalse True True
FalseFalse6 2 True _Accessibility True 2 False True 12 vertical 6 "
+- "Use the _mouse wheel on the desk"
+- "top to switch workspacesTrueTrue False TrueTrue False F"
+- "alse 0 _Remember and recall pre"
+- "vious workspace\nwhen switching via keyboard shortcuts TrueTrue"
+- "property>False True True FalseFalse 1 "
+- "Wrap workspaces depending on the actual desktop _layout TrueTrue<"
+- "/property>False True True FalseFalse 2 W"
+- "rap workspaces when the _first or the last workspace is reachedTrue True False <"
+- "property name=\"use_underline\">True True Fa"
+- "lse False 3 3 True_WorkspacesTrue <"
+- "property name=\"position\">3 Fals"
+- "e True 12 vertical "
+- "6 True 0 _"
+- "Minimum size of windows to trigger smart placement: True placement_ratio_scale False False 0 True6 12 True 1"
+- "2 True <i>Small</i>True False False0 True Trueadjustment1 False "
+- "False 1 <"
+- "property name=\"visible\">True<i>Large</i&"
+- "gt; True False 2 <"
+- "property name=\"expand\">FalseFalse<"
+- "/property>1 True vertical"
+- "property>6 True 0 By default, place windows: 0 True"
+- "property>6 12 True 6 vertical 6
At the _center of the screen True True FalseTrue True 0 <"
+- "/child>Under the mouse _po"
+- "inter True True Fals"
+- "e True True Trueplacement_center_option 1 1 Fals"
+- "e False 2 4 True_Placement True 4False"
+- "property> True 12 vertical 6_Enable display compositing True True False True True False False 0 True False True "
+- "never automatic True queue"
+- "none "
+- "True 6 12 Truevertical 6 Display _fullscreen overlay windows directly 0 <"
++ "object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\">_Remember and recall previous wor"
++ "kspace\nwhen switching via keyboard shortcuts True True "
++ "False True True False False1 Wrap wor"
++ "kspaces depending on the actual desktop _layout True TrueFalse True True"
+ "property> False 0
Show shadows under _regular windows True True FalseTrue True False 1 Show shadows under po"
+- "p_up windows True TrueFalse True True False2 Show "
+- "shadows under _dock windows True"
+- "property>True False True"
+- " True False 3
True 0 Op"
+- "aci_ty of window decorations: True frame_opacity_scale<"
+- "/property> False <"
+- "property name=\"position\">4Tr"
+- "ue 2 12 True True <i>Transparent</i>"
+- ";True False F"
+- "alse 0 False2 Wrap wo"
++ "rkspaces when the _first or the last workspace is reached TrueTru"
++ "e False TrueTrue FalseFalse 3 3 True _Workspaces True
3False <"
++ "property name=\"visible\">True12 vertical 6True 0 _Minimu"
++ "m size of windows to trigger smart placement: True pla"
++ "cement_ratio_scale False False 0 True "
++ "6 12 True12True <i>Small</i> True
False False 0 True True adjustment1False False<"
++ "/property> 1 True<i>Large</i>True "
++ "False 2"
++ " FalseFalse1 True vertical6 True 0 By default, place windows: 0 True6 12 <"
++ "property name=\"visible\">True 6 vertical 6 At the _center of the screen True True False True True 0 "
++ "Under the mouse _pointer<"
++ "/property>True True FalseTrue True Trueplacement_center_option <"
++ "packing>1 1 <"
++ "/packing>FalseFalse 2 4 True <"
++ "property name=\"label\" translatable=\"yes\">_PlacementTrue 4 False True1"
++ "2 vertical 6 _Enable display compositing Tru"
++ "e True False T"
++ "rue True False False 0 "
++ "True False True neverautomatic True queue none"
++ " True6 12 Truevertical 6 D"
++ "isplay _fullscreen overlay windows directly True True False
True True False 0 Show shadows under _regular windowsTrue True False True True Fals"
++ "e 1 <"
++ "child><"
++ "property name=\"label\" translatable=\"yes\">Show shadows under pop_up "
++ "windowsTrue True Fa"
++ "lse True True False 2 "
++ "packing>Show shado"
++ "ws under _dock windows TrueTrue False True True False 3 True 0 Opaci_t"
++ "y of window decorations: Tru"
++ "e frame_opacity_scale False 4 True"
++ "property>2 12 True True <i>Transparent</i>True "
++ "False False"
++ " 0 True Truediscontinuous adjustment2 False False 1 True <i>Opaque</i> T"
++ "rue FalseFalse "
++ "2 FalseFalse5 <"
++ "object class=\"GtkLabel\" id=\"label13\">Tru"
++ "e 0 Opacity of _inactive windows: Trueinactive_opacity_scale False False 6 True"
++ " 2 12 True True <i>Transparent</i><"
++ "/property>True False Fal"
++ "se 0 "
++ "TrueTrue"
++ "property>discontinuous adjustment3 False False"
++ "property> 1 True<i>Opaque</i> True FalseFalse 2 <"
++ "property name=\"expand\">FalseFalse<"
++ "/property>7 True 0 Opacity of windows during _move: True move_opacity_scale False False "
++ "8 T"
++ "rue 2 12 True True <i>Transparent</i&g"
++ "t;True False "
++ "False 0 TrueTruediscontinuous adjustment2 adjustment4 False False 1 True <i>Opaque</i> True FalseFalse 2 FalseFalse"
+- "property>5
9 True 0 Opacity of _inactive windows: True
inactive_opacity_scale False False 6 "
+- "True 2 12 True True <i>Transparent</i&g"
+- "t;True False "
+- "False 0 TrueTru"
+- "e discontinuous adjustment3False Fals"
+- "e
1 <"
+- "/packing>True<i>Opaque</i> True False"
+- " False 2 False Fal"
+- "se 7 "
+- "True 0 Opacity of windows during _move:True move_opacity_scale Opacity of windows during resi_ze: True resize_opacity_scale FalseFalse8 True 2 12 True True <i>Transparent<"
+- "/i> True "
+- "False False 0 <"
+- "/child>TrueTru"
+- "e discontinuous adjustment4False Fals"
+- "e
1 <"
+- "/packing>True<i>Opaque</i> True False"
+- " False 2 False Fal"
+- "se 9 "
+- "True 0 Opacity of windows during resi_ze:True resize_opacity_scale FalseFalse10 True 2 12True True<i>Transparent"
+- "</i> True False False 0 True True discontinuousadjustment5 False "
+- "False 1 <"
+- "property name=\"visible\">True<i>Opaque</i> True F"
+- "alse False 10 <"
++ "object class=\"GtkAlignment\" id=\"alignment8\">True 2 12 True True<i>Transparent<"
++ ";/i> True False False 0 "
++ ""
++ "True "
++ "True discontinuous adjustment5 False F"
++ "alse 1 True<i>Opaque</i> True
Fa"
++ "lse False 2 False "
+ "False 11 "
+ };
+
+-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:
--
cgit v1.2.3-54-g00ecf
From 46972b9797ca99ebe8388d62040b04e7ddc48ae1 Mon Sep 17 00:00:00 2001
From: aurelien
Date: Wed, 25 Sep 2013 20:14:06 +0200
Subject: + dratmenu
---
pcr/dratmenu/PKGBUILD | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 pcr/dratmenu/PKGBUILD
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
+# Maintainer : Parabola Aurélien DESBRIÈRES
+
+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
+}
--
cgit v1.2.3-54-g00ecf
From e3315e8885f020b42891970b2077e46246d3099b Mon Sep 17 00:00:00 2001
From: aurelien
Date: Wed, 25 Sep 2013 20:32:58 +0200
Subject: + ttf-font-awesome
---
pcr/ttf-font-awesome/PKGBUILD | 19 +++++++++++++++++++
pcr/ttf-font-awesome/ttf-font-awesome.install | 20 ++++++++++++++++++++
2 files changed, 39 insertions(+)
create mode 100644 pcr/ttf-font-awesome/PKGBUILD
create mode 100644 pcr/ttf-font-awesome/ttf-font-awesome.install
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
+
+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 $*
--
cgit v1.2.3-54-g00ecf
From 21fbe187a9eed151eec8042d40f8cf7008a095db Mon Sep 17 00:00:00 2001
From: André Fabian Silva Delgado
Date: Wed, 25 Sep 2013 16:38:14 -0300
Subject: linux-libre-3.11.1-3: updating revision with new patches
* fix broken skge network driver #36865 => https://bugs.archlinux.org/task/36865
* add haswell pstate support
* update version for mips64el
---
libre/linux-libre/3.11-haswell-intel_pstate.patch | 32 +++++++++++++++++++++
libre/linux-libre/3.11.1-fix-skge.patch | 34 +++++++++++++++++++++++
libre/linux-libre/PKGBUILD | 18 ++++++++++--
3 files changed, 81 insertions(+), 3 deletions(-)
create mode 100644 libre/linux-libre/3.11-haswell-intel_pstate.patch
create mode 100644 libre/linux-libre/3.11.1-fix-skge.patch
diff --git a/libre/linux-libre/3.11-haswell-intel_pstate.patch b/libre/linux-libre/3.11-haswell-intel_pstate.patch
new file mode 100644
index 000000000..1f376b518
--- /dev/null
+++ b/libre/linux-libre/3.11-haswell-intel_pstate.patch
@@ -0,0 +1,32 @@
+From 6cdcdb793791f776ea9408581b1242b636d43b37 Mon Sep 17 00:00:00 2001
+From: Nell Hardcastle
+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
+Acked-by: Viresh Kumar
+Acked-by: Dirk Brandewie
+Signed-off-by: Rafael J. Wysocki
+---
+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
# Maintainer: Thomas Baechler
# Maintainer (Parabola): André Silva
@@ -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"
--
cgit v1.2.3-54-g00ecf
From b59b75a1d6738af02d60df57fb8eee568c181db9 Mon Sep 17 00:00:00 2001
From: aurelien
Date: Wed, 25 Sep 2013 22:18:05 +0200
Subject: + python-jedi
---
pcr/python-jedi/PKGBUILD | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 pcr/python-jedi/PKGBUILD
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
+# Maintainer : Parabola Aurélien DESBRIÈRES
+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:
--
cgit v1.2.3-54-g00ecf
From 9a0f738febf3ceb865683ddf89a2e0ba15751868 Mon Sep 17 00:00:00 2001
From: André Fabian Silva Delgado
Date: Wed, 25 Sep 2013 17:33:11 -0300
Subject: linux-libre-{pae,xen}-3.11.1-3: updating revision with new patches
* fix broken skge network driver #36865 => https://bugs.archlinux.org/task/36865
* add haswell pstate support
---
.../3.11-haswell-intel_pstate.patch | 32 ++++++++++++++++++++
kernels/linux-libre-pae/3.11.1-fix-skge.patch | 34 ++++++++++++++++++++++
kernels/linux-libre-pae/PKGBUILD | 20 ++++++++++---
.../3.11-haswell-intel_pstate.patch | 32 ++++++++++++++++++++
kernels/linux-libre-xen/3.11.1-fix-skge.patch | 34 ++++++++++++++++++++++
kernels/linux-libre-xen/PKGBUILD | 20 ++++++++++---
6 files changed, 164 insertions(+), 8 deletions(-)
create mode 100644 kernels/linux-libre-pae/3.11-haswell-intel_pstate.patch
create mode 100644 kernels/linux-libre-pae/3.11.1-fix-skge.patch
create mode 100644 kernels/linux-libre-xen/3.11-haswell-intel_pstate.patch
create mode 100644 kernels/linux-libre-xen/3.11.1-fix-skge.patch
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
+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
+Acked-by: Viresh Kumar
+Acked-by: Dirk Brandewie
+Signed-off-by: Rafael J. Wysocki
+---
+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
# Contributor: Thomas Baechler
# Maintainer (Parabola): André Silva
@@ -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
+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
+Acked-by: Viresh Kumar
+Acked-by: Dirk Brandewie
+Signed-off-by: Rafael J. Wysocki
+---
+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
# Contributor: Thomas Baechler
# Maintainer (Parabola): André Silva
@@ -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"
--
cgit v1.2.3-54-g00ecf