diff options
Diffstat (limited to 'community/metacity')
-rw-r--r-- | community/metacity/PKGBUILD | 55 | ||||
-rw-r--r-- | community/metacity/application-switcher.patch | 26 | ||||
-rw-r--r-- | community/metacity/enable_compositing.patch | 12 | ||||
-rw-r--r-- | community/metacity/fix_compositing_startup.patch | 12 | ||||
-rw-r--r-- | community/metacity/fix_force_quit.patch | 222 | ||||
-rw-r--r-- | community/metacity/fix_shadows.patch | 39 | ||||
-rw-r--r-- | community/metacity/metacity.install | 19 |
7 files changed, 385 insertions, 0 deletions
diff --git a/community/metacity/PKGBUILD b/community/metacity/PKGBUILD new file mode 100644 index 000000000..546268cbf --- /dev/null +++ b/community/metacity/PKGBUILD @@ -0,0 +1,55 @@ +# $Id: PKGBUILD 88820 2013-04-23 01:21:30Z bgyorgy $ +# Maintainer: Balló György <ballogyor+arch at gmail dot com> +# Contributor: Jan de Groot <jgc@archlinux.org> + +pkgname=metacity +pkgver=2.34.13 +pkgrel=5 +pkgdesc="Legacy GNOME window manager" +arch=('i686' 'x86_64' 'mips64el') +license=('GPL') +depends=('dconf' 'libcanberra' 'libgtop' 'gsettings-desktop-schemas' 'gtk2' 'startup-notification' 'zenity') +makedepends=('intltool' 'itstool') +url="https://live.gnome.org/Metacity" +options=('!libtool') +install=metacity.install +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz + fix_compositing_startup.patch + fix_force_quit.patch + fix_shadows.patch + enable_compositing.patch + application-switcher.patch) +sha256sums=('8cf4dbf0da0a6f36357ce7db7f829ec685908a7792453c662fb8184572b91075' + '5094a0ffe3eb8289ed752829877c2e1b743eddf938ad3fc92fb4574b42765ae2' + '917760ac3375894ebb4052dfc7c8dff1ac556fb81033d7a7caf02123ceede50d' + 'a0981477e9b3fd108fd03b7637bfd1f17a1f6cb13ec703d86b424b55076096f3' + 'e53c1c20e19cd3d94d05d08045c7a9a373ce52051928ccc69bf3068081f30f9a' + '177ded8203c3ff25f59a24445145cb54da9aba4216a0014c34979b7c12f3c099') + +build() { + cd "$pkgname-$pkgver" + + # https://bugzilla.gnome.org/show_bug.cgi?id=658036 + patch -Np1 -i "$srcdir/fix_compositing_startup.patch" + + # https://bugzilla.gnome.org/show_bug.cgi?id=687938 + patch -Np1 -i "$srcdir/fix_force_quit.patch" + + # https://bugzilla.gnome.org/show_bug.cgi?id=648340 + patch -Np1 -i "$srcdir/fix_shadows.patch" + + # Enable compositing by default (required for the desktop rendering feature of nautilus) + patch -Np1 -i "$srcdir/enable_compositing.patch" + + # Rename switch-windows to switch-applications (required for GNOME 3.8 compatibility) + patch -Np1 -i "$srcdir/application-switcher.patch" + + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgname \ + --disable-static --disable-schemas-compile + make +} + +package() { + cd "$pkgname-$pkgver" + make DESTDIR="$pkgdir" install +} diff --git a/community/metacity/application-switcher.patch b/community/metacity/application-switcher.patch new file mode 100644 index 000000000..2832d262c --- /dev/null +++ b/community/metacity/application-switcher.patch @@ -0,0 +1,26 @@ +diff -Naur metacity-2.34.13.orig/src/50-metacity-navigation.xml.in metacity-2.34.13/src/50-metacity-navigation.xml.in +--- metacity-2.34.13.orig/src/50-metacity-navigation.xml.in 2012-10-15 20:06:27.000000000 +0200 ++++ metacity-2.34.13/src/50-metacity-navigation.xml.in 2013-04-23 02:35:18.000734619 +0200 +@@ -29,7 +29,7 @@ + <KeyListEntry name="move-to-workspace-down" + _description="Move window one workspace down" /> + +- <KeyListEntry name="switch-windows" ++ <KeyListEntry name="switch-applications" + _description="Switch applications"/> + + <KeyListEntry name="switch-group" +diff -Naur metacity-2.34.13.orig/src/include/all-keybindings.h metacity-2.34.13/src/include/all-keybindings.h +--- metacity-2.34.13.orig/src/include/all-keybindings.h 2012-02-09 19:07:40.000000000 +0100 ++++ metacity-2.34.13/src/include/all-keybindings.h 2013-04-23 02:34:22.632775305 +0200 +@@ -126,8 +126,8 @@ + keybind (switch-group, handle_switch, META_TAB_LIST_GROUP, BINDING_REVERSES) + keybind (switch-group-backward, handle_switch, META_TAB_LIST_GROUP, + REVERSES_AND_REVERSED) +-keybind (switch-windows, handle_switch, META_TAB_LIST_NORMAL, BINDING_REVERSES) +-keybind (switch-windows-backward, handle_switch, META_TAB_LIST_NORMAL, ++keybind (switch-applications, handle_switch, META_TAB_LIST_NORMAL, BINDING_REVERSES) ++keybind (switch-applications-backward, handle_switch, META_TAB_LIST_NORMAL, + REVERSES_AND_REVERSED) + keybind (switch-panels, handle_switch, META_TAB_LIST_DOCKS, BINDING_REVERSES) + keybind (switch-panels-backward, handle_switch, META_TAB_LIST_DOCKS, diff --git a/community/metacity/enable_compositing.patch b/community/metacity/enable_compositing.patch new file mode 100644 index 000000000..3c5f09666 --- /dev/null +++ b/community/metacity/enable_compositing.patch @@ -0,0 +1,12 @@ +diff -Naur metacity-2.34.13.orig/src/org.gnome.metacity.gschema.xml.in metacity-2.34.13/src/org.gnome.metacity.gschema.xml.in +--- metacity-2.34.13.orig/src/org.gnome.metacity.gschema.xml.in 2012-02-15 18:31:44.000000000 +0100 ++++ metacity-2.34.13/src/org.gnome.metacity.gschema.xml.in 2013-04-10 20:14:39.837033219 +0200 +@@ -3,7 +3,7 @@ + <schema id="org.gnome.metacity" path="/org/gnome/metacity/" + gettext-domain="@GETTEXT_PACKAGE@"> + <key name="compositing-manager" type="b"> +- <default>false</default> ++ <default>true</default> + <_summary>Compositing Manager</_summary> + <_description> + Determines whether Metacity is a compositing manager. diff --git a/community/metacity/fix_compositing_startup.patch b/community/metacity/fix_compositing_startup.patch new file mode 100644 index 000000000..56b218ae7 --- /dev/null +++ b/community/metacity/fix_compositing_startup.patch @@ -0,0 +1,12 @@ +diff -Naur metacity-2.34.5.orig/src/compositor/compositor-xrender.c metacity-2.34.5/src/compositor/compositor-xrender.c +--- metacity-2.34.5.orig/src/compositor/compositor-xrender.c 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.5/src/compositor/compositor-xrender.c 2012-08-28 14:23:04.093750568 +0200 +@@ -3066,6 +3057,8 @@ + #endif + + xrc->enabled = TRUE; ++ xrc->show_redraw = FALSE; ++ xrc->debug = FALSE; + g_timeout_add (2000, (GSourceFunc) timeout_debug, xrc); + + return compositor; diff --git a/community/metacity/fix_force_quit.patch b/community/metacity/fix_force_quit.patch new file mode 100644 index 000000000..020f427c4 --- /dev/null +++ b/community/metacity/fix_force_quit.patch @@ -0,0 +1,222 @@ +diff -Naur metacity-2.34.13.orig/src/core/delete.c metacity-2.34.13/src/core/delete.c +--- metacity-2.34.13.orig/src/core/delete.c 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.13/src/core/delete.c 2012-11-08 21:36:48.373976906 +0100 +@@ -90,23 +90,41 @@ + return; + } + +- window_title = g_locale_from_utf8 (window->title, -1, NULL, NULL, NULL); ++ /* This is to get a better string if the title isn't representable ++ * in the locale encoding; actual conversion to UTF-8 is done inside ++ * meta_show_dialog */ ++ ++ if (window->title && window->title[0]) ++ { ++ tmp = g_locale_from_utf8 (window->title, -1, NULL, NULL, NULL); ++ if (tmp == NULL) ++ window_title = NULL; ++ else ++ window_title = window->title; ++ g_free (tmp); ++ } ++ else ++ { ++ window_title = NULL; ++ } + + /* Translators: %s is a window title */ +- tmp = g_strdup_printf (_("<tt>%s</tt> is not responding."), +- window_title); ++ if (window_title) ++ tmp = g_markup_printf_escaped (_("<tt>%s</tt> is not responding."), ++ window_title); ++ else ++ tmp = g_strdup (_("Application is not responding.")); ++ + window_content = g_strdup_printf ( + "<big><b>%s</b></big>\n\n<i>%s</i>", + tmp, + _("You may choose to wait a short while for it to " + "continue or force the application to quit entirely.")); + +- g_free (window_title); +- + dialog_pid = + meta_show_dialog ("--question", +- window_content, 0, +- window->screen->number, ++ window_content, NULL, ++ window->screen->screen_name, + _("_Wait"), _("_Force Quit"), window->xwindow, + NULL, NULL); + +diff -Naur metacity-2.34.13.orig/src/core/session.c metacity-2.34.13/src/core/session.c +--- metacity-2.34.13.orig/src/core/session.c 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.13/src/core/session.c 2012-11-08 21:35:56.896216322 +0100 +@@ -1809,7 +1809,7 @@ + "and will have to be restarted manually next time " + "you log in."), + "240", +- meta_screen_get_screen_number (meta_get_display()->active_screen), ++ meta_get_display()->active_screen->screen_name, + NULL, NULL, + None, + columns, +diff -Naur metacity-2.34.13.orig/src/core/util.c metacity-2.34.13/src/core/util.c +--- metacity-2.34.13.orig/src/core/util.c 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.13/src/core/util.c 2012-11-08 21:36:41.373828115 +0100 +@@ -538,11 +538,30 @@ + } + } + ++/* Command line arguments are passed in the locale encoding; in almost ++ * all cases, we'd hope that is UTF-8 and no conversion is necessary. ++ * If it's not UTF-8, then it's possible that the message isn't ++ * representable in the locale encoding. ++ */ ++static void ++append_argument (GPtrArray *args, ++ const char *arg) ++{ ++ char *locale_arg = g_locale_from_utf8 (arg, -1, NULL, NULL, NULL); ++ ++ /* This is cheesy, but it's better to have a few ???'s in the dialog ++ * for an unresponsive application than no dialog at all appear */ ++ if (!locale_arg) ++ locale_arg = g_strdup ("???"); ++ ++ g_ptr_array_add (args, locale_arg); ++} ++ + GPid + meta_show_dialog (const char *type, + const char *message, + const char *timeout, +- const gint screen_number, ++ const char *display, + const char *ok_text, + const char *cancel_text, + const int transient_for, +@@ -550,61 +569,58 @@ + GSList *entries) + { + GError *error = NULL; +- char *screen_number_text = g_strdup_printf("%d", screen_number); + GSList *tmp; +- int i=0; + GPid child_pid; +- const char **argvl = g_malloc(sizeof (char*) * +- (17 + +- g_slist_length (columns)*2 + +- g_slist_length (entries))); +- +- argvl[i++] = "zenity"; +- argvl[i++] = type; +- argvl[i++] = "--screen"; +- argvl[i++] = screen_number_text; +- argvl[i++] = "--class"; +- argvl[i++] = "metacity-dialog"; +- argvl[i++] = "--title"; ++ GPtrArray *args; ++ ++ args = g_ptr_array_new (); ++ ++ append_argument (args, "zenity"); ++ append_argument (args, type); ++ append_argument (args, "--display"); ++ append_argument (args, display); ++ append_argument (args, "--class"); ++ append_argument (args, "metaicty-dialog"); ++ append_argument (args, "--title"); + /* Translators: This is the title used on dialog boxes */ +- argvl[i++] = _("Metacity"); +- argvl[i++] = "--text"; +- argvl[i++] = message; +- ++ append_argument (args, _("Metacity")); ++ append_argument (args, "--text"); ++ append_argument (args, message); ++ + if (timeout) + { +- argvl[i++] = "--timeout"; +- argvl[i++] = timeout; ++ append_argument (args, "--timeout"); ++ append_argument (args, timeout); + } + + if (ok_text) + { +- argvl[i++] = "--ok-label"; +- argvl[i++] = ok_text; ++ append_argument (args, "--ok-label"); ++ append_argument (args, ok_text); + } + + if (cancel_text) + { +- argvl[i++] = "--cancel-label"; +- argvl[i++] = cancel_text; ++ append_argument (args, "--cancel-label"); ++ append_argument (args, cancel_text); + } +- ++ + tmp = columns; + while (tmp) + { +- argvl[i++] = "--column"; +- argvl[i++] = tmp->data; ++ append_argument (args, "--column"); ++ append_argument (args, tmp->data); + tmp = tmp->next; + } + + tmp = entries; + while (tmp) + { +- argvl[i++] = tmp->data; ++ append_argument (args, tmp->data); + tmp = tmp->next; + } +- +- argvl[i] = NULL; ++ ++ g_ptr_array_add (args, NULL); /* NULL-terminate */ + + if (transient_for) + { +@@ -615,7 +631,7 @@ + + g_spawn_async ( + "/", +- (gchar**) argvl, /* ugh */ ++ (gchar**) args->pdata, + NULL, + G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, + NULL, NULL, +@@ -626,8 +642,7 @@ + if (transient_for) + unsetenv ("WINDOWID"); + +- g_free (argvl); +- g_free (screen_number_text); ++ g_ptr_array_free (args, TRUE); + + if (error) + { +diff -Naur metacity-2.34.13.orig/src/include/util.h metacity-2.34.13/src/include/util.h +--- metacity-2.34.13.orig/src/include/util.h 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.13/src/include/util.h 2012-11-08 21:36:27.206860608 +0100 +@@ -99,9 +99,9 @@ + void meta_free_gslist_and_elements (GSList *list_to_deep_free); + + GPid meta_show_dialog (const char *type, +- const char *title, + const char *message, +- gint timeout, ++ const char *timeout, ++ const char *display, + const char *ok_text, + const char *cancel_text, + const int transient_for, diff --git a/community/metacity/fix_shadows.patch b/community/metacity/fix_shadows.patch new file mode 100644 index 000000000..8d4bf9939 --- /dev/null +++ b/community/metacity/fix_shadows.patch @@ -0,0 +1,39 @@ +diff -Naur metacity-2.34.13.orig/src/compositor/compositor-xrender.c metacity-2.34.13/src/compositor/compositor-xrender.c +--- metacity-2.34.13.orig/src/compositor/compositor-xrender.c 2011-11-10 15:14:34.000000000 +0100 ++++ metacity-2.34.13/src/compositor/compositor-xrender.c 2012-11-09 13:51:42.492411570 +0100 +@@ -905,35 +905,6 @@ + } + } + +- /* Never put a shadow around shaped windows */ +- if (cw->shaped) { +- meta_verbose ("Window has no shadow as it is shaped\n"); +- return FALSE; +- } +- +- /* Don't put shadow around DND icon windows */ +- if (cw->type == META_COMP_WINDOW_DND || +- cw->type == META_COMP_WINDOW_DESKTOP) { +- meta_verbose ("Window has no shadow as it is DND or Desktop\n"); +- return FALSE; +- } +- +- if (cw->mode != WINDOW_ARGB) { +- meta_verbose ("Window has shadow as it is not ARGB\n"); +- return TRUE; +- } +- +- if (cw->type == META_COMP_WINDOW_MENU || +- cw->type == META_COMP_WINDOW_DROP_DOWN_MENU) { +- meta_verbose ("Window has shadow as it is a menu\n"); +- return TRUE; +- } +- +- if (cw->type == META_COMP_WINDOW_TOOLTIP) { +- meta_verbose ("Window has shadow as it is a tooltip\n"); +- return TRUE; +- } +- + meta_verbose ("Window has no shadow as it fell through\n"); + return FALSE; + } diff --git a/community/metacity/metacity.install b/community/metacity/metacity.install new file mode 100644 index 000000000..ba0feffc1 --- /dev/null +++ b/community/metacity/metacity.install @@ -0,0 +1,19 @@ +pkgname=metacity + +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas +} + +pre_upgrade() { + if [ -f /usr/share/gconf/schemas/$pkgname.schemas ]; then + /usr/sbin/gconfpkg --uninstall $pkgname + fi +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} |