summaryrefslogtreecommitdiff
path: root/community/cinnamon
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-04-15 03:26:32 +0000
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-04-15 03:26:32 +0000
commitad45d1982b97faa9372d99e51daa687c7c09de7d (patch)
treeaf490221f2b733b8f0cf68f3898566d5049c3ab4 /community/cinnamon
parent7c266ff5a9e1f533fd8bd8c2fbbcc05df350dcd3 (diff)
Tue Apr 15 03:22:01 UTC 2014
Diffstat (limited to 'community/cinnamon')
-rw-r--r--community/cinnamon/PKGBUILD30
-rw-r--r--community/cinnamon/cinnamon-gstreamer1.patch282
-rw-r--r--community/cinnamon/gtk3-lock-dialog.patch418
-rw-r--r--community/cinnamon/set_wheel.patch14
-rw-r--r--community/cinnamon/upower_calender_fix.patch22
5 files changed, 52 insertions, 714 deletions
diff --git a/community/cinnamon/PKGBUILD b/community/cinnamon/PKGBUILD
index 4dcb7dff1..1ed94ac4f 100644
--- a/community/cinnamon/PKGBUILD
+++ b/community/cinnamon/PKGBUILD
@@ -1,12 +1,12 @@
-# $Id: PKGBUILD 107038 2014-03-11 15:48:30Z andyrtr $
+# $Id: PKGBUILD 109424 2014-04-14 20:15:29Z jgc $
# Maintainer: Alexandre Filgueira <alexfilgueira@cinnarch.com>
# Contributor: M0Rf30
# Contributor: unifiedlinux
# Contributor: CReimer
pkgname=cinnamon
-pkgver=2.0.14
-pkgrel=3
+pkgver=2.2.1
+pkgrel=1
pkgdesc="Linux desktop which provides advanced innovative features and a traditional user experience"
arch=('i686' 'x86_64')
url="http://cinnamon.linuxmint.com/"
@@ -16,24 +16,25 @@ depends=('accountsservice' 'caribou' 'cinnamon-settings-daemon' 'cinnamon-sessio
'gnome-menus' 'gnome-themes-standard' 'gstreamer' 'libgnome-keyring'
'librsvg' 'networkmanager' 'muffin' 'python2-dbus' 'python2-pillow'
'python2-pam' 'python2-pexpect' 'python2-pyinotify' 'python2-lxml' 'webkitgtk'
- 'cinnamon-control-center' 'cinnamon-screensaver' 'libgnomekbd'
+ 'cinnamon-control-center' 'cinnamon-screensaver' 'cinnamon-menus' 'libgnomekbd'
'network-manager-applet' 'nemo' 'polkit-gnome')
makedepends=('gnome-common' 'intltool')
options=('!emptydirs')
install=${pkgname}.install
source=("$pkgname-$pkgver.tar.gz::https://github.com/linuxmint/Cinnamon/archive/$pkgver.tar.gz"
- "cinnamon-gstreamer1.patch"
+ "upower_calender_fix.patch"
"keyboard_applet.patch"
"input_keybindings.patch"
- "gtk3-lock-dialog.patch"
+ "set_wheel.patch"
"org.archlinux.pkexec.cinnamon-settings-users.policy")
-sha256sums=('447f65ceb22a40717656d3d708d16ad450802298d783b23004b6e8d3c8d7da85'
- '2e10ba71fd9ba40afd7e9492b2fc0d5bcc27874bcde543cfd8a47ad20c52354a'
+sha256sums=('34ad53f81cf57e8dca06fbd76b0be761b16d9f46a1b5aa22596cd07725703478'
+ 'babfe88a3773f5369b05c7b61d0318cf969b482b9e0c3f281afaf488b0051e53'
'6acb07393105ddced8a4c3c869a596350d1a7d81a808ca5307d2ad770653a9d3'
'e28c40eb844105154fa6106f5b4de3151a22805b3a7b2f84be9ea6c15cec3de6'
- 'e10dd01201b9274b45a6c94319d4eb1e9ff800e63f10a3d5e42fc9f3a87e337c'
+ 'd5d5634b24e56837cb677e62669450c25f79005ed1388584760a131f461180ec'
'371beac9e55d36f7629d2fc5cb40d6a3e6c0f4aac014f6fefdcd6743b5194b23')
+
prepare() {
cd ${srcdir}/Cinnamon*
@@ -41,17 +42,18 @@ prepare() {
sed -i 's:/usr/bin/python :/usr/bin/python2 :' files/usr/bin/cinnamon-menu-editor
find -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+
+ # Fix calendar applet with upower 0.99
+ patch -Np1 -i ../upower_calender_fix.patch
+
# Fix keyboard applet
patch -Np1 -i ../keyboard_applet.patch
# Add input keybindings
patch -Np1 -i ../input_keybindings.patch
- # Port to GStreamer 1.0. Also backports some recorder bugfixes
- patch -Np1 -i ../cinnamon-gstreamer1.patch
-
- # Port Lock screen dialog to GTK+ 3
- patch -Np1 -i ../gtk3-lock-dialog.patch
+ # Use wheel group instread of sudo
+ patch -Np1 -i ../set_wheel.patch
# Fix required components
sed -i 's/cinnamon-fallback-mount-helper;/polkit-gnome-authentication-agent-1;/' files/usr/share/cinnamon-session/sessions/cinnamon*.session
diff --git a/community/cinnamon/cinnamon-gstreamer1.patch b/community/cinnamon/cinnamon-gstreamer1.patch
deleted file mode 100644
index 6c27c1620..000000000
--- a/community/cinnamon/cinnamon-gstreamer1.patch
+++ /dev/null
@@ -1,282 +0,0 @@
-diff -ruN a/configure.ac b/configure.ac
---- a/configure.ac 2013-10-16 15:10:22.237511846 +0000
-+++ b/configure.ac 2013-10-16 15:00:45.501321091 +0000
-@@ -44,15 +44,15 @@
-
- # We need at least this, since gst_plugin_register_static() was added
- # in 0.10.16, but nothing older than 0.10.21 has been tested.
--GSTREAMER_MIN_VERSION=0.10.16
-+GSTREAMER_MIN_VERSION=0.11.92
-
- recorder_modules=
- build_recorder=false
- AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
--if $PKG_CONFIG --exists gstreamer-0.10 '>=' $GSTREAMER_MIN_VERSION ; then
-+if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
- AC_MSG_RESULT(yes)
- build_recorder=true
-- recorder_modules="gstreamer-0.10 gstreamer-base-0.10 x11"
-+ recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11"
- PKG_CHECK_MODULES(TEST_CINNAMON_RECORDER, $recorder_modules clutter-1.0 xfixes)
- else
- AC_MSG_RESULT(no)
-diff -ruN a/src/cinnamon-recorder.c b/src/cinnamon-recorder.c
---- a/src/cinnamon-recorder.c 2013-10-16 15:10:22.344177808 +0000
-+++ b/src/cinnamon-recorder.c 2013-10-16 15:26:42.801040167 +0000
-@@ -8,6 +8,7 @@
- #include <string.h>
- #include <unistd.h>
-
-+#define GST_USE_UNSTABLE_API
- #include <gst/gst.h>
-
- #include "cinnamon-recorder-src.h"
-@@ -147,7 +148,7 @@
- * (Theora does have some support for frames at non-uniform times, but
- * things seem to break down if there are large gaps.)
- */
--#define DEFAULT_PIPELINE "videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux"
-+#define DEFAULT_PIPELINE "vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"
-
- /* The default filename pattern. Example cinnamon-20090311b-2.webm
- */
-@@ -446,6 +447,7 @@
- recorder_draw_cursor (CinnamonRecorder *recorder,
- GstBuffer *buffer)
- {
-+ GstMapInfo info;
- cairo_surface_t *surface;
- cairo_t *cr;
-
-@@ -464,7 +466,8 @@
- if (!recorder->cursor_image)
- return;
-
-- surface = cairo_image_surface_create_for_data (GST_BUFFER_DATA(buffer),
-+ gst_buffer_map (buffer, &info, GST_MAP_WRITE);
-+ surface = cairo_image_surface_create_for_data (info.data,
- CAIRO_FORMAT_ARGB32,
- recorder->stage_width,
- recorder->stage_height,
-@@ -479,6 +482,7 @@
-
- cairo_destroy (cr);
- cairo_surface_destroy (surface);
-+ gst_buffer_unmap (buffer, &info);
- }
-
- /* Draw an overlay indicating how much of the target memory is used
-@@ -541,10 +545,11 @@
- data = g_malloc (size);
-
- buffer = gst_buffer_new();
-- GST_BUFFER_SIZE(buffer) = size;
-- GST_BUFFER_MALLOCDATA(buffer) = GST_BUFFER_DATA(buffer) = data;
-+ gst_buffer_insert_memory (buffer, -1,
-+ gst_memory_new_wrapped (0, data, size, 0,
-+ size, data, g_free));
-
-- GST_BUFFER_TIMESTAMP(buffer) = get_wall_time() - recorder->start_time;
-+ GST_BUFFER_PTS(buffer) = get_wall_time() - recorder->start_time;
-
- cogl_read_pixels (0, 0,
- recorder->stage_width, recorder->stage_height,
-@@ -1042,23 +1047,18 @@
- {
- GstCaps *caps;
-
-- /* The data is always native-endian xRGB; ffmpegcolorspace
-+ /* The data is always native-endian xRGB; videoconvert
- * doesn't support little-endian xRGB, but does support
- * big-endian BGRx.
- */
-- caps = gst_caps_new_simple ("video/x-raw-rgb",
-- "bpp", G_TYPE_INT, 32,
-- "depth", G_TYPE_INT, 24,
-+ caps = gst_caps_new_simple ("video/x-raw",
- #if G_BYTE_ORDER == G_LITTLE_ENDIAN
-- "red_mask", G_TYPE_INT, 0x0000ff00,
-- "green_mask", G_TYPE_INT, 0x00ff0000,
-- "blue_mask", G_TYPE_INT, 0xff000000,
-+ "format", G_TYPE_STRING, "BGRx",
- #else
-- "red_mask", G_TYPE_INT, 0xff0000,
-- "green_mask", G_TYPE_INT, 0x00ff00,
-- "blue_mask", G_TYPE_INT, 0x0000ff,
-+ "format", G_TYPE_STRING, "xRGB",
- #endif
-- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
-+ "bpp", G_TYPE_INT, 32,
-+ "depth", G_TYPE_INT, 24,
- "framerate", GST_TYPE_FRACTION, pipeline->recorder->framerate, 1,
- "width", G_TYPE_INT, pipeline->recorder->stage_width,
- "height", G_TYPE_INT, pipeline->recorder->stage_height,
-@@ -1076,7 +1076,7 @@
- {
- GstPad *sink_pad = NULL, *src_pad = NULL;
- gboolean result = FALSE;
-- GstElement *ffmpegcolorspace;
-+ GstElement *videoconvert;
-
- sink_pad = gst_bin_find_unlinked_pad (GST_BIN (pipeline->pipeline), GST_PAD_SINK);
- if (sink_pad == NULL)
-@@ -1095,19 +1095,19 @@
-
- recorder_pipeline_set_caps (pipeline);
-
-- /* The ffmpegcolorspace element is a generic converter; it will convert
-+ /* The videoconvert element is a generic converter; it will convert
- * our supplied fixed format data into whatever the encoder wants
- */
-- ffmpegcolorspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
-- if (!ffmpegcolorspace)
-+ videoconvert = gst_element_factory_make ("videoconvert", NULL);
-+ if (!videoconvert)
- {
-- g_warning("Can't create ffmpegcolorspace element");
-+ g_warning("Can't create videoconvert element");
- goto out;
- }
-- gst_bin_add (GST_BIN (pipeline->pipeline), ffmpegcolorspace);
-+ gst_bin_add (GST_BIN (pipeline->pipeline), videoconvert);
-
-- gst_element_link_many (pipeline->src, ffmpegcolorspace, NULL);
-- src_pad = gst_element_get_static_pad (ffmpegcolorspace, "src");
-+ gst_element_link_many (pipeline->src, videoconvert, NULL);
-+ src_pad = gst_element_get_static_pad (videoconvert, "src");
-
- if (!src_pad)
- {
-@@ -1637,7 +1637,7 @@
- * might be used to send the output to an icecast server
- * via shout2send or similar.
- *
-- * The default value is 'videorate ! theoraenc ! oggmux'
-+ * The default value is 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'
- */
- void
- cinnamon_recorder_set_pipeline (CinnamonRecorder *recorder,
-diff -ruN a/src/cinnamon-recorder-src.c b/src/cinnamon-recorder-src.c
---- a/src/cinnamon-recorder-src.c 2013-10-16 15:10:22.347511119 +0000
-+++ b/src/cinnamon-recorder-src.c 2013-10-16 15:33:41.581609206 +0000
-@@ -2,6 +2,7 @@
-
- #include "config.h"
-
-+#define GST_USE_UNSTABLE_API
- #include <gst/base/gstpushsrc.h>
-
- #include "cinnamon-recorder-src.h"
-@@ -12,6 +13,9 @@
-
- GMutex *mutex;
-
-+ GstClock *clock;
-+ GstClockTime last_frame_time;
-+
- GstCaps *caps;
- GAsyncQueue *queue;
- gboolean closed;
-@@ -33,21 +37,21 @@
- /* Special marker value once the source is closed */
- #define RECORDER_QUEUE_END ((GstBuffer *)1)
-
--GST_BOILERPLATE(CinnamonRecorderSrc, cinnamon_recorder_src, GstPushSrc, GST_TYPE_PUSH_SRC);
-+G_DEFINE_TYPE(CinnamonRecorderSrc, cinnamon_recorder_src, GST_TYPE_PUSH_SRC);
-
- static void
--cinnamon_recorder_src_init (CinnamonRecorderSrc *src,
-- CinnamonRecorderSrcClass *klass)
-+cinnamon_recorder_src_init (CinnamonRecorderSrc *src)
- {
-+ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
-+ gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
-+
-+ src->clock = gst_system_clock_obtain ();
-+ src->last_frame_time = 0;
-+
- src->queue = g_async_queue_new ();
- src->mutex = g_mutex_new ();
- }
-
--static void
--cinnamon_recorder_src_base_init (gpointer klass)
--{
--}
--
- static gboolean
- cinnamon_recorder_src_memory_used_update_idle (gpointer data)
- {
-@@ -87,21 +91,28 @@
- GstBuffer *buffer;
-
- if (src->closed)
-- return GST_FLOW_UNEXPECTED;
-+ return GST_FLOW_EOS;
-
- buffer = g_async_queue_pop (src->queue);
-+ if (src->last_frame_time == 0)
-+ src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
-+
- if (buffer == RECORDER_QUEUE_END)
- {
- /* Returning UNEXPECTED here will cause a EOS message to be sent */
- src->closed = TRUE;
-- return GST_FLOW_UNEXPECTED;
-+ return GST_FLOW_EOS;
- }
-
- cinnamon_recorder_src_update_memory_used (src,
-- - (int)(GST_BUFFER_SIZE(buffer) / 1024));
-+ - (int)(gst_buffer_get_size(buffer) / 1024));
-
- *buffer_out = buffer;
-
-+ GST_BUFFER_DURATION(*buffer_out) = GST_CLOCK_DIFF (src->last_frame_time, gst_clock_get_time (GST_CLOCK (src->clock)));
-+
-+ src->last_frame_time = gst_clock_get_time (GST_CLOCK (src->clock));
-+
- return GST_FLOW_OK;
- }
-
-@@ -142,7 +153,9 @@
-
- g_mutex_free (src->mutex);
-
-- G_OBJECT_CLASS (parent_class)->finalize (object);
-+ gst_object_unref (src->clock);
-+
-+ G_OBJECT_CLASS (cinnamon_recorder_src_parent_class)->finalize (object);
- }
-
- static void
-@@ -246,9 +259,9 @@
- g_return_if_fail (CINNAMON_IS_RECORDER_SRC (src));
- g_return_if_fail (src->caps != NULL);
-
-- gst_buffer_set_caps (buffer, src->caps);
-+ gst_base_src_set_caps (GST_BASE_SRC (src), src->caps);
- cinnamon_recorder_src_update_memory_used (src,
-- (int) (GST_BUFFER_SIZE(buffer) / 1024));
-+ (int)(gst_buffer_get_size(buffer) / 1024));
-
- g_async_queue_push (src->queue, gst_buffer_ref (buffer));
- }
-diff -ruN a/src/test-recorder.c b/src/test-recorder.c
---- a/src/test-recorder.c 2013-10-16 15:10:22.240845159 +0000
-+++ b/src/test-recorder.c 2013-10-16 15:48:03.685915756 +0000
-@@ -1,5 +1,6 @@
- /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
-
-+#define GST_USE_UNSTABLE_API
- #include "cinnamon-recorder.h"
- #include <clutter/clutter.h>
- #include <gst/gst.h>
-@@ -29,7 +30,6 @@
- ClutterAnimation *animation;
- ClutterColor red, green, blue;
-
-- g_thread_init (NULL);
- gst_init (&argc, &argv);
- if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
- return 1;
diff --git a/community/cinnamon/gtk3-lock-dialog.patch b/community/cinnamon/gtk3-lock-dialog.patch
deleted file mode 100644
index 36f0d4469..000000000
--- a/community/cinnamon/gtk3-lock-dialog.patch
+++ /dev/null
@@ -1,418 +0,0 @@
-commit 7bb5af86b404d3e89f92019dba224e6fe258f7ea
-Author: Balló György <ballogyor@gmail.com>
-Date: Sun Jan 5 16:54:41 2014 +0100
-
- Port Lock screen dialog to GTK+ 3
-
-diff --git a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.glade b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.glade
-deleted file mode 100644
-index a4200f9..0000000
---- a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.glade
-+++ /dev/null
-@@ -1,165 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<glade-interface>
-- <!-- interface-requires gtk+ 2.24 -->
-- <!-- interface-naming-policy project-wide -->
-- <widget class="GtkDialog" id="main_dialog">
-- <property name="can_focus">False</property>
-- <property name="border_width">6</property>
-- <property name="type_hint">dialog</property>
-- <child internal-child="vbox">
-- <widget class="GtkVBox" id="dialog-vbox1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="spacing">6</property>
-- <child internal-child="action_area">
-- <widget class="GtkHButtonBox" id="dialog-action_area1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="layout_style">end</property>
-- <child>
-- <widget class="GtkButton" id="button_cancel">
-- <property name="label">gtk-cancel</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>
-- <property name="use_stock">True</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkButton" id="button_ok">
-- <property name="label">gtk-ok</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>
-- <property name="use_stock">True</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">False</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="padding">3</property>
-- <property name="pack_type">end</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkImage" id="image_face">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="stock">gtk-missing-image</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="padding">3</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkLabel" id="label_description">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">label</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="padding">3</property>
-- <property name="position">2</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkHBox" id="hbox1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <child>
-- <widget class="GtkLabel" id="label_away_message">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">label</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkHBox" id="hbox3">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <child>
-- <widget class="GtkLabel" id="label1">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">&lt;b&gt;"&lt;/b&gt;</property>
-- <property name="use_markup">True</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="position">0</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkEntry" id="entry_away_message">
-- <property name="visible">True</property>
-- <property name="can_focus">True</property>
-- <property name="invisible_char">●</property>
-- <property name="invisible_char_set">True</property>
-- <property name="primary_icon_activatable">False</property>
-- <property name="secondary_icon_activatable">False</property>
-- <property name="primary_icon_sensitive">True</property>
-- <property name="secondary_icon_sensitive">True</property>
-- </widget>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- <child>
-- <widget class="GtkLabel" id="label2">
-- <property name="visible">True</property>
-- <property name="can_focus">False</property>
-- <property name="label" translatable="yes">&lt;b&gt;"&lt;/b&gt;</property>
-- <property name="use_markup">True</property>
-- </widget>
-- <packing>
-- <property name="expand">False</property>
-- <property name="fill">True</property>
-- <property name="position">2</property>
-- </packing>
-- </child>
-- </widget>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="position">1</property>
-- </packing>
-- </child>
-- </widget>
-- <packing>
-- <property name="expand">True</property>
-- <property name="fill">True</property>
-- <property name="padding">3</property>
-- <property name="position">3</property>
-- </packing>
-- </child>
-- </widget>
-- </child>
-- </widget>
--</glade-interface>
-diff --git a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py
-index f6f3ad1..72cdf4f 100755
---- a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py
-+++ b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.py
-@@ -3,8 +3,7 @@
- import sys
- import os
- import gettext
--import gtk
--import gtk.glade
-+from gi.repository import Gtk
- import pwd
- import socket
-
-@@ -25,32 +24,32 @@ class MainWindow:
- if real_name == "":
- real_name = username
-
-- gladefile = "/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.glade"
-- self.wTree = gtk.glade.XML(gladefile, "main_dialog")
-+ self.builder = Gtk.Builder()
-+ self.builder.add_from_file("/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.ui")
-
-- self.window = self.wTree.get_widget("main_dialog")
-- self.button_cancel = self.wTree.get_widget("button_cancel")
-- self.button_ok = self.wTree.get_widget("button_ok")
-- self.entry = self.wTree.get_widget("entry_away_message")
-- self.image = self.wTree.get_widget("image_face")
-+ self.window = self.builder.get_object("main_dialog")
-+ self.button_cancel = self.builder.get_object("button_cancel")
-+ self.button_ok = self.builder.get_object("button_ok")
-+ self.entry = self.builder.get_object("entry_away_message")
-+ self.image = self.builder.get_object("image_face")
-
- self.window.set_title(_("Lock screen"))
- self.window.set_icon_from_file("/usr/lib/cinnamon-settings/data/icons/screensaver.svg")
-
-- self.wTree.get_widget("label_description").set_markup("<i>%s</i>" % _("Please type an away message for the lock screen"))
-- self.wTree.get_widget("label_away_message").set_markup("<b>%s: </b>" % real_name)
-+ self.builder.get_object("label_description").set_markup("<i>%s</i>" % _("Please type an away message for the lock screen"))
-+ self.builder.get_object("label_away_message").set_markup("<b>%s: </b>" % real_name)
-
- if os.path.exists("%s/.face" % home_dir):
- self.image.set_from_file("%s/.face" % home_dir)
- else:
- self.image.set_from_file("/usr/share/pixmaps/nobody.png")
-
-- self.window.connect("destroy", gtk.main_quit)
-- self.button_cancel.connect("clicked", gtk.main_quit)
-+ self.window.connect("destroy", Gtk.main_quit)
-+ self.button_cancel.connect("clicked", Gtk.main_quit)
- self.button_ok.connect('clicked', self.lock_screen)
- self.entry.connect('activate', self.lock_screen)
-
-- self.wTree.get_widget("dialog-action_area1").set_focus_chain((self.button_ok, self.button_cancel))
-+ self.builder.get_object("dialog-action_area1").set_focus_chain((self.button_ok, self.button_cancel))
-
- self.window.show()
-
-@@ -60,8 +59,8 @@ class MainWindow:
- os.system("cinnamon-screensaver-command --lock --away-message \"%s\" &" % self.entry.get_text())
- else:
- os.system("cinnamon-screensaver-command --lock &")
-- gtk.main_quit()
-+ Gtk.main_quit()
-
- if __name__ == "__main__":
- MainWindow()
-- gtk.main()
-+ Gtk.main()
-diff --git a/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.ui b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.ui
-new file mode 100644
-index 0000000..30700b9
---- /dev/null
-+++ b/files/usr/lib/cinnamon-screensaver-lock-dialog/cinnamon-screensaver-lock-dialog.ui
-@@ -0,0 +1,165 @@
-+<?xml version="1.0"?>
-+<interface>
-+ <!-- interface-requires gtk+ 2.24 -->
-+ <!-- interface-naming-policy project-wide -->
-+ <object class="GtkDialog" id="main_dialog">
-+ <property name="can_focus">False</property>
-+ <property name="border_width">6</property>
-+ <property name="type_hint">dialog</property>
-+ <child internal-child="vbox">
-+ <object class="GtkVBox" id="dialog-vbox1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="spacing">6</property>
-+ <child internal-child="action_area">
-+ <object class="GtkHButtonBox" id="dialog-action_area1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="layout_style">end</property>
-+ <child>
-+ <object class="GtkButton" id="button_cancel">
-+ <property name="label">gtk-cancel</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>
-+ <property name="use_stock">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="button_ok">
-+ <property name="label">gtk-ok</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>
-+ <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>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="padding">3</property>
-+ <property name="pack_type">end</property>
-+ <property name="position">0</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkImage" id="image_face">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="stock">gtk-missing-image</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="padding">3</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLabel" id="label_description">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="label" translatable="yes">label</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="padding">3</property>
-+ <property name="position">2</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkHBox" id="hbox1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <child>
-+ <object class="GtkLabel" id="label_away_message">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="label" translatable="yes">label</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="position">0</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkHBox" id="hbox3">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <child>
-+ <object class="GtkLabel" id="label1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="label" translatable="yes">&lt;b&gt;"&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="position">0</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkEntry" id="entry_away_message">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="invisible_char">&#x25CF;</property>
-+ <property name="invisible_char_set">True</property>
-+ <property name="primary_icon_activatable">False</property>
-+ <property name="secondary_icon_activatable">False</property>
-+ <property name="primary_icon_sensitive">True</property>
-+ <property name="secondary_icon_sensitive">True</property>
-+ </object>
-+ <packing>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <object class="GtkLabel" id="label2">
-+ <property name="visible">True</property>
-+ <property name="can_focus">False</property>
-+ <property name="label" translatable="yes">&lt;b&gt;"&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </object>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ <property name="position">2</property>
-+ </packing>
-+ </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="padding">3</property>
-+ <property name="position">3</property>
-+ </packing>
-+ </child>
-+ </object>
-+ </child>
-+ </object>
-+</interface>
diff --git a/community/cinnamon/set_wheel.patch b/community/cinnamon/set_wheel.patch
new file mode 100644
index 000000000..372308342
--- /dev/null
+++ b/community/cinnamon/set_wheel.patch
@@ -0,0 +1,14 @@
+--- a/files/usr/lib/cinnamon-settings-users/cinnamon-settings-users.py
++++ b/files/usr/lib/cinnamon-settings-users/cinnamon-settings-users.py
+@@ -734,9 +734,9 @@ class Module:
+ pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size("/usr/share/cinnamon/faces/user-generic.png", 48, 48)
+ description = "<b>%s</b>\n%s" % (fullname, username)
+ piter = self.users.append(None, [new_user, pixbuf, description])
+- # Add the user to his/her own group and sudo if Administrator was selected
++ # Add the user to his/her own group and wheel if Administrator was selected
+ if dialog.account_type_combo.get_active() == 1:
+- os.system("usermod %s -G %s,sudo" % (username, username))
++ os.system("usermod %s -G %s,wheel" % (username, username))
+ else:
+ os.system("usermod %s -G %s" % (username, username))
+ self.load_groups()
diff --git a/community/cinnamon/upower_calender_fix.patch b/community/cinnamon/upower_calender_fix.patch
new file mode 100644
index 000000000..9515736c8
--- /dev/null
+++ b/community/cinnamon/upower_calender_fix.patch
@@ -0,0 +1,22 @@
+diff -Naur Cinnamon-2.0.14.orig/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js Cinnamon-2.0.14/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js
+--- Cinnamon-2.0.14.orig/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js 2013-11-25 19:41:30.000000000 +0100
++++ Cinnamon-2.0.14/files/usr/share/cinnamon/applets/calendar@cinnamon.org/applet.js 2014-04-11 08:10:28.785899903 +0200
+@@ -6,7 +6,6 @@
+ const St = imports.gi.St;
+ const Util = imports.misc.util;
+ const PopupMenu = imports.ui.popupMenu;
+-const UPowerGlib = imports.gi.UPowerGlib;
+ const Settings = imports.ui.settings;
+ const AppletDir = imports.ui.appletManager.applets['calendar@cinnamon.org'];
+ const Calendar = AppletDir.calendar;
+@@ -88,10 +87,6 @@
+ this.settings.bindProperty(Settings.BindingDirection.IN, "use-custom-format", "use_custom_format", this.on_settings_changed, null);
+ this.settings.bindProperty(Settings.BindingDirection.IN, "custom-format", "custom_format", this.on_settings_changed, null);
+
+- // https://bugzilla.gnome.org/show_bug.cgi?id=655129
+- this._upClient = new UPowerGlib.Client();
+- this._upClient.connect('notify-resume', this._updateClockAndDate);
+-
+ // Start the clock
+ this.on_settings_changed();
+ this._updateClockAndDatePeriodic();