This is an automated email from the git hooks/post-receive script. b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository apps/xfce4-screensaver.
commit f8e14b09d84559075f9458b3f2f69f1d6d5099d9 Author: Sean Davis <smd.seanda...@gmail.com> Date: Tue Oct 9 20:16:50 2018 -0400 Port org.xfce.screensaver.gschema.xml to Xfconf --- configure.ac | 4 +- data/Makefile.am | 2 +- data/org.xfce.screensaver.gschema.xml.in | 89 ------------------ po/POTFILES.in | 1 - src/gs-lock-plug.c | 23 +---- src/gs-prefs.c | 146 +++++++++++++---------------- src/gs-prefs.h | 155 +++++++++++++++++++++++++++---- src/xfce4-screensaver-preferences.c | 114 +++++++++++------------ 8 files changed, 259 insertions(+), 275 deletions(-) diff --git a/configure.ac b/configure.ac index 431d76a..baabdc5 100644 --- a/configure.ac +++ b/configure.ac @@ -100,7 +100,8 @@ PKG_CHECK_MODULES(XFCE_SCREENSAVER_CAPPLET, gio-2.0 >= $GLIB_REQUIRED_VERSION gtk+-3.0 >= $GTK_REQUIRED_VERSION libxklavier >= $LIBXKLAVIER_REQUIRED - libxfce4ui-2 >= $LIBXFCE4UI_REQUIRED) + libxfce4ui-2 >= $LIBXFCE4UI_REQUIRED + libxfconf-0 >= $LIBXFCONF_REQUIRED) AC_SUBST(XFCE_SCREENSAVER_CAPPLET_CFLAGS) AC_SUBST(XFCE_SCREENSAVER_CAPPLET_LIBS) @@ -1127,7 +1128,6 @@ data/Makefile data/xfce4-screensavers.menu data/xfce4-screensaver.pc data/org.xfce.ScreenSaver.service -data/org.xfce.screensaver.gschema.xml data/images/Makefile data/images/cosmos/Makefile savers/Makefile diff --git a/data/Makefile.am b/data/Makefile.am index b2eba9b..7221986 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -43,7 +43,7 @@ dbussessionservice_DATA = org.xfce.ScreenSaver.service @GSETTINGS_RULES@ @INTLTOOL_XML_NOMERGE_RULE@ -gsettingsschema_in_files = org.xfce.screensaver.gschema.xml.in org.xfce.peripherals-keyboard-xkb.gschema.xml.in +gsettingsschema_in_files = org.xfce.peripherals-keyboard-xkb.gschema.xml.in gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml) EXTRA_DIST = \ diff --git a/data/org.xfce.screensaver.gschema.xml.in b/data/org.xfce.screensaver.gschema.xml.in deleted file mode 100644 index 7f48840..0000000 --- a/data/org.xfce.screensaver.gschema.xml.in +++ /dev/null @@ -1,89 +0,0 @@ -<schemalist gettext-domain="@GETTEXT_PACKAGE@"> - <enum id="org.xfce.screensaver.Mode"> - <value nick="blank-only" value="0"/> - <value nick="random" value="1"/> - <value nick="single" value="2"/> - </enum> - <schema id="org.xfce.screensaver" path="/org/xfce/screensaver/"> - <key name="idle-activation-enabled" type="b"> - <default>true</default> - <summary>Activate when idle</summary> - <description>Set this to TRUE to activate the screensaver when the session is idle.</description> - </key> - <key name="lock-enabled" type="b"> - <default>true</default> - <summary>Lock on activation</summary> - <description>Set this to TRUE to lock the screen when the screensaver goes active.</description> - </key> - <key name="mode" enum="org.xfce.screensaver.Mode"> - <default>'blank-only'</default> - <summary>Screensaver theme selection mode</summary> - <description>The selection mode used by screensaver. May be "blank-only" to enable the screensaver without using any theme on activation, "single" to enable screensaver using only one theme on activation (specified in "themes" key), and "random" to enable the screensaver using a random theme on activation.</description> - </key> - <key name="themes" type="as"> - <default>[]</default> - <summary>Screensaver themes</summary> - <description>This key specifies the list of themes to be used by the screensaver. It's ignored when "mode" key is "blank-only", should provide the theme name when "mode" is "single", and should provide a list of themes when "mode" is "random".</description> - </key> - <key name="power-management-delay" type="i"> - <default>30</default> - <summary>Time before power management baseline</summary> - <description>The number of seconds of inactivity before signalling to power management. This key is set and maintained by the session power management agent.</description> - </key> - <key name="cycle-delay" type="i"> - <default>10</default> - <summary>Time before theme change</summary> - <description>The number of minutes to run before changing the screensaver theme.</description> - </key> - <key name="lock-delay" type="i"> - <default>0</default> - <summary>Time before locking</summary> - <description>The number of minutes after screensaver activation before locking the screen.</description> - </key> - <key name="embedded-keyboard-enabled" type="b"> - <default>false</default> - <summary>Allow embedding a keyboard into the window</summary> - <description>Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The "keyboard_command" key must be set with the appropriate command.</description> - </key> - <key name="embedded-keyboard-command" type="s"> - <default>''</default> - <summary>Embedded keyboard command</summary> - <description>The command that will be run, if the "embedded_keyboard_enabled" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output.</description> - </key> - <key name="logout-enabled" type="b"> - <default>false</default> - <summary>Allow logout</summary> - <description>Set this to TRUE to offer an option in the unlock dialog to allow logging out after a delay. The delay is specified in the "logout_delay" key.</description> - </key> - <key name="logout-delay" type="i"> - <default>120</default> - <summary>Time before logout option</summary> - <description>The number of minutes after the screensaver activation before a logout option will appear in the unlock dialog. This key has effect only if the "logout_enable" key is set to TRUE.</description> - </key> - <key name="logout-command" type="s"> - <default>''</default> - <summary>Logout command</summary> - <description>The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the "logout_enable" key is set to TRUE.</description> - </key> - <key name="user-switch-enabled" type="b"> - <default>true</default> - <summary>Allow user switching</summary> - <description>Set this to TRUE to offer an option in the unlock dialog to switch to a different user account.</description> - </key> - <key name="lock-dialog-theme" type="s"> - <default>'default'</default> - <summary>Theme for lock dialog</summary> - <description>Theme to use for the lock dialog</description> - </key> - <key name="status-message-enabled" type="b"> - <default>true</default> - <summary>Allow the session status message to be displayed</summary> - <description>Allow the session status message to be displayed when the screen is locked.</description> - </key> - <key name="idle-delay" type="i"> - <default>5</default> - <summary>Time before session is considered idle</summary> - <description>The number of minutes of inactivity before the session is considered idle.</description> - </key> - </schema> -</schemalist> diff --git a/po/POTFILES.in b/po/POTFILES.in index 776e4fc..184abae 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -2,7 +2,6 @@ # Please keep this file sorted alphabetically. data/images/cosmos/cosmos.xml.in.in [type: gettext/glade]data/lock-dialog-default.ui -[type: gettext/gsettings]data/org.xfce.screensaver.gschema.xml.in [type: gettext/gsettings]data/org.xfce.peripherals-keyboard-xkb.gschema.xml.in data/xfce4-screensaver-preferences.desktop.in [type: gettext/glade]data/xfce4-screensaver-preferences.ui diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c index bfae612..9738acd 100644 --- a/src/gs-lock-plug.c +++ b/src/gs-lock-plug.c @@ -51,10 +51,6 @@ #include "gs-debug.h" #include "xfce-bg.h" -#define GSETTINGS_SCHEMA "org.xfce.screensaver" - -#define KEY_LOCK_DIALOG_THEME "lock-dialog-theme" - #define MDM_FLEXISERVER_COMMAND "mdmflexiserver" #define MDM_FLEXISERVER_ARGS "--startnew Standard" @@ -1883,19 +1879,6 @@ switch_user_button_clicked (GtkButton *button, do_user_switch (plug); } -static char * -get_dialog_theme_name (GSLockPlug *plug) -{ - char *name; - GSettings *settings; - - settings = g_settings_new (GSETTINGS_SCHEMA); - name = g_settings_get_string (settings, KEY_LOCK_DIALOG_THEME); - g_object_unref (settings); - - return name; -} - static void get_draw_dimensions(GSLockPlug *plug, XfceBG *bg, @@ -1974,11 +1957,7 @@ load_theme (GSLockPlug *plug) GtkWidget *lock_dialog; GError *error=NULL; - theme = get_dialog_theme_name (plug); - if (theme == NULL) - { - return FALSE; - } + theme = g_strdup("default"); filename = g_strdup_printf ("lock-dialog-%s.ui", theme); gtkbuilder = g_build_filename (GTKBUILDERDIR, filename, NULL); diff --git a/src/gs-prefs.c b/src/gs-prefs.c index 967604c..dd7fc73 100644 --- a/src/gs-prefs.c +++ b/src/gs-prefs.c @@ -28,34 +28,19 @@ #include <glib-object.h> #include <gio/gio.h> +#include <xfconf/xfconf.h> + #include "gs-prefs.h" static void gs_prefs_class_init (GSPrefsClass *klass); static void gs_prefs_init (GSPrefs *prefs); static void gs_prefs_finalize (GObject *object); -#define GSETTINGS_SCHEMA "org.xfce.screensaver" -#define KEY_IDLE_ACTIVATION_ENABLED "idle-activation-enabled" -#define KEY_LOCK_ENABLED "lock-enabled" -#define KEY_MODE "mode" -#define KEY_POWER_DELAY "power-management-delay" -#define KEY_LOCK_DELAY "lock-delay" -#define KEY_CYCLE_DELAY "cycle-delay" -#define KEY_THEMES "themes" -#define KEY_USER_SWITCH_ENABLED "user-switch-enabled" -#define KEY_LOGOUT_ENABLED "logout-enabled" -#define KEY_LOGOUT_DELAY "logout-delay" -#define KEY_LOGOUT_COMMAND "logout-command" -#define KEY_KEYBOARD_ENABLED "embedded-keyboard-enabled" -#define KEY_KEYBOARD_COMMAND "embedded-keyboard-command" -#define KEY_STATUS_MESSAGE_ENABLED "status-message-enabled" -#define KEY_IDLE_DELAY "idle-delay" - #define GS_PREFS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_PREFS, GSPrefsPrivate)) struct GSPrefsPrivate { - GSettings *settings; + XfconfChannel *channel; }; enum @@ -205,6 +190,9 @@ _gs_prefs_set_themes (GSPrefs *prefs, g_slist_free (prefs->themes); } + if (values == NULL) + return; + /* take ownership of the list */ prefs->themes = NULL; for (i=0; values[i] != NULL; i++) @@ -307,189 +295,179 @@ gs_prefs_load_from_settings (GSPrefs *prefs) gchar **strv; gint mode; - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_IDLE_ACTIVATION_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_IDLE_ACTIVATION_ENABLED, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED); _gs_prefs_set_idle_activation_enabled (prefs, bvalue); - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_LOCK_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_LOCK_ENABLED, DEFAULT_KEY_LOCK_ENABLED); _gs_prefs_set_lock_enabled (prefs, bvalue); - value = g_settings_get_int (prefs->priv->settings, KEY_IDLE_DELAY); + value = xfconf_channel_get_int (prefs->priv->channel, KEY_IDLE_DELAY, DEFAULT_KEY_IDLE_DELAY); _gs_prefs_set_timeout (prefs, value); - value = g_settings_get_int (prefs->priv->settings, KEY_POWER_DELAY); + value = xfconf_channel_get_int (prefs->priv->channel, KEY_POWER_DELAY, DEFAULT_KEY_POWER_DELAY); _gs_prefs_set_power_timeout (prefs, value); - value = g_settings_get_int (prefs->priv->settings, KEY_LOCK_DELAY); + value = xfconf_channel_get_int (prefs->priv->channel, KEY_LOCK_DELAY, DEFAULT_KEY_LOCK_DELAY); _gs_prefs_set_lock_timeout (prefs, value); - value = g_settings_get_int (prefs->priv->settings, KEY_CYCLE_DELAY); + value = xfconf_channel_get_int (prefs->priv->channel, KEY_CYCLE_DELAY, DEFAULT_KEY_CYCLE_DELAY); _gs_prefs_set_cycle_timeout (prefs, value); - mode = g_settings_get_enum (prefs->priv->settings, KEY_MODE); + mode = xfconf_channel_get_int (prefs->priv->channel, KEY_MODE, DEFAULT_KEY_MODE); _gs_prefs_set_mode (prefs, mode); - strv = g_settings_get_strv (prefs->priv->settings, KEY_THEMES); + strv = xfconf_channel_get_string_list (prefs->priv->channel, KEY_THEMES); _gs_prefs_set_themes (prefs, strv); g_strfreev (strv); /* Embedded keyboard options */ - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_KEYBOARD_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_KEYBOARD_ENABLED, DEFAULT_KEY_KEYBOARD_ENABLED); _gs_prefs_set_keyboard_enabled (prefs, bvalue); - string = g_settings_get_string (prefs->priv->settings, KEY_KEYBOARD_COMMAND); + string = xfconf_channel_get_string (prefs->priv->channel, KEY_KEYBOARD_COMMAND, DEFAULT_KEY_KEYBOARD_COMMAND); _gs_prefs_set_keyboard_command (prefs, string); g_free (string); - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_STATUS_MESSAGE_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_STATUS_MESSAGE_ENABLED, DEFAULT_KEY_STATUS_MESSAGE_ENABLED); _gs_prefs_set_status_message_enabled (prefs, bvalue); /* Logout options */ - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_LOGOUT_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_LOGOUT_ENABLED, DEFAULT_KEY_LOGOUT_ENABLED); _gs_prefs_set_logout_enabled (prefs, bvalue); - string = g_settings_get_string (prefs->priv->settings, KEY_LOGOUT_COMMAND); + string = xfconf_channel_get_string (prefs->priv->channel, KEY_LOGOUT_COMMAND, DEFAULT_KEY_LOGOUT_COMMAND); _gs_prefs_set_logout_command (prefs, string); g_free (string); - value = g_settings_get_int (prefs->priv->settings, KEY_LOGOUT_DELAY); + value = xfconf_channel_get_int (prefs->priv->channel, KEY_LOGOUT_DELAY, DEFAULT_KEY_LOGOUT_DELAY); _gs_prefs_set_logout_timeout (prefs, value); /* User switching options */ - bvalue = g_settings_get_boolean (prefs->priv->settings, KEY_USER_SWITCH_ENABLED); + bvalue = xfconf_channel_get_bool (prefs->priv->channel, KEY_USER_SWITCH_ENABLED, DEFAULT_KEY_USER_SWITCH_ENABLED); _gs_prefs_set_user_switch_enabled (prefs, bvalue); } static void -key_changed_cb (GSettings *settings, - gchar *key, +key_changed_cb (XfconfChannel *channel, + gchar *property, + GValue *value, GSPrefs *prefs) { - if (strcmp (key, KEY_MODE) == 0) + g_warning("key changed!"); + if (strcmp (property, KEY_MODE) == 0) { gint mode; - mode = g_settings_get_enum (settings, key); + mode = xfconf_channel_get_int (channel, property, DEFAULT_KEY_MODE); _gs_prefs_set_mode (prefs, mode); - } - else if (strcmp (key, KEY_THEMES) == 0) + else if (strcmp (property, KEY_THEMES) == 0) { gchar **strv = NULL; - strv = g_settings_get_strv (settings, key); + strv = xfconf_channel_get_string_list (channel, property); _gs_prefs_set_themes (prefs, strv); g_strfreev (strv); - } - else if (strcmp (key, KEY_IDLE_DELAY) == 0) + else if (strcmp (property, KEY_IDLE_DELAY) == 0) { int delay; - delay = g_settings_get_int (settings, key); + delay = xfconf_channel_get_int (channel, property, DEFAULT_KEY_IDLE_DELAY); _gs_prefs_set_timeout (prefs, delay); - } - else if (strcmp (key, KEY_POWER_DELAY) == 0) + else if (strcmp (property, KEY_POWER_DELAY) == 0) { int delay; - delay = g_settings_get_int (settings, key); + delay = xfconf_channel_get_int (channel, property, DEFAULT_KEY_POWER_DELAY); _gs_prefs_set_power_timeout (prefs, delay); - } - else if (strcmp (key, KEY_LOCK_DELAY) == 0) + else if (strcmp (property, KEY_LOCK_DELAY) == 0) { int delay; - delay = g_settings_get_int (settings, key); + delay = xfconf_channel_get_int (channel, property, DEFAULT_KEY_LOCK_DELAY); _gs_prefs_set_lock_timeout (prefs, delay); } - else if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0) + else if (strcmp (property, KEY_IDLE_ACTIVATION_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED); _gs_prefs_set_idle_activation_enabled (prefs, enabled); - } - else if (strcmp (key, KEY_LOCK_ENABLED) == 0) + else if (strcmp (property, KEY_LOCK_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_LOCK_ENABLED); _gs_prefs_set_lock_enabled (prefs, enabled); - } - else if (strcmp (key, KEY_CYCLE_DELAY) == 0) + else if (strcmp (property, KEY_CYCLE_DELAY) == 0) { int delay; - delay = g_settings_get_int (settings, key); + delay = xfconf_channel_get_int (channel, property, DEFAULT_KEY_CYCLE_DELAY); _gs_prefs_set_cycle_timeout (prefs, delay); - } - else if (strcmp (key, KEY_KEYBOARD_ENABLED) == 0) + else if (strcmp (property, KEY_KEYBOARD_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_KEYBOARD_ENABLED); _gs_prefs_set_keyboard_enabled (prefs, enabled); - } - else if (strcmp (key, KEY_KEYBOARD_COMMAND) == 0) + else if (strcmp (property, KEY_KEYBOARD_COMMAND) == 0) { char *command; - command = g_settings_get_string (settings, key); + command = xfconf_channel_get_string (channel, property, DEFAULT_KEY_KEYBOARD_COMMAND); _gs_prefs_set_keyboard_command (prefs, command); g_free (command); - } - else if (strcmp (key, KEY_STATUS_MESSAGE_ENABLED) == 0) + else if (strcmp (property, KEY_STATUS_MESSAGE_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_STATUS_MESSAGE_ENABLED); _gs_prefs_set_status_message_enabled (prefs, enabled); - } - else if (strcmp (key, KEY_LOGOUT_ENABLED) == 0) + else if (strcmp (property, KEY_LOGOUT_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_LOGOUT_ENABLED); _gs_prefs_set_logout_enabled (prefs, enabled); - } - else if (strcmp (key, KEY_LOGOUT_DELAY) == 0) + else if (strcmp (property, KEY_LOGOUT_DELAY) == 0) { int delay; - delay = g_settings_get_int (settings, key); + delay = xfconf_channel_get_int (channel, property, DEFAULT_KEY_LOGOUT_DELAY); _gs_prefs_set_logout_timeout (prefs, delay); - } - else if (strcmp (key, KEY_LOGOUT_COMMAND) == 0) + else if (strcmp (property, KEY_LOGOUT_COMMAND) == 0) { char *command; - command = g_settings_get_string (settings, key); + command = xfconf_channel_get_string (channel, property, DEFAULT_KEY_LOGOUT_COMMAND); _gs_prefs_set_logout_command (prefs, command); g_free (command); } - else if (strcmp (key, KEY_USER_SWITCH_ENABLED) == 0) + else if (strcmp (property, KEY_USER_SWITCH_ENABLED) == 0) { gboolean enabled; - enabled = g_settings_get_boolean (settings, key); + enabled = xfconf_channel_get_bool (channel, property, DEFAULT_KEY_USER_SWITCH_ENABLED); _gs_prefs_set_user_switch_enabled (prefs, enabled); } else { - g_warning ("Config key not handled: %s", key); + g_warning ("Config key not handled: %s", property); } g_signal_emit (prefs, signals [CHANGED], 0); @@ -500,9 +478,9 @@ gs_prefs_init (GSPrefs *prefs) { prefs->priv = GS_PREFS_GET_PRIVATE (prefs); - prefs->priv->settings = g_settings_new (GSETTINGS_SCHEMA); - g_signal_connect (prefs->priv->settings, - "changed", + prefs->priv->channel = xfconf_channel_get (SETTINGS_XFCONF_CHANNEL); + g_signal_connect (prefs->priv->channel, + "property-changed", G_CALLBACK (key_changed_cb), prefs); @@ -534,10 +512,10 @@ gs_prefs_finalize (GObject *object) g_return_if_fail (prefs->priv != NULL); - if (prefs->priv->settings) + if (prefs->priv->channel) { - g_object_unref (prefs->priv->settings); - prefs->priv->settings = NULL; + g_object_unref (prefs->priv->channel); + prefs->priv->channel = NULL; } if (prefs->themes) diff --git a/src/gs-prefs.h b/src/gs-prefs.h index 95729bf..bca1fd8 100644 --- a/src/gs-prefs.h +++ b/src/gs-prefs.h @@ -34,6 +34,127 @@ G_BEGIN_DECLS #define GS_IS_PREFS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_PREFS)) #define GS_PREFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_PREFS, GSPrefsClass)) +#define SETTINGS_XFCONF_CHANNEL "xfce4-screensaver" + +/** + * Screensaver theme selection mode + * The selection mode used by screensaver. May be "blank-only" to enable the screensaver + * without using any theme on activation, "single" to enable screensaver using only one + * theme on activation (specified in "themes" key), and "random" to enable the screensaver + * using a random theme on activation. + */ +#define KEY_MODE "/mode" +#define DEFAULT_KEY_MODE 0 + +/** + * Time before session is considered idle + * The number of minutes of inactivity before the session is considered idle. + */ +#define KEY_IDLE_DELAY "/idle-delay" +#define DEFAULT_KEY_IDLE_DELAY 5 + +/** + * Time before power management baseline + * The number of seconds of inactivity before signalling to power management. + * This key is set and maintained by the session power management agent. + */ +#define KEY_POWER_DELAY "/power-management-delay" +#define DEFAULT_KEY_POWER_DELAY 30 + +/** + * Time before locking + * The number of minutes after screensaver activation before locking the screen. + */ +#define KEY_LOCK_DELAY "/lock-delay" +#define DEFAULT_KEY_LOCK_DELAY 0 + +/** + * Activate when idle + * Set this to TRUE to activate the screensaver when the session is idle. + */ +#define KEY_IDLE_ACTIVATION_ENABLED "/idle-activation-enabled" +#define DEFAULT_KEY_IDLE_ACTIVATION_ENABLED TRUE + +/** + * Lock on activation + * Set this to TRUE to lock the screen when the screensaver goes active. + */ +#define KEY_LOCK_ENABLED "/lock-enabled" +#define DEFAULT_KEY_LOCK_ENABLED TRUE + +/** + * Time before theme change + * The number of minutes to run before changing the screensaver theme. + */ +#define KEY_CYCLE_DELAY "/cycle-delay" +#define DEFAULT_KEY_CYCLE_DELAY 10 + +/** + * Allow embedding a keyboard into the window + * Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. + * The "keyboard_command" key must be set with the appropriate command. + */ +#define KEY_KEYBOARD_ENABLED "/embedded-keyboard-enabled" +#define DEFAULT_KEY_KEYBOARD_ENABLED FALSE + +/** + * Embedded keyboard command + * The command that will be run, if the "embedded_keyboard_enabled" key is set to TRUE, + * to embed a keyboard widget into the window. This command should implement an XEMBED + * plug interface and output a window XID on the standard output. + */ +#define KEY_KEYBOARD_COMMAND "/embedded-keyboard-command" +#define DEFAULT_KEY_KEYBOARD_COMMAND "" + +/** + * Allow the session status message to be displayed + * Allow the session status message to be displayed when the screen is locked. + */ +#define KEY_STATUS_MESSAGE_ENABLED "/status-message-enabled" +#define DEFAULT_KEY_STATUS_MESSAGE_ENABLED TRUE + +/** + * Allow logout + * Set this to TRUE to offer an option in the unlock dialog to allow logging out after a + * delay. The delay is specified in the "logout_delay" key. + */ +#define KEY_LOGOUT_ENABLED "/logout-enabled" +#define DEFAULT_KEY_LOGOUT_ENABLED FALSE + +/** + * Time before logout option + * The number of minutes after the screensaver activation before a logout option will + * appear in the unlock dialog. This key has effect only if the "logout_enable" key is + * set to TRUE. + */ +#define KEY_LOGOUT_DELAY "/logout-delay" +#define DEFAULT_KEY_LOGOUT_DELAY 120 + +/** + * Logout command + * The command to invoke when the logout button is clicked. This command should simply + * log the user out without any interaction. This key has effect only if the + * "logout_enable" key is set to TRUE. + */ +#define KEY_LOGOUT_COMMAND "/logout-command" +#define DEFAULT_KEY_LOGOUT_COMMAND "" + +/** + * Allow user switching + * Set this to TRUE to offer an option in the unlock dialog to switch to a different + * user account. + */ +#define KEY_USER_SWITCH_ENABLED "/user-switch-enabled" +#define DEFAULT_KEY_USER_SWITCH_ENABLED TRUE + +/** + * Screensaver themes + * This key specifies the list of themes to be used by the screensaver. It's ignored + * when "mode" key is "blank-only", should provide the theme name when "mode" is "single", + * and should provide a list of themes when "mode" is "random". + */ +#define KEY_THEMES "/themes" + typedef enum { GS_MODE_BLANK_ONLY, @@ -50,23 +171,23 @@ typedef struct GSPrefsPrivate *priv; guint idle_activation_enabled : 1; /* whether to activate when idle */ - guint lock_enabled : 1; /* whether to lock when active */ - guint logout_enabled : 1; /* Whether to offer the logout option */ - guint user_switch_enabled : 1; /* Whether to offer the user switch option */ - guint keyboard_enabled : 1; /* Whether to try to embed a keyboard */ - guint status_message_enabled : 1; /* show the status message in the lock */ - - guint power_timeout; /* how much idle time before power management */ - guint timeout; /* how much idle time before activation */ - guint lock_timeout; /* how long after activation locking starts */ - guint logout_timeout; /* how long until the logout option appears */ - guint cycle; /* how long each theme should run */ - - char *logout_command; /* command to use to logout */ - char *keyboard_command; /* command to use to embed a keyboard */ - - GSList *themes; /* the screensaver themes to run */ - GSSaverMode mode; /* theme selection mode */ +guint lock_enabled : 1; /* whether to lock when active */ +guint logout_enabled : 1; /* Whether to offer the logout option */ +guint user_switch_enabled : 1; /* Whether to offer the user switch option */ +guint keyboard_enabled : 1; /* Whether to try to embed a keyboard */ +guint status_message_enabled : 1; /* show the status message in the lock */ + +guint power_timeout; /* how much idle time before power management */ +guint timeout; /* how much idle time before activation */ +guint lock_timeout; /* how long after activation locking starts */ +guint logout_timeout; /* how long until the logout option appears */ +guint cycle; /* how long each theme should run */ + +char *logout_command; /* command to use to logout */ +char *keyboard_command; /* command to use to embed a keyboard */ + +GSList *themes; /* the screensaver themes to run */ +GSSaverMode mode; /* theme selection mode */ } GSPrefs; typedef struct diff --git a/src/xfce4-screensaver-preferences.c b/src/xfce4-screensaver-preferences.c index ef845b6..9a2b978 100644 --- a/src/xfce4-screensaver-preferences.c +++ b/src/xfce4-screensaver-preferences.c @@ -48,16 +48,9 @@ #include "gs-job.h" #include "gs-prefs.h" /* for GS_MODE enum */ -#define GTK_BUILDER_FILE "xfce4-screensaver-preferences.ui" +#include <xfconf/xfconf.h> -#define GSETTINGS_SCHEMA "org.xfce.screensaver" -#define KEY_LOCK "lock-enabled" -#define KEY_IDLE_ACTIVATION_ENABLED "idle-activation-enabled" -#define KEY_MODE "mode" -#define KEY_LOCK_DELAY "lock-delay" -#define KEY_CYCLE_DELAY "cycle-delay" -#define KEY_THEMES "themes" -#define KEY_IDLE_DELAY "idle-delay" +#define GTK_BUILDER_FILE "xfce4-screensaver-preferences.ui" #define GPM_COMMAND "xfce4-power-manager-settings" @@ -84,7 +77,7 @@ static GtkTargetEntry drop_types [] = static GtkBuilder *builder = NULL; static GSThemeManager *theme_manager = NULL; static GSJob *job = NULL; -static GSettings *screensaver_settings = NULL; +static XfconfChannel *screensaver_channel = NULL; static gint32 config_get_activate_delay (gboolean *is_writable) @@ -93,11 +86,11 @@ config_get_activate_delay (gboolean *is_writable) if (is_writable) { - *is_writable = g_settings_is_writable (screensaver_settings, + *is_writable = !xfconf_channel_is_property_locked (screensaver_channel, KEY_IDLE_DELAY); } - delay = g_settings_get_int (screensaver_settings, KEY_IDLE_DELAY); + delay = xfconf_channel_get_int (screensaver_channel, KEY_IDLE_DELAY, DEFAULT_KEY_IDLE_DELAY); if (delay < 1) { @@ -110,7 +103,7 @@ config_get_activate_delay (gboolean *is_writable) static void config_set_activate_delay (gint32 timeout) { - g_settings_set_int (screensaver_settings, KEY_IDLE_DELAY, timeout); + xfconf_channel_set_int (screensaver_channel, KEY_IDLE_DELAY, timeout); } static int @@ -120,11 +113,11 @@ config_get_mode (gboolean *is_writable) if (is_writable) { - *is_writable = g_settings_is_writable (screensaver_settings, + *is_writable = !xfconf_channel_is_property_locked (screensaver_channel, KEY_MODE); } - mode = g_settings_get_enum (screensaver_settings, KEY_MODE); + mode = xfconf_channel_get_int (screensaver_channel, KEY_MODE, DEFAULT_KEY_MODE); return mode; } @@ -132,7 +125,7 @@ config_get_mode (gboolean *is_writable) static void config_set_mode (int mode) { - g_settings_set_enum (screensaver_settings, KEY_MODE, mode); + xfconf_channel_set_int (screensaver_channel, KEY_MODE, mode); } static char * @@ -143,13 +136,13 @@ config_get_theme (gboolean *is_writable) if (is_writable) { - gboolean can_write_theme; - gboolean can_write_mode; + gboolean can_write_theme = TRUE; + gboolean can_write_mode = TRUE; - can_write_theme = g_settings_is_writable (screensaver_settings, - KEY_THEMES); - can_write_mode = g_settings_is_writable (screensaver_settings, - KEY_MODE); + can_write_theme = !xfconf_channel_is_property_locked (screensaver_channel, + KEY_THEMES); + can_write_mode = !xfconf_channel_is_property_locked (screensaver_channel, + KEY_MODE); *is_writable = can_write_theme && can_write_mode; } @@ -167,7 +160,7 @@ config_get_theme (gboolean *is_writable) else { gchar **strv; - strv = g_settings_get_strv (screensaver_settings, + strv = xfconf_channel_get_string_list (screensaver_channel, KEY_THEMES); if (strv != NULL) { name = g_strdup (strv[0]); @@ -232,7 +225,7 @@ config_set_theme (const char *theme_id) config_set_mode (mode); - g_settings_set_strv (screensaver_settings, + xfconf_channel_set_string_list (screensaver_channel, KEY_THEMES, (const gchar * const*) strv); @@ -247,11 +240,11 @@ config_get_enabled (gboolean *is_writable) if (is_writable) { - *is_writable = g_settings_is_writable (screensaver_settings, - KEY_LOCK); + *is_writable = !xfconf_channel_is_property_locked (screensaver_channel, + KEY_LOCK_ENABLED); } - enabled = g_settings_get_boolean (screensaver_settings, KEY_IDLE_ACTIVATION_ENABLED); + enabled = xfconf_channel_get_bool (screensaver_channel, KEY_IDLE_ACTIVATION_ENABLED, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED); return enabled; } @@ -259,7 +252,7 @@ config_get_enabled (gboolean *is_writable) static void config_set_enabled (gboolean enabled) { - g_settings_set_boolean (screensaver_settings, KEY_IDLE_ACTIVATION_ENABLED, enabled); + xfconf_channel_set_bool (screensaver_channel, KEY_IDLE_ACTIVATION_ENABLED, enabled); } static gboolean @@ -269,11 +262,11 @@ config_get_lock (gboolean *is_writable) if (is_writable) { - *is_writable = g_settings_is_writable (screensaver_settings, - KEY_LOCK); + *is_writable = !xfconf_channel_is_property_locked (screensaver_channel, + KEY_LOCK_ENABLED); } - lock = g_settings_get_boolean (screensaver_settings, KEY_LOCK); + lock = xfconf_channel_get_bool (screensaver_channel, KEY_LOCK_ENABLED, DEFAULT_KEY_LOCK_ENABLED); return lock; } @@ -281,7 +274,7 @@ config_get_lock (gboolean *is_writable) static void config_set_lock (gboolean lock) { - g_settings_set_boolean (screensaver_settings, KEY_LOCK, lock); + xfconf_channel_set_bool (screensaver_channel, KEY_LOCK_ENABLED, lock); } static void @@ -1123,38 +1116,31 @@ ui_set_delay (int delay) } static void -key_changed_cb (GSettings *settings, const gchar *key, gpointer data) +key_changed_cb (XfconfChannel *channel, const gchar *key, gpointer data) { if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0) { - gboolean enabled; - - enabled = g_settings_get_boolean (settings, key); - - ui_set_enabled (enabled); + gboolean enabled; + enabled = xfconf_channel_get_bool (channel, key, DEFAULT_KEY_IDLE_ACTIVATION_ENABLED); + ui_set_enabled (enabled); } - else if (strcmp (key, KEY_LOCK) == 0) + else if (strcmp (key, KEY_LOCK_ENABLED) == 0) { - gboolean enabled; - - enabled = g_settings_get_boolean (settings, key); - - ui_set_lock (enabled); + gboolean enabled; + enabled = xfconf_channel_get_bool (channel, key, DEFAULT_KEY_LOCK_ENABLED); + ui_set_lock (enabled); } else if (strcmp (key, KEY_THEMES) == 0) { - GtkWidget *treeview; - - treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview")); - setup_treeview_selection (treeview); + GtkWidget *treeview; + treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview")); + setup_treeview_selection (treeview); } else if (strcmp (key, KEY_IDLE_DELAY) == 0) { - int delay; - - delay = g_settings_get_int (settings, key); - ui_set_delay (delay); - + int delay; + delay = xfconf_channel_get_int (channel, key, DEFAULT_KEY_IDLE_DELAY); + ui_set_delay (delay); } else { @@ -1559,9 +1545,9 @@ init_capplet (void) gtk_widget_hide (gpm_button); } - screensaver_settings = g_settings_new (GSETTINGS_SCHEMA); - g_signal_connect (screensaver_settings, - "changed", + screensaver_channel = xfconf_channel_get(SETTINGS_XFCONF_CHANNEL); + g_signal_connect (screensaver_channel, + "property-changed", G_CALLBACK (key_changed_cb), NULL); @@ -1614,11 +1600,12 @@ init_capplet (void) gtk_widget_show_all (dialog); /* Update list of themes if using random screensaver */ - mode = g_settings_get_enum (screensaver_settings, KEY_MODE); + mode = xfconf_channel_get_int (screensaver_channel, KEY_MODE, DEFAULT_KEY_MODE); if (mode == GS_MODE_RANDOM) { gchar **list; list = get_all_theme_ids (theme_manager); - g_settings_set_strv (screensaver_settings, KEY_THEMES, (const gchar * const*) list); + g_warning("instance b"); + xfconf_channel_set_string_list (screensaver_channel, KEY_THEMES, (const gchar * const*) list); g_strfreev (list); } @@ -1653,13 +1640,14 @@ init_capplet (void) static void finalize_capplet (void) { - g_object_unref (screensaver_settings); + g_object_unref (screensaver_channel); } int main (int argc, char **argv) { + GError *error = NULL; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, XFCELOCALEDIR); @@ -1675,6 +1663,14 @@ main (int argc, if (xfce_titled_dialog_get_type() == 0) exit(1); + if (!xfconf_init(&error)) + { + g_error("Failed to connect to xfconf daemon: %s.", error->message); + g_error_free(error); + + return EXIT_FAILURE; + } + job = gs_job_new (); theme_manager = gs_theme_manager_new (); -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits