Gnome extension with a tiling function

Strictly Structured

Article from Issue 244/2021

The Gnome extension Material Shell organizes the windows on your desktop, giving you many options for smoothly switching between different applications and views.

Ever since Xerox Alto, the first workstation with a graphical user interface, was introduced in 1973, computer users have been pushing windowed applications across the screen with a click of the mouse [1]. At that time, the motion was still very jerky when moving open applications. Today, organizing applications on the desktop is hardly likely to faze the computer's graphics card.

Especially on systems with small monitors, however, freely floating windows have disadvantages: For example, the control elements for reducing, enlarging, or closing windows require valuable space on the screen. The now common screen format with resolutions in the 16:9 ratio intensifies the problem compared to the previously common 4:3 format. There is a massive amount of space available horizontally, but every pixel counts in the vertical direction.

Many users therefore prefer a tiling window manager (like i3 or herbstluftwm) that organizes the windows in a static grid on the screen. If windows cannot be moved freely, you don't need a window bar. In addition, there is often no need to use the mouse – the windows can be arranged on the screen using keyboard shortcuts.

However, only a few distributions like Regolith [2] contain such a window manager in their standard configurations, and the window managers retroactively installed on other distros often need much adjustment. For this reason, tiling window managers are still not as widely used as you might expect despite their suitability for everyday use. If you are tempted to switch to a tiling window manager but are worried about the installation overhead it involves, you may want to take a look at Material Shell [3]. It is not a standalone window manager, but integrates directly into Gnome Shell as an extension that can easily be turned on or off.

Unlike other Gnome extensions, Material Shell does not simply add a new menu or a few new icons to the desktop; the extension completely restructures the Gnome desktop. For this article, we tested how Material Shell performs on Gnome 3.38.1 based on a current Arch Linux system and on Ubuntu 20.10 (also with Gnome 3.38).


To install, you need the help of the Gnome Shell Extensions [4] website. All you have to do is open the project site in the browser, flip the switch from off to on, and then allow the installation. For this to work, you may need to enable Gnome Shell integration in the web browser you are using. Suitable add-ons are available for Google Chrome and other Chromium-based browsers [5] and also for Mozilla's open source browser, Firefox [6].

After importing the extension, the function can be (de)activated as required using the Extensions app or Optimizations (in the Extensions tab). Using the button in the applications window bar, you can completely disable and enable support for extensions (Figure 1). This option to disable the extensions is especially important when an upgrade from one Gnome version to the next is imminent (see the "Upgrades" box).

Figure 1: In the Extensions app introduced with Gnome 3.36, Gnome finally offers a simple interface for managing add-ons.


Gnome extensions are known to break when upgrading from one version of Gnome to another. In the best case, the extension will simply stop working; in the worst, Gnome will refuse to start after login. Especially with rolling release distributions, like Arch Linux or Manjaro, you therefore need to be sure to disable all Gnome extensions before installing version updates.

This situation is also an issue for the Gnome developers. With the desktop APIs changing with every release, Gnome extensions programmers have to revise their work and adapt it to the new features in a Gnome release. In the future, however, the Gnome desktop's main developers will be looking to work more closely with the community. The Gnome Extensions Rebooted initiative promises a number of improvements [7].

Always Organized

By enabling Material Shell, the desktop rebuilds itself completely. Instead of only one panel at the top of the desktop, the shell now shows two panels, top and left at the edge of the screen.

The left bar serves as a system panel, and at the bottom of the bar you will find the notification area with menus for network access, or shutting down and restarting the computer. At the top of the bar you will find icons for different workspaces. Material Shell allows you to create multiple workspaces, or virtual desktops, and this is where you will create and switch between them.

You can create additional workspaces by pressing the plus button in this left-hand panel. The shell automatically adapts the icon of the new desktop to the applications loaded there. This means that you can distinguish between a desktop for the browser, one for image editing, and another for the development environment without having to search for them. For example, if you launch Gimp or an image viewer, Material Shell automatically sets a painting palette as an icon. If necessary, you can change the icon by right-clicking on the entry in the panel.

The Hybrid option shows the icon of the application (if there is only one application); the Applications preview option shows the icons of the programs currently active on the desktop. Optionally, you can select an application category (Figure 2).

Figure 2: Material Shell automatically assigns the individual workspaces icons that reflect the active programs.

The other panel is called the workspace panel, and it is found at the top of the screen. This is where you will find the applications currently loaded in the active workspace as well as a layout switcher on the far right that switches between the various views.

You need to pay special attention to this switch. If you have launched several applications, you can click on the icon to switch between the various views, such as Maximize (current application maximized), Split (two applications side by side as shown in Figure 3), Half (one application completely in the left half, the others stacked on top of each other on the right) and Grid (all applications fitted to a dynamic grid). In Float mode, all windows float freely on the desktop as usual (Figure 4).

Figure 3: In Split mode, Material Shell always displays two applications side by side.
Figure 4: Float mode allows application windows to be freely positioned on the screen in the usual way.

In Split mode, Material Shell only ever draws two applications on the screen at any given time. If you are using additional applications, you can use the workspace panel to switch to the windows behind it. If you want to change the order, simply drag the corresponding window to the left or right. This can be done via the window itself or via the tab in the workspace panel. Alternatively use the keyboard shortcuts Super+Shift+A (current window to the left) and Super+Shift+D (to the right). The same is true for reordering in the other modes (Figure 5).

Figure 5: To reorganize the windows as shown here in Half mode, simply drag the program to the desired location.

Good Memory

Many users always start a day at the office with the same ritual, for example: Turn on the computer, get a coffee while the computer is booting, log back into the system, launch all the applications needed, and arrange them on the desktop. Although Material Shell does not make coffee, it does save you from having to start and organize your applications.

When logging out of the desktop environment, Material Shell remembers the last active applications and their arrangement on the screen. After logging in, the system starts up with the last known layout and shows placeholders for the programs last loaded there (Figure 6). By clicking on the individual icons, you can then launch the linked applications. If the programs come with a session manager, the latest version is automatically loaded.

Figure 6: Material Shell remembers the programs that were active at logout time, and their arrangement. When you restart, one click is all it takes to load these applications.

You can customize Material Shell's behavior in the extensions settings (Figure 7). Open the dialog by clicking on the gearwheel icon in Extensions or Optimizations. For example, you can enable a bright theme, change the color for the highlights in the panels, or set individual keyboard shortcuts for switching between windows or workspaces. In the Layouts tab, you can also selectively disable modes that you use only rarely or not at all or enable those that are not yet active in the default configuration.

Figure 7: Material Shell's behavior can be extensively customized in the settings. Layouts that you don't want to use can simply be disabled.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More