summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-04-20 04:07:59 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-04-20 04:07:59 +0000
commitc191cced4be4333b966cae0432ae8de29663fa5f (patch)
tree2c095990cfc426ecda70f9a7d88d055ecb44e5cd
parent4d8724d2ae72ab2ea20a9ad299dd36f33bda4658 (diff)
Sun Apr 20 04:02:05 UTC 2014
-rw-r--r--community/cinnamon-control-center/PKGBUILD4
-rw-r--r--community/cinnamon-control-center/region.patch5313
-rw-r--r--community/cinnamon-screensaver/PKGBUILD11
-rw-r--r--community/cinnamon-screensaver/fix-high-cpu.patch24
-rw-r--r--community/cinnamon-settings-daemon/PKGBUILD21
-rw-r--r--community/cinnamon-settings-daemon/upower_lid.patch28
-rw-r--r--community/cmatrix/PKGBUILD15
-rw-r--r--community/dos2unix/PKGBUILD8
-rw-r--r--community/gambas3/PKGBUILD6
-rw-r--r--community/gnome-phone-manager/PKGBUILD16
-rw-r--r--community/muffin/PKGBUILD6
-rw-r--r--extra/amarok/PKGBUILD8
-rw-r--r--extra/gdm/0001-Add-Arch-Linux-PAM-config-files.patch41
-rw-r--r--extra/gdm/PKGBUILD6
-rw-r--r--extra/gnome-disk-utility/PKGBUILD6
-rw-r--r--extra/gnumeric/PKGBUILD6
-rw-r--r--extra/gnutls/PKGBUILD8
-rw-r--r--extra/goffice/PKGBUILD8
-rw-r--r--extra/gphoto2/PKGBUILD6
-rw-r--r--extra/kdebindings-korundum/PKGBUILD7
-rw-r--r--extra/kdebindings-python/PKGBUILD10
-rw-r--r--extra/kdebindings-smokekde/PKGBUILD7
-rw-r--r--extra/libdvdread/PKGBUILD8
-rw-r--r--extra/libgphoto2/PKGBUILD15
-rw-r--r--extra/lpeg/LICENSE7
-rw-r--r--extra/lpeg/PKGBUILD54
-rw-r--r--extra/lpeg/lpeg-0.12-makefile.patch37
-rw-r--r--extra/mesa/PKGBUILD10
-rw-r--r--extra/wildmidi/PKGBUILD4
-rw-r--r--extra/xapian-core/PKGBUILD (renamed from community/xapian-core/PKGBUILD)2
-rw-r--r--kernels/linux-libre-knock/PKGBUILD451
-rw-r--r--kernels/linux-libre-rt/PKGBUILD451
-rw-r--r--pcr/nginx-passenger/PKGBUILD113
33 files changed, 280 insertions, 6437 deletions
diff --git a/community/cinnamon-control-center/PKGBUILD b/community/cinnamon-control-center/PKGBUILD
index ff5724b7a..2b1245c85 100644
--- a/community/cinnamon-control-center/PKGBUILD
+++ b/community/cinnamon-control-center/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 109527 2014-04-15 12:47:26Z bpiotrowski $
+# $Id: PKGBUILD 109809 2014-04-19 02:46:38Z bgyorgy $
# Maintainer: Alexandre Filgueira <alexfilgueira@cinnarch.com>
# Based on gnome-control-center:
# Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
@@ -6,7 +6,7 @@
pkgname=cinnamon-control-center
pkgver=2.2.3
-pkgrel=1
+pkgrel=2
pkgdesc="The Control Center for Cinnamon"
arch=('i686' 'x86_64')
depends=('cinnamon-settings-daemon' 'cinnamon-translations' 'cinnamon-menus'
diff --git a/community/cinnamon-control-center/region.patch b/community/cinnamon-control-center/region.patch
deleted file mode 100644
index 85606dbad..000000000
--- a/community/cinnamon-control-center/region.patch
+++ /dev/null
@@ -1,5313 +0,0 @@
-diff -uNrp a/configure.ac b/configure.ac
---- a/configure.ac 2013-08-25 14:40:14.000000000 +0100
-+++ b/configure.ac 2013-08-25 16:50:30.000000000 +0100
-@@ -82,6 +82,22 @@ else
- SYSTEMD=
- fi
-
-+# IBus support
-+IBUS_REQUIRED_VERSION=1.4.2
-+
-+#AC_ARG_ENABLE(ibus,
-+# AS_HELP_STRING([--disable-ibus],
-+# [Disable IBus support]),
-+# enable_ibus=$enableval,
-+# enable_ibus=yes)
-+enable_ibus=yes
-+#if test "x$enable_ibus" = "xyes" ; then
-+IBUS_MODULE="ibus-1.0 >= $IBUS_REQUIRED_VERSION"
-+AC_DEFINE(HAVE_IBUS, 1, [Defined if IBus support is enabled])
-+#else
-+# IBUS_MODULE=
-+#fi
-+
- dnl ==============================================
- dnl Check that we meet the dependencies
- dnl ==============================================
-@@ -119,9 +135,10 @@ PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON
- PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.9.1
- cinnamon-settings-daemon >= $CSD_REQUIRED_VERSION)
- PKG_CHECK_MODULES(COLOR_PANEL, $COMMON_MODULES colord >= 0.1.8)
--PKG_CHECK_MODULES(REGION_PANEL, $COMMON_MODULES libgnomekbd >= 2.91.91
-+PKG_CHECK_MODULES(REGION_PANEL, $COMMON_MODULES
- polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION
-- libxklavier >= 5.1 libgnomekbdui >= 2.91.91)
-+ cinnamon-desktop >= $CINNAMON_DESKTOP_REQUIRED_VERSION
-+ $IBUS_MODULE)
- PKG_CHECK_MODULES(SCREEN_PANEL, $COMMON_MODULES)
- PKG_CHECK_MODULES(SOUND_PANEL, $COMMON_MODULES libxml-2.0
- libcanberra-gtk3 >= $CANBERRA_REQUIRED_VERSION
-diff -uNrp a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
---- a/panels/region/cc-region-panel.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cc-region-panel.c 2013-09-21 13:24:15.329949897 +0100
-@@ -18,17 +18,18 @@
- * Author: Sergey Udaltsov <svu@gnome.org>
- *
- */
--#include "config.h"
-+
- #include "cc-region-panel.h"
-+#include <config.h>
- #include <gtk/gtk.h>
- #include <glib/gi18n-lib.h>
-
--#include "cinnamon-region-panel-xkb.h"
-+#include "cinnamon-region-panel-input.h"
- #include "cinnamon-region-panel-lang.h"
- #include "cinnamon-region-panel-formats.h"
- #include "cinnamon-region-panel-system.h"
-
--G_DEFINE_DYNAMIC_TYPE (CcRegionPanel, cc_region_panel, CC_TYPE_PANEL)
-+CC_PANEL_REGISTER (CcRegionPanel, cc_region_panel)
-
- #define REGION_PANEL_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_REGION_PANEL, CcRegionPanelPrivate))
-
-@@ -48,14 +49,6 @@ enum {
- SYSTEM_PAGE
- };
-
--
--static gboolean
--languages_link_cb (GtkButton *button, gpointer user_data)
--{
-- g_spawn_command_line_async ("gnome-language-selector", NULL);
-- return TRUE;
--}
--
- static void
- cc_region_panel_set_page (CcRegionPanel *panel,
- const char *page)
-@@ -116,13 +109,22 @@ cc_region_panel_finalize (GObject * obje
- G_OBJECT_CLASS (cc_region_panel_parent_class)->finalize (object);
- }
-
-+static const char *
-+cc_region_panel_get_help_uri (CcPanel *panel)
-+{
-+ return "help:gnome-help/prefs-language";
-+}
-+
- static void
- cc_region_panel_class_init (CcRegionPanelClass * klass)
- {
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+ CcPanelClass * panel_class = CC_PANEL_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (CcRegionPanelPrivate));
-
-+ panel_class->get_help_uri = cc_region_panel_get_help_uri;
-+
- object_class->set_property = cc_region_panel_set_property;
- object_class->finalize = cc_region_panel_finalize;
-
-@@ -130,22 +132,14 @@ cc_region_panel_class_init (CcRegionPane
- }
-
- static void
--cc_region_panel_class_finalize (CcRegionPanelClass * klass)
--{
--}
--
--static void
- cc_region_panel_init (CcRegionPanel * self)
- {
- CcRegionPanelPrivate *priv;
- GtkWidget *prefs_widget;
-- const char *desktop;
- GError *error = NULL;
-
- priv = self->priv = REGION_PANEL_PRIVATE (self);
-
-- desktop = g_getenv ("XDG_CURRENT_DESKTOP");
--
- priv->builder = gtk_builder_new ();
- gtk_builder_set_translation_domain (priv->builder, GETTEXT_PACKAGE);
- gtk_builder_add_from_file (priv->builder,
-@@ -157,29 +151,16 @@ cc_region_panel_init (CcRegionPanel * se
- return;
- }
-
-- prefs_widget = (GtkWidget *) gtk_builder_get_object (priv->builder,
-- "region_notebook");
--
-+ prefs_widget = (GtkWidget *) gtk_builder_get_object (priv->builder,
-+ "region_notebook");
- gtk_widget_set_size_request (GTK_WIDGET (prefs_widget), -1, 400);
-
- gtk_widget_reparent (prefs_widget, GTK_WIDGET (self));
-
-- setup_xkb_tabs (priv->builder);
--
-- setup_language (priv->builder);
-- setup_formats (priv->builder);
-- setup_system (priv->builder);
--
-- /* set screen link */
--
-- GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
-- "get_languages_button"));
--
-- gtk_button_set_label (GTK_BUTTON (widget), _("Get more languages..."));
--
-- g_signal_connect (widget, "clicked",
-- G_CALLBACK (languages_link_cb),
-- self);
-+ setup_input_tabs (priv->builder, self);
-+ setup_language (priv->builder);
-+ setup_formats (priv->builder);
-+ setup_system (priv->builder);
- }
-
- void
-@@ -187,6 +168,7 @@ cc_region_panel_register (GIOModule * mo
- {
- bindtextdomain (GETTEXT_PACKAGE, "/usr/share/cinnamon/locale");
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-+
- cc_region_panel_register_type (G_TYPE_MODULE (module));
- g_io_extension_point_implement (CC_SHELL_PANEL_EXTENSION_POINT,
- CC_TYPE_REGION_PANEL,
-diff -uNrp a/panels/region/cinnamon-region-panel-formats.h b/panels/region/cinnamon-region-panel-formats.h
---- a/panels/region/cinnamon-region-panel-formats.h 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-formats.h 2013-09-21 13:24:15.332949789 +0100
-@@ -19,8 +19,8 @@
- * 02110-1335, USA.
- */
-
--#ifndef __GNOME_REGION_PANEL_FORMATS_H
--#define __GNOME_REGION_PANEL_FORMATS_H
-+#ifndef __CINNAMON_REGION_PANEL_FORMATS_H
-+#define __CINNAMON_REGION_PANEL_FORMATS_H
-
- #include <gtk/gtk.h>
-
-diff -uNrp a/panels/region/cinnamon-region-panel-input.c b/panels/region/cinnamon-region-panel-input.c
---- a/panels/region/cinnamon-region-panel-input.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-input.c 2013-09-21 13:24:15.338949572 +0100
-@@ -0,0 +1,1563 @@
-+/*
-+ * Copyright (C) 2011 Red Hat, Inc.
-+ *
-+ * Written by: Matthias Clasen <mclasen@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-+ * 02110-1335, USA.
-+ */
-+
-+#include <config.h>
-+
-+#include <string.h>
-+
-+#include <glib.h>
-+#include <glib/gi18n.h>
-+#include <gio/gdesktopappinfo.h>
-+
-+#define GNOME_DESKTOP_USE_UNSTABLE_API
-+#include <libcinnamon-desktop/gnome-xkb-info.h>
-+
-+#ifdef HAVE_IBUS
-+#include <ibus.h>
-+#endif
-+
-+#include "gdm-languages.h"
-+#include "cinnamon-region-panel-input.h"
-+
-+#define WID(s) GTK_WIDGET(gtk_builder_get_object (builder, s))
-+
-+#define GNOME_DESKTOP_INPUT_SOURCES_DIR "org.cinnamon.desktop.input-sources"
-+
-+#define KEY_CURRENT_INPUT_SOURCE "current"
-+#define KEY_INPUT_SOURCES "sources"
-+
-+#define INPUT_SOURCE_TYPE_XKB "xkb"
-+#define INPUT_SOURCE_TYPE_IBUS "ibus"
-+
-+enum {
-+ NAME_COLUMN,
-+ TYPE_COLUMN,
-+ ID_COLUMN,
-+ SETUP_COLUMN,
-+ N_COLUMNS
-+};
-+
-+static GSettings *input_sources_settings = NULL;
-+static GnomeXkbInfo *xkb_info = NULL;
-+static GtkWidget *input_chooser = NULL; /* weak pointer */
-+
-+#ifdef HAVE_IBUS
-+static IBusBus *ibus = NULL;
-+static GHashTable *ibus_engines = NULL;
-+static GCancellable *ibus_cancellable = NULL;
-+static guint shell_name_watch_id = 0;
-+
-+static const gchar *supported_ibus_engines[] = {
-+ /* Simplified Chinese */
-+ "pinyin",
-+ "bopomofo",
-+ "wubi",
-+ "erbi",
-+ /* Default in Fedora, where ibus-libpinyin replaces ibus-pinyin */
-+ "libpinyin",
-+ "libbopomofo",
-+
-+ /* Traditional Chinese */
-+ /* https://bugzilla.gnome.org/show_bug.cgi?id=680840 */
-+ "chewing",
-+ "cangjie5",
-+ "cangjie3",
-+ "quick5",
-+ "quick3",
-+ "stroke5",
-+
-+ /* Japanese */
-+ "anthy",
-+ "mozc-jp",
-+ "skk",
-+
-+ /* Korean */
-+ "hangul",
-+
-+ /* Thai */
-+ "m17n:th:kesmanee",
-+ "m17n:th:pattachote",
-+ "m17n:th:tis820",
-+
-+ /* Vietnamese */
-+ "m17n:vi:tcvn",
-+ "m17n:vi:telex",
-+ "m17n:vi:viqr",
-+ "m17n:vi:vni",
-+ "Unikey",
-+
-+ /* Sinhala */
-+ "m17n:si:wijesekera",
-+ "m17n:si:phonetic-dynamic",
-+ "m17n:si:trans",
-+ "sayura",
-+
-+ /* Indic */
-+ /* https://fedoraproject.org/wiki/I18N/Indic#Keyboard_Layouts */
-+
-+ /* Assamese */
-+ "m17n:as:phonetic",
-+ "m17n:as:inscript",
-+ "m17n:as:itrans",
-+
-+ /* Bengali */
-+ "m17n:bn:inscript",
-+ "m17n:bn:itrans",
-+ "m17n:bn:probhat",
-+
-+ /* Gujarati */
-+ "m17n:gu:inscript",
-+ "m17n:gu:itrans",
-+ "m17n:gu:phonetic",
-+
-+ /* Hindi */
-+ "m17n:hi:inscript",
-+ "m17n:hi:itrans",
-+ "m17n:hi:phonetic",
-+ "m17n:hi:remington",
-+ "m17n:hi:typewriter",
-+ "m17n:hi:vedmata",
-+
-+ /* Kannada */
-+ "m17n:kn:kgp",
-+ "m17n:kn:inscript",
-+ "m17n:kn:itrans",
-+
-+ /* Kashmiri */
-+ "m17n:ks:inscript",
-+
-+ /* Maithili */
-+ "m17n:mai:inscript",
-+
-+ /* Malayalam */
-+ "m17n:ml:inscript",
-+ "m17n:ml:itrans",
-+ "m17n:ml:mozhi",
-+ "m17n:ml:swanalekha",
-+
-+ /* Marathi */
-+ "m17n:mr:inscript",
-+ "m17n:mr:itrans",
-+ "m17n:mr:phonetic",
-+
-+ /* Nepali */
-+ "m17n:ne:rom",
-+ "m17n:ne:trad",
-+
-+ /* Oriya */
-+ "m17n:or:inscript",
-+ "m17n:or:itrans",
-+ "m17n:or:phonetic",
-+
-+ /* Punjabi */
-+ "m17n:pa:inscript",
-+ "m17n:pa:itrans",
-+ "m17n:pa:phonetic",
-+ "m17n:pa:jhelum",
-+
-+ /* Sanskrit */
-+ "m17n:sa:harvard-kyoto",
-+
-+ /* Sindhi */
-+ "m17n:sd:inscript",
-+
-+ /* Tamil */
-+ "m17n:ta:tamil99",
-+ "m17n:ta:inscript",
-+ "m17n:ta:itrans",
-+ "m17n:ta:phonetic",
-+ "m17n:ta:lk-renganathan",
-+ "m17n:ta:vutam",
-+ "m17n:ta:typewriter",
-+
-+ /* Telugu */
-+ "m17n:te:inscript",
-+ "m17n:te:apple",
-+ "m17n:te:pothana",
-+ "m17n:te:rts",
-+
-+ /* Urdu */
-+ "m17n:ur:phonetic",
-+
-+ /* Inscript2 - https://bugzilla.gnome.org/show_bug.cgi?id=684854 */
-+ "m17n:as:inscript2",
-+ "m17n:bn:inscript2",
-+ "m17n:brx:inscript2-deva",
-+ "m17n:doi:inscript2-deva",
-+ "m17n:gu:inscript2",
-+ "m17n:hi:inscript2",
-+ "m17n:kn:inscript2",
-+ "m17n:kok:inscript2-deva",
-+ "m17n:mai:inscript2",
-+ "m17n:ml:inscript2",
-+ "m17n:mni:inscript2-beng",
-+ "m17n:mni:inscript2-mtei",
-+ "m17n:mr:inscript2",
-+ "m17n:ne:inscript2-deva",
-+ "m17n:or:inscript2",
-+ "m17n:pa:inscript2-guru",
-+ "m17n:sa:inscript2",
-+ "m17n:sat:inscript2-deva",
-+ "m17n:sat:inscript2-olck",
-+ "m17n:sd:inscript2-deva",
-+ "m17n:ta:inscript2",
-+ "m17n:te:inscript2",
-+
-+ /* No corresponding XKB map available for the languages */
-+
-+ /* Chinese Yi */
-+ "m17n:ii:phonetic",
-+
-+ /* Tai-Viet */
-+ "m17n:tai:sonla",
-+
-+ /* Kazakh in Arabic script */
-+ "m17n:kk:arabic",
-+
-+ /* Yiddish */
-+ "m17n:yi:yivo",
-+
-+ /* Canadian Aboriginal languages */
-+ "m17n:ath:phonetic",
-+ "m17n:bla:phonetic",
-+ "m17n:cr:western",
-+ "m17n:iu:phonetic",
-+ "m17n:nsk:phonetic",
-+ "m17n:oj:phonetic",
-+
-+ /* Non-trivial engines, like transliteration-based instead of
-+ keymap-based. Confirmation needed that the engines below are
-+ actually used by local language users. */
-+
-+ /* Tibetan */
-+ "m17n:bo:ewts",
-+ "m17n:bo:tcrc",
-+ "m17n:bo:wylie",
-+
-+ /* Esperanto */
-+ "m17n:eo:h-f",
-+ "m17n:eo:h",
-+ "m17n:eo:plena",
-+ "m17n:eo:q",
-+ "m17n:eo:vi",
-+ "m17n:eo:x",
-+
-+ /* Amharic */
-+ "m17n:am:sera",
-+
-+ /* Russian */
-+ "m17n:ru:translit",
-+
-+ /* Classical Greek */
-+ "m17n:grc:mizuochi",
-+
-+ /* Lao */
-+ "m17n:lo:lrt",
-+
-+ /* Postfix modifier input methods */
-+ "m17n:da:post",
-+ "m17n:sv:post",
-+ NULL
-+};
-+#endif /* HAVE_IBUS */
-+
-+static void populate_model (GtkListStore *store,
-+ GtkListStore *active_sources_store);
-+static GtkWidget *input_chooser_new (GtkWindow *main_window,
-+ GtkListStore *active_sources);
-+static gboolean input_chooser_get_selected (GtkWidget *chooser,
-+ GtkTreeModel **model,
-+ GtkTreeIter *iter);
-+static GtkTreeModel *tree_view_get_actual_model (GtkTreeView *tv);
-+
-+static gboolean
-+strv_contains (const gchar * const *strv,
-+ const gchar *str)
-+{
-+ const gchar * const *p = strv;
-+ for (p = strv; *p; p++)
-+ if (g_strcmp0 (*p, str) == 0)
-+ return TRUE;
-+
-+ return FALSE;
-+}
-+
-+#ifdef HAVE_IBUS
-+static void
-+clear_ibus (void)
-+{
-+ if (shell_name_watch_id > 0)
-+ {
-+ g_bus_unwatch_name (shell_name_watch_id);
-+ shell_name_watch_id = 0;
-+ }
-+ g_cancellable_cancel (ibus_cancellable);
-+ g_clear_object (&ibus_cancellable);
-+ g_clear_pointer (&ibus_engines, g_hash_table_destroy);
-+ g_clear_object (&ibus);
-+}
-+
-+static gchar *
-+engine_get_display_name (IBusEngineDesc *engine_desc)
-+{
-+ const gchar *name;
-+ const gchar *language_code;
-+ const gchar *language;
-+ gchar *display_name;
-+
-+ name = ibus_engine_desc_get_longname (engine_desc);
-+ language_code = ibus_engine_desc_get_language (engine_desc);
-+ language = ibus_get_language_name (language_code);
-+
-+ display_name = g_strdup_printf ("%s (%s)", language, name);
-+
-+ return display_name;
-+}
-+
-+static GDesktopAppInfo *
-+setup_app_info_for_id (const gchar *id)
-+{
-+ GDesktopAppInfo *app_info;
-+ gchar *desktop_file_name;
-+ gchar **strv;
-+
-+ strv = g_strsplit (id, ":", 2);
-+ desktop_file_name = g_strdup_printf ("ibus-setup-%s.desktop", strv[0]);
-+ g_strfreev (strv);
-+
-+ app_info = g_desktop_app_info_new (desktop_file_name);
-+ g_free (desktop_file_name);
-+
-+ return app_info;
-+}
-+
-+static void
-+input_chooser_repopulate (GtkListStore *active_sources_store)
-+{
-+ GtkBuilder *builder;
-+ GtkListStore *model;
-+
-+ if (!input_chooser)
-+ return;
-+
-+ builder = g_object_get_data (G_OBJECT (input_chooser), "builder");
-+ model = GTK_LIST_STORE (gtk_builder_get_object (builder, "input_source_model"));
-+
-+ gtk_list_store_clear (model);
-+ populate_model (model, active_sources_store);
-+}
-+
-+static void
-+update_ibus_active_sources (GtkBuilder *builder)
-+{
-+ GtkTreeView *tv;
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ gchar *type, *id;
-+ gboolean ret;
-+
-+ tv = GTK_TREE_VIEW (WID ("active_input_sources"));
-+ model = tree_view_get_actual_model (tv);
-+
-+ ret = gtk_tree_model_get_iter_first (model, &iter);
-+ while (ret)
-+ {
-+ gtk_tree_model_get (model, &iter,
-+ TYPE_COLUMN, &type,
-+ ID_COLUMN, &id,
-+ -1);
-+
-+ if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS))
-+ {
-+ IBusEngineDesc *engine_desc = NULL;
-+ GDesktopAppInfo *app_info = NULL;
-+ gchar *display_name = NULL;
-+
-+ engine_desc = g_hash_table_lookup (ibus_engines, id);
-+ if (engine_desc)
-+ {
-+ display_name = engine_get_display_name (engine_desc);
-+ app_info = setup_app_info_for_id (id);
-+
-+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-+ NAME_COLUMN, display_name,
-+ SETUP_COLUMN, app_info,
-+ -1);
-+ g_free (display_name);
-+ if (app_info)
-+ g_object_unref (app_info);
-+ }
-+ }
-+
-+ g_free (type);
-+ g_free (id);
-+
-+ ret = gtk_tree_model_iter_next (model, &iter);
-+ }
-+
-+ input_chooser_repopulate (GTK_LIST_STORE (model));
-+}
-+
-+static void
-+fetch_ibus_engines_result (GObject *object,
-+ GAsyncResult *result,
-+ GtkBuilder *builder)
-+{
-+ gboolean show_all_sources;
-+ GList *list, *l;
-+ GError *error;
-+
-+ error = NULL;
-+ list = ibus_bus_list_engines_async_finish (ibus, result, &error);
-+
-+ g_clear_object (&ibus_cancellable);
-+
-+ if (!list && error)
-+ {
-+ g_warning ("Couldn't finish IBus request: %s", error->message);
-+ g_error_free (error);
-+ return;
-+ }
-+
-+ show_all_sources = g_settings_get_boolean (input_sources_settings, "show-all-sources");
-+
-+ /* Maps engine ids to engine description objects */
-+ ibus_engines = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref);
-+
-+ for (l = list; l; l = l->next)
-+ {
-+ IBusEngineDesc *engine = l->data;
-+ const gchar *engine_id = ibus_engine_desc_get_name (engine);
-+
-+ if (show_all_sources || strv_contains (supported_ibus_engines, engine_id))
-+ g_hash_table_replace (ibus_engines, (gpointer)engine_id, engine);
-+ else
-+ g_object_unref (engine);
-+ }
-+ g_list_free (list);
-+
-+ update_ibus_active_sources (builder);
-+}
-+
-+static void
-+fetch_ibus_engines (GtkBuilder *builder)
-+{
-+ ibus_cancellable = g_cancellable_new ();
-+
-+ ibus_bus_list_engines_async (ibus,
-+ -1,
-+ ibus_cancellable,
-+ (GAsyncReadyCallback)fetch_ibus_engines_result,
-+ builder);
-+
-+ /* We've got everything we needed, don't want to be called again. */
-+ g_signal_handlers_disconnect_by_func (ibus, fetch_ibus_engines, builder);
-+}
-+
-+static void
-+maybe_start_ibus (void)
-+{
-+ /* IBus doesn't export API in the session bus. The only thing
-+ * we have there is a well known name which we can use as a
-+ * sure-fire way to activate it. */
-+ g_bus_unwatch_name (g_bus_watch_name (G_BUS_TYPE_SESSION,
-+ IBUS_SERVICE_IBUS,
-+ G_BUS_NAME_WATCHER_FLAGS_AUTO_START,
-+ NULL,
-+ NULL,
-+ NULL,
-+ NULL));
-+}
-+
-+static void
-+on_shell_appeared (GDBusConnection *connection,
-+ const gchar *name,
-+ const gchar *name_owner,
-+ gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+
-+ if (!ibus)
-+ {
-+ ibus = ibus_bus_new ();
-+ if (ibus_bus_is_connected (ibus))
-+ fetch_ibus_engines (builder);
-+ else
-+ g_signal_connect_swapped (ibus, "connected",
-+ G_CALLBACK (fetch_ibus_engines), builder);
-+ }
-+ maybe_start_ibus ();
-+}
-+#endif /* HAVE_IBUS */
-+
-+static gboolean
-+add_source_to_table (GtkTreeModel *model,
-+ GtkTreePath *path,
-+ GtkTreeIter *iter,
-+ gpointer data)
-+{
-+ GHashTable *hash = data;
-+ gchar *type;
-+ gchar *id;
-+
-+ gtk_tree_model_get (model, iter,
-+ TYPE_COLUMN, &type,
-+ ID_COLUMN, &id,
-+ -1);
-+
-+ g_hash_table_add (hash, g_strconcat (type, id, NULL));
-+
-+ g_free (type);
-+ g_free (id);
-+
-+ return FALSE;
-+}
-+
-+static void
-+populate_model (GtkListStore *store,
-+ GtkListStore *active_sources_store)
-+{
-+ GHashTable *active_sources_table;
-+ GtkTreeIter iter;
-+ const gchar *name;
-+ GList *sources, *tmp;
-+ gchar *source_id = NULL;
-+
-+ active_sources_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-+
-+ gtk_tree_model_foreach (GTK_TREE_MODEL (active_sources_store),
-+ add_source_to_table,
-+ active_sources_table);
-+
-+ sources = gnome_xkb_info_get_all_layouts (xkb_info);
-+
-+ for (tmp = sources; tmp; tmp = tmp->next)
-+ {
-+ g_free (source_id);
-+ source_id = g_strconcat (INPUT_SOURCE_TYPE_XKB, tmp->data, NULL);
-+
-+ if (g_hash_table_contains (active_sources_table, source_id))
-+ continue;
-+
-+ gnome_xkb_info_get_layout_info (xkb_info, (const gchar *)tmp->data,
-+ &name, NULL, NULL, NULL);
-+
-+ gtk_list_store_append (store, &iter);
-+ gtk_list_store_set (store, &iter,
-+ NAME_COLUMN, name,
-+ TYPE_COLUMN, INPUT_SOURCE_TYPE_XKB,
-+ ID_COLUMN, tmp->data,
-+ -1);
-+ }
-+ g_free (source_id);
-+
-+ g_list_free (sources);
-+
-+#ifdef HAVE_IBUS
-+ if (ibus_engines)
-+ {
-+ gchar *display_name;
-+
-+ sources = g_hash_table_get_keys (ibus_engines);
-+
-+ source_id = NULL;
-+ for (tmp = sources; tmp; tmp = tmp->next)
-+ {
-+ g_free (source_id);
-+ source_id = g_strconcat (INPUT_SOURCE_TYPE_IBUS, tmp->data, NULL);
-+
-+ if (g_hash_table_contains (active_sources_table, source_id))
-+ continue;
-+
-+ display_name = engine_get_display_name (g_hash_table_lookup (ibus_engines, tmp->data));
-+
-+ gtk_list_store_append (store, &iter);
-+ gtk_list_store_set (store, &iter,
-+ NAME_COLUMN, display_name,
-+ TYPE_COLUMN, INPUT_SOURCE_TYPE_IBUS,
-+ ID_COLUMN, tmp->data,
-+ -1);
-+ g_free (display_name);
-+ }
-+ g_free (source_id);
-+
-+ g_list_free (sources);
-+ }
-+#endif
-+
-+ g_hash_table_destroy (active_sources_table);
-+}
-+
-+static void
-+populate_with_active_sources (GtkListStore *store)
-+{
-+ GVariant *sources;
-+ GVariantIter iter;
-+ const gchar *name;
-+ const gchar *type;
-+ const gchar *id;
-+ gchar *display_name;
-+ GDesktopAppInfo *app_info;
-+ GtkTreeIter tree_iter;
-+
-+ sources = g_settings_get_value (input_sources_settings, KEY_INPUT_SOURCES);
-+
-+ g_variant_iter_init (&iter, sources);
-+ while (g_variant_iter_next (&iter, "(&s&s)", &type, &id))
-+ {
-+ display_name = NULL;
-+ app_info = NULL;
-+
-+ if (g_str_equal (type, INPUT_SOURCE_TYPE_XKB))
-+ {
-+ gnome_xkb_info_get_layout_info (xkb_info, id, &name, NULL, NULL, NULL);
-+ if (!name)
-+ {
-+ g_warning ("Couldn't find XKB input source '%s'", id);
-+ continue;
-+ }
-+ display_name = g_strdup (name);
-+ }
-+ else if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS))
-+ {
-+#ifdef HAVE_IBUS
-+ IBusEngineDesc *engine_desc = NULL;
-+
-+ if (ibus_engines)
-+ engine_desc = g_hash_table_lookup (ibus_engines, id);
-+
-+ if (engine_desc)
-+ {
-+ display_name = engine_get_display_name (engine_desc);
-+ app_info = setup_app_info_for_id (id);
-+ }
-+#else
-+ g_warning ("IBus input source type specified but IBus support was not compiled");
-+ continue;
-+#endif
-+ }
-+ else
-+ {
-+ g_warning ("Unknown input source type '%s'", type);
-+ continue;
-+ }
-+
-+ gtk_list_store_append (store, &tree_iter);
-+ gtk_list_store_set (store, &tree_iter,
-+ NAME_COLUMN, display_name,
-+ TYPE_COLUMN, type,
-+ ID_COLUMN, id,
-+ SETUP_COLUMN, app_info,
-+ -1);
-+ g_free (display_name);
-+ if (app_info)
-+ g_object_unref (app_info);
-+ }
-+
-+ g_variant_unref (sources);
-+}
-+
-+static void
-+update_configuration (GtkTreeModel *model)
-+{
-+ GtkTreeIter iter;
-+ gchar *type;
-+ gchar *id;
-+ GVariantBuilder builder;
-+ GVariant *old_sources;
-+ const gchar *old_current_type;
-+ const gchar *old_current_id;
-+ guint old_current_index;
-+ guint old_n_sources;
-+ guint index;
-+
-+ old_sources = g_settings_get_value (input_sources_settings, KEY_INPUT_SOURCES);
-+ old_current_index = g_settings_get_uint (input_sources_settings, KEY_CURRENT_INPUT_SOURCE);
-+ old_n_sources = g_variant_n_children (old_sources);
-+
-+ if (old_n_sources > 0 && old_current_index < old_n_sources)
-+ {
-+ g_variant_get_child (old_sources,
-+ old_current_index,
-+ "(&s&s)",
-+ &old_current_type,
-+ &old_current_id);
-+ }
-+ else
-+ {
-+ old_current_type = "";
-+ old_current_id = "";
-+ }
-+
-+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
-+ index = 0;
-+ gtk_tree_model_get_iter_first (model, &iter);
-+ do
-+ {
-+ gtk_tree_model_get (model, &iter,
-+ TYPE_COLUMN, &type,
-+ ID_COLUMN, &id,
-+ -1);
-+ if (index != old_current_index &&
-+ g_str_equal (type, old_current_type) &&
-+ g_str_equal (id, old_current_id))
-+ {
-+ g_settings_set_uint (input_sources_settings, KEY_CURRENT_INPUT_SOURCE, index);
-+ }
-+ g_variant_builder_add (&builder, "(ss)", type, id);
-+ g_free (type);
-+ g_free (id);
-+ index += 1;
-+ }
-+ while (gtk_tree_model_iter_next (model, &iter));
-+
-+ g_settings_set_value (input_sources_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
-+ g_settings_apply (input_sources_settings);
-+
-+ g_variant_unref (old_sources);
-+}
-+
-+static gboolean
-+get_selected_iter (GtkBuilder *builder,
-+ GtkTreeModel **model,
-+ GtkTreeIter *iter)
-+{
-+ GtkTreeSelection *selection;
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("active_input_sources")));
-+
-+ return gtk_tree_selection_get_selected (selection, model, iter);
-+}
-+
-+static gint
-+idx_from_model_iter (GtkTreeModel *model,
-+ GtkTreeIter *iter)
-+{
-+ GtkTreePath *path;
-+ gint idx;
-+
-+ path = gtk_tree_model_get_path (model, iter);
-+ if (path == NULL)
-+ return -1;
-+
-+ idx = gtk_tree_path_get_indices (path)[0];
-+ gtk_tree_path_free (path);
-+
-+ return idx;
-+}
-+
-+static void
-+update_button_sensitivity (GtkBuilder *builder)
-+{
-+ GtkWidget *remove_button;
-+ GtkWidget *up_button;
-+ GtkWidget *down_button;
-+ GtkWidget *show_button;
-+ GtkWidget *settings_button;
-+ GtkTreeView *tv;
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ gint n_active;
-+ gint index;
-+ gboolean settings_sensitive;
-+ GDesktopAppInfo *app_info;
-+
-+ remove_button = WID("input_source_remove");
-+ show_button = WID("input_source_show");
-+ up_button = WID("input_source_move_up");
-+ down_button = WID("input_source_move_down");
-+ settings_button = WID("input_source_settings");
-+
-+ tv = GTK_TREE_VIEW (WID ("active_input_sources"));
-+ n_active = gtk_tree_model_iter_n_children (gtk_tree_view_get_model (tv), NULL);
-+
-+ if (get_selected_iter (builder, &model, &iter))
-+ {
-+ index = idx_from_model_iter (model, &iter);
-+ gtk_tree_model_get (model, &iter, SETUP_COLUMN, &app_info, -1);
-+ }
-+ else
-+ {
-+ index = -1;
-+ app_info = NULL;
-+ }
-+
-+ settings_sensitive = (index >= 0 && app_info != NULL);
-+
-+ if (app_info)
-+ g_object_unref (app_info);
-+
-+ gtk_widget_set_sensitive (remove_button, index >= 0 && n_active > 1);
-+ gtk_widget_set_sensitive (show_button, index >= 0);
-+ gtk_widget_set_sensitive (up_button, index > 0);
-+ gtk_widget_set_sensitive (down_button, index >= 0 && index < n_active - 1);
-+ gtk_widget_set_sensitive (settings_button, settings_sensitive);
-+}
-+
-+static void
-+set_selected_path (GtkBuilder *builder,
-+ GtkTreePath *path)
-+{
-+ GtkTreeSelection *selection;
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("active_input_sources")));
-+
-+ gtk_tree_selection_select_path (selection, path);
-+}
-+
-+static GtkTreeModel *
-+tree_view_get_actual_model (GtkTreeView *tv)
-+{
-+ GtkTreeModel *filtered_store;
-+
-+ filtered_store = gtk_tree_view_get_model (tv);
-+
-+ return gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filtered_store));
-+}
-+
-+static void
-+chooser_response (GtkWidget *chooser, gint response_id, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+
-+ if (response_id == GTK_RESPONSE_OK)
-+ {
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+
-+ if (input_chooser_get_selected (chooser, &model, &iter))
-+ {
-+ GtkTreeView *tv;
-+ GtkListStore *child_model;
-+ GtkTreeIter child_iter, filter_iter;
-+ gchar *name;
-+ gchar *type;
-+ gchar *id;
-+ GDesktopAppInfo *app_info = NULL;
-+
-+ gtk_tree_model_get (model, &iter,
-+ NAME_COLUMN, &name,
-+ TYPE_COLUMN, &type,
-+ ID_COLUMN, &id,
-+ -1);
-+
-+#ifdef HAVE_IBUS
-+ if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS))
-+ app_info = setup_app_info_for_id (id);
-+#endif
-+
-+ tv = GTK_TREE_VIEW (WID ("active_input_sources"));
-+ child_model = GTK_LIST_STORE (tree_view_get_actual_model (tv));
-+
-+ gtk_list_store_append (child_model, &child_iter);
-+
-+ gtk_list_store_set (child_model, &child_iter,
-+ NAME_COLUMN, name,
-+ TYPE_COLUMN, type,
-+ ID_COLUMN, id,
-+ SETUP_COLUMN, app_info,
-+ -1);
-+ g_free (name);
-+ g_free (type);
-+ g_free (id);
-+ if (app_info)
-+ g_object_unref (app_info);
-+
-+ gtk_tree_model_filter_convert_child_iter_to_iter (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model (tv)),
-+ &filter_iter,
-+ &child_iter);
-+ gtk_tree_selection_select_iter (gtk_tree_view_get_selection (tv), &filter_iter);
-+
-+ update_button_sensitivity (builder);
-+ update_configuration (GTK_TREE_MODEL (child_model));
-+ }
-+ else
-+ {
-+ g_debug ("nothing selected, nothing added");
-+ }
-+ }
-+
-+ gtk_widget_destroy (GTK_WIDGET (chooser));
-+}
-+
-+static void
-+add_input (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkWidget *chooser;
-+ GtkWidget *toplevel;
-+ GtkWidget *treeview;
-+ GtkListStore *active_sources;
-+
-+ g_debug ("add an input source");
-+
-+ toplevel = gtk_widget_get_toplevel (WID ("region_notebook"));
-+ treeview = WID ("active_input_sources");
-+ active_sources = GTK_LIST_STORE (tree_view_get_actual_model (GTK_TREE_VIEW (treeview)));
-+
-+ chooser = input_chooser_new (GTK_WINDOW (toplevel), active_sources);
-+ g_signal_connect (chooser, "response",
-+ G_CALLBACK (chooser_response), builder);
-+}
-+
-+static void
-+remove_selected_input (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkTreeModel *model;
-+ GtkTreeModel *child_model;
-+ GtkTreeIter iter;
-+ GtkTreeIter child_iter;
-+ GtkTreePath *path;
-+
-+ g_debug ("remove selected input source");
-+
-+ if (get_selected_iter (builder, &model, &iter) == FALSE)
-+ return;
-+
-+ path = gtk_tree_model_get_path (model, &iter);
-+
-+ child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
-+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-+ &child_iter,
-+ &iter);
-+ gtk_list_store_remove (GTK_LIST_STORE (child_model), &child_iter);
-+
-+ if (!gtk_tree_model_get_iter (model, &iter, path))
-+ gtk_tree_path_prev (path);
-+
-+ set_selected_path (builder, path);
-+
-+ gtk_tree_path_free (path);
-+
-+ update_button_sensitivity (builder);
-+ update_configuration (child_model);
-+}
-+
-+static void
-+move_selected_input_up (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkTreeModel *model;
-+ GtkTreeModel *child_model;
-+ GtkTreeIter iter, prev;
-+ GtkTreeIter child_iter, child_prev;
-+ GtkTreePath *path;
-+
-+ g_debug ("move selected input source up");
-+
-+ if (!get_selected_iter (builder, &model, &iter))
-+ return;
-+
-+ prev = iter;
-+ if (!gtk_tree_model_iter_previous (model, &prev))
-+ return;
-+
-+ path = gtk_tree_model_get_path (model, &prev);
-+
-+ child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
-+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-+ &child_iter,
-+ &iter);
-+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-+ &child_prev,
-+ &prev);
-+ gtk_list_store_swap (GTK_LIST_STORE (child_model), &child_iter, &child_prev);
-+
-+ set_selected_path (builder, path);
-+ gtk_tree_path_free (path);
-+
-+ update_button_sensitivity (builder);
-+ update_configuration (child_model);
-+}
-+
-+static void
-+move_selected_input_down (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkTreeModel *model;
-+ GtkTreeModel *child_model;
-+ GtkTreeIter iter, next;
-+ GtkTreeIter child_iter, child_next;
-+ GtkTreePath *path;
-+
-+ g_debug ("move selected input source down");
-+
-+ if (!get_selected_iter (builder, &model, &iter))
-+ return;
-+
-+ next = iter;
-+ if (!gtk_tree_model_iter_next (model, &next))
-+ return;
-+
-+ path = gtk_tree_model_get_path (model, &next);
-+
-+ child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
-+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-+ &child_iter,
-+ &iter);
-+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (model),
-+ &child_next,
-+ &next);
-+ gtk_list_store_swap (GTK_LIST_STORE (child_model), &child_iter, &child_next);
-+
-+ set_selected_path (builder, path);
-+ gtk_tree_path_free (path);
-+
-+ update_button_sensitivity (builder);
-+ update_configuration (child_model);
-+}
-+
-+static void
-+show_selected_layout (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ gchar *type;
-+ gchar *id;
-+ gchar *kbd_viewer_args;
-+ const gchar *xkb_layout;
-+ const gchar *xkb_variant;
-+
-+ g_debug ("show selected layout");
-+
-+ if (!get_selected_iter (builder, &model, &iter))
-+ return;
-+
-+ gtk_tree_model_get (model, &iter,
-+ TYPE_COLUMN, &type,
-+ ID_COLUMN, &id,
-+ -1);
-+
-+ if (g_str_equal (type, INPUT_SOURCE_TYPE_XKB))
-+ {
-+ gnome_xkb_info_get_layout_info (xkb_info, id, NULL, NULL, &xkb_layout, &xkb_variant);
-+
-+ if (!xkb_layout || !xkb_layout[0])
-+ {
-+ g_warning ("Couldn't find XKB input source '%s'", id);
-+ goto exit;
-+ }
-+ }
-+ else if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS))
-+ {
-+#ifdef HAVE_IBUS
-+ IBusEngineDesc *engine_desc = NULL;
-+
-+ if (ibus_engines)
-+ engine_desc = g_hash_table_lookup (ibus_engines, id);
-+
-+ if (engine_desc)
-+ {
-+ xkb_layout = ibus_engine_desc_get_layout (engine_desc);
-+ xkb_variant = "";
-+ }
-+ else
-+ {
-+ g_warning ("Couldn't find IBus input source '%s'", id);
-+ goto exit;
-+ }
-+#else
-+ g_warning ("IBus input source type specified but IBus support was not compiled");
-+ goto exit;
-+#endif
-+ }
-+ else
-+ {
-+ g_warning ("Unknown input source type '%s'", type);
-+ goto exit;
-+ }
-+
-+ if (xkb_variant[0])
-+ kbd_viewer_args = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"",
-+ xkb_layout, xkb_variant);
-+ else
-+ kbd_viewer_args = g_strdup_printf ("gkbd-keyboard-display -l %s",
-+ xkb_layout);
-+
-+ g_spawn_command_line_async (kbd_viewer_args, NULL);
-+
-+ g_free (kbd_viewer_args);
-+ exit:
-+ g_free (type);
-+ g_free (id);
-+}
-+
-+static void
-+show_selected_settings (GtkButton *button, gpointer data)
-+{
-+ GtkBuilder *builder = data;
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ GdkAppLaunchContext *ctx;
-+ GDesktopAppInfo *app_info;
-+ gchar *id;
-+ GError *error = NULL;
-+
-+ g_debug ("show selected layout");
-+
-+ if (!get_selected_iter (builder, &model, &iter))
-+ return;
-+
-+ gtk_tree_model_get (model, &iter, SETUP_COLUMN, &app_info, -1);
-+
-+ if (!app_info)
-+ return;
-+
-+ ctx = gdk_display_get_app_launch_context (gdk_display_get_default ());
-+ gdk_app_launch_context_set_timestamp (ctx, gtk_get_current_event_time ());
-+
-+ gtk_tree_model_get (model, &iter, ID_COLUMN, &id, -1);
-+ g_app_launch_context_setenv (G_APP_LAUNCH_CONTEXT (ctx),
-+ "IBUS_ENGINE_NAME",
-+ id);
-+ g_free (id);
-+
-+ if (!g_app_info_launch (G_APP_INFO (app_info), NULL, G_APP_LAUNCH_CONTEXT (ctx), &error))
-+ {
-+ g_warning ("Failed to launch input source setup: %s", error->message);
-+ g_error_free (error);
-+ }
-+
-+ g_object_unref (ctx);
-+ g_object_unref (app_info);
-+}
-+
-+static gboolean
-+go_to_shortcuts (GtkLinkButton *button,
-+ CcRegionPanel *panel)
-+{
-+ gchar *argv[3];
-+ argv[0] = "cinnamon-settings";
-+ argv[1] = "keyboard";
-+ argv[3] = NULL;
-+ g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
-+ return TRUE;
-+}
-+
-+static void
-+input_sources_changed (GSettings *settings,
-+ gchar *key,
-+ GtkBuilder *builder)
-+{
-+ GtkWidget *treeview;
-+ GtkTreeModel *store;
-+ GtkTreePath *path;
-+ GtkTreeIter iter;
-+ GtkTreeModel *model;
-+
-+ treeview = WID("active_input_sources");
-+ store = tree_view_get_actual_model (GTK_TREE_VIEW (treeview));
-+
-+ if (get_selected_iter (builder, &model, &iter))
-+ path = gtk_tree_model_get_path (model, &iter);
-+ else
-+ path = NULL;
-+
-+ gtk_list_store_clear (GTK_LIST_STORE (store));
-+ populate_with_active_sources (GTK_LIST_STORE (store));
-+
-+ if (path)
-+ {
-+ set_selected_path (builder, path);
-+ gtk_tree_path_free (path);
-+ }
-+}
-+
-+static void
-+update_shortcut_label (GtkWidget *widget,
-+ const char *value)
-+{
-+ char *text;
-+ guint accel_key, *keycode;
-+ GdkModifierType mods;
-+
-+ if (value == NULL || *value == '\0')
-+ {
-+ gtk_label_set_text (GTK_LABEL (widget), "\342\200\224");
-+ return;
-+ }
-+ gtk_accelerator_parse_with_keycode (value, &accel_key, &keycode, &mods);
-+ if (accel_key == 0 && keycode == NULL && mods == 0)
-+ {
-+ gtk_label_set_text (GTK_LABEL (widget), "\342\200\224");
-+ g_warning ("Failed to parse keyboard shortcut: '%s'", value);
-+ return;
-+ }
-+
-+ text = gtk_accelerator_get_label_with_keycode (gtk_widget_get_display (widget), accel_key, *keycode, mods);
-+ g_free (keycode);
-+ gtk_label_set_text (GTK_LABEL (widget), text);
-+ g_free (text);
-+}
-+
-+static void
-+update_shortcuts (GtkBuilder *builder)
-+{
-+ char *previous, *next;
-+ GSettings *settings;
-+
-+ settings = g_settings_new ("org.cinnamon.settings-daemon.plugins.media-keys");
-+
-+ previous = g_settings_get_string (settings, "switch-input-source-backward");
-+ next = g_settings_get_string (settings, "switch-input-source");
-+
-+ update_shortcut_label (WID ("prev-source-shortcut-label"), previous);
-+ update_shortcut_label (WID ("next-source-shortcut-label"), next);
-+
-+ g_free (previous);
-+ g_free (next);
-+}
-+
-+static gboolean
-+active_sources_visible_func (GtkTreeModel *model,
-+ GtkTreeIter *iter,
-+ gpointer data)
-+{
-+ gchar *display_name;
-+
-+ gtk_tree_model_get (model, iter, NAME_COLUMN, &display_name, -1);
-+
-+ if (!display_name)
-+ return FALSE;
-+
-+ g_free (display_name);
-+
-+ return TRUE;
-+}
-+
-+void
-+setup_input_tabs (GtkBuilder *builder,
-+ CcRegionPanel *panel)
-+{
-+ GtkWidget *treeview;
-+ GtkTreeViewColumn *column;
-+ GtkCellRenderer *cell;
-+ GtkListStore *store;
-+ GtkTreeModel *filtered_store;
-+ GtkTreeSelection *selection;
-+
-+ /* set up the list of active inputs */
-+ treeview = WID("active_input_sources");
-+ column = gtk_tree_view_column_new ();
-+ cell = gtk_cell_renderer_text_new ();
-+ gtk_tree_view_column_pack_start (column, cell, TRUE);
-+ gtk_tree_view_column_add_attribute (column, cell, "text", NAME_COLUMN);
-+ gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
-+
-+ store = gtk_list_store_new (N_COLUMNS,
-+ G_TYPE_STRING,
-+ G_TYPE_STRING,
-+ G_TYPE_STRING,
-+ G_TYPE_DESKTOP_APP_INFO);
-+
-+ gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store));
-+
-+ input_sources_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR);
-+ g_settings_delay (input_sources_settings);
-+ g_object_weak_ref (G_OBJECT (builder), (GWeakNotify) g_object_unref, input_sources_settings);
-+
-+ if (!xkb_info)
-+ xkb_info = gnome_xkb_info_new ();
-+
-+#ifdef HAVE_IBUS
-+ ibus_init ();
-+ shell_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
-+ "org.Cinnamon",
-+ G_BUS_NAME_WATCHER_FLAGS_NONE,
-+ on_shell_appeared,
-+ NULL,
-+ builder,
-+ NULL);
-+ g_object_weak_ref (G_OBJECT (builder), (GWeakNotify) clear_ibus, NULL);
-+#endif
-+
-+ populate_with_active_sources (store);
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
-+ g_signal_connect_swapped (selection, "changed",
-+ G_CALLBACK (update_button_sensitivity), builder);
-+
-+ /* Some input source types might have their info loaded
-+ * asynchronously. In that case we don't want to show them
-+ * immediately so we use a filter model on top of the real model
-+ * which mirrors the GSettings key. */
-+ filtered_store = gtk_tree_model_filter_new (GTK_TREE_MODEL (store), NULL);
-+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (filtered_store),
-+ active_sources_visible_func,
-+ NULL,
-+ NULL);
-+ gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), filtered_store);
-+
-+ /* set up the buttons */
-+ g_signal_connect (WID("input_source_add"), "clicked",
-+ G_CALLBACK (add_input), builder);
-+ g_signal_connect (WID("input_source_remove"), "clicked",
-+ G_CALLBACK (remove_selected_input), builder);
-+ g_signal_connect (WID("input_source_move_up"), "clicked",
-+ G_CALLBACK (move_selected_input_up), builder);
-+ g_signal_connect (WID("input_source_move_down"), "clicked",
-+ G_CALLBACK (move_selected_input_down), builder);
-+ g_signal_connect (WID("input_source_show"), "clicked",
-+ G_CALLBACK (show_selected_layout), builder);
-+ g_signal_connect (WID("input_source_settings"), "clicked",
-+ G_CALLBACK (show_selected_settings), builder);
-+
-+ /* use an em dash is no shortcut */
-+ update_shortcuts (builder);
-+
-+ g_signal_connect (WID("jump-to-shortcuts"), "activate-link",
-+ G_CALLBACK (go_to_shortcuts), panel);
-+
-+ g_signal_connect (G_OBJECT (input_sources_settings),
-+ "changed::" KEY_INPUT_SOURCES,
-+ G_CALLBACK (input_sources_changed),
-+ builder);
-+}
-+
-+static void
-+filter_clear (GtkEntry *entry,
-+ GtkEntryIconPosition icon_pos,
-+ GdkEvent *event,
-+ gpointer user_data)
-+{
-+ gtk_entry_set_text (entry, "");
-+}
-+
-+static gchar **search_pattern_list;
-+
-+static void
-+filter_changed (GtkBuilder *builder)
-+{
-+ GtkTreeModelFilter *filtered_model;
-+ GtkTreeView *tree_view;
-+ GtkTreeSelection *selection;
-+ GtkTreeIter selected_iter;
-+ GtkWidget *filter_entry;
-+ const gchar *pattern;
-+ gchar *upattern;
-+
-+ filter_entry = WID ("input_source_filter");
-+ pattern = gtk_entry_get_text (GTK_ENTRY (filter_entry));
-+ upattern = g_utf8_strup (pattern, -1);
-+ if (!g_strcmp0 (pattern, ""))
-+ g_object_set (G_OBJECT (filter_entry),
-+ "secondary-icon-name", "edit-find-symbolic",
-+ "secondary-icon-activatable", FALSE,
-+ "secondary-icon-sensitive", FALSE,
-+ NULL);
-+ else
-+ g_object_set (G_OBJECT (filter_entry),
-+ "secondary-icon-name", "edit-clear-symbolic",
-+ "secondary-icon-activatable", TRUE,
-+ "secondary-icon-sensitive", TRUE,
-+ NULL);
-+
-+ if (search_pattern_list != NULL)
-+ g_strfreev (search_pattern_list);
-+
-+ search_pattern_list = g_strsplit (upattern, " ", -1);
-+ g_free (upattern);
-+
-+ filtered_model = GTK_TREE_MODEL_FILTER (gtk_builder_get_object (builder, "filtered_input_source_model"));
-+ gtk_tree_model_filter_refilter (filtered_model);
-+
-+ tree_view = GTK_TREE_VIEW (WID ("filtered_input_source_list"));
-+ selection = gtk_tree_view_get_selection (tree_view);
-+ if (gtk_tree_selection_get_selected (selection, NULL, &selected_iter))
-+ {
-+ GtkTreePath *path = gtk_tree_model_get_path (GTK_TREE_MODEL (filtered_model),
-+ &selected_iter);
-+ gtk_tree_view_scroll_to_cell (tree_view, path, NULL, TRUE, 0.5, 0.5);
-+ gtk_tree_path_free (path);
-+ }
-+ else
-+ {
-+ GtkTreeIter iter;
-+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (filtered_model), &iter))
-+ gtk_tree_selection_select_iter (selection, &iter);
-+ }
-+}
-+
-+static void
-+selection_changed (GtkTreeSelection *selection,
-+ GtkBuilder *builder)
-+{
-+ gtk_widget_set_sensitive (WID ("ok-button"),
-+ gtk_tree_selection_get_selected (selection, NULL, NULL));
-+}
-+
-+static void
-+row_activated (GtkTreeView *tree_view,
-+ GtkTreePath *path,
-+ GtkTreeViewColumn *column,
-+ GtkBuilder *builder)
-+{
-+ GtkWidget *add_button;
-+ GtkWidget *dialog;
-+
-+ add_button = WID ("ok-button");
-+ dialog = WID ("input_source_chooser");
-+ if (gtk_widget_is_sensitive (add_button))
-+ gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-+}
-+
-+static void
-+entry_activated (GtkBuilder *builder,
-+ gpointer data)
-+{
-+ row_activated (NULL, NULL, NULL, builder);
-+}
-+
-+static gboolean
-+filter_func (GtkTreeModel *model,
-+ GtkTreeIter *iter,
-+ gpointer data)
-+{
-+ gchar *name = NULL;
-+ gchar **pattern;
-+ gboolean rv = TRUE;
-+
-+ if (search_pattern_list == NULL || search_pattern_list[0] == NULL)
-+ return TRUE;
-+
-+ gtk_tree_model_get (model, iter,
-+ NAME_COLUMN, &name,
-+ -1);
-+
-+ pattern = search_pattern_list;
-+ do {
-+ gboolean is_pattern_found = FALSE;
-+ gchar *udesc = g_utf8_strup (name, -1);
-+ if (udesc != NULL && g_strstr_len (udesc, -1, *pattern))
-+ {
-+ is_pattern_found = TRUE;
-+ }
-+ g_free (udesc);
-+
-+ if (!is_pattern_found)
-+ {
-+ rv = FALSE;
-+ break;
-+ }
-+
-+ } while (*++pattern != NULL);
-+
-+ g_free (name);
-+
-+ return rv;
-+}
-+
-+static GtkWidget *
-+input_chooser_new (GtkWindow *main_window,
-+ GtkListStore *active_sources)
-+{
-+ GtkBuilder *builder;
-+ GtkWidget *chooser;
-+ GtkWidget *filtered_list;
-+ GtkWidget *filter_entry;
-+ GtkTreeViewColumn *visible_column;
-+ GtkTreeSelection *selection;
-+ GtkListStore *model;
-+ GtkTreeModelFilter *filtered_model;
-+ GtkTreeIter iter;
-+
-+ builder = gtk_builder_new ();
-+ gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
-+ gtk_builder_add_from_file (builder,
-+ CINNAMONCC_UI_DIR "/cinnamon-region-panel-input-chooser.ui",
-+ NULL);
-+ chooser = WID ("input_source_chooser");
-+ input_chooser = chooser;
-+ g_object_add_weak_pointer (G_OBJECT (chooser), (gpointer *) &input_chooser);
-+ g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref);
-+
-+ filtered_list = WID ("filtered_input_source_list");
-+ filter_entry = WID ("input_source_filter");
-+
-+ g_object_set_data (G_OBJECT (chooser),
-+ "filtered_input_source_list", filtered_list);
-+ visible_column =
-+ gtk_tree_view_column_new_with_attributes ("Input Sources",
-+ gtk_cell_renderer_text_new (),
-+ "text", NAME_COLUMN,
-+ NULL);
-+
-+ gtk_window_set_transient_for (GTK_WINDOW (chooser), main_window);
-+
-+ gtk_tree_view_append_column (GTK_TREE_VIEW (filtered_list),
-+ visible_column);
-+ /* We handle searching ourselves, thank you. */
-+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (filtered_list), FALSE);
-+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (filtered_list), -1);
-+
-+ g_signal_connect_swapped (G_OBJECT (filter_entry), "activate",
-+ G_CALLBACK (entry_activated), builder);
-+ g_signal_connect_swapped (G_OBJECT (filter_entry), "notify::text",
-+ G_CALLBACK (filter_changed), builder);
-+
-+ g_signal_connect (G_OBJECT (filter_entry), "icon-release",
-+ G_CALLBACK (filter_clear), NULL);
-+
-+ filtered_model = GTK_TREE_MODEL_FILTER (gtk_builder_get_object (builder, "filtered_input_source_model"));
-+ model = GTK_LIST_STORE (gtk_builder_get_object (builder, "input_source_model"));
-+
-+ populate_model (model, active_sources);
-+
-+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
-+ NAME_COLUMN, GTK_SORT_ASCENDING);
-+
-+ gtk_tree_model_filter_set_visible_func (filtered_model,
-+ filter_func,
-+ NULL, NULL);
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (filtered_list));
-+
-+ g_signal_connect (G_OBJECT (selection), "changed",
-+ G_CALLBACK (selection_changed), builder);
-+
-+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (filtered_model), &iter))
-+ gtk_tree_selection_select_iter (selection, &iter);
-+
-+ g_signal_connect (G_OBJECT (filtered_list), "row-activated",
-+ G_CALLBACK (row_activated), builder);
-+
-+ gtk_widget_grab_focus (filter_entry);
-+
-+ gtk_widget_show (chooser);
-+
-+ return chooser;
-+}
-+
-+static gboolean
-+input_chooser_get_selected (GtkWidget *dialog,
-+ GtkTreeModel **model,
-+ GtkTreeIter *iter)
-+{
-+ GtkWidget *tv;
-+ GtkTreeSelection *selection;
-+
-+ tv = g_object_get_data (G_OBJECT (dialog), "filtered_input_source_list");
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv));
-+
-+ return gtk_tree_selection_get_selected (selection, model, iter);
-+}
-diff -uNrp a/panels/region/cinnamon-region-panel-input-chooser.ui b/panels/region/cinnamon-region-panel-input-chooser.ui
---- a/panels/region/cinnamon-region-panel-input-chooser.ui 1970-01-01 01:00:00.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-input-chooser.ui 2013-09-21 13:24:15.339949536 +0100
-@@ -0,0 +1,157 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<interface>
-+ <requires lib="gtk+" version="2.16"/>
-+ <object class="GtkListStore" id="input_source_model">
-+ <columns>
-+ <!-- display name -->
-+ <column type="gchararray"/>
-+ <!-- input source type -->
-+ <column type="gchararray"/>
-+ <!-- type specific identifier -->
-+ <column type="gchararray"/>
-+ </columns>
-+ </object>
-+ <object class="GtkTreeModelFilter" id="filtered_input_source_model">
-+ <property name="child_model">input_source_model</property>
-+ </object>
-+ <object class="GtkDialog" id="input_source_chooser">
-+ <property name="visible">False</property>
-+ <property name="can_focus">False</property>
-+ <property name="border_width">5</property>
-+ <property name="title" translatable="yes">Choose an input source</property>
-+ <property name="modal">True</property>
-+ <property name="window_position">center-on-parent</property>
-+ <property name="type_hint">dialog</property>
-+ <child internal-child="vbox">
-+ <object class="GtkBox" id="dialog-vbox3">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="orientation">vertical</property>
-+ <property name="spacing">2</property>
-+ <child internal-child="action_area">
-+ <object class="GtkButtonBox" id="hbtnBox">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="layout_style">end</property>
-+ <child>
-+ <object class="GtkButton" id="cancel-button">
-+ <property name="label">gtk-cancel</property>
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="can_default">True</property>
-+ <property name="receives_default">False</property>
-+ <property name="use_action_appearance">False</property>
-+ <property name="use_stock">True</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="pack_type">end</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkButton" id="ok-button">
-+ <property name="label">gtk-add</property>
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="can_default">True</property>
-+ <property name="receives_default">False</property>
-+ <property name="use_action_appearance">False</property>
-+ <property name="use_stock">True</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="pack_type">end</property>
-+ <property name="position">2</property>
-+ </packing>
-+ </child>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkVBox" id="vbox40">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="border_width">5</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <object class="GtkVBox" id="vbox1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <object class="GtkLabel" id="label1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Select an input source to add</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">0</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkScrolledWindow" id="scrolledwindow1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="hscrollbar_policy">never</property>
-+ <property name="shadow_type">etched-in</property>
-+ <property name="min_content_width">450</property>
-+ <property name="min_content_height">250</property>
-+ <child>
-+ <object class="GtkTreeView" id="filtered_input_source_list">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="model">filtered_input_source_model</property>
-+ <property name="headers_visible">False</property>
-+ <property name="search_column">0</property>
-+ </object>
-+ </child>
-+ </object>
-+ <packing>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </object>
-+ <packing>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ <property name="position">0</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkEntry" id="input_source_filter">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="invisible_char">•</property>
-+ <property name="secondary-icon-name">edit-find-symbolic</property>
-+ <property name="secondary-icon-activatable">False</property>
-+ <property name="secondary-icon-sensitive">False</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="pack_type">end</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </object>
-+ <packing>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </object>
-+ </child>
-+ <action-widgets>
-+ <action-widget response="-5">ok-button</action-widget>
-+ <action-widget response="-6">cancel-button</action-widget>
-+ </action-widgets>
-+ </object>
-+</interface>
-diff -uNrp a/panels/region/cinnamon-region-panel-input.h b/panels/region/cinnamon-region-panel-input.h
---- a/panels/region/cinnamon-region-panel-input.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-input.h 2013-09-21 13:24:15.339949536 +0100
-@@ -0,0 +1,36 @@
-+/* cinnamon-region-panel-input.h
-+ * Copyright (C) 2011 Red Hat, Inc.
-+ *
-+ * Written by Matthias Clasen
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-+ * 02110-1335, USA.
-+ */
-+
-+#ifndef __CINNAMON_KEYBOARD_PROPERTY_INPUT_H
-+#define __CINNAMON_KEYBOARD_PROPERTY_INPUT_H
-+
-+#include <gtk/gtk.h>
-+
-+#include "cc-region-panel.h"
-+
-+G_BEGIN_DECLS
-+
-+void setup_input_tabs (GtkBuilder *builder,
-+ CcRegionPanel *self);
-+
-+G_END_DECLS
-+
-+#endif /* __CINNAMON_KEYBOARD_PROPERTY_INPUT_H */
-diff -uNrp a/panels/region/cinnamon-region-panel-lang.c b/panels/region/cinnamon-region-panel-lang.c
---- a/panels/region/cinnamon-region-panel-lang.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-lang.c 2013-09-21 13:24:15.340949500 +0100
-@@ -24,7 +24,7 @@
- #endif
-
- #include <string.h>
--#include <glib/gi18n-lib.h>
-+#include <glib/gi18n.h>
-
- #include "cinnamon-region-panel-lang.h"
- #include "cinnamon-region-panel-formats.h"
-diff -uNrp a/panels/region/cinnamon-region-panel-lang.h b/panels/region/cinnamon-region-panel-lang.h
---- a/panels/region/cinnamon-region-panel-lang.h 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-lang.h 2013-09-21 13:24:15.340949500 +0100
-@@ -19,8 +19,8 @@
- * 02110-1335, USA.
- */
-
--#ifndef __GNOME_KEYBOARD_PROPERTY_LANG_H
--#define __GNOME_KEYBOARD_PROPERTY_LANG_H
-+#ifndef __CINNAMON_KEYBOARD_PROPERTY_LANG_H
-+#define __CINNAMON_KEYBOARD_PROPERTY_LANG_H
-
- #include <gtk/gtk.h>
-
-@@ -29,4 +29,4 @@ G_BEGIN_DECLS
- void setup_language (GtkBuilder *builder);
-
- G_END_DECLS
--#endif /* __GNOME_KEYBOARD_PROPERTY_LANG_H */
-+#endif /* __CINNAMON_KEYBOARD_PROPERTY_LANG_H */
-diff -uNrp a/panels/region/cinnamon-region-panel-layout-chooser.ui b/panels/region/cinnamon-region-panel-layout-chooser.ui
---- a/panels/region/cinnamon-region-panel-layout-chooser.ui 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-layout-chooser.ui 1970-01-01 01:00:00.000000000 +0100
-@@ -1,180 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<interface>
-- <requires lib="gtk+" version="2.16"/>
-- <object class="GtkListStore" id="layout_list_model">
-- <columns>
-- <!-- column-name sort_order -->
-- <column type="gchararray"/>
-- <!-- column-name visible -->
-- <column type="gchararray"/>
-- <!-- column-name xkb_id -->
-- <column type="gchararray"/>
-- <!-- column-name country_desc -->
-- <column type="gchararray"/>
-- <!-- column-name language_desc -->
-- <column type="gchararray"/>
-- </columns>
-- </object>
-- <object class="GtkTreeModelFilter" id="filtered_layout_list_model">
-- <property name="child_model">layout_list_model</property>
-- </object>
-- <object class="GtkDialog" id="xkb_layout_chooser">
-- <property name="visible">False</property>
-- <property name="can_focus">False</property>
-- <property name="border_width">5</property>
-- <property name="title" translatable="yes">Choose a Layout</property>
-- <property name="modal">True</property>
-- <property name="window_position">center-on-parent</property>
-- <property name="type_hint">dialog</property>
-- <child internal-child="vbox">
-- <object class="GtkBox" id="dialog-vbox3">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="orientation">vertical</property>
-- <property name="spacing">2</property>
-- <child internal-child="action_area">
-- <object class="GtkButtonBox" id="hbtnBox">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="layout_style">end</property>
-- <child>
-- <object class="GtkButton" id="btnPreview">
-- <property name="label" translatable="yes">Preview</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">True</property>
-- <property name="use_action_appearance">False</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">0</property>
-- <property name="secondary">True</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkButton" id="btnCancel">
-- <property name="label">gtk-cancel</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="can_default">True</property>
-- <property name="receives_default">False</property>
-- <property name="use_action_appearance">False</property>
-- <property name="use_stock">True</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="pack_type">end</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkButton" id="btnOk">
-- <property name="label">gtk-add</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="can_default">True</property>
-- <property name="receives_default">False</property>
-- <property name="use_action_appearance">False</property>
-- <property name="use_stock">True</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="pack_type">end</property>
-- <property name="position">2</property>
-- </packing>
-- </child>
-- </object>
-- </child>
-- <child>
-- <object class="GtkVBox" id="vbox40">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="border_width">5</property>
-- <property name="spacing">6</property>
-- <child>
-- <object class="GtkVBox" id="vbox1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="spacing">6</property>
-- <child>
-- <object class="GtkLabel" id="label1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="xalign">0</property>
-- <property name="label" translatable="yes">Select an input source to add</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkScrolledWindow" id="scrolledwindow1">
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="hscrollbar_policy">never</property>
-- <property name="shadow_type">etched-in</property>
-- <property name="min_content_width">450</property>
-- <property name="min_content_height">250</property>
-- <child>
-- <object class="GtkTreeView" id="xkb_filtered_layouts_list">
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="model">filtered_layout_list_model</property>
-- <property name="headers_visible">False</property>
-- <property name="search_column">0</property>
-- <child internal-child="selection">
-- <object class="GtkTreeSelection" id="treeview-selection1"/>
-- </child>
-- </object>
-- </child>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkEntry" id="xkb_layout_filter">
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="invisible_char">•</property>
-- <property name="secondary-icon-name">edit-find-symbolic</property>
-- <property name="secondary-icon-activatable">False</property>
-- <property name="secondary-icon-sensitive">False</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="pack_type">end</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </object>
-- </child>
-- <action-widgets>
-- <action-widget response="1">btnPreview</action-widget>
-- <action-widget response="-5">btnOk</action-widget>
-- <action-widget response="-6">btnCancel</action-widget>
-- </action-widgets>
-- </object>
--</interface>
-diff -uNrp a/panels/region/cinnamon-region-panel-options-dialog.ui b/panels/region/cinnamon-region-panel-options-dialog.ui
---- a/panels/region/cinnamon-region-panel-options-dialog.ui 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-options-dialog.ui 1970-01-01 01:00:00.000000000 +0100
-@@ -1,79 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<interface>
-- <requires lib="gtk+" version="2.16"/>
-- <object class="GtkDialog" id="xkb_options_dialog">
-- <property name="can_focus">False</property>
-- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-- <property name="border_width">5</property>
-- <property name="title" translatable="yes">Keyboard Layout Options</property>
-- <property name="window_position">center-on-parent</property>
-- <property name="default_width">550</property>
-- <property name="default_height">400</property>
-- <property name="type_hint">dialog</property>
-- <child internal-child="vbox">
-- <object class="GtkBox" id="dialog_vbox">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-- <property name="orientation">vertical</property>
-- <property name="spacing">2</property>
-- <child>
-- <object class="GtkScrolledWindow" id="options_scroll">
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="border_width">5</property>
-- <property name="shadow_type">out</property>
-- <child>
-- <object class="GtkViewport" id="viewport1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="shadow_type">none</property>
-- <child>
-- <object class="GtkVBox" id="options_vbox">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- </object>
-- </child>
-- </object>
-- </child>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- <child internal-child="action_area">
-- <object class="GtkButtonBox" id="dialog-action_area4">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-- <property name="layout_style">end</property>
-- <child>
-- <placeholder/>
-- </child>
-- <child>
-- <object class="GtkButton" id="button2">
-- <property name="label">gtk-close</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">True</property>
-- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-- <property name="use_action_appearance">False</property>
-- <property name="use_stock">True</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </object>
-- </child>
-- </object>
-- </child>
-- <action-widgets>
-- <action-widget response="-7">button2</action-widget>
-- </action-widgets>
-- </object>
--</interface>
-diff -uNrp a/panels/region/cinnamon-region-panel-system.c b/panels/region/cinnamon-region-panel-system.c
---- a/panels/region/cinnamon-region-panel-system.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-system.c 2013-09-21 13:24:15.342949428 +0100
-@@ -27,15 +27,18 @@
-
- #include <polkit/polkit.h>
-
--#include <glib/gi18n-lib.h>
-+#include <glib/gi18n.h>
-+
-+#define GNOME_DESKTOP_USE_UNSTABLE_API
-+#include <libcinnamon-desktop/gnome-xkb-info.h>
-
--#include <libgnomekbd/gkbd-keyboard-config.h>
- #include "cc-common-language.h"
- #include "gdm-languages.h"
- #include "cinnamon-region-panel-system.h"
--#include "cinnamon-region-panel-xkb.h"
-
--static GSettings *locale_settings, *xkb_settings;
-+#define WID(s) GTK_WIDGET(gtk_builder_get_object (dialog, s))
-+
-+static GSettings *locale_settings, *input_sources_settings;
- static GDBusProxy *localed_proxy;
- static GPermission *localed_permission;
-
-@@ -72,13 +75,14 @@ update_copy_button (GtkBuilder *dialog)
-
- button = WID ("copy_settings_button");
-
-- /* If the version of localed doesn't include layouts... */
-- if (system_input_source) {
-+ if (user_input_source && user_input_source[0]) {
- layouts_differ = (g_strcmp0 (user_input_source, system_input_source) != 0);
- if (layouts_differ == FALSE)
- layouts_differ = (g_strcmp0 (user_input_variants, system_input_variants) != 0);
-- } else
-+ } else {
-+ /* Nothing to copy */
- layouts_differ = FALSE;
-+ }
-
- if (g_strcmp0 (user_lang, system_lang) == 0 &&
- g_strcmp0 (user_region, system_region) == 0 &&
-@@ -131,61 +135,67 @@ system_update_language (GtkBuilder *dial
- }
-
- static void
--xkb_settings_changed (GSettings *settings,
-- const gchar *key,
-- GtkBuilder *dialog)
-+input_sources_changed (GSettings *settings,
-+ const gchar *key,
-+ GtkBuilder *dialog)
- {
-- guint i;
-- GString *disp, *list, *variants;
-- GtkWidget *label;
-- gchar **layouts;
--
-- layouts = g_settings_get_strv (settings, "layouts");
-- if (layouts == NULL)
-- return;
--
-- label = WID ("user_input_source");
-- disp = g_string_new ("");
-- list = g_string_new ("");
-- variants = g_string_new ("");
--
-- for (i = 0; layouts[i]; i++) {
-- gchar *utf_visible;
-- char **split;
-- gchar *layout, *variant;
--
-- utf_visible = xkb_layout_description_utf8 (layouts[i]);
-- if (disp->str[0] != '\0')
-- g_string_append (disp, ", ");
-- g_string_append (disp, utf_visible ? utf_visible : layouts[i]);
-- g_free (utf_visible);
--
-- split = g_strsplit_set (layouts[i], " \t", 2);
--
-- if (split == NULL || split[0] == NULL)
-- continue;
--
-- layout = split[0];
-- variant = split[1];
--
-- if (list->str[0] != '\0')
-- g_string_append (list, ",");
-- g_string_append (list, layout);
--
-- if (variants->str[0] != '\0')
-- g_string_append (variants, ",");
-- g_string_append (variants, variant ? variant : "");
--
-- g_strfreev (split);
-- }
-- g_strfreev (layouts);
-+ GString *disp, *list, *variants;
-+ GtkWidget *label;
-+ GnomeXkbInfo *xkb_info;
-+ GVariantIter iter;
-+ GVariant *sources;
-+ const gchar *type;
-+ const gchar *id;
-+
-+ sources = g_settings_get_value (input_sources_settings, "sources");
-+ xkb_info = gnome_xkb_info_new ();
-+
-+ label = WID ("user_input_source");
-+ disp = g_string_new ("");
-+ list = g_string_new ("");
-+ variants = g_string_new ("");
-+
-+ g_variant_iter_init (&iter, sources);
-+ while (g_variant_iter_next (&iter, "(&s&s)", &type, &id)) {
-+ /* We can't copy non-XKB layouts to the system yet */
-+ if (g_str_equal (type, "xkb")) {
-+ char **split;
-+ gchar *layout, *variant;
-+ const char *name;
-+
-+ gnome_xkb_info_get_layout_info (xkb_info, id, &name, NULL, NULL, NULL);
-+ if (disp->str[0] != '\0')
-+ g_string_append (disp, ", ");
-+ g_string_append (disp, name);
-+
-+ split = g_strsplit (id, "+", 2);
-+
-+ if (split == NULL || split[0] == NULL)
-+ continue;
-+
-+ layout = split[0];
-+ variant = split[1];
-+
-+ if (list->str[0] != '\0') {
-+ g_string_append (list, ",");
-+ g_string_append (variants, ",");
-+ }
-+ g_string_append (list, layout);
-+ g_string_append (variants, variant ? variant : "");
-+
-+ g_strfreev (split);
-+ }
-+ }
-+ g_variant_unref (sources);
-+ g_object_unref (xkb_info);
-
- g_object_set_data_full (G_OBJECT (label), "input_source", g_string_free (list, FALSE), g_free);
- g_object_set_data_full (G_OBJECT (label), "input_variants", g_string_free (variants, FALSE), g_free);
-+
- gtk_label_set_text (GTK_LABEL (label), disp->str);
- g_string_free (disp, TRUE);
-
-- update_copy_button (dialog);
-+ update_copy_button (dialog);
- }
-
- static void
-@@ -222,12 +232,13 @@ on_localed_properties_changed (GDBusProx
- const gchar **invalidated_properties,
- GtkBuilder *dialog)
- {
-- GVariant *v;
-+ GVariant *v, *w;
- GtkWidget *label;
-- const char *layout;
-+ GnomeXkbInfo *xkb_info;
- char **layouts;
-+ char **variants;
- GString *disp;
-- guint i;
-+ guint i, n;
-
- if (invalidated_properties != NULL) {
- guint i;
-@@ -236,6 +247,8 @@ on_localed_properties_changed (GDBusProx
- update_property (proxy, "Locale");
- else if (g_str_equal (invalidated_properties[i], "X11Layout"))
- update_property (proxy, "X11Layout");
-+ else if (g_str_equal (invalidated_properties[i], "X11Variant"))
-+ update_property (proxy, "X11Variant");
- }
- }
-
-@@ -290,29 +303,56 @@ on_localed_properties_changed (GDBusProx
- label = WID ("system_input_source");
- v = g_dbus_proxy_get_cached_property (proxy, "X11Layout");
- if (v) {
-- layout = g_variant_get_string (v, NULL);
-- g_object_set_data_full (G_OBJECT (label), "input_source", g_strdup (layout), g_free);
-- } else {
-+ layouts = g_strsplit (g_variant_get_string (v, NULL), ",", -1);
-+ g_object_set_data_full (G_OBJECT (label), "input_source",
-+ g_variant_dup_string (v, NULL), g_free);
-+ g_variant_unref (v);
-+ } else {
- g_object_set_data_full (G_OBJECT (label), "input_source", NULL, g_free);
- update_copy_button (dialog);
- return;
- }
-
-- disp = g_string_new ("");
-- layouts = g_strsplit (layout, ",", -1);
-- for (i = 0; layouts[i]; i++) {
-- gchar *utf_visible;
--
-- utf_visible = xkb_layout_description_utf8 (layouts[i]);
-- if (disp->str[0] != '\0')
-- disp = g_string_append (disp, ", ");
-- disp = g_string_append (disp, utf_visible ? utf_visible : layouts[i]);
-- g_free (utf_visible);
-- }
-+ w = g_dbus_proxy_get_cached_property (proxy, "X11Variant");
-+ if (w) {
-+ variants = g_strsplit (g_variant_get_string (w, NULL), ",", -1);
-+ g_object_set_data_full (G_OBJECT (label), "input_variants",
-+ g_variant_dup_string (w, NULL), g_free);
-+ g_variant_unref (w);
-+ } else {
-+ variants = NULL;
-+ g_object_set_data_full (G_OBJECT (label), "input_variants", NULL, g_free);
-+ }
-+
-+ if (variants && variants[0])
-+ n = MIN (g_strv_length (layouts), g_strv_length (variants));
-+ else
-+ n = g_strv_length (layouts);
-+
-+ xkb_info = gnome_xkb_info_new ();
-+ disp = g_string_new ("");
-+ for (i = 0; i < n && layouts[i][0]; i++) {
-+ const char *name;
-+ char *id;
-+
-+ if (variants && variants[i] && variants[i][0])
-+ id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
-+ else
-+ id = g_strdup (layouts[i]);
-+
-+ gnome_xkb_info_get_layout_info (xkb_info, id, &name, NULL, NULL, NULL);
-+ if (disp->str[0] != '\0')
-+ disp = g_string_append (disp, ", ");
-+ disp = g_string_append (disp, name ? name : id);
-+
-+ g_free (id);
-+ }
- gtk_label_set_text (GTK_LABEL (label), disp->str);
- g_string_free (disp, TRUE);
-
-- g_variant_unref (v);
-+ g_strfreev (variants);
-+ g_strfreev (layouts);
-+ g_object_unref (xkb_info);
-
- update_copy_button (dialog);
- }
-@@ -386,6 +426,11 @@ copy_settings (GtkButton *button, GtkBui
- layout = g_object_get_data (G_OBJECT (label), "input_source");
- variants = g_object_get_data (G_OBJECT (label), "input_variants");
-
-+ if (layout == NULL || layout[0] == '\0') {
-+ g_debug ("Not calling SetX11Keyboard, as there are no XKB input sources in the user's settings");
-+ return;
-+ }
-+
- g_dbus_proxy_call (localed_proxy,
- "SetX11Keyboard",
- g_variant_new ("(ssssbb)", layout, "", variants ? variants : "", "", TRUE, TRUE),
-@@ -468,10 +513,10 @@ setup_system (GtkBuilder *dialog)
- G_CALLBACK (locale_settings_changed), dialog);
- g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, locale_settings);
-
-- xkb_settings = g_settings_new (GKBD_KEYBOARD_SCHEMA);
-- g_signal_connect (xkb_settings, "changed::layouts",
-- G_CALLBACK (xkb_settings_changed), dialog);
-- g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, xkb_settings);
-+ input_sources_settings = g_settings_new ("org.cinnamon.desktop.input-sources");
-+ g_signal_connect (input_sources_settings, "changed::sources",
-+ G_CALLBACK (input_sources_changed), dialog);
-+ g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, input_sources_settings);
-
- /* Display user settings */
- language = cc_common_language_get_current_language ();
-@@ -480,7 +525,7 @@ setup_system (GtkBuilder *dialog)
-
- locale_settings_changed (locale_settings, "region", dialog);
-
-- xkb_settings_changed (xkb_settings, "layouts", dialog);
-+ input_sources_changed (input_sources_settings, "sources", dialog);
-
- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
- g_dbus_proxy_new (bus,
-diff -uNrp a/panels/region/cinnamon-region-panel-system.h b/panels/region/cinnamon-region-panel-system.h
---- a/panels/region/cinnamon-region-panel-system.h 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-system.h 2013-09-21 13:24:15.342949428 +0100
-@@ -19,8 +19,8 @@
- * 02110-1335, USA.
- */
-
--#ifndef __GNOME_REGION_PANEL_SYSTEM_H
--#define __GNOME_REGION_PANEL_SYSTEM_H
-+#ifndef __CINNAMON_REGION_PANEL_SYSTEM_H
-+#define __CINNAMON_REGION_PANEL_SYSTEM_H
-
- #include <gtk/gtk.h>
-
-diff -uNrp a/panels/region/cinnamon-region-panel.ui b/panels/region/cinnamon-region-panel.ui
---- a/panels/region/cinnamon-region-panel.ui 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel.ui 2013-09-21 13:24:15.347949247 +0100
-@@ -162,27 +162,17 @@
- <style>
- <class name="inline-toolbar"/>
- </style>
-+ <style>
-+ <class name="inline-toolbar"/>
-+ </style>
- <child>
- <object class="GtkToolButton" id="language_add">
-+ <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Add Language</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">list-add-symbolic</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkToolButton" id="language_remove">
-- <property name="visible">True</property>
-- <property name="sensitive">False</property>
- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Remove Language</property>
- <property name="use_underline">True</property>
-- <property name="icon_name">list-remove-symbolic</property>
-+ <property name="icon_name">list-add-symbolic</property>
- </object>
- <packing>
- <property name="expand">False</property>
-@@ -198,12 +188,13 @@
- </child>
- <child>
- <object class="GtkVBox" id="vbox3">
-- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkLabel" id="label23">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-+ <property name="use_underline">True</property>
-+ <property name="label" translatable="yes">Add Language</property>
- </object>
- <packing>
- <property name="expand">True</property>
-@@ -212,23 +203,24 @@
- </packing>
- </child>
- <child>
-- <object class="GtkButton" id="get_languages_button">
-- <property name="label" translatable="yes">button</property>
-+ <object class="GtkLinkButton" id="linkbutton1">
-+ <property name="label" translatable="yes">Install languages...</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
-+ <property name="has_tooltip">True</property>
- </object>
- <packing>
-- <property name="expand">True</property>
-+ <property name="expand">False</property>
- <property name="fill">True</property>
-- <property name="position">13</property>
-+ <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
-- <property name="position">2</property>
-+ <property name="position">1</property>
- </packing>
- </child>
- </object>
-@@ -305,19 +297,19 @@
- </child>
- <child>
- <object class="GtkToolbar" id="region-toolbar">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
- <property name="toolbar_style">icons</property>
- <property name="show_arrow">False</property>
- <property name="icon_size">1</property>
-+ <property name="visible">True</property>
- <style>
- <class name="inline-toolbar"/>
- </style>
- <child>
- <object class="GtkToolButton" id="region_add">
-+ <property name="use_action_appearance">False</property>
-+ <property name="label" translatable="yes">Add Region</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Add Region</property>
- <property name="use_underline">True</property>
- <property name="icon_name">list-add-symbolic</property>
- </object>
-@@ -328,10 +320,11 @@
- </child>
- <child>
- <object class="GtkToolButton" id="region_remove">
-+ <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
-+ <property name="label" translatable="yes">Remove Region</property>
- <property name="sensitive">False</property>
- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Remove Region</property>
- <property name="use_underline">True</property>
- <property name="icon_name">list-remove-symbolic</property>
- </object>
-@@ -373,18 +366,6 @@
- <property name="n_rows">9</property>
- <property name="n_columns">2</property>
- <child>
-- <placeholder/>
-- </child>
-- <child>
-- <placeholder/>
-- </child>
-- <child>
-- <placeholder/>
-- </child>
-- <child>
-- <placeholder/>
-- </child>
-- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-@@ -626,6 +607,12 @@
- <property name="height">1</property>
- </packing>
- </child>
-+ <child>
-+ <placeholder/>
-+ </child>
-+ <child>
-+ <placeholder/>
-+ </child>
- </object>
- <packing>
- <property name="position">1</property>
-@@ -643,36 +630,43 @@
- </packing>
- </child>
- <child>
-- <object class="GtkVBox" id="vbox1">
-+ <object class="GtkVBox" id="vbox5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="border_width">10</property>
-+ <property name="border_width">12</property>
- <property name="spacing">12</property>
- <child>
-- <placeholder/>
-+ <object class="GtkLabel" id="label24">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Select keyboards or other input sources</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">0</property>
-+ </packing>
- </child>
- <child>
-- <object class="GtkHBox" id="hbox2">
-+ <object class="GtkHBox" id="hbox3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">12</property>
- <child>
-- <object class="GtkVBox" id="vbox7">
-+ <object class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
-- <object class="GtkScrolledWindow" id="xkb_layouts_swindow">
-+ <object class="GtkScrolledWindow" id="input_sources_swindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <child>
-- <object class="GtkTreeView" id="xkb_layouts_selected">
-+ <object class="GtkTreeView" id="active_input_sources">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
-- <child internal-child="selection">
-- <object class="GtkTreeSelection" id="treeview-selection1"/>
-- </child>
- </object>
- </child>
- </object>
-@@ -683,7 +677,7 @@
- </packing>
- </child>
- <child>
-- <object class="GtkToolbar" id="layouts-toolbar">
-+ <object class="GtkToolbar" id="input-toolbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="toolbar_style">icons</property>
-@@ -693,70 +687,166 @@
- <class name="inline-toolbar"/>
- </style>
- <child>
-- <object class="GtkToolButton" id="xkb_layouts_add">
-+ <object class="GtkToolItem" id="i_s_ar_item">
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Add Layout</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">list-add-symbolic</property>
-+ <child>
-+ <object class="GtkBox" id="i_s_ar_box">
-+ <property name="visible">True</property>
-+ <child>
-+ <object class="GtkButton" id="input_source_add">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_a_a11y">
-+ <property name="accessible-name" translatable="yes">Add Input Source</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_a_image">
-+
-+ <property name="visible">True</property>
-+ <property name="icon-name">list-add-symbolic</property>
-+ <property name="icon-size">1</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkButton" id="input_source_remove">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_r_a11y">
-+ <property name="accessible-name" translatable="yes">Remove Input Source</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_r_image">
-+ <property name="visible">True</property>
-+ <property name="icon-name">list-remove-symbolic</property>
-+ <property name="icon-size">1</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-- </packing>
- </child>
-+
- <child>
-- <object class="GtkToolButton" id="xkb_layouts_remove">
-+ <object class="GtkSeparatorToolItem" id="sep1">
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Remove Layout</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">list-remove-symbolic</property>
-+ <property name="draw">False</property>
- </object>
- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-+ <property name="expand">True</property>
- </packing>
- </child>
-+
- <child>
-- <object class="GtkToolButton" id="xkb_layouts_move_up">
-+ <object class="GtkToolItem" id="i_s_ud_item">
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Move Up</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">go-up-symbolic</property>
-+ <child>
-+ <object class="GtkBox" id="i_s_ud_box">
-+ <property name="visible">True</property>
-+ <child>
-+ <object class="GtkButton" id="input_source_move_up">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_u_a11y">
-+ <property name="accessible-name" translatable="yes">Move Input Source Up</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_u_image">
-+
-+ <property name="visible">True</property>
-+ <property name="icon-name">go-up-symbolic</property>
-+ <property name="icon-size">1</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkButton" id="input_source_move_down">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_d_a11y">
-+ <property name="accessible-name" translatable="yes">Move Input Source Down</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_d_image">
-+ <property name="visible">True</property>
-+ <property name="icon-name">go-down-symbolic</property>
-+ <property name="icon-size">1</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-- </packing>
- </child>
-+
- <child>
-- <object class="GtkToolButton" id="xkb_layouts_move_down">
-+ <object class="GtkSeparatorToolItem" id="sep2">
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Move Down</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">go-down-symbolic</property>
-+ <property name="draw">False</property>
-+ <property name="hexpand">True</property>
- </object>
- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-+ <property name="expand">True</property>
- </packing>
- </child>
-+
- <child>
-- <object class="GtkToolButton" id="xkb_layouts_show">
-+ <object class="GtkToolItem" id="i_s_sp_item">
- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Preview Layout</property>
-- <property name="use_underline">True</property>
-- <property name="icon_name">input-keyboard-symbolic</property>
-+ <child>
-+ <object class="GtkBox" id="i_s_sp_box">
-+ <property name="visible">True</property>
-+ <child>
-+ <object class="GtkButton" id="input_source_settings">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_s_a11y">
-+ <property name="accessible-name" translatable="yes">Input Source Settings</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_s_image">
-+
-+ <property name="visible">True</property>
-+ <property name="icon_name">preferences-system-symbolic</property>
-+ <property name="icon_size">1</property>
-+ <property name="pixel_size">16</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkButton" id="input_source_show">
-+ <property name="visible">True</property>
-+ <child internal-child="accessible">
-+ <object class="AtkObject" id="i_s_p_a11y">
-+ <property name="accessible-name" translatable="yes">Show Keyboard Layout</property>
-+ </object>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="i_s_p_image">
-+
-+ <property name="visible">True</property>
-+ <property name="icon_name">input-keyboard-symbolic</property>
-+ <property name="icon-size">1</property>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
-+ </object>
-+ </child>
- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="homogeneous">True</property>
-- </packing>
- </child>
-+
- </object>
- <packing>
- <property name="expand">False</property>
-@@ -772,168 +862,111 @@
- </packing>
- </child>
- <child>
-- <object class="GtkVBox" id="vbox33">
-+ <object class="GtkFrame" id="frame4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="spacing">12</property>
-+ <property name="label_xalign">0</property>
-+ <property name="shadow_type">none</property>
- <child>
-- <object class="GtkVBox" id="vbox34">
-+ <object class="GtkAlignment" id="alignment3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="spacing">6</property>
-+ <property name="left_padding">12</property>
- <child>
-- <object class="GtkRadioButton" id="chk_same_group">
-- <property name="label" translatable="yes">Use the same layout for all windows</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">False</property>
-- <property name="xalign">0</property>
-- <property name="active">True</property>
-- <property name="draw_indicator">True</property>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkRadioButton" id="chk_separate_group_per_window">
-- <property name="label" translatable="yes">Allow different layouts for individual windows</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">False</property>
-- <property name="xalign">0</property>
-- <property name="active">True</property>
-- <property name="draw_indicator">True</property>
-- <property name="group">chk_same_group</property>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkAlignment" id="alignment1">
-+ <object class="GtkGrid" id="shortcuts-grid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="left_padding">12</property>
-+ <property name="margin_top">6</property>
-+ <property name="row_spacing">6</property>
-+ <property name="column_spacing">6</property>
- <child>
-- <object class="GtkVBox" id="vbox4">
-+ <object class="GtkLabel" id="prev-source-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <child>
-- <object class="GtkRadioButton" id="chk_new_windows_default_layout">
-- <property name="label" translatable="yes">New windows use the default layout</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">False</property>
-- <property name="xalign">0</property>
-- <property name="active">True</property>
-- <property name="draw_indicator">True</property>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkRadioButton" id="chk_new_windows_inherit_layout">
-- <property name="label" translatable="yes">New windows use the previous window's layout</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">False</property>
-- <property name="xalign">0</property>
-- <property name="active">True</property>
-- <property name="draw_indicator">True</property>
-- <property name="group">chk_new_windows_default_layout</property>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Switch to previous source</property>
- </object>
-+ <packing>
-+ <property name="left_attach">0</property>
-+ <property name="top_attach">0</property>
-+ <property name="width">1</property>
-+ <property name="height">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLabel" id="prev-source-shortcut-label">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="halign">end</property>
-+ <property name="hexpand">True</property>
-+ <property name="label" translatable="yes">Ctrl+Alt+Space</property>
-+ <style><class name="dim-label"/></style>
-+ </object>
-+ <packing>
-+ <property name="left_attach">1</property>
-+ <property name="top_attach">0</property>
-+ <property name="width">1</property>
-+ <property name="height">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLabel" id="next-source-label">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Switch to next source</property>
-+ </object>
-+ <packing>
-+ <property name="left_attach">0</property>
-+ <property name="top_attach">1</property>
-+ <property name="width">1</property>
-+ <property name="height">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLabel" id="next-source-shortcut-label">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="halign">end</property>
-+ <property name="hexpand">True</property>
-+ <property name="label" translatable="yes">Ctrl+Alt+Shift+Space</property>
-+ <style><class name="dim-label"/></style>
-+ </object>
-+ <packing>
-+ <property name="left_attach">1</property>
-+ <property name="top_attach">1</property>
-+ <property name="width">1</property>
-+ <property name="height">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLinkButton" id="jump-to-shortcuts">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="label" translatable="yes">Shortcut Settings</property>
-+ <property name="halign">end</property>
-+ </object>
-+ <packing>
-+ <property name="left_attach">1</property>
-+ <property name="top_attach">2</property>
-+ <property name="width">1</property>
-+ <property name="height">1</property>
-+ </packing>
- </child>
- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">2</property>
-- </packing>
- </child>
- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkLabel" id="label2">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- </object>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">False</property>
-- <property name="position">1</property>
-- </packing>
- </child>
-- <child>
-- <object class="GtkHButtonBox" id="hbuttonbox2">
-+ <child type="label">
-+ <object class="GtkLabel" id="shortcuts-frame-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="spacing">6</property>
-- <property name="layout_style">end</property>
-- <child>
-- <object class="GtkButton" id="xkb_layout_options">
-- <property name="label" translatable="yes">_Options...</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">True</property>
-- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-- <property name="has_tooltip">True</property>
-- <property name="tooltip_markup" translatable="yes">View and edit keyboard layout options</property>
-- <property name="tooltip_text" translatable="yes">View and edit keyboard layout options</property>
-- <property name="use_underline">True</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <object class="GtkButton" id="xkb_reset_to_defaults">
-- <property name="label" translatable="yes">Reset to De_faults</property>
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="receives_default">True</property>
-- <property name="has_tooltip">True</property>
-- <property name="tooltip_markup" translatable="yes">Replace the current keyboard layout settings with the
--default settings</property>
-- <property name="tooltip_text" translatable="yes">Replace the current keyboard layout settings with the
--default settings</property>
-- <property name="use_underline">True</property>
-- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="pack_type">end</property>
-- <property name="position">1</property>
-- <property name="secondary">True</property>
-- </packing>
-- </child>
-+ <property name="label" translatable="yes">Shortcuts</property>
-+ <property name="use_markup">True</property>
-+ <attributes>
-+ <attribute name="weight" value="bold"/>
-+ </attributes>
- </object>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">2</property>
-- </packing>
- </child>
- </object>
- <packing>
-@@ -951,17 +984,17 @@ default settings</property>
- </child>
- </object>
- <packing>
-- <property name="position">2</property>
-+ <property name="position">3</property>
- </packing>
- </child>
- <child type="tab">
-- <object class="GtkLabel" id="label46">
-+ <object class="GtkLabel" id="label13">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">Keyboard Layouts</property>
-+ <property name="label" translatable="yes">Input Sources</property>
- </object>
- <packing>
-- <property name="position">2</property>
-+ <property name="position">3</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
-@@ -974,9 +1007,6 @@ default settings</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">12</property>
- <child>
-- <placeholder/>
-- </child>
-- <child>
- <object class="GtkLabel" id="system-title">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
-@@ -1051,6 +1081,7 @@ default settings</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">3</property>
- <property name="y_padding">3</property>
-+ <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
-@@ -1060,6 +1091,7 @@ default settings</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="wrap">True</property>
-+ <property name="width-chars">18</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
-@@ -1068,6 +1100,7 @@ default settings</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">3</property>
- <property name="y_padding">3</property>
-+ <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
-@@ -1178,6 +1211,7 @@ default settings</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">3</property>
- <property name="y_padding">3</property>
-+ <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
-@@ -1187,6 +1221,7 @@ default settings</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="wrap">True</property>
-+ <property name="width-chars">18</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
-@@ -1195,6 +1230,7 @@ default settings</property>
- <property name="bottom_attach">2</property>
- <property name="x_padding">3</property>
- <property name="y_padding">3</property>
-+ <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
-@@ -1254,6 +1290,7 @@ default settings</property>
- <child>
- <object class="GtkButton" id="copy_settings_button">
- <property name="label" translatable="yes">Copy Settings...</property>
-+ <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
-@@ -1269,9 +1306,12 @@ default settings</property>
- <property name="y_padding">3</property>
- </packing>
- </child>
-+ <child>
-+ <placeholder/>
-+ </child>
- </object>
- <packing>
-- <property name="position">3</property>
-+ <property name="position">4</property>
- </packing>
- </child>
- <child type="tab">
-@@ -1281,7 +1321,7 @@ default settings</property>
- <property name="label" translatable="yes">System</property>
- </object>
- <packing>
-- <property name="position">3</property>
-+ <property name="position">4</property>
- <property name="tab_fill">False</property>
- </packing>
- </child>
-@@ -1302,4 +1342,11 @@ default settings</property>
- </object>
- </child>
- </object>
-+ <object class="GtkSizeGroup" id="system-input-source-sizegroup">
-+ <property name="mode">vertical</property>
-+ <widgets>
-+ <widget name="user_input_source"/>
-+ <widget name="system_input_source"/>
-+ </widgets>
-+ </object>
- </interface>
-diff -uNrp a/panels/region/cinnamon-region-panel-xkb.c b/panels/region/cinnamon-region-panel-xkb.c
---- a/panels/region/cinnamon-region-panel-xkb.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkb.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,190 +0,0 @@
--/* cinnamon-region-panel-xkb.c
-- * Copyright (C) 2003-2007 Sergey V. Udaltsov
-- *
-- * Written by: Sergey V. Udaltsov <svu@gnome.org>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <string.h>
--#include <gdk/gdkx.h>
--#include <glib/gi18n-lib.h>
--
--#include "cinnamon-region-panel-xkb.h"
--
--#include <libgnomekbd/gkbd-desktop-config.h>
--
--XklEngine *engine;
--XklConfigRegistry *config_registry;
--
--GkbdKeyboardConfig initial_config;
--GkbdDesktopConfig desktop_config;
--
--GSettings *xkb_keyboard_settings;
--GSettings *xkb_desktop_settings;
--
--char *
--xci_desc_to_utf8 (const XklConfigItem * ci)
--{
-- gchar *dd = g_strdup (ci->description);
-- gchar *sd = g_strstrip (dd);
-- gchar *rv = g_strdup (sd[0] == 0 ? ci->name : sd);
-- g_free (dd);
-- return rv;
--}
--
--static void
--cleanup_xkb_tabs (GtkBuilder * dialog,
-- GObject *where_the_object_wa)
--{
-- gkbd_desktop_config_term (&desktop_config);
-- gkbd_keyboard_config_term (&initial_config);
-- g_object_unref (G_OBJECT (config_registry));
-- config_registry = NULL;
-- /* Don't unref it here, or we'll crash if open the panel again */
-- engine = NULL;
-- g_object_unref (G_OBJECT (xkb_keyboard_settings));
-- g_object_unref (G_OBJECT (xkb_desktop_settings));
-- xkb_keyboard_settings = NULL;
-- xkb_desktop_settings = NULL;
--}
--
--static void
--reset_to_defaults (GtkWidget * button, GtkBuilder * dialog)
--{
-- GkbdKeyboardConfig empty_kbd_config;
--
-- gkbd_keyboard_config_init (&empty_kbd_config, engine);
-- gkbd_keyboard_config_save (&empty_kbd_config);
-- gkbd_keyboard_config_term (&empty_kbd_config);
--
-- g_settings_reset (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_DEFAULT_GROUP);
--
-- /* all the rest is g-s-d's business */
--}
--
--static void
--chk_new_windows_inherit_layout_toggled (GtkWidget *
-- chk_new_windows_inherit_layout,
-- GtkBuilder * dialog)
--{
-- xkb_save_default_group (gtk_toggle_button_get_active
-- (GTK_TOGGLE_BUTTON
-- (chk_new_windows_inherit_layout)) ? -1 :
-- 0);
--}
--
--void
--setup_xkb_tabs (GtkBuilder * dialog)
--{
-- GtkWidget *widget;
-- GtkStyleContext *context;
-- GtkWidget *chk_new_windows_inherit_layout;
--
-- chk_new_windows_inherit_layout = WID ("chk_new_windows_inherit_layout");
--
-- xkb_desktop_settings = g_settings_new (GKBD_DESKTOP_SCHEMA);
-- xkb_keyboard_settings = g_settings_new (GKBD_KEYBOARD_SCHEMA);
--
-- engine =
-- xkl_engine_get_instance (GDK_DISPLAY_XDISPLAY
-- (gdk_display_get_default ()));
-- config_registry = xkl_config_registry_get_instance (engine);
--
-- gkbd_desktop_config_init (&desktop_config, engine);
-- gkbd_desktop_config_load (&desktop_config);
--
-- xkl_config_registry_load (config_registry,
-- desktop_config.load_extra_items);
--
-- gkbd_keyboard_config_init (&initial_config, engine);
-- gkbd_keyboard_config_load_from_x_initial (&initial_config, NULL);
--
-- /* Set initial state */
-- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (WID ("chk_separate_group_per_window")),
-- g_settings_get_boolean (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_GROUP_PER_WINDOW));
-- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chk_new_windows_inherit_layout),
-- xkb_get_default_group () < 0);
--
-- g_settings_bind (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_GROUP_PER_WINDOW,
-- WID ("chk_separate_group_per_window"), "active",
-- G_SETTINGS_BIND_DEFAULT);
-- g_settings_bind (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_GROUP_PER_WINDOW,
-- WID ("chk_new_windows_inherit_layout"), "sensitive",
-- G_SETTINGS_BIND_DEFAULT);
-- g_settings_bind (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_GROUP_PER_WINDOW,
-- WID ("chk_new_windows_default_layout"), "sensitive",
-- G_SETTINGS_BIND_DEFAULT);
--
-- xkb_layouts_prepare_selected_tree (dialog);
-- xkb_layouts_fill_selected_tree (dialog);
--
-- xkb_layouts_register_buttons_handlers (dialog);
-- g_signal_connect (G_OBJECT (WID ("xkb_reset_to_defaults")),
-- "clicked", G_CALLBACK (reset_to_defaults),
-- dialog);
--
-- g_signal_connect (G_OBJECT (chk_new_windows_inherit_layout),
-- "toggled",
-- G_CALLBACK
-- (chk_new_windows_inherit_layout_toggled),
-- dialog);
--
-- g_signal_connect_swapped (G_OBJECT (WID ("xkb_layout_options")),
-- "clicked",
-- G_CALLBACK (xkb_options_popup_dialog),
-- dialog);
--
-- xkb_layouts_register_conf_listener (dialog);
-- xkb_options_register_conf_listener (dialog);
--
-- g_object_weak_ref (G_OBJECT (WID ("region_notebook")),
-- (GWeakNotify) cleanup_xkb_tabs, dialog);
--
-- enable_disable_restoring (dialog);
--
-- /* Setup junction between toolbar and treeview */
-- widget = WID ("xkb_layouts_swindow");
-- context = gtk_widget_get_style_context (widget);
-- gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
-- widget = WID ("layouts-toolbar");
-- context = gtk_widget_get_style_context (widget);
-- gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
--}
--
--void
--enable_disable_restoring (GtkBuilder * dialog)
--{
-- GkbdKeyboardConfig gswic;
-- gboolean enable;
--
-- gkbd_keyboard_config_init (&gswic, engine);
-- gkbd_keyboard_config_load (&gswic, NULL);
--
-- enable = !gkbd_keyboard_config_equals (&gswic, &initial_config);
--
-- gkbd_keyboard_config_term (&gswic);
-- gtk_widget_set_sensitive (WID ("xkb_reset_to_defaults"), enable);
--}
-diff -uNrp a/panels/region/cinnamon-region-panel-xkb.h b/panels/region/cinnamon-region-panel-xkb.h
---- a/panels/region/cinnamon-region-panel-xkb.h 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkb.h 1970-01-01 01:00:00.000000000 +0100
-@@ -1,96 +0,0 @@
--/* cinnamon-region-panel-xkb.h
-- * Copyright (C) 2003-2007 Sergey V Udaltsov
-- *
-- * Written by Sergey V. Udaltsov <svu@gnome.org>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifndef __GNOME_KEYBOARD_PROPERTY_XKB_H
--#define __GNOME_KEYBOARD_PROPERTY_XKB_H
--
--#include <gtk/gtk.h>
--
--#include "libgnomekbd/gkbd-keyboard-config.h"
--#include "libgnomekbd/gkbd-util.h"
--
--G_BEGIN_DECLS
--#define CWID(s) GTK_WIDGET (gtk_builder_get_object (chooser_dialog, s))
--#define WID(s) GTK_WIDGET (gtk_builder_get_object (dialog, s))
--extern XklEngine *engine;
--extern XklConfigRegistry *config_registry;
--extern GSettings *xkb_keyboard_settings;
--extern GSettings *xkb_desktop_settings;
--extern GkbdKeyboardConfig initial_config;
--
--extern void setup_xkb_tabs (GtkBuilder * dialog);
--
--extern void xkb_layouts_fill_selected_tree (GtkBuilder * dialog);
--
--extern void xkb_layouts_register_buttons_handlers (GtkBuilder * dialog);
--
--extern void xkb_layouts_register_conf_listener (GtkBuilder * dialog);
--
--extern void xkb_options_register_conf_listener (GtkBuilder * dialog);
--
--extern void xkb_layouts_prepare_selected_tree (GtkBuilder * dialog);
--
--extern void xkb_options_load_options (GtkBuilder * dialog);
--
--extern void xkb_options_popup_dialog (GtkBuilder * dialog);
--
--extern char *xci_desc_to_utf8 (const XklConfigItem * ci);
--
--extern gchar *xkb_layout_description_utf8 (const gchar * visible);
--
--extern void enable_disable_restoring (GtkBuilder * dialog);
--
--extern void preview_toggled (GtkBuilder * dialog, GtkWidget * button);
--
--extern GtkWidget *xkb_layout_choose (GtkBuilder * dialog);
--
--extern void xkb_layout_chooser_response (GtkDialog *dialog, gint response_id);
--
--extern gchar **xkb_layouts_get_selected_list (void);
--
--extern gchar **xkb_options_get_selected_list (void);
--
--#define xkb_layouts_set_selected_list(list) \
-- g_settings_set_strv (xkb_keyboard_settings, \
-- GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS, \
-- (const gchar *const*)(list))
--
--#define xkb_options_set_selected_list(list) \
-- g_settings_set_strv (xkb_keyboard_settings, \
-- GKBD_KEYBOARD_CONFIG_KEY_OPTIONS, \
-- (const gchar *const*)(list))
--
--extern GtkWidget *xkb_layout_preview_create_widget (GtkBuilder *
-- chooser_dialog);
--
--extern void xkb_layout_preview_update (GtkBuilder * chooser_dialog);
--
--extern void xkb_layout_preview_set_drawing_layout (GtkWidget * kbdraw,
-- const gchar * id);
--
--extern gchar *xkb_layout_chooser_get_selected_id (GtkDialog *dialog);
--
--extern void xkb_save_default_group (gint group_no);
--
--extern gint xkb_get_default_group (void);
--
--G_END_DECLS
--#endif /* __GNOME_KEYBOARD_PROPERTY_XKB_H */
-diff -uNrp a/panels/region/cinnamon-region-panel-xkbltadd.c b/panels/region/cinnamon-region-panel-xkbltadd.c
---- a/panels/region/cinnamon-region-panel-xkbltadd.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkbltadd.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,495 +0,0 @@
--/* cinnamon-region-panel-xkbltadd.c
-- * Copyright (C) 2007 Sergey V. Udaltsov
-- *
-- * Written by: Sergey V. Udaltsov <svu@gnome.org>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <string.h>
--
--#include <libgnomekbd/gkbd-keyboard-drawing.h>
--#include <libgnomekbd/gkbd-util.h>
--
--#include "cinnamon-region-panel-xkb.h"
--
--enum {
-- COMBO_BOX_MODEL_COL_SORT,
-- COMBO_BOX_MODEL_COL_VISIBLE,
-- COMBO_BOX_MODEL_COL_XKB_ID,
-- COMBO_BOX_MODEL_COL_COUNTRY_DESC,
-- COMBO_BOX_MODEL_COL_LANGUAGE_DESC
--};
--
--static gchar **search_pattern_list = NULL;
--
--static GtkWidget *preview_dialog = NULL;
--
--static GRegex *left_bracket_regex = NULL;
--
--#define RESPONSE_PREVIEW 1
--
--static void
--xkb_preview_destroy_callback (GtkWidget * widget)
--{
-- preview_dialog = NULL;
--}
--
--static gboolean
--xkb_layout_chooser_selection_dupe (GtkDialog * dialog)
--{
-- gchar *selected_id =
-- (gchar *) xkb_layout_chooser_get_selected_id (dialog);
-- gchar **layouts_list, **pl;
-- gboolean rv = FALSE;
-- if (selected_id == NULL)
-- return rv;
-- layouts_list = pl = xkb_layouts_get_selected_list ();
-- while (pl && *pl) {
-- if (!g_ascii_strcasecmp (*pl++, selected_id)) {
-- rv = TRUE;
-- break;
-- }
-- }
-- g_strfreev (layouts_list);
-- return rv;
--}
--
--void
--xkb_layout_chooser_response (GtkDialog * dialog, gint response)
--{
-- switch (response)
-- case GTK_RESPONSE_OK:{
-- /* Handled by the main code */
-- break;
-- case RESPONSE_PREVIEW:{
-- gchar *selected_id = (gchar *)
-- xkb_layout_chooser_get_selected_id
-- (dialog);
--
-- if (selected_id != NULL) {
-- if (preview_dialog == NULL) {
-- preview_dialog =
-- gkbd_keyboard_drawing_dialog_new
-- ();
-- g_signal_connect (G_OBJECT
-- (preview_dialog),
-- "destroy",
-- G_CALLBACK
-- (xkb_preview_destroy_callback),
-- NULL);
-- /* Put into the separate group to avoid conflict
-- with modal parent */
-- gtk_window_group_add_window
-- (gtk_window_group_new
-- (),
-- GTK_WINDOW
-- (preview_dialog));
-- };
-- gkbd_keyboard_drawing_dialog_set_layout
-- (preview_dialog,
-- config_registry, selected_id);
--
-- gtk_widget_show_all
-- (preview_dialog);
-- }
-- }
--
-- return;
-- }
-- if (preview_dialog != NULL) {
-- gtk_widget_destroy (preview_dialog);
-- }
-- if (search_pattern_list != NULL) {
-- g_strfreev (search_pattern_list);
-- search_pattern_list = NULL;
-- }
-- gtk_widget_destroy (GTK_WIDGET (dialog));
--}
--
--static gchar *
--xkl_create_description_from_list (const XklConfigItem * item,
-- const XklConfigItem * subitem,
-- const gchar * prop_name,
-- const gchar *
-- (*desc_getter) (const gchar * code))
--{
-- gchar *rv = NULL, *code = NULL;
-- gchar **list = NULL;
-- const gchar *desc;
--
-- if (subitem != NULL)
-- list =
-- (gchar
-- **) (g_object_get_data (G_OBJECT (subitem),
-- prop_name));
-- if (list == NULL || *list == 0)
-- list =
-- (gchar
-- **) (g_object_get_data (G_OBJECT (item), prop_name));
--
-- /* First try the parent id as such */
-- desc = desc_getter (item->name);
-- if (desc != NULL) {
-- rv = g_utf8_strup (desc, -1);
-- } else {
-- code = g_utf8_strup (item->name, -1);
-- desc = desc_getter (code);
-- if (desc != NULL) {
-- rv = g_utf8_strup (desc, -1);
-- }
-- g_free (code);
-- }
--
-- if (list == NULL || *list == 0)
-- return rv;
--
-- while (*list != 0) {
-- code = *list++;
-- desc = desc_getter (code);
-- if (desc != NULL) {
-- gchar *udesc = g_utf8_strup (desc, -1);
-- if (rv == NULL) {
-- rv = udesc;
-- } else {
-- gchar *orv = rv;
-- rv = g_strdup_printf ("%s %s", rv, udesc);
-- g_free (orv);
-- g_free (udesc);
-- }
-- }
-- }
-- return rv;
--}
--
--static void
--xkl_layout_add_to_list (XklConfigRegistry * config,
-- const XklConfigItem * item,
-- const XklConfigItem * subitem,
-- GtkBuilder * chooser_dialog)
--{
-- GtkListStore *list_store =
-- GTK_LIST_STORE (gtk_builder_get_object (chooser_dialog,
-- "layout_list_model"));
-- GtkTreeIter iter;
--
-- gchar *utf_variant_name =
-- subitem ?
-- xkb_layout_description_utf8 (gkbd_keyboard_config_merge_items
-- (item->name,
-- subitem->name)) :
-- xci_desc_to_utf8 (item);
--
-- const gchar *xkb_id =
-- subitem ? gkbd_keyboard_config_merge_items (item->name,
-- subitem->name) :
-- item->name;
--
-- gchar *country_desc =
-- xkl_create_description_from_list (item, subitem,
-- XCI_PROP_COUNTRY_LIST,
-- xkl_get_country_name);
-- gchar *language_desc =
-- xkl_create_description_from_list (item, subitem,
-- XCI_PROP_LANGUAGE_LIST,
-- xkl_get_language_name);
--
-- gchar *tmp = utf_variant_name;
-- utf_variant_name =
-- g_regex_replace_literal (left_bracket_regex, tmp, -1, 0,
-- "&lt;", 0, NULL);
-- g_free (tmp);
--
-- if (subitem
-- && g_object_get_data (G_OBJECT (subitem),
-- XCI_PROP_EXTRA_ITEM)) {
-- gchar *buf =
-- g_strdup_printf ("<i>%s</i>", utf_variant_name);
-- gtk_list_store_insert_with_values (list_store, &iter, -1,
-- COMBO_BOX_MODEL_COL_SORT,
-- utf_variant_name,
-- COMBO_BOX_MODEL_COL_VISIBLE,
-- buf,
-- COMBO_BOX_MODEL_COL_XKB_ID,
-- xkb_id,
-- COMBO_BOX_MODEL_COL_COUNTRY_DESC,
-- country_desc,
-- COMBO_BOX_MODEL_COL_LANGUAGE_DESC,
-- language_desc, -1);
-- g_free (buf);
-- } else
-- gtk_list_store_insert_with_values (list_store, &iter,
-- -1,
-- COMBO_BOX_MODEL_COL_SORT,
-- utf_variant_name,
-- COMBO_BOX_MODEL_COL_VISIBLE,
-- utf_variant_name,
-- COMBO_BOX_MODEL_COL_XKB_ID,
-- xkb_id,
-- COMBO_BOX_MODEL_COL_COUNTRY_DESC,
-- country_desc,
-- COMBO_BOX_MODEL_COL_LANGUAGE_DESC,
-- language_desc, -1);
-- g_free (utf_variant_name);
-- g_free (country_desc);
-- g_free (language_desc);
--}
--
--static void
--xkb_layout_filter_clear (GtkEntry * entry,
-- GtkEntryIconPosition icon_pos,
-- GdkEvent * event, gpointer user_data)
--{
-- gtk_entry_set_text (entry, "");
--}
--
--static void
--xkb_layout_filter_changed (GtkBuilder * chooser_dialog)
--{
-- GtkTreeModelFilter *filtered_model =
-- GTK_TREE_MODEL_FILTER (gtk_builder_get_object (chooser_dialog,
-- "filtered_layout_list_model"));
-- GtkWidget *xkb_layout_filter = CWID ("xkb_layout_filter");
-- const gchar *pattern =
-- gtk_entry_get_text (GTK_ENTRY (xkb_layout_filter));
-- gchar *upattern = g_utf8_strup (pattern, -1);
--
-- if (!g_strcmp0 (pattern, "")) {
-- g_object_set (G_OBJECT (xkb_layout_filter),
-- "secondary-icon-name", "edit-find-symbolic",
-- "secondary-icon-activatable", FALSE,
-- "secondary-icon-sensitive", FALSE, NULL);
-- } else {
-- g_object_set (G_OBJECT (xkb_layout_filter),
-- "secondary-icon-name", "edit-clear-symbolic",
-- "secondary-icon-activatable", TRUE,
-- "secondary-icon-sensitive", TRUE, NULL);
-- }
--
-- if (search_pattern_list != NULL)
-- g_strfreev (search_pattern_list);
--
-- search_pattern_list = g_strsplit (upattern, " ", -1);
-- g_free (upattern);
--
-- gtk_tree_model_filter_refilter (filtered_model);
--}
--
--static void
--xkb_layout_chooser_selection_changed (GtkTreeSelection * selection,
-- GtkBuilder * chooser_dialog)
--{
-- GList *selected_layouts =
-- gtk_tree_selection_get_selected_rows (selection, NULL);
-- GtkWidget *add_button = CWID ("btnOk");
-- GtkWidget *preview_button = CWID ("btnPreview");
-- gboolean anything_selected = g_list_length (selected_layouts) == 1;
-- gboolean dupe =
-- xkb_layout_chooser_selection_dupe (GTK_DIALOG
-- (CWID
-- ("xkb_layout_chooser")));
--
-- gtk_widget_set_sensitive (add_button, anything_selected && !dupe);
-- gtk_widget_set_sensitive (preview_button, anything_selected);
--}
--
--static void
--xkb_layout_chooser_row_activated (GtkTreeView * tree_view,
-- GtkTreePath * path,
-- GtkTreeViewColumn * column,
-- GtkBuilder * chooser_dialog)
--{
-- GtkWidget *add_button = CWID ("btnOk");
-- GtkWidget *dialog = CWID ("xkb_layout_chooser");
--
-- if (gtk_widget_is_sensitive (add_button))
-- gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
--}
--
--static gboolean
--xkb_filter_layouts (GtkTreeModel * model,
-- GtkTreeIter * iter, gpointer data)
--{
-- gchar *desc = NULL, *country_desc = NULL, *language_desc =
-- NULL, **pattern;
-- gboolean rv = TRUE;
--
-- if (search_pattern_list == NULL || search_pattern_list[0] == NULL)
-- return TRUE;
--
-- gtk_tree_model_get (model, iter,
-- COMBO_BOX_MODEL_COL_SORT, &desc,
-- COMBO_BOX_MODEL_COL_COUNTRY_DESC,
-- &country_desc,
-- COMBO_BOX_MODEL_COL_LANGUAGE_DESC,
-- &language_desc, -1);
--
-- pattern = search_pattern_list;
-- do {
-- gboolean is_pattern_found = FALSE;
-- gchar *udesc = g_utf8_strup (desc, -1);
-- if (udesc != NULL && g_strstr_len (udesc, -1, *pattern)) {
-- is_pattern_found = TRUE;
-- } else if (country_desc != NULL
-- && g_strstr_len (country_desc, -1, *pattern)) {
-- is_pattern_found = TRUE;
-- } else if (language_desc != NULL
-- && g_strstr_len (language_desc, -1, *pattern)) {
-- is_pattern_found = TRUE;
-- }
-- g_free (udesc);
--
-- if (!is_pattern_found) {
-- rv = FALSE;
-- break;
-- }
--
-- } while (*++pattern != NULL);
--
-- g_free (desc);
-- g_free (country_desc);
-- g_free (language_desc);
-- return rv;
--}
--
--GtkWidget *
--xkb_layout_choose (GtkBuilder * dialog)
--{
-- GtkBuilder *chooser_dialog = gtk_builder_new ();
-- GtkWidget *chooser, *xkb_filtered_layouts_list, *xkb_layout_filter;
-- GtkTreeViewColumn *visible_column;
-- GtkTreeSelection *selection;
-- GtkListStore *model;
-- GtkTreeModelFilter *filtered_model;
-- gtk_builder_set_translation_domain (chooser_dialog, GETTEXT_PACKAGE);
-- gtk_builder_add_from_file (chooser_dialog, CINNAMONCC_UI_DIR
-- "/cinnamon-region-panel-layout-chooser.ui",
-- NULL);
-- chooser = CWID ("xkb_layout_chooser");
-- xkb_filtered_layouts_list = CWID ("xkb_filtered_layouts_list");
-- xkb_layout_filter = CWID ("xkb_layout_filter");
--
-- g_object_set_data (G_OBJECT (chooser), "xkb_filtered_layouts_list",
-- xkb_filtered_layouts_list);
-- visible_column =
-- gtk_tree_view_column_new_with_attributes ("Layout",
-- gtk_cell_renderer_text_new
-- (), "markup",
-- COMBO_BOX_MODEL_COL_VISIBLE,
-- NULL);
--
-- gtk_window_set_transient_for (GTK_WINDOW (chooser),
-- GTK_WINDOW
-- (gtk_widget_get_toplevel
-- (WID ("region_notebook"))));
--
-- gtk_tree_view_append_column (GTK_TREE_VIEW
-- (xkb_filtered_layouts_list),
-- visible_column);
-- g_signal_connect_swapped (G_OBJECT (xkb_layout_filter),
-- "notify::text",
-- G_CALLBACK
-- (xkb_layout_filter_changed),
-- chooser_dialog);
--
-- g_signal_connect (G_OBJECT (xkb_layout_filter), "icon-release",
-- G_CALLBACK (xkb_layout_filter_clear), NULL);
--
-- selection =
-- gtk_tree_view_get_selection (GTK_TREE_VIEW
-- (xkb_filtered_layouts_list));
--
-- g_signal_connect (G_OBJECT (selection),
-- "changed",
-- G_CALLBACK
-- (xkb_layout_chooser_selection_changed),
-- chooser_dialog);
--
-- xkb_layout_chooser_selection_changed (selection, chooser_dialog);
--
-- g_signal_connect (G_OBJECT (xkb_filtered_layouts_list),
-- "row-activated",
-- G_CALLBACK (xkb_layout_chooser_row_activated),
-- chooser_dialog);
--
-- filtered_model =
-- GTK_TREE_MODEL_FILTER (gtk_builder_get_object
-- (chooser_dialog,
-- "filtered_layout_list_model"));
-- model =
-- GTK_LIST_STORE (gtk_builder_get_object
-- (chooser_dialog, "layout_list_model"));
--
-- left_bracket_regex = g_regex_new ("<", 0, 0, NULL);
--
-- xkl_config_registry_search_by_pattern (config_registry,
-- NULL,
-- (TwoConfigItemsProcessFunc)
-- (xkl_layout_add_to_list),
-- chooser_dialog);
--
-- g_regex_unref (left_bracket_regex);
--
-- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
-- COMBO_BOX_MODEL_COL_SORT,
-- GTK_SORT_ASCENDING);
--
-- gtk_tree_model_filter_set_visible_func (filtered_model,
-- xkb_filter_layouts,
-- NULL, NULL);
--
-- gtk_widget_grab_focus (xkb_layout_filter);
--
-- gtk_widget_show (chooser);
--
-- return chooser;
--}
--
--gchar *
--xkb_layout_chooser_get_selected_id (GtkDialog * dialog)
--{
-- GtkTreeModel *filtered_list_model;
-- GtkWidget *xkb_filtered_layouts_list =
-- g_object_get_data (G_OBJECT (dialog),
-- "xkb_filtered_layouts_list");
-- GtkTreeIter viter;
-- gchar *v_id;
-- GtkTreeSelection *selection =
-- gtk_tree_view_get_selection (GTK_TREE_VIEW
-- (xkb_filtered_layouts_list));
-- GList *selected_layouts =
-- gtk_tree_selection_get_selected_rows (selection,
-- &filtered_list_model);
--
-- if (g_list_length (selected_layouts) != 1)
-- return NULL;
--
-- gtk_tree_model_get_iter (filtered_list_model,
-- &viter,
-- (GtkTreePath *) (selected_layouts->data));
-- g_list_foreach (selected_layouts,
-- (GFunc) gtk_tree_path_free, NULL);
-- g_list_free (selected_layouts);
--
-- gtk_tree_model_get (filtered_list_model, &viter,
-- COMBO_BOX_MODEL_COL_XKB_ID, &v_id, -1);
--
-- return v_id;
--}
-diff -uNrp a/panels/region/cinnamon-region-panel-xkblt.c b/panels/region/cinnamon-region-panel-xkblt.c
---- a/panels/region/cinnamon-region-panel-xkblt.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkblt.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,470 +0,0 @@
--/* cinnamon-region-panel-xkblt.c
-- * Copyright (C) 2003-2007 Sergey V. Udaltsov
-- *
-- * Written by: Sergey V. Udaltsov <svu@gnome.org>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <gdk/gdkx.h>
--#include <glib/gi18n-lib.h>
--
--#include <libgnomekbd/gkbd-desktop-config.h>
--#include <libgnomekbd/gkbd-keyboard-drawing.h>
--
--#include "cinnamon-region-panel-xkb.h"
--
--enum {
-- SEL_LAYOUT_TREE_COL_DESCRIPTION,
-- SEL_LAYOUT_TREE_COL_ID,
-- SEL_LAYOUT_TREE_COL_ENABLED,
-- SEL_LAYOUT_N_COLS
--};
--
--static int idx2select = -1;
--static int max_selected_layouts = -1;
--
--static GtkCellRenderer *text_renderer;
--
--static gboolean disable_buttons_sensibility_update = FALSE;
--
--static gboolean
--get_selected_iter (GtkBuilder *dialog,
-- GtkTreeModel **model,
-- GtkTreeIter *iter)
--{
-- GtkTreeSelection *selection;
--
-- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("xkb_layouts_selected")));
--
-- return gtk_tree_selection_get_selected (selection, model, iter);
--}
--
--static void
--set_selected_path (GtkBuilder *dialog,
-- GtkTreePath *path)
--{
-- GtkTreeSelection *selection;
--
-- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WID ("xkb_layouts_selected")));
--
-- gtk_tree_selection_select_path (selection, path);
--}
--
--static gint
--find_selected_layout_idx (GtkBuilder *dialog)
--{
-- GtkTreeIter selected_iter;
-- GtkTreeModel *model;
-- GtkTreePath *path;
-- gint *indices;
-- gint rv;
--
-- if (!get_selected_iter (dialog, &model, &selected_iter))
-- return -1;
--
-- path = gtk_tree_model_get_path (model, &selected_iter);
-- if (path == NULL)
-- return -1;
--
-- indices = gtk_tree_path_get_indices (path);
-- rv = indices[0];
-- gtk_tree_path_free (path);
-- return rv;
--}
--
--gchar **
--xkb_layouts_get_selected_list (void)
--{
-- gchar **retval;
--
-- retval = g_settings_get_strv (xkb_keyboard_settings,
-- GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS);
-- if (retval == NULL || retval[0] == NULL) {
-- g_strfreev (retval);
-- retval = g_strdupv (initial_config.layouts_variants);
-- }
--
-- return retval;
--}
--
--gint
--xkb_get_default_group ()
--{
-- return g_settings_get_int (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_DEFAULT_GROUP);
--}
--
--void
--xkb_save_default_group (gint default_group)
--{
-- g_settings_set_int (xkb_desktop_settings,
-- GKBD_DESKTOP_CONFIG_KEY_DEFAULT_GROUP,
-- default_group);
--}
--
--static void
--xkb_layouts_enable_disable_buttons (GtkBuilder * dialog)
--{
-- GtkWidget *add_layout_btn = WID ("xkb_layouts_add");
-- GtkWidget *show_layout_btn = WID ("xkb_layouts_show");
-- GtkWidget *del_layout_btn = WID ("xkb_layouts_remove");
-- GtkWidget *selected_layouts_tree = WID ("xkb_layouts_selected");
-- GtkWidget *move_up_layout_btn = WID ("xkb_layouts_move_up");
-- GtkWidget *move_down_layout_btn = WID ("xkb_layouts_move_down");
--
-- GtkTreeSelection *s_selection =
-- gtk_tree_view_get_selection (GTK_TREE_VIEW
-- (selected_layouts_tree));
-- const int n_selected_selected_layouts =
-- gtk_tree_selection_count_selected_rows (s_selection);
-- GtkTreeModel *selected_layouts_model = gtk_tree_view_get_model
-- (GTK_TREE_VIEW (selected_layouts_tree));
-- const int n_selected_layouts =
-- gtk_tree_model_iter_n_children (selected_layouts_model,
-- NULL);
-- gint sidx = find_selected_layout_idx (dialog);
--
-- if (disable_buttons_sensibility_update)
-- return;
--
-- gtk_widget_set_sensitive (add_layout_btn,
-- (n_selected_layouts <
-- max_selected_layouts
-- || max_selected_layouts == 0));
-- gtk_widget_set_sensitive (del_layout_btn, (n_selected_layouts > 1)
-- && (n_selected_selected_layouts > 0));
-- gtk_widget_set_sensitive (show_layout_btn,
-- (n_selected_selected_layouts > 0));
-- gtk_widget_set_sensitive (move_up_layout_btn, sidx > 0);
-- gtk_widget_set_sensitive (move_down_layout_btn, sidx >= 0
-- && sidx < (n_selected_layouts - 1));
--}
--
--static void
--update_layouts_list (GtkTreeModel *model,
-- GtkBuilder *dialog)
--{
-- gboolean cont;
-- GtkTreeIter iter;
-- GPtrArray *array;
--
-- array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_free);
-- cont = gtk_tree_model_get_iter_first (model, &iter);
-- while (cont) {
-- char *id;
--
-- gtk_tree_model_get (model, &iter,
-- SEL_LAYOUT_TREE_COL_ID, &id,
-- -1);
-- g_ptr_array_add (array, id);
-- cont = gtk_tree_model_iter_next (model, &iter);
-- }
-- g_ptr_array_add (array, NULL);
-- xkb_layouts_set_selected_list (array->pdata);
-- g_ptr_array_free (array, TRUE);
--
-- xkb_layouts_enable_disable_buttons (dialog);
--}
--
--static void
--xkb_layouts_drag_end (GtkWidget *widget,
-- GdkDragContext *drag_context,
-- gpointer user_data)
--{
-- update_layouts_list (gtk_tree_view_get_model (GTK_TREE_VIEW (widget)),
-- GTK_BUILDER (user_data));
--}
--
--void
--xkb_layouts_prepare_selected_tree (GtkBuilder * dialog)
--{
-- GtkListStore *list_store;
-- GtkWidget *tree_view = WID ("xkb_layouts_selected");
-- GtkTreeSelection *selection;
-- GtkTreeViewColumn *desc_column;
--
-- list_store = gtk_list_store_new (SEL_LAYOUT_N_COLS,
-- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
--
-- text_renderer = GTK_CELL_RENDERER (gtk_cell_renderer_text_new ());
--
-- desc_column =
-- gtk_tree_view_column_new_with_attributes (_("Layout"),
-- text_renderer,
-- "text",
-- SEL_LAYOUT_TREE_COL_DESCRIPTION,
-- "sensitive",
-- SEL_LAYOUT_TREE_COL_ENABLED,
-- NULL);
-- selection =
-- gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
--
-- gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view),
-- GTK_TREE_MODEL (list_store));
--
-- gtk_tree_view_column_set_sizing (desc_column,
-- GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-- gtk_tree_view_column_set_resizable (desc_column, TRUE);
-- gtk_tree_view_column_set_expand (desc_column, TRUE);
--
-- gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
-- desc_column);
--
-- g_signal_connect_swapped (G_OBJECT (selection), "changed",
-- G_CALLBACK
-- (xkb_layouts_enable_disable_buttons),
-- dialog);
-- max_selected_layouts = xkl_engine_get_max_num_groups (engine);
--
-- /* Setting up DnD */
-- gtk_tree_view_set_reorderable (GTK_TREE_VIEW (tree_view), TRUE);
-- g_signal_connect (G_OBJECT (tree_view), "drag-end",
-- G_CALLBACK (xkb_layouts_drag_end), dialog);
--}
--
--gchar *
--xkb_layout_description_utf8 (const gchar * visible)
--{
-- char *l, *sl, *v, *sv;
-- if (gkbd_keyboard_config_get_descriptions
-- (config_registry, visible, &sl, &l, &sv, &v))
-- visible =
-- gkbd_keyboard_config_format_full_description (l, v);
-- return g_strstrip (g_strdup (visible));
--}
--
--void
--xkb_layouts_fill_selected_tree (GtkBuilder * dialog)
--{
-- gchar **layouts = xkb_layouts_get_selected_list ();
-- guint i;
-- GtkListStore *list_store =
-- GTK_LIST_STORE (gtk_tree_view_get_model
-- (GTK_TREE_VIEW
-- (WID ("xkb_layouts_selected"))));
--
-- /* temporarily disable the buttons' status update */
-- disable_buttons_sensibility_update = TRUE;
--
-- gtk_list_store_clear (list_store);
--
-- for (i = 0; layouts != NULL && layouts[i] != NULL; i++) {
-- char *cur_layout = layouts[i];
-- gchar *utf_visible =
-- xkb_layout_description_utf8 (cur_layout);
--
-- gtk_list_store_insert_with_values (list_store, NULL, G_MAXINT,
-- SEL_LAYOUT_TREE_COL_DESCRIPTION,
-- utf_visible,
-- SEL_LAYOUT_TREE_COL_ID,
-- cur_layout,
-- SEL_LAYOUT_TREE_COL_ENABLED,
-- i < max_selected_layouts, -1);
-- g_free (utf_visible);
-- }
--
-- g_strfreev (layouts);
--
-- /* enable the buttons' status update */
-- disable_buttons_sensibility_update = FALSE;
--
-- if (idx2select != -1) {
-- GtkTreeSelection *selection =
-- gtk_tree_view_get_selection ((GTK_TREE_VIEW
-- (WID
-- ("xkb_layouts_selected"))));
-- GtkTreePath *path =
-- gtk_tree_path_new_from_indices (idx2select, -1);
-- gtk_tree_selection_select_path (selection, path);
-- gtk_tree_path_free (path);
-- idx2select = -1;
-- } else {
-- /* if there is nothing to select - just enable/disable the buttons,
-- otherwise it would be done by the selection change */
-- xkb_layouts_enable_disable_buttons (dialog);
-- }
--}
--
--static void
--add_default_switcher_if_necessary ()
--{
-- gchar **layouts_list = xkb_layouts_get_selected_list();
-- gchar **options_list = xkb_options_get_selected_list ();
-- gboolean was_appended;
--
-- options_list =
-- gkbd_keyboard_config_add_default_switch_option_if_necessary
-- (layouts_list, options_list, &was_appended);
-- if (was_appended)
-- xkb_options_set_selected_list (options_list);
-- g_strfreev (options_list);
--}
--
--static void
--chooser_response (GtkDialog *chooser,
-- int response_id,
-- GtkBuilder *dialog)
--{
-- if (response_id == GTK_RESPONSE_OK) {
-- char *id, *name;
-- GtkListStore *list_store;
--
-- list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (WID ("xkb_layouts_selected"))));
-- id = xkb_layout_chooser_get_selected_id (chooser);
-- name = xkb_layout_description_utf8 (id);
-- gtk_list_store_insert_with_values (list_store, NULL, G_MAXINT,
-- SEL_LAYOUT_TREE_COL_DESCRIPTION, name,
-- SEL_LAYOUT_TREE_COL_ID, id,
-- SEL_LAYOUT_TREE_COL_ENABLED, TRUE,
-- -1);
-- g_free (name);
-- add_default_switcher_if_necessary ();
-- update_layouts_list (GTK_TREE_MODEL (list_store), dialog);
-- }
--
-- xkb_layout_chooser_response (chooser, response_id);
--}
--
--static void
--add_selected_layout (GtkWidget * button, GtkBuilder * dialog)
--{
-- GtkWidget *chooser;
--
-- chooser = xkb_layout_choose (dialog);
-- g_signal_connect (G_OBJECT (chooser), "response",
-- G_CALLBACK (chooser_response), dialog);
--}
--
--static void
--show_selected_layout (GtkWidget * button, GtkBuilder * dialog)
--{
-- gint idx = find_selected_layout_idx (dialog);
--
-- if (idx != -1) {
-- GtkWidget *parent = WID ("region_notebook");
-- GtkWidget *popup = gkbd_keyboard_drawing_dialog_new ();
-- gkbd_keyboard_drawing_dialog_set_group (popup,
-- config_registry,
-- idx);
-- gtk_window_set_transient_for (GTK_WINDOW (popup),
-- GTK_WINDOW
-- (gtk_widget_get_toplevel
-- (parent)));
-- gtk_widget_show_all (popup);
-- }
--}
--
--static void
--remove_selected_layout (GtkWidget * button, GtkBuilder * dialog)
--{
-- GtkTreeModel *model;
-- GtkTreeIter iter;
--
-- if (get_selected_iter (dialog, &model, &iter) == FALSE)
-- return;
--
-- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
-- update_layouts_list (model, dialog);
--}
--
--static void
--move_up_selected_layout (GtkWidget * button, GtkBuilder * dialog)
--{
-- GtkTreeModel *model;
-- GtkTreeIter iter, prev;
-- GtkTreePath *path;
--
-- if (get_selected_iter (dialog, &model, &iter) == FALSE)
-- return;
--
-- prev = iter;
-- if (!gtk_tree_model_iter_previous (model, &prev))
-- return;
--
-- path = gtk_tree_model_get_path (model, &prev);
--
-- gtk_list_store_swap (GTK_LIST_STORE (model), &iter, &prev);
--
-- update_layouts_list (model, dialog);
--
-- set_selected_path (dialog, path);
--
-- gtk_tree_path_free (path);
--}
--
--static void
--move_down_selected_layout (GtkWidget * button, GtkBuilder * dialog)
--{
-- GtkTreeModel *model;
-- GtkTreeIter iter, next;
-- GtkTreePath *path;
--
-- if (get_selected_iter (dialog, &model, &iter) == FALSE)
-- return;
--
-- next = iter;
-- if (!gtk_tree_model_iter_next (model, &next))
-- return;
--
-- path = gtk_tree_model_get_path (model, &next);
--
-- gtk_list_store_swap (GTK_LIST_STORE (model), &iter, &next);
--
-- update_layouts_list (model, dialog);
--
-- set_selected_path (dialog, path);
--
-- gtk_tree_path_free (path);
--}
--
--void
--xkb_layouts_register_buttons_handlers (GtkBuilder * dialog)
--{
-- g_signal_connect (G_OBJECT (WID ("xkb_layouts_add")), "clicked",
-- G_CALLBACK (add_selected_layout), dialog);
-- g_signal_connect (G_OBJECT (WID ("xkb_layouts_show")), "clicked",
-- G_CALLBACK (show_selected_layout), dialog);
-- g_signal_connect (G_OBJECT (WID ("xkb_layouts_remove")), "clicked",
-- G_CALLBACK (remove_selected_layout), dialog);
-- g_signal_connect (G_OBJECT (WID ("xkb_layouts_move_up")),
-- "clicked", G_CALLBACK (move_up_selected_layout),
-- dialog);
-- g_signal_connect (G_OBJECT (WID ("xkb_layouts_move_down")),
-- "clicked",
-- G_CALLBACK (move_down_selected_layout), dialog);
--}
--
--static void
--xkb_layouts_update_list (GSettings * settings,
-- gchar * key, GtkBuilder * dialog)
--{
-- if (strcmp (key, GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS) == 0) {
-- xkb_layouts_fill_selected_tree (dialog);
-- enable_disable_restoring (dialog);
-- }
--}
--
--void
--xkb_layouts_register_conf_listener (GtkBuilder * dialog)
--{
-- g_signal_connect (xkb_keyboard_settings, "changed",
-- G_CALLBACK (xkb_layouts_update_list), dialog);
--}
-diff -uNrp a/panels/region/cinnamon-region-panel-xkbot.c b/panels/region/cinnamon-region-panel-xkbot.c
---- a/panels/region/cinnamon-region-panel-xkbot.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkbot.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,516 +0,0 @@
--/* cinnamon-region-panel-xkbot.c
-- * Copyright (C) 2003-2007 Sergey V. Udaltsov
-- *
-- * Written by: Sergey V. Udaltsov <svu@gnome.org>
-- * John Spray <spray_john@users.sourceforge.net>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <glib/gi18n-lib.h>
--#include <string.h>
--
--#include "cinnamon-region-panel-xkb.h"
--
--static GtkBuilder *chooser_dialog = NULL;
--static const char *current1st_level_id = NULL;
--static GSList *option_checks_list = NULL;
--static GtkWidget *current_none_radio = NULL;
--static GtkWidget *current_expander = NULL;
--static gboolean current_multi_select = FALSE;
--static GSList *current_radio_group = NULL;
--
--#define OPTION_ID_PROP "optionID"
--#define SELCOUNTER_PROP "selectionCounter"
--#define GCONFSTATE_PROP "gconfState"
--#define EXPANDERS_PROP "expandersList"
--
--gchar **
--xkb_options_get_selected_list (void)
--{
-- gchar **retval;
--
-- retval =
-- g_settings_get_strv (xkb_keyboard_settings,
-- GKBD_KEYBOARD_CONFIG_KEY_OPTIONS);
-- if (retval == NULL) {
-- retval = g_strdupv (initial_config.options);
-- }
--
-- return retval;
--}
--
--/* Returns the selection counter of the expander (static current_expander) */
--static int
--xkb_options_expander_selcounter_get (void)
--{
-- return
-- GPOINTER_TO_INT (g_object_get_data
-- (G_OBJECT (current_expander),
-- SELCOUNTER_PROP));
--}
--
--/* Increments the selection counter in the expander (static current_expander)
-- using the value (can be 0)*/
--static void
--xkb_options_expander_selcounter_add (int value)
--{
-- g_object_set_data (G_OBJECT (current_expander), SELCOUNTER_PROP,
-- GINT_TO_POINTER
-- (xkb_options_expander_selcounter_get ()
-- + value));
--}
--
--/* Resets the seletion counter in the expander (static current_expander) */
--static void
--xkb_options_expander_selcounter_reset (void)
--{
-- g_object_set_data (G_OBJECT (current_expander), SELCOUNTER_PROP,
-- GINT_TO_POINTER (0));
--}
--
--/* Formats the expander (static current_expander), based on the selection counter */
--static void
--xkb_options_expander_highlight (void)
--{
-- char *utf_group_name =
-- g_object_get_data (G_OBJECT (current_expander),
-- "utfGroupName");
-- int counter = xkb_options_expander_selcounter_get ();
-- if (utf_group_name != NULL) {
-- gchar *titlemarkup =
-- g_strconcat (counter >
-- 0 ? "<span weight=\"bold\">" : "<span>",
-- utf_group_name, "</span>", NULL);
-- gtk_expander_set_label (GTK_EXPANDER (current_expander),
-- titlemarkup);
-- g_free (titlemarkup);
-- }
--}
--
--/* Add optionname from the backend's selection list if it's not
-- already in there. */
--static void
--xkb_options_select (gchar * optionname)
--{
-- gboolean already_selected = FALSE;
-- gchar **options_list;
-- guint i;
--
-- options_list = xkb_options_get_selected_list ();
-- for (i = 0; options_list != NULL && options_list[i] != NULL; i++) {
-- gchar *option = options_list[i];
-- if (!strcmp (option, optionname)) {
-- already_selected = TRUE;
-- break;
-- }
-- }
--
-- if (!already_selected) {
-- options_list =
-- gkbd_strv_append (options_list, g_strdup (optionname));
-- xkb_options_set_selected_list (options_list);
-- }
--
-- g_strfreev (options_list);
--}
--
--/* Remove all occurences of optionname from the backend's selection list */
--static void
--xkb_options_deselect (gchar * optionname)
--{
-- gchar **options_list = xkb_options_get_selected_list ();
-- if (options_list != NULL) {
-- gchar **option = options_list;
-- while (*option != NULL) {
-- gchar *id = *option;
-- if (!strcmp (id, optionname)) {
-- gkbd_strv_behead (option);
-- } else
-- option++;
-- }
-- xkb_options_set_selected_list (options_list);
-- }
-- g_strfreev (options_list);
--}
--
--/* Return true if optionname describes a string already in the backend's
-- list of selected options */
--static gboolean
--xkb_options_is_selected (gchar * optionname)
--{
-- gboolean retval = FALSE;
-- gchar **options_list = xkb_options_get_selected_list ();
-- if (options_list != NULL) {
-- gchar **option = options_list;
-- while (*option != NULL) {
-- if (!strcmp (*option, optionname)) {
-- retval = TRUE;
-- break;
-- }
-- option++;
-- }
-- }
-- g_strfreev (options_list);
-- return retval;
--}
--
--/* Make sure selected options stay visible when navigating with the keyboard */
--static gboolean
--option_focused_cb (GtkWidget * widget, GdkEventFocus * event,
-- gpointer data)
--{
-- GtkScrolledWindow *win = GTK_SCROLLED_WINDOW (data);
-- GtkAllocation alloc;
-- GtkAdjustment *adj;
--
-- gtk_widget_get_allocation (widget, &alloc);
-- adj = gtk_scrolled_window_get_vadjustment (win);
-- gtk_adjustment_clamp_page (adj, alloc.y, alloc.y + alloc.height);
--
-- return FALSE;
--}
--
--/* Update xkb backend to reflect the new UI state */
--static void
--option_toggled_cb (GtkWidget * checkbutton, gpointer data)
--{
-- gpointer optionID =
-- g_object_get_data (G_OBJECT (checkbutton), OPTION_ID_PROP);
-- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton)))
-- xkb_options_select (optionID);
-- else
-- xkb_options_deselect (optionID);
--}
--
--/* Add a check_button or radio_button to control a particular option
-- This function makes particular use of the current... variables at
-- the top of this file. */
--static void
--xkb_options_add_option (XklConfigRegistry * config_registry,
-- XklConfigItem * config_item, GtkBuilder * dialog)
--{
-- GtkWidget *option_check;
-- gchar *utf_option_name = xci_desc_to_utf8 (config_item);
-- /* Copy this out because we'll load it into the widget with set_data */
-- gchar *full_option_name =
-- g_strdup (gkbd_keyboard_config_merge_items
-- (current1st_level_id, config_item->name));
-- gboolean initial_state;
--
-- if (current_multi_select)
-- option_check =
-- gtk_check_button_new_with_label (utf_option_name);
-- else {
-- if (current_radio_group == NULL) {
-- /* The first radio in a group is to be "Default", meaning none of
-- the below options are to be included in the selected list.
-- This is a HIG-compliant alternative to allowing no
-- selection in the group. */
-- option_check =
-- gtk_radio_button_new_with_label
-- (current_radio_group, _("Default"));
-- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-- (option_check),
-- TRUE);
-- /* Make option name underscore -
-- to enforce its first position in the list */
-- g_object_set_data_full (G_OBJECT (option_check),
-- "utfOptionName",
-- g_strdup (" "), g_free);
-- option_checks_list =
-- g_slist_append (option_checks_list,
-- option_check);
-- current_radio_group =
-- gtk_radio_button_get_group (GTK_RADIO_BUTTON
-- (option_check));
-- current_none_radio = option_check;
--
-- g_signal_connect (option_check, "focus-in-event",
-- G_CALLBACK (option_focused_cb),
-- WID ("options_scroll"));
-- }
-- option_check =
-- gtk_radio_button_new_with_label (current_radio_group,
-- utf_option_name);
-- current_radio_group =
-- gtk_radio_button_get_group (GTK_RADIO_BUTTON
-- (option_check));
-- g_object_set_data (G_OBJECT (option_check), "NoneRadio",
-- current_none_radio);
-- }
--
-- initial_state = xkb_options_is_selected (full_option_name);
--
-- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (option_check),
-- initial_state);
--
-- g_object_set_data_full (G_OBJECT (option_check), OPTION_ID_PROP,
-- full_option_name, g_free);
-- g_object_set_data_full (G_OBJECT (option_check), "utfOptionName",
-- utf_option_name, g_free);
--
-- g_signal_connect (option_check, "toggled",
-- G_CALLBACK (option_toggled_cb), NULL);
--
-- option_checks_list =
-- g_slist_append (option_checks_list, option_check);
--
-- g_signal_connect (option_check, "focus-in-event",
-- G_CALLBACK (option_focused_cb),
-- WID ("options_scroll"));
--
-- xkb_options_expander_selcounter_add (initial_state);
-- g_object_set_data (G_OBJECT (option_check), GCONFSTATE_PROP,
-- GINT_TO_POINTER (initial_state));
--}
--
--static gint
--xkb_option_checks_compare (GtkWidget * chk1, GtkWidget * chk2)
--{
-- const gchar *t1 =
-- g_object_get_data (G_OBJECT (chk1), "utfOptionName");
-- const gchar *t2 =
-- g_object_get_data (G_OBJECT (chk2), "utfOptionName");
-- return g_utf8_collate (t1, t2);
--}
--
--/* Add a group of options: create title and layout widgets and then
-- add widgets for all the options in the group. */
--static void
--xkb_options_add_group (XklConfigRegistry * config_registry,
-- XklConfigItem * config_item, GtkBuilder * dialog)
--{
-- GtkWidget *align, *vbox, *option_check;
-- gboolean allow_multiple_selection =
-- GPOINTER_TO_INT (g_object_get_data (G_OBJECT (config_item),
-- XCI_PROP_ALLOW_MULTIPLE_SELECTION));
--
-- GSList *expanders_list =
-- g_object_get_data (G_OBJECT (dialog), EXPANDERS_PROP);
--
-- gchar *utf_group_name = xci_desc_to_utf8 (config_item);
-- gchar *titlemarkup =
-- g_strconcat ("<span>", utf_group_name, "</span>", NULL);
--
-- current_expander = gtk_expander_new (titlemarkup);
-- gtk_expander_set_use_markup (GTK_EXPANDER (current_expander),
-- TRUE);
-- g_object_set_data_full (G_OBJECT (current_expander),
-- "utfGroupName", utf_group_name, g_free);
-- g_object_set_data_full (G_OBJECT (current_expander), "groupId",
-- g_strdup (config_item->name), g_free);
--
-- g_free (titlemarkup);
-- align = gtk_alignment_new (0, 0, 1, 1);
-- gtk_alignment_set_padding (GTK_ALIGNMENT (align), 6, 12, 12, 0);
-- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-- gtk_box_set_homogeneous (GTK_BOX (vbox), TRUE);
-- gtk_container_add (GTK_CONTAINER (align), vbox);
-- gtk_container_add (GTK_CONTAINER (current_expander), align);
--
-- current_multi_select = (gboolean) allow_multiple_selection;
-- current_radio_group = NULL;
-- current1st_level_id = config_item->name;
--
-- option_checks_list = NULL;
--
-- xkl_config_registry_foreach_option (config_registry,
-- config_item->name,
-- (ConfigItemProcessFunc)
-- xkb_options_add_option,
-- dialog);
-- /* sort it */
-- option_checks_list =
-- g_slist_sort (option_checks_list,
-- (GCompareFunc) xkb_option_checks_compare);
-- while (option_checks_list) {
-- option_check = GTK_WIDGET (option_checks_list->data);
-- gtk_box_pack_start (GTK_BOX (vbox), option_check, TRUE,
-- TRUE, 0);
-- option_checks_list = option_checks_list->next;
-- }
-- /* free it */
-- g_slist_free (option_checks_list);
-- option_checks_list = NULL;
--
-- xkb_options_expander_highlight ();
--
-- expanders_list = g_slist_append (expanders_list, current_expander);
-- g_object_set_data (G_OBJECT (dialog), EXPANDERS_PROP,
-- expanders_list);
--
-- g_signal_connect (current_expander, "focus-in-event",
-- G_CALLBACK (option_focused_cb),
-- WID ("options_scroll"));
--}
--
--static gint
--xkb_options_expanders_compare (GtkWidget * expander1,
-- GtkWidget * expander2)
--{
-- const gchar *t1 =
-- g_object_get_data (G_OBJECT (expander1), "utfGroupName");
-- const gchar *t2 =
-- g_object_get_data (G_OBJECT (expander2), "utfGroupName");
-- return g_utf8_collate (t1, t2);
--}
--
--/* Create widgets to represent the options made available by the backend */
--void
--xkb_options_load_options (GtkBuilder * dialog)
--{
-- GtkWidget *opts_vbox = WID ("options_vbox");
-- GtkWidget *dialog_vbox = WID ("dialog_vbox");
-- GtkWidget *options_scroll = WID ("options_scroll");
-- GtkWidget *expander;
-- GSList *expanders_list;
--
-- current1st_level_id = NULL;
-- current_none_radio = NULL;
-- current_multi_select = FALSE;
-- current_radio_group = NULL;
--
-- /* fill the list */
-- xkl_config_registry_foreach_option_group (config_registry,
-- (ConfigItemProcessFunc)
-- xkb_options_add_group,
-- dialog);
-- /* sort it */
-- expanders_list =
-- g_object_get_data (G_OBJECT (dialog), EXPANDERS_PROP);
-- expanders_list =
-- g_slist_sort (expanders_list,
-- (GCompareFunc) xkb_options_expanders_compare);
-- g_object_set_data (G_OBJECT (dialog), EXPANDERS_PROP,
-- expanders_list);
-- while (expanders_list) {
-- expander = GTK_WIDGET (expanders_list->data);
-- gtk_box_pack_start (GTK_BOX (opts_vbox), expander, FALSE,
-- FALSE, 0);
-- expanders_list = expanders_list->next;
-- }
--
-- /* Somewhere in gtk3 the top vbox in dialog is made non-expandable */
-- gtk_box_set_child_packing (GTK_BOX (dialog_vbox), options_scroll,
-- TRUE, TRUE, 0, GTK_PACK_START);
-- gtk_widget_show_all (dialog_vbox);
--}
--
--static void
--chooser_response_cb (GtkDialog * dialog, gint response, gpointer data)
--{
-- switch (response) {
-- case GTK_RESPONSE_DELETE_EVENT:
-- case GTK_RESPONSE_CLOSE: {
-- /* just cleanup */
-- GSList *expanders_list =
-- g_object_get_data (G_OBJECT (dialog),
-- EXPANDERS_PROP);
-- g_object_set_data (G_OBJECT (dialog),
-- EXPANDERS_PROP, NULL);
-- g_slist_free (expanders_list);
--
-- gtk_widget_destroy (GTK_WIDGET (dialog));
-- chooser_dialog = NULL;
-- }
-- break;
-- }
--}
--
--/* Create popup dialog */
--void
--xkb_options_popup_dialog (GtkBuilder * dialog)
--{
-- GtkWidget *chooser;
--
-- chooser_dialog = gtk_builder_new ();
-- gtk_builder_set_translation_domain (chooser_dialog, GETTEXT_PACKAGE);
-- gtk_builder_add_from_file (chooser_dialog, CINNAMONCC_UI_DIR
-- "/cinnamon-region-panel-options-dialog.ui",
-- NULL);
--
-- chooser = CWID ("xkb_options_dialog");
-- gtk_window_set_transient_for (GTK_WINDOW (chooser),
-- GTK_WINDOW (gtk_widget_get_toplevel (WID ("region_notebook"))));
-- gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
-- xkb_options_load_options (chooser_dialog);
--
-- g_signal_connect (chooser, "response",
-- G_CALLBACK (chooser_response_cb), dialog);
-- gtk_widget_show (chooser);
--}
--
--/* Update selected option counters for a group-bound expander */
--static void
--xkb_options_update_option_counters (XklConfigRegistry * config_registry,
-- XklConfigItem * config_item)
--{
-- gchar *full_option_name =
-- g_strdup (gkbd_keyboard_config_merge_items
-- (current1st_level_id, config_item->name));
-- gboolean current_state =
-- xkb_options_is_selected (full_option_name);
-- g_free (full_option_name);
--
-- xkb_options_expander_selcounter_add (current_state);
--}
--
--/* Respond to a change in the xkb gconf settings */
--static void
--xkb_options_update (GSettings * settings, gchar * key, GtkBuilder * dialog)
--{
-- if (!strcmp (key, GKBD_KEYBOARD_CONFIG_KEY_OPTIONS)) {
-- /* Updating options is handled by gconf notifies for each widget
-- This is here to avoid calling it N_OPTIONS times for each gconf
-- change. */
-- enable_disable_restoring (dialog);
--
-- if (chooser_dialog != NULL) {
-- GSList *expanders_list =
-- g_object_get_data (G_OBJECT (chooser_dialog),
-- EXPANDERS_PROP);
-- while (expanders_list) {
-- current_expander =
-- GTK_WIDGET (expanders_list->data);
-- gchar *group_id =
-- g_object_get_data (G_OBJECT
-- (current_expander),
-- "groupId");
-- current1st_level_id = group_id;
-- xkb_options_expander_selcounter_reset ();
-- xkl_config_registry_foreach_option
-- (config_registry, group_id,
-- (ConfigItemProcessFunc)
-- xkb_options_update_option_counters,
-- current_expander);
-- xkb_options_expander_highlight ();
-- expanders_list = expanders_list->next;
-- }
-- }
-- }
--}
--
--void
--xkb_options_register_conf_listener (GtkBuilder * dialog)
--{
-- g_signal_connect (xkb_keyboard_settings, "changed",
-- G_CALLBACK (xkb_options_update), dialog);
--}
-diff -uNrp a/panels/region/cinnamon-region-panel-xkbpv.c b/panels/region/cinnamon-region-panel-xkbpv.c
---- a/panels/region/cinnamon-region-panel-xkbpv.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/cinnamon-region-panel-xkbpv.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,120 +0,0 @@
--/* cinnamon-region-panel-xkbpv.c
-- * Copyright (C) 2003-2007 Sergey V. Udaltsov
-- *
-- * Written by: Sergey V. Udaltsov <svu@gnome.org>
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2, or (at your option)
-- * any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 51 Franklin Street - Suite 500, Boston, MA
-- * 02110-1335, USA.
-- */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <libgnomekbd/gkbd-keyboard-drawing.h>
--
--#include "cinnamon-region-panel-xkb.h"
--
--#ifdef HAVE_X11_EXTENSIONS_XKB_H
--#include "X11/XKBlib.h"
--/**
-- * BAD STYLE: Taken from xklavier_private_xkb.h
-- * Any ideas on architectural improvements are WELCOME
-- */
--extern gboolean xkl_xkb_config_native_prepare (XklEngine * engine,
-- const XklConfigRec * data,
-- XkbComponentNamesPtr
-- component_names);
--
--extern void xkl_xkb_config_native_cleanup (XklEngine * engine,
-- XkbComponentNamesPtr
-- component_names);
--
--/* */
--#endif
--
--static GkbdKeyboardDrawingGroupLevel groupsLevels[] =
-- { {0, 1}, {0, 3}, {0, 0}, {0, 2} };
--static GkbdKeyboardDrawingGroupLevel *pGroupsLevels[] = {
-- groupsLevels, groupsLevels + 1, groupsLevels + 2, groupsLevels + 3
--};
--
--GtkWidget *
--xkb_layout_preview_create_widget (GtkBuilder * chooserDialog)
--{
-- GtkWidget *kbdraw = gkbd_keyboard_drawing_new ();
--
-- gkbd_keyboard_drawing_set_groups_levels (GKBD_KEYBOARD_DRAWING
-- (kbdraw), pGroupsLevels);
-- return kbdraw;
--}
--
--void
--xkb_layout_preview_set_drawing_layout (GtkWidget * kbdraw,
-- const gchar * id)
--{
--#ifdef HAVE_X11_EXTENSIONS_XKB_H
-- if (kbdraw != NULL) {
-- if (id != NULL) {
-- XklConfigRec *data;
-- char **p, *layout, *variant;
-- XkbComponentNamesRec component_names;
--
-- data = xkl_config_rec_new ();
-- if (xkl_config_rec_get_from_server (data, engine)) {
-- if ((p = data->layouts) != NULL)
-- g_strfreev (data->layouts);
--
-- if ((p = data->variants) != NULL)
-- g_strfreev (data->variants);
--
-- data->layouts = g_new0 (char *, 2);
-- data->variants = g_new0 (char *, 2);
-- if (gkbd_keyboard_config_split_items
-- (id, &layout, &variant)
-- && variant != NULL) {
-- data->layouts[0] =
-- (layout ==
-- NULL) ? NULL :
-- g_strdup (layout);
-- data->variants[0] =
-- (variant ==
-- NULL) ? NULL :
-- g_strdup (variant);
-- } else {
-- data->layouts[0] =
-- (id ==
-- NULL) ? NULL : g_strdup (id);
-- data->variants[0] = NULL;
-- }
--
-- if (xkl_xkb_config_native_prepare
-- (engine, data, &component_names)) {
-- gkbd_keyboard_drawing_set_keyboard
-- (GKBD_KEYBOARD_DRAWING
-- (kbdraw), &component_names);
--
-- xkl_xkb_config_native_cleanup
-- (engine, &component_names);
-- }
-- }
-- g_object_unref (G_OBJECT (data));
-- } else
-- gkbd_keyboard_drawing_set_keyboard
-- (GKBD_KEYBOARD_DRAWING (kbdraw), NULL);
--
-- }
--#endif
--}
-diff -uNrp a/panels/region/.indent.pro b/panels/region/.indent.pro
---- a/panels/region/.indent.pro 1970-01-01 01:00:00.000000000 +0100
-+++ b/panels/region/.indent.pro 2013-08-25 16:50:30.000000000 +0100
-@@ -0,0 +1,2 @@
-+-kr -i8 -pcs -lps -psl
-+
-diff -uNrp a/panels/region/Makefile.am b/panels/region/Makefile.am
---- a/panels/region/Makefile.am 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/Makefile.am 2013-09-21 13:24:15.347949247 +0100
-@@ -23,12 +23,9 @@ libregion_la_SOURCES = \
- cinnamon-region-panel-lang.h \
- cinnamon-region-panel-system.c \
- cinnamon-region-panel-system.h \
-- cinnamon-region-panel-xkb.c \
-- cinnamon-region-panel-xkblt.c \
-- cinnamon-region-panel-xkbltadd.c \
-- cinnamon-region-panel-xkbot.c \
-- cinnamon-region-panel-xkbpv.c \
-- cinnamon-region-panel-xkb.h
-+ cinnamon-region-panel-input.c \
-+ cinnamon-region-panel-input.h \
-+ $(NULL)
-
- libregion_la_LIBADD = $(PANEL_LIBS) $(REGION_PANEL_LIBS) $(builddir)/../common/liblanguage.la
-
-@@ -39,8 +36,8 @@ libregion_la_LDFLAGS = $(PANEL_LDFLAGS)
- uidir = $(pkgdatadir)/ui
- ui_DATA = \
- cinnamon-region-panel.ui \
-- cinnamon-region-panel-layout-chooser.ui \
-- cinnamon-region-panel-options-dialog.ui
-+ cinnamon-region-panel-input-chooser.ui \
-+ $(NULL)
-
- desktopdir = $(datadir)/applications
- Desktop_in_files = cinnamon-region-panel.desktop.in
-diff -uNrp a/panels/region/region-module.c b/panels/region/region-module.c
---- a/panels/region/region-module.c 2013-08-25 14:40:14.000000000 +0100
-+++ b/panels/region/region-module.c 2013-09-21 13:24:15.347949247 +0100
-@@ -28,6 +28,7 @@
- void
- g_io_module_load (GIOModule * module)
- {
-+
- /* register the panel */
- cc_region_panel_register (module);
- }
diff --git a/community/cinnamon-screensaver/PKGBUILD b/community/cinnamon-screensaver/PKGBUILD
index c200f601e..99cc8ef6e 100644
--- a/community/cinnamon-screensaver/PKGBUILD
+++ b/community/cinnamon-screensaver/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=cinnamon-screensaver
pkgver=2.2.0
-pkgrel=1
+pkgrel=2
pkgdesc="Screensaver designed to integrate well with the Cinnamon desktop."
arch=('i686' 'x86_64')
license=('GPL')
@@ -14,10 +14,19 @@ backup=(etc/pam.d/cinnamon-screensaver)
depends=('cinnamon-desktop' 'cinnamon-translations' 'dbus-glib' 'libgnomekbd')
makedepends=('intltool' 'gnome-common')
source=($pkgname-$pkgver.tar.gz::https://github.com/linuxmint/cinnamon-screensaver/archive/$pkgver.tar.gz
+ fix-high-cpu.patch
cinnamon-screensaver.pam)
sha256sums=('2ba075f8bceb5ff853d76b0426e0d3fedcfd503016c4752f1e5b3813b0d8aef9'
+ 'e3db1cfeb9a68f0c5a39737a5347add03a68e4316681349f789311403676c8cc'
'b6ea9e2eb586d94bcabb617a8f1c2958111df87afdbb51f645882bccdc15cbda')
+prepare() {
+ cd $pkgname-$pkgver
+
+ # Fix high CPU usage (FS#39951)
+ patch -Np1 -i ../fix-high-cpu.patch
+}
+
build() {
cd $pkgname-$pkgver
diff --git a/community/cinnamon-screensaver/fix-high-cpu.patch b/community/cinnamon-screensaver/fix-high-cpu.patch
new file mode 100644
index 000000000..ea9e5cf8c
--- /dev/null
+++ b/community/cinnamon-screensaver/fix-high-cpu.patch
@@ -0,0 +1,24 @@
+From b6e44705c0fb68e526ef66d56d26fa677d885193 Mon Sep 17 00:00:00 2001
+From: Corbin <RavetcoFX@gmail.com>
+Date: Fri, 18 Apr 2014 17:11:15 -0600
+Subject: [PATCH] Fix sticky screensaver issue
+
+---
+ src/gs-window-x11.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
+index eb4fe5f..127eda5 100644
+--- a/src/gs-window-x11.c
++++ b/src/gs-window-x11.c
+@@ -2140,7 +2140,6 @@ shade_background (GtkWidget *widget,
+ {
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.7);
+ cairo_paint (cr);
+- gs_window_clear_to_background_surface (window);
+
+ return FALSE;
+ }
+--
+1.9.1
+
diff --git a/community/cinnamon-settings-daemon/PKGBUILD b/community/cinnamon-settings-daemon/PKGBUILD
index 98f0fedf9..694241456 100644
--- a/community/cinnamon-settings-daemon/PKGBUILD
+++ b/community/cinnamon-settings-daemon/PKGBUILD
@@ -1,21 +1,30 @@
-# $Id: PKGBUILD 109529 2014-04-15 12:55:57Z bpiotrowski $
+# $Id: PKGBUILD 109807 2014-04-19 02:39:22Z bgyorgy $
# Maintainer: Alexandre Filgueira (faidoc) <alexfilgueira@antergos.com>
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgname=cinnamon-settings-daemon
pkgver=2.2.1
-pkgrel=1
+pkgrel=2
pkgdesc="The Cinnamon Settings daemon"
arch=('i686' 'x86_64')
license=('GPL')
depends=('cinnamon-desktop' 'libibus' 'libcanberra-pulse' 'librsvg' 'nss'
- 'pulseaudio-alsa' 'upower' 'libnotify' 'libgnomekbd')
-makedepends=('intltool' 'docbook-xsl' 'gnome-common')
+ 'pulseaudio-alsa' 'upower' 'libnotify' 'libgnomekbd' 'libwacom')
+makedepends=('intltool' 'docbook-xsl' 'gnome-common' 'xf86-input-wacom')
options=('!emptydirs')
install=cinnamon-settings-daemon.install
url="https://github.com/linuxmint/cinnamon-settings-daemon"
-source=("${pkgname}-${pkgver}.tar.gz::https://github.com/linuxmint/cinnamon-settings-daemon/archive/${pkgver}.tar.gz")
-sha256sums=('89798977ad44fa4cfaff26d93e21b29f1a9a6a68a1c57c30e5414ad2159a849e')
+source=("${pkgname}-${pkgver}.tar.gz::https://github.com/linuxmint/cinnamon-settings-daemon/archive/${pkgver}.tar.gz"
+ "upower_lid.patch")
+sha256sums=('89798977ad44fa4cfaff26d93e21b29f1a9a6a68a1c57c30e5414ad2159a849e'
+ '4a94ab880a903c88929ecbfc465cb46aadf30ee14930274fa0eefb7a12f4e3b8')
+
+prepare() {
+ cd $pkgname-$pkgver
+
+ # Fix close lid action with upower 0.99
+ patch -Np1 -i ../upower_lid.patch
+}
build() {
cd $pkgname-$pkgver
diff --git a/community/cinnamon-settings-daemon/upower_lid.patch b/community/cinnamon-settings-daemon/upower_lid.patch
new file mode 100644
index 000000000..a8f44dae5
--- /dev/null
+++ b/community/cinnamon-settings-daemon/upower_lid.patch
@@ -0,0 +1,28 @@
+--- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -2215,7 +2215,11 @@ do_lid_closed_action (CsdPowerManager *m
+
+
+ static void
++#if UP_CHECK_VERSION(0,99,0)
++lid_state_changed_cb (UpClient *client, GParamSpec *pspec, CsdPowerManager *manager)
++#else
+ up_client_changed_cb (UpClient *client, CsdPowerManager *manager)
++#endif
+ {
+ gboolean tmp;
+
+@@ -3967,8 +3971,13 @@ csd_power_manager_start (CsdPowerManager
+ G_CALLBACK (engine_device_removed_cb), manager);
+ g_signal_connect (manager->priv->up_client, "device-changed",
+ G_CALLBACK (engine_device_changed_cb), manager);
++#if UP_CHECK_VERSION(0,99,0)
++ g_signal_connect_after (manager->priv->up_client, "notify::lid-is-closed",
++ G_CALLBACK (lid_state_changed_cb), manager);
++#else
+ g_signal_connect_after (manager->priv->up_client, "changed",
+ G_CALLBACK (up_client_changed_cb), manager);
++#endif
+
+ /* use the fallback name from gnome-power-manager so the shell
+ * blocks this, and uses the power extension instead */
diff --git a/community/cmatrix/PKGBUILD b/community/cmatrix/PKGBUILD
index 2506b8326..5eb361b6d 100644
--- a/community/cmatrix/PKGBUILD
+++ b/community/cmatrix/PKGBUILD
@@ -1,27 +1,30 @@
-# $Id: PKGBUILD 76875 2012-10-01 14:55:29Z bisson $
-# Maintainer:
+# $Id: PKGBUILD 109862 2014-04-19 19:57:40Z jsteel $
+# Maintainer: Jonathan Steel <jsteel at aur.archlinux.org>
pkgname=cmatrix
pkgver=1.2a
-pkgrel=6
+pkgrel=7
pkgdesc="Let you see the matrix code in your console"
arch=('i686' 'x86_64')
url="http://www.asty.org/cmatrix/"
license=('GPL')
depends=('ncurses' 'fontconfig')
-install=cmatrix.install
+install=$pkgname.install
source=(http://www.asty.org/cmatrix/dist/$pkgname-$pkgver.tar.gz)
md5sums=('ebfb5733104a258173a9ccf2669968a1')
-sha1sums=('ca078c10322a47e327f07a44c9a42b52eab5ad93')
build() {
cd "$srcdir/$pkgname-$pkgver"
- ./configure --prefix=/usr --mandir=/usr/share/man
+
+ CPPFLAGS="-D_FORTIFY_SOURCE=0" ./configure \
+ --prefix=/usr --mandir=/usr/share/man
+
make
}
package() {
cd "$srcdir/$pkgname-$pkgver"
+
make DESTDIR="$pkgdir" install
install -Dm644 mtx.pcf "$pkgdir/usr/share/fonts/misc/mtx.pcf"
diff --git a/community/dos2unix/PKGBUILD b/community/dos2unix/PKGBUILD
index a5c9ff60d..be5cd4244 100644
--- a/community/dos2unix/PKGBUILD
+++ b/community/dos2unix/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 103260 2013-12-31 20:20:56Z jelle $
-# Maintainer: Bartłomiej Piotrowski
+# $Id: PKGBUILD 109849 2014-04-19 08:04:58Z jelle $
+# Contributor: Bartłomiej Piotrowski
# Contributor: Renato Garcia <fgar.renatoATgmailDOTcom>
# Contributor: Gerson E. Ruotolo <gersonruotolo@globo.com>
pkgname=dos2unix
-pkgver=6.0.4
+pkgver=6.0.5
pkgrel=1
pkgdesc='Text file format converter'
arch=('i686' 'x86_64')
@@ -14,7 +14,7 @@ depends=('glibc')
makedepends=('perl')
conflicts=('hd2u')
source=("http://waterlan.home.xs4all.nl/${pkgname}/${pkgname}-${pkgver}.tar.gz")
-sha256sums=('66bd224d4a7fbe13a3b61aa7083b5ef74cf6448a3670606c669f46a84bb9b37a')
+sha256sums=('fd3320aeaf6a163e70c462137959cf3e5af2bb22b0674f931f8744b0215d858f')
build() {
cd $srcdir/$pkgname-$pkgver
diff --git a/community/gambas3/PKGBUILD b/community/gambas3/PKGBUILD
index 6e9574272..0d9aeb95c 100644
--- a/community/gambas3/PKGBUILD
+++ b/community/gambas3/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 104508 2014-01-22 06:40:19Z lcarlier $
+# $Id: PKGBUILD 109860 2014-04-19 18:14:13Z lcarlier $
# Maintainer: Laurent Carlier <lordheavym@gmail.com>
# Contributor : sebikul <sebikul@gmail.com>
@@ -15,7 +15,7 @@ _components=('gambas3-gb-args' 'gambas3-gb-cairo' 'gambas3-gb-chart' 'gambas3-gb
'gambas3-gb-openssl' 'gambas3-gb-report' 'gambas3-gb-sdl-sound' 'gambas3-gb-sdl' 'gambas3-gb-settings' 'gambas3-gb-signal' 'gambas3-gb-v4l' 'gambas3-gb-vb'
'gambas3-gb-xml-html' 'gambas3-gb-xml-rpc' 'gambas3-gb-xml-xslt' 'gambas3-gb-xml' 'gambas3-gb-web')
pkgname=(${_components[@]} 'gambas3-runtime' 'gambas3-devel' 'gambas3-ide' 'gambas3-script' 'gambas3-examples')
-pkgver=3.5.2
+pkgver=3.5.3
pkgrel=1
pkgdesc="A free development environment based on a Basic interpreter."
arch=('i686' 'x86_64')
@@ -31,7 +31,7 @@ makedepends=('intltool' 'mariadb' 'postgresql' 'libffi' 'bzip2' 'glib2' 'v4l-uti
'gmime')
options=('!emptydirs' 'libtool')
source=("http://downloads.sourceforge.net/gambas/${pkgbase}-${pkgver}.tar.bz2")
-md5sums=('685b7214453c1ae9133a46411b12ed8d')
+md5sums=('b09b1311d99a1388c65e5aac72ceacee')
create_dirs() {
install -dm755 ${pkgdir}/usr/lib/gambas3
diff --git a/community/gnome-phone-manager/PKGBUILD b/community/gnome-phone-manager/PKGBUILD
index 3154a9254..a1a10a8a1 100644
--- a/community/gnome-phone-manager/PKGBUILD
+++ b/community/gnome-phone-manager/PKGBUILD
@@ -1,13 +1,13 @@
-# $Id: PKGBUILD 99774 2013-10-30 23:38:00Z allan $
+# $Id: PKGBUILD 109864 2014-04-19 20:35:54Z bgyorgy $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
# Contributor: Roman Kyrylych <roman@archlinux.org>
pkgname=gnome-phone-manager
pkgver=0.69
-pkgrel=3
+pkgrel=4
pkgdesc="Control your mobile phone from your GNOME desktop"
arch=('i686' 'x86_64')
-url="http://live.gnome.org/PhoneManager"
+url="https://wiki.gnome.org/PhoneManager"
license=('GPL')
depends=('evolution-data-server' 'gconf' 'gnokii' 'gnome-bluetooth' 'libcanberra' 'telepathy-glib')
makedepends=('intltool')
@@ -17,18 +17,22 @@ source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/$pkgver/$pkgname-$pkgver
sha256sums=('35e038ea3afaacdf451046e87af876096cf1520efc04fc3f5b63ea22e0297175'
'232a72108836ddd46d329993d166c38550e2923f161b4dc814d75af4ed5ccc79')
-build() {
+prepare() {
cd "$srcdir/$pkgname-$pkgver"
+
+ # Port to evolution-data-server 3.8
patch -p1 -i ../gnome-phone-manager-0.68-eds.patch
+}
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgname \
- --disable-static --disable-schemas-install \
+ --disable-static --disable-schemas-install --disable-bluetooth-plugin \
--with-gconf-schema-file-dir=/usr/share/gconf/schemas
make
}
package() {
cd "${srcdir}/$pkgname-$pkgver"
-
make DESTDIR="$pkgdir" install
}
diff --git a/community/muffin/PKGBUILD b/community/muffin/PKGBUILD
index 2269b1ac7..99f4e2aa6 100644
--- a/community/muffin/PKGBUILD
+++ b/community/muffin/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 109468 2014-04-15 00:55:39Z faidoc $
+# $Id: PKGBUILD 109803 2014-04-19 00:45:07Z bgyorgy $
# Maintainer: Alexandre Filgueira <alexfilgueira@cinnarch.com>
# Contributor: Adam Hani Schakaki <adam@schakaki.net>
# Contributor: Ner0
pkgname=muffin
pkgver=2.2.1
-pkgrel=1
+pkgrel=2
pkgdesc="Cinnamon window manager based on Mutter"
arch=('i686' 'x86_64')
url="https://github.com/linuxmint/muffin"
license=('GPL')
-depends=('clutter' 'gobject-introspection' 'cinnamon-desktop' 'libcanberra'
+depends=('clutter' 'gobject-introspection' 'cinnamon-desktop' 'libcanberra' 'libsm'
'startup-notification' 'zenity' 'dconf')
makedepends=('intltool' 'gnome-doc-utils' 'gnome-common')
options=('!emptydirs')
diff --git a/extra/amarok/PKGBUILD b/extra/amarok/PKGBUILD
index 8699b85b7..4298b07dc 100644
--- a/extra/amarok/PKGBUILD
+++ b/extra/amarok/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 203567 2014-01-13 17:11:57Z andyrtr $
+# $Id: PKGBUILD 211521 2014-04-19 11:27:11Z andrea $
# Maintainer: Ronald van Haren <ronald@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: damir <damir@archlinux.org>
pkgname=amarok
pkgver=2.8.0
-pkgrel=2
+pkgrel=3
pkgdesc="The powerful music player for KDE"
arch=("i686" "x86_64")
url="http://amarok.kde.org/"
@@ -33,7 +33,9 @@ build() {
cmake ../${pkgname}-${pkgver} \
-DCMAKE_BUILD_TYPE=Release \
-DKDE4_BUILD_TESTS=OFF \
- -DCMAKE_INSTALL_PREFIX=/usr
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_NepomukCore=OFF \
+ -DWITH_Soprano=OFF
make
}
diff --git a/extra/gdm/0001-Add-Arch-Linux-PAM-config-files.patch b/extra/gdm/0001-Add-Arch-Linux-PAM-config-files.patch
index af4f9710e..3cf27e9e4 100644
--- a/extra/gdm/0001-Add-Arch-Linux-PAM-config-files.patch
+++ b/extra/gdm/0001-Add-Arch-Linux-PAM-config-files.patch
@@ -1,4 +1,4 @@
-From cd3370b869bd2d5418270e0c9e8197c296d314f5 Mon Sep 17 00:00:00 2001
+From 521d3702ac5569c370a5a453b87133d688e1c87d Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Tue, 30 Jul 2013 22:42:27 +0600
Subject: [PATCH] Add Arch Linux PAM config files
@@ -6,13 +6,13 @@ Subject: [PATCH] Add Arch Linux PAM config files
---
configure.ac | 6 ++++--
data/Makefile.am | 12 ++++++++++++
- data/pam-arch/gdm-autologin.pam | 14 ++++++++++++++
- data/pam-arch/gdm-fingerprint.pam | 16 ++++++++++++++++
+ data/pam-arch/gdm-autologin.pam | 10 ++++++++++
+ data/pam-arch/gdm-fingerprint.pam | 14 ++++++++++++++
data/pam-arch/gdm-launch-environment.pam | 13 +++++++++++++
data/pam-arch/gdm-password.pam | 11 +++++++++++
- data/pam-arch/gdm-pin.pam | 12 ++++++++++++
- data/pam-arch/gdm-smartcard.pam | 16 ++++++++++++++++
- 8 files changed, 98 insertions(+), 2 deletions(-)
+ data/pam-arch/gdm-pin.pam | 13 +++++++++++++
+ data/pam-arch/gdm-smartcard.pam | 14 ++++++++++++++
+ 8 files changed, 91 insertions(+), 2 deletions(-)
create mode 100644 data/pam-arch/gdm-autologin.pam
create mode 100644 data/pam-arch/gdm-fingerprint.pam
create mode 100644 data/pam-arch/gdm-launch-environment.pam
@@ -21,7 +21,7 @@ Subject: [PATCH] Add Arch Linux PAM config files
create mode 100644 data/pam-arch/gdm-smartcard.pam
diff --git a/configure.ac b/configure.ac
-index f66fdd9..aabe305 100644
+index 242a969..a368029 100644
--- a/configure.ac
+++ b/configure.ac
@@ -189,12 +189,13 @@ if test x$enable_split_authentication = xyes; then
@@ -88,16 +88,13 @@ index 1b79bc3..341b779 100644
$(dconf_db_files) \
diff --git a/data/pam-arch/gdm-autologin.pam b/data/pam-arch/gdm-autologin.pam
new file mode 100644
-index 0000000..e7998ef
+index 0000000..9f45c65
--- /dev/null
+++ b/data/pam-arch/gdm-autologin.pam
-@@ -0,0 +1,14 @@
-+auth required pam_tally.so onerr=succeed file=/var/log/faillog
-+auth required pam_shells.so
+@@ -0,0 +1,10 @@
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth optional pam_permit.so
-+auth optional pam_gnome_keyring.so
+
+account include system-local-login
+
@@ -105,20 +102,18 @@ index 0000000..e7998ef
+
+session optional pam_keyinit.so force revoke
+session include system-local-login
-+session optional pam_gnome_keyring.so auto_start
diff --git a/data/pam-arch/gdm-fingerprint.pam b/data/pam-arch/gdm-fingerprint.pam
new file mode 100644
-index 0000000..97afb44
+index 0000000..a480861
--- /dev/null
+++ b/data/pam-arch/gdm-fingerprint.pam
-@@ -0,0 +1,16 @@
+@@ -0,0 +1,14 @@
+auth required pam_tally.so onerr=succeed file=/var/log/faillog
+auth required pam_shells.so
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth required pam_fprintd.so
+auth optional pam_permit.so
-+auth optional pam_gnome_keyring.so
+
+account include system-local-login
+
@@ -127,7 +122,6 @@ index 0000000..97afb44
+
+session optional pam_keyinit.so force revoke
+session include system-local-login
-+session optional pam_gnome_keyring.so auto_start
diff --git a/data/pam-arch/gdm-launch-environment.pam b/data/pam-arch/gdm-launch-environment.pam
new file mode 100644
index 0000000..2981326
@@ -166,10 +160,10 @@ index 0000000..8d34794
+session optional pam_gnome_keyring.so auto_start
diff --git a/data/pam-arch/gdm-pin.pam b/data/pam-arch/gdm-pin.pam
new file mode 100644
-index 0000000..44ec42f
+index 0000000..135e205
--- /dev/null
+++ b/data/pam-arch/gdm-pin.pam
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,13 @@
+auth requisite pam_pin.so
+auth include system-local-login
+auth optional pam_gnome_keyring.so
@@ -178,23 +172,23 @@ index 0000000..44ec42f
+
+password include system-local-login
+password optional pam_pin.so
++password optional pam_gnome_keyring.so use_authtok
+
+session optional pam_keyinit.so force revoke
+session include system-local-login
+session optional pam_gnome_keyring.so auto_start
diff --git a/data/pam-arch/gdm-smartcard.pam b/data/pam-arch/gdm-smartcard.pam
new file mode 100644
-index 0000000..c6f01fe
+index 0000000..ec6f75d
--- /dev/null
+++ b/data/pam-arch/gdm-smartcard.pam
-@@ -0,0 +1,16 @@
+@@ -0,0 +1,14 @@
+auth required pam_tally.so onerr=succeed file=/var/log/faillog
+auth required pam_shells.so
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth required pam_pkcs11.so wait_for_card card_only
+auth optional pam_permit.so
-+auth optional pam_gnome_keyring.so
+
+account include system-local-login
+
@@ -203,7 +197,6 @@ index 0000000..c6f01fe
+
+session optional pam_keyinit.so force revoke
+session include system-local-login
-+session optional pam_gnome_keyring.so auto_start
--
-1.9.1
+1.9.2
diff --git a/extra/gdm/PKGBUILD b/extra/gdm/PKGBUILD
index 926dd1638..459d4a5a2 100644
--- a/extra/gdm/PKGBUILD
+++ b/extra/gdm/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 211232 2014-04-18 11:20:53Z heftig $
+# $Id: PKGBUILD 211513 2014-04-19 00:38:16Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=gdm
pkgname=(gdm libgdm)
pkgver=3.12.1
-pkgrel=1
+pkgrel=2
pkgdesc="Gnome Display Manager"
arch=(i686 x86_64)
license=(GPL)
@@ -16,7 +16,7 @@ checkdepends=('check')
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:4}/$pkgbase-$pkgver.tar.xz
0001-Add-Arch-Linux-PAM-config-files.patch)
sha256sums=('41a009252bf491dadd7644b3e74be5c9364b1971b519a1a9ef31257180c74913'
- 'e158ea240e90113cf1d7790a623c3d0b64e459f76b0e9135f9f536cdb22c0c0e')
+ '49f2c70f96c796378ff749bb7283f23fb055424b2179d31e6235d6034c791bfd')
prepare() {
cd $pkgbase-$pkgver
diff --git a/extra/gnome-disk-utility/PKGBUILD b/extra/gnome-disk-utility/PKGBUILD
index 8231a7106..5034fbf09 100644
--- a/extra/gnome-disk-utility/PKGBUILD
+++ b/extra/gnome-disk-utility/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 210460 2014-04-14 20:06:31Z jgc $
+# $Id: PKGBUILD 211544 2014-04-19 19:57:26Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Silvio Knizek (killermoehre)
pkgname=gnome-disk-utility
-pkgver=3.12.0
+pkgver=3.12.1
pkgrel=1
pkgdesc="Disk Management Utility for GNOME"
arch=(i686 x86_64)
@@ -15,7 +15,7 @@ makedepends=(intltool docbook-xsl gnome-settings-daemon)
options=('!emptydirs')
install=gnome-disk-utility.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver:0:4}/$pkgname-$pkgver.tar.xz)
-sha256sums=('46e0698c4a7baa8719a79935066e103447011fb47528a28dbb49e35eeec409d8')
+sha256sums=('5994bfae57063d74be45736050cf166cda5b1600a599703240b641b39375718e')
build() {
cd $pkgname-$pkgver
diff --git a/extra/gnumeric/PKGBUILD b/extra/gnumeric/PKGBUILD
index c4257fe7d..b0d094812 100644
--- a/extra/gnumeric/PKGBUILD
+++ b/extra/gnumeric/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 206076 2014-02-17 09:13:47Z jgc $
+# $Id: PKGBUILD 211548 2014-04-19 20:16:33Z jgc $
# Maintainer: Eric Belanger <eric@archlinux.org>
# Contributor: Kritoke <typeolinux@yahoo.com>
pkgname=gnumeric
-pkgver=1.12.11
+pkgver=1.12.14
pkgrel=1
pkgdesc="A GNOME Spreadsheet Program"
arch=('i686' 'x86_64')
@@ -19,7 +19,7 @@ optdepends=('python2-gobject: for python plugin support'
install=gnumeric.install
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver:0:4}/${pkgname}-${pkgver}.tar.xz
revert-warnings.patch)
-sha256sums=('554224f8a91743702b90010bf4bd7f04b9086e89c023a2aa1b2dbc31426c538f'
+sha256sums=('964b98098e7ddc17890fec575f88a48acceaaf078dc1522836b0df755224ca27'
'bcafca016b809000c2a5bf911e2e3dfa4de28f9e541d9964574cac5c7ce09e53')
prepare() {
diff --git a/extra/gnutls/PKGBUILD b/extra/gnutls/PKGBUILD
index 68fba3bb2..2fa0d7d02 100644
--- a/extra/gnutls/PKGBUILD
+++ b/extra/gnutls/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 210253 2014-04-13 07:29:53Z andyrtr $
+# $Id: PKGBUILD 211541 2014-04-19 19:24:46Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgname=gnutls
-pkgver=3.3.0
+pkgver=3.3.1
pkgrel=1
pkgdesc="A library which provides a secure layer over a reliable transport layer"
arch=('i686' 'x86_64')
@@ -13,7 +13,7 @@ install=gnutls.install
options=('!zipman')
depends=('gcc-libs' 'libtasn1' 'readline' 'zlib' 'nettle' 'p11-kit')
source=(ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/${pkgname}-${pkgver}.tar.xz{,.sig})
-md5sums=('4aeb8014feb4016c73a60f4e1ac73c9f'
+md5sums=('6bf7faa9d4996197e0e404e8c25016f8'
'SKIP')
build() {
@@ -27,7 +27,7 @@ build() {
check() {
cd ${pkgname}-* #${pkgver}
- make check
+ make check # || /bin/true
}
package() {
diff --git a/extra/goffice/PKGBUILD b/extra/goffice/PKGBUILD
index 834726b65..6782d9a8e 100644
--- a/extra/goffice/PKGBUILD
+++ b/extra/goffice/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 206074 2014-02-17 08:07:16Z jgc $
+# $Id: PKGBUILD 211546 2014-04-19 20:07:35Z jgc $
# Maintainer: Aaron Griffin <aaron@archlinux.org>
pkgname=goffice
-pkgver=0.10.11
+pkgver=0.10.14
pkgrel=1
pkgdesc="A library of document-centric objects and utilities built on top of GLib and Gtk+"
arch=('i686' 'x86_64')
url="http://www.gnome.org"
license=('GPL')
makedepends=('pkgconfig' 'intltool' 'gtk-doc' 'gobject-introspection')
-depends=('librsvg' 'gtk3' 'libgsf' 'libspectre')
+depends=('librsvg' 'gtk3' 'libgsf' 'libspectre' 'libxslt')
source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver:0:4}/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('43f419aff4ecdfff8c201e2cac884050e6906dc679e6bbac9c6647c6c706ff24')
+sha256sums=('c0783ca32828a64a65fe57609a692c1cb6627d3dfe8bed4fed8a70f32c8f404e')
build() {
cd $pkgname-$pkgver
diff --git a/extra/gphoto2/PKGBUILD b/extra/gphoto2/PKGBUILD
index b326354fc..492c59a8b 100644
--- a/extra/gphoto2/PKGBUILD
+++ b/extra/gphoto2/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 204792 2014-01-27 08:53:52Z jgc $
+# $Id: PKGBUILD 211556 2014-04-19 21:04:26Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Eduardo Romero <eduardo@archlinux.org>
# Contributor: Jason Chu <jason@archlinux.org>
pkgname=gphoto2
-pkgver=2.5.3
+pkgver=2.5.4
pkgrel=1
pkgdesc="A digital camera download and access program."
arch=(i686 x86_64)
@@ -11,7 +11,7 @@ url="http://www.gphoto.org"
license=('GPL' 'LGPL')
depends=('libgphoto2' 'popt' 'readline')
source=(http://downloads.sourceforge.net/gphoto/${pkgname}-${pkgver}.tar.bz2{,.asc})
-md5sums=('6d19aeabf196340e1698b3734f090d42'
+md5sums=('55e062dfb09a9589b4f9d6d545724c60'
'SKIP')
build() {
diff --git a/extra/kdebindings-korundum/PKGBUILD b/extra/kdebindings-korundum/PKGBUILD
index 0ee06fdad..b2dec66b9 100644
--- a/extra/kdebindings-korundum/PKGBUILD
+++ b/extra/kdebindings-korundum/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 211375 2014-04-18 18:01:54Z andrea $
+# $Id: PKGBUILD 211526 2014-04-19 11:29:35Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=kdebindings-korundum
pkgver=4.13.0
-pkgrel=1
+pkgrel=2
pkgdesc="Ruby bindings for libraries created by the KDE community"
url="https://projects.kde.org/projects/kde/kdebindings/ruby/korundum"
arch=('i686' 'x86_64')
@@ -30,7 +30,8 @@ build() {
-DCMAKE_INSTALL_PREFIX=/usr \
-DCUSTOM_RUBY_SITE_LIB_DIR=$(ruby -e 'puts RbConfig::CONFIG["vendorlibdir"]') \
-DCUSTOM_RUBY_SITE_ARCH_DIR=$(ruby -e 'puts RbConfig::CONFIG["vendorarchdir"]') \
- -DWITH_Nepomuk=OFF
+ -DWITH_Nepomuk=OFF \
+ -DWITH_Soprano=OFF
make
}
diff --git a/extra/kdebindings-python/PKGBUILD b/extra/kdebindings-python/PKGBUILD
index c5d3f7af1..e0ef5e7aa 100644
--- a/extra/kdebindings-python/PKGBUILD
+++ b/extra/kdebindings-python/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 211343 2014-04-18 18:01:29Z andrea $
+# $Id: PKGBUILD 211539 2014-04-19 12:24:44Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgbase=kdebindings-python
@@ -6,7 +6,7 @@ pkgname=('kdebindings-python'
'kdebindings-python2'
'kdebindings-python-common')
pkgver=4.13.0
-pkgrel=1
+pkgrel=2
url='https://projects.kde.org/projects/kde/kdebindings/pykde4'
arch=('i686' 'x86_64')
license=('GPL' 'LGPL' 'FDL')
@@ -36,7 +36,8 @@ build() {
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DPYTHON_LIBRARY=/usr/lib/libpython3.4m.so.1.0 \
-DPYKDEUIC4_ALTINSTALL=TRUE \
- -DWITH_Nepomuk=OFF
+ -DWITH_Nepomuk=OFF \
+ -DWITH_Soprano=OFF
make
cd ..
@@ -48,7 +49,8 @@ build() {
-DCMAKE_INSTALL_PREFIX=/usr \
-DPYTHON_EXECUTABLE=/usr/bin/python2 \
-DPYKDEUIC4_ALTINSTALL=TRUE \
- -DWITH_Nepomuk=OFF
+ -DWITH_Nepomuk=OFF \
+ -DWITH_Soprano=OFF
make
}
diff --git a/extra/kdebindings-smokekde/PKGBUILD b/extra/kdebindings-smokekde/PKGBUILD
index b0d3f5024..4ac7c87d1 100644
--- a/extra/kdebindings-smokekde/PKGBUILD
+++ b/extra/kdebindings-smokekde/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 211345 2014-04-18 18:01:30Z andrea $
+# $Id: PKGBUILD 211523 2014-04-19 11:28:51Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=kdebindings-smokekde
pkgver=4.13.0
-pkgrel=1
+pkgrel=2
pkgdesc="Language independent library for KDE bindings"
url="https://projects.kde.org/projects/kde/kdebindings/smoke/smokekde"
arch=('i686' 'x86_64')
@@ -30,7 +30,8 @@ build() {
-DCMAKE_BUILD_TYPE=Release \
-DKDE4_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DWITH_Nepomuk=OFF
+ -DWITH_Nepomuk=OFF \
+ -DWITH_Soprano=OFF
make
}
diff --git a/extra/libdvdread/PKGBUILD b/extra/libdvdread/PKGBUILD
index e28b1e3c8..8eed2a6c7 100644
--- a/extra/libdvdread/PKGBUILD
+++ b/extra/libdvdread/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 204777 2014-01-27 07:05:18Z jgc $
+# $Id: PKGBUILD 211560 2014-04-19 21:10:15Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgname=libdvdread
-pkgver=4.2.1
+pkgver=4.9.9
pkgrel=1
pkgdesc="Provides a simple foundation for reading DVD video disks"
arch=(i686 x86_64)
@@ -14,11 +14,11 @@ depends=('glibc')
makedepends=('libdvdcss')
optdepends=('libdvdcss: for decoding encrypted DVDs')
source=(http://dvdnav.mplayerhq.hu/releases/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('af9b98f049580a6521d56c978b736d3d609562dd12955e11d50e26d97542dcd4')
+sha256sums=('d91275471ef69d488b05cf15c60e1cd65e17648bfc692b405787419f47ca424a')
build() {
cd $pkgname-$pkgver
- ./autogen.sh --prefix=/usr
+ ./configure --prefix=/usr
make
}
diff --git a/extra/libgphoto2/PKGBUILD b/extra/libgphoto2/PKGBUILD
index 4ae640420..e595f65df 100644
--- a/extra/libgphoto2/PKGBUILD
+++ b/extra/libgphoto2/PKGBUILD
@@ -1,27 +1,24 @@
-# $Id: PKGBUILD 206566 2014-03-01 15:43:35Z andyrtr $
+# $Id: PKGBUILD 211554 2014-04-19 21:02:29Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Eduardo Romero <eduardo@archlinux.org>
# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
pkgname=libgphoto2
-pkgver=2.5.3.1
-pkgrel=2
+pkgver=2.5.4
+pkgrel=1
pkgdesc="The core library of gphoto2, designed to allow access to digital camera by external programs."
arch=(i686 x86_64)
url="http://www.gphoto.org"
license=(LGPL)
depends=('libexif' 'libjpeg' 'gd' 'libltdl' 'libusb')
install=libgphoto2.install
-# libtool files should be obsolete meanwhile, they have been added in 2008
-# https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/libgphoto2&id=e029ddabe9716521cf1e0eeb1f1988e4104e15b6
-#options=('libtool')
source=(http://downloads.sourceforge.net/gphoto/${pkgname}-${pkgver}.tar.bz2{,.asc})
-md5sums=('aad2607a84442769c14f6acce2ca1ddf'
+md5sums=('4f549a8600228a27f547d47ca1a97f09'
'SKIP')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd $pkgname-$pkgver
./configure \
--prefix=/usr \
--disable-rpath
@@ -29,7 +26,7 @@ build() {
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd $pkgname-$pkgver
make DESTDIR="${pkgdir}" install
# Remove unused udev helper
diff --git a/extra/lpeg/LICENSE b/extra/lpeg/LICENSE
new file mode 100644
index 000000000..71163fb9d
--- /dev/null
+++ b/extra/lpeg/LICENSE
@@ -0,0 +1,7 @@
+Copyright © 2008 Lua.org, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/extra/lpeg/PKGBUILD b/extra/lpeg/PKGBUILD
new file mode 100644
index 000000000..cb41088ee
--- /dev/null
+++ b/extra/lpeg/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 211535 2014-04-19 12:07:46Z bpiotrowski $
+# Maintainer:
+# Contributor: Gustavo Alvarez <sl1pkn07@gmail.com>
+
+pkgbase=lpeg
+pkgname=(lua-lpeg lua51-lpeg)
+pkgver=0.12
+pkgrel=2
+arch=('i686' 'x86_64')
+url='http://www.inf.puc-rio.br/~roberto/lpeg'
+license=('MIT')
+makedepends=('lua' 'lua51')
+source=(http://www.inf.puc-rio.br/~roberto/$pkgbase/$pkgbase-$pkgver.tar.gz
+ lpeg-0.12-makefile.patch
+ LICENSE)
+md5sums=('4abb3c28cd8b6565c6a65e88f06c9162'
+ '75ea7deffd790f482c9473ff2e9e1cdf'
+ 'dccb97b431c3a3ccaacc216c6242e9fd')
+
+prepare() {
+ pushd $pkgbase-$pkgver
+ patch -p1 -i ../lpeg-0.12-makefile.patch
+ popd
+
+ cp -r $pkgbase-$pkgver $pkgbase-$pkgver-51
+}
+
+build() {
+ cd $pkgbase-$pkgver
+ make LUADIR=/usr/include
+
+ cd "$srcdir"/$pkgbase-$pkgver-51
+ make LUADIR=/usr/include/lua5.1
+}
+
+package_lua-lpeg() {
+ pkgdesc='Pattern-matching library for Lua 5.2'
+ depends=('lua')
+
+ cd $pkgbase-$pkgver
+ install -Dm755 $pkgbase.so "$pkgdir"/usr/lib/lua/5.2/$pkgbase.so
+ install -Dm644 re.lua "$pkgdir"/usr/share/lua/5.2/re.lua
+ install -Dm644 ../LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
+
+package_lua51-lpeg() {
+ pkgdesc='Pattern-matching library for Lua 5.1'
+ depends=('lua51')
+
+ cd $pkgbase-$pkgver-51
+ install -Dm755 $pkgbase.so "$pkgdir"/usr/lib/lua/5.1/$pkgbase.so
+ install -Dm644 re.lua "$pkgdir"/usr/share/lua/5.1/re.lua
+ install -Dm644 ../LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/lpeg/lpeg-0.12-makefile.patch b/extra/lpeg/lpeg-0.12-makefile.patch
new file mode 100644
index 000000000..5734de9f5
--- /dev/null
+++ b/extra/lpeg/lpeg-0.12-makefile.patch
@@ -0,0 +1,37 @@
+--- lpeg-0.12/makefile
++++ lpeg-0.12/makefile
+@@ -1,7 +1,7 @@
+ LIBNAME = lpeg
+ LUADIR = /usr/include/lua5.1/
+
+-COPT = -O2
++#COPT = -O2
+ # COPT = -DLPEG_DEBUG -g
+
+ CWARNS = -Wall -Wextra -pedantic \
+@@ -22,21 +22,21 @@
+ # -Wunreachable-code \
+
+
+-CFLAGS = $(CWARNS) $(COPT) -ansi -I$(LUADIR) -fPIC
++CFLAGS += $(CWARNS) $(COPT) -ansi -I$(LUADIR) -fPIC
+ CC = gcc
+
+ FILES = lpvm.o lpcap.o lptree.o lpcode.o lpprint.o
+
+ # For Linux
+ linux:
+- make lpeg.so "DLLFLAGS = -shared -fPIC"
++ $(MAKE) lpeg.so "DLLFLAGS = -shared -fPIC"
+
+ # For Mac OS
+ macosx:
+- make lpeg.so "DLLFLAGS = -bundle -undefined dynamic_lookup"
++ $(MAKE) lpeg.so "DLLFLAGS = -bundle -undefined dynamic_lookup"
+
+ lpeg.so: $(FILES)
+- env $(CC) $(DLLFLAGS) $(FILES) -o lpeg.so
++ env $(CC) $(CFLAGS) $(DLLFLAGS) $(LDFLAGS) $(FILES) -o lpeg.so
+
+ $(FILES): makefile
+
diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD
index e882ec5e0..90749cacd 100644
--- a/extra/mesa/PKGBUILD
+++ b/extra/mesa/PKGBUILD
@@ -1,20 +1,20 @@
-# $Id: PKGBUILD 210291 2014-04-13 14:05:33Z lcarlier $
+# $Id: PKGBUILD 211519 2014-04-19 07:28:36Z lcarlier $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgbase=mesa
pkgname=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa' 'mesa-libgl')
-pkgver=10.1.0
-pkgrel=5
+pkgver=10.1.1
+pkgrel=1
arch=('i686' 'x86_64')
makedepends=('python2' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto'
'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'wayland' 'elfutils' 'llvm' 'systemd')
url="http://mesa3d.sourceforge.net"
license=('custom')
-source=(ftp://ftp.freedesktop.org/pub/mesa/10.1/MesaLib-${pkgver}.tar.bz2
+source=(ftp://ftp.freedesktop.org/pub/mesa/${pkgver}/MesaLib-${pkgver}.tar.bz2
LICENSE
workaround-for-robustness-and-reset-with-intel.patch)
-md5sums=('3ec43f79dbcd9aa2a4a27bf1f51655b6'
+md5sums=('1fde7ed079df7aeb9b6a744ca033de8d'
'5c65a0fe315dd347e09b1f2826a1df5a'
'b6b744a948b0de9cd14a2a971b7472de')
diff --git a/extra/wildmidi/PKGBUILD b/extra/wildmidi/PKGBUILD
index 62324cf9d..f7e59bd8e 100644
--- a/extra/wildmidi/PKGBUILD
+++ b/extra/wildmidi/PKGBUILD
@@ -3,7 +3,7 @@
# Contributor: Panagiotis Papadopoulos
pkgname=wildmidi
-pkgver=0.3.2
+pkgver=0.3.6
pkgrel=1
pkgdesc='Open Source MIDI Synthesizer'
arch=('i686' 'x86_64')
@@ -12,7 +12,7 @@ license=('LGPL3')
depends=('alsa-lib')
makedepends=('cmake')
source=(https://github.com/psi29a/wildmidi/archive/wildmidi-${pkgver}.tar.gz)
-md5sums=('9fda0b9d5290af9516e2da576103fab8')
+md5sums=('6886940426a6a140f7da0eccbd003528')
prepare() {
mkdir build
diff --git a/community/xapian-core/PKGBUILD b/extra/xapian-core/PKGBUILD
index 88ba457e2..ac550a467 100644
--- a/community/xapian-core/PKGBUILD
+++ b/extra/xapian-core/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 105911 2014-02-19 08:50:20Z spupykin $
+# $Id: PKGBUILD 211530 2014-04-19 11:52:52Z andrea $
# Contributor: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Alexander Fehr <pizzapunk gmail com>
# Contributor: William Rea <sillywilly@gmail.com>
diff --git a/kernels/linux-libre-knock/PKGBUILD b/kernels/linux-libre-knock/PKGBUILD
deleted file mode 100644
index efe66b2df..000000000
--- a/kernels/linux-libre-knock/PKGBUILD
+++ /dev/null
@@ -1,451 +0,0 @@
-# $Id: PKGBUILD 204911 2014-01-31 09:59:51Z bluewind $
-# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
-# Maintainer: Thomas Baechler <thomas@archlinux.org>
-# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
-# Contributor (Parabola): Nicolás Reynolds <fauno@kiwwwi.com.ar>
-# Contributor (Parabola): Sorin-Mihai Vârgolici <smv@yobicore.org>
-# Contributor (Parabola): Michał Masłowski <mtjm@mtjm.eu>
-# Contributor (Parabola): Márcio Silva <coadde@parabola.nu>
-
-pkgbase=linux-libre-knock # Build stock -LIBRE-KNOCK kernel
-#pkgbase=linux-libre-custom # Build kernel with a different name
-_basekernel=3.12
-_sublevel=14
-_knockpatchver=${_basekernel}.4
-pkgver=${_basekernel}.${_sublevel}
-pkgrel=1
-_lxopkgver=${_basekernel}.14 # nearly always the same as pkgver
-arch=('i686' 'x86_64' 'mips64el')
-url="http://linux-libre.fsfla.org/"
-license=('GPL2')
-makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
-options=('!strip')
-source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz"
- "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz"
- "http://gnunet.org/sites/default/files/tcp_stealth_${_knockpatchver}.diff"
- # the main kernel config files
- 'config.i686' 'config.x86_64'
- # standard config files for mkinitcpio ramdisk
- "${pkgbase}.preset"
- 'Kbuild'
- 'Kbuild.platforms'
- 'boot-logo.patch'
- 'change-default-console-loglevel.patch'
- 'criu-no-expert.patch'
- 'sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch'
- 'sunrpc-replace-gssd_running-with-more-reliable-check.patch'
- 'nfs-check-gssd-running-before-krb5i-auth.patch'
- 'rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch'
- 'sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch'
- 'rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch'
- "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.xz")
-md5sums=('254f59707b6676b59ce5ca5c3c698319'
- '93624626751140852d82d83aecfd377d'
- '387673a6510de1e1bce8188fc7a72bd1'
- '6eac169d20fd27b55815b0b2db4a473b'
- 'f341bc4685a40dc409b144b0f44bb137'
- '18d660832d681a27084774222fc74c1d'
- '2967cecc3af9f954ccc822fd63dca6ff'
- '8267264d9a8966e57fdacd1fa1fc65c4'
- '44260d2cb1a8b51c119d2ce1f83e457a'
- '98beb36f9b8cf16e58de2483ea9985e3'
- 'd50c1ac47394e9aec637002ef3392bd1'
- 'd4a75f77e6bd5d700dcd534cd5f0dfce'
- 'dc86fdc37615c97f03c1e0c31b7b833a'
- '88eef9d3b5012ef7e82af1af8cc4e517'
- 'cec0bb8981936eab2943b2009b7a6fff'
- '88d9cddf9e0050a76ec4674f264fb2a1'
- 'cb9016630212ef07b168892fbcfd4e5d'
- '1e2d95b87a7ab398527b3aac78ea29c5')
-if [ "$CARCH" != "mips64el" ]; then
- # don't use the Loongson-specific patches on non-mips64el arches.
- unset source[${#source[@]}-1]
- unset md5sums[${#md5sums[@]}-1]
-fi
-
-_kernelname=${pkgbase#linux-libre}
-_localversionname=-LIBRE-KNOCK
-
-prepare() {
- cd "${srcdir}/linux-${_basekernel}"
-
- if [ "${_basekernel}" != "${pkgver}" ]; then
- patch -Np1 -i "${srcdir}/patch-${_basekernel}-gnu-${pkgver}-gnu"
- fi
-
- # add knock patch
- patch -p1 -i "${srcdir}/tcp_stealth_${_knockpatchver}.diff"
-
- # add freedo as boot logo
- patch -Np1 -i "${srcdir}/boot-logo.patch"
-
- # fix issue on Hal8188EFWImg_CE.c deblobbed file
- sed -i "\|DEBLOBBED| s|,||" drivers/staging/rtl8188eu/hal/Hal8188EFWImg_CE.c
-
- # add latest fixes from stable queue, if needed
- # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
-
- # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
- # remove this when a Kconfig knob is made available by upstream
- # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
- patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
-
- # allow criu without expert option set
- # patch from fedora
- patch -Np1 -i "${srcdir}/criu-no-expert.patch"
-
- # fix 15 seconds nfs delay
- patch -Np1 -i "${srcdir}/sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch"
- patch -Np1 -i "${srcdir}/sunrpc-replace-gssd_running-with-more-reliable-check.patch"
- patch -Np1 -i "${srcdir}/nfs-check-gssd-running-before-krb5i-auth.patch"
- # fix nfs kernel oops
- # #37866
- patch -Np1 -i "${srcdir}/rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch"
- patch -Np1 -i "${srcdir}/sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch"
-
- patch -Np1 -i "${srcdir}/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch"
-
- if [ "$CARCH" == "mips64el" ]; then
- sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre-knock|" Makefile
- sed -r "s|^( SUBLEVEL = ).*|\1$_sublevel|" \
- < "${srcdir}/lxo-config.patch" > lxo-config.patch
- msg2 "Adding loongson-community patches"
- patch -Np1 -i ${srcdir}/${_basekernel}*-*-loongson-community.patch
- patch -Np0 -i lxo-config.patch
-
- # ensure N32, add localversion, remove uevent helper as per
- # https://git.kernel.org/?p=linux/hotplug/udev.git;a=blob_plain;f=README
- # and make USB storage support builtin (e.g. for booting from USB
- # disks without slowly loading an initramfs)
- sed -ri \
- -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \
- -e "s|CONFIG_UEVENT_HELPER_PATH=.*|CONFIG_UEVENT_HELPER_PATH=\"\"|g" \
- -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" \
- -e "s;(CONFIG_USB(_COMMON|_EHCI_HCD|_OHCI_HCD|_STORAGE.*|_UAS)?)=.*;\1=y;g" \
- ./.config
- else
- cat "${srcdir}/config.${CARCH}" > ./.config # simpler
- fi
-
- if [ "${_kernelname}" != "" ]; then
- sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" ./.config
- sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
- fi
-
- # set extraversion to pkgrel
- sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
-
- # don't run depmod on 'make install'. We'll do this ourselves in packaging
- sed -i '2iexit 0' scripts/depmod.sh
-}
-
-build() {
- cd "${srcdir}/linux-${_basekernel}"
-
- # get kernel version
- make prepare
-
- # load configuration
- # Configure the kernel. Replace the line below with one of your choice.
- #make menuconfig # CLI menu for configuration
- #make nconfig # new CLI menu for configuration
- #make xconfig # X-based configuration
- #make oldconfig # using old config from previous kernel version
- # ... or manually edit .config
-
- # rewrite configuration
- yes "" | make config >/dev/null
-
- # save configuration for later reuse
- if [ "${CARCH}" = "x86_64" ]; then
- cat .config > "${startdir}/config.x86_64.last"
- else
- cat .config > "${startdir}/config.i686.last"
- fi
-
- ####################
- # stop here
- # this is useful to configure the kernel
- #msg "Stopping build"; return 1
- ####################
-
- # build!
- if [ "$CARCH" == "mips64el" ]; then
- # The build system passes it directly to linker, disable to avoid
- # having unknown -Wl,... options.
- export LDFLAGS=""
- # bzImage is arch-specific and not supported on mips; vmlinux is
- # useful for oprofile.
- make ${MAKEFLAGS} LOCALVERSION= vmlinux vmlinuz modules
- else
- make ${MAKEFLAGS} LOCALVERSION= bzImage modules
- fi
-}
-
-_package() {
- pkgdesc="The ${pkgbase^} kernel and modules with support for stealth TCP sockets"
- [ "${pkgbase}" = "linux-libre" ] && groups=('base')
- depends=('coreutils' 'linux-libre-firmware' 'kmod')
- optdepends=('crda: to set the correct wireless channels of your country')
- provides=("kernel26${_kernelname}=${pkgver}" "linux${_kernelname}=${pkgver}")
- conflicts=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}")
- replaces=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}")
- backup=("etc/mkinitcpio.d/${pkgbase}.preset")
- install=${pkgbase}.install
- if [ "$CARCH" = "mips64el" ]; then
- optdepends+=('mkinitcpio: to make the initramfs (needs reinstall of this package)')
- conflicts+=('mkinitcpio<0.7')
- else
- depends+=('mkinitcpio>=0.7')
- fi
-
- cd "${srcdir}/linux-${_basekernel}"
-
- KARCH=x86
- [ $CARCH = "mips64el" ] && KARCH=mips
-
- # get kernel version
- _kernver="$(make LOCALVERSION= kernelrelease)"
- _basekernel=${_kernver%%-*}
- _basekernel=${_basekernel%.*}
-
- mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
- make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
-
- if [ "$CARCH" == "mips64el" ]; then
- cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgbase}"
- cp vmlinux "${pkgdir}/boot/vmlinux-${pkgbase}"
- else
- cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgbase}"
- fi
-
- # add vmlinux
- install -D -m644 vmlinux "${pkgdir}/usr/src/linux-${_kernver}/vmlinux"
-
- # set correct depmod command for install
- cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
- true && install=${install}.pkg
- sed \
- -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
- -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
- -i "${startdir}/${install}"
-
- # install mkinitcpio preset file for kernel
- install -D -m644 "${srcdir}/${pkgbase}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- sed \
- -e "1s|'linux*.*'|'${pkgbase}'|" \
- -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
- -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
- -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
- -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
-
- # mkinitcpio 0.7 relies on bzImage to find the kernel version
- if [ "$CARCH" == "mips64el" ]; then
- sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \
- -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- fi
-
- # remove build and source links
- rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
- # remove the firmware
- rm -rf "${pkgdir}/lib/firmware"
- # gzip -9 all modules to save 100MB of space
- find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
- # make room for external modules
- ln -s "../extramodules-${_basekernel}${_localversionname:--LIBRE-KNOCK}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
- # add real version for building modules and running depmod from post_install/upgrade
- mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-KNOCK}"
- echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-KNOCK}/version"
-
- # Now we call depmod...
- depmod -b "$pkgdir" -F System.map "$_kernver"
-
- # move module tree /lib -> /usr/lib
- mv "$pkgdir/lib" "$pkgdir/usr"
-}
-
-_package-headers() {
- pkgdesc="Header files and scripts for building modules for ${pkgbase^} kernel"
- provides=("kernel26${_kernelname}-headers=${pkgver}" "linux${_kernelname}-headers=${pkgver}")
- conflicts=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers")
- replaces=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers")
-
- KARCH=x86
- [ $CARCH = "mips64el" ] && KARCH=mips
-
- # in case of repackaging this is empty
- if [ -z "${_kernver}" ]; then
- cd "${srcdir}/linux-${_basekernel}"
- _kernver="$(make LOCALVERSION= kernelrelease)"
- fi
-
- install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
-
- cd "${pkgdir}/usr/lib/modules/${_kernver}"
- ln -sf ../../../src/linux-${_kernver} build
-
- cd "${srcdir}/linux-${_basekernel}"
- install -D -m644 Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/Makefile"
- install -D -m644 kernel/Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile"
- install -D -m644 .config \
- "${pkgdir}/usr/src/linux-${_kernver}/.config"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include"
-
- for i in acpi asm-generic config crypto drm generated keys linux math-emu \
- media net pcmcia scsi sound trace uapi video xen; do
- cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/"
- done
-
- # copy arch includes for external modules
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}"
- cp -a "arch/${KARCH}/include" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
-
- # copy files necessary for later builds
- cp Module.symvers "${pkgdir}/usr/src/linux-${_kernver}"
- cp -a scripts "${pkgdir}/usr/src/linux-${_kernver}"
-
- if [ "$CARCH" = "mips64el" ]; then
- cp "arch/${KARCH}/Kbuild" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- cp -a "arch/${KARCH}/loongson" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- cp "${srcdir}/Kbuild.platforms" "${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/"
- fi
-
- # fix permissions on scripts dir
- chmod og-w -R "${pkgdir}/usr/src/linux-${_kernver}/scripts"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel"
-
- cp arch/${KARCH}/Makefile "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
-
- if [ "${CARCH}" = "i686" ]; then
- cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- fi
-
- cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel/"
-
- # add headers for lirc package
- # pci
- for i in bt8xx cx88 saa7134; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
- cp -a drivers/media/pci/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
- done
- # usb
- for i in cpia2 em28xx pwc sn9c102; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
- cp -a drivers/media/usb/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
- done
- # i2c
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c"
- cp drivers/media/i2c/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
- for i in cx25840; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
- cp -a drivers/media/i2c/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
- done
-
- # add docbook makefile
- install -D -m644 Documentation/DocBook/Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
-
- # add dm headers
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
- cp drivers/md/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
-
- # add inotify.h
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/linux"
- cp include/linux/inotify.h "${pkgdir}/usr/src/linux-${_kernver}/include/linux/"
-
- # add wireless headers
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
- cp net/mac80211/*.h "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
-
- # add dvb headers for external modules
- # in reference to:
- # http://bugs.archlinux.org/task/9912
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core"
- cp drivers/media/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core/"
- # and...
- # http://bugs.archlinux.org/task/11194
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
- cp include/config/dvb/*.h "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
-
- # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
- # in reference to:
- # http://bugs.archlinux.org/task/13146
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
-
- # add dvb headers
- # in reference to:
- # http://bugs.archlinux.org/task/20402
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb"
- cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb/"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends"
- cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners"
- cp drivers/media/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners/"
-
- # add xfs and shmem for aufs building
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/mm"
- cp fs/xfs/xfs_sb.h "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h"
-
- # copy in Kconfig files
- for i in `find . -name "Kconfig*"`; do
- mkdir -p "${pkgdir}"/usr/src/linux-${_kernver}/`echo ${i} | sed 's|/Kconfig.*||'`
- cp ${i} "${pkgdir}/usr/src/linux-${_kernver}/${i}"
- done
-
- chown -R root.root "${pkgdir}/usr/src/linux-${_kernver}"
- find "${pkgdir}/usr/src/linux-${_kernver}" -type d -exec chmod 755 {} \;
-
- # strip scripts directory
- find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
- case "$(file -bi "${binary}")" in
- *application/x-sharedlib*) # Libraries (.so)
- /usr/bin/strip ${STRIP_SHARED} "${binary}";;
- *application/x-archive*) # Libraries (.a)
- /usr/bin/strip ${STRIP_STATIC} "${binary}";;
- *application/x-executable*) # Binaries
- /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
- esac
- done
-
- # remove unneeded architectures
- rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
- if [ "$CARCH" = "mips64el" ]; then
- rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
- else
- rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/mips
- fi
-}
-
-_package-docs() {
- pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase^} kernel"
- provides=("kernel26${_kernelname}-docs=${pkgver}" "linux${_kernelname}-docs=${pkgver}")
- conflicts=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs")
- replaces=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs")
-
- cd "${srcdir}/linux-${_basekernel}"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}"
- cp -al Documentation "${pkgdir}/usr/src/linux-${_kernver}"
- find "${pkgdir}" -type f -exec chmod 444 {} \;
- find "${pkgdir}" -type d -exec chmod 755 {} \;
-
- # remove a file already in linux package
- rm -f "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
-}
-
-pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
-for _p in ${pkgname[@]}; do
- eval "package_${_p}() {
- _package${_p#${pkgbase}}
- }"
-done
-
-# vim:set ts=8 sts=2 sw=2 et:
diff --git a/kernels/linux-libre-rt/PKGBUILD b/kernels/linux-libre-rt/PKGBUILD
deleted file mode 100644
index b5cf9c753..000000000
--- a/kernels/linux-libre-rt/PKGBUILD
+++ /dev/null
@@ -1,451 +0,0 @@
-# Maintainer: Joakim Hernberg <jbh@alchemy.lu>
-# Contributor: Ray Rashif <schiv@archlinux.org>
-# Contributor: timbosa <tinny_tim@dodo.com.au>
-# Contributor: Tobias Powalowski <tpowa@archlinux.org>
-# Contributor: Thomas Baechler <thomas@archlinux.org>
-# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
-# Contributor (Parabola): Márcio Silva <coadde@parabola.nu>
-
-pkgbase=linux-libre-rt # Build stock -LIBRE-RT kernel
-#pkgbase=linux-libre-custom # Build kernel with a different name
-_basekernel=3.12
-_releasever=13
-_rtpatchver=rt21
-_pkgver=${_basekernel}.${_releasever}
-pkgver=${_basekernel}.${_releasever}_${_rtpatchver}
-pkgrel=1
-_lxopkgver=${_basekernel}.13 # nearly always the same as pkgver
-arch=('i686' 'x86_64' 'mips64el')
-url="http://linux-libre.fsfla.org/"
-license=('GPL2')
-makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
-options=('!strip')
-source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz"
- "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}-gnu/patch-${_basekernel}-gnu-${_pkgver}-gnu.xz"
- "http://www.kernel.org/pub/linux/kernel/projects/rt/${_basekernel}/patch-${_pkgver}-${_rtpatchver}.patch.xz"
- # the main kernel config files
- 'config.i686' 'config.x86_64'
- # standard config files for mkinitcpio ramdisk
- "${pkgbase}.preset"
- 'Kbuild'
- 'Kbuild.platforms'
- 'boot-logo.patch'
- 'change-default-console-loglevel.patch'
- 'criu-no-expert.patch'
- 'sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch'
- 'sunrpc-replace-gssd_running-with-more-reliable-check.patch'
- 'nfs-check-gssd-running-before-krb5i-auth.patch'
- 'rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch'
- 'sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch'
- 'rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch'
- "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2")
-md5sums=('254f59707b6676b59ce5ca5c3c698319'
- 'e2ec796847356b785cb06d0563f3f7d5'
- '60f4b7018bf88ad0ba887b3a492f6b1a'
- 'e40789b1e59136235827a3b3bf40c121'
- 'bf542c4038d3e7d0da4c92bac0466198'
- '82496e68851d1960543a07ba51cdb44a'
- '2967cecc3af9f954ccc822fd63dca6ff'
- '8267264d9a8966e57fdacd1fa1fc65c4'
- '44260d2cb1a8b51c119d2ce1f83e457a'
- '98beb36f9b8cf16e58de2483ea9985e3'
- 'd50c1ac47394e9aec637002ef3392bd1'
- 'd4a75f77e6bd5d700dcd534cd5f0dfce'
- 'dc86fdc37615c97f03c1e0c31b7b833a'
- '88eef9d3b5012ef7e82af1af8cc4e517'
- 'cec0bb8981936eab2943b2009b7a6fff'
- '88d9cddf9e0050a76ec4674f264fb2a1'
- 'cb9016630212ef07b168892fbcfd4e5d'
- '3ce39522f0d8d1422dc095d2a17a77d6')
-if [ "$CARCH" != "mips64el" ]; then
- # don't use the Loongson-specific patches on non-mips64el arches.
- unset source[${#source[@]}-1]
- unset md5sums[${#md5sums[@]}-1]
-fi
-
-_kernelname=${pkgbase#linux-libre}
-_localversionname=-LIBRE-RT
-
-prepare() {
- cd "${srcdir}/linux-${_basekernel}"
-
- if [ "${_basekernel}" != "${_pkgver}" ]; then
- patch -Np1 -i "${srcdir}/patch-${_basekernel}-gnu-${_pkgver}-gnu"
- fi
-
- # add realtime patch
- patch -p1 -i "${srcdir}/patch-${_pkgver}-${_rtpatchver}.patch"
-
- # add freedo as boot logo
- patch -Np1 -i "${srcdir}/boot-logo.patch"
-
- # fix issue on Hal8188EFWImg_CE.c deblobbed file
- sed -i "\|DEBLOBBED| s|,||" drivers/staging/rtl8188eu/hal/Hal8188EFWImg_CE.c
-
- # add latest fixes from stable queue, if needed
- # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
-
- # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
- # remove this when a Kconfig knob is made available by upstream
- # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
- patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
-
- # allow criu without expert option set
- # patch from fedora
- patch -Np1 -i "${srcdir}/criu-no-expert.patch"
-
- # fix 15 seconds nfs delay
- patch -Np1 -i "${srcdir}/sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch"
- patch -Np1 -i "${srcdir}/sunrpc-replace-gssd_running-with-more-reliable-check.patch"
- patch -Np1 -i "${srcdir}/nfs-check-gssd-running-before-krb5i-auth.patch"
- # fix nfs kernel oops
- # #37866
- patch -Np1 -i "${srcdir}/rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch"
- patch -Np1 -i "${srcdir}/sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch"
-
- patch -Np1 -i "${srcdir}/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch"
-
- if [ "$CARCH" == "mips64el" ]; then
- sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre-rt|" Makefile
- sed -r "s|^( SUBLEVEL = ).*|\1$_sublevel|" \
- < "${srcdir}/lxo-config.patch" > lxo-config.patch
- msg2 "Adding loongson-community patches"
- patch -Np1 -i ${srcdir}/${_basekernel}*-*-loongson-community.patch
- patch -Np0 -i lxo-config.patch
-
- # ensure N32, add localversion, remove uevent helper as per
- # https://git.kernel.org/?p=linux/hotplug/udev.git;a=blob_plain;f=README
- # and make USB storage support builtin (e.g. for booting from USB
- # disks without slowly loading an initramfs)
- sed -ri \
- -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \
- -e "s|CONFIG_UEVENT_HELPER_PATH=.*|CONFIG_UEVENT_HELPER_PATH=\"\"|g" \
- -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" \
- -e "s;(CONFIG_USB(_COMMON|_EHCI_HCD|_OHCI_HCD|_STORAGE.*|_UAS)?)=.*;\1=y;g" \
- ./.config
- else
- cat "${srcdir}/config.${CARCH}" > ./.config # simpler
- fi
-
- if [ "${_kernelname}" != "" ]; then
- sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" ./.config
- sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
- fi
-
- # set extraversion to pkgrel
- sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
-
- # don't run depmod on 'make install'. We'll do this ourselves in packaging
- sed -i '2iexit 0' scripts/depmod.sh
-}
-
-build() {
- cd "${srcdir}/linux-${_basekernel}"
-
- # get kernel version
- make prepare
-
- # load configuration
- # Configure the kernel. Replace the line below with one of your choice.
- #make menuconfig # CLI menu for configuration
- #make nconfig # new CLI menu for configuration
- #make xconfig # X-based configuration
- #make oldconfig # using old config from previous kernel version
- # ... or manually edit .config
-
- # rewrite configuration
- yes "" | make config >/dev/null
-
- # save configuration for later reuse
- if [ "${CARCH}" = "x86_64" ]; then
- cat .config > "${startdir}/config.x86_64.last"
- else
- cat .config > "${startdir}/config.i686.last"
- fi
-
- ####################
- # stop here
- # this is useful to configure the kernel
- #msg "Stopping build"; return 1
- ####################
-
- # build!
- if [ "$CARCH" == "mips64el" ]; then
- # The build system passes it directly to linker, disable to avoid
- # having unknown -Wl,... options.
- export LDFLAGS=""
- # bzImage is arch-specific and not supported on mips; vmlinux is
- # useful for oprofile.
- make ${MAKEFLAGS} LOCALVERSION= vmlinux vmlinuz modules
- else
- make ${MAKEFLAGS} LOCALVERSION= bzImage modules
- fi
-}
-
-_package() {
- pkgdesc="The ${pkgbase^} kernel and modules with realtime preemption"
- [ "${pkgbase}" = "linux-libre" ] && groups=('base')
- depends=('coreutils' 'linux-libre-firmware' 'kmod')
- optdepends=('crda: to set the correct wireless channels of your country')
- provides=("kernel26${_kernelname}=${pkgver}" "linux${_kernelname}=${pkgver}")
- conflicts=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}")
- replaces=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}")
- backup=("etc/mkinitcpio.d/${pkgbase}.preset")
- install=${pkgbase}.install
- if [ "$CARCH" = "mips64el" ]; then
- optdepends+=('mkinitcpio: to make the initramfs (needs reinstall of this package)')
- conflicts+=('mkinitcpio<0.7')
- else
- depends+=('mkinitcpio>=0.7')
- fi
-
- cd "${srcdir}/linux-${_basekernel}"
-
- KARCH=x86
- [ $CARCH = "mips64el" ] && KARCH=mips
-
- # get kernel version
- _kernver="$(make LOCALVERSION= kernelrelease)"
- _basekernel=${_kernver%%-*}
- _basekernel=${_basekernel%.*}
-
- mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
- make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
-
- if [ "$CARCH" == "mips64el" ]; then
- cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgbase}"
- cp vmlinux "${pkgdir}/boot/vmlinux-${pkgbase}"
- else
- cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgbase}"
- fi
-
- # add vmlinux
- install -D -m644 vmlinux "${pkgdir}/usr/src/linux-${_kernver}/vmlinux"
-
- # set correct depmod command for install
- cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
- true && install=${install}.pkg
- sed \
- -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
- -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
- -i "${startdir}/${install}"
-
- # install mkinitcpio preset file for kernel
- install -D -m644 "${srcdir}/${pkgbase}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- sed \
- -e "1s|'linux*.*'|'${pkgbase}'|" \
- -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
- -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
- -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
- -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
-
- # mkinitcpio 0.7 relies on bzImage to find the kernel version
- if [ "$CARCH" == "mips64el" ]; then
- sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \
- -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
- fi
-
- # remove build and source links
- rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
- # remove the firmware
- rm -rf "${pkgdir}/lib/firmware"
- # gzip -9 all modules to save 100MB of space
- find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
- # make room for external modules
- ln -s "../extramodules-${_basekernel}${_localversionname:--LIBRE-RT}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
- # add real version for building modules and running depmod from post_install/upgrade
- mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-RT}"
- echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-RT}/version"
-
- # Now we call depmod...
- depmod -b "$pkgdir" -F System.map "$_kernver"
-
- # move module tree /lib -> /usr/lib
- mv "$pkgdir/lib" "$pkgdir/usr"
-}
-
-_package-headers() {
- pkgdesc="Header files and scripts for building modules for ${pkgbase^} kernel"
- provides=("kernel26${_kernelname}-headers=${pkgver}" "linux${_kernelname}-headers=${pkgver}")
- conflicts=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers")
- replaces=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers")
-
- KARCH=x86
- [ $CARCH = "mips64el" ] && KARCH=mips
-
- # in case of repackaging this is empty
- if [ -z "${_kernver}" ]; then
- cd "${srcdir}/linux-${_basekernel}"
- _kernver="$(make LOCALVERSION= kernelrelease)"
- fi
-
- install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
-
- cd "${pkgdir}/usr/lib/modules/${_kernver}"
- ln -sf ../../../src/linux-${_kernver} build
-
- cd "${srcdir}/linux-${_basekernel}"
- install -D -m644 Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/Makefile"
- install -D -m644 kernel/Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile"
- install -D -m644 .config \
- "${pkgdir}/usr/src/linux-${_kernver}/.config"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include"
-
- for i in acpi asm-generic config crypto drm generated keys linux math-emu \
- media net pcmcia scsi sound trace uapi video xen; do
- cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/"
- done
-
- # copy arch includes for external modules
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}"
- cp -a "arch/${KARCH}/include" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
-
- # copy files necessary for later builds
- cp Module.symvers "${pkgdir}/usr/src/linux-${_kernver}"
- cp -a scripts "${pkgdir}/usr/src/linux-${_kernver}"
-
- if [ "$CARCH" = "mips64el" ]; then
- cp "arch/${KARCH}/Kbuild" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- cp -a "arch/${KARCH}/loongson" "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- cp "${srcdir}/Kbuild.platforms" "${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/"
- fi
-
- # fix permissions on scripts dir
- chmod og-w -R "${pkgdir}/usr/src/linux-${_kernver}/scripts"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel"
-
- cp arch/${KARCH}/Makefile "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
-
- if [ "${CARCH}" = "i686" ]; then
- cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
- fi
-
- cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel/"
-
- # add headers for lirc package
- # pci
- for i in bt8xx cx88 saa7134; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
- cp -a drivers/media/pci/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
- done
- # usb
- for i in cpia2 em28xx pwc sn9c102; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
- cp -a drivers/media/usb/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
- done
- # i2c
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c"
- cp drivers/media/i2c/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
- for i in cx25840; do
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
- cp -a drivers/media/i2c/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
- done
-
- # add docbook makefile
- install -D -m644 Documentation/DocBook/Makefile \
- "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
-
- # add dm headers
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
- cp drivers/md/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
-
- # add inotify.h
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/linux"
- cp include/linux/inotify.h "${pkgdir}/usr/src/linux-${_kernver}/include/linux/"
-
- # add wireless headers
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
- cp net/mac80211/*.h "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
-
- # add dvb headers for external modules
- # in reference to:
- # http://bugs.archlinux.org/task/9912
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core"
- cp drivers/media/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core/"
- # and...
- # http://bugs.archlinux.org/task/11194
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
- cp include/config/dvb/*.h "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
-
- # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
- # in reference to:
- # http://bugs.archlinux.org/task/13146
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
-
- # add dvb headers
- # in reference to:
- # http://bugs.archlinux.org/task/20402
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb"
- cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb/"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends"
- cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners"
- cp drivers/media/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners/"
-
- # add xfs and shmem for aufs building
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs"
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/mm"
- cp fs/xfs/xfs_sb.h "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h"
-
- # copy in Kconfig files
- for i in `find . -name "Kconfig*"`; do
- mkdir -p "${pkgdir}"/usr/src/linux-${_kernver}/`echo ${i} | sed 's|/Kconfig.*||'`
- cp ${i} "${pkgdir}/usr/src/linux-${_kernver}/${i}"
- done
-
- chown -R root.root "${pkgdir}/usr/src/linux-${_kernver}"
- find "${pkgdir}/usr/src/linux-${_kernver}" -type d -exec chmod 755 {} \;
-
- # strip scripts directory
- find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
- case "$(file -bi "${binary}")" in
- *application/x-sharedlib*) # Libraries (.so)
- /usr/bin/strip ${STRIP_SHARED} "${binary}";;
- *application/x-archive*) # Libraries (.a)
- /usr/bin/strip ${STRIP_STATIC} "${binary}";;
- *application/x-executable*) # Binaries
- /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
- esac
- done
-
- # remove unneeded architectures
- rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
- if [ "$CARCH" = "mips64el" ]; then
- rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
- else
- rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/mips
- fi
-}
-
-_package-docs() {
- pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase^} kernel"
- provides=("kernel26${_kernelname}-docs=${pkgver}" "linux${_kernelname}-docs=${pkgver}")
- conflicts=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs")
- replaces=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs")
-
- cd "${srcdir}/linux-${_basekernel}"
-
- mkdir -p "${pkgdir}/usr/src/linux-${_kernver}"
- cp -al Documentation "${pkgdir}/usr/src/linux-${_kernver}"
- find "${pkgdir}" -type f -exec chmod 444 {} \;
- find "${pkgdir}" -type d -exec chmod 755 {} \;
-
- # remove a file already in linux package
- rm -f "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
-}
-
-pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
-for _p in ${pkgname[@]}; do
- eval "package_${_p}() {
- _package${_p#${pkgbase}}
- }"
-done
-
-# vim:set ts=8 sts=2 sw=2 et:
diff --git a/pcr/nginx-passenger/PKGBUILD b/pcr/nginx-passenger/PKGBUILD
deleted file mode 100644
index f3c8dabbc..000000000
--- a/pcr/nginx-passenger/PKGBUILD
+++ /dev/null
@@ -1,113 +0,0 @@
-# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net
-# Maintainer (AUR): Tom Richards <tom@tomrichards.net>
-# Maintainer (Arch): Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
-# Maintainer (Arch): Sébastien Luttringer
-# Contributor (Arch): Sergej Pupykin <pupykin.s+arch@gmail.com>
-# Contributor (Arch): Miroslaw Szot <mss@czlug.icis.pcz.pl>
-
-pkgname=nginx-passenger
-_nginxver=1.4.7
-_passengerver=4.0.38
-pkgver=$_nginxver.passenger.$_passengerver
-pkgrel=1
-pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server'
-pkgdesc+=" (with Passenger module)"
-arch=('i686' 'x86_64')
-url='http://nginx.org'
-license=('custom')
-depends=('pcre' 'zlib' 'openssl')
-depends+=("passenger=$_passengerver")
-depends+=('ruby' 'ruby-rack' 'curl')
-conflicts=('nginx')
-provides=("nginx=$_nginxver")
-backup=('etc/nginx/fastcgi.conf'
- 'etc/nginx/fastcgi_params'
- 'etc/nginx/koi-win'
- 'etc/nginx/koi-utf'
- 'etc/nginx/mime.types'
- 'etc/nginx/nginx.conf'
- 'etc/nginx/scgi_params'
- 'etc/nginx/uwsgi_params'
- 'etc/nginx/win-utf'
- 'etc/logrotate.d/nginx')
-install=nginx.install
-source=($url/download/nginx-$_nginxver.tar.gz
- passenger-$_passengerver.tar.gz::https://github.com/phusion/passenger/archive/release-$_passengerver.tar.gz
- service
- logrotate)
-md5sums=('aee151d298dcbfeb88b3f7dd3e7a4d17'
- 'ec6cb96a8f3d444540a54a3007143e2e'
- 'ce9a06bcaf66ec4a3c4eb59b636e0dfd'
- '3441ce77cdd1aab6f0ab7e212698a8a7')
-
-build() {
- cd "$srcdir/passenger-release-$_passengerver"
- _nginx_addon_dir=$(bin/passenger-config --nginx-addon-dir)
-
- cd "$srcdir/nginx-$_nginxver"
- ./configure \
- --prefix=/etc/nginx \
- --conf-path=/etc/nginx/nginx.conf \
- --sbin-path=/usr/bin/nginx \
- --pid-path=/run/nginx.pid \
- --lock-path=/run/lock/nginx.lock \
- --user=http \
- --group=http \
- --http-log-path=/var/log/nginx/access.log \
- --error-log-path=stderr \
- --http-client-body-temp-path=/var/lib/nginx/client-body \
- --http-proxy-temp-path=/var/lib/nginx/proxy \
- --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
- --http-scgi-temp-path=/var/lib/nginx/scgi \
- --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
- --with-imap \
- --with-imap_ssl_module \
- --with-ipv6 \
- --with-pcre-jit \
- --with-file-aio \
- --with-http_dav_module \
- --with-http_gunzip_module \
- --with-http_gzip_static_module \
- --with-http_realip_module \
- --with-http_spdy_module \
- --with-http_ssl_module \
- --with-http_stub_status_module \
- --with-http_addition_module \
- --with-http_degradation_module \
- --with-http_flv_module \
- --with-http_mp4_module \
- --with-http_secure_link_module \
- --with-http_sub_module \
- --add-module="$_nginx_addon_dir"
-
- make
-}
-
-package() {
- cd "$srcdir/nginx-$_nginxver"
- make DESTDIR="$pkgdir" install
-
- sed -e 's|\<user\s\+\w\+;|user html;|g' \
- -e '44s|html|/usr/share/nginx/html|' \
- -e '54s|html|/usr/share/nginx/html|' \
- -i "$pkgdir"/etc/nginx/nginx.conf
-
- rm "$pkgdir"/etc/nginx/*.default
-
- install -d "$pkgdir"/var/lib/nginx
- install -dm700 "$pkgdir"/var/lib/nginx/proxy
-
- chmod 750 "$pkgdir"/var/log/nginx
- chown http:log "$pkgdir"/var/log/nginx
-
- install -d "$pkgdir"/usr/share/nginx
- mv "$pkgdir"/etc/nginx/html/ "$pkgdir"/usr/share/nginx
-
- install -Dm644 ../logrotate "$pkgdir"/etc/logrotate.d/nginx
- install -Dm644 ../service "$pkgdir"/usr/lib/systemd/system/nginx.service
- install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
-
- rmdir "$pkgdir"/run
-}
-
-# vim:set ts=2 sw=2 et: