In this post I will share a modicum of what I have learned to date about customizing the new GNOME 3 Shell. This is based on the GNOME Shell in Fedora 15 Alpha. The good news is that the GNOME Shell is highly configurable. The bad news is that some of this information may become out-of-date quite quickly as the GNOME Shell is still somewhat of a moving target even though it is supposedly close to release.
Here is what the GNOME Shell looks like in Fedora 15 Alpha with all updates applied as of March 23rd 2011:
By the way, that is a really beautiful wallpaper! I am glad that cooler heads prevailed and the Fedora Project has finally decided to go with its own custom wallpaper rather than use the default upstream GNOME Shell wallpaper.
Here is what the Applications Overview looks like:
Here is what a GNOME terminal window looks like:
This is the default theme which, by the way, is called Adwaita. This post will show you how to make the titlebar smaller so that it does not take up so much space on the screen, add back in the minimize and maximize buttons, color the title bars, and more.
GNOME 3 contains some major changes with respect to persistent application settings data. TheGConf CORBA-based configuration system is no longer used; it has been replaced by GSettings. GSettings is agnostic about its backend; dconf is merely one backend. Key names are restricted to lowercase characters, numbers and dashes (-). Names must begin with a character, must be 32 characters or less in length, must not end with a dash and must not contain consecutive dashes. GSettings stores its schemas in a binary format, unlike GConf which uses XML files. Fedora 14 was the first Fedora release to includeGSettings. See the glib-compile-schemas manpage for further information.
A new command line utility gsettings, which replaces gconftool-2, is provided to enable you to easily interface with GSettings.
$ gsettings Usage: gsettings COMMAND [ARGS...] Commands: help Show this information list-schemas List installed schemas list-relocatable-schemas List relocatable schemas list-keys List keys in a schema list-children List children of a schema list-recursively List keys and values, recursively range Queries the range of a key get Get the value of a key set Set the value of a key reset Reset the value of a key writable Check if a key is writable monitor Watch for changes Use 'gsettings help COMMAND' to get detailed help. $ gsettings list-schemas org.gnome.nautilus.desktop org.gnome.color-manager org.gnome.gedit.plugins.filebrowser.nautilus org.gnome.settings-daemon.peripherals.wacom org.gnome.Empathy.hints org.gnome.settings-daemon.peripherals.touchpad org.gnome.settings-daemon.plugins.keyboard org.gnome.Nautilus.Sendto org.gnome.FileRoller.Dialogs.BatchAdd org.freedesktop.Telepathy.Logger org.gnome.yelp .... .... org.gnome.gcalctool org.gnome.settings-daemon.peripherals.wacom.eraser org.gnome.FileRoller.General org.gnome.libgnomekbd.preview org.gnome.gnome-system-log org.gnome.libgnomekbd.keyboard org.webkitgtk-1.0 org.gnome.gedit.state org.gnome.system.proxy org.gnome.gnome-system-monitor.disktreenew org.gnome.eog.ui org.gnome.gnome-screenshot org.gnome.settings-daemon.plugins org.gnome.gedit.preferences.encodings org.gnome.Bluetooth.nst org.gnome.desktop.lockdown org.gnome.crypto.cache org.gnome.settings-daemon.peripherals.wacom.stylus org.gnome.DejaDup org.gnome.eog.plugins org.gnome.gnome-system-monitor.proctree org.gnome.eog.fullscreen org.gnome.settings-daemon.plugins.housekeeping org.gnome.FileRoller.Dialogs.Add org.gnome.desktop.thumbnailers org.gnome.Empathy.sounds org.gnome.desktop.a11y.keyboard $ gsettings list-schemas | grep shell org.gnome.shell org.gnome.shell.clock org.gnome.shell.recorder org.gnome.shell.calendar $ gsettings list-keys org.gnome.shell command-history development-tools disabled-extensions disabled-open-search-providers enable-app-monitoring favorite-apps looking-glass-history
As an example, here is how to enable the digital clock on the top panel to show the date and seconds:
$ gsettings list-keys org.gnome.shell.clock show-date show-seconds # note the failure if you are root! # gsettings set org.gnome.shell.clock show-date true ** GLib-GIO:ERROR:gdbusconnection.c:2279:initable_init: assertion failed: (connection->initialization_error == NULL) Aborted (core dumped) $ gsettings set org.gnome.shell.clock show-date true $ gsettings set org.gnome.shell.clock show-seconds true
Here is how to list all the settings for the GNOME Shell:
$ gsettings list-recursively org.gnome.shell org.gnome.shell command-history ['r', 'lg', '?', 'ff', 'lg', 'js', '?', 're', 'r', 'command-history', 'ch', 'lg', 'lgh', 'b', 'r', 'd', 'ff', 'r', 'GSettings', 'GSetting', 'r', 'version', 'ver', 'v'] org.gnome.shell development-tools true org.gnome.shell disabled-extensions @as [] org.gnome.shell disabled-open-search-providers @as [] org.gnome.shell enable-app-monitoring true org.gnome.shell favorite-apps ['gnome-terminal.desktop', 'mozilla-firefox.desktop', 'gnome-baobab.desktop', 'gimp.desktop', 'gnome-eog.desktop', 'gnome-screenshot.desktop'] org.gnome.shell looking-glass-history @as [] org.gnome.shell.calendar show-weekdate false org.gnome.shell.clock show-date true org.gnome.shell.clock show-seconds true org.gnome.shell.recorder file-extension 'webm' org.gnome.shell.recorder framerate 15 org.gnome.shell.recorder pipeline ''
While the gsettings utility enables you to modify certain properties of the GNOME Shell, it does not enable you to really customize the current theme. So do not throw awaygconftool-2 just yet! There are a whole range of settings that gsettings does not have access to. For instance you can add back the window minimize and maximize buttoms as follows:
gconftool-2 --set /desktop/gnome/shell/windows/buttom_layout --type string :minimize,maximize,close
You will have to log out and log back in for the change to take place. Alternatively you can use the Configuration Editor (gconf-editor) which, if installed, is available under Applications, System Tools.
Another method is to use dconf-editor which you may need to load on your system as it is not installed by default. However, be warned,dconf and dconf-editor both seem to be highly unstable as of the date of this post. Worse still, absolutely no documentation or manpages are currently provided fordconf or dconf-editor.
Alternatively, you can customize a small subset of the GNOME Shell using the new Tweak Tool (gnome-tweak-tool.)
Astute readers will notice that my version of gnome-tweak-tool is different than the default OOTB tool. That is because I edited/usr/share/gnome-tweak-tool/shell.ui and changed a few property settings such as:
1
2
|
<property name=
"title"
translatable=
"yes"
>GNOME Tweak Tool</property>
<property name=
"resizable"
>True</property>
|
This utility, like many others, does not show up in the Application Overview. You have to use the Searchbar to access it.
Incidently, Tweak Tool can be used to add minimize and maximize buttons to windows. See the above screenshot. Observe also the different theme and the dark colored titlebars. All will be revealed! Just keep reading.
As stated previously, the default GNOME Shell theme is Adwaita. You can modify this theme by editing/usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml. One of the more interesting sections of this configuration file is:
01
02
03
04
05
06
07
08
09
10
11
|
<
frame_geometry
name
=
"normal"
title_scale
=
"medium"
rounded_top_left
=
"4"
rounded_top_right
=
"4"
>
<
distance
name
=
"left_width"
value
=
"1"
/>
<
distance
name
=
|