summaryrefslogtreecommitdiff
path: root/community/metacity
diff options
context:
space:
mode:
Diffstat (limited to 'community/metacity')
-rw-r--r--community/metacity/PKGBUILD55
-rw-r--r--community/metacity/application-switcher.patch26
-rw-r--r--community/metacity/enable_compositing.patch12
-rw-r--r--community/metacity/fix_compositing_startup.patch12
-rw-r--r--community/metacity/fix_force_quit.patch222
-rw-r--r--community/metacity/fix_shadows.patch39
-rw-r--r--community/metacity/metacity.install19
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
+}