diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in
index bacb6b1c8..e45274eb6 100644
--- a/data/org.gnome.shell.gschema.xml.in.in
+++ b/data/org.gnome.shell.gschema.xml.in.in
@@ -73,6 +73,14 @@ value here is from the GsmPresenceStatus enumeration.
menuitem in single-user, single-session situations.
+
+ false
+ <_summary>Always show the Universal Access status.
+ <_description>
+ This key overrides the automatic hiding of the Universal
+ Access status icon when no accessibility features are enabled.
+
+
false
<_summary>Whether to remember password for mounting encrypted or remote filesystems
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
index 479a15a70..b18af855b 100644
--- a/js/ui/status/accessibility.js
+++ b/js/ui/status/accessibility.js
@@ -26,6 +26,8 @@ const KEY_ICON_THEME = 'icon-theme';
const KEY_WM_THEME = 'theme';
const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
+const KEY_ALWAYS_SHOW_UNIVERSAL_ACCESS = 'always-show-universal-access';
+
const HIGH_CONTRAST_THEME = 'HighContrast';
const ATIndicator = new Lang.Class({
@@ -71,12 +73,18 @@ const ATIndicator = new Lang.Class({
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Universal Access Settings"), 'gnome-universal-access-panel.desktop');
+ global.settings.connect('changed::' + KEY_ALWAYS_SHOW_UNIVERSAL_ACCESS, Lang.bind (this, this._queueSyncMenuVisibility));
+
this._syncMenuVisibility();
},
_syncMenuVisibility: function() {
this._syncMenuVisibilityIdle = 0;
+ if (global.settings.get_boolean(KEY_ALWAYS_SHOW_UNIVERSAL_ACCESS)) {
+ this.actor.visible = true;
+ return false;
+ }
let items = this.menu._getMenuItems();
this.actor.visible = items.some(function(f) { return !!f.state; });