From 60c75e5fcfda19a66d4dcf8c5135b4c56fb7beba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 5 Jun 2019 03:31:16 +0000 Subject: [PATCH] classic: Add 'horizontal-workspaces' extension Vertical workspaces are another defining characteristics of GNOME 3, and thus rather un-classic. That switch was driven by the overall layout of the overview, and now that we disable the overview in GNOME Classic, we can just return to the traditional workspace layout as well. Add a small extension that does just that. https://gitlab.gnome.org/GNOME/gnome-shell-extensions/merge_requests/72 --- extensions/horizontal-workspaces/extension.js | 38 +++++++++++++++++++ extensions/horizontal-workspaces/meson.build | 5 +++ .../horizontal-workspaces/metadata.json.in | 10 +++++ .../horizontal-workspaces/stylesheet.css | 1 + meson.build | 1 + 5 files changed, 55 insertions(+) create mode 100644 extensions/horizontal-workspaces/extension.js create mode 100644 extensions/horizontal-workspaces/meson.build create mode 100644 extensions/horizontal-workspaces/metadata.json.in create mode 100644 extensions/horizontal-workspaces/stylesheet.css diff --git a/extensions/horizontal-workspaces/extension.js b/extensions/horizontal-workspaces/extension.js new file mode 100644 index 00000000..b5f04355 --- /dev/null +++ b/extensions/horizontal-workspaces/extension.js @@ -0,0 +1,38 @@ +/* exported init */ +const { Meta } = imports.gi; + +const { ThumbnailsBox } = imports.ui.workspaceThumbnail; + +class Extension { + constructor() { + this._origUpdateSwitcherVisibility = + ThumbnailsBox.prototype._updateSwitcherVisibility; + } + + enable() { + global.workspace_manager.override_workspace_layout( + Meta.DisplayCorner.TOPLEFT, + false, + 1, + -1); + + ThumbnailsBox.prototype._updateSwitcherVisibility = function() { + this.hide(); + }; + } + + disable() { + global.workspace_manager.override_workspace_layout( + Meta.DisplayCorner.TOPLEFT, + false, + -1, + 1); + + ThumbnailsBox.prototype._updateSwitcherVisibility = + this._origUpdateSwitcherVisibility; + } +} + +function init() { + return new Extension(); +} diff --git a/extensions/horizontal-workspaces/meson.build b/extensions/horizontal-workspaces/meson.build new file mode 100644 index 00000000..48504f63 --- /dev/null +++ b/extensions/horizontal-workspaces/meson.build @@ -0,0 +1,5 @@ +extension_data += configure_file( + input: metadata_name + '.in', + output: metadata_name, + configuration: metadata_conf +) diff --git a/extensions/horizontal-workspaces/metadata.json.in b/extensions/horizontal-workspaces/metadata.json.in new file mode 100644 index 00000000..f109e068 --- /dev/null +++ b/extensions/horizontal-workspaces/metadata.json.in @@ -0,0 +1,10 @@ +{ +"extension-id": "@extension_id@", +"uuid": "@uuid@", +"settings-schema": "@gschemaname@", +"gettext-domain": "@gettext_domain@", +"name": "Horizontal workspaces", +"description": "Use a horizontal workspace layout", +"shell-version": [ "@shell_current@" ], +"url": "@url@" +} diff --git a/extensions/horizontal-workspaces/stylesheet.css b/extensions/horizontal-workspaces/stylesheet.css new file mode 100644 index 00000000..25134b65 --- /dev/null +++ b/extensions/horizontal-workspaces/stylesheet.css @@ -0,0 +1 @@ +/* This extensions requires no special styling */ diff --git a/meson.build b/meson.build index 1756face..16a48cf3 100644 --- a/meson.build +++ b/meson.build @@ -33,6 +33,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com' classic_extensions = [ 'apps-menu', + 'horizontal-workspaces', 'places-menu', 'launch-new-instance', 'window-list'