Customize your GNOME Shell UX to suit your workflow, whether you like horizontally or vertically stacked workspaces. V-Shell lets you experiment with different Overview and App Grid layouts, add new window and workspace management features and fixes multiple GNOME Shell issues and bugs. V-Shell Features: - Workspace Orientation: Switch between vertical and horizontal workspace layouts. - Customizable Overview: Adjust layout, dimensions, and content of the Activities overview. - Alternative Overview Modes: Static workspace previews reduce unnecessary screen movement. - Predefined Profiles: Five customizable profiles with different layouts and behaviors, easily replaceable with your own settings. - Wallpaper Effects: Adjustable blur and brightness effects for the background in the overview. - Dash Customization: Workspace isolation, control icon size, content, click, and scroll behavior. - App Grid Adjustments: Modify dimensions, icon size, contents, and behavior of the app grid. - Folder Preview: Display active icons in the app folder preview. - Workspace Thumbnail Actions: Close workspace (all its windows) directly from its thumbnail. - Panel Customization: Change the main panel's position and visibility. - Hot Corner/Edge Behavior: Configure positions and actions for hot corners and edges. - Notification Positioning: Adjust the placement of notifications, OSD, and workspace switcher popups. - Window Attention Handling: Customize behavior for window attention requests. - App Search Provider: Enhanced search with custom icon size options. - Static Background in Switcher: Retain a static background during workspace switching outside the overview. - Multi-Monitor Support: Independent workspace switching for each monitor (workaround). - Gesture Workspace Switching: Show workspace switcher popup when switching workspaces with a gesture. - Bug Fixes: Works around several known upstream bugs for a smoother experience. - Modular Structure: Disable unnecessary modules or those that conflict with other extensions. V-Shell includes many workarounds to survive conflicts and work with Dash to Dock / Ubuntu Dock and other popular extensions, but issues may occur. If you encounter any problem, first check for conflicts with other extensions and then open an issue on the Github page linked below. Any feedback is greatly appreciated!
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-C49-002 error
extensions targeting GNOME 49 must not use removed Clutter action classes
This extension explicitly targets GNOME Shell 49 but still uses removed `Clutter.ClickAction` or `Clutter.TapAction`.
Clutter.ClickAction() and Clutter.TapAction()
lib/appDisplay.js:1457
new Clutter.ClickAction()
lib/panel.js:207
new Clutter.ClickAction()
lib/windowPreview.js:189
new Clutter.ClickAction()
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
lib/search.js:347
St.Clipboard.get_default()
EGO-L-001 warning
extension must not create GObject instances or modify shell before enable()
Resource creation or signal/source setup was found outside `enable()`.
Only use initialization for static resources
extension.js:68
Me.gSettings = this.getSettings()
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:304
Me.run.extensionUpdateId = opt.connect('changed', this._updateSettings.bind(this))
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
extension.js:323
Me.run.timeouts.unlock = GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE,
() => {
Me.Modules.panelModule.update();
Me.Modules.overviewControlsModule.update();
Me.Modules.messageTr
extension.js:296
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => {
Main.overview._overview.controls._workspaceAdjustment.set_value(global.workspace_manager.get_active_workspace_index());
})
extension.js:385
GLib.idle_add(GLib.PRIORITY_LOW, () => {
win.move_to_monitor(currentMonitor);
return GLib.SOURCE_REMOVE;
})
| Version | Status |
|---|---|
| 50.0 (109) | Unreviewed |
| 49.13 (108) | Active |
| 49.12 (107) | Active |
| 49.11 (106) | Active |
| 49.10 (105) | Inactive |
| 49.9 (104) | Inactive |
| 49.9 (103) | Inactive |
| 49.9 (102) | Inactive |
| 49.8 (101) | Inactive |
| 49.7 (100) | Inactive |
| 49.6.1 (99) | Active |
| 49.6 (98) | Inactive |
| 49.6 (97) | Inactive |
| 49.5 (96) | Inactive |
| 49.4 (95) | Inactive |
| 49.3 (94) | Inactive |
| 49.2 (93) | Inactive |
| 49.0 (92) | Active |
| 48.9 (91) | Active |
| 48.8 (90) | Inactive |
| 48.7 (89) | Inactive |
| 48.6 (88) | Inactive |
| 48.6 (87) | Rejected |
| 48.5 (86) | Inactive |
| 48.5 (85) | Inactive |
| 48.4 (84) | Inactive |
| 48.4 (83) | Inactive |
| 48.3 (82) | Inactive |
| 48.3 (81) | Inactive |
| 48.2 (80) | Inactive |
| 48.1 (79) | Inactive |
| 44.14 (78) | Active |
| 48.0 (77) | Inactive |
| 47.5 (76) | Active |
| 47.4 (75) | Inactive |
| 47.3 (74) | Inactive |
| 47.2 (73) | Inactive |
| 47.2 (72) | Rejected |
| 47.1 (71) | Inactive |
| 47.0 (70) | Inactive |
| 47.0 (69) | Rejected |
| 46.4 (68) | Inactive |
| 46.4 (67) | Inactive |
| 46.4 (66) | Rejected |
| 46.3.1 (65) | Inactive |
| 46.3 (64) | Inactive |
| 44.13 (63) | Inactive |
| 46.2 (62) | Inactive |
| 44.12 (61) | Inactive |
| 46.1 (60) | Inactive |
| 44.12 (59) | Rejected |
| 46.1 (58) | Rejected |
| 46.0.1 (57) | Inactive |
| 46.0 (56) | Inactive |
| 46.0 (55) | Rejected |
| 46.0 (54) | Rejected |
| 44.11 (53) | Inactive |
| 45.3 (52) | Inactive |
| 45.3 (51) | Inactive |
| 44.11 (50) | Inactive |
| 44.11 (49) | Inactive |
| 45.3 (48) | Inactive |
| 45.3 (47) | Rejected |
| 45.3 (46) | Rejected |
| 45.3 (45) | Inactive |
| 44.11 (44) | Inactive |
| 45.2 (43) | Inactive |
| 44.10 (42) | Inactive |
| 45.1 (41) | Inactive |
| 45.1 (40) | Inactive |
| 45.1 (39) | Inactive |
| 45.1 (38) | Rejected |
| 37 | Active |
| 36 | Inactive |
| 35 | Inactive |
| 34 | Rejected |
| 33 | Rejected |
| 32 | Rejected |
| 31 | Rejected |
| 30 | Inactive |
| 29 | Inactive |
| 28 | Inactive |
| 27 | Inactive |
| 26 | Inactive |
| 25 | Inactive |
| 24 | Rejected |
| 23 | Active |
| 22 | Inactive |
| 21 | Inactive |
| 20 | Rejected |
| 19 | Rejected |
| 18 | Inactive |
| 17 | Inactive |
| 16 | Inactive |
| 15 | Inactive |
| 14 | Inactive |
| 13 | Inactive |
| 12 | Inactive |
| 11 | Inactive |
| 10 | Inactive |
| 9 | Inactive |
| 8 | Inactive |
| 7 | Inactive |
| 6 | Inactive |
| 5 | Inactive |
| 4 | Inactive |
| 3 | Inactive |
| 2 | Inactive |
| 1 | Rejected |