From f73a4c63de6e8d53ef552ae5fb5a7a5b379634d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fabian=20Silva=20Delgado?= 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-2-g168b 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-2-g168b 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-2-g168b 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>TrueFalseFalse2Restore original _size of maxim" +- "ized windows when movingTrueTrueFalseTrueTrueFalseF" +- "alse3Automatically _tile windows " +- "when moving toward the screen edgeTrueTrueFalseTrueTrueFalseFalse4Use _edge resistanc" +- "e instead of window snappingTrue<" +- "/property>TrueFalseTru" +- "eTrue<" +- "packing>FalseFalse5Notify of _urgency by making w" +- "indow\'s decoration blinkTrueHide _title of windows when " ++ "maximizedTrueTrue" ++ "FalseTrueTrueFalseFalse" ++ "3Restore original _size of maximized wind" ++ "ows when movingTrueTrueFalseTrue<" ++ "property name=\"draw_indicator\">TrueFalseFalse4" ++ "Automatically _tile windows when movi" ++ "ng toward the screen edgeTrueTrueFalseTrueTrueFalse" + "False5<" +- "property name=\"label\" translatable=\"yes\">Keep urgent windows _blink" +- "ing repeatedlyTrueUse _edge resistance instead" ++ " of window snappingTrueTrueFalseTrueTrue<" ++ "property name=\"expand\">FalseFalse<" ++ "/property>6Notify of _urgency by making window\'s " ++ "decoration blinkTrueTrueFalseTrue" ++ "TrueFalseFalse7Keep urgent windows _blinking repea" ++ "tedlyTrueTrueFals" ++ "eTrueTrueFalseFalse82True_Acce" ++ "ssibilityTrue2FalseTrue12vert" ++ "ical6Use the _mouse wheel on the desktop to swi" ++ "tch workspacesTrueTrueFalseTrueTrueFalseFalse62True_AccessibilityTrue2FalseTrue12vertical6" +- "Use the _mouse wheel on the desk" +- "top to switch workspacesTrueTrueFalseTrueTrueFalseF" +- "alse0_Remember and recall pre" +- "vious workspace\nwhen switching via keyboard shortcutsTrueTrueFalseTrueTrueFalseFalse1" +- "Wrap workspaces depending on the actual desktop _layoutTrueTrue<" +- "/property>FalseTrueTrueFalseFalse2W" +- "rap workspaces when the _first or the last workspace is reachedTrueTrueFalse<" +- "property name=\"use_underline\">TrueTrueFa" +- "lseFalse33True_WorkspacesTrue<" +- "property name=\"position\">3Fals" +- "eTrue12vertical" +- "6True0_" +- "Minimum size of windows to trigger smart placement:Trueplacement_ratio_scaleFalseFalse0True612True1" +- "2True<i>Small</i>TrueFalseFalse0TrueTrueadjustment1False" +- "False1<" +- "property name=\"visible\">True<i>Large</i&" +- "gt;TrueFalse2<" +- "property name=\"expand\">FalseFalse<" +- "/property>1Truevertical6True0By default, place windows:0True612True6vertical6At the _center of the screenTrueTrueFalseTrueTrue0<" +- "/child>Under the mouse _po" +- "interTrueTrueFals" +- "eTrueTrueTrueplacement_center_option11Fals" +- "eFalse24True_PlacementTrue4FalseTrue12vertical6_Enable display compositingTrueTrueFalseTrueTrueFalseFalse0TrueFalseTrue" +- "neverautomaticTruequeue" +- "none" +- "True612Truevertical6Display _fullscreen overlay windows directly0<" ++ "object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\">_Remember and recall previous wor" ++ "kspace\nwhen switching via keyboard shortcutsTrueTrue" ++ "FalseTrueTrueFalseFalse1Wrap wor" ++ "kspaces depending on the actual desktop _layoutTrueTrueFalseTrueTrueFalse0Show shadows under _regular windowsTrueTrueFalseTrueTrueFalse1Show shadows under po" +- "p_up windowsTrueTrueFalseTrueTrueFalse2Show " +- "shadows under _dock windowsTrueTrueFalseTrue" +- "TrueFalse3True0Op" +- "aci_ty of window decorations:Trueframe_opacity_scale<" +- "/property>False<" +- "property name=\"position\">4Tr" +- "ue212TrueTrue<i>Transparent</i>" +- ";TrueFalseF" +- "alse0False2Wrap wo" ++ "rkspaces when the _first or the last workspace is reachedTrueTru" ++ "eFalseTrueTrueFalseFalse33True_WorkspacesTrue3False<" ++ "property name=\"visible\">True12vertical6True0_Minimu" ++ "m size of windows to trigger smart placement:Truepla" ++ "cement_ratio_scaleFalseFalse0True" ++ "612True12True<i>Small</i>TrueFalseFalse0TrueTrueadjustment1FalseFalse<" ++ "/property>1True<i>Large</i>True" ++ "False2" ++ "FalseFalse1Truevertical6True0By default, place windows:0True612<" ++ "property name=\"visible\">True6vertical6At the _center of the screenTrueTrueFalseTrueTrue0" ++ "Under the mouse _pointer<" ++ "/property>TrueTrueFalseTrueTrueTrueplacement_center_option<" ++ "packing>11<" ++ "/packing>FalseFalse24True<" ++ "property name=\"label\" translatable=\"yes\">_PlacementTrue4FalseTrue1" ++ "2vertical6_Enable display compositingTru" ++ "eTrueFalseT" ++ "rueTrueFalseFalse0" ++ "TrueFalseTrueneverautomaticTruequeuenone" ++ "True612Truevertical6D" ++ "isplay _fullscreen overlay windows directlyTrueTrueFalseTrueTrueFalse0Show shadows under _regular windowsTrueTrueFalseTrueTrueFals" ++ "e1<" ++ "child><" ++ "property name=\"label\" translatable=\"yes\">Show shadows under pop_up " ++ "windowsTrueTrueFa" ++ "lseTrueTrueFalse2Show shado" ++ "ws under _dock windowsTrueTrueFalseTrueTrueFalse3True0Opaci_t" ++ "y of window decorations:Tru" ++ "eframe_opacity_scaleFalse4True212TrueTrue<i>Transparent</i>True" ++ "FalseFalse" ++ "0TrueTruediscontinuousadjustment2FalseFalse1True<i>Opaque</i>T" ++ "rueFalseFalse" ++ "2FalseFalse5<" ++ "object class=\"GtkLabel\" id=\"label13\">Tru" ++ "e0Opacity of _inactive windows:Trueinactive_opacity_scaleFalseFalse6True" ++ "212TrueTrue<i>Transparent</i><" ++ "/property>TrueFalseFal" ++ "se0" ++ "TrueTruediscontinuousadjustment3FalseFalse1True<i>Opaque</i>TrueFalseFalse2<" ++ "property name=\"expand\">FalseFalse<" ++ "/property>7True0Opacity of windows during _move:Truemove_opacity_scaleFalseFalse" ++ "8T" ++ "rue212TrueTrue<i>Transparent</i&g" ++ "t;TrueFalse" ++ "False0TrueTruediscontinuousadjustment2adjustment4FalseFalse1True<i>Opaque</i>TrueFalseFalse2FalseFalse59True0Opacity of _inactive windows:Trueinactive_opacity_scaleFalseFalse6" +- "True212TrueTrue<i>Transparent</i&g" +- "t;TrueFalse" +- "False0TrueTru" +- "ediscontinuousadjustment3FalseFals" +- "e1<" +- "/packing>True<i>Opaque</i>TrueFalse" +- "False2FalseFal" +- "se7" +- "True0Opacity of windows during _move:Truemove_opacity_scaleOpacity of windows during resi_ze:Trueresize_opacity_scaleFalseFalse8True212TrueTrue<i>Transparent<" +- "/i>True" +- "FalseFalse0<" +- "/child>TrueTru" +- "ediscontinuousadjustment4FalseFals" +- "e1<" +- "/packing>True<i>Opaque</i>TrueFalse" +- "False2FalseFal" +- "se9" +- "True0Opacity of windows during resi_ze:Trueresize_opacity_scaleFalseFalse10True212TrueTrue<i>Transparent" +- "</i>TrueFalseFalse0TrueTruediscontinuousadjustment5False" +- "False1<" +- "property name=\"visible\">True<i>Opaque</i>TrueF" +- "alseFalse10<" ++ "object class=\"GtkAlignment\" id=\"alignment8\">True212TrueTrue<i>Transparent<" ++ ";/i>TrueFalseFalse0" ++ "" ++ "True" ++ "Truediscontinuousadjustment5FalseF" ++ "alse1True<i>Opaque</i>TrueFa" ++ "lseFalse2False" + "False11" + }; + +-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-2-g168b 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-2-g168b 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-2-g168b From 21fbe187a9eed151eec8042d40f8cf7008a095db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fabian=20Silva=20Delgado?= 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-2-g168b 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-2-g168b From 9a0f738febf3ceb865683ddf89a2e0ba15751868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Fabian=20Silva=20Delgado?= 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-2-g168b