Gentoo Logo

GNOME 3.2 Upgrade Guide

Content:

1.  Changes

General changes

Please see the GNOME 3.2 Release Notes and 3.0 Release Notes for what is new in this major release of GNOME.

Briefly: GNOME 3.2 includes two desktop modes—standard and fallback. Fallback mode uses gnome-base/gnome-panel and x11-wm/metacity, and is similar in appearance and behavior to GNOME 2. Standard mode uses gnome-base/gnome-shell and x11-wm/mutter, and looks and behaves completely differently from previous GNOME releases. By default, the choice of desktop mode is determined by the system's graphics hardware and drivers (standard mode requires modern 3D graphics capabilities).

There is a quick tour of standard mode's GNOME Shell available on the GNOME website. For an in-depth guide to using GNOME Shell, see the GNOME Shell cheat sheet. GNOME Shell at first may feel alien and limited to an experienced GNOME 2 user. We strongly encourage users to persist and make themselves use it for a few days; those who take the time to get used to GNOME Shell's behavior usually grow to love it and don't want to go back to a GNOME 2-like desktop environment.

Languages and encodings

GNOME 3.2 obtains user language settings from sys-apps/accountsservice. The language can be set in GNOME from the My Account entry in the upper right corner menu. Alternatively, you can directly edit AccountsService user files. For example, to have user jrandom use British English, you can (as root) edit /var/lib/AccountsService/users/jrandom so it reads the following:

Code Listing 1.1: Simple example of an AccountsService user file

[User]
Language=en_GB.utf8

Fonts

GNOME 3.2 uses media-fonts/cantarell as its default font. Unfortunately, Cantarell currently only includes a subset of the extended Latin alphabet. Users of languages whose writing systems are not yet covered by Cantarell will probably want to switch to another font, such as media-fonts/dejavu. This can be done using gnome-tweak-tool (Fonts tab), or from the terminal:

Code Listing 1.2: Set DejaVu (size 10) as the default font

$ gsettings set org.gnome.desktop.interface font-name 'DejaVu Sans 10'
$ gsettings set org.gnome.desktop.interface document-font-name 'DejaVu Sans 10'
$ gconftool-2 -s -t string /apps/metacity/general/titlebar_font 'DejaVu Sans Bold 10'

Applets

GNOME 2 applets cannot be used in GNOME 3.2. Fallback mode allows applets, although some have not yet been ported to the new, gtk3-based APIs. In standard mode, there are no applets at all. Some traditional applet functionality can be replicated using third-party GNOME Shell extensions.

In order to manage fallback gnome-panel settings (either add/remove or rearrange applet positions) one has to hold down the Alt key when clicking on the panel. This opens relevant menu for changing either panel or applet settings.

Shut down and reboot

GNOME Shell developers made a controversial decision to not show any sort of shut down or power off menu by default. The Power Off menu item becomes visible after clicking on the upper right corner menu and holding down the Alt key.

If you need an easily discoverable GUI for shutting down the machine (for example, if deploying GNOME 3.2 in a corporate environment where users are required to turn off their computers at the end of the day), you can install the alternative-status-menu extension. To do so, emerge gnome-extra/gnome-shell-extensions and run

Code Listing 1.3: Enabling the alternative-status-menu extension

 
# eselect gnome-shell-extensions enable 'alternative-status-menu@gnome-shell-extensions.gnome.org'

to enable the extension for all users by default, or use gnome-tweak-tool (Shell Extensions tab) to enable it on a per-user basis.

Suspend on laptop lid close

GNOME 3 will, by default, suspend a laptop when the lid is closed. If you do not like this behavior, you can change it via the gnome-tweak-tool GUI (Shell tab), or using gsettings from the terminal:

Code Listing 1.4: Only turn off the screen when laptop lid is closed on AC power

 
$ gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action blank

One of the most common reasons for not wanting to suspend on laptop lid close is to carry a laptop to another room without losing the network connection. To do so, you can install gnome-extra/office-runner, which allows temporarily inhibiting GNOME's suspend-on-lid-close behavior for up to 10 minutes.

Icons on the desktop

In GNOME 3.2, Nautilus by default no longer manages the desktop, and the ~/Desktop folder is simply treated as a normal folder with files.

If you want to have Nautilus manage the desktop like in GNOME 2, you can change the corresponding setting in the gnome-tweak-tool GUI (Desktop tab), or use the gsettings command from the terminal:

Code Listing 1.5: Making Nautilus manage the desktop

 
$ gsettings set org.gnome.desktop.background show-desktop-icons true

Compiz

GNOME 3.2 standard mode (i.e. GNOME Shell) is incompatible with Compiz.

PulseAudio

GNOME 3.2 requires media-sound/pulseaudio for audio support. Ensure that you have the pulseaudio USE flag enabled globally (it will be enabled by default if you use the desktop/gnome portage profile). For troubleshooting PulseAudio problems, see documentation on pulseaudio.org.

Touchpad and other input device customization

In GNOME 3, if you have "disable touchpad while typing" selected, the touchpad will be disabled for 2 seconds after a keyboard key is pressed. In GNOME 2, this interval was 500 milliseconds. If you like to disable the touchpad while typing, but prefer the shorter timeout interval like in GNOME 2, you can emerge gnome-base/gnome-settings-daemon with the short-touchpad-timeout USE flag enabled.

GNOME 3 allows setting a custom command for advanced customization of input device settings. For example, suppose that you want to configure your touchpad to enable two-finger scrolling (both vertical and horizontal) and edge scrolling (vertical only). You could do

Code Listing 1.6: Setting a new GNOME input device hotplug script

 
$ cp /usr/share/gnome-settings-daemon-3.0/input-device-example.sh ~/input-device.sh
$ chmod +x ~/input-device.sh
$ gsettings set org.gnome.settings-daemon.peripherals.input-devices hotplug-command ~/input-device.sh

and edit input-device.sh so it ends as follows:

Code Listing 1.7:

# If the device is a touchpad ...
if [[ -z "${device#*TouchPad*}" ]]; then
	# ... enable two-finger scrolling (vertical and horizontal) ...
	xinput set-prop "${device}" "Synaptics Two-Finger Scrolling" 1 1
	# ... and edge scrolling (vertical only, no horizontal, no coasting) ...
	xinput set-prop "${device}" "Synaptics Edge Scrolling" 1 0 0
fi
# All further processing will be disabled if $retval == 0
exit $retval

Note: If the custom hotplug command does not terminate with exit value 0, gnome-settings-daemon will set its own settings on the input device, likely clobbering the settings that the hotplug command had changed.

If, for whatever reason, you want to completely prevent GNOME 3 from automatically modifying your mouse and touchpad settings (note that this will also prevent custom input hotplug commands, such as input-device.sh above, from modifying mice and touchpads!), you can run the following:

Code Listing 1.8: Prevent GNOME from managing the mouse and touchpad

$ gsettings set org.gnome.settings-daemon.plugins.mouse active false

General configurability and extensions

GNOME 3.2 is designed to appear significantly less configurable than GNOME 2. For example, by default there is no easily discoverable GUI for changing the Gtk+ theme. Many configuration settings are hidden, but can still be changed using the gnome-extra/gnome-tweak-tool GUI, or from gsettings (can be explored using dconf-editor, part of gnome-base/dconf) or gconf (can be explored using gnome-extra/gconf-editor). Discussion of most of these hidden settings is outside the scope of this guide.

GNOME Shell's behavior can be significantly altered using extensions. Gentoo packages the extensions from the official GNOME repository as gnome-extra/gnome-shell-extensions. GNOME Shell comes with a browser plugin that allows users to install extensions from the https://extensions.gnome.org/ web interface; there are also numerous developers publishing extensions on various third-party websites.

Gentoo uses eselect gnome-shell-extensions to manage system defaults that control whether extensions that were installed systemwide (i.e. in /usr/share/gnome-shell/extensions) should be enabled. Newly-installed systemwide extensions start out disabled by default.

Code Listing 1.9: Enabling alternative status menu and dock extensions by default for all users

# eselect gnome-shell-extensions enable \
  alternative-status-menu@gnome-shell-extensions.gnome.org dock@gnome-shell-extensions.gnome.org

Defaults managed by eselect gnome-shell-extensions can be overridden on a per-user basis using the extensions.gnome.org web interface, via gnome-tweak-tool (Shell Extensions tab), or from the command line using gsettings. For example, to load the alternative status menu and dock extensions, and disabling all other extensions, a user can run

Code Listing 1.10: Enabling alternative status menu and dock extensions (and disabling all others!) for the current user

$ gsettings set org.gnome.shell enabled-extensions \
  '["alternative-status-menu@gnome-shell-extensions.gnome.org", "dock@gnome-shell-extensions.gnome.org"]'

Note: Instead of enabled-extensions, GNOME 3.0 used the disabled-extensions gsettings key. In GNOME 3.2, this key no longer has any effect.

Important: Extension code quality is highly variable. Some extensions contain memory leaks and others can render GNOME completely unusable. Gentoo cannot offer support for problems caused by third-party extensions.

2.  Video card compatibility

AMD / ATI

GNOME Shell shows graphical corruption under some versions of x11-drivers/ati-drivers (i.e. FGLRX binary drivers); many of the 11.x versions are known to be affected. As a workaround, you can force GNOME to start in fallback mode (see Troubleshooting section below), or alternatively, switch to open-source drivers.

If using open-source AMD / ATI drivers, media-libs/mesa should be built with the gallium USE flag enabled, and gallium architecture should be enabled via eselect mesa. Otherwise, GNOME Shell (and GDM, if it was built with the gnome-shell USE flag) may crash during use or simply fail to start, forcing GNOME to run in fallback mode.

Intel

If using Intel graphics, media-libs/mesa should be built with the classic USE flag enabled, and classic architecture should be enabled via eselect mesa. Otherwise, GNOME will likely only run in fallback mode.

NVIDIA

Users must be in the video group to use GNOME 3 with x11-drivers/nvidia-drivers. If they are not, GNOME Shell will simply crash at startup.

Under some versions of x11-drivers/nvidia-drivers, GNOME Shell system tray shows graphical corruption (all icons are rendered identically). This problem is fixed in driver versions 280.13 and newer.

All versions of x11-drivers/nvidia-drivers are incompatible with GNOME's color management support. This is because GNOME's color management code relies on XRandR, and NVIDIA's support for XRandR is currently incomplete. There is no workaround at this time.

As reported in bug #375615, for some people, certain versions of x11-drivers/nvidia-drivers (275.28, 280.13, and 285.03 are known to be affected) cause some Gtk+ applications to hang when terminating. One effect of this is to make GDM freeze after the password has been entered; similarly, GNOME will freeze when logging out. The affected versions of nvidia-drivers have been masked. To prevent this problem, make sure to use an unmasked driver version, for example 275.09.07 or 285.05.09.

Multi-monitor configurations

As reported in bug #392013, GNOME Shell will refuse to start under "Zaphod mode" dualhead configurations (i.e. the configurations where multiple Device sections are used in xorg.conf). If you are using such a dualhead configuration, you will only be able to use fallback mode.

Old ATI cards (X850, M28 and older, and also some X1550 cards) and old Intel cards (945 series and older) cannot run GNOME Shell on typical multi-monitor setups. This is because these old graphics cards support a maximum GL texture size of 2048×2048 or less, and GNOME Shell needs the full X display (from all monitors combined) to fit in one GL texture.

3.  Troubleshooting

GDM shows an "Oh no! Something has gone wrong" screen

This may be caused by a GNOME Shell crash. To help determine the cause, look in the /var/log/gdm/:0-greeter.log log file. As a workaround, you may try rebuilding gnome-base/gdm with the gnome-shell USE flag disabled.

GDM freezes after the password has been entered

This is caused by a bug in x11-drivers/nvidia-drivers. See Video card compatibility section above.

GNOME starts in fallback mode

GNOME will start in fallback mode if it detects that the graphics hardware and drivers are insufficiently capable. To see a more detailed explanation of why GNOME does not start in standard mode, run /usr/libexec/gnome-session-check-accelerated-helper:

Code Listing 3.1: Sample gnome-session-check-accelerated-helper output

$ /usr/libexec/gnome-session-check-accelerated-helper
gnome-session-is-accelerated: No hardware 3D support.

GNOME starts in standard mode

To force GNOME to start in fallback mode (e.g. due to poor performance or personal taste), open System Settings (or gnome-control-center from the terminal), go to System Info → Graphics, and turn on Forced Fallback Mode. Alternatively, from a terminal:

Code Listing 3.2: Force GNOME to start in fallback mode

$ gsettings set org.gnome.desktop.session session-name gnome-fallback

Epiphany and Adobe Flash

Out of the box, Epiphany 3 cannot load www-plugins/adobe-flash because the browser links to Gtk+-3 while the plugin links to Gtk+-2. On amd64, there is a workaround: if you emerge adobe-flash with USE=-64bit, the plugin will be called through www-plugins/nspluginwrapper, avoiding incompatibility between Gtk+ versions. On x86, unfortunately there is no good workaround at this time; we suggest using a gtk2-based browser (such as www-clients/firefox or www-clients/chromium).

4.  Dependency information about upgrading to GNOME 3.2

PyGObject

In some cases, portage's dependency resolver has trouble figuring out how to upgrade dev-python/pygobject. You can perform the upgrade manually with the following command:

Code Listing 4.1: Manually upgrade PyGObject

# emerge -1av pygobject:3 pygobject:2

GNOME 2-only applets

Some GNOME 2 applets and related libraries, such as gnome-extra/deskbar-applet and dev-cpp/libpanelappletmm, are incompatible with GNOME 3 and will block the upgrade. You will need to uninstall them before upgrading to GNOME 3.

New GNOME meta ebuilds

With GNOME 3, the meta ebuilds have been split into many ebuilds, and now have various USE-flags to control features. There are three main meta ebuilds: gnome-base/gnome, gnome-base/gnome-fallback, and gnome-base/gnome-light. There are other meta ebuilds pulled in by these, but users should generally not use them directly.

gnome-base/gnome is the recommended way to install GNOME 3. See the package metadata.xml for descriptions of the available USE-flags.

gnome-base/gnome-fallback is the ebuild that installs only the fallback mode. This ebuild should be used by people who know that their hardware cannot run GNOME Shell, and do not want to install it.

gnome-base/gnome-light is the ebuild that installs the bare minimum libraries and applications required to run GNOME 3. You can toggle USE-flags to choose whether to install GNOME Shell, GNOME Fallback, or both. This is not the recommended way to install GNOME 3, and is merely provided for the convenience of users.



Print

Page updated January 14, 2012

Summary: This is a guide for upgrading from GNOME 2.32.x to GNOME 3.2.x

Alexandre Rostovtsev
Author

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.