summaryrefslogtreecommitdiff
path: root/community/nemo
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2013-08-13 01:33:19 -0700
committerroot <root@rshg054.dnsready.net>2013-08-13 01:33:19 -0700
commit7a65a910b77ad191d69881098c47f9b0c852d92e (patch)
tree9564e611af1442f8952a8cbddb3b0ad25ed71aab /community/nemo
parent60da6abff6c9577a783d72865f11de7a585e912e (diff)
Tue Aug 13 01:31:08 PDT 2013
Diffstat (limited to 'community/nemo')
-rw-r--r--community/nemo/PKGBUILD51
-rw-r--r--community/nemo/nemo.install14
-rw-r--r--community/nemo/remove-desktop-background.patch1050
-rw-r--r--community/nemo/tracker-0.16.patch33
4 files changed, 1148 insertions, 0 deletions
diff --git a/community/nemo/PKGBUILD b/community/nemo/PKGBUILD
new file mode 100644
index 000000000..5c3cab47f
--- /dev/null
+++ b/community/nemo/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 94000 2013-07-12 22:37:49Z faidoc $
+# Maintainer: Alexandre Filgueira <alexfilgueira@cinnarch.com>
+# Contributor: Ner0
+
+pkgname=nemo
+pkgver=1.8.4
+pkgrel=1
+pkgdesc="Cinnamon file manager (Nautilus fork)"
+arch=('i686' 'x86_64')
+url="https://github.com/linuxmint/nemo"
+license=('GPL')
+depends=('libexif' 'gvfs' 'dconf' 'desktop-file-utils' 'exempi' 'python2'
+ 'gnome-desktop' 'gnome-icon-theme' 'libnotify' 'libtracker-sparql')
+makedepends=('gtk-doc' 'gobject-introspection' 'intltool' 'gnome-common')
+optdepends=('gksu: Open as Root')
+options=('!emptydirs' '!libtool')
+install=nemo.install
+source=("$pkgname-$pkgver.tar.gz::https://github.com/linuxmint/nemo/tarball/$pkgver"
+ "tracker-0.16.patch"
+ "remove-desktop-background.patch")
+sha256sums=('c8805302144c1aba72707eed22501cdd4f008a4c4090dea94fde5c05cd6c25f6'
+ '2b86f486add84e3affb0b14eb84425443e7cf5e593738d10d02e9c2ac0f17626'
+ '0bd07fd931ad701442358cdcbd26e0c5d57717ffadfd39a1cba137e36def1aa5')
+
+build() {
+ cd linuxmint-nemo-*
+
+ # Python2 fix
+ sed -i 's/bin\/python/bin\/python2/g' files/usr/share/nemo/actions/myaction.py
+
+ # https://github.com/linuxmint/nemo/pull/258
+ patch -Np1 -i ../tracker-0.16.patch
+
+ # https://github.com/linuxmint/nemo/pull/263
+ patch -Np1 -i ../remove-desktop-background.patch
+
+ ./autogen.sh --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/nemo \
+ --disable-update-mimedb \
+ --disable-packagekit \
+ --disable-gtk-doc-html \
+ --disable-schemas-compile
+ make
+}
+
+package() {
+ cd linuxmint-nemo-*
+
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/community/nemo/nemo.install b/community/nemo/nemo.install
new file mode 100644
index 000000000..da632ed5c
--- /dev/null
+++ b/community/nemo/nemo.install
@@ -0,0 +1,14 @@
+post_install() {
+ glib-compile-schemas --allow-any-name usr/share/glib-2.0/schemas
+ update-desktop-database -q
+ gtk-update-icon-cache -ftq usr/share/icons/hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install "$1"
+}
+
+post_remove() {
+ post_install "$1"
+}
diff --git a/community/nemo/remove-desktop-background.patch b/community/nemo/remove-desktop-background.patch
new file mode 100644
index 000000000..0301cc820
--- /dev/null
+++ b/community/nemo/remove-desktop-background.patch
@@ -0,0 +1,1050 @@
+From 5f82ebba474f6c1068a21f51ded2b0e26869ecaf Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Mon, 15 Apr 2013 18:44:35 -0400
+Subject: [PATCH 1/6] Don't render the background. Need to fix selected icon
+ style
+
+---
+ src/nemo-desktop-icon-view.c | 18 +++---------------
+ src/nemo-desktop-window.c | 15 ++++++++++++++-
+ 2 files changed, 17 insertions(+), 16 deletions(-)
+
+diff --git a/src/nemo-desktop-icon-view.c b/src/nemo-desktop-icon-view.c
+index b903c5b..37cd8cb 100644
+--- a/src/nemo-desktop-icon-view.c
++++ b/src/nemo-desktop-icon-view.c
+@@ -243,16 +243,6 @@ struct NemoDesktopIconViewDetails
+ static void
+ real_begin_loading (NemoView *object)
+ {
+- NemoIconContainer *icon_container;
+- NemoDesktopIconView *view;
+-
+- view = NEMO_DESKTOP_ICON_VIEW (object);
+-
+- icon_container = get_icon_container (view);
+- if (view->details->background == NULL) {
+- view->details->background = nemo_desktop_background_new (icon_container);
+- }
+-
+ NEMO_VIEW_CLASS (nemo_desktop_icon_view_parent_class)->begin_loading (object);
+ }
+
+@@ -298,11 +288,6 @@ struct NemoDesktopIconViewDetails
+ nemo_view_update_menus,
+ icon_view);
+
+- if (icon_view->details->background != NULL) {
+- g_object_unref (icon_view->details->background);
+- icon_view->details->background = NULL;
+- }
+-
+ G_OBJECT_CLASS (nemo_desktop_icon_view_parent_class)->dispose (object);
+ }
+
+@@ -652,6 +637,9 @@ struct NemoDesktopIconViewDetails
+ G_CALLBACK (nemo_view_update_menus),
+ desktop_icon_view);
+
++ GdkRGBA transparent = { 0, 0, 0, 0 };
++ gtk_widget_override_background_color (GTK_WIDGET (icon_container), GTK_STATE_FLAG_NORMAL, &transparent);
++
+ have_cinnamon_settings = g_find_program_in_path ("cinnamon-settings") != NULL;
+ }
+
+diff --git a/src/nemo-desktop-window.c b/src/nemo-desktop-window.c
+index 9c80c62..2d5c4e8 100644
+--- a/src/nemo-desktop-window.c
++++ b/src/nemo-desktop-window.c
+@@ -97,6 +97,7 @@ struct NemoDesktopWindowDetails {
+ g_signal_connect_swapped (nemo_preferences, "changed::" NEMO_PREFERENCES_DESKTOP_IS_HOME_DIR,
+ G_CALLBACK (nemo_desktop_window_update_directory),
+ window);
++
+ }
+
+ static void
+@@ -189,6 +190,12 @@ struct NemoDesktopWindowDetails {
+ /* Chain up to realize our children */
+ GTK_WIDGET_CLASS (nemo_desktop_window_parent_class)->map (widget);
+ gdk_window_lower (gtk_widget_get_window (widget));
++
++ GdkWindow *window;
++ GdkRGBA transparent = { 0, 0, 0, 0 };
++
++ window = gtk_widget_get_window (widget);
++ gdk_window_set_background_rgba (window, &transparent);
+ }
+
+ static void
+@@ -254,6 +261,7 @@ struct NemoDesktopWindowDetails {
+ {
+ NemoDesktopWindow *window;
+ NemoDesktopWindowDetails *details;
++ GdkVisual *visual;
+
+ window = NEMO_DESKTOP_WINDOW (widget);
+ details = window->details;
+@@ -261,7 +269,12 @@ struct NemoDesktopWindowDetails {
+ /* Make sure we get keyboard events */
+ gtk_widget_set_events (widget, gtk_widget_get_events (widget)
+ | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
+-
++
++ visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
++ if (visual) {
++ gtk_widget_set_visual (widget, visual);
++ }
++
+ /* Do the work of realizing. */
+ GTK_WIDGET_CLASS (nemo_desktop_window_parent_class)->realize (widget);
+
+--
+1.8.1.6
+
+
+From 6b013acb8f0ad855d042d0e8d51350c539a37c21 Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Mon, 15 Apr 2013 20:03:03 -0400
+Subject: [PATCH 2/6] Remove nemo-desktop-background, the desktop window makes
+ a transparent background and just uses the existing rendered background from
+ muffin/g-s-d
+
+---
+ libnemo-private/Makefile.am | 2 -
+ libnemo-private/nemo-desktop-background.c | 578 ------------------------------
+ libnemo-private/nemo-desktop-background.h | 65 ----
+ src/nemo-desktop-icon-view.c | 26 +-
+ 4 files changed, 13 insertions(+), 658 deletions(-)
+ delete mode 100644 libnemo-private/nemo-desktop-background.c
+ delete mode 100644 libnemo-private/nemo-desktop-background.h
+
+diff --git a/libnemo-private/Makefile.am b/libnemo-private/Makefile.am
+index 3b46318..5fd797c 100644
+--- a/libnemo-private/Makefile.am
++++ b/libnemo-private/Makefile.am
+@@ -81,8 +81,6 @@ libnemo_private_la_SOURCES = \
+ nemo-debug.h \
+ nemo-default-file-icon.c \
+ nemo-default-file-icon.h \
+- nemo-desktop-background.c \
+- nemo-desktop-background.h \
+ nemo-desktop-directory-file.c \
+ nemo-desktop-directory-file.h \
+ nemo-desktop-directory.c \
+diff --git a/libnemo-private/nemo-desktop-background.c b/libnemo-private/nemo-desktop-background.c
+deleted file mode 100644
+index f8dc979..0000000
+--- a/libnemo-private/nemo-desktop-background.c
++++ /dev/null
+@@ -1,578 +0,0 @@
+-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+-
+-/*
+- * nemo-desktop-background.c: Helper object to handle desktop background
+- * changes.
+- *
+- * Copyright (C) 2000 Eazel, Inc.
+- * Copyright (C) 2010 Cosimo Cecchi <cosimoc@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 of the
+- * License, 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.
+- *
+- * Authors: Darin Adler <darin@bentspoon.com>
+- * Cosimo Cecchi <cosimoc@gnome.org>
+- */
+-
+-#include <config.h>
+-
+-#include "nemo-desktop-background.h"
+-
+-#include <eel/eel-gdk-extensions.h>
+-#include <eel/eel-gtk-extensions.h>
+-
+-#include "nemo-global-preferences.h"
+-
+-#define GNOME_DESKTOP_USE_UNSTABLE_API
+-#include <libgnome-desktop/gnome-bg.h>
+-#include <gdesktop-enums.h>
+-
+-#include <gtk/gtk.h>
+-#include <string.h>
+-
+-static void init_fade (NemoDesktopBackground *self);
+-static void free_fade (NemoDesktopBackground *self);
+-static void queue_background_change (NemoDesktopBackground *self);
+-
+-static NemoDesktopBackground *singleton = NULL;
+-
+-G_DEFINE_TYPE (NemoDesktopBackground, nemo_desktop_background, G_TYPE_OBJECT);
+-
+-enum {
+- PROP_WIDGET = 1,
+- NUM_PROPERTIES,
+-};
+-
+-struct NemoDesktopBackgroundDetails {
+-
+- GtkWidget *widget;
+- GnomeBG *bg;
+-
+- /* Realized data: */
+- cairo_surface_t *background_surface;
+- GnomeBGCrossfade *fade;
+- int background_entire_width;
+- int background_entire_height;
+- GdkColor default_color;
+-
+- /* Desktop screen size watcher */
+- gulong screen_size_handler;
+- /* Desktop monitors configuration watcher */
+- gulong screen_monitors_handler;
+- guint change_idle_id;
+-};
+-
+-
+-static gboolean
+-background_settings_change_event_cb (GSettings *settings,
+- gpointer keys,
+- gint n_keys,
+- gpointer user_data);
+-
+-
+-static void
+-free_fade (NemoDesktopBackground *self)
+-{
+- if (self->details->fade != NULL) {
+- g_object_unref (self->details->fade);
+- self->details->fade = NULL;
+- }
+-}
+-
+-static void
+-free_background_surface (NemoDesktopBackground *self)
+-{
+- cairo_surface_t *surface;
+-
+- surface = self->details->background_surface;
+- if (surface != NULL) {
+- cairo_surface_destroy (surface);
+- self->details->background_surface = NULL;
+- }
+-}
+-
+-static void
+-nemo_desktop_background_finalize (GObject *object)
+-{
+- NemoDesktopBackground *self;
+-
+- self = NEMO_DESKTOP_BACKGROUND (object);
+-
+- g_signal_handlers_disconnect_by_func (gnome_background_preferences,
+- background_settings_change_event_cb,
+- self);
+-
+- free_background_surface (self);
+- free_fade (self);
+-
+- g_clear_object (&self->details->bg);
+-
+- G_OBJECT_CLASS (nemo_desktop_background_parent_class)->finalize (object);
+-}
+-
+-static void
+-nemo_desktop_background_unrealize (NemoDesktopBackground *self)
+-{
+- free_background_surface (self);
+-
+- self->details->background_entire_width = 0;
+- self->details->background_entire_height = 0;
+- self->details->default_color.red = 0xffff;
+- self->details->default_color.green = 0xffff;
+- self->details->default_color.blue = 0xffff;
+-}
+-
+-static void
+-nemo_desktop_background_set_image_uri (NemoDesktopBackground *self,
+- const char *image_uri)
+-{
+- char *filename;
+-
+- if (image_uri != NULL) {
+- filename = g_filename_from_uri (image_uri, NULL, NULL);
+- }
+- else {
+- filename = NULL;
+- }
+-
+- gnome_bg_set_filename (self->details->bg, filename);
+-
+- g_free (filename);
+-}
+-
+-static void
+-init_fade (NemoDesktopBackground *self)
+-{
+- GtkWidget *widget;
+- gboolean do_fade;
+-
+- widget = self->details->widget;
+-
+- if (widget == NULL || !gtk_widget_get_realized (widget))
+- return;
+-
+- do_fade = g_settings_get_boolean (nemo_desktop_preferences,
+- NEMO_PREFERENCES_DESKTOP_BACKGROUND_FADE);
+-
+- if (!do_fade) {
+- return;
+- }
+-
+- if (self->details->fade == NULL) {
+- GdkWindow *window;
+- GdkScreen *screen;
+- int old_width, old_height, width, height;
+-
+- /* If this was the result of a screen size change,
+- * we don't want to crossfade
+- */
+- window = gtk_widget_get_window (widget);
+- old_width = gdk_window_get_width (window);
+- old_height = gdk_window_get_height (window);
+-
+- screen = gtk_widget_get_screen (widget);
+- width = gdk_screen_get_width (screen);
+- height = gdk_screen_get_height (screen);
+-
+- if (old_width == width && old_height == height) {
+- self->details->fade = gnome_bg_crossfade_new (width, height);
+- g_signal_connect_swapped (self->details->fade,
+- "finished",
+- G_CALLBACK (free_fade),
+- self);
+- }
+- }
+-
+- if (self->details->fade != NULL && !gnome_bg_crossfade_is_started (self->details->fade)) {
+- cairo_surface_t *start_surface;
+-
+- if (self->details->background_surface == NULL) {
+- start_surface = gnome_bg_get_surface_from_root (gtk_widget_get_screen (widget));
+- } else {
+- start_surface = cairo_surface_reference (self->details->background_surface);
+- }
+- gnome_bg_crossfade_set_start_surface (self->details->fade,
+- start_surface);
+- cairo_surface_destroy (start_surface);
+- }
+-}
+-
+-static void
+-screen_size_changed (GdkScreen *screen,
+- NemoDesktopBackground *self)
+-{
+- queue_background_change (self);
+-}
+-
+-static gboolean
+-nemo_desktop_background_ensure_realized (NemoDesktopBackground *self)
+-{
+- int entire_width;
+- int entire_height;
+- GdkScreen *screen;
+- GdkWindow *window;
+-
+- screen = gtk_widget_get_screen (self->details->widget);
+- entire_height = gdk_screen_get_height (screen);
+- entire_width = gdk_screen_get_width (screen);
+-
+- /* If the window size is the same as last time, don't update */
+- if (entire_width == self->details->background_entire_width &&
+- entire_height == self->details->background_entire_height) {
+- return FALSE;
+- }
+-
+- free_background_surface (self);
+-
+- window = gtk_widget_get_window (self->details->widget);
+- self->details->background_surface = gnome_bg_create_surface (self->details->bg,
+- window,
+- entire_width, entire_height,
+- TRUE);
+-
+- /* We got the surface and everything, so we don't care about a change
+- that is pending (unless things actually change after this time) */
+- g_object_set_data (G_OBJECT (self),
+- "ignore-pending-change", GINT_TO_POINTER (TRUE));
+-
+- self->details->background_entire_width = entire_width;
+- self->details->background_entire_height = entire_height;
+-
+- return TRUE;
+-}
+-
+-static void
+-on_fade_finished (GnomeBGCrossfade *fade,
+- GdkWindow *window,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self = user_data;
+-
+- nemo_desktop_background_ensure_realized (self);
+- gnome_bg_set_surface_as_root (gdk_window_get_screen (window),
+- self->details->background_surface);
+-}
+-
+-static gboolean
+-fade_to_surface (NemoDesktopBackground *self,
+- GdkWindow *window,
+- cairo_surface_t *surface)
+-{
+- if (self->details->fade == NULL) {
+- return FALSE;
+- }
+-
+- if (!gnome_bg_crossfade_set_end_surface (self->details->fade,
+- surface)) {
+- return FALSE;
+- }
+-
+- if (!gnome_bg_crossfade_is_started (self->details->fade)) {
+- gnome_bg_crossfade_start (self->details->fade, window);
+- g_signal_connect (self->details->fade,
+- "finished",
+- G_CALLBACK (on_fade_finished), self);
+- }
+-
+- return gnome_bg_crossfade_is_started (self->details->fade);
+-}
+-
+-static void
+-nemo_desktop_background_set_up_widget (NemoDesktopBackground *self)
+-{
+- GdkWindow *window;
+- gboolean in_fade = FALSE;
+- GtkWidget *widget;
+-
+- widget = self->details->widget;
+-
+- if (!gtk_widget_get_realized (widget)) {
+- return;
+- }
+-
+- nemo_desktop_background_ensure_realized (self);
+- window = gtk_layout_get_bin_window (GTK_LAYOUT (widget));
+-
+- in_fade = fade_to_surface (self, window,
+- self->details->background_surface);
+-
+- if (!in_fade) {
+- cairo_pattern_t *pattern;
+-
+- pattern = cairo_pattern_create_for_surface (self->details->background_surface);
+- gdk_window_set_background_pattern (window, pattern);
+- cairo_pattern_destroy (pattern);
+-
+- gnome_bg_set_surface_as_root (gtk_widget_get_screen (widget),
+- self->details->background_surface);
+- }
+-}
+-
+-static gboolean
+-background_changed_cb (NemoDesktopBackground *self)
+-{
+- self->details->change_idle_id = 0;
+-
+- nemo_desktop_background_unrealize (self);
+- nemo_desktop_background_set_up_widget (self);
+-
+- gtk_widget_queue_draw (self->details->widget);
+-
+- return FALSE;
+-}
+-
+-static void
+-queue_background_change (NemoDesktopBackground *self)
+-{
+- if (self->details->change_idle_id != 0) {
+- g_source_remove (self->details->change_idle_id);
+- }
+-
+- self->details->change_idle_id =
+- g_idle_add ((GSourceFunc) background_changed_cb, self);
+-}
+-
+-static void
+-nemo_desktop_background_changed (GnomeBG *bg,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self;
+-
+- self = user_data;
+- init_fade (self);
+- queue_background_change (self);
+-}
+-
+-static void
+-nemo_desktop_background_transitioned (GnomeBG *bg,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self;
+-
+- self = user_data;
+- free_fade (self);
+- queue_background_change (self);
+-}
+-
+-static void
+-widget_realize_cb (GtkWidget *widget,
+- gpointer user_data)
+-{
+- GdkScreen *screen;
+- NemoDesktopBackground *self = user_data;
+-
+- screen = gtk_widget_get_screen (widget);
+-
+- if (self->details->screen_size_handler > 0) {
+- g_signal_handler_disconnect (screen,
+- self->details->screen_size_handler);
+- }
+- self->details->screen_size_handler =
+- g_signal_connect (screen, "size_changed",
+- G_CALLBACK (screen_size_changed), self);
+-
+- if (self->details->screen_monitors_handler > 0) {
+- g_signal_handler_disconnect (screen,
+- self->details->screen_monitors_handler);
+- }
+- self->details->screen_monitors_handler =
+- g_signal_connect (screen, "monitors-changed",
+- G_CALLBACK (screen_size_changed), self);
+- nemo_desktop_background_set_up_widget (self);
+-}
+-
+-static void
+-widget_unrealize_cb (GtkWidget *widget,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self = user_data;
+-
+- if (self->details->screen_size_handler > 0) {
+- g_signal_handler_disconnect (gtk_widget_get_screen (GTK_WIDGET (widget)),
+- self->details->screen_size_handler);
+- self->details->screen_size_handler = 0;
+- }
+- if (self->details->screen_monitors_handler > 0) {
+- g_signal_handler_disconnect (gtk_widget_get_screen (GTK_WIDGET (widget)),
+- self->details->screen_monitors_handler);
+- self->details->screen_monitors_handler = 0;
+- }
+-}
+-
+-static void
+-on_widget_destroyed (GtkWidget *widget,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self = user_data;
+-
+- if (self->details->change_idle_id != 0) {
+- g_source_remove (self->details->change_idle_id);
+- self->details->change_idle_id = 0;
+- }
+-
+- free_fade (self);
+- self->details->widget = NULL;
+-}
+-
+-static gboolean
+-background_change_event_idle_cb (NemoDesktopBackground *self)
+-{
+- gnome_bg_load_from_preferences (self->details->bg,
+- gnome_background_preferences);
+-
+- g_object_unref (self);
+-
+- return FALSE;
+-}
+-
+-static gboolean
+-background_settings_change_event_cb (GSettings *settings,
+- gpointer keys,
+- gint n_keys,
+- gpointer user_data)
+-{
+- NemoDesktopBackground *self = user_data;
+-
+- /* Need to defer signal processing otherwise
+- * we would make the dconf backend deadlock.
+- */
+- g_idle_add ((GSourceFunc) background_change_event_idle_cb,
+- g_object_ref (self));
+-
+- return FALSE;
+-}
+-
+-static void
+-nemo_desktop_background_constructed (GObject *obj)
+-{
+- NemoDesktopBackground *self;
+- GtkWidget *widget;
+-
+- self = NEMO_DESKTOP_BACKGROUND (obj);
+-
+- if (G_OBJECT_CLASS (nemo_desktop_background_parent_class)->constructed != NULL) {
+- G_OBJECT_CLASS (nemo_desktop_background_parent_class)->constructed (obj);
+- }
+-
+- widget = self->details->widget;
+-
+- g_assert (widget != NULL);
+-
+- g_signal_connect_object (widget, "destroy",
+- G_CALLBACK (on_widget_destroyed), self, 0);
+- g_signal_connect_object (widget, "realize",
+- G_CALLBACK (widget_realize_cb), self, 0);
+- g_signal_connect_object (widget, "unrealize",
+- G_CALLBACK (widget_unrealize_cb), self, 0);
+-
+- gnome_bg_load_from_preferences (self->details->bg,
+- gnome_background_preferences);
+-
+- /* Let's receive batch change events instead of every single one */
+- g_signal_connect (gnome_background_preferences,
+- "change-event",
+- G_CALLBACK (background_settings_change_event_cb),
+- self);
+-
+- queue_background_change (self);
+-}
+-
+-static void
+-nemo_desktop_background_set_property (GObject *object,
+- guint property_id,
+- const GValue *value,
+- GParamSpec *pspec)
+-{
+- NemoDesktopBackground *self;
+-
+- self = NEMO_DESKTOP_BACKGROUND (object);
+-
+- switch (property_id) {
+- case PROP_WIDGET:
+- self->details->widget = g_value_get_object (value);
+- break;
+- default:
+- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+- break;
+- }
+-}
+-
+-static GObject *
+-nemo_desktop_background_constructor (GType type,
+- guint n_construct_params,
+- GObjectConstructParam *construct_params)
+-{
+- GObject *retval;
+-
+- if (singleton != NULL) {
+- return g_object_ref (singleton);
+- }
+-
+- retval = G_OBJECT_CLASS (nemo_desktop_background_parent_class)->constructor
+- (type, n_construct_params, construct_params);
+-
+- singleton = NEMO_DESKTOP_BACKGROUND (retval);
+- g_object_add_weak_pointer (retval, (gpointer) &singleton);
+-
+- return retval;
+-}
+-
+-static void
+-nemo_desktop_background_class_init (NemoDesktopBackgroundClass *klass)
+-{
+- GObjectClass *object_class;
+- GParamSpec *pspec;
+-
+- object_class = G_OBJECT_CLASS (klass);
+- object_class->finalize = nemo_desktop_background_finalize;
+- object_class->set_property = nemo_desktop_background_set_property;
+- object_class->constructor = nemo_desktop_background_constructor;
+- object_class->constructed = nemo_desktop_background_constructed;
+-
+- pspec = g_param_spec_object ("widget", "The widget for this background",
+- "The widget that gets its background set",
+- NEMO_TYPE_ICON_CONTAINER,
+- G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+- g_object_class_install_property (object_class, PROP_WIDGET, pspec);
+-
+- g_type_class_add_private (klass, sizeof (NemoDesktopBackgroundDetails));
+-}
+-
+-static void
+-nemo_desktop_background_init (NemoDesktopBackground *self)
+-{
+- self->details =
+- G_TYPE_INSTANCE_GET_PRIVATE (self,
+- NEMO_TYPE_DESKTOP_BACKGROUND,
+- NemoDesktopBackgroundDetails);
+-
+- self->details->bg = gnome_bg_new ();
+- self->details->default_color.red = 0xffff;
+- self->details->default_color.green = 0xffff;
+- self->details->default_color.blue = 0xffff;
+-
+- g_signal_connect (self->details->bg, "changed",
+- G_CALLBACK (nemo_desktop_background_changed), self);
+- g_signal_connect (self->details->bg, "transitioned",
+- G_CALLBACK (nemo_desktop_background_transitioned), self);
+-}
+-
+-NemoDesktopBackground *
+-nemo_desktop_background_new (NemoIconContainer *container)
+-{
+- return g_object_new (NEMO_TYPE_DESKTOP_BACKGROUND,
+- "widget", container,
+- NULL);
+-}
+diff --git a/libnemo-private/nemo-desktop-background.h b/libnemo-private/nemo-desktop-background.h
+deleted file mode 100644
+index 8755cb1..0000000
+--- a/libnemo-private/nemo-desktop-background.h
++++ /dev/null
+@@ -1,65 +0,0 @@
+-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+-
+-/*
+- * nemo-desktop-background.c: Helper object to handle desktop background
+- * changes.
+- *
+- * Copyright (C) 2000 Eazel, Inc.
+- * Copyright (C) 2010 Cosimo Cecchi <cosimoc@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 of the
+- * License, 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.
+- *
+- * Authors: Darin Adler <darin@bentspoon.com>
+- * Cosimo Cecchi <cosimoc@gnome.org>
+- */
+-
+-#ifndef __NAUTILIUS_DESKTOP_BACKGROUND_H__
+-#define __NAUTILIUS_DESKTOP_BACKGROUND_H__
+-
+-#include <gtk/gtk.h>
+-
+-#include "nemo-icon-container.h"
+-
+-typedef struct NemoDesktopBackground NemoDesktopBackground;
+-typedef struct NemoDesktopBackgroundClass NemoDesktopBackgroundClass;
+-
+-#define NEMO_TYPE_DESKTOP_BACKGROUND nemo_desktop_background_get_type()
+-#define NEMO_DESKTOP_BACKGROUND(obj) \
+- (G_TYPE_CHECK_INSTANCE_CAST ((obj), NEMO_TYPE_DESKTOP_BACKGROUND, NemoDesktopBackground))
+-#define NEMO_DESKTOP_BACKGROUND_CLASS(klass) \
+- (G_TYPE_CHECK_CLASS_CAST ((klass), NEMO_TYPE_DESKTOP_BACKGROUND, NemoDesktopBackgroundClass))
+-#define NEMO_IS_DESKTOP_BACKGROUND(obj) \
+- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NEMO_TYPE_DESKTOP_BACKGROUND))
+-#define NEMO_IS_DESKTOP_BACKGROUND_CLASS(klass) \
+- (G_TYPE_CHECK_CLASS_TYPE ((klass), NEMO_TYPE_DESKTOP_BACKGROUND))
+-#define NEMO_DESKTOP_BACKGROUND_GET_CLASS(obj) \
+- (G_TYPE_INSTANCE_GET_CLASS ((obj), NEMO_TYPE_DESKTOP_BACKGROUND, NemoDesktopBackgroundClass))
+-
+-GType nemo_desktop_background_get_type (void);
+-NemoDesktopBackground * nemo_desktop_background_new (NemoIconContainer *container);
+-
+-typedef struct NemoDesktopBackgroundDetails NemoDesktopBackgroundDetails;
+-
+-struct NemoDesktopBackground {
+- GObject parent;
+- NemoDesktopBackgroundDetails *details;
+-};
+-
+-struct NemoDesktopBackgroundClass {
+- GObjectClass parent_class;
+-};
+-
+-#endif /* __NAUTILIUS_DESKTOP_BACKGROUND_H__ */
+diff --git a/src/nemo-desktop-icon-view.c b/src/nemo-desktop-icon-view.c
+index 37cd8cb..5dec8b5 100644
+--- a/src/nemo-desktop-icon-view.c
++++ b/src/nemo-desktop-icon-view.c
+@@ -41,7 +41,6 @@
+ #include <fcntl.h>
+ #include <gdk/gdkx.h>
+ #include <glib/gi18n.h>
+-#include <libnemo-private/nemo-desktop-background.h>
+ #include <libnemo-private/nemo-desktop-icon-file.h>
+ #include <libnemo-private/nemo-directory-notify.h>
+ #include <libnemo-private/nemo-file-changes-queue.h>
+@@ -76,8 +75,6 @@ struct NemoDesktopIconViewDetails
+ gulong delayed_init_signal;
+ guint reload_desktop_timeout;
+ gboolean pending_rescan;
+-
+- NemoDesktopBackground *background;
+ };
+
+ static void default_zoom_level_changed (gpointer user_data);
+@@ -240,12 +237,6 @@ struct NemoDesktopIconViewDetails
+ return GDK_FILTER_CONTINUE;
+ }
+
+-static void
+-real_begin_loading (NemoView *object)
+-{
+- NEMO_VIEW_CLASS (nemo_desktop_icon_view_parent_class)->begin_loading (object);
+-}
+-
+ static const char *
+ real_get_id (NemoView *view)
+ {
+@@ -300,7 +291,6 @@ struct NemoDesktopIconViewDetails
+
+ G_OBJECT_CLASS (class)->dispose = nemo_desktop_icon_view_dispose;
+
+- vclass->begin_loading = real_begin_loading;
+ vclass->merge_menus = real_merge_menus;
+ vclass->update_menus = real_update_menus;
+ vclass->get_view_id = real_get_id;
+@@ -428,6 +418,17 @@ struct NemoDesktopIconViewDetails
+ desktop_icon_view);
+ }
+
++static void
++desktop_icon_container_realize (GtkWidget *widget,
++ NemoDesktopIconView *desktop_icon_view)
++{
++ GdkWindow *bin_window;
++ GdkRGBA transparent = { 0, 0, 0, 0 };
++
++ bin_window = gtk_layout_get_bin_window (GTK_LAYOUT (widget));
++ gdk_window_set_background_rgba (bin_window, &transparent);
++}
++
+ static NemoZoomLevel
+ get_default_zoom_level (void)
+ {
+@@ -614,6 +615,8 @@ struct NemoDesktopIconViewDetails
+
+ g_signal_connect_object (icon_container, "middle_click",
+ G_CALLBACK (nemo_desktop_icon_view_handle_middle_click), desktop_icon_view, 0);
++ g_signal_connect_object (icon_container, "realize",
++ G_CALLBACK (desktop_icon_container_realize), desktop_icon_view, 0);
+ g_signal_connect_object (desktop_icon_view, "realize",
+ G_CALLBACK (realized_callback), desktop_icon_view, 0);
+ g_signal_connect_object (desktop_icon_view, "unrealize",
+@@ -637,9 +640,6 @@ struct NemoDesktopIconViewDetails
+ G_CALLBACK (nemo_view_update_menus),
+ desktop_icon_view);
+
+- GdkRGBA transparent = { 0, 0, 0, 0 };
+- gtk_widget_override_background_color (GTK_WIDGET (icon_container), GTK_STATE_FLAG_NORMAL, &transparent);
+-
+ have_cinnamon_settings = g_find_program_in_path ("cinnamon-settings") != NULL;
+ }
+
+--
+1.8.1.6
+
+
+From b40990397b6fff55878481a806a1b5574e43951f Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Mon, 15 Apr 2013 20:14:40 -0400
+Subject: [PATCH 3/6] Forgot an include
+
+---
+ libnemo-private/nemo-icon-dnd.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/libnemo-private/nemo-icon-dnd.c b/libnemo-private/nemo-icon-dnd.c
+index 017c6a7..2ed073c 100644
+--- a/libnemo-private/nemo-icon-dnd.c
++++ b/libnemo-private/nemo-icon-dnd.c
+@@ -52,7 +52,6 @@
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
+
+-#include <libnemo-private/nemo-desktop-background.h>
+ #include <libnemo-private/nemo-file-utilities.h>
+ #include <libnemo-private/nemo-file-changes-queue.h>
+ #include <stdio.h>
+--
+1.8.1.6
+
+
+From 020d4dc15fa9c0e1303cef7795e45e688ede7726 Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Tue, 16 Apr 2013 18:00:01 -0400
+Subject: [PATCH 4/6] Change to use cinnamon background keys
+
+---
+ libnemo-private/nemo-global-preferences.c | 2 +-
+ libnemo-private/nemo-global-preferences.h | 2 +-
+ src/nemo-places-sidebar.c | 2 +-
+ src/nemo-view.c | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libnemo-private/nemo-global-preferences.c b/libnemo-private/nemo-global-preferences.c
+index d3ad20a..336afc3 100644
+--- a/libnemo-private/nemo-global-preferences.c
++++ b/libnemo-private/nemo-global-preferences.c
+@@ -76,7 +76,7 @@
+ nemo_desktop_preferences = g_settings_new("org.nemo.desktop");
+ nemo_tree_sidebar_preferences = g_settings_new("org.nemo.sidebar-panels.tree");
+ gnome_lockdown_preferences = g_settings_new("org.gnome.desktop.lockdown");
+- gnome_background_preferences = g_settings_new("org.gnome.desktop.background");
++ cinnamon_background_preferences = g_settings_new("org.cinnamon.background");
+ gnome_media_handling_preferences = g_settings_new("org.gnome.desktop.media-handling");
+ gnome_terminal_preferences = g_settings_new("org.gnome.desktop.default-applications.terminal");
+ }
+diff --git a/libnemo-private/nemo-global-preferences.h b/libnemo-private/nemo-global-preferences.h
+index 2b9c56a..c1ec61a 100644
+--- a/libnemo-private/nemo-global-preferences.h
++++ b/libnemo-private/nemo-global-preferences.h
+@@ -226,7 +226,7 @@ enum
+ GSettings *nemo_tree_sidebar_preferences;
+ GSettings *nemo_window_state;
+ GSettings *gnome_lockdown_preferences;
+-GSettings *gnome_background_preferences;
++GSettings *cinnamon_background_preferences;
+ GSettings *gnome_media_handling_preferences;
+ GSettings *gnome_terminal_preferences;
+
+diff --git a/src/nemo-places-sidebar.c b/src/nemo-places-sidebar.c
+index a0bc4d4..ca32193 100644
+--- a/src/nemo-places-sidebar.c
++++ b/src/nemo-places-sidebar.c
+@@ -3825,7 +3825,7 @@ static void expand_or_collapse_category (NemoPlacesSidebar *sidebar,
+ bookmarks_popup_menu_detach_cb,
+ sidebar);
+
+- g_signal_handlers_disconnect_by_func (gnome_background_preferences,
++ g_signal_handlers_disconnect_by_func (cinnamon_background_preferences,
+ desktop_setting_changed_callback,
+ sidebar);
+
+diff --git a/src/nemo-view.c b/src/nemo-view.c
+index ab03b44..3ece32a 100644
+--- a/src/nemo-view.c
++++ b/src/nemo-view.c
+@@ -6945,7 +6945,7 @@ static void slot_changed_pane (NemoWindowSlot *slot,
+
+ uri = nemo_file_info_get_uri (file);
+
+- g_settings_set_string (gnome_background_preferences,
++ g_settings_set_string (cinnamon_background_preferences,
+ "picture-uri", uri);
+ g_free (uri);
+ }
+--
+1.8.1.6
+
+
+From f487954ebce3f564744e9c83b5dd40fa8f8fad6d Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Mon, 22 Apr 2013 08:33:41 -0400
+Subject: [PATCH 5/6] Fall back to org.gnome.desktop.background schema when
+ cinnamon is not installed
+
+---
+ libnemo-private/nemo-global-preferences.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/libnemo-private/nemo-global-preferences.c b/libnemo-private/nemo-global-preferences.c
+index 336afc3..7eb04ef 100644
+--- a/libnemo-private/nemo-global-preferences.c
++++ b/libnemo-private/nemo-global-preferences.c
+@@ -76,7 +76,25 @@
+ nemo_desktop_preferences = g_settings_new("org.nemo.desktop");
+ nemo_tree_sidebar_preferences = g_settings_new("org.nemo.sidebar-panels.tree");
+ gnome_lockdown_preferences = g_settings_new("org.gnome.desktop.lockdown");
+- cinnamon_background_preferences = g_settings_new("org.cinnamon.background");
+ gnome_media_handling_preferences = g_settings_new("org.gnome.desktop.media-handling");
+ gnome_terminal_preferences = g_settings_new("org.gnome.desktop.default-applications.terminal");
++
++ const gchar * const *schema_list = g_settings_list_schemas ();
++ int i = 0;
++ gboolean has_cinnamon = FALSE;
++ if (schema_list != NULL) {
++ while (schema_list[i] != NULL) {
++ if (g_strcmp0 (schema_list[i], "org.cinnamon.background") == 0) {
++ has_cinnamon = TRUE;
++ break;
++ }
++ i++;
++ }
++ }
++
++ if (has_cinnamon) {
++ cinnamon_background_preferences = g_settings_new ("org.cinnamon.background");
++ } else {
++ cinnamon_background_preferences = g_settings_new ("org.gnome.desktop.background");
++ }
+ }
+--
+1.8.1.6
+
+
+From 9739a1b30603868ea6b8b12cf7aeb167be5aea22 Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Mon, 22 Apr 2013 09:31:49 -0400
+Subject: [PATCH 6/6] simplify schema check
+
+---
+ libnemo-private/nemo-global-preferences.c | 17 +++--------------
+ 1 file changed, 3 insertions(+), 14 deletions(-)
+
+diff --git a/libnemo-private/nemo-global-preferences.c b/libnemo-private/nemo-global-preferences.c
+index 7eb04ef..0470595 100644
+--- a/libnemo-private/nemo-global-preferences.c
++++ b/libnemo-private/nemo-global-preferences.c
+@@ -79,20 +79,9 @@
+ gnome_media_handling_preferences = g_settings_new("org.gnome.desktop.media-handling");
+ gnome_terminal_preferences = g_settings_new("org.gnome.desktop.default-applications.terminal");
+
+- const gchar * const *schema_list = g_settings_list_schemas ();
+- int i = 0;
+- gboolean has_cinnamon = FALSE;
+- if (schema_list != NULL) {
+- while (schema_list[i] != NULL) {
+- if (g_strcmp0 (schema_list[i], "org.cinnamon.background") == 0) {
+- has_cinnamon = TRUE;
+- break;
+- }
+- i++;
+- }
+- }
+-
+- if (has_cinnamon) {
++ GSettingsSchemaSource *schema_source;
++ schema_source = g_settings_schema_source_get_default();
++ if (g_settings_schema_source_lookup (schema_source, "org.cinnamon.background", FALSE)) {
+ cinnamon_background_preferences = g_settings_new ("org.cinnamon.background");
+ } else {
+ cinnamon_background_preferences = g_settings_new ("org.gnome.desktop.background");
+--
+1.8.1.6
+
diff --git a/community/nemo/tracker-0.16.patch b/community/nemo/tracker-0.16.patch
new file mode 100644
index 000000000..49964678d
--- /dev/null
+++ b/community/nemo/tracker-0.16.patch
@@ -0,0 +1,33 @@
+From 88459a57ac2fcf06400ade5c6d0189bf1aa2334d Mon Sep 17 00:00:00 2001
+From: Nick Black <nick.black@sprezzatech.com>
+Date: Fri, 12 Apr 2013 17:10:46 -0400
+Subject: [PATCH] build with tracker 0.16
+
+---
+ configure.in | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index ec72f73..21afbe4 100644
+--- a/configure.in
++++ b/configure.in
+@@ -249,11 +249,13 @@ AC_ARG_ENABLE(tracker,
+
+ build_tracker=no
+ if test "x$enable_tracker" != "xno"; then
+- PKG_CHECK_MODULES(TRACKER, tracker-sparql-0.14,
++ PKG_CHECK_MODULES(TRACKER, tracker-sparql-0.16,
+ [build_tracker=yes],
+- [PKG_CHECK_MODULES(TRACKER, tracker-sparql-0.12,
++ [PKG_CHECK_MODULES(TRACKER, tracker-sparql-0.14,
++ [build_tracker=yes],
++ [PKG_CHECK_MODULES(TRACKER, tracker-sparql-0.12,
+ [build_tracker=yes],
+- [build_tracker=no])])
++ [build_tracker=no])])])
+ if test "x$build_tracker" = "xyes"; then
+ AC_DEFINE(ENABLE_TRACKER, 1, [Define to enable Tracker support])
+ fi
+--
+1.8.1.5
+