diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-01-28 03:27:16 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-01-28 03:27:16 +0000 |
commit | 462391357aa5e749dc9908c15f3baa0b4416f3d8 (patch) | |
tree | 11d4d3f054aae9ffd869adc634054f64a16d83b8 /pcr/xfwm4-titleless | |
parent | 748e32a3a886569b58a27003e85b76be5746153d (diff) |
Tue Jan 28 03:22:21 UTC 2014
Diffstat (limited to 'pcr/xfwm4-titleless')
-rw-r--r-- | pcr/xfwm4-titleless/PKGBUILD | 46 | ||||
-rw-r--r-- | pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch | 1456 | ||||
-rw-r--r-- | pcr/xfwm4-titleless/xfwm4.install | 13 |
3 files changed, 0 insertions, 1515 deletions
diff --git a/pcr/xfwm4-titleless/PKGBUILD b/pcr/xfwm4-titleless/PKGBUILD deleted file mode 100644 index dd80d287d..000000000 --- a/pcr/xfwm4-titleless/PKGBUILD +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor: Christian Hesse <mail@eworm.de> -# Contributor: Evangelos Foutras <evangelos@foutrelis.com> -# Contributor: tobias <tobias funnychar archlinux.org> -# Maintainer : Parabola Aurélien DESBRIÈRES <aurelien@replicant.io> - -pkgname=xfwm4-titleless -pkgver=4.10.1 -pkgrel=1 -pkgdesc="Xfce window manager - patched with option to hide titlebar when maximized" -arch=('i686' 'x86_64') -url="https://bitbucket.org/thesame/xfwm4-titleless" -license=('GPL2') -depends=('libxfce4ui' 'libwnck' 'hicolor-icon-theme') -makedepends=('intltool') -options=('!libtool') -conflicts=('xfwm4') -provides=('xfwm4') -install=${pkgname%%-*}.install -source=("http://archive.xfce.org/src/xfce/${pkgname%%-*}/4.10/${pkgname%%-*}-${pkgver}.tar.bz2" - "xfwm4-hide-titlebar-when-maximized.patch") - -build() { - cd "${srcdir}/${pkgname%%-*}-${pkgver}" - - patch -Np1 < ${srcdir}/xfwm4-hide-titlebar-when-maximized.patch - - ./configure \ - --prefix=/usr \ - --sysconfdir=/etc \ - --libexecdir=/usr/lib \ - --localstatedir=/var \ - --disable-static \ - --enable-startup-notification \ - --enable-randr \ - --enable-compositor \ - --enable-xsync \ - --disable-debug - make -} - -package() { - cd "${srcdir}/${pkgname%%-*}-${pkgver}" - - make DESTDIR="${pkgdir}" install -} - diff --git a/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch b/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch deleted file mode 100644 index fa43b6b8e..000000000 --- a/pcr/xfwm4-titleless/xfwm4-hide-titlebar-when-maximized.patch +++ /dev/null @@ -1,1456 +0,0 @@ -From 999c375f5342947525813584fbdc92f3b63dced6 Mon Sep 17 00:00:00 2001 -From: Christian Hesse <eworm@leda.eworm.de> -Date: Wed, 25 Sep 2013 15:16:57 +0200 -Subject: [PATCH 1/1] xfwm4: hide titlebar when maximized - ---- - defaults/defaults | 1 + - settings-dialogs/tweaks-settings.c | 5 + - settings-dialogs/xfwm4-tweaks-dialog.glade | 25 +- - settings-dialogs/xfwm4-tweaks-dialog_ui.h | 612 +++++++++++++++-------------- - src/client.c | 6 + - src/client.h | 1 + - src/display.c | 3 +- - src/display.h | 1 + - src/events.c | 5 + - src/frame.c | 366 ++++++++++------- - src/netwm.c | 38 ++ - src/placement.c | 4 +- - src/settings.c | 8 + - src/settings.h | 1 + - 14 files changed, 616 insertions(+), 460 deletions(-) - -diff --git a/defaults/defaults b/defaults/defaults -index 6db210a..1582fc1 100644 ---- a/defaults/defaults -+++ b/defaults/defaults -@@ -1,5 +1,6 @@ - activate_action=bring - borderless_maximize=true -+titleless_maximize=false - box_move=false - box_resize=false - button_layout=O|SHMC -diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c -index f60b606..2532733 100644 ---- a/settings-dialogs/tweaks-settings.c -+++ b/settings-dialogs/tweaks-settings.c -@@ -180,6 +180,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) - GtkWidget *easy_click_combo_box = GTK_WIDGET (gtk_builder_get_object (builder, "easy_click_combo_box")); - GtkWidget *raise_with_any_button_check = GTK_WIDGET (gtk_builder_get_object (builder, "raise_with_any_button_check")); - GtkWidget *borderless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "borderless_maximize_check")); -+ GtkWidget *titleless_maximize_check = GTK_WIDGET (gtk_builder_get_object (builder, "titleless_maximize_check")); - GtkWidget *restore_on_move_check = GTK_WIDGET (gtk_builder_get_object (builder, "restore_on_move_check")); - GtkWidget *tile_on_move_check = GTK_WIDGET (gtk_builder_get_object (builder, "tile_on_move_check")); - GtkWidget *snap_resist_check = GTK_WIDGET (gtk_builder_get_object (builder, "snap_resist_check")); -@@ -336,6 +337,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) - G_TYPE_BOOLEAN, - (GObject *)borderless_maximize_check, "active"); - xfconf_g_property_bind (xfwm4_channel, -+ "/general/titleless_maximize", -+ G_TYPE_BOOLEAN, -+ (GObject *)titleless_maximize_check, "active"); -+ xfconf_g_property_bind (xfwm4_channel, - "/general/restore_on_move", - G_TYPE_BOOLEAN, - (GObject *)restore_on_move_check, "active"); -diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade -index bd2a86f..7d604c6 100644 ---- a/settings-dialogs/xfwm4-tweaks-dialog.glade -+++ b/settings-dialogs/xfwm4-tweaks-dialog.glade -@@ -343,6 +343,21 @@ or "skip taskbar" properties set</property> - </packing> - </child> - <child> -+ <object class="GtkCheckButton" id="titleless_maximize_check"> -+ <property name="label" translatable="yes">Hide _title of windows when maximized</property> -+ <property name="visible">True</property> -+ <property name="can_focus">True</property> -+ <property name="receives_default">False</property> -+ <property name="use_underline">True</property> -+ <property name="draw_indicator">True</property> -+ </object> -+ <packing> -+ <property name="expand">False</property> -+ <property name="fill">False</property> -+ <property name="position">3</property> -+ </packing> -+ </child> -+ <child> - <object class="GtkCheckButton" id="restore_on_move_check"> - <property name="label" translatable="yes">Restore original _size of maximized windows when moving</property> - <property name="visible">True</property> -@@ -354,7 +369,7 @@ or "skip taskbar" properties set</property> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> -- <property name="position">3</property> -+ <property name="position">4</property> - </packing> - </child> - <child> -@@ -369,7 +384,7 @@ or "skip taskbar" properties set</property> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> -- <property name="position">4</property> -+ <property name="position">5</property> - </packing> - </child> - <child> -@@ -384,7 +399,7 @@ or "skip taskbar" properties set</property> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> -- <property name="position">5</property> -+ <property name="position">6</property> - </packing> - </child> - <child> -@@ -399,7 +414,7 @@ or "skip taskbar" properties set</property> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> -- <property name="position">5</property> -+ <property name="position">7</property> - </packing> - </child> - <child> -@@ -414,7 +429,7 @@ or "skip taskbar" properties set</property> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> -- <property name="position">6</property> -+ <property name="position">8</property> - </packing> - </child> - </object> -diff --git a/settings-dialogs/xfwm4-tweaks-dialog_ui.h b/settings-dialogs/xfwm4-tweaks-dialog_ui.h -index a6121dd..8ddbf30 100644 ---- a/settings-dialogs/xfwm4-tweaks-dialog_ui.h -+++ b/settings-dialogs/xfwm4-tweaks-dialog_ui.h -@@ -177,332 +177,340 @@ static const char tweaks_dialog_ui[] = - "y><property name=\"draw_indicator\">True</property></object><packing><p" - "roperty name=\"expand\">False</property><property name=\"fill\">False</" - "property><property name=\"position\">2</property></packing></child><chi" -- "ld><object class=\"GtkCheckButton\" id=\"restore_on_move_check\"><prope" -- "rty name=\"label\" translatable=\"yes\">Restore original _size of maxim" -- "ized windows when moving</property><property name=\"visible\">True</pro" -- "perty><property name=\"can_focus\">True</property><property name=\"rece" -- "ives_default\">False</property><property name=\"use_underline\">True</p" -- "roperty><property name=\"draw_indicator\">True</property></object><pack" -- "ing><property name=\"expand\">False</property><property name=\"fill\">F" -- "alse</property><property name=\"position\">3</property></packing></chil" -- "d><child><object class=\"GtkCheckButton\" id=\"tile_on_move_check\"><pr" -- "operty name=\"label\" translatable=\"yes\">Automatically _tile windows " -- "when moving toward the screen edge</property><property name=\"visible\"" -- ">True</property><property name=\"can_focus\">True</property><property n" -- "ame=\"receives_default\">False</property><property name=\"use_underline" -- "\">True</property><property name=\"draw_indicator\">True</property></ob" -- "ject><packing><property name=\"expand\">False</property><property name=" -- "\"fill\">False</property><property name=\"position\">4</property></pack" -- "ing></child><child><object class=\"GtkCheckButton\" id=\"snap_resist_ch" -- "eck\"><property name=\"label\" translatable=\"yes\">Use _edge resistanc" -- "e instead of window snapping</property><property name=\"visible\">True<" -- "/property><property name=\"can_focus\">True</property><property name=\"" -- "receives_default\">False</property><property name=\"use_underline\">Tru" -- "e</property><property name=\"draw_indicator\">True</property></object><" -- "packing><property name=\"expand\">False</property><property name=\"fill" -- "\">False</property><property name=\"position\">5</property></packing></" -- "child><child><object class=\"GtkCheckButton\" id=\"urgent_blink\"><prop" -- "erty name=\"label\" translatable=\"yes\">Notify of _urgency by making w" -- "indow\'s decoration blink</property><property name=\"visible\">True</pr" -+ "ld><object class=\"GtkCheckButton\" id=\"titleless_maximize_check\"><pr" -+ "operty name=\"label\" translatable=\"yes\">Hide _title of windows when " -+ "maximized</property><property name=\"visible\">True</property><property" -+ " name=\"can_focus\">True</property><property name=\"receives_default\">" -+ "False</property><property name=\"use_underline\">True</property><proper" -+ "ty name=\"draw_indicator\">True</property></object><packing><property n" -+ "ame=\"expand\">False</property><property name=\"fill\">False</property>" -+ "<property name=\"position\">3</property></packing></child><child><objec" -+ "t class=\"GtkCheckButton\" id=\"restore_on_move_check\"><property name=" -+ "\"label\" translatable=\"yes\">Restore original _size of maximized wind" -+ "ows when moving</property><property name=\"visible\">True</property><pr" -+ "operty name=\"can_focus\">True</property><property name=\"receives_defa" -+ "ult\">False</property><property name=\"use_underline\">True</property><" -+ "property name=\"draw_indicator\">True</property></object><packing><prop" -+ "erty name=\"expand\">False</property><property name=\"fill\">False</pro" -+ "perty><property name=\"position\">4</property></packing></child><child>" -+ "<object class=\"GtkCheckButton\" id=\"tile_on_move_check\"><property na" -+ "me=\"label\" translatable=\"yes\">Automatically _tile windows when movi" -+ "ng toward the screen edge</property><property name=\"visible\">True</pr" - "operty><property name=\"can_focus\">True</property><property name=\"rec" - "eives_default\">False</property><property name=\"use_underline\">True</" - "property><property name=\"draw_indicator\">True</property></object><pac" - "king><property name=\"expand\">False</property><property name=\"fill\">" - "False</property><property name=\"position\">5</property></packing></chi" -- "ld><child><object class=\"GtkCheckButton\" id=\"repeat_urgent_blink\"><" -- "property name=\"label\" translatable=\"yes\">Keep urgent windows _blink" -- "ing repeatedly</property><property name=\"visible\">True</property><pro" -+ "ld><child><object class=\"GtkCheckButton\" id=\"snap_resist_check\"><pr" -+ "operty name=\"label\" translatable=\"yes\">Use _edge resistance instead" -+ " of window snapping</property><property name=\"visible\">True</property" -+ "><property name=\"can_focus\">True</property><property name=\"receives_" -+ "default\">False</property><property name=\"use_underline\">True</proper" -+ "ty><property name=\"draw_indicator\">True</property></object><packing><" -+ "property name=\"expand\">False</property><property name=\"fill\">False<" -+ "/property><property name=\"position\">6</property></packing></child><ch" -+ "ild><object class=\"GtkCheckButton\" id=\"urgent_blink\"><property name" -+ "=\"label\" translatable=\"yes\">Notify of _urgency by making window\'s " -+ "decoration blink</property><property name=\"visible\">True</property><p" -+ "roperty name=\"can_focus\">True</property><property name=\"receives_def" -+ "ault\">False</property><property name=\"use_underline\">True</property>" -+ "<property name=\"draw_indicator\">True</property></object><packing><pro" -+ "perty name=\"expand\">False</property><property name=\"fill\">False</pr" -+ "operty><property name=\"position\">7</property></packing></child><child" -+ "><object class=\"GtkCheckButton\" id=\"repeat_urgent_blink\"><property " -+ "name=\"label\" translatable=\"yes\">Keep urgent windows _blinking repea" -+ "tedly</property><property name=\"visible\">True</property><property nam" -+ "e=\"can_focus\">True</property><property name=\"receives_default\">Fals" -+ "e</property><property name=\"use_underline\">True</property><property n" -+ "ame=\"draw_indicator\">True</property></object><packing><property name=" -+ "\"expand\">False</property><property name=\"fill\">False</property><pro" -+ "perty name=\"position\">8</property></packing></child></object><packing" -+ "><property name=\"position\">2</property></packing></child><child type=" -+ "\"tab\"><object class=\"GtkLabel\" id=\"label3\"><property name=\"visib" -+ "le\">True</property><property name=\"label\" translatable=\"yes\">_Acce" -+ "ssibility</property><property name=\"use_underline\">True</property></o" -+ "bject><packing><property name=\"position\">2</property><property name=\"" -+ "tab_fill\">False</property></packing></child><child><object class=\"Gtk" -+ "VBox\" id=\"vbox5\"><property name=\"visible\">True</property><property" -+ " name=\"border_width\">12</property><property name=\"orientation\">vert" -+ "ical</property><property name=\"spacing\">6</property><child><object cl" -+ "ass=\"GtkCheckButton\" id=\"scroll_workspaces_check\"><property name=\"" -+ "label\" translatable=\"yes\">Use the _mouse wheel on the desktop to swi" -+ "tch workspaces</property><property name=\"visible\">True</property><pro" - "perty name=\"can_focus\">True</property><property name=\"receives_defau" - "lt\">False</property><property name=\"use_underline\">True</property><p" - "roperty name=\"draw_indicator\">True</property></object><packing><prope" - "rty name=\"expand\">False</property><property name=\"fill\">False</prop" -- "erty><property name=\"position\">6</property></packing></child></object" -- "><packing><property name=\"position\">2</property></packing></child><ch" -- "ild type=\"tab\"><object class=\"GtkLabel\" id=\"label3\"><property nam" -- "e=\"visible\">True</property><property name=\"label\" translatable=\"ye" -- "s\">_Accessibility</property><property name=\"use_underline\">True</pro" -- "perty></object><packing><property name=\"position\">2</property><proper" -- "ty name=\"tab_fill\">False</property></packing></child><child><object c" -- "lass=\"GtkVBox\" id=\"vbox5\"><property name=\"visible\">True</property" -- "><property name=\"border_width\">12</property><property name=\"orientat" -- "ion\">vertical</property><property name=\"spacing\">6</property><child>" -- "<object class=\"GtkCheckButton\" id=\"scroll_workspaces_check\"><proper" -- "ty name=\"label\" translatable=\"yes\">Use the _mouse wheel on the desk" -- "top to switch workspaces</property><property name=\"visible\">True</pro" -- "perty><property name=\"can_focus\">True</property><property name=\"rece" -- "ives_default\">False</property><property name=\"use_underline\">True</p" -- "roperty><property name=\"draw_indicator\">True</property></object><pack" -- "ing><property name=\"expand\">False</property><property name=\"fill\">F" -- "alse</property><property name=\"position\">0</property></packing></chil" -- "d><child><object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\"" -- "><property name=\"label\" translatable=\"yes\">_Remember and recall pre" -- "vious workspace\nwhen switching via keyboard shortcuts</property><prope" -- "rty name=\"visible\">True</property><property name=\"can_focus\">True</" -- "property><property name=\"receives_default\">False</property><property " -- "name=\"use_underline\">True</property><property name=\"draw_indicator\"" -- ">True</property></object><packing><property name=\"expand\">False</prop" -- "erty><property name=\"fill\">False</property><property name=\"position\"" -- ">1</property></packing></child><child><object class=\"GtkCheckButton\" " -- "id=\"wrap_layout_check\"><property name=\"label\" translatable=\"yes\">" -- "Wrap workspaces depending on the actual desktop _layout</property><prop" -- "erty name=\"visible\">True</property><property name=\"can_focus\">True<" -- "/property><property name=\"receives_default\">False</property><property" -- " name=\"use_underline\">True</property><property name=\"draw_indicator\"" -- ">True</property></object><packing><property name=\"expand\">False</prop" -- "erty><property name=\"fill\">False</property><property name=\"position\"" -- ">2</property></packing></child><child><object class=\"GtkCheckButton\" " -- "id=\"wrap_cycle_check\"><property name=\"label\" translatable=\"yes\">W" -- "rap workspaces when the _first or the last workspace is reached</proper" -- "ty><property name=\"visible\">True</property><property name=\"can_focus" -- "\">True</property><property name=\"receives_default\">False</property><" -- "property name=\"use_underline\">True</property><property name=\"draw_in" -- "dicator\">True</property></object><packing><property name=\"expand\">Fa" -- "lse</property><property name=\"fill\">False</property><property name=\"" -- "position\">3</property></packing></child></object><packing><property na" -- "me=\"position\">3</property></packing></child><child type=\"tab\"><obje" -- "ct class=\"GtkLabel\" id=\"label4\"><property name=\"visible\">True</pr" -- "operty><property name=\"label\" translatable=\"yes\">_Workspaces</prope" -- "rty><property name=\"use_underline\">True</property></object><packing><" -- "property name=\"position\">3</property><property name=\"tab_fill\">Fals" -- "e</property></packing></child><child><object class=\"GtkVBox\" id=\"vbo" -- "x6\"><property name=\"visible\">True</property><property name=\"border_" -- "width\">12</property><property name=\"orientation\">vertical</property>" -- "<property name=\"spacing\">6</property><child><object class=\"GtkLabel\"" -- " id=\"label8\"><property name=\"visible\">True</property><property name" -- "=\"xalign\">0</property><property name=\"label\" translatable=\"yes\">_" -- "Minimum size of windows to trigger smart placement:</property><property" -- " name=\"use_underline\">True</property><property name=\"mnemonic_widget" -- "\">placement_ratio_scale</property></object><packing><property name=\"e" -- "xpand\">False</property><property name=\"fill\">False</property><proper" -- "ty name=\"position\">0</property></packing></child><child><object class" -- "=\"GtkAlignment\" id=\"alignment4\"><property name=\"visible\">True</pr" -- "operty><property name=\"bottom_padding\">6</property><property name=\"l" -- "eft_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox2\"" -- "><property name=\"visible\">True</property><property name=\"spacing\">1" -- "2</property><child><object class=\"GtkLabel\" id=\"label9\"><property n" -- "ame=\"visible\">True</property><property name=\"label\" translatable=\"" -- "yes\" comments=\"Smart placement size\"><i>Small</i></prope" -- "rty><property name=\"use_markup\">True</property></object><packing><pro" -- "perty name=\"expand\">False</property><property name=\"fill\">False</pr" -- "operty><property name=\"position\">0</property></packing></child><child" -- "><object class=\"GtkHScale\" id=\"placement_ratio_scale\"><property nam" -- "e=\"visible\">True</property><property name=\"can_focus\">True</propert" -- "y><property name=\"adjustment\">adjustment1</property><property name=\"" -- "restrict_to_fill_level\">False</property><property name=\"draw_value\">" -- "False</property></object><packing><property name=\"position\">1</proper" -- "ty></packing></child><child><object class=\"GtkLabel\" id=\"label10\"><" -- "property name=\"visible\">True</property><property name=\"label\" trans" -- "latable=\"yes\" comments=\"Smart placement size\"><i>Large</i&" -- "gt;</property><property name=\"use_markup\">True</property></object><pa" -- "cking><property name=\"expand\">False</property><property name=\"positi" -- "on\">2</property></packing></child></object></child></object><packing><" -- "property name=\"expand\">False</property><property name=\"fill\">False<" -- "/property><property name=\"position\">1</property></packing></child><ch" -- "ild><object class=\"GtkVBox\" id=\"default_placement_box\"><property na" -- "me=\"visible\">True</property><property name=\"orientation\">vertical</" -- "property><property name=\"spacing\">6</property><child><object class=\"" -- "GtkLabel\" id=\"label27\"><property name=\"visible\">True</property><pr" -- "operty name=\"xalign\">0</property><property name=\"label\" translatabl" -- "e=\"yes\">By default, place windows:</property></object><packing><prope" -- "rty name=\"position\">0</property></packing></child><child><object clas" -- "s=\"GtkAlignment\" id=\"alignment10\"><property name=\"visible\">True</" -- "property><property name=\"bottom_padding\">6</property><property name=\"" -- "left_padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox1" -- "8\"><property name=\"visible\">True</property><property name=\"border_w" -- "idth\">6</property><property name=\"orientation\">vertical</property><p" -- "roperty name=\"spacing\">6</property><child><object class=\"GtkRadioBut" -- "ton\" id=\"placement_center_option\"><property name=\"label\" translata" -- "ble=\"yes\">At the _center of the screen</property><property name=\"vis" -- "ible\">True</property><property name=\"can_focus\">True</property><prop" -- "erty name=\"receives_default\">False</property><property name=\"use_und" -- "erline\">True</property><property name=\"draw_indicator\">True</propert" -- "y></object><packing><property name=\"position\">0</property></packing><" -- "/child><child><object class=\"GtkRadioButton\" id=\"placement_mouse_opt" -- "ion\"><property name=\"label\" translatable=\"yes\">Under the mouse _po" -- "inter</property><property name=\"visible\">True</property><property nam" -- "e=\"can_focus\">True</property><property name=\"receives_default\">Fals" -- "e</property><property name=\"use_underline\">True</property><property n" -- "ame=\"active\">True</property><property name=\"draw_indicator\">True</p" -- "roperty><property name=\"group\">placement_center_option</property></ob" -- "ject><packing><property name=\"position\">1</property></packing></child" -- "></object></child></object><packing><property name=\"position\">1</prop" -- "erty></packing></child></object><packing><property name=\"expand\">Fals" -- "e</property><property name=\"fill\">False</property><property name=\"po" -- "sition\">2</property></packing></child></object><packing><property name" -- "=\"position\">4</property></packing></child><child type=\"tab\"><object" -- " class=\"GtkLabel\" id=\"label5\"><property name=\"visible\">True</prop" -- "erty><property name=\"label\" translatable=\"yes\">_Placement</property" -- "><property name=\"use_underline\">True</property></object><packing><pro" -- "perty name=\"position\">4</property><property name=\"tab_fill\">False</" -- "property></packing></child><child><object class=\"GtkVBox\" id=\"vbox7\"" -- "><property name=\"visible\">True</property><property name=\"border_widt" -- "h\">12</property><property name=\"orientation\">vertical</property><pro" -- "perty name=\"spacing\">6</property><child><object class=\"GtkCheckButto" -- "n\" id=\"use_compositing_check\"><property name=\"label\" translatable=" -- "\"yes\">_Enable display compositing</property><property name=\"visible\"" -- ">True</property><property name=\"can_focus\">True</property><property n" -- "ame=\"receives_default\">False</property><property name=\"use_underline" -- "\">True</property><property name=\"draw_indicator\">True</property></ob" -- "ject><packing><property name=\"expand\">False</property><property name=" -- "\"fill\">False</property><property name=\"position\">0</property></pack" -- "ing></child><child><object class=\"GtkScrolledWindow\" id=\"use_composi" -- "ting_box\"><property name=\"visible\">True</property><property name=\"s" -- "ensitive\">False</property><property name=\"can_focus\">True</property>" -- "<property name=\"hscrollbar_policy\">never</property><property name=\"v" -- "scrollbar_policy\">automatic</property><child><object class=\"GtkViewpo" -- "rt\" id=\"viewport1\"><property name=\"visible\">True</property><proper" -- "ty name=\"resize_mode\">queue</property><property name=\"shadow_type\">" -- "none</property><child><object class=\"GtkAlignment\" id=\"alignment3\">" -- "<property name=\"visible\">True</property><property name=\"bottom_paddi" -- "ng\">6</property><property name=\"left_padding\">12</property><child><o" -- "bject class=\"GtkVBox\" id=\"vbox8\"><property name=\"visible\">True</p" -- "roperty><property name=\"orientation\">vertical</property><property nam" -- "e=\"spacing\">6</property><child><object class=\"GtkCheckButton\" id=\"" -- "unredirect_overlays_check\"><property name=\"label\" translatable=\"yes" -- "\">Display _fullscreen overlay windows directly</property><property nam" -+ "erty><property name=\"position\">0</property></packing></child><child><" -+ "object class=\"GtkCheckButton\" id=\"toggle_workspaces_check\"><propert" -+ "y name=\"label\" translatable=\"yes\">_Remember and recall previous wor" -+ "kspace\nwhen switching via keyboard shortcuts</property><property name=" -+ "\"visible\">True</property><property name=\"can_focus\">True</property>" -+ "<property name=\"receives_default\">False</property><property name=\"us" -+ "e_underline\">True</property><property name=\"draw_indicator\">True</pr" -+ "operty></object><packing><property name=\"expand\">False</property><pro" -+ "perty name=\"fill\">False</property><property name=\"position\">1</prop" -+ "erty></packing></child><child><object class=\"GtkCheckButton\" id=\"wra" -+ "p_layout_check\"><property name=\"label\" translatable=\"yes\">Wrap wor" -+ "kspaces depending on the actual desktop _layout</property><property nam" - "e=\"visible\">True</property><property name=\"can_focus\">True</propert" - "y><property name=\"receives_default\">False</property><property name=\"" - "use_underline\">True</property><property name=\"draw_indicator\">True</" - "property></object><packing><property name=\"expand\">False</property><p" -- "roperty name=\"position\">0</property></packing></child><child><object " -- "class=\"GtkCheckButton\" id=\"show_frame_shadow_check\"><property name=" -- "\"label\" translatable=\"yes\">Show shadows under _regular windows</pro" -- "perty><property name=\"visible\">True</property><property name=\"can_fo" -- "cus\">True</property><property name=\"receives_default\">False</propert" -- "y><property name=\"use_underline\">True</property><property name=\"draw" -- "_indicator\">True</property></object><packing><property name=\"expand\"" -- ">False</property><property name=\"position\">1</property></packing></ch" -- "ild><child><object class=\"GtkCheckButton\" id=\"show_popup_shadow_chec" -- "k\"><property name=\"label\" translatable=\"yes\">Show shadows under po" -- "p_up windows</property><property name=\"visible\">True</property><prope" -- "rty name=\"can_focus\">True</property><property name=\"receives_default" -- "\">False</property><property name=\"use_underline\">True</property><pro" -- "perty name=\"draw_indicator\">True</property></object><packing><propert" -- "y name=\"expand\">False</property><property name=\"position\">2</proper" -- "ty></packing></child><child><object class=\"GtkCheckButton\" id=\"show_" -- "dock_shadow_check\"><property name=\"label\" translatable=\"yes\">Show " -- "shadows under _dock windows</property><property name=\"visible\">True</" -- "property><property name=\"can_focus\">True</property><property name=\"r" -- "eceives_default\">False</property><property name=\"use_underline\">True" -- "</property><property name=\"draw_indicator\">True</property></object><p" -- "acking><property name=\"expand\">False</property><property name=\"posit" -- "ion\">3</property></packing></child><child><object class=\"GtkLabel\" i" -- "d=\"label12\"><property name=\"visible\">True</property><property name=" -- "\"xalign\">0</property><property name=\"label\" translatable=\"yes\">Op" -- "aci_ty of window decorations:</property><property name=\"use_underline\"" -- ">True</property><property name=\"mnemonic_widget\">frame_opacity_scale<" -- "/property></object><packing><property name=\"expand\">False</property><" -- "property name=\"position\">4</property></packing></child><child><object" -- " class=\"GtkAlignment\" id=\"alignment5\"><property name=\"visible\">Tr" -- "ue</property><property name=\"top_padding\">2</property><property name=" -- "\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbo" -- "x3\"><property name=\"visible\">True</property><child><object class=\"G" -- "tkLabel\" id=\"label17\"><property name=\"visible\">True</property><pro" -- "perty name=\"label\" translatable=\"yes\"><i>Transparent</i>" -- ";</property><property name=\"use_markup\">True</property></object><pack" -- "ing><property name=\"expand\">False</property><property name=\"fill\">F" -- "alse</property><property name=\"position\">0</property></packing></chil" -- "d><child><object class=\"GtkHScale\" id=\"frame_opacity_scale\"><proper" -+ "roperty name=\"fill\">False</property><property name=\"position\">2</pr" -+ "operty></packing></child><child><object class=\"GtkCheckButton\" id=\"w" -+ "rap_cycle_check\"><property name=\"label\" translatable=\"yes\">Wrap wo" -+ "rkspaces when the _first or the last workspace is reached</property><pr" -+ "operty name=\"visible\">True</property><property name=\"can_focus\">Tru" -+ "e</property><property name=\"receives_default\">False</property><proper" -+ "ty name=\"use_underline\">True</property><property name=\"draw_indicato" -+ "r\">True</property></object><packing><property name=\"expand\">False</p" -+ "roperty><property name=\"fill\">False</property><property name=\"positi" -+ "on\">3</property></packing></child></object><packing><property name=\"p" -+ "osition\">3</property></packing></child><child type=\"tab\"><object cla" -+ "ss=\"GtkLabel\" id=\"label4\"><property name=\"visible\">True</property" -+ "><property name=\"label\" translatable=\"yes\">_Workspaces</property><p" -+ "roperty name=\"use_underline\">True</property></object><packing><proper" -+ "ty name=\"position\">3</property><property name=\"tab_fill\">False</pro" -+ "perty></packing></child><child><object class=\"GtkVBox\" id=\"vbox6\"><" -+ "property name=\"visible\">True</property><property name=\"border_width\"" -+ ">12</property><property name=\"orientation\">vertical</property><proper" -+ "ty name=\"spacing\">6</property><child><object class=\"GtkLabel\" id=\"" -+ "label8\"><property name=\"visible\">True</property><property name=\"xal" -+ "ign\">0</property><property name=\"label\" translatable=\"yes\">_Minimu" -+ "m size of windows to trigger smart placement:</property><property name=" -+ "\"use_underline\">True</property><property name=\"mnemonic_widget\">pla" -+ "cement_ratio_scale</property></object><packing><property name=\"expand\"" -+ ">False</property><property name=\"fill\">False</property><property name" -+ "=\"position\">0</property></packing></child><child><object class=\"GtkA" -+ "lignment\" id=\"alignment4\"><property name=\"visible\">True</property>" -+ "<property name=\"bottom_padding\">6</property><property name=\"left_pad" -+ "ding\">12</property><child><object class=\"GtkHBox\" id=\"hbox2\"><prop" -+ "erty name=\"visible\">True</property><property name=\"spacing\">12</pro" -+ "perty><child><object class=\"GtkLabel\" id=\"label9\"><property name=\"" -+ "visible\">True</property><property name=\"label\" translatable=\"yes\" " -+ "comments=\"Smart placement size\"><i>Small</i></property><p" -+ "roperty name=\"use_markup\">True</property></object><packing><property " -+ "name=\"expand\">False</property><property name=\"fill\">False</property" -+ "><property name=\"position\">0</property></packing></child><child><obje" -+ "ct class=\"GtkHScale\" id=\"placement_ratio_scale\"><property name=\"vi" -+ "sible\">True</property><property name=\"can_focus\">True</property><pro" -+ "perty name=\"adjustment\">adjustment1</property><property name=\"restri" -+ "ct_to_fill_level\">False</property><property name=\"draw_value\">False<" -+ "/property></object><packing><property name=\"position\">1</property></p" -+ "acking></child><child><object class=\"GtkLabel\" id=\"label10\"><proper" -+ "ty name=\"visible\">True</property><property name=\"label\" translatabl" -+ "e=\"yes\" comments=\"Smart placement size\"><i>Large</i></p" -+ "roperty><property name=\"use_markup\">True</property></object><packing>" -+ "<property name=\"expand\">False</property><property name=\"position\">2" -+ "</property></packing></child></object></child></object><packing><proper" -+ "ty name=\"expand\">False</property><property name=\"fill\">False</prope" -+ "rty><property name=\"position\">1</property></packing></child><child><o" -+ "bject class=\"GtkVBox\" id=\"default_placement_box\"><property name=\"v" -+ "isible\">True</property><property name=\"orientation\">vertical</proper" -+ "ty><property name=\"spacing\">6</property><child><object class=\"GtkLab" -+ "el\" id=\"label27\"><property name=\"visible\">True</property><property" -+ " name=\"xalign\">0</property><property name=\"label\" translatable=\"ye" -+ "s\">By default, place windows:</property></object><packing><property na" -+ "me=\"position\">0</property></packing></child><child><object class=\"Gt" -+ "kAlignment\" id=\"alignment10\"><property name=\"visible\">True</proper" -+ "ty><property name=\"bottom_padding\">6</property><property name=\"left_" -+ "padding\">12</property><child><object class=\"GtkVBox\" id=\"vbox18\"><" -+ "property name=\"visible\">True</property><property name=\"border_width\"" -+ ">6</property><property name=\"orientation\">vertical</property><propert" -+ "y name=\"spacing\">6</property><child><object class=\"GtkRadioButton\" " -+ "id=\"placement_center_option\"><property name=\"label\" translatable=\"" -+ "yes\">At the _center of the screen</property><property name=\"visible\"" -+ ">True</property><property name=\"can_focus\">True</property><property n" -+ "ame=\"receives_default\">False</property><property name=\"use_underline" -+ "\">True</property><property name=\"draw_indicator\">True</property></ob" -+ "ject><packing><property name=\"position\">0</property></packing></child" -+ "><child><object class=\"GtkRadioButton\" id=\"placement_mouse_option\">" -+ "<property name=\"label\" translatable=\"yes\">Under the mouse _pointer<" -+ "/property><property name=\"visible\">True</property><property name=\"ca" -+ "n_focus\">True</property><property name=\"receives_default\">False</pro" -+ "perty><property name=\"use_underline\">True</property><property name=\"" -+ "active\">True</property><property name=\"draw_indicator\">True</propert" -+ "y><property name=\"group\">placement_center_option</property></object><" -+ "packing><property name=\"position\">1</property></packing></child></obj" -+ "ect></child></object><packing><property name=\"position\">1</property><" -+ "/packing></child></object><packing><property name=\"expand\">False</pro" -+ "perty><property name=\"fill\">False</property><property name=\"position" -+ "\">2</property></packing></child></object><packing><property name=\"pos" -+ "ition\">4</property></packing></child><child type=\"tab\"><object class" -+ "=\"GtkLabel\" id=\"label5\"><property name=\"visible\">True</property><" -+ "property name=\"label\" translatable=\"yes\">_Placement</property><prop" -+ "erty name=\"use_underline\">True</property></object><packing><property " -+ "name=\"position\">4</property><property name=\"tab_fill\">False</proper" -+ "ty></packing></child><child><object class=\"GtkVBox\" id=\"vbox7\"><pro" -+ "perty name=\"visible\">True</property><property name=\"border_width\">1" -+ "2</property><property name=\"orientation\">vertical</property><property" -+ " name=\"spacing\">6</property><child><object class=\"GtkCheckButton\" i" -+ "d=\"use_compositing_check\"><property name=\"label\" translatable=\"yes" -+ "\">_Enable display compositing</property><property name=\"visible\">Tru" -+ "e</property><property name=\"can_focus\">True</property><property name=" -+ "\"receives_default\">False</property><property name=\"use_underline\">T" -+ "rue</property><property name=\"draw_indicator\">True</property></object" -+ "><packing><property name=\"expand\">False</property><property name=\"fi" -+ "ll\">False</property><property name=\"position\">0</property></packing>" -+ "</child><child><object class=\"GtkScrolledWindow\" id=\"use_compositing" -+ "_box\"><property name=\"visible\">True</property><property name=\"sensi" -+ "tive\">False</property><property name=\"can_focus\">True</property><pro" -+ "perty name=\"hscrollbar_policy\">never</property><property name=\"vscro" -+ "llbar_policy\">automatic</property><child><object class=\"GtkViewport\"" -+ " id=\"viewport1\"><property name=\"visible\">True</property><property n" -+ "ame=\"resize_mode\">queue</property><property name=\"shadow_type\">none" -+ "</property><child><object class=\"GtkAlignment\" id=\"alignment3\"><pro" -+ "perty name=\"visible\">True</property><property name=\"bottom_padding\"" -+ ">6</property><property name=\"left_padding\">12</property><child><objec" -+ "t class=\"GtkVBox\" id=\"vbox8\"><property name=\"visible\">True</prope" -+ "rty><property name=\"orientation\">vertical</property><property name=\"" -+ "spacing\">6</property><child><object class=\"GtkCheckButton\" id=\"unre" -+ "direct_overlays_check\"><property name=\"label\" translatable=\"yes\">D" -+ "isplay _fullscreen overlay windows directly</property><property name=\"" -+ "visible\">True</property><property name=\"can_focus\">True</property><p" -+ "roperty name=\"receives_default\">False</property><property name=\"use_" -+ "underline\">True</property><property name=\"draw_indicator\">True</prop" -+ "erty></object><packing><property name=\"expand\">False</property><prope" -+ "rty name=\"position\">0</property></packing></child><child><object clas" -+ "s=\"GtkCheckButton\" id=\"show_frame_shadow_check\"><property name=\"la" -+ "bel\" translatable=\"yes\">Show shadows under _regular windows</propert" -+ "y><property name=\"visible\">True</property><property name=\"can_focus\"" -+ ">True</property><property name=\"receives_default\">False</property><pr" -+ "operty name=\"use_underline\">True</property><property name=\"draw_indi" -+ "cator\">True</property></object><packing><property name=\"expand\">Fals" -+ "e</property><property name=\"position\">1</property></packing></child><" -+ "child><object class=\"GtkCheckButton\" id=\"show_popup_shadow_check\"><" -+ "property name=\"label\" translatable=\"yes\">Show shadows under pop_up " -+ "windows</property><property name=\"visible\">True</property><property n" -+ "ame=\"can_focus\">True</property><property name=\"receives_default\">Fa" -+ "lse</property><property name=\"use_underline\">True</property><property" -+ " name=\"draw_indicator\">True</property></object><packing><property nam" -+ "e=\"expand\">False</property><property name=\"position\">2</property></" -+ "packing></child><child><object class=\"GtkCheckButton\" id=\"show_dock_" -+ "shadow_check\"><property name=\"label\" translatable=\"yes\">Show shado" -+ "ws under _dock windows</property><property name=\"visible\">True</prope" -+ "rty><property name=\"can_focus\">True</property><property name=\"receiv" -+ "es_default\">False</property><property name=\"use_underline\">True</pro" -+ "perty><property name=\"draw_indicator\">True</property></object><packin" -+ "g><property name=\"expand\">False</property><property name=\"position\"" -+ ">3</property></packing></child><child><object class=\"GtkLabel\" id=\"l" -+ "abel12\"><property name=\"visible\">True</property><property name=\"xal" -+ "ign\">0</property><property name=\"label\" translatable=\"yes\">Opaci_t" -+ "y of window decorations:</property><property name=\"use_underline\">Tru" -+ "e</property><property name=\"mnemonic_widget\">frame_opacity_scale</pro" -+ "perty></object><packing><property name=\"expand\">False</property><prop" -+ "erty name=\"position\">4</property></packing></child><child><object cla" -+ "ss=\"GtkAlignment\" id=\"alignment5\"><property name=\"visible\">True</" -+ "property><property name=\"top_padding\">2</property><property name=\"le" -+ "ft_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox3\"" -+ "><property name=\"visible\">True</property><child><object class=\"GtkLa" -+ "bel\" id=\"label17\"><property name=\"visible\">True</property><propert" -+ "y name=\"label\" translatable=\"yes\"><i>Transparent</i></p" -+ "roperty><property name=\"use_markup\">True</property></object><packing>" -+ "<property name=\"expand\">False</property><property name=\"fill\">False" -+ "</property><property name=\"position\">0</property></packing></child><c" -+ "hild><object class=\"GtkHScale\" id=\"frame_opacity_scale\"><property n" -+ "ame=\"visible\">True</property><property name=\"can_focus\">True</prope" -+ "rty><property name=\"update_policy\">discontinuous</property><property " -+ "name=\"adjustment\">adjustment2</property><property name=\"restrict_to_" -+ "fill_level\">False</property><property name=\"draw_value\">False</prope" -+ "rty></object><packing><property name=\"position\">1</property></packing" -+ "></child><child><object class=\"GtkLabel\" id=\"label18\"><property nam" -+ "e=\"visible\">True</property><property name=\"label\" translatable=\"ye" -+ "s\"><i>Opaque</i></property><property name=\"use_markup\">T" -+ "rue</property></object><packing><property name=\"expand\">False</proper" -+ "ty><property name=\"fill\">False</property><property name=\"position\">" -+ "2</property></packing></child></object></child></object><packing><prope" -+ "rty name=\"expand\">False</property><property name=\"fill\">False</prop" -+ "erty><property name=\"position\">5</property></packing></child><child><" -+ "object class=\"GtkLabel\" id=\"label13\"><property name=\"visible\">Tru" -+ "e</property><property name=\"xalign\">0</property><property name=\"labe" -+ "l\" translatable=\"yes\">Opacity of _inactive windows:</property><prope" -+ "rty name=\"use_underline\">True</property><property name=\"mnemonic_wid" -+ "get\">inactive_opacity_scale</property></object><packing><property name" -+ "=\"expand\">False</property><property name=\"fill\">False</property><pr" -+ "operty name=\"position\">6</property></packing></child><child><object c" -+ "lass=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible\">True" -+ "</property><property name=\"top_padding\">2</property><property name=\"" -+ "left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hbox4" -+ "\"><property name=\"visible\">True</property><child><object class=\"Gtk" -+ "Label\" id=\"label19\"><property name=\"visible\">True</property><prope" -+ "rty name=\"label\" translatable=\"yes\"><i>Transparent</i><" -+ "/property><property name=\"use_markup\">True</property></object><packin" -+ "g><property name=\"expand\">False</property><property name=\"fill\">Fal" -+ "se</property><property name=\"position\">0</property></packing></child>" -+ "<child><object class=\"GtkHScale\" id=\"inactive_opacity_scale\"><prope" -+ "rty name=\"visible\">True</property><property name=\"can_focus\">True</" -+ "property><property name=\"update_policy\">discontinuous</property><prop" -+ "erty name=\"adjustment\">adjustment3</property><property name=\"restric" -+ "t_to_fill_level\">False</property><property name=\"draw_value\">False</" -+ "property></object><packing><property name=\"position\">1</property></pa" -+ "cking></child><child><object class=\"GtkLabel\" id=\"label20\"><propert" -+ "y name=\"visible\">True</property><property name=\"label\" translatable" -+ "=\"yes\"><i>Opaque</i></property><property name=\"use_marku" -+ "p\">True</property></object><packing><property name=\"expand\">False</p" -+ "roperty><property name=\"fill\">False</property><property name=\"positi" -+ "on\">2</property></packing></child></object></child></object><packing><" -+ "property name=\"expand\">False</property><property name=\"fill\">False<" -+ "/property><property name=\"position\">7</property></packing></child><ch" -+ "ild><object class=\"GtkLabel\" id=\"label14\"><property name=\"visible\"" -+ ">True</property><property name=\"xalign\">0</property><property name=\"" -+ "label\" translatable=\"yes\">Opacity of windows during _move:</property" -+ "><property name=\"use_underline\">True</property><property name=\"mnemo" -+ "nic_widget\">move_opacity_scale</property></object><packing><property n" -+ "ame=\"expand\">False</property><property name=\"fill\">False</property>" -+ "<property name=\"position\">8</property></packing></child><child><objec" -+ "t class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible\">T" -+ "rue</property><property name=\"top_padding\">2</property><property name" -+ "=\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"hb" -+ "ox5\"><property name=\"visible\">True</property><child><object class=\"" -+ "GtkLabel\" id=\"label21\"><property name=\"visible\">True</property><pr" -+ "operty name=\"label\" translatable=\"yes\"><i>Transparent</i&g" -+ "t;</property><property name=\"use_markup\">True</property></object><pac" -+ "king><property name=\"expand\">False</property><property name=\"fill\">" -+ "False</property><property name=\"position\">0</property></packing></chi" -+ "ld><child><object class=\"GtkHScale\" id=\"move_opacity_scale\"><proper" - "ty name=\"visible\">True</property><property name=\"can_focus\">True</p" - "roperty><property name=\"update_policy\">discontinuous</property><prope" -- "rty name=\"adjustment\">adjustment2</property><property name=\"restrict" -+ "rty name=\"adjustment\">adjustment4</property><property name=\"restrict" - "_to_fill_level\">False</property><property name=\"draw_value\">False</p" - "roperty></object><packing><property name=\"position\">1</property></pac" -- "king></child><child><object class=\"GtkLabel\" id=\"label18\"><property" -+ "king></child><child><object class=\"GtkLabel\" id=\"label22\"><property" - " name=\"visible\">True</property><property name=\"label\" translatable=" - "\"yes\"><i>Opaque</i></property><property name=\"use_markup" - "\">True</property></object><packing><property name=\"expand\">False</pr" - "operty><property name=\"fill\">False</property><property name=\"positio" - "n\">2</property></packing></child></object></child></object><packing><p" - "roperty name=\"expand\">False</property><property name=\"fill\">False</" -- "property><property name=\"position\">5</property></packing></child><chi" -- "ld><object class=\"GtkLabel\" id=\"label13\"><property name=\"visible\"" -+ "property><property name=\"position\">9</property></packing></child><chi" -+ "ld><object class=\"GtkLabel\" id=\"label15\"><property name=\"visible\"" - ">True</property><property name=\"xalign\">0</property><property name=\"" -- "label\" translatable=\"yes\">Opacity of _inactive windows:</property><p" -- "roperty name=\"use_underline\">True</property><property name=\"mnemonic" -- "_widget\">inactive_opacity_scale</property></object><packing><property " -- "name=\"expand\">False</property><property name=\"fill\">False</property" -- "><property name=\"position\">6</property></packing></child><child><obje" -- "ct class=\"GtkAlignment\" id=\"alignment6\"><property name=\"visible\">" -- "True</property><property name=\"top_padding\">2</property><property nam" -- "e=\"left_padding\">12</property><child><object class=\"GtkHBox\" id=\"h" -- "box4\"><property name=\"visible\">True</property><child><object class=\"" -- "GtkLabel\" id=\"label19\"><property name=\"visible\">True</property><pr" -- "operty name=\"label\" translatable=\"yes\"><i>Transparent</i&g" -- "t;</property><property name=\"use_markup\">True</property></object><pac" -- "king><property name=\"expand\">False</property><property name=\"fill\">" -- "False</property><property name=\"position\">0</property></packing></chi" -- "ld><child><object class=\"GtkHScale\" id=\"inactive_opacity_scale\"><pr" -- "operty name=\"visible\">True</property><property name=\"can_focus\">Tru" -- "e</property><property name=\"update_policy\">discontinuous</property><p" -- "roperty name=\"adjustment\">adjustment3</property><property name=\"rest" -- "rict_to_fill_level\">False</property><property name=\"draw_value\">Fals" -- "e</property></object><packing><property name=\"position\">1</property><" -- "/packing></child><child><object class=\"GtkLabel\" id=\"label20\"><prop" -- "erty name=\"visible\">True</property><property name=\"label\" translata" -- "ble=\"yes\"><i>Opaque</i></property><property name=\"use_ma" -- "rkup\">True</property></object><packing><property name=\"expand\">False" -- "</property><property name=\"fill\">False</property><property name=\"pos" -- "ition\">2</property></packing></child></object></child></object><packin" -- "g><property name=\"expand\">False</property><property name=\"fill\">Fal" -- "se</property><property name=\"position\">7</property></packing></child>" -- "<child><object class=\"GtkLabel\" id=\"label14\"><property name=\"visib" -- "le\">True</property><property name=\"xalign\">0</property><property nam" -- "e=\"label\" translatable=\"yes\">Opacity of windows during _move:</prop" -- "erty><property name=\"use_underline\">True</property><property name=\"m" -- "nemonic_widget\">move_opacity_scale</property></object><packing><proper" -+ "label\" translatable=\"yes\">Opacity of windows during resi_ze:</proper" -+ "ty><property name=\"use_underline\">True</property><property name=\"mne" -+ "monic_widget\">resize_opacity_scale</property></object><packing><proper" - "ty name=\"expand\">False</property><property name=\"fill\">False</prope" -- "rty><property name=\"position\">8</property></packing></child><child><o" -- "bject class=\"GtkAlignment\" id=\"alignment7\"><property name=\"visible" -- "\">True</property><property name=\"top_padding\">2</property><property " -- "name=\"left_padding\">12</property><child><object class=\"GtkHBox\" id=" -- "\"hbox5\"><property name=\"visible\">True</property><child><object clas" -- "s=\"GtkLabel\" id=\"label21\"><property name=\"visible\">True</property" -- "><property name=\"label\" translatable=\"yes\"><i>Transparent<" -- "/i></property><property name=\"use_markup\">True</property></object>" -- "<packing><property name=\"expand\">False</property><property name=\"fil" -- "l\">False</property><property name=\"position\">0</property></packing><" -- "/child><child><object class=\"GtkHScale\" id=\"move_opacity_scale\"><pr" -- "operty name=\"visible\">True</property><property name=\"can_focus\">Tru" -- "e</property><property name=\"update_policy\">discontinuous</property><p" -- "roperty name=\"adjustment\">adjustment4</property><property name=\"rest" -- "rict_to_fill_level\">False</property><property name=\"draw_value\">Fals" -- "e</property></object><packing><property name=\"position\">1</property><" -- "/packing></child><child><object class=\"GtkLabel\" id=\"label22\"><prop" -- "erty name=\"visible\">True</property><property name=\"label\" translata" -- "ble=\"yes\"><i>Opaque</i></property><property name=\"use_ma" -- "rkup\">True</property></object><packing><property name=\"expand\">False" -- "</property><property name=\"fill\">False</property><property name=\"pos" -- "ition\">2</property></packing></child></object></child></object><packin" -- "g><property name=\"expand\">False</property><property name=\"fill\">Fal" -- "se</property><property name=\"position\">9</property></packing></child>" -- "<child><object class=\"GtkLabel\" id=\"label15\"><property name=\"visib" -- "le\">True</property><property name=\"xalign\">0</property><property nam" -- "e=\"label\" translatable=\"yes\">Opacity of windows during resi_ze:</pr" -- "operty><property name=\"use_underline\">True</property><property name=\"" -- "mnemonic_widget\">resize_opacity_scale</property></object><packing><pro" -- "perty name=\"expand\">False</property><property name=\"fill\">False</pr" -- "operty><property name=\"position\">10</property></packing></child><chil" -- "d><object class=\"GtkAlignment\" id=\"alignment8\"><property name=\"vis" -- "ible\">True</property><property name=\"top_padding\">2</property><prope" -- "rty name=\"left_padding\">12</property><child><object class=\"GtkHBox\"" -- " id=\"hbox6\"><property name=\"visible\">True</property><child><object " -- "class=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</prop" -- "erty><property name=\"label\" translatable=\"yes\"><i>Transparent" -- "</i></property><property name=\"use_markup\">True</property></obj" -- "ect><packing><property name=\"expand\">False</property><property name=\"" -- "fill\">False</property><property name=\"position\">0</property></packin" -- "g></child><child><object class=\"GtkHScale\" id=\"resize_opacity_scale\"" -- "><property name=\"visible\">True</property><property name=\"can_focus\"" -- ">True</property><property name=\"update_policy\">discontinuous</propert" -- "y><property name=\"adjustment\">adjustment5</property><property name=\"" -- "restrict_to_fill_level\">False</property><property name=\"draw_value\">" -- "False</property></object><packing><property name=\"position\">1</proper" -- "ty></packing></child><child><object class=\"GtkLabel\" id=\"label24\"><" -- "property name=\"visible\">True</property><property name=\"label\" trans" -- "latable=\"yes\"><i>Opaque</i></property><property name=\"us" -- "e_markup\">True</property></object><packing><property name=\"expand\">F" -- "alse</property><property name=\"fill\">False</property><property name=\"" -+ "rty><property name=\"position\">10</property></packing></child><child><" -+ "object class=\"GtkAlignment\" id=\"alignment8\"><property name=\"visibl" -+ "e\">True</property><property name=\"top_padding\">2</property><property" -+ " name=\"left_padding\">12</property><child><object class=\"GtkHBox\" id" -+ "=\"hbox6\"><property name=\"visible\">True</property><child><object cla" -+ "ss=\"GtkLabel\" id=\"label23\"><property name=\"visible\">True</propert" -+ "y><property name=\"label\" translatable=\"yes\"><i>Transparent<" -+ ";/i></property><property name=\"use_markup\">True</property></object" -+ "><packing><property name=\"expand\">False</property><property name=\"fi" -+ "ll\">False</property><property name=\"position\">0</property></packing>" -+ "</child><child><object class=\"GtkHScale\" id=\"resize_opacity_scale\">" -+ "<property name=\"visible\">True</property><property name=\"can_focus\">" -+ "True</property><property name=\"update_policy\">discontinuous</property" -+ "><property name=\"adjustment\">adjustment5</property><property name=\"r" -+ "estrict_to_fill_level\">False</property><property name=\"draw_value\">F" -+ "alse</property></object><packing><property name=\"position\">1</propert" -+ "y></packing></child><child><object class=\"GtkLabel\" id=\"label24\"><p" -+ "roperty name=\"visible\">True</property><property name=\"label\" transl" -+ "atable=\"yes\"><i>Opaque</i></property><property name=\"use" -+ "_markup\">True</property></object><packing><property name=\"expand\">Fa" -+ "lse</property><property name=\"fill\">False</property><property name=\"" - "position\">2</property></packing></child></object></child></object><pac" - "king><property name=\"expand\">False</property><property name=\"fill\">" - "False</property><property name=\"position\">11</property></packing></ch" -@@ -568,5 +576,5 @@ static const char tweaks_dialog_ui[] = - "et></action-widgets></object></interface>" - }; - --static const unsigned tweaks_dialog_ui_length = 37803u; -+static const unsigned tweaks_dialog_ui_length = 38338u; - -diff --git a/src/client.c b/src/client.c -index 4e86808..b92c264 100644 ---- a/src/client.c -+++ b/src/client.c -@@ -64,6 +64,8 @@ - #include "xsync.h" - #include "event_filter.h" - -+//#define TRACE(fmt, ...) printf(fmt"\n", ##__VA_ARGS__); fflush(stdout); -+ - /* Event mask definition */ - - #define POINTER_EVENT_MASK \ -@@ -173,6 +175,7 @@ clientCreateTitleName (Client *c, gchar *name, gchar *hostname) - gchar *title; - - g_return_val_if_fail (c != NULL, NULL); -+ - TRACE ("entering clientCreateTitleName"); - - screen_info = c->screen_info; -@@ -1729,6 +1732,7 @@ clientFrame (DisplayInfo *display_info, Window w, gboolean recapture) - clientGetInitialNetWmDesktop (c); - /* workarea will be updated when shown, no need to worry here */ - clientGetNetStruts (c); -+ clientGetExtra (c); - - /* Once we know the type of window, we can initialize window position */ - if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_SESSION_MANAGED)) -@@ -3137,6 +3141,8 @@ clientNewMaxSize (Client *c, XWindowChanges *wc, GdkRectangle *rect, tilePositio - wc->width = full_w - frameLeft (c) - frameRight (c); - wc->height = full_h - frameTop (c) - frameBottom (c); - -+ TRACE ("clientNewMaxSize %d %d %d %d", wc->x, wc->y, wc->width, wc->height); -+ - return ((wc->width <= c->size->max_width) && (wc->height <= c->size->max_height)); - } - -diff --git a/src/client.h b/src/client.h -index e8bc4e3..b5e54df 100644 ---- a/src/client.h -+++ b/src/client.h -@@ -161,6 +161,7 @@ - #define CLIENT_FLAG_DEMANDS_ATTENTION (1L<<17) - #define CLIENT_FLAG_HAS_SHAPE (1L<<18) - #define CLIENT_FLAG_FULLSCREN_MONITORS (1L<<19) -+#define CLIENT_FLAG_TITLELESS_MAXIMIZE (1L<<20) - - #define WM_FLAG_DELETE (1L<<0) - #define WM_FLAG_INPUT (1L<<1) -diff --git a/src/display.c b/src/display.c -index 00318d5..4f847f4 100644 ---- a/src/display.c -+++ b/src/display.c -@@ -169,7 +169,8 @@ myDisplayInitAtoms (DisplayInfo *display_info) - "XFWM4_COMPOSITING_MANAGER", - "XFWM4_TIMESTAMP_PROP", - "_XROOTPMAP_ID", -- "_XSETROOT_ID" -+ "_XSETROOT_ID", -+ "_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED" - }; - - g_assert (ATOM_COUNT == G_N_ELEMENTS (atom_names)); -diff --git a/src/display.h b/src/display.h -index 8797237..a297cf2 100644 ---- a/src/display.h -+++ b/src/display.h -@@ -265,6 +265,7 @@ enum - XFWM4_TIMESTAMP_PROP, - XROOTPMAP, - XSETROOT, -+ _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED, - ATOM_COUNT - }; - -diff --git a/src/events.c b/src/events.c -index 4b49171..044cd11 100644 ---- a/src/events.c -+++ b/src/events.c -@@ -1921,6 +1921,11 @@ handlePropertyNotify (DisplayInfo *display_info, XPropertyEvent * ev) - TRACE ("Window 0x%lx has NET_WM_SYNC_REQUEST_COUNTER set to 0x%lx", c->window, c->xsync_counter); - } - #endif /* HAVE_XSYNC */ -+ else if (ev->atom == display_info->atoms[_GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED]) -+ { -+ TRACE ("Client \"%s\" Window 0x%lx has received GTK CRAP\n", c->name, c->window); -+ clientUpdateExtra (c); -+ } - - return status; - } -diff --git a/src/frame.c b/src/frame.c -index 7f4cbd3..23c01cd 100644 ---- a/src/frame.c -+++ b/src/frame.c -@@ -39,6 +39,8 @@ - #include "frame.h" - #include "compositor.h" - -+//#define TRACE(fmt, ...) printf(fmt"\n", ##__VA_ARGS__); fflush(stdout); -+ - typedef struct - { - xfwmPixmap pm_title; -@@ -121,7 +123,14 @@ frameTop (Client * c) - - g_return_val_if_fail (c != NULL, 0); - if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER) -- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)) -+ && !(FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN) -+ || (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT) -+ && (c->screen_info->params->titleless_maximize -+ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE)) -+ && c->screen_info->params->borderless_maximize -+ ) -+ ) -+ ) - { - return c->screen_info->title[TITLE_3][ACTIVE].height; - } -@@ -136,8 +145,13 @@ frameBottom (Client * c) - g_return_val_if_fail (c != NULL, 0); - if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER) - && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN) -- && (!FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED) -- || !(c->screen_info->params->borderless_maximize))) -+ && !(FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED) -+ && (c->screen_info->params->borderless_maximize)) -+ && !(FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT) -+ && (c->screen_info->params->borderless_maximize) -+ && (c->screen_info->params->titleless_maximize -+ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE))) -+ ) - { - return c->screen_info->sides[SIDE_BOTTOM][ACTIVE].height; - } -@@ -203,7 +217,14 @@ frameHeight (Client * c) - return frameTop (c) + frameBottom (c); - } - else if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER) -- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)) -+ && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN) -+ && !( -+ FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT) -+ && (c->screen_info->params->borderless_maximize) -+ && (c->screen_info->params->titleless_maximize -+ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE)) -+ )) -+ - { - return c->height + frameTop (c) + frameBottom (c); - } -@@ -882,6 +903,7 @@ frameDrawWin (Client * c) - gboolean requires_clearing; - gboolean width_changed; - gboolean height_changed; -+ gboolean vert_only; - - TRACE ("entering frameDraw"); - TRACE ("drawing frame for \"%s\" (0x%lx)", c->name, c->window); -@@ -955,128 +977,152 @@ frameDrawWin (Client * c) - } - - if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER) -- && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN)) -+ && !FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN) -+ && !(FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED) -+ && (c->screen_info->params->borderless_maximize) -+ && (c->screen_info->params->titleless_maximize -+ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE)) -+ )) - { -- /* First, hide the buttons that we don't have... */ -- for (i = 0; i < BUTTON_COUNT; i++) -+ vert_only = FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT) -+ && (c->screen_info->params->borderless_maximize) //only vertical decorations shown (titleless vertical maximize) -+ && (c->screen_info->params->titleless_maximize -+ || FLAG_TEST (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE)); -+ -+ if (vert_only) - { -- char b = getLetterFromButton (i, c); -- if ((!b) || !strchr (screen_info->params->button_layout, b)) -+ //hide all buttons -+ for (i = 0; i < BUTTON_COUNT; i++) - { - xfwmWindowHide (&c->buttons[i]); - } -+ xfwmWindowHide (&c->title); -+ xfwmWindowHide (&c->sides[SIDE_BOTTOM]); -+ xfwmWindowHide (&c->sides[SIDE_TOP]); -+ xfwmWindowHide (&c->corners[CORNER_TOP_LEFT]); -+ xfwmWindowHide (&c->corners[CORNER_TOP_RIGHT]); -+ xfwmWindowHide (&c->corners[CORNER_BOTTOM_LEFT]); -+ xfwmWindowHide (&c->corners[CORNER_BOTTOM_RIGHT]); - } -- -- /* Then, show the ones that we do have on left... */ -- x = frameLeft (c) + frameButtonOffset (c); -- if (x < 0) -- { -- x = 0; -- } -- right = frameWidth (c) - frameRight (c) - frameButtonOffset (c); -- for (i = 0; i < strlen (screen_info->params->button_layout); i++) -+ else - { -- button = getButtonFromLetter (screen_info->params->button_layout[i], c); -- if (button == TITLE_SEPARATOR) -+ /* First, hide the buttons that we don't have... */ -+ for (i = 0; i < BUTTON_COUNT; i++) - { -- break; -- } -- else if (button >= 0) -- { -- if (x + screen_info->buttons[button][state].width + screen_info->params->button_spacing < right) -- { -- my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state)); -- if (!xfwmPixmapNone(my_pixmap)) -- { -- xfwmWindowSetBG (&c->buttons[button], my_pixmap); -- } -- xfwmWindowShow (&c->buttons[button], x, -- (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2, -- screen_info->buttons[button][state].width, -- screen_info->buttons[button][state].height, TRUE); -- button_x[button] = x; -- x = x + screen_info->buttons[button][state].width + -- screen_info->params->button_spacing; -- } -- else -+ char b = getLetterFromButton (i, c); -+ if ((!b) || !strchr (screen_info->params->button_layout, b)) - { -- xfwmWindowHide (&c->buttons[button]); -+ xfwmWindowHide (&c->buttons[i]); - } - } -- } -- left = x + screen_info->params->button_spacing; - -- /* and those that we do have on right... */ -- x = frameWidth (c) - frameRight (c) + screen_info->params->button_spacing - -- frameButtonOffset (c); -- for (j = strlen (screen_info->params->button_layout) - 1; j >= i; j--) -- { -- button = getButtonFromLetter (screen_info->params->button_layout[j], c); -- if (button == TITLE_SEPARATOR) -+ /* Then, show the ones that we do have on left... */ -+ x = frameLeft (c) + frameButtonOffset (c); -+ if (x < 0) - { -- break; -+ x = 0; - } -- else if (button >= 0) -+ right = frameWidth (c) - frameRight (c) - frameButtonOffset (c); -+ for (i = 0; i < strlen (screen_info->params->button_layout); i++) - { -- if (x - screen_info->buttons[button][state].width - screen_info->params->button_spacing > left) -+ button = getButtonFromLetter (screen_info->params->button_layout[i], c); -+ if (button == TITLE_SEPARATOR) - { -- my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state)); -- if (!xfwmPixmapNone(my_pixmap)) -+ break; -+ } -+ else if (button >= 0) -+ { -+ if (x + screen_info->buttons[button][state].width + screen_info->params->button_spacing < right) -+ { -+ my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state)); -+ if (!xfwmPixmapNone(my_pixmap)) -+ { -+ xfwmWindowSetBG (&c->buttons[button], my_pixmap); -+ } -+ xfwmWindowShow (&c->buttons[button], x, -+ (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2, -+ screen_info->buttons[button][state].width, -+ screen_info->buttons[button][state].height, TRUE); -+ button_x[button] = x; -+ x = x + screen_info->buttons[button][state].width + -+ screen_info->params->button_spacing; -+ } -+ else - { -- xfwmWindowSetBG (&c->buttons[button], my_pixmap); -+ xfwmWindowHide (&c->buttons[button]); - } -- x = x - screen_info->buttons[button][state].width - -- screen_info->params->button_spacing; -- xfwmWindowShow (&c->buttons[button], x, -- (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2, -- screen_info->buttons[button][state].width, -- screen_info->buttons[button][state].height, TRUE); -- button_x[button] = x; - } -- else -+ } -+ left = x + screen_info->params->button_spacing; -+ -+ /* and those that we do have on right... */ -+ x = frameWidth (c) - frameRight (c) + screen_info->params->button_spacing - -+ frameButtonOffset (c); -+ for (j = strlen (screen_info->params->button_layout) - 1; j >= i; j--) -+ { -+ button = getButtonFromLetter (screen_info->params->button_layout[j], c); -+ if (button == TITLE_SEPARATOR) - { -- xfwmWindowHide (&c->buttons[button]); -+ break; -+ } -+ else if (button >= 0) -+ { -+ if (x - screen_info->buttons[button][state].width - screen_info->params->button_spacing > left) -+ { -+ my_pixmap = clientGetButtonPixmap (c, button, clientGetButtonState (c, button, state)); -+ if (!xfwmPixmapNone(my_pixmap)) -+ { -+ xfwmWindowSetBG (&c->buttons[button], my_pixmap); -+ } -+ x = x - screen_info->buttons[button][state].width - -+ screen_info->params->button_spacing; -+ xfwmWindowShow (&c->buttons[button], x, -+ (frameTop (c) - screen_info->buttons[button][state].height + 1) / 2, -+ screen_info->buttons[button][state].width, -+ screen_info->buttons[button][state].height, TRUE); -+ button_x[button] = x; -+ } -+ else -+ { -+ xfwmWindowHide (&c->buttons[button]); -+ } - } - } -+ left = left - 2 * screen_info->params->button_spacing; -+ right = x; -+ xfwmPixmapInit (screen_info, &frame_pix.pm_title); -+ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_TOP]); -+ xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]); -+ -+ top_width = frameWidth (c) - frameTopLeftWidth (c, state) - frameTopRightWidth (c, state); -+ bottom_width = frameWidth (c) - -+ screen_info->corners[CORNER_BOTTOM_LEFT][state].width - -+ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width; -+ -+ /* The title is almost always visible */ -+ frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title, &frame_pix.pm_sides[SIDE_TOP]); -+ xfwmWindowSetBG (&c->title, &frame_pix.pm_title); -+ xfwmWindowShow (&c->title, -+ frameTopLeftWidth (c, state), 0, top_width, -+ frameTop (c), (requires_clearing | width_changed)); -+ -+ /* Corners are never resized, we need to update them separately */ -+ if (requires_clearing) -+ { -+ xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT], -+ &screen_info->corners[CORNER_TOP_LEFT][state]); -+ xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT], -+ &screen_info->corners[CORNER_TOP_RIGHT][state]); -+ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT], -+ &screen_info->corners[CORNER_BOTTOM_LEFT][state]); -+ xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT], -+ &screen_info->corners[CORNER_BOTTOM_RIGHT][state]); -+ } - } -- left = left - 2 * screen_info->params->button_spacing; -- right = x; -- -- top_width = frameWidth (c) - frameTopLeftWidth (c, state) - frameTopRightWidth (c, state); -- bottom_width = frameWidth (c) - -- screen_info->corners[CORNER_BOTTOM_LEFT][state].width - -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width; -- left_height = frameHeight (c) - frameTop (c) - -- screen_info->corners[CORNER_BOTTOM_LEFT][state].height; -- right_height = frameHeight (c) - frameTop (c) - -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height; -- -- xfwmPixmapInit (screen_info, &frame_pix.pm_title); -- xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_TOP]); -- xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM]); -+ - xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_LEFT]); - xfwmPixmapInit (screen_info, &frame_pix.pm_sides[SIDE_RIGHT]); - -- /* The title is always visible */ -- frameCreateTitlePixmap (c, state, left, right, &frame_pix.pm_title, &frame_pix.pm_sides[SIDE_TOP]); -- xfwmWindowSetBG (&c->title, &frame_pix.pm_title); -- xfwmWindowShow (&c->title, -- frameTopLeftWidth (c, state), 0, top_width, -- frameTop (c), (requires_clearing | width_changed)); -- -- /* Corners are never resized, we need to update them separately */ -- if (requires_clearing) -- { -- xfwmWindowSetBG (&c->corners[CORNER_TOP_LEFT], -- &screen_info->corners[CORNER_TOP_LEFT][state]); -- xfwmWindowSetBG (&c->corners[CORNER_TOP_RIGHT], -- &screen_info->corners[CORNER_TOP_RIGHT][state]); -- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_LEFT], -- &screen_info->corners[CORNER_BOTTOM_LEFT][state]); -- xfwmWindowSetBG (&c->corners[CORNER_BOTTOM_RIGHT], -- &screen_info->corners[CORNER_BOTTOM_RIGHT][state]); -- } -- - if (FLAG_TEST_ALL (c->flags, CLIENT_FLAG_MAXIMIZED) - && (c->screen_info->params->borderless_maximize)) - { -@@ -1091,6 +1137,18 @@ frameDrawWin (Client * c) - } - else - { -+ if (vert_only) -+ { -+ left_height = right_height = c->height; -+ } -+ else -+ { -+ left_height = frameHeight (c) - frameTop (c) -+ - screen_info->corners[CORNER_BOTTOM_LEFT][state].height; -+ right_height = frameHeight (c) - frameTop (c) -+ - screen_info->corners[CORNER_BOTTOM_RIGHT][state].height; -+ } -+ - if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED)) - { - xfwmWindowHide (&c->sides[SIDE_LEFT]); -@@ -1120,63 +1178,69 @@ frameDrawWin (Client * c) - right_height, (requires_clearing | height_changed)); - } - -- xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM], -- bottom_width, frameBottom (c)); -- xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state], -- &frame_pix.pm_sides[SIDE_BOTTOM], -- 0, 0, bottom_width, frameBottom (c)); -- xfwmWindowSetBG (&c->sides[SIDE_BOTTOM], -- &frame_pix.pm_sides[SIDE_BOTTOM]); -- xfwmWindowShow (&c->sides[SIDE_BOTTOM], -- screen_info->corners[CORNER_BOTTOM_LEFT][state].width, -- frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c), -- (requires_clearing | width_changed)); -- -- if (!xfwmPixmapNone(&frame_pix.pm_sides[SIDE_TOP])) -+ if (!vert_only) - { -- xfwmWindowSetBG (&c->sides[SIDE_TOP], &frame_pix.pm_sides[SIDE_TOP]); -- xfwmWindowShow (&c->sides[SIDE_TOP], -- screen_info->corners[CORNER_TOP_LEFT][state].width, -- 0, top_width, frame_pix.pm_sides[SIDE_TOP].height, -+ xfwmPixmapCreate (screen_info, &frame_pix.pm_sides[SIDE_BOTTOM], -+ bottom_width, frameBottom (c)); -+ xfwmPixmapFill (&screen_info->sides[SIDE_BOTTOM][state], -+ &frame_pix.pm_sides[SIDE_BOTTOM], -+ 0, 0, bottom_width, frameBottom (c)); -+ xfwmWindowSetBG (&c->sides[SIDE_BOTTOM], -+ &frame_pix.pm_sides[SIDE_BOTTOM]); -+ xfwmWindowShow (&c->sides[SIDE_BOTTOM], -+ screen_info->corners[CORNER_BOTTOM_LEFT][state].width, -+ frameHeight (c) - frameBottom (c), bottom_width, frameBottom (c), - (requires_clearing | width_changed)); -- } -- else -- { -- xfwmWindowHide (&c->sides[SIDE_TOP]); -- } - -- xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0, -- frameTopLeftWidth (c, state), -- screen_info->corners[CORNER_TOP_LEFT][state].height, -- requires_clearing); -- -- xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT], -- frameWidth (c) - frameTopRightWidth (c, state), -- 0, frameTopRightWidth (c, state), -- screen_info->corners[CORNER_TOP_RIGHT][state].height, -- requires_clearing); -- -- xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0, -- frameHeight (c) - -- screen_info->corners[CORNER_BOTTOM_LEFT][state].height, -- screen_info->corners[CORNER_BOTTOM_LEFT][state].width, -- screen_info->corners[CORNER_BOTTOM_LEFT][state].height, -- requires_clearing); -- -- xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT], -- frameWidth (c) - -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width, -- frameHeight (c) - -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height, -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].width, -- screen_info->corners[CORNER_BOTTOM_RIGHT][state].height, -- requires_clearing); -+ if (!xfwmPixmapNone(&frame_pix.pm_sides[SIDE_TOP])) -+ { -+ xfwmWindowSetBG (&c->sides[SIDE_TOP], &frame_pix.pm_sides[SIDE_TOP]); -+ xfwmWindowShow (&c->sides[SIDE_TOP], -+ screen_info->corners[CORNER_TOP_LEFT][state].width, -+ 0, top_width, frame_pix.pm_sides[SIDE_TOP].height, -+ (requires_clearing | width_changed)); -+ } -+ else -+ { -+ xfwmWindowHide (&c->sides[SIDE_TOP]); -+ } -+ -+ xfwmWindowShow (&c->corners[CORNER_TOP_LEFT], 0, 0, -+ frameTopLeftWidth (c, state), -+ screen_info->corners[CORNER_TOP_LEFT][state].height, -+ requires_clearing); -+ -+ xfwmWindowShow (&c->corners[CORNER_TOP_RIGHT], -+ frameWidth (c) - frameTopRightWidth (c, state), -+ 0, frameTopRightWidth (c, state), -+ screen_info->corners[CORNER_TOP_RIGHT][state].height, -+ requires_clearing); -+ -+ xfwmWindowShow (&c->corners[CORNER_BOTTOM_LEFT], 0, -+ frameHeight (c) - -+ screen_info->corners[CORNER_BOTTOM_LEFT][state].height, -+ screen_info->corners[CORNER_BOTTOM_LEFT][state].width, -+ screen_info->corners[CORNER_BOTTOM_LEFT][state].height, -+ requires_clearing); -+ -+ xfwmWindowShow (&c->corners[CORNER_BOTTOM_RIGHT], -+ frameWidth (c) - -+ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width, -+ frameHeight (c) - -+ screen_info->corners[CORNER_BOTTOM_RIGHT][state].height, -+ screen_info->corners[CORNER_BOTTOM_RIGHT][state].width, -+ screen_info->corners[CORNER_BOTTOM_RIGHT][state].height, -+ requires_clearing); -+ } - } - frameSetShape (c, state, &frame_pix, button_x); - -- xfwmPixmapFree (&frame_pix.pm_title); -- xfwmPixmapFree (&frame_pix.pm_sides[SIDE_TOP]); -- xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]); -+ if (!vert_only) -+ { -+ xfwmPixmapFree (&frame_pix.pm_title); -+ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_TOP]); -+ xfwmPixmapFree (&frame_pix.pm_sides[SIDE_BOTTOM]); -+ } - xfwmPixmapFree (&frame_pix.pm_sides[SIDE_LEFT]); - xfwmPixmapFree (&frame_pix.pm_sides[SIDE_RIGHT]); - } -diff --git a/src/netwm.c b/src/netwm.c -index 1352f08..9e3647c 100644 ---- a/src/netwm.c -+++ b/src/netwm.c -@@ -136,6 +136,44 @@ clientSetNetState (Client * c) - } - - void -+clientGetExtra (Client *c) -+{ -+ long val; -+ DisplayInfo *display_info; -+ -+ display_info = c->screen_info->display_info; -+ -+ getHint (display_info, c->window, _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED, &val); -+ if (val) -+ FLAG_SET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE); -+} -+ -+void -+clientUpdateExtra (Client *c) -+{ -+ long val; -+ unsigned long maximization_flags = 0L; -+ DisplayInfo *display_info; -+ -+ display_info = c->screen_info->display_info; -+ -+ getHint (display_info, c->window, _GTK_HIDE_TITLEBAR_WHEN_MAXIMIZED, &val); -+ if (val) -+ FLAG_SET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE); -+ else -+ FLAG_UNSET (c->flags, CLIENT_FLAG_TITLELESS_MAXIMIZE); -+ -+ if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED)) -+ { -+ maximization_flags = c->flags & CLIENT_FLAG_MAXIMIZED; -+ -+ /* Force an update by clearing the internal flags */ -+ FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ | CLIENT_FLAG_MAXIMIZED_VERT); -+ clientToggleMaximized (c, maximization_flags, TRUE); -+ } -+} -+ -+void - clientGetNetState (Client * c) - { - ScreenInfo *screen_info; -diff --git a/src/placement.c b/src/placement.c -index 01f2590..64719a7 100644 ---- a/src/placement.c -+++ b/src/placement.c -@@ -38,7 +38,6 @@ - #include "frame.h" - #include "netwm.h" - -- - /* Compute rectangle overlap area */ - - static inline unsigned long -@@ -108,6 +107,8 @@ clientMaxSpace (ScreenInfo *screen_info, int *x, int *y, int *w, int *h) - g_return_if_fail (w != NULL); - g_return_if_fail (h != NULL); - -+ TRACE ("entering clientMaxSpace"); -+ - screen_width = 0; - screen_height = 0; - delta = 0; -@@ -157,6 +158,7 @@ clientMaxSpace (ScreenInfo *screen_info, int *x, int *y, int *w, int *h) - } - } - } -+ TRACE ("clientMaxSpace result %d %d %d %d", *x, *y, *w, *h); - } - - gboolean -diff --git a/src/settings.c b/src/settings.c -index 607bb7b..37b6c2a 100644 ---- a/src/settings.c -+++ b/src/settings.c -@@ -667,6 +667,7 @@ loadSettings (ScreenInfo *screen_info) - /* You can change the order of the following parameters */ - {"activate_action", NULL, G_TYPE_STRING, TRUE}, - {"borderless_maximize", NULL, G_TYPE_BOOLEAN, TRUE}, -+ {"titleless_maximize", NULL, G_TYPE_BOOLEAN, TRUE}, - {"box_move", NULL, G_TYPE_BOOLEAN, TRUE}, - {"box_resize", NULL, G_TYPE_BOOLEAN, TRUE}, - {"button_layout", NULL, G_TYPE_STRING, TRUE}, -@@ -753,6 +754,8 @@ loadSettings (ScreenInfo *screen_info) - - screen_info->params->borderless_maximize = - getBoolValue ("borderless_maximize", rc); -+ screen_info->params->titleless_maximize = -+ getBoolValue ("titleless_maximize", rc); - screen_info->params->box_resize = - getBoolValue ("box_resize", rc); - screen_info->params->box_move = -@@ -1261,6 +1264,11 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ - screen_info->params->borderless_maximize = g_value_get_boolean (value); - reloadScreenSettings (screen_info, UPDATE_MAXIMIZE); - } -+ else if (!strcmp (name, "titleless_maximize")) -+ { -+ screen_info->params->titleless_maximize = g_value_get_boolean (value); -+ reloadScreenSettings (screen_info, UPDATE_MAXIMIZE); -+ } - else if (!strcmp (name, "cycle_minimum")) - { - screen_info->params->cycle_minimum = g_value_get_boolean (value); -diff --git a/src/settings.h b/src/settings.h -index be01b6b..ea8b79b 100644 ---- a/src/settings.h -+++ b/src/settings.h -@@ -197,6 +197,7 @@ struct _XfwmParams - int title_shadow[2]; - int wrap_resistance; - gboolean borderless_maximize; -+ gboolean titleless_maximize; - gboolean box_move; - gboolean box_resize; - gboolean click_to_focus; --- -1.8.4 - diff --git a/pcr/xfwm4-titleless/xfwm4.install b/pcr/xfwm4-titleless/xfwm4.install deleted file mode 100644 index e4f8fd06c..000000000 --- a/pcr/xfwm4-titleless/xfwm4.install +++ /dev/null @@ -1,13 +0,0 @@ -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: |