GNOME Shell Frippery

The shell in GNOME 3 can be modified by writing extensions in JavaScript.
Here are some extensions I've written to provide a user experience
more akin to 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. 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, text and hot corner.
If you turn off both the icon and the text the menu is disabled.

Shut Down menu

Replace the Suspend/Power Off item in the status menu with Shut Down.
The dialog that this invokes includes all available shutdown options: suspend,
hibernate, restart and power off. Also works in classic mode.

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.

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 message tray button shows and hides the message tray.
If no messages are available the button is blank.

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

the number of workspaces and the number of rows;

enable/disable dynamic workspaces;

show/hide the message tray button;

whether or not the panel appears on each workspace (except the first:
the panel is always present on the first workspace).

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: in RHEL/CentOS 7, for example, the plugin is
packaged separately as gnome-shell-browser-plugin.

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 Tweak Tool (gnome-tweak-tool in the
Fedora repositories). 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 Tweak Tool 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.