diff --git a/js/ui/main.js b/js/ui/main.js index b957f0b17..af535e314 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -101,6 +101,27 @@ function start() { for (let i = 0; i < children.length; i++) children[i].destroy(); + // metacity-clutter currently uses the same prefs as plain metacity, + // which probably means we'll be starting out with multiple workspaces; + // remove any unused ones + let windows = global.get_windows(); + let maxWorkspace = 0; + for (let i = 0; i < windows.length; i++) { + let win = windows[i]; + + if (!win.get_meta_window().is_on_all_workspaces() && + win.get_workspace() > maxWorkspace) { + maxWorkspace = win.get_workspace(); + } + } + let screen = global.screen; + if (screen.n_workspaces > maxWorkspace) { + for (let w = screen.n_workspaces - 1; w > maxWorkspace; w--) { + let workspace = screen.get_workspace_by_index(w); + screen.remove_workspace(workspace, 0); + } + } + global.connect('panel-run-dialog', function(panel) { // Make sure not more than one run dialog is shown. if (!runDialog) {