diff options
Diffstat (limited to 'capplets/default-applications')
18 files changed, 3908 insertions, 0 deletions
diff --git a/capplets/default-applications/Makefile.am b/capplets/default-applications/Makefile.am new file mode 100644 index 00000000..b6487ec7 --- /dev/null +++ b/capplets/default-applications/Makefile.am @@ -0,0 +1,75 @@ +# This is used in MATECC_CAPPLETS_CFLAGS +cappletname = default-applications + +bin_PROGRAMS = mate-default-applications-properties + +bin_SCRIPTS = mate-at-visual mate-at-mobility + +mate_default_applications_properties_LDADD = $(MATECC_CAPPLETS_LIBS) +mate_default_applications_properties_SOURCES = \ + mate-da-capplet.c mate-da-capplet.h \ + mate-da-xml.c mate-da-xml.h \ + mate-da-item.c mate-da-item.h + +@INTLTOOL_DESKTOP_RULE@ + +uidir = $(pkgdatadir)/ui +dist_ui_DATA = mate-default-applications-properties.ui + +mate-at-visual: mate-at-commandline.in + cp $< $@ + +mate-at-mobility: mate-at-commandline.in + cp $< $@ + +desktopdir = $(datadir)/applications +Desktop_in_files = default-applications.desktop.in +desktop_DATA = $(Desktop_in_files:.desktop.in=.desktop) + +pkgconfigdir = $(datadir)/pkgconfig +pkgconfig_DATA = mate-default-applications.pc + +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = mate-at-session.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) + +xmldata_in_files = mate-default-applications.xml.in +xmldatadir = $(pkgdatadir)/default-apps +xmldata_DATA = $(xmldata_in_files:.xml.in=.xml) +@INTLTOOL_XML_RULE@ + +INCLUDES = \ + $(MATECC_CAPPLETS_CFLAGS) \ + $(DEFAULT_APPLICATIONS_CAPPLET_CFLAGS) \ + -DMATELOCALEDIR=\""$(datadir)/locale"\"\ + -DMATECC_UI_DIR=\""$(uidir)"\" \ + -DMATECC_APPS_DIR=\""$(xmldatadir)"\" + +icons16dir = $(datadir)/icons/mate/16x16/apps +dist_icons16_DATA = icons/16x16/preferences-desktop-default-applications.png +icons22dir = $(datadir)/icons/mate/22x22/apps +dist_icons22_DATA = icons/22x22/preferences-desktop-default-applications.png +icons24dir = $(datadir)/icons/mate/24x24/apps +dist_icons24_DATA = icons/24x24/preferences-desktop-default-applications.png +icons32dir = $(datadir)/icons/mate/32x32/apps +dist_icons32_DATA = icons/32x32/preferences-desktop-default-applications.png +icons48dir = $(datadir)/icons/mate/48x48/apps +dist_icons48_DATA = icons/48x48/preferences-desktop-default-applications.png + +gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor +uninstall-hook: update-icon-cache +install-data-hook: update-icon-cache +update-icon-cache: + @-if test -z "$(DESTDIR)"; then \ + echo "Updating Gtk icon cache."; \ + $(gtk_update_icon_cache); \ + else \ + echo "*** Icon cache not updated. After install, run this:"; \ + echo "*** $(gtk_update_icon_cache)"; \ + fi + + +CLEANFILES = $(MATECC_CAPPLETS_CLEANFILES) $(Desktop_in_files) $(desktop_DATA) $(xmldata_DATA) $(autostart_DATA) $(bin_SCRIPTS) +EXTRA_DIST = $(xmldata_in_files) mate-default-applications.pc.in + +-include $(top_srcdir)/git.mk diff --git a/capplets/default-applications/default-applications.desktop.in.in b/capplets/default-applications/default-applications.desktop.in.in new file mode 100644 index 00000000..9b25b759 --- /dev/null +++ b/capplets/default-applications/default-applications.desktop.in.in @@ -0,0 +1,14 @@ +[Desktop Entry] +_Name=Preferred Applications +_Comment=Select your default applications +Exec=mate-default-applications-properties +Icon=preferences-desktop-default-applications +Terminal=false +Type=Application +StartupNotify=true +Categories=MATE;GTK;Settings;X-MATE-PersonalSettings; +OnlyShowIn=MATE; +X-MATE-Bugzilla-Bugzilla=MATE +X-MATE-Bugzilla-Product=mate-control-center +X-MATE-Bugzilla-Component=Preferred applications +X-MATE-Bugzilla-Version=@VERSION@ diff --git a/capplets/default-applications/icons/16x16/preferences-desktop-default-applications.png b/capplets/default-applications/icons/16x16/preferences-desktop-default-applications.png Binary files differnew file mode 100644 index 00000000..41a765aa --- /dev/null +++ b/capplets/default-applications/icons/16x16/preferences-desktop-default-applications.png diff --git a/capplets/default-applications/icons/22x22/preferences-desktop-default-applications.png b/capplets/default-applications/icons/22x22/preferences-desktop-default-applications.png Binary files differnew file mode 100644 index 00000000..83b6826c --- /dev/null +++ b/capplets/default-applications/icons/22x22/preferences-desktop-default-applications.png diff --git a/capplets/default-applications/icons/24x24/preferences-desktop-default-applications.png b/capplets/default-applications/icons/24x24/preferences-desktop-default-applications.png Binary files differnew file mode 100644 index 00000000..630ea040 --- /dev/null +++ b/capplets/default-applications/icons/24x24/preferences-desktop-default-applications.png diff --git a/capplets/default-applications/icons/32x32/preferences-desktop-default-applications.png b/capplets/default-applications/icons/32x32/preferences-desktop-default-applications.png Binary files differnew file mode 100644 index 00000000..23718f78 --- /dev/null +++ b/capplets/default-applications/icons/32x32/preferences-desktop-default-applications.png diff --git a/capplets/default-applications/icons/48x48/preferences-desktop-default-applications.png b/capplets/default-applications/icons/48x48/preferences-desktop-default-applications.png Binary files differnew file mode 100644 index 00000000..ac25569d --- /dev/null +++ b/capplets/default-applications/icons/48x48/preferences-desktop-default-applications.png diff --git a/capplets/default-applications/mate-at-commandline.in.in b/capplets/default-applications/mate-at-commandline.in.in new file mode 100644 index 00000000..f9d93b16 --- /dev/null +++ b/capplets/default-applications/mate-at-commandline.in.in @@ -0,0 +1,101 @@ +#!/bin/sh +# +# Copyright 2006 IBM Corp. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of version 2 of the GNU General Public License +# as published by the Free Software Foundation +# +# 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. +# +############################################################################### +# +# NOTE: This script is intended to be run from the command line, +# MATE menu, or from the desktop autostart. +# +# /usr/bin/mate-at-visual +# /usr/bin/mate-at-mobility +# +# If the "-s" flag is used then it is assumed to have been invoked +# from /usr/share/mate/autostart/, and the first AT flagged +# to "startup" from MATECONF_ALL will be executed. +# + +USAGE="$0 [-s]" +MATECONF_PATH=/desktop/mate/applications/at +MATECONF_VISUAL="visual" +MATECONF_MOBILITY="mobility" +MATECONF_ALL="$MATECONF_VISUAL $MATECONF_MOBILITY" + +run_at() { + CMDLINE=`mateconftool-2 --get $MATECONF_PATH/$1/exec` + if [ $? -ne 0 ]; then + exit $? + fi + + if [ -z "$CMDLINE" ]; then + exit 2 + fi + + STARTUP=`mateconftool-2 --get $MATECONF_PATH/$1/startup` + if [ $? -ne 0 ]; then + exit $? + fi + + if [ ! -z "$AUTOSTART" ]; then + # assuming ran from /usr/share/mate/autostart + if [ "x$STARTUP" = "xtrue" ]; then + # mateconf indicated requested autostart + ($CMDLINE &) + fi + else + # run from command line or desktop menu + ($CMDLINE &) + fi +} + +case `basename $0` in + mate-at-visual ) + AT=$MATECONF_VISUAL + ;; + mate-at-mobility ) + AT=$MATECONF_MOBILITY + ;; + mate-at-session | * ) + AUTOSTART="yes" + AT=$MATECONF_ALL + ;; +esac + +while getopts "s" options; do + case $options in + s ) AUTOSTART="yes" + AT=$MATECONF_ALL + shift + ;; + \? ) echo $USAGE + exit 1 + ;; + * ) echo $USAGE + exit 1 + ;; + esac +done + +if [ $# -ne 0 ]; then + echo $USAGE + exit 1 +fi + +for I in $AT ; do + run_at $I +done + +#EOF diff --git a/capplets/default-applications/mate-at-session.desktop.in.in b/capplets/default-applications/mate-at-session.desktop.in.in new file mode 100644 index 00000000..2e32f8ba --- /dev/null +++ b/capplets/default-applications/mate-at-session.desktop.in.in @@ -0,0 +1,15 @@ +[Desktop Entry] +_Name=Visual Assistance +_Comment=Start the preferred visual assistive technology +Exec=mate-at-visual -s +Icon=preferences-desktop-accessibility +Terminal=false +Type=Application +StartupNotify=false +OnlyShowIn=MATE; +AutostartCondition=MATE /desktop/mate/interface/accessibility +X-MATE-Bugzilla-Bugzilla=MATE +X-MATE-Bugzilla-Product=mate-control-center +X-MATE-Bugzilla-Component=other capplets +X-MATE-Bugzilla-Version=@VERSION@ +X-MATE-Autostart-enabled=true diff --git a/capplets/default-applications/mate-da-capplet.c b/capplets/default-applications/mate-da-capplet.c new file mode 100644 index 00000000..37a01359 --- /dev/null +++ b/capplets/default-applications/mate-da-capplet.c @@ -0,0 +1,970 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * Copyright 2008 Thomas Wood <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <string.h> +#include <glib/gi18n.h> +#include <stdlib.h> + +#include "mateconf-property-editor.h" +#include "mate-da-capplet.h" +#include "mate-da-xml.h" +#include "mate-da-item.h" +#include "capplet-util.h" + +enum { + PIXBUF_COL, + TEXT_COL, + N_COLUMNS +}; + +static void close_cb(GtkWidget* window, gint response, gpointer user_data) +{ + if (response == GTK_RESPONSE_HELP) + { + capplet_help (GTK_WINDOW (window), "prefs-preferredapps"); + } + else + { + gtk_widget_destroy (window); + gtk_main_quit (); + } +} + +static void set_icon (GtkImage* image, GtkIconTheme* theme, const char* name) +{ + GdkPixbuf* pixbuf; + + if ((pixbuf = gtk_icon_theme_load_icon(theme, name, 48, 0, NULL))) + { + gtk_image_set_from_pixbuf(image, pixbuf); + g_object_unref(pixbuf); + } +} + +static void web_radiobutton_toggled_cb(GtkWidget* togglebutton, MateDACapplet* capplet) +{ + gint index; + MateDAWebItem *item; + const gchar *command; + GError *error = NULL; + + index = gtk_combo_box_get_active (GTK_COMBO_BOX (capplet->web_combo_box)); + + if (index == -1) + return; + + item = (MateDAWebItem *) g_list_nth_data (capplet->web_browsers, index); + if (item == NULL) + return; + + if (togglebutton == capplet->new_win_radiobutton) { + command = item->win_command; + } + else if (togglebutton == capplet->new_tab_radiobutton) { + command = item->tab_command; + } + else { + command = item->generic.command; + } + + mateconf_client_set_string (capplet->mateconf, DEFAULT_APPS_KEY_HTTP_EXEC, command, &error); + + gtk_entry_set_text (GTK_ENTRY (capplet->web_browser_command_entry), command); + + if (error != NULL) { + g_warning (_("Error saving configuration: %s"), error->message); + g_error_free (error); + } +} + +static void web_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + gboolean has_net_remote; + MateDAWebItem *item; + GtkWidget *active = NULL; + + current_index = gtk_combo_box_get_active (combo); + + if (current_index < g_list_length (capplet->web_browsers)) { + + item = (MateDAWebItem*) g_list_nth_data (capplet->web_browsers, current_index); + has_net_remote = item->netscape_remote; + is_custom_active = FALSE; + + } + else { + has_net_remote = FALSE; + is_custom_active = TRUE; + } + gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote); + gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote); + gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote); + + gtk_widget_set_sensitive (capplet->web_browser_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->web_browser_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->web_browser_terminal_checkbutton, is_custom_active); + + if (has_net_remote) { + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton))) + active = capplet->new_win_radiobutton; + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton))) + active = capplet->new_tab_radiobutton; + else + active = capplet->default_radiobutton; + } + + web_radiobutton_toggled_cb (active, capplet); +} + +/* FIXME: Refactor these two functions below into one... */ +static void mail_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); + is_custom_active = (current_index >= g_list_length (capplet->mail_readers)); + + gtk_widget_set_sensitive (capplet->mail_reader_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->mail_reader_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->mail_reader_terminal_checkbutton, is_custom_active); +} + +static void media_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); + is_custom_active = (current_index >= g_list_length (capplet->media_players)); + + gtk_widget_set_sensitive (capplet->media_player_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->media_player_terminal_checkbutton, is_custom_active); +} + +static void terminal_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); + is_custom_active = (current_index >= g_list_length (capplet->terminals)); + + gtk_widget_set_sensitive (capplet->terminal_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->terminal_command_label, is_custom_active); + gtk_widget_set_sensitive (capplet->terminal_exec_flag_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->terminal_exec_flag_label, is_custom_active); +} + +static void visual_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); + is_custom_active = (current_index >= g_list_length (capplet->visual_ats)); + + gtk_widget_set_sensitive (capplet->visual_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->visual_command_label, is_custom_active); +} + +static void mobility_combo_changed_cb(GtkComboBox* combo, MateDACapplet* capplet) +{ + guint current_index; + gboolean is_custom_active; + + current_index = gtk_combo_box_get_active (combo); + is_custom_active = (current_index >= g_list_length (capplet->mobility_ats)); + + gtk_widget_set_sensitive (capplet->mobility_command_entry, is_custom_active); + gtk_widget_set_sensitive (capplet->mobility_command_label, is_custom_active); +} + +static void refresh_combo_box_icons(GtkIconTheme* theme, GtkComboBox* combo_box, GList* app_list) +{ + GList *entry; + MateDAItem *item; + GtkTreeModel *model; + GtkTreeIter iter; + GdkPixbuf *pixbuf; + + for (entry = app_list; entry != NULL; entry = g_list_next (entry)) { + item = (MateDAItem *) entry->data; + + model = gtk_combo_box_get_model (combo_box); + + if (item->icon_path && gtk_tree_model_get_iter_from_string (model, &iter, item->icon_path)) { + pixbuf = gtk_icon_theme_load_icon (theme, item->icon_name, 22, 0, NULL); + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + PIXBUF_COL, pixbuf, + -1); + + if (pixbuf) + g_object_unref (pixbuf); + } + } +} + +static struct { + const gchar* name; + const gchar* icon; +} icons[] = { + {"web_browser_image", "web-browser"}, + {"mail_reader_image", "emblem-mail"}, + {"media_player_image", "applications-multimedia"}, + {"visual_image", "zoom-best-fit"}, + {"mobility_image", "preferences-desktop-accessibility"}, + /* + {"messenger_image", "im"}, + {"file_manager_image", "file-manager"}, + {"image_image", "image-viewer"}, + {"video_image", "mate-multimedia"}, + {"text_image", "text-editor"}, + */ + {"terminal_image", "mate-terminal"} +}; + +static void theme_changed_cb(GtkIconTheme* theme, MateDACapplet* capplet) +{ + GObject *icon; + gint i; + + for (i = 0; i < G_N_ELEMENTS (icons); i++) + { + icon = gtk_builder_get_object (capplet->builder, icons[i].name); + set_icon (GTK_IMAGE (icon), theme, icons[i].icon); + } + + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats); + refresh_combo_box_icons (theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats); +} + +static void screen_changed_cb(GtkWidget* widget, GdkScreen* screen, MateDACapplet* capplet) +{ + GtkIconTheme* theme; + + theme = gtk_icon_theme_get_for_screen (screen); + + if (capplet->icon_theme != NULL) + { + g_signal_handlers_disconnect_by_func (capplet->icon_theme, theme_changed_cb, capplet); + } + + g_signal_connect (theme, "changed", G_CALLBACK (theme_changed_cb), capplet); + theme_changed_cb (theme, capplet); + + capplet->icon_theme = theme; +} + +static gint generic_item_comp(gconstpointer list_item, gconstpointer command) +{ + return (strcmp (((MateDAItem *) list_item)->command, (gchar *) command)); +} + +static gint web_item_comp(gconstpointer item, gconstpointer command) +{ + MateDAWebItem *web_list_item; + + web_list_item = (MateDAWebItem *) item; + + if (strcmp (web_list_item->generic.command, (gchar *) command) == 0) + return 0; + + if (web_list_item->netscape_remote) { + if (strcmp (web_list_item->tab_command, (gchar *) command) == 0) + return 0; + + if (strcmp (web_list_item->win_command, (gchar *) command) == 0) + return 0; + } + + return (strcmp (web_list_item->generic.command, (gchar *) command)); +} + +static void web_mateconf_changed_cb(MateConfPropertyEditor* peditor, gchar* key, MateConfValue* value, MateDACapplet* capplet) +{ + MateConfChangeSet *cs; + GError *error = NULL; + GList *list_entry; + + /* This function is used to update HTTPS,ABOUT and UNKNOWN handlers, which + * should also use the same value as HTTP + */ + + if (strcmp (key, DEFAULT_APPS_KEY_HTTP_EXEC) == 0) { + gchar *short_browser, *pos; + const gchar *value_str = mateconf_value_get_string (value); + + cs = mateconf_change_set_new (); + + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_EXEC, value); + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_EXEC, value); + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_EXEC, value); + pos = strstr (value_str, " "); + if (pos == NULL) + short_browser = g_strdup (value_str); + else + short_browser = g_strndup (value_str, pos - value_str); + mateconf_change_set_set_string (cs, DEFAULT_APPS_KEY_BROWSER_EXEC, short_browser); + g_free (short_browser); + + list_entry = g_list_find_custom (capplet->web_browsers, + value_str, + (GCompareFunc) web_item_comp); + + if (list_entry) { + MateDAWebItem *item = (MateDAWebItem *) list_entry->data; + + mateconf_change_set_set_bool (cs, DEFAULT_APPS_KEY_BROWSER_NREMOTE, item->netscape_remote); + } + + mateconf_client_commit_change_set (capplet->mateconf, cs, TRUE, &error); + + if (error != NULL) { + g_warning (_("Error saving configuration: %s"), error->message); + g_error_free (error); + error = NULL; + } + + mateconf_change_set_unref (cs); + } + else if (strcmp (key, DEFAULT_APPS_KEY_HTTP_NEEDS_TERM) == 0) { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->web_browser_terminal_checkbutton), + mateconf_value_get_bool (value)); + + cs = mateconf_change_set_new (); + + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_HTTPS_NEEDS_TERM, value); + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_UNKNOWN_NEEDS_TERM, value); + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_ABOUT_NEEDS_TERM, value); + mateconf_change_set_set (cs, DEFAULT_APPS_KEY_BROWSER_NEEDS_TERM, value); + + mateconf_client_commit_change_set (capplet->mateconf, cs, TRUE, &error); + + if (error != NULL) { + g_warning (_("Error saving configuration: %s"), error->message); + g_error_free (error); + error = NULL; + } + + mateconf_change_set_unref (cs); + } +} + +static void web_browser_update_radio_buttons(MateDACapplet* capplet, const gchar* command) +{ + GList *entry; + gboolean has_net_remote; + + entry = g_list_find_custom (capplet->web_browsers, command, (GCompareFunc) web_item_comp); + + if (entry) { + MateDAWebItem *item = (MateDAWebItem *) entry->data; + + has_net_remote = item->netscape_remote; + + if (has_net_remote) { + /* disable "toggle" signal emitting, thus preventing calling this function twice */ + g_signal_handlers_block_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + g_signal_handlers_block_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + g_signal_handlers_block_matched (capplet->new_win_radiobutton,G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->default_radiobutton), + strcmp (item->generic.command, command) == 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton), + strcmp (item->tab_command, command) == 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton), + strcmp (item->win_command, command) == 0); + + g_signal_handlers_unblock_matched (capplet->default_radiobutton, G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + g_signal_handlers_unblock_matched (capplet->new_tab_radiobutton, G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + g_signal_handlers_unblock_matched (capplet->new_win_radiobutton, G_SIGNAL_MATCH_FUNC, 0, + 0, NULL, G_CALLBACK (web_radiobutton_toggled_cb), NULL); + } + } + else { + has_net_remote = FALSE; + } + + gtk_widget_set_sensitive (capplet->default_radiobutton, has_net_remote); + gtk_widget_set_sensitive (capplet->new_win_radiobutton, has_net_remote); + gtk_widget_set_sensitive (capplet->new_tab_radiobutton, has_net_remote); +} + +static MateConfValue* web_combo_conv_to_widget (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GList *entry, *handlers; + const gchar *command; + gint index; + MateDACapplet *capplet; + + g_object_get (G_OBJECT (peditor), "data", &capplet, NULL); + + command = mateconf_value_get_string (value); + handlers = capplet->web_browsers; + + if (handlers) + { + entry = g_list_find_custom (handlers, command, (GCompareFunc) web_item_comp); + if (entry) + index = g_list_position (handlers, entry); + else + index = g_list_length (handlers) + 1; + } + else + { + /* if the item has no handlers lsit then select the Custom item */ + index = 1; + } + + web_browser_update_radio_buttons (capplet, command); + + ret = mateconf_value_new (MATECONF_VALUE_INT); + mateconf_value_set_int (ret, index); + + return ret; +} + +static MateConfValue* web_combo_conv_from_widget (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GList *handlers; + gint index; + MateDAWebItem *item; + const gchar *command; + MateDACapplet *capplet; + + g_object_get (G_OBJECT (peditor), "data", &capplet, NULL); + + index = mateconf_value_get_int (value); + handlers = capplet->web_browsers; + + item = g_list_nth_data (handlers, index); + + ret = mateconf_value_new (MATECONF_VALUE_STRING); + if (!item) + { + /* if item was not found, this is probably the "Custom" item */ + /* XXX: returning "" as the value here is not ideal, but required to + * prevent the combo box from jumping back to the previous value if the + * user has selected Custom */ + mateconf_value_set_string (ret, ""); + return ret; + } + else + { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_win_radiobutton)) && item->netscape_remote == TRUE) + command = item->win_command; + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (capplet->new_tab_radiobutton)) && item->netscape_remote == TRUE) + command = item->tab_command; + else + command = item->generic.command; + + mateconf_value_set_string (ret, command); + return ret; + } +} + +static MateConfValue* combo_conv_to_widget (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GList *entry, *handlers; + const gchar *command; + gint index; + + g_object_get (G_OBJECT (peditor), "data", &handlers, NULL); + + command = mateconf_value_get_string (value); + + if (handlers) + { + entry = g_list_find_custom (handlers, command, (GCompareFunc) generic_item_comp); + if (entry) + index = g_list_position (handlers, entry); + else + index = g_list_length (handlers) + 1; + } + else + { + /* if the item has no handlers lsit then select the Custom item */ + index = 1; + } + + ret = mateconf_value_new (MATECONF_VALUE_INT); + mateconf_value_set_int (ret, index); + return ret; +} + +static MateConfValue* combo_conv_from_widget (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GList *handlers; + gint index; + MateDAItem *item; + + g_object_get (G_OBJECT (peditor), "data", &handlers, NULL); + index = mateconf_value_get_int (value); + + item = g_list_nth_data (handlers, index); + ret = mateconf_value_new (MATECONF_VALUE_STRING); + + if (!item) + { + /* if item was not found, this is probably the "Custom" item */ + + /* XXX: returning "" as the value here is not ideal, but required to + * prevent the combo box from jumping back to the previous value if the + * user has selected Custom */ + mateconf_value_set_string (ret, ""); + return ret; + } + else + { + mateconf_value_set_string (ret, item->command); + return ret; + } +} + +static MateConfValue* combo_conv_from_widget_term_flag (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GList *handlers; + gint index; + MateDATermItem *item; + + g_object_get (G_OBJECT (peditor), "data", &handlers, NULL); + index = mateconf_value_get_int (value); + + item = g_list_nth_data (handlers, index); + ret = mateconf_value_new (MATECONF_VALUE_STRING); + + if (!item) + { + /* if item was not found, this is probably the "Custom" item */ + + /* XXX: returning "" as the value here is not ideal, but required to + * prevent the combo box from jumping back to the previous value if the + * user has selected Custom */ + mateconf_value_set_string (ret, ""); + return ret; + } + else + { + mateconf_value_set_string (ret, item->exec_flag); + return ret; + } +} + +static MateConfValue* combo_conv_to_widget_term_flag (MateConfPropertyEditor *peditor, const MateConfValue *value) +{ + MateConfValue *ret; + GtkComboBox *combo; + + combo = GTK_COMBO_BOX (mateconf_property_editor_get_ui_control (peditor)); + + ret = mateconf_value_new (MATECONF_VALUE_INT); + mateconf_value_set_int (ret, gtk_combo_box_get_active (combo)); + return ret; +} + +static gboolean is_separator (GtkTreeModel *model, GtkTreeIter *iter, gpointer sep_index) +{ + GtkTreePath *path; + gboolean result; + + path = gtk_tree_model_get_path (model, iter); + result = gtk_tree_path_get_indices (path)[0] == GPOINTER_TO_INT (sep_index); + gtk_tree_path_free (path); + + return result; +} + +static void fill_combo_box (GtkIconTheme *theme, GtkComboBox *combo_box, GList *app_list) +{ + GList *entry; + GtkTreeModel *model; + GtkCellRenderer *renderer; + GtkTreeIter iter; + GdkPixbuf *pixbuf; + + if (theme == NULL) { + theme = gtk_icon_theme_get_default (); + } + + gtk_combo_box_set_row_separator_func (combo_box, is_separator, + GINT_TO_POINTER (g_list_length (app_list)), NULL); + + model = GTK_TREE_MODEL (gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING)); + gtk_combo_box_set_model (combo_box, model); + + renderer = gtk_cell_renderer_pixbuf_new (); + + /* not all cells have a pixbuf, this prevents the combo box to shrink */ + gtk_cell_renderer_set_fixed_size (renderer, -1, 22); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, + "pixbuf", PIXBUF_COL, + NULL); + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, + "text", TEXT_COL, + NULL); + + for (entry = app_list; entry != NULL; entry = g_list_next (entry)) { + MateDAItem *item; + item = (MateDAItem *) entry->data; + + pixbuf = gtk_icon_theme_load_icon (theme, item->icon_name, 22, 0, NULL); + + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + PIXBUF_COL, pixbuf, + TEXT_COL, item->name, + -1); + + item->icon_path = gtk_tree_model_get_string_from_iter (model, &iter); + + if (pixbuf) + g_object_unref (pixbuf); + } + + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, -1); + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + PIXBUF_COL, NULL, + TEXT_COL, _("Custom"), + -1); +} + +static GtkWidget* _gtk_builder_get_widget (GtkBuilder *builder, const gchar *name) +{ + return GTK_WIDGET (gtk_builder_get_object (builder, name)); +} + + +static void show_dialog (MateDACapplet* capplet, const gchar* start_page) +{ + GObject *obj; + GtkBuilder *builder; + guint builder_result; + + capplet->builder = builder = gtk_builder_new (); + + if (g_file_test (MATECC_UI_DIR "/mate-default-applications-properties.ui", G_FILE_TEST_EXISTS) != FALSE) { + builder_result = gtk_builder_add_from_file (builder, MATECC_UI_DIR "/mate-default-applications-properties.ui", NULL); + } + else { + builder_result = gtk_builder_add_from_file (builder, "./mate-default-applications-properties.ui", NULL); + } + + if (builder_result == 0) { + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, + _("Could not load the main interface")); + gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), + _("Please make sure that the applet " + "is properly installed")); + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + exit (EXIT_FAILURE); + } + + capplet->window = _gtk_builder_get_widget (builder,"preferred_apps_dialog"); + g_signal_connect (capplet->window, "response", G_CALLBACK (close_cb), NULL); + + capplet->web_browser_command_entry = _gtk_builder_get_widget (builder, "web_browser_command_entry"); + capplet->web_browser_command_label = _gtk_builder_get_widget (builder, "web_browser_command_label"); + capplet->web_browser_terminal_checkbutton = _gtk_builder_get_widget(builder, "web_browser_terminal_checkbutton"); + capplet->default_radiobutton = _gtk_builder_get_widget (builder, "web_browser_default_radiobutton"); + capplet->new_win_radiobutton = _gtk_builder_get_widget (builder, "web_browser_new_win_radiobutton"); + capplet->new_tab_radiobutton = _gtk_builder_get_widget (builder, "web_browser_new_tab_radiobutton"); + + capplet->mail_reader_command_entry = _gtk_builder_get_widget (builder, "mail_reader_command_entry"); + capplet->mail_reader_command_label = _gtk_builder_get_widget (builder, "mail_reader_command_label"); + capplet->mail_reader_terminal_checkbutton = _gtk_builder_get_widget (builder, "mail_reader_terminal_checkbutton"); + + capplet->terminal_command_entry = _gtk_builder_get_widget (builder, "terminal_command_entry"); + capplet->terminal_command_label = _gtk_builder_get_widget (builder, "terminal_command_label"); + capplet->terminal_exec_flag_entry = _gtk_builder_get_widget (builder, "terminal_exec_flag_entry"); + capplet->terminal_exec_flag_label = _gtk_builder_get_widget (builder, "terminal_exec_flag_label"); + + capplet->media_player_command_entry = _gtk_builder_get_widget (builder, "media_player_command_entry"); + capplet->media_player_command_label = _gtk_builder_get_widget (builder, "media_player_command_label"); + capplet->media_player_terminal_checkbutton = _gtk_builder_get_widget (builder, "media_player_terminal_checkbutton"); + + capplet->visual_command_entry = _gtk_builder_get_widget (builder, "visual_command_entry"); + capplet->visual_command_label = _gtk_builder_get_widget (builder, "visual_command_label"); + capplet->visual_startup_checkbutton = _gtk_builder_get_widget (builder, "visual_start_checkbutton"); + + capplet->mobility_command_entry = _gtk_builder_get_widget (builder, "mobility_command_entry"); + capplet->mobility_command_label = _gtk_builder_get_widget (builder, "mobility_command_label"); + capplet->mobility_startup_checkbutton = _gtk_builder_get_widget (builder, "mobility_start_checkbutton"); + + capplet->web_combo_box = _gtk_builder_get_widget (builder, "web_browser_combobox"); + capplet->mail_combo_box = _gtk_builder_get_widget (builder, "mail_reader_combobox"); + capplet->term_combo_box = _gtk_builder_get_widget (builder, "terminal_combobox"); + capplet->media_combo_box = _gtk_builder_get_widget (builder, "media_player_combobox"); + capplet->visual_combo_box = _gtk_builder_get_widget (builder, "visual_combobox"); + capplet->mobility_combo_box = _gtk_builder_get_widget (builder, "mobility_combobox"); + + g_signal_connect (capplet->window, "screen-changed", G_CALLBACK (screen_changed_cb), capplet); + screen_changed_cb (capplet->window, gdk_screen_get_default (), capplet); + + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->web_combo_box), capplet->web_browsers); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mail_combo_box), capplet->mail_readers); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->term_combo_box), capplet->terminals); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->media_combo_box), capplet->media_players); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->visual_combo_box), capplet->visual_ats); + fill_combo_box (capplet->icon_theme, GTK_COMBO_BOX (capplet->mobility_combo_box), capplet->mobility_ats); + + g_signal_connect (capplet->web_combo_box, "changed", G_CALLBACK (web_combo_changed_cb), capplet); + g_signal_connect (capplet->mail_combo_box, "changed", G_CALLBACK (mail_combo_changed_cb), capplet); + g_signal_connect (capplet->term_combo_box, "changed", G_CALLBACK (terminal_combo_changed_cb), capplet); + g_signal_connect (capplet->media_combo_box, "changed", G_CALLBACK (media_combo_changed_cb), capplet); + g_signal_connect (capplet->visual_combo_box, "changed", G_CALLBACK (visual_combo_changed_cb), capplet); + g_signal_connect (capplet->mobility_combo_box, "changed", G_CALLBACK (mobility_combo_changed_cb), capplet); + + + g_signal_connect (capplet->default_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); + g_signal_connect (capplet->new_win_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); + g_signal_connect (capplet->new_tab_radiobutton, "toggled", G_CALLBACK (web_radiobutton_toggled_cb), capplet); + + /* Setup MateConfPropertyEditors */ + + /* Web Browser */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_HTTP_EXEC, + capplet->web_combo_box, + "conv-from-widget-cb", web_combo_conv_from_widget, + "conv-to-widget-cb", web_combo_conv_to_widget, + "data", capplet, + NULL); + + obj = mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_HTTP_EXEC, + capplet->web_browser_command_entry, + NULL); + g_signal_connect (obj, "value-changed", G_CALLBACK (web_mateconf_changed_cb), capplet); + + obj = mateconf_peditor_new_boolean (NULL, + DEFAULT_APPS_KEY_HTTP_NEEDS_TERM, + capplet->web_browser_terminal_checkbutton, + NULL); + g_signal_connect (obj, "value-changed", G_CALLBACK (web_mateconf_changed_cb), capplet); + + /* Mailer */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_MAILER_EXEC, + capplet->mail_combo_box, + "conv-from-widget-cb", combo_conv_from_widget, + "conv-to-widget-cb", combo_conv_to_widget, + "data", capplet->mail_readers, + NULL); + + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_MAILER_EXEC, + capplet->mail_reader_command_entry, + NULL); + + mateconf_peditor_new_boolean (NULL, + DEFAULT_APPS_KEY_MAILER_NEEDS_TERM, + capplet->mail_reader_terminal_checkbutton, + NULL); + + /* Media player */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_MEDIA_EXEC, + capplet->media_combo_box, + "conv-from-widget-cb", combo_conv_from_widget, + "conv-to-widget-cb", combo_conv_to_widget, + "data", capplet->media_players, + NULL); + + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_MEDIA_EXEC, + capplet->media_player_command_entry, + NULL); + + mateconf_peditor_new_boolean (NULL, + DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM, + capplet->media_player_terminal_checkbutton, + NULL); + + /* Terminal */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_TERMINAL_EXEC, + capplet->term_combo_box, + "conv-from-widget-cb", combo_conv_from_widget, + "conv-to-widget-cb", combo_conv_to_widget, + "data", capplet->terminals, + NULL); + + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, + capplet->term_combo_box, + "conv-from-widget-cb", combo_conv_from_widget_term_flag, + "conv-to-widget-cb", combo_conv_to_widget_term_flag, + "data", capplet->terminals, + NULL); + + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_TERMINAL_EXEC, + capplet->terminal_command_entry, + NULL); + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG, + capplet->terminal_exec_flag_entry, + NULL); + + + /* Visual */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_VISUAL_EXEC, + capplet->visual_combo_box, + "conv-from-widget-cb", combo_conv_from_widget, + "conv-to-widget-cb", combo_conv_to_widget, + "data", capplet->visual_ats, + NULL); + + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_VISUAL_EXEC, + capplet->visual_command_entry, + NULL); + + mateconf_peditor_new_boolean (NULL, + DEFAULT_APPS_KEY_VISUAL_STARTUP, + capplet->visual_startup_checkbutton, + NULL); + + + /* Mobility */ + mateconf_peditor_new_combo_box (NULL, + DEFAULT_APPS_KEY_MOBILITY_EXEC, + capplet->mobility_combo_box, + "conv-from-widget-cb", combo_conv_from_widget, + "conv-to-widget-cb", combo_conv_to_widget, + "data", capplet->mobility_ats, + NULL); + + mateconf_peditor_new_string (NULL, + DEFAULT_APPS_KEY_MOBILITY_EXEC, + capplet->mobility_command_entry, + NULL); + + mateconf_peditor_new_boolean (NULL, + DEFAULT_APPS_KEY_MOBILITY_STARTUP, + capplet->mobility_startup_checkbutton, + NULL); + + gtk_window_set_icon_name (GTK_WINDOW (capplet->window), + "preferences-desktop-default-applications"); + + if (start_page != NULL) { + gchar *page_name; + GtkWidget *w; + + page_name = g_strconcat (start_page, "_vbox", NULL); + + w = _gtk_builder_get_widget (builder, page_name); + if (w != NULL) { + GtkNotebook *nb; + gint pindex; + + nb = GTK_NOTEBOOK (_gtk_builder_get_widget (builder, + "preferred_apps_notebook")); + pindex = gtk_notebook_page_num (nb, w); + if (pindex != -1) + gtk_notebook_set_current_page (nb, pindex); + } + g_free (page_name); + } + + gtk_widget_show (capplet->window); +} + +int main (int argc, char** argv) +{ + MateDACapplet* capplet; + + gchar* start_page = NULL; + + GOptionContext* context; + GOptionEntry option_entries[] = { + { + "show-page", + 'p', + G_OPTION_FLAG_IN_MAIN, + G_OPTION_ARG_STRING, + &start_page, + /* TRANSLATORS: don't translate the terms in brackets */ + N_("Specify the name of the page to show (internet|multimedia|system|a11y)"), + N_("page") + }, + {NULL} + }; + + context = g_option_context_new(_("- MATE Default Applications")); + g_option_context_add_main_entries (context, option_entries, GETTEXT_PACKAGE); + + capplet_init (context, &argc, &argv); + + capplet = g_new0(MateDACapplet, 1); + capplet->mateconf = mateconf_client_get_default(); + mateconf_client_add_dir(capplet->mateconf, "/desktop/mate/url-handlers", MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); + mateconf_client_add_dir(capplet->mateconf, "/desktop/mate/applications", MATECONF_CLIENT_PRELOAD_RECURSIVE, NULL); + + mate_da_xml_load_list(capplet); + + show_dialog(capplet, start_page); + g_free(start_page); + + gtk_main(); + + g_object_unref(capplet->mateconf); + + mate_da_xml_free(capplet); + + return 0; +} diff --git a/capplets/default-applications/mate-da-capplet.h b/capplets/default-applications/mate-da-capplet.h new file mode 100644 index 00000000..3ce72955 --- /dev/null +++ b/capplets/default-applications/mate-da-capplet.h @@ -0,0 +1,139 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _MATE_DA_CAPPLET_H_ +#define _MATE_DA_CAPPLET_H_ + +#include <gtk/gtk.h> +#include <mateconf/mateconf-client.h> + +// Set http, https, about, and unknown keys to the chosen web browser. +#define DEFAULT_APPS_KEY_HTTP_PATH "/desktop/mate/url-handlers/http" +#define DEFAULT_APPS_KEY_HTTP_NEEDS_TERM DEFAULT_APPS_KEY_HTTP_PATH"/needs_terminal" +#define DEFAULT_APPS_KEY_HTTP_EXEC DEFAULT_APPS_KEY_HTTP_PATH"/command" + +#define DEFAULT_APPS_KEY_HTTPS_PATH "/desktop/mate/url-handlers/https" +#define DEFAULT_APPS_KEY_HTTPS_NEEDS_TERM DEFAULT_APPS_KEY_HTTPS_PATH"/needs_terminal" +#define DEFAULT_APPS_KEY_HTTPS_EXEC DEFAULT_APPS_KEY_HTTPS_PATH"/command" + +// While mate-vfs2 does not use the "unknown" key, several widespread apps like htmlview +// have read it for the past few years. Setting it should not hurt. +#define DEFAULT_APPS_KEY_UNKNOWN_PATH "/desktop/mate/url-handlers/unknown" +#define DEFAULT_APPS_KEY_UNKNOWN_NEEDS_TERM DEFAULT_APPS_KEY_UNKNOWN_PATH"/needs_terminal" +#define DEFAULT_APPS_KEY_UNKNOWN_EXEC DEFAULT_APPS_KEY_UNKNOWN_PATH"/command" + +// about:blank and other about: URI's are commonly used by browsers too +#define DEFAULT_APPS_KEY_ABOUT_PATH "/desktop/mate/url-handlers/about" +#define DEFAULT_APPS_KEY_ABOUT_NEEDS_TERM DEFAULT_APPS_KEY_ABOUT_PATH"/needs_terminal" +#define DEFAULT_APPS_KEY_ABOUT_EXEC DEFAULT_APPS_KEY_ABOUT_PATH"/command" + +#define DEFAULT_APPS_KEY_MAILER_PATH "/desktop/mate/url-handlers/mailto" +#define DEFAULT_APPS_KEY_MAILER_NEEDS_TERM DEFAULT_APPS_KEY_MAILER_PATH"/needs_terminal" +#define DEFAULT_APPS_KEY_MAILER_EXEC DEFAULT_APPS_KEY_MAILER_PATH"/command" + +#define DEFAULT_APPS_KEY_BROWSER_PATH "/desktop/mate/applications/browser" +#define DEFAULT_APPS_KEY_BROWSER_EXEC DEFAULT_APPS_KEY_BROWSER_PATH"/exec" +#define DEFAULT_APPS_KEY_BROWSER_NEEDS_TERM DEFAULT_APPS_KEY_BROWSER_PATH"/needs_term" +#define DEFAULT_APPS_KEY_BROWSER_NREMOTE DEFAULT_APPS_KEY_BROWSER_PATH"/nremote" + +#define DEFAULT_APPS_KEY_TERMINAL_PATH "/desktop/mate/applications/terminal" +#define DEFAULT_APPS_KEY_TERMINAL_EXEC_ARG DEFAULT_APPS_KEY_TERMINAL_PATH"/exec_arg" +#define DEFAULT_APPS_KEY_TERMINAL_EXEC DEFAULT_APPS_KEY_TERMINAL_PATH"/exec" + +#define DEFAULT_APPS_KEY_MEDIA_PATH "/desktop/mate/applications/media" +#define DEFAULT_APPS_KEY_MEDIA_EXEC DEFAULT_APPS_KEY_MEDIA_PATH"/exec" +#define DEFAULT_APPS_KEY_MEDIA_NEEDS_TERM DEFAULT_APPS_KEY_MEDIA_PATH"/needs_term" + +#define DEFAULT_APPS_KEY_VISUAL_PATH "/desktop/mate/applications/at/visual" +#define DEFAULT_APPS_KEY_VISUAL_EXEC DEFAULT_APPS_KEY_VISUAL_PATH"/exec" +#define DEFAULT_APPS_KEY_VISUAL_STARTUP DEFAULT_APPS_KEY_VISUAL_PATH"/startup" + +#define DEFAULT_APPS_KEY_MOBILITY_PATH "/desktop/mate/applications/at/mobility" +#define DEFAULT_APPS_KEY_MOBILITY_EXEC DEFAULT_APPS_KEY_MOBILITY_PATH"/exec" +#define DEFAULT_APPS_KEY_MOBILITY_STARTUP DEFAULT_APPS_KEY_MOBILITY_PATH"/startup" + +typedef struct _MateDACapplet MateDACapplet; + +struct _MateDACapplet { + GtkBuilder* builder; + + GtkIconTheme* icon_theme; + + GtkWidget* window; + + GtkWidget* web_combo_box; + GtkWidget* mail_combo_box; + GtkWidget* term_combo_box; + GtkWidget* media_combo_box; + GtkWidget* visual_combo_box; + GtkWidget* mobility_combo_box; + /* Para el File Manager */ + /*GtkWidget* filemanager_combo_box;*/ + + GtkWidget* web_browser_command_entry; + GtkWidget* web_browser_command_label; + GtkWidget* web_browser_terminal_checkbutton; + GtkWidget* default_radiobutton; + GtkWidget* new_win_radiobutton; + GtkWidget* new_tab_radiobutton; + + /* Para el File Manager */ + /*GtkWidget* file_manager_command_entry; + GtkWidget* file_manager_command_label; + GtkWidget* file_manager_terminal_checkbutton; + GtkWidget* file_manager_default_radiobutton; + GtkWidget* file_manager_new_win_radiobutton; + GtkWidget* file_manager_new_tab_radiobutton;*/ + + + GtkWidget* mail_reader_command_entry; + GtkWidget* mail_reader_command_label; + GtkWidget* mail_reader_terminal_checkbutton; + + GtkWidget* terminal_command_entry; + GtkWidget* terminal_command_label; + GtkWidget* terminal_exec_flag_entry; + GtkWidget* terminal_exec_flag_label; + + GtkWidget* media_player_command_entry; + GtkWidget* media_player_command_label; + GtkWidget* media_player_terminal_checkbutton; + + GtkWidget* visual_command_entry; + GtkWidget* visual_command_label; + GtkWidget* visual_startup_checkbutton; + + GtkWidget* mobility_command_entry; + GtkWidget* mobility_command_label; + GtkWidget* mobility_startup_checkbutton; + + MateConfClient* mateconf; + + GList* web_browsers; + GList* mail_readers; + GList* terminals; + GList* media_players; + GList* visual_ats; + GList* mobility_ats; + /* Para el File Manager */ + /*GList* file_managers;*/ +}; + +#endif diff --git a/capplets/default-applications/mate-da-item.c b/capplets/default-applications/mate-da-item.c new file mode 100644 index 00000000..06bda549 --- /dev/null +++ b/capplets/default-applications/mate-da-item.c @@ -0,0 +1,148 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#include "mate-da-capplet.h" +#include "mate-da-item.h" + +MateDAWebItem* +mate_da_web_item_new (void) +{ + MateDAWebItem *item = NULL; + + item = g_new0 (MateDAWebItem, 1); + + return item; +} + +MateDASimpleItem* +mate_da_simple_item_new (void) +{ + MateDASimpleItem *item = NULL; + + item = g_new0 (MateDASimpleItem, 1); + + return item; +} + +MateDATermItem* +mate_da_term_item_new (void) +{ + MateDATermItem *item = NULL; + + item = g_new0 (MateDATermItem, 1); + + return item; +} + +MateDAVisualItem* +mate_da_visual_item_new (void) +{ + MateDAVisualItem *item = NULL; + + item = g_new0 (MateDAVisualItem, 1); + + return item; +} + +MateDAMobilityItem* +mate_da_mobility_item_new (void) +{ + MateDAMobilityItem *item = NULL; + + item = g_new0 (MateDAMobilityItem, 1); + + return item; +} + +void +mate_da_web_item_free (MateDAWebItem *item) +{ + g_return_if_fail (item != NULL); + + g_free (item->generic.name); + g_free (item->generic.executable); + g_free (item->generic.command); + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + + g_free (item->tab_command); + g_free (item->win_command); + + g_free (item); +} + +void +mate_da_simple_item_free (MateDASimpleItem *item) +{ + g_return_if_fail (item != NULL); + + g_free (item->generic.name); + g_free (item->generic.executable); + g_free (item->generic.command); + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + + g_free (item); +} + +void +mate_da_term_item_free (MateDATermItem *item) +{ + g_return_if_fail (item != NULL); + + g_free (item->generic.name); + g_free (item->generic.executable); + g_free (item->generic.command); + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + + g_free (item->exec_flag); + + g_free (item); +} + +void +mate_da_visual_item_free (MateDAVisualItem *item) +{ + g_return_if_fail (item != NULL); + + g_free (item->generic.name); + g_free (item->generic.executable); + g_free (item->generic.command); + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + + g_free (item); +} + +void +mate_da_mobility_item_free (MateDAMobilityItem *item) +{ + g_return_if_fail (item != NULL); + + g_free (item->generic.name); + g_free (item->generic.executable); + g_free (item->generic.command); + g_free (item->generic.icon_name); + g_free (item->generic.icon_path); + + g_free (item); +} + diff --git a/capplets/default-applications/mate-da-item.h b/capplets/default-applications/mate-da-item.h new file mode 100644 index 00000000..81223f4e --- /dev/null +++ b/capplets/default-applications/mate-da-item.h @@ -0,0 +1,81 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _MATE_DA_ITEM_H_ +#define _MATE_DA_ITEM_H_ + +#include <glib.h> + +typedef struct _MateDAItem MateDAItem; + +typedef struct _MateDAWebItem MateDAWebItem; +typedef struct _MateDATermItem MateDATermItem; +typedef struct _MateDASimpleItem MateDASimpleItem; +typedef struct _MateDAVisualItem MateDAVisualItem; +typedef struct _MateDAMobilityItem MateDAMobilityItem; + +struct _MateDAItem { + gchar *name; + gchar *executable; + gchar *command; + gchar *icon_name; + gchar *icon_path; +}; + +struct _MateDAWebItem { + MateDAItem generic; + gboolean run_in_terminal; + gboolean netscape_remote; + gchar *tab_command; + gchar *win_command; +}; + +struct _MateDASimpleItem { + MateDAItem generic; + gboolean run_in_terminal; +}; + +struct _MateDATermItem { + MateDAItem generic; + gchar *exec_flag; +}; + +struct _MateDAVisualItem { + MateDAItem generic; + gboolean run_at_startup; +}; + +struct _MateDAMobilityItem { + MateDAItem generic; + gboolean run_at_startup; +}; + +MateDAWebItem* mate_da_web_item_new (void); +MateDATermItem* mate_da_term_item_new (void); +MateDASimpleItem* mate_da_simple_item_new (void); +MateDAVisualItem* mate_da_visual_item_new (void); +MateDAMobilityItem* mate_da_mobility_item_new (void); +void mate_da_web_item_free (MateDAWebItem *item); +void mate_da_term_item_free (MateDATermItem *item); +void mate_da_simple_item_free (MateDASimpleItem *item); +void mate_da_visual_item_free (MateDAVisualItem *item); +void mate_da_mobility_item_free (MateDAMobilityItem *item); + +#endif diff --git a/capplets/default-applications/mate-da-xml.c b/capplets/default-applications/mate-da-xml.c new file mode 100644 index 00000000..288495c7 --- /dev/null +++ b/capplets/default-applications/mate-da-xml.c @@ -0,0 +1,327 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#include <string.h> +#include <glib.h> +#include <glib/gi18n.h> +#include <libxml/parser.h> + +#include "mate-da-capplet.h" +#include "mate-da-xml.h" +#include "mate-da-item.h" + + +static gboolean +mate_da_xml_get_bool (const xmlNode *parent, const gchar *val_name) +{ + xmlNode *element; + gboolean ret_val = FALSE; + xmlChar *xml_val_name; + gint len; + + g_return_val_if_fail (parent != NULL, FALSE); + g_return_val_if_fail (parent->children != NULL, ret_val); + g_return_val_if_fail (val_name != NULL, FALSE); + + xml_val_name = xmlCharStrdup (val_name); + len = xmlStrlen (xml_val_name); + + for (element = parent->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, xml_val_name, len)) { + xmlChar *cont = xmlNodeGetContent (element); + + if (!xmlStrcasecmp (cont, "true") || !xmlStrcasecmp (cont, "1")) + ret_val = TRUE; + else + ret_val = FALSE; + + xmlFree (cont); + } + } + + xmlFree (xml_val_name); + return ret_val; +} + +static gchar* +mate_da_xml_get_string (const xmlNode *parent, const gchar *val_name) +{ + const gchar * const *sys_langs; + xmlChar *node_lang; + xmlNode *element; + gchar *ret_val = NULL; + xmlChar *xml_val_name; + gint len; + gint i; + + g_return_val_if_fail (parent != NULL, ret_val); + g_return_val_if_fail (parent->children != NULL, ret_val); + g_return_val_if_fail (val_name != NULL, ret_val); + +#if GLIB_CHECK_VERSION (2, 6, 0) + sys_langs = g_get_language_names (); +#endif + + xml_val_name = xmlCharStrdup (val_name); + len = xmlStrlen (xml_val_name); + + for (element = parent->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, xml_val_name, len)) { + node_lang = xmlNodeGetLang (element); + + if (node_lang == NULL) { + ret_val = (gchar *) xmlNodeGetContent (element); + } + else { + for (i = 0; sys_langs[i] != NULL; i++) { + if (!strcmp (sys_langs[i], node_lang)) { + ret_val = (gchar *) xmlNodeGetContent (element); + /* since sys_langs is sorted from most desirable to + * least desirable, exit at first match + */ + break; + } + } + } + xmlFree (node_lang); + } + } + + xmlFree (xml_val_name); + return ret_val; +} + +static gboolean +is_executable_valid (gchar *executable) +{ + gchar *path; + + path = g_find_program_in_path (executable); + + if (path) { + g_free (path); + return TRUE; + } + + return FALSE; +} + +static void +mate_da_xml_load_xml (MateDACapplet *capplet, const gchar * filename) +{ + xmlDoc *xml_doc; + xmlNode *root, *section, *element; + gchar *executable; + MateDAWebItem *web_item; + MateDASimpleItem *mail_item; + MateDASimpleItem *media_item; + MateDATermItem *term_item; + MateDAVisualItem *visual_item; + MateDAMobilityItem *mobility_item; + + xml_doc = xmlParseFile (filename); + + if (!xml_doc) + return; + + root = xmlDocGetRootElement (xml_doc); + + for (section = root->children; section != NULL; section = section->next) { + if (!xmlStrncmp (section->name, "web-browsers", 12)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "web-browser", 11)) { + executable = mate_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + web_item = mate_da_web_item_new (); + + web_item->generic.name = mate_da_xml_get_string (element, "name"); + web_item->generic.executable = executable; + web_item->generic.command = mate_da_xml_get_string (element, "command"); + web_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + web_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal"); + web_item->netscape_remote = mate_da_xml_get_bool (element, "netscape-remote"); + if (web_item->netscape_remote) { + web_item->tab_command = mate_da_xml_get_string (element, "tab-command"); + web_item->win_command = mate_da_xml_get_string (element, "win-command"); + } + + capplet->web_browsers = g_list_append (capplet->web_browsers, web_item); + } + else + g_free (executable); + } + } + } + else if (!xmlStrncmp (section->name, "mail-readers", 12)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "mail-reader", 11)) { + executable = mate_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + mail_item = mate_da_simple_item_new (); + + mail_item->generic.name = mate_da_xml_get_string (element, "name"); + mail_item->generic.executable = executable; + mail_item->generic.command = mate_da_xml_get_string (element, "command"); + mail_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + mail_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal"); + + capplet->mail_readers = g_list_append (capplet->mail_readers, mail_item); + } + else + g_free (executable); + } + } + } + else if (!xmlStrncmp (section->name, "terminals", 9)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "terminal", 8)) { + executable = mate_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + term_item = mate_da_term_item_new (); + + term_item->generic.name = mate_da_xml_get_string (element, "name"); + term_item->generic.executable = executable; + term_item->generic.command = mate_da_xml_get_string (element, "command"); + term_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + term_item->exec_flag = mate_da_xml_get_string (element, "exec-flag"); + + capplet->terminals = g_list_append (capplet->terminals, term_item); + } + else + g_free (executable); + } + } + } + else if (!xmlStrncmp (section->name, "media-players", 13)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "media-player", 12)) { + executable = mate_da_xml_get_string (element, "executable"); + if (is_executable_valid (executable)) { + media_item = mate_da_simple_item_new (); + + media_item->generic.name = mate_da_xml_get_string (element, "name"); + media_item->generic.executable = executable; + media_item->generic.command = mate_da_xml_get_string (element, "command"); + media_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + media_item->run_in_terminal = mate_da_xml_get_bool (element, "run-in-terminal"); + + capplet->media_players = g_list_append (capplet->media_players, media_item); + } + else + g_free (executable); + } + } + } + else if (!xmlStrncmp (section->name, "a11y-visual", 11)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "visual", 6)) { + executable = mate_da_xml_get_string (element,"executable"); + if (is_executable_valid (executable)) { + visual_item = mate_da_visual_item_new (); + + visual_item->generic.name = mate_da_xml_get_string (element, "name"); + visual_item->generic.executable = executable; + visual_item->generic.command = mate_da_xml_get_string (element, "command"); + visual_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + visual_item->run_at_startup = mate_da_xml_get_bool (element, "run-at-startup"); + + capplet->visual_ats = g_list_append (capplet->visual_ats, visual_item); + } + else + g_free (executable); + } + } + } + else if (!xmlStrncmp (section->name, "a11y-mobility", 13)) { + for (element = section->children; element != NULL; element = element->next) { + if (!xmlStrncmp (element->name, "mobility", 8)) { + executable = mate_da_xml_get_string (element,"executable"); + if (is_executable_valid (executable)) { + mobility_item = mate_da_mobility_item_new (); + + mobility_item->generic.name = mate_da_xml_get_string (element, "name"); + mobility_item->generic.executable = executable; + mobility_item->generic.command = mate_da_xml_get_string (element, "command"); + mobility_item->generic.icon_name = mate_da_xml_get_string (element, "icon-name"); + + mobility_item->run_at_startup = mate_da_xml_get_bool (element, "run-at-startup"); + + capplet->mobility_ats = g_list_append (capplet->mobility_ats, mobility_item); + } + else + g_free (executable); + } + } + } + } + + xmlFreeDoc (xml_doc); +} + +void mate_da_xml_load_list(MateDACapplet* capplet) +{ + GDir* app_dir = g_dir_open(MATECC_APPS_DIR, 0, NULL); + + if (app_dir != NULL) + { + const gchar* extra_file; + gchar* filename; + + while ((extra_file = g_dir_read_name(app_dir)) != NULL) + { + filename = g_build_filename(MATECC_APPS_DIR, extra_file, NULL); + + if (g_str_has_suffix(filename, ".xml")) + { + mate_da_xml_load_xml(capplet, filename); + } + + g_free(filename); + } + + g_dir_close(app_dir); + } +} + +void +mate_da_xml_free (MateDACapplet *capplet) +{ + g_list_foreach (capplet->web_browsers, (GFunc) mate_da_web_item_free, NULL); + g_list_foreach (capplet->mail_readers, (GFunc) mate_da_simple_item_free, NULL); + g_list_foreach (capplet->terminals, (GFunc) mate_da_term_item_free, NULL); + g_list_foreach (capplet->media_players, (GFunc) mate_da_simple_item_free, NULL); + g_list_foreach (capplet->visual_ats, (GFunc) mate_da_visual_item_free, NULL); + g_list_foreach (capplet->mobility_ats, (GFunc) mate_da_mobility_item_free, NULL); + + g_list_free (capplet->web_browsers); + g_list_free (capplet->mail_readers); + g_list_free (capplet->terminals); + g_list_free (capplet->media_players); + g_list_free (capplet->visual_ats); + g_list_free (capplet->mobility_ats); + + g_object_unref (capplet->builder); + g_free (capplet); +} diff --git a/capplets/default-applications/mate-da-xml.h b/capplets/default-applications/mate-da-xml.h new file mode 100644 index 00000000..b209355c --- /dev/null +++ b/capplets/default-applications/mate-da-xml.h @@ -0,0 +1,27 @@ +/* + * Authors: Luca Cavalli <[email protected]> + * + * Copyright 2005-2006 Luca Cavalli + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation + * + * 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., 59 Temple Street #330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _MATE_DA_XML_H_ +#define _MATE_DA_XML_H_ + +void mate_da_xml_load_list (MateDACapplet *capplet); +void mate_da_xml_free (MateDACapplet *capplet); + +#endif diff --git a/capplets/default-applications/mate-default-applications-properties.ui b/capplets/default-applications/mate-default-applications-properties.ui new file mode 100644 index 00000000..4edc2968 --- /dev/null +++ b/capplets/default-applications/mate-default-applications-properties.ui @@ -0,0 +1,1518 @@ +<?xml version="1.0"?> +<interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy toplevel-contextual --> + <object class="GtkDialog" id="preferred_apps_dialog"> + <property name="border_width">5</property> + <property name="title" translatable="yes">Preferred Applications</property> + <property name="resizable">False</property> + <property name="type_hint">dialog</property> + <property name="has_separator">False</property> + <child internal-child="vbox"> + <object class="GtkVBox" id="dialog-vbox"> + <property name="visible">True</property> + <child> + <object class="GtkNotebook" id="preferred_apps_notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="border_width">5</property> + <child> + <object class="GtkVBox" id="internet_vbox"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="web_browser_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="web_browser_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Web Browser</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="web_browser_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="web_browser_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="web_browser_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="web_browser_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="web_browser_options_table"> + <property name="visible">True</property> + <property name="n_rows">4</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkEntry" id="web_browser_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="web_browser_terminal_checkbutton"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="web_browser_default_radiobutton"> + <property name="label" translatable="yes">Open link with web browser _default</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="web_browser_new_tab_radiobutton"> + <property name="label" translatable="yes">Open link in new _tab</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + <property name="group">web_browser_default_radiobutton</property> + </object> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="web_browser_new_win_radiobutton"> + <property name="label" translatable="yes">Open link in new _window</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + <property name="group">web_browser_default_radiobutton</property> + </object> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="web_browser_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">C_ommand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">web_browser_command_entry</property> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="mail_reader_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="mail_reader_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Mail Reader</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="mail_reader_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="mail_reader_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="mail_reader_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="mail_reader_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="mail_reader_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="mail_reader_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">mail_reader_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="mail_reader_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="mail_reader_terminal_checkbutton"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="messenger_vbox"> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="messenger_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Instant Messenger</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="messenger_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="messenger_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="messenger_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="messenger_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="messenger_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="messenger_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">messenger_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="messenger_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="messenger_terminal_checkbutton"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="internet_apps_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Internet</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="multimedia_vbox"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="image_vbox"> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="image_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Image Viewer</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="image_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="image_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="image_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="image_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="image_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="image_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">image_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="image_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="image_terminal_checkbox"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="media_player_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="media_player_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Multimedia Player</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="media_player_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="media_player_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="media_player_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="media_player_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="media_player_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="media_player_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">media_player_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="media_player_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="media_player_terminal_checkbutton"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="video_vbox"> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="video_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Video Player</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="video_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="video_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="video_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="video_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="video_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="video_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">video_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="video_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="video_terminal_checkbox"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="multimedia_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Multimedia</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="system_vbox"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="text_vbox"> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="text_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Text Editor</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="text_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="text_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="text_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="text_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="text_options_table"> + <property name="visible">True</property> + <property name="n_columns">3</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="text_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">text_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="text_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="text_terminal_checkbox"> + <property name="label" translatable="yes">Run in t_erminal</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="terminal_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="terminal_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Terminal Emulator</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="terminal_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="terminal_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="terminal_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="terminal_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="terminal_options_table"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="terminal_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">terminal_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="terminal_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="terminal_exec_flag_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">E_xecute flag:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">terminal_exec_flag_entry</property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="terminal_exec_flag_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + + <!-- el file manager -- > + <child> + <object class="GtkVBox" id="filemanager_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="filemanager_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">File Manager</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="filemanager_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="filemanager_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="filemanager_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="filemanager_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkTable" id="filemanager_options_table"> + <property name="visible">True</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="filemanager_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">filemanager_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="filemanager_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkLabel" id="filemanager_exec_flag_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">E_xecute flag:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">filemanager_exec_flag_entry</property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="filemanager_exec_flag_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + + < ! -- / el file manager --> + + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="system_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">System</property> + </object> + <packing> + <property name="position">2</property> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="a11y_vbox"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="visual_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="visual_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Visual</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="visual_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="visual_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="visual_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="visual_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="visual_start_checkbutton"> + <property name="label" translatable="yes">_Run at start</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkTable" id="visual_options_table"> + <property name="visible">True</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="visual_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">C_ommand:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">image_command_entry</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="visual_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="mobility_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="mobility_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Mobility</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="mobility_hbox"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="mobility_image"> + <property name="visible">True</property> + <property name="yalign">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="mobility_options_vbox"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkComboBox" id="mobility_combobox"> + <property name="visible">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="mobility_start_checkbutton"> + <property name="label" translatable="yes">Run at st_art</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkTable" id="mobility_options_table"> + <property name="visible">True</property> + <property name="n_columns">2</property> + <property name="column_spacing">12</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="mobility_command_label"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Co_mmand:</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <object class="GtkEntry" id="mobility_command_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">All %s occurrences will be replaced with actual link</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="a11y_apps_label"> + <property name="visible">True</property> + <property name="label" translatable="yes">Accessibility</property> + </object> + <packing> + <property name="position">3</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <child internal-child="action_area"> + <object class="GtkHButtonBox" id="dialog-action_area"> + <property name="visible">True</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="helpbutton1"> + <property name="label">gtk-help</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_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="closebutton1"> + <property name="label">gtk-close</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_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="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-11">helpbutton1</action-widget> + <action-widget response="-7">closebutton1</action-widget> + </action-widgets> + </object> +</interface> diff --git a/capplets/default-applications/mate-default-applications.pc.in b/capplets/default-applications/mate-default-applications.pc.in new file mode 100644 index 00000000..1bdae900 --- /dev/null +++ b/capplets/default-applications/mate-default-applications.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +datarootdir=@datarootdir@ +datadir=@datadir@ +pkgdatadir=${datadir}/@PACKAGE@ +defappsdir=${pkgdatadir}/default-apps + +Name: mate-default-applications +Description: Default MATE applications configuration +Version: @VERSION@ + diff --git a/capplets/default-applications/mate-default-applications.xml.in b/capplets/default-applications/mate-default-applications.xml.in new file mode 100644 index 00000000..4bd2f8b9 --- /dev/null +++ b/capplets/default-applications/mate-default-applications.xml.in @@ -0,0 +1,483 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE default-apps SYSTEM "mate-da-list.dtd"> +<default-apps> + +<!-- Remember to never use the same string for <command>, <tab-command> and <win-command> entries --> + + <web-browsers> + <web-browser> + <_name>Opera</_name> + <executable>opera</executable> + <command>opera %s</command> + <icon-name>opera</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>opera -newpage %s</tab-command> + <win-command>opera -newwindow %s</win-command> + </web-browser> + <web-browser> + <_name>Debian Sensible Browser</_name> + <executable>sensible-browser</executable> + <command>sensible-browser %s</command> + <icon-name></icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>false</netscape-remote> + </web-browser> + <web-browser> + <_name>Epiphany Web Browser</_name> + <executable>epiphany</executable> + <command>epiphany %s</command> + <icon-name>web-browser</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>epiphany --new-tab %s</tab-command> + <win-command>epiphany --new-window %s</win-command> + </web-browser> + <web-browser> + <_name>Galeon</_name> + <executable>galeon</executable> + <command>galeon %s</command> + <icon-name>galeon</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>galeon -n %s</tab-command> + <win-command>galeon -w %s</win-command> + </web-browser> + <web-browser> + <_name>Encompass</_name> + <executable>encompass</executable> + <command>encompass %s</command> + <icon-name>encompass</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>false</netscape-remote> + </web-browser> + <web-browser> + <_name>Firebird</_name> + <executable>mozilla-firebird</executable> + <command>mozilla-firebird %s</command> + <icon-name></icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>mozilla-firebird -remote "openurl(%s,new-tab)"</tab-command> + <win-command>mozilla-firebird -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>Firefox</_name> + <executable>firefox</executable> + <command>firefox %s</command> + <icon-name>firefox</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>firefox -new-tab "%s"</tab-command> + <win-command>firefox -new-window "%s"</win-command> + </web-browser> + <web-browser> + <_name>Iceweasel</_name> + <executable>iceweasel</executable> + <command>iceweasel %s</command> + <icon-name>iceweasel</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>iceweasel -new-tab "%s"</tab-command> + <win-command>iceweasel -new-window "%s"</win-command> + </web-browser> + <web-browser> + <_name>Mozilla 1.6</_name> + <executable>mozilla-1.6</executable> + <command>mozilla-1.6 %s</command> + <icon-name>mozilla-icon</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>mozilla-1.6 -remote "openurl(%s,new-tab)"</tab-command> + <win-command>mozilla-1.6 -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>Mozilla</_name> + <executable>mozilla</executable> + <command>mozilla %s</command> + <icon-name>mozilla-icon</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>mozilla -remote "openurl(%s,new-tab)"</tab-command> + <win-command>mozilla -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>SeaMonkey</_name> + <executable>seamonkey</executable> + <command>seamonkey %s</command> + <icon-name>seamonkey</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>seamonkey -remote "openurl(%s,new-tab)"</tab-command> + <win-command>seamonkey -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>Iceape</_name> + <executable>iceape</executable> + <command>iceape %s</command> + <icon-name>iceape</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>iceape -remote "openurl(%s,new-tab)"</tab-command> + <win-command>iceape -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>Netscape Communicator</_name> + <executable>netscape</executable> + <command>netscape %s</command> + <icon-name>netscape</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>true</netscape-remote> + <tab-command>netscape -remote "openurl(%s,new-tab)"</tab-command> + <win-command>netscape -remote "openurl(%s,new-window)"</win-command> + </web-browser> + <web-browser> + <_name>Konqueror</_name> + <executable>konqueror</executable> + <command>konqueror %s</command> + <icon-name>konqueror</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>false</netscape-remote> + </web-browser> + <web-browser> + <_name>Midori</_name> + <executable>midori</executable> + <command>midori %s</command> + <icon-name>web-browser</icon-name> + <run-in-terminal>false</run-in-terminal> + <netscape-remote>false</netscape-remote> + </web-browser> + </web-browsers> + + <mail-readers> + <mail-reader> + <_name>Evolution Mail Reader</_name> + <executable>evolution</executable> + <command>evolution %s</command> + <icon-name>evolution</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Balsa</_name> + <executable>balsa</executable> + <command>balsa -m %s</command> + <icon-name>mate-balsa2</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>KMail</_name> + <executable>kmail</executable> + <command>kmail %s</command> + <icon-name>kmail</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Icedove</_name> + <executable>icedove</executable> + <command>icedove %s</command> + <icon-name>icedove</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Thunderbird</_name> + <executable>thunderbird</executable> + <command>thunderbird %s</command> + <icon-name>thunderbird</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Mozilla Thunderbird</_name> + <executable>mozilla-thunderbird</executable> + <command>mozilla-thunderbird %s</command> + <icon-name>thunderbird</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Mozilla Mail</_name> + <executable>mozilla</executable> + <command>mozilla -mail %s</command> + <icon-name>mozilla-mail-icon</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>SeaMonkey Mail</_name> + <executable>seamonkey</executable> + <command>seamonkey -mail %s</command> + <icon-name>seamonkey</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Iceape Mail</_name> + <executable>iceape</executable> + <command>iceape -mail %s</command> + <icon-name>iceape</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Mutt</_name> + <executable>mutt</executable> + <command>mutt %s</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <run-in-terminal>true</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Claws Mail</_name> + <executable>claws-mail</executable> + <command>claws-mail --compose %s</command> + <icon-name>claws-mail</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Sylpheed-Claws</_name> + <executable>sylpheed-claws</executable> + <command>sylpheed-claws --compose %s</command> + <icon-name>sylpheed</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + <mail-reader> + <_name>Sylpheed</_name> + <executable>sylpheed</executable> + <command>sylpheed --compose %s</command> + <icon-name>sylpheed</icon-name> + <run-in-terminal>false</run-in-terminal> + </mail-reader> + </mail-readers> + + <!-- agregando para los ... --> + <file-managers> + <file-manager> + <_name>Mate File Manager</_name> + <executable>caja</executable> + <run-in-terminal>false</run-in-terminal> + <command>caja %s</command> + <icon-name>file-manager</icon-name> + </file-manager> + + <file-manager> + <_name>Nautilus</_name> + <executable>nautilus</executable> + <run-in-terminal>false</run-in-terminal> + <command>nautilus %s</command> + <icon-name>nautilus</icon-name> + </file-manager> + + <file-manager> + <_name>Thunar</_name> + <executable>thunar</executable> + <run-in-terminal>false</run-in-terminal> + <command>thunar %s</command> + <icon-name>thunar</icon-name> + </file-manager> + + </file-managers> + + <terminals> + <terminal> + <_name>Debian Terminal Emulator</_name> + <executable>x-terminal-emulator</executable> + <command>x-terminal-emulator</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>MATE Terminal</_name> + <executable>mate-terminal</executable> + <command>mate-terminal</command> + <icon-name>utilities-terminal</icon-name> + <exec-flag>-x</exec-flag> + </terminal> + <terminal> + <_name>GNOME Terminal</_name> + <executable>gnome-terminal</executable> + <command>gnome-terminal</command> + <icon-name>gnome-terminal</icon-name> + <exec-flag>-x</exec-flag> + </terminal> + <terminal> + <_name>Terminator</_name> + <executable>terminator</executable> + <command>terminator</command> + <icon-name>terminator</icon-name> + <exec-flag>-x</exec-flag> + </terminal> + <terminal> + <_name>Standard XTerminal</_name> + <executable>xterm</executable> + <command>xterm</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>NXterm</_name> + <executable>nxterm</executable> + <command>nxterm</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>RXVT</_name> + <executable>rxvt</executable> + <command>rxvt</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>aterm</_name> + <executable>aterm</executable> + <command>aterm</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>ETerm</_name> + <executable>ETerm</executable> + <command>ETerm</command> + <icon-name>mate-mime-application-x-executable</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>Konsole</_name> + <executable>konsole</executable> + <command>konsole</command> + <icon-name>konsole</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>Terminal</_name> + <executable>terminal</executable> + <command>terminal</command> + <icon-name>utilities-terminal</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + <terminal> + <_name>Sakura</_name> + <executable>sakura</executable> + <command>sakura</command> + <icon-name>terminal-tango</icon-name> + <exec-flag>-e</exec-flag> + </terminal> + </terminals> + + <media-players> + <media-player> + <_name>Banshee Music Player</_name> + <executable>banshee</executable> + <command>banshee</command> + <icon-name>music-player-banshee</icon-name> + <run-in-terminal>false</run-in-terminal> + </media-player> + <media-player> + <_name>Muine Music Player</_name> + <executable>muine</executable> + <command>muine</command> + <icon-name>muine</icon-name> + <run-in-terminal>false</run-in-terminal> + </media-player> + <media-player> + <_name>Rhythmbox Music Player</_name> + <executable>rhythmbox</executable> + <command>rhythmbox</command> + <icon-name>rhythmbox</icon-name> + <run-in-terminal>false</run-in-terminal> + </media-player> + <media-player> + <_name>Totem Movie Player</_name> + <executable>totem</executable> + <command>totem</command> + <icon-name>totem</icon-name> + <run-in-terminal>false</run-in-terminal> + </media-player> + <media-player> + <_name>Listen</_name> + <executable>listen</executable> + <command>listen</command> + <icon-name>listen</icon-name> + <run-in-terminal>false</run-in-terminal> + </media-player> + </media-players> + + <a11y-visual> + <visual> + <_name>Orca</_name> + <executable>orca</executable> + <command>orca</command> + <icon-name>orca</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>Orca with Magnifier</_name> + <executable>orca</executable> + <command>orca -e magnifier</command> + <icon-name>orca</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>Linux Screen Reader</_name> + <executable>lsr</executable> + <command>lsr</command> + <icon-name>lsr</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>Linux Screen Reader with Magnifier</_name> + <executable>lsr</executable> + <command>lsr -p mag</command> + <icon-name>lsr</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>Gnopernicus</_name> + <executable>gnopernicus</executable> + <command>gnopernicus</command> + <icon-name>icon-accessibility</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>Gnopernicus with Magnifier</_name> + <executable>gnopernicus</executable> + <command>gnopernicus -m</command> + <icon-name>icon-accessibility</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>MATE Magnifier without Screen Reader</_name> + <executable>magnifier</executable> + <command>magnifier -m</command> + <icon-name>mate-searchtool</icon-name> + <run-at-start>false</run-at-start> + </visual> + <visual> + <_name>KDE Magnifier without Screen Reader</_name> + <executable>kmag</executable> + <command>kmag</command> + <icon-name>mate-searchtool</icon-name> + <run-at-start>false</run-at-start> + </visual> + + </a11y-visual> + + <a11y-mobility> + <mobility> + <_name>MATE OnScreen Keyboard</_name> + <executable>gok</executable> + <command>gok</command> + <icon-name>accessibility-keyboard-capplet</icon-name> + <run-at-start>false</run-at-start> + </mobility> + <mobility> + <_name>Dasher</_name> + <executable>dasher</executable> + <command>dasher</command> + <icon-name>mate-searchtool</icon-name> + <run-at-start>false</run-at-start> + </mobility> + <mobility> + <name>onBoard</name> + <executable>onboard</executable> + <command>onboard</command> + <icon-name>onboard</icon-name> + <run-at-start>false</run-at-start> + </mobility> + </a11y-mobility> + +</default-apps> |