From 317d2c0c2a1096ba0cd24766eff623c4e042c1db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Fri, 22 Sep 2017 23:35:58 +0200 Subject: [PATCH] Basic scratch toggle Stack ordering isn't preserved properly. Use e to toggle for now. --- extension.js | 2 ++ scratch.js | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 scratch.js diff --git a/extension.js b/extension.js index ba7d957..d8e6ae6 100644 --- a/extension.js +++ b/extension.js @@ -1,6 +1,7 @@ const Extension = imports.misc.extensionUtils.getCurrentExtension(); const convenience = Extension.imports.convenience; const Tiling = Extension.imports.tiling; +const Scratch = Extension.imports.scratch; const utils = Extension.utils; const Gio = imports.gi.Gio; const Meta = imports.gi.Meta; @@ -84,6 +85,7 @@ function enable() { // Must use `Meta.keybindings_set_custom_handler` to re-assign handler? set_action_handler("move-left", dynamic_function_ref("move_left")); set_action_handler("move-right", dynamic_function_ref("move_right")); + set_action_handler("toggle-scratch-layer", dynamic_function_ref("toggleScratch")); } function disable() { diff --git a/scratch.js b/scratch.js new file mode 100644 index 0000000..08dfa6f --- /dev/null +++ b/scratch.js @@ -0,0 +1,25 @@ +const Meta = imports.gi.Meta; + +toggleScratch = function() { + let workspace = global.screen.get_active_workspace() + let windows = global.display.get_tab_list(Meta.TabList.NORMAL, workspace) + .filter(function(meta_window) { + return meta_window.is_on_all_workspaces(); + }); + + let isSomeShown = windows.reduce(function(shown, meta_window) { + return shown || !meta_window.minimized; + }, false) + + if (isSomeShown) { + windows.map(function(meta_window) { + meta_window.minimize(); + }) + } else { + windows.map(function(meta_window) { + meta_window.unminimize(); + meta_window.make_above(); + }) + windows[0].activate(global.get_current_time()) + } +}