diff --git a/configure.ac b/configure.ac
index 1304baae9..d15b88a19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,10 +36,6 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
PKG_PROG_PKG_CONFIG([0.22])
-# GConf stuff
-AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
-AM_GCONF_SOURCE_2
-
GLIB_GSETTINGS
# Get a value to substitute into gnome-shell.in
diff --git a/data/Makefile.am b/data/Makefile.am
index eaec30bef..287b99d70 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -60,23 +60,14 @@ gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid)
all-local: gschemas.compiled
-# GConf schemas: provide defaults for keys from Metacity we are overriding
-gconfschemadir = @GCONF_SCHEMA_FILE_DIR@
-gconfschema_DATA = gnome-shell.schemas
-
shadersdir = $(pkgdatadir)/shaders
shaders_DATA = \
shaders/dim-window.glsl
-install-data-local:
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(gconfschema_DATA)
-
-
EXTRA_DIST = \
gnome-shell.desktop.in.in \
$(menu_DATA) \
- $(gconfschema_DATA) \
$(shaders_DATA) \
org.gnome.shell.gschema.xml.in
diff --git a/data/gnome-shell.schemas b/data/gnome-shell.schemas
deleted file mode 100644
index f2e69eefd..000000000
--- a/data/gnome-shell.schemas
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
- /schemas/desktop/gnome/shell/windows/attach_modal_dialogs
- /desktop/gnome/shell/windows/attach_modal_dialogs
- gnome-shell
- bool
- true
-
- Attach modal dialog to the parent window
-
- This key overrides /apps/mutter/general/attach_modal_dialogs when
- running GNOME Shell.
-
-
-
-
-
- /schemas/desktop/gnome/shell/windows/button_layout
- /desktop/gnome/shell/windows/button_layout
- gnome-shell
- string
- :close
-
- Arrangement of buttons on the titlebar
-
- Arrangement of buttons on the titlebar. The
- value should be a string, such as
- "menu:minimize,maximize,spacer,close"; the colon separates the
- left corner of the window from the right corner, and
- the button names are comma-separated. Duplicate buttons
- are not allowed. Unknown button names are silently ignored
- so that buttons can be added in future gnome-shell versions
- without breaking older versions.
- A special spacer tag can be used to insert some space between
- two adjacent buttons.
-
- This key overrides /apps/metacity/general/button_layout when
- running GNOME Shell.
-
-
-
-
-
- /schemas/desktop/gnome/shell/windows/edge_tiling
- /desktop/gnome/shell/windows/edge_tiling
- gnome-shell
- bool
- true
-
- enable edge tiling when dropping windows on screen edges
-
- If enabled, dropping windows on vertical screen edges maximizes them
- vertically and resizes them horizontally to cover half of the
- available area. Dropping windows on the top screen edge maximizes them
- completely.
-
- This key overrides /apps/metacity/general/edge_tiling when
- running GNOME Shell.
-
-
-
-
-
- /schemas/desktop/gnome/shell/windows/theme
- /desktop/gnome/shell/windows/theme
- gnome-shell
- string
- Adwaita
-
- Current theme
-
- The theme determines the appearance of window borders,
- titlebar, and so forth.
-
- This key overrides /apps/metacity/general/theme when
- running GNOME Shell.
-
-
-
-
-
- /schemas/desktop/gnome/shell/windows/workspaces_only_on_primary
- /desktop/gnome/shell/windows/workspaces_only_on_primary
- gnome-shell
- bool
- true
-
- Workspaces only on primary monitor
-
- This key overrides /apps/mutter/general/workspaces_only_on_primary when
- running GNOME Shell.
-
-
-
-
-
-
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index ea822eebf..a6438f02d 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -142,4 +142,40 @@
+
+
+
+ true
+ Attach modal dialog to the parent window
+
+ This key overrides the key in org.gnome.mutter when running
+ GNOME Shell.
+
+
+
+
+ ":close"
+ Arrangement of buttons on the titlebar
+
+ This key overrides the key in org.gnome.desktop.wm.preferences when
+ running GNOME Shell.
+
+
+
+
+ true
+ Enable edge tiling when dropping windows on screen edges
+
+ This key overrides the key in org.gnome.mutter when running GNOME Shell.
+
+
+
+
+ true
+ Workspaces only on primary monitor
+
+ This key overrides the key in org.gnome.mutter when running GNOME Shell.
+
+
+
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index 20bad20d0..5aaa8d492 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -199,7 +199,7 @@ AltTabPopup.prototype = {
this.actor.get_allocation_box();
// Make the initial selection
- if (binding == 'switch_group') {
+ if (binding == 'switch-group') {
if (backward) {
this._select(0, this._appIcons[0].cachedWindows.length - 1);
} else {
@@ -208,9 +208,9 @@ AltTabPopup.prototype = {
else
this._select(0, 0);
}
- } else if (binding == 'switch_group_backward') {
+ } else if (binding == 'switch-group-backward') {
this._select(0, this._appIcons[0].cachedWindows.length - 1);
- } else if (binding == 'switch_windows_backward') {
+ } else if (binding == 'switch-windows-backward') {
this._select(this._appIcons.length - 1);
} else if (this._appIcons.length == 1) {
this._select(0);
diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js
index aa7322062..495b987ee 100644
--- a/js/ui/lookingGlass.js
+++ b/js/ui/lookingGlass.js
@@ -2,7 +2,6 @@
const Clutter = imports.gi.Clutter;
const Cogl = imports.gi.Cogl;
-const GConf = imports.gi.GConf;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
diff --git a/js/ui/main.js b/js/ui/main.js
index 6bd5f59dc..6849292e0 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
-const GConf = imports.gi.GConf;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@@ -135,13 +134,13 @@ function _initUserSession() {
let shellwm = global.window_manager;
- shellwm.takeover_keybinding('panel_run_dialog');
- shellwm.connect('keybinding::panel_run_dialog', function () {
+ shellwm.takeover_keybinding('panel-run-dialog');
+ shellwm.connect('keybinding::panel-run-dialog', function () {
getRunDialog().open();
});
- shellwm.takeover_keybinding('panel_main_menu');
- shellwm.connect('keybinding::panel_main_menu', function () {
+ shellwm.takeover_keybinding('panel-main-menu');
+ shellwm.connect('keybinding::panel-main-menu', function () {
overview.toggle();
});
@@ -577,16 +576,6 @@ function _globalKeyPressHandler(actor, event) {
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
let action = global.display.get_keybinding_action(keyCode, modifierState);
- // The screenshot action should always be available (even if a
- // modal dialog is present)
- if (action == Meta.KeyBindingAction.COMMAND_SCREENSHOT) {
- let gconf = GConf.Client.get_default();
- let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot');
- if (command != null && command != '')
- Util.spawnCommandLine(command);
- return true;
- }
-
// Other bindings are only available to the user session when the overview is up and
// no modal dialog is present.
if (global.session_type == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
index 15fe8c9c7..0c6ef7c4f 100644
--- a/js/ui/status/accessibility.js
+++ b/js/ui/status/accessibility.js
@@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const GConf = imports.gi.GConf;
+const DBus = imports.dbus;
+const GDesktopEnums = imports.gi.GDesktopEnums;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
@@ -29,8 +30,8 @@ const DPI_FACTOR_LARGE = 1.25;
const DPI_FACTOR_LARGER = 1.5;
const DPI_FACTOR_LARGEST = 2.0;
-const KEY_META_DIR = '/apps/metacity/general';
-const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell';
+const WM_SCHEMA = 'org.gnome.desktop.wm.preferences';
+const KEY_VISUAL_BELL_TYPE = 'visual-bell-type';
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
const KEY_GTK_THEME = 'gtk-theme';
@@ -49,10 +50,6 @@ ATIndicator.prototype = {
_init: function() {
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-accessibility', null);
- let client = GConf.Client.get_default();
- client.add_dir(KEY_META_DIR, GConf.ClientPreloadType.PRELOAD_ONELEVEL, null);
- client.notify_add(KEY_META_DIR, Lang.bind(this, this._keyChanged), null, null);
-
let highContrast = this._buildHCItem();
this.menu.addMenuItem(highContrast);
@@ -71,7 +68,7 @@ ATIndicator.prototype = {
'screen-keyboard-enabled');
this.menu.addMenuItem(screenKeyboard);
- let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
+ let visualBell = this._buildVisualBellItem();
this.menu.addMenuItem(visualBell);
let stickyKeys = this._buildItem(_("Sticky Keys"), A11Y_SCHEMA, KEY_STICKY_KEYS_ENABLED);
@@ -101,22 +98,6 @@ ATIndicator.prototype = {
return widget;
},
- _buildItemGConf: function(string, client, key) {
- function on_get() {
- return client.get_bool(key);
- }
- let widget = this._buildItemExtended(string,
- client.get_bool(key),
- client.key_is_writable(key),
- function(enabled) {
- client.set_bool(key, enabled);
- });
- this.connect('gconf-changed', function() {
- widget.setToggleState(client.get_bool(key));
- });
- return widget;
- },
-
_buildItem: function(string, schema, key) {
let settings = new Gio.Settings({ schema: schema });
let widget = this._buildItemExtended(string,
@@ -131,6 +112,27 @@ ATIndicator.prototype = {
return widget;
},
+ _buildVisualBellItem: function() {
+ let settings = new Gio.Settings({ schema: WM_SCHEMA });
+ let currentValue = settings.get_enum(KEY_VISUAL_BELL_TYPE);
+ let visualBellItem = this._buildItemExtended(
+ _("Visual Alerts"),
+ currentValue != GDesktopEnums.VisualBellType.NONE,
+ settings.is_writable(KEY_VISUAL_BELL_TYPE),
+ function(enabled) {
+ if (enabled)
+ settings.set_enum(KEY_VISUAL_BELL_TYPE,
+ GDesktopEnums.VisualBellType.FULLSCREEN_FLASH);
+ else
+ settings.reset(KEY_VISUAL_BELL_TYPE);
+ });
+ settings.connect('changed::' + KEY_VISUAL_BELL_TYPE, function() {
+ let value = settings.get_enum(KEY_VISUAL_BELL_TYPE);
+ visualBellItem.setToggleState(value != GDesktopEnums.VisualBellType.NONE);
+ });
+ return visualBellItem;
+ },
+
_buildHCItem: function() {
let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
let gtkTheme = settings.get_string(KEY_GTK_THEME);
@@ -190,10 +192,6 @@ ATIndicator.prototype = {
widget.setToggleState(active);
});
return widget;
- },
-
- _keyChanged: function() {
- this.emit('gconf-changed');
}
};
Signals.addSignalMethods(ATIndicator.prototype);
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index d827b22bb..b9b4181df 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -121,15 +121,15 @@ WindowManager.prototype = {
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
this._workspaceSwitcherPopup = null;
- this.setKeybindingHandler('switch_to_workspace_left', Lang.bind(this, this._showWorkspaceSwitcher));
- this.setKeybindingHandler('switch_to_workspace_right', Lang.bind(this, this._showWorkspaceSwitcher));
- this.setKeybindingHandler('switch_to_workspace_up', Lang.bind(this, this._showWorkspaceSwitcher));
- this.setKeybindingHandler('switch_to_workspace_down', Lang.bind(this, this._showWorkspaceSwitcher));
- this.setKeybindingHandler('switch_windows', Lang.bind(this, this._startAppSwitcher));
- this.setKeybindingHandler('switch_group', Lang.bind(this, this._startAppSwitcher));
- this.setKeybindingHandler('switch_windows_backward', Lang.bind(this, this._startAppSwitcher));
- this.setKeybindingHandler('switch_group_backward', Lang.bind(this, this._startAppSwitcher));
- this.setKeybindingHandler('switch_panels', Lang.bind(this, this._startA11ySwitcher));
+ this.setKeybindingHandler('switch-to-workspace-left', Lang.bind(this, this._showWorkspaceSwitcher));
+ this.setKeybindingHandler('switch-to-workspace-right', Lang.bind(this, this._showWorkspaceSwitcher));
+ this.setKeybindingHandler('switch-to-workspace-up', Lang.bind(this, this._showWorkspaceSwitcher));
+ this.setKeybindingHandler('switch-to-workspace-down', Lang.bind(this, this._showWorkspaceSwitcher));
+ this.setKeybindingHandler('switch-windows', Lang.bind(this, this._startAppSwitcher));
+ this.setKeybindingHandler('switch-group', Lang.bind(this, this._startAppSwitcher));
+ this.setKeybindingHandler('switch-windows-backward', Lang.bind(this, this._startAppSwitcher));
+ this.setKeybindingHandler('switch-group-backward', Lang.bind(this, this._startAppSwitcher));
+ this.setKeybindingHandler('switch-panels', Lang.bind(this, this._startA11ySwitcher));
Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
@@ -556,15 +556,15 @@ WindowManager.prototype = {
if (this._workspaceSwitcherPopup == null)
this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
- if (binding == 'switch_to_workspace_up')
+ if (binding == 'switch-to-workspace-up')
this.actionMoveWorkspaceUp();
- else if (binding == 'switch_to_workspace_down')
+ else if (binding == 'switch-to-workspace-down')
this.actionMoveWorkspaceDown();
// left/right would effectively act as synonyms for up/down if we enabled them;
// but that could be considered confusing.
- // else if (binding == 'switch_to_workspace_left')
+ // else if (binding == 'switch-to-workspace-left')
// this.actionMoveWorkspaceLeft();
- // else if (binding == 'switch_to_workspace_right')
+ // else if (binding == 'switch-to-workspace-right')
// this.actionMoveWorkspaceRight();
},
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index cf22acdcb..97b0893a7 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
-const GConf = imports.gi.GConf;
+const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@@ -28,7 +28,8 @@ const CLOSE_BUTTON_FADE_TIME = 0.1;
const DRAGGING_WINDOW_OPACITY = 100;
-const BUTTON_LAYOUT_KEY = '/desktop/gnome/shell/windows/button_layout';
+const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
+const BUTTON_LAYOUT_KEY = 'button-layout';
// Define a layout scheme for small window counts. For larger
// counts we fall back to an algorithm. We need more schemes here
@@ -527,8 +528,8 @@ WindowOverlay.prototype = {
let button = this.closeButton;
let title = this.title;
- let gconf = GConf.Client.get_default();
- let layout = gconf.get_string(BUTTON_LAYOUT_KEY);
+ let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
+ let layout = settings.get_string(BUTTON_LAYOUT_KEY);
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
let split = layout.split(":");
diff --git a/src/main.c b/src/main.c
index 6cc66f83d..81cdce94a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -33,6 +33,8 @@ extern GType gnome_shell_plugin_get_type (void);
#define SHELL_DBUS_SERVICE "org.gnome.Shell"
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
+#define OVERRIDES_SCHEMA "org.gnome.shell.overrides"
+
static gboolean is_gdm_mode = FALSE;
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
@@ -309,16 +311,14 @@ shell_fonts_init (void)
static void
shell_prefs_init (void)
{
- meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs",
- "/desktop/gnome/shell/windows/attach_modal_dialogs");
- meta_prefs_override_preference_location ("/apps/mutter/general/workspaces_only_on_primary",
- "/desktop/gnome/shell/windows/workspaces_only_on_primary");
- meta_prefs_override_preference_location ("/apps/metacity/general/button_layout",
- "/desktop/gnome/shell/windows/button_layout");
- meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling",
- "/desktop/gnome/shell/windows/edge_tiling");
- meta_prefs_override_preference_location ("/apps/metacity/general/theme",
- "/desktop/gnome/shell/windows/theme");
+ meta_prefs_override_preference_schema ("attach-modal-dialogs",
+ OVERRIDES_SCHEMA);
+ meta_prefs_override_preference_schema ("workspaces-only-on-primary",
+ OVERRIDES_SCHEMA);
+ meta_prefs_override_preference_schema ("button-layout",
+ OVERRIDES_SCHEMA);
+ meta_prefs_override_preference_schema ("edge-tiling",
+ OVERRIDES_SCHEMA);
}
/* This is an IBus workaround. The flow of events with IBus is that every time