diff -Nru caja-1.20.3/caja-unity.patch caja-1.20.3/caja-unity.patch --- caja-1.20.3/caja-unity.patch 1970-01-01 00:00:00.000000000 +0000 +++ caja-1.20.3/caja-unity.patch 2019-02-02 10:26:21.000000000 +0000 @@ -0,0 +1,215 @@ +From d53dfa8798e95c35f3885a63001dfaf5071f0b08 Mon Sep 17 00:00:00 2001 +From: Khurshid Alam +Date: Fri, 25 Jan 2019 12:15:14 +0530 +Subject: [PATCH 1/2] Add Unity patches + +--- + libcaja-private/caja-global-preferences.h | 1 + + libcaja-private/caja-mime-actions.c | 23 ++++++++++++++++++-- + libcaja-private/org.mate.caja.gschema.xml | 5 +++++ + src/caja-application.c | 9 +++++--- + src/file-manager/fm-desktop-icon-view.c | 26 ++++++++++++++++++----- + 5 files changed, 54 insertions(+), 10 deletions(-) + +diff --git a/libcaja-private/caja-global-preferences.h b/libcaja-private/caja-global-preferences.h +index 7a0da28..4c35597 100644 +--- a/libcaja-private/caja-global-preferences.h ++++ b/libcaja-private/caja-global-preferences.h +@@ -206,6 +206,7 @@ typedef enum + #define CAJA_PREFERENCES_DESKTOP_NETWORK_NAME "network-icon-name" + #define CAJA_PREFERENCES_LOCKDOWN_COMMAND_LINE "disable-command-line" + #define CAJA_PREFERENCES_DISABLED_EXTENSIONS "disabled-extensions" ++#define CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND "only-draw-background" + + void caja_global_preferences_init (void); + char *caja_global_preferences_get_default_folder_viewer_preference_as_iid (void); +diff --git a/libcaja-private/caja-mime-actions.c b/libcaja-private/caja-mime-actions.c +index b52279f..2169cd1 100644 +--- a/libcaja-private/caja-mime-actions.c ++++ b/libcaja-private/caja-mime-actions.c +@@ -1758,6 +1758,7 @@ activate_files (ActivateParameters *parameters) + ActivationAction action; + GdkScreen *screen; + LaunchLocation *location; ++ GAppInfo *app = NULL; + + screen = gtk_widget_get_screen (GTK_WIDGET (parameters->parent_window)); + +@@ -1923,8 +1924,26 @@ activate_files (ActivateParameters *parameters) + + uri = caja_file_get_activation_uri (file); + f = g_file_new_for_uri (uri); +- caja_window_slot_info_open_location (parameters->slot_info, +- f, parameters->mode, flags, NULL); ++ ++ /* This is unity specific where caja draws desktop background, ++ * keeping nautilus default file manager.*/ ++ ++ if (g_settings_get_boolean (caja_desktop_preferences, ++ CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND)) { ++ ++ app = caja_mime_get_default_application_for_file (file); ++ caja_launch_application_from_command (screen, ++ _("Other default file-manager"), ++ g_app_info_get_executable (app), ++ FALSE, ++ uri, NULL); ++ g_object_unref (app); ++ app = NULL; ++ } else { ++ caja_window_slot_info_open_location (parameters->slot_info, ++ f, parameters->mode, flags, NULL); ++ } ++ + g_object_unref (f); + g_free (uri); + } +diff --git a/libcaja-private/org.mate.caja.gschema.xml b/libcaja-private/org.mate.caja.gschema.xml +index b6ecab1..194eb5b 100644 +--- a/libcaja-private/org.mate.caja.gschema.xml ++++ b/libcaja-private/org.mate.caja.gschema.xml +@@ -408,6 +408,11 @@ + Text Ellipsis Limit + An integer specifying how parts of overlong file names should be replaced by ellipses on the desktop. If the number is larger than 0, the file name will not exceed the given number of lines. If the number is 0 or smaller, no limit is imposed on the number of displayed lines. + ++ ++ false ++ Use caja only for drawing desktop background ++ If this is set to true, caja will be used only for drawing desktop background and not as a default file-manager. Directories will be opened with other default file-manager installed. ++ + + + +diff --git a/src/caja-application.c b/src/caja-application.c +index 723edfc..dd70024 100644 +--- a/src/caja-application.c ++++ b/src/caja-application.c +@@ -2315,15 +2315,18 @@ caja_application_startup (GApplication *app) + */ + G_APPLICATION_CLASS (caja_application_parent_class)->startup (app); + +- /* Start the File Manager DBus Interface */ +- fdb_manager = caja_freedesktop_dbus_new (self); +- + /* Initialize preferences. This is needed so that proper + * defaults are available before any preference peeking + * happens. + */ + caja_global_preferences_init (); + ++ /* Start the File Manager DBus Interface */ ++ if (!g_settings_get_boolean (caja_desktop_preferences, ++ CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND)) { ++ fdb_manager = caja_freedesktop_dbus_new (self); ++ } ++ + /* initialize the session manager client */ + caja_application_smclient_startup (self); + +diff --git a/src/file-manager/fm-desktop-icon-view.c b/src/file-manager/fm-desktop-icon-view.c +index 42186a7..eaecb82 100644 +--- a/src/file-manager/fm-desktop-icon-view.c ++++ b/src/file-manager/fm-desktop-icon-view.c +@@ -91,6 +91,14 @@ G_DEFINE_TYPE (FMDesktopIconView, fm_desktop_icon_view, FM_TYPE_ICON_VIEW) + static char *desktop_directory; + static time_t desktop_dir_modify_time; + ++static gboolean ++running_in_unity (void) ++{ ++ return (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity:Unity7:ubuntu") == 0) ++ || (g_strcmp0 (g_getenv ("XDG_SESSION_DESKTOP"), "Unity") == 0) ++ || (g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "unity") == 0); ++} ++ + static void + desktop_directory_changed_callback (gpointer callback_data) + { +@@ -668,11 +676,19 @@ action_change_background_callback (GtkAction *action, + { + g_assert (FM_DIRECTORY_VIEW (data)); + +- caja_launch_application_from_command (gtk_widget_get_screen (GTK_WIDGET (data)), +- _("Background"), +- "mate-appearance-properties", +- FALSE, +- "--show-page=background", NULL); ++ if (running_in_unity ()) { ++ caja_launch_application_from_command (gtk_widget_get_screen (GTK_WIDGET (data)), ++ _("Background"), ++ "unity-control-center", ++ FALSE, ++ "appearance", NULL); ++ } else { ++ caja_launch_application_from_command (gtk_widget_get_screen (GTK_WIDGET (data)), ++ _("Background"), ++ "mate-appearance-properties", ++ FALSE, ++ "--show-page=background", NULL); ++ } + } + + static void +-- +2.19.1 + + +From d6882386e4426985f0f604ba900bd8bcb36dc8b8 Mon Sep 17 00:00:00 2001 +From: Khurshid Alam +Date: Tue, 29 Jan 2019 13:51:04 +0530 +Subject: [PATCH 2/2] Add caja-unity-autostart.desktop + +--- + data/Makefile.am | 6 ++++++ + data/caja-unity-autostart.desktop.in | 9 +++++++++ + 2 files changed, 15 insertions(+) + create mode 100644 data/caja-unity-autostart.desktop.in + +diff --git a/data/Makefile.am b/data/Makefile.am +index 757958b..5f342a4 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -14,6 +14,10 @@ desktop_in_files = \ + caja-file-management-properties.desktop.in \ + caja-browser.desktop.in \ + caja-autorun-software.desktop.in ++ ++autostartdir = $(sysconfdir)/xdg/autostart ++autostart_in_files = caja-unity-autostart.desktop.in ++autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) + @INTLTOOL_DESKTOP_RULE@ + + mimedir = $(datadir)/mime/packages +@@ -51,12 +55,14 @@ EXTRA_DIST = $(cajadata_DATA) \ + $(desktop_in_files) \ + $(service_in_files) \ + $(appdata_in_files) \ ++ $(autostart_in_files) \ + $(NULL) + + CLEANFILES = $(xml_files) \ + $(desktop_DATA) \ + $(service_DATA) \ + caja.appdata.xml \ ++ $(autostart_DATA) \ + $(NULL) + + SUBDIRS = \ +diff --git a/data/caja-unity-autostart.desktop.in b/data/caja-unity-autostart.desktop.in +new file mode 100644 +index 0000000..f49c2fd +--- /dev/null ++++ b/data/caja-unity-autostart.desktop.in +@@ -0,0 +1,9 @@ ++[Desktop Entry] ++Type=Application ++Name=Caja ++Exec=caja --force-desktop --no-default-window ++OnlyShowIn=Unity; ++AutostartCondition=GSettings org.mate.background show-desktop-icons ++X-GNOME-AutoRestart=true ++X-GNOME-Autostart-Delay=2 ++NoDisplay=true +-- +2.19.1 + diff -Nru caja-1.20.3/data/caja-unity-autostart.desktop.in caja-1.20.3/data/caja-unity-autostart.desktop.in --- caja-1.20.3/data/caja-unity-autostart.desktop.in 1970-01-01 00:00:00.000000000 +0000 +++ caja-1.20.3/data/caja-unity-autostart.desktop.in 2019-02-02 10:26:21.000000000 +0000 @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Name=Caja +Exec=caja --force-desktop --no-default-window +OnlyShowIn=Unity; +AutostartCondition=GSettings org.mate.background show-desktop-icons +X-GNOME-AutoRestart=true +X-GNOME-Autostart-Delay=2 +NoDisplay=true diff -Nru caja-1.20.3/data/Makefile.am caja-1.20.3/data/Makefile.am --- caja-1.20.3/data/Makefile.am 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/data/Makefile.am 2019-02-02 10:26:21.000000000 +0000 @@ -14,6 +14,10 @@ caja-file-management-properties.desktop.in \ caja-browser.desktop.in \ caja-autorun-software.desktop.in + +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = caja-unity-autostart.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ mimedir = $(datadir)/mime/packages @@ -51,12 +55,14 @@ $(desktop_in_files) \ $(service_in_files) \ $(appdata_in_files) \ + $(autostart_in_files) \ $(NULL) CLEANFILES = $(xml_files) \ $(desktop_DATA) \ $(service_DATA) \ caja.appdata.xml \ + $(autostart_DATA) \ $(NULL) SUBDIRS = \ diff -Nru caja-1.20.3/debian/caja.install caja-1.20.3/debian/caja.install --- caja-1.20.3/debian/caja.install 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/debian/caja.install 2019-02-02 10:26:21.000000000 +0000 @@ -1,3 +1,4 @@ usr/bin/ usr/share/applications/ usr/share/metainfo/ +etc/xdg/autostart/ diff -Nru caja-1.20.3/debian/changelog caja-1.20.3/debian/changelog --- caja-1.20.3/debian/changelog 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/debian/changelog 2019-02-02 10:26:21.000000000 +0000 @@ -1,8 +1,8 @@ -caja (1.20.3-1build1+201901161632~ubuntu19.04.1) disco; urgency=low +caja (1.20.3-1build1+201902021026~ubuntu19.04.1) disco; urgency=low * Auto build. - -- Khurshid Alam Wed, 16 Jan 2019 16:32:57 +0000 + -- Khurshid Alam Sat, 02 Feb 2019 10:26:21 +0000 caja (1.20.3-1build1) disco; urgency=medium diff -Nru caja-1.20.3/debian/git-build-recipe.manifest caja-1.20.3/debian/git-build-recipe.manifest --- caja-1.20.3/debian/git-build-recipe.manifest 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/debian/git-build-recipe.manifest 2019-02-02 10:26:21.000000000 +0000 @@ -1,2 +1,2 @@ -# git-build-recipe format 0.4 deb-version {debversion}+201901161632 -lp:~khurshid-alam/mate-desktop/+git/caja-unity-patches git-commit:0f98944b879f5a89b67c9c969706ebae2dd31fbd +# git-build-recipe format 0.4 deb-version {debversion}+201902021026 +lp:~khurshid-alam/mate-desktop/+git/caja-unity-patches git-commit:9e32f45fbd5c912d70b25744acd5600f6ad18395 diff -Nru caja-1.20.3/src/caja-application.c caja-1.20.3/src/caja-application.c --- caja-1.20.3/src/caja-application.c 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/src/caja-application.c 2019-02-02 10:26:21.000000000 +0000 @@ -1187,6 +1187,31 @@ } } +/* callback for changing default file manager in user's preference */ +static void +file_manager_changed_callback (gpointer user_data) +{ + CajaApplication *application; + guint fdb_id = 0; + + application = CAJA_APPLICATION (user_data); + if (g_settings_get_boolean (caja_desktop_preferences, + CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND)) + { + if (fdb_manager != NULL) { + fdb_id = caja_get_fdb_owner_id (fdb_manager); + g_bus_unown_name (fdb_id); + fdb_id = 0; + } + } + else + { + if (fdb_manager == NULL) { + fdb_manager = caja_freedesktop_dbus_new (application); + } + } +} + static gboolean window_can_be_closed (CajaWindow *window) { @@ -2255,6 +2280,23 @@ self); } +static void +init_fdb (CajaApplication *self) +{ + + /* Start the File Manager DBus Interface */ + if (!g_settings_get_boolean (caja_desktop_preferences, + CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND)) { + fdb_manager = caja_freedesktop_dbus_new (self); + } + + + /* Monitor the preference to change default file manager */ + g_signal_connect_swapped (caja_desktop_preferences, "changed::" CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND, + G_CALLBACK (file_manager_changed_callback), + self); +} + static gboolean caja_application_save_accel_map (gpointer data) { @@ -2322,10 +2364,7 @@ caja_global_preferences_init (); /* Start the File Manager DBus Interface */ - if (!g_settings_get_boolean (caja_desktop_preferences, - CAJA_PREFERENCES_ONLY_DRAW_BACKGROUND)) { - fdb_manager = caja_freedesktop_dbus_new (self); - } + init_fdb (self); /* initialize the session manager client */ caja_application_smclient_startup (self); diff -Nru caja-1.20.3/src/caja-freedesktop-dbus.c caja-1.20.3/src/caja-freedesktop-dbus.c --- caja-1.20.3/src/caja-freedesktop-dbus.c 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/src/caja-freedesktop-dbus.c 2019-02-02 10:26:21.000000000 +0000 @@ -237,6 +237,12 @@ NULL); } +guint +caja_get_fdb_owner_id (CajaFreedesktopDBus *fdb) +{ + return fdb->owner_id; +} + /* Tries to own the org.freedesktop.FileManager1 service name */ CajaFreedesktopDBus * caja_freedesktop_dbus_new (CajaApplication *application) diff -Nru caja-1.20.3/src/caja-freedesktop-dbus.h caja-1.20.3/src/caja-freedesktop-dbus.h --- caja-1.20.3/src/caja-freedesktop-dbus.h 2019-01-16 16:32:57.000000000 +0000 +++ caja-1.20.3/src/caja-freedesktop-dbus.h 2019-02-02 10:26:21.000000000 +0000 @@ -37,6 +37,7 @@ typedef struct _CajaFreedesktopDBusClass CajaFreedesktopDBusClass; GType caja_freedesktop_dbus_get_type (void); +guint caja_get_fdb_owner_id (CajaFreedesktopDBus *fdb); CajaFreedesktopDBus * caja_freedesktop_dbus_new (CajaApplication *application); #endif /* __CAJA_FREEDESKTOP_DBUS_H__ */