diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in index a12e7807f..816a1bc4e 100644 --- a/data/org.gnome.shell.gschema.xml.in.in +++ b/data/org.gnome.shell.gschema.xml.in.in @@ -186,6 +186,19 @@ value here is from the GsmPresenceStatus enumeration. + + + false + Limit switcher to current workspace. + + If true, only applications that have windows on the current workspace are shown in the switcher. + Otherwise, all applications are included. + + + + diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 34d83e4cf..9d47d1e5f 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -436,8 +436,11 @@ const AppSwitcher = new Lang.Class({ this._arrows = []; let windowTracker = Shell.WindowTracker.get_default(); + let settings = new Gio.Settings({ schema: 'org.gnome.shell.app-switcher' }); + let workspace = settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() + : null; let allWindows = global.display.get_tab_list(Meta.TabList.NORMAL, - global.screen, null); + global.screen, workspace); // Construct the AppIcons, add to the popup for (let i = 0; i < apps.length; i++) { @@ -447,7 +450,9 @@ const AppSwitcher = new Lang.Class({ appIcon.cachedWindows = allWindows.filter(function(w) { return windowTracker.get_window_app (w) == appIcon.app; }); - this._addIcon(appIcon); + if (workspace == null || appIcon.cachedWindows.length > 0) { + this._addIcon(appIcon); + } } this._curApp = -1;