GNOME Shell Frippery

The shell in GNOME can be modified by writing extensions in JavaScript. Here are some extensions to provide a user experience more like that of GNOME 2.

Move the clock

Move the clock from the centre of the panel towards the right. This isn't a very significant change, but it was the first extension I wrote.

Favourites in panel

Place a launcher for each favourite application in the panel. It isn't possible to manage the list from the panel: instead you can add, remove or move favourite applications in the dash and the panel display will update to match. Right clicking on the icons invokes a menu that lets you perform various operations on the application.

The preferences dialog allows additional (non-favourite) applications to be displayed as a separate set of launchers. The launchers must be specified by adding the names of the corresponding desktop files to a list. The two sets of launchers can be configured independently. The default behaviour is to display only the favourites to the left of the panel.

Also works in classic mode.

Applications menu in panel

Replace the Activities button in the panel with an Applications menu. The menu is implemented using facilities supplied by the shell so it doesn't behave exactly like a normal menu. Right clicking on the Applications menu button invokes a dialog to let you turn off the icon and text in the button. If you turn off both the icon and the text the menu is disabled. (Older versions of this extension also allowed you to disable the hot corner: this can now be done using GNOME Tweaks.)

In OpenSuse it may be necessary to install libgnome-menu-3-0 and typelib-1_0-GMenu-3_0. In Ubuntu you may need to install gir1.2-gmenu-3.0.

This extension doesn't work in classic mode.

Bottom panel

Add a bottom panel, including a window list and workspace switcher.

Items in the window list have a right-click menu which allows each window to be minimised, maximised, moved to a different workspace or closed. They can be rearranged by dragging them.

Workspaces are arranged in a horizontal row, so the keybindings to change workspace have been altered to ctrl-alt-left/right. Workspaces can also be arranged in multiple rows. In this case ctrl-alt-up/down switch between rows and a row indicator appears to the left of the workspace switcher. Clicking on the row indicator changes row. The mouse scroll wheel can be used in the row indicator or workspace switcher to change workspace.

The bottom panel can be configured by right clicking on the workspace switcher. Settings available are:

This extension doesn't work in classic mode.

Screenshot of GNOME Shell with Frippery extensions

The extensions are available for:

They are licensed under the GPL version 2 or later. To see what's changed from previous releases check the change log for GNOME 46, GNOME 45, GNOME 3.32, GNOME 3.28.

To install them unpack the tar file in your home directory: the extensions will be placed in ~/.local/share/gnome-shell/extensions. The extensions can be made available to all users by placing them in /usr/share/gnome-shell/extensions.

Another way to get Frippery is through the GNOME Shell Extensions web site. This lets you install extensions via your web browser. You may need to install a browser plugin: see the web site for instructions.

Since GNOME Shell 3.36.3 the extension system doesn't reload cached extensions on update. If an extension misbehaves after an update you either need to log out or restart the Shell for the change to take effect.

Since GNOME Shell 40 the extension system randomly disables all extensions after an update. Use the slider at the top of the Extensions app to re-enable them.

RPMs are available for Fedora, RHEL and compatible derviatives:

RHEL 7.9 RHEL 8.9 Fedora 39 Fedora 40
RPM gnome-shell-frippery-3.28.5-1 gnome-shell-frippery-3.32.4-1 gnome-shell-frippery-45.1-1 gnome-shell-frippery-46.1-1
Source RPM gnome-shell-frippery-3.28.5-1 gnome-shell-frippery-3.32.4-1 gnome-shell-frippery-45.1-1 gnome-shell-frippery-46.1-1

All current RPMs are signed with this key; earlier ones may have been signed with this key. Since Fedora 34 the extensions are also available as separate RPMs from the standard Fedora repository: do dnf search frippery to find them.

GNOME Shell 40+ doesn't work very well with the Frippery extensions. Until the GNOME developers get their act together you might like to try my custom Shell instead.

The Frippery extensions are intended to be used together to provide a GNOME 2-like experience. However, if you'd like to control which are enabled the best option is GNOME Tweaks (gnome-tweaks in the Fedora repositories) or, since GNOME 40, GNOME Extensions (gnome-extensions-app in Fedora). Alternatively you can use the brute-force method and just delete any you don't want. After installation you'll need to restart the shell to make the extensions take effect: enter 'r' in the Alt+F2 dialog or log out and in again. You can use GNOME Tweaks/Extensions to enable and disable individual extensions without needing to restart.

The extensions hook into the very core of the GNOME shell. It's almost inevitable that future changes to the shell will break them (though I'll make every effort to unbreak them).

During development and testing I have only the Frippery extensions installed. There will be conflicts between extensions and it's impossible to test all combinations. I do try to resolve conflicts that are brought to my attention but all I can guarantee is that the Frippery extensions are compatible with one another.

Ron Yorston
8th May 2011 (updated 26th May 2024)