Translate

Archives

GNOME 3 Shell in Fedora 15

The Fedora 15 Alpha release includes a pre-release version of the long-awaited GNOME 3 Shell. After 8 years of use, the GNOME 2 desktop looks jaded and is technically difficult to maintain and work with under the hood. Visually and interactively it no longer competes with other desktops or devices for the hearts and minds of users.

The GNOME 3 Shell has a modern visually attractive and easy to use user interface (UI) that is more akin to that of an IPad or a smart mobile phone. It provides the key interface functions like switching windows, listing and launching applications, and is completely different from the GNOME 2 desktop. It is based on the premise that using simple gestures instead of clicking a menu option is a more effective UI paradigm. Thus it takes advantage of the capabilities of modern graphics hardware to utilize 3D effects. Animation and visual effects are intended to show the user the correlation between their action and the result of their action. As a result, you need to forget pretty much everything you know about the GNOME desktop and start afresh. A totally new user experience awaits you.

I switched to using the GNOME 3 Shell some months ago when early builds became stable enough to use in my day to day work. I am basically happy with the new shell but feel some of the design features need revisiting to improve the user experience.

The Alpha release of Fedora 15 (codename Lovelock) contains an alpha release of the GNOME 3 Shell. The first time you update your installation using yum or packagekit, your system is updated to a beta version of the GNOME 3 Shell. To date, most of the presentations on the Internet discuss the alpha version of the GNOME 3 Shell and not the beta version. If you see large plus (+) and minus (-) signs near the workspace manager on the right hand side of a screenshot, this indicates an alpha version of the GNOME 3 Shell. The GNOME 3 Shell is scheduled to GA in April 2011.

The GNOME 3 Shell uses the Mutter window manager to provide its animation effects. Mutter is an abbreviation for the Metacity and Clutter technologies. Mutter was originally developed for Meego (formerly Moblin.) By the way, if you look under the hood, you will find that quite a bit of Moblin technology has ended up in the GNOME 3 Shell.

You need hardware acceleration to use the GNOME 3 Shell as it uses a number of 3D capabilities. Most systems less than 3 years old should work out of the box. If hardware acceleration is unavailable, the GNOME 3 Shell defaults back to the old GNOME Panel. See Vincent Untz’s excellent and detailed post for further information on the fallback mode. If you use Compiz, it will no longer work with the GNOME 3 Shell. In addition, the GNOME 3 Shell contains a significant amount of JavaScript code and can be styled using CSS. Adwaita (meaning one and only in Sanskrit) is the default theme for GNOME 3; see usr/share/themes/Adwaita. The default font is Cantarell which is a contemporary sans serif humanist opensource font created by David Crossland. The GTK engine is Clearlooks; see /usr/share/gtk-engines/clearlooks.xml. Clearlooks was based on Red Hat’s Bluecurve theme.

Who are the key design people behind the GNOME Shell? The design has been lead from the start by William Jon McCann, a long-standing GNOME member and a Red Hat employee. In 2010 Jakub Steiner became the second member of the design team and that is when development went into high gear. If interested, you can read more about the GNOME 3 desktop design history. Incidentally, McCann deserves a lot of praise for shepherding the design through a long and sometimes contentious design and development cycle.

One of the guiding principles behind the new shell was to put the focus on the current task at hand and minimize any possible distractions for the user. To align with this principle, the GNOME Shell user interface was designed with two modes of operation – one to focus on the current task or activity and one to manage activities and workflow. The top bar is intended to reflect the current state of the user’s desktop, i.e. current active application. current date/time, current system status (status icons) and current user status (user menu), and also to enable the user to adjust the system to meet their requirements for the current task at hand.

Now for a quick tour of the beta GNOME 3 Shell in Fedora 15. When you log in, this is what you see:

GNOME3 shell screenshot 8

This background (wallpaper), the default upstream wavy GNOME 3 Shell background, is what is going to be displayed in the Fedora 15 release unless people seriously object to it.

The rationale for the break with tradition whereby a different background is used in each release of Fedora, was pushed by Owen Taylor of Red Hat but it boils down to trying to establish a consistent image in people’s minds about what the GNOME 3 Shell looks like. Naturally, it was the first thing I changed as it does nothing for me. I suspect most people will also quickly change to another background.

Another thing to note is that the GNOME 3 does not save your desktop when you log off and restore it when you log back in. Another interesting design decision!

The top panel contains a number of hotspots and widgets. For example, there is a brand new and much improved date and calendar widget, developed by David Zeuthen and written in JavaScript.

GNOME3 shell screenshot 9

Incidently, I like the dark theme. Very easy on the eyes!

If you click your name, another menu is presented which allows you to change system settings, lock your screen, change user, log out and more.

GNOME3 shell screenshot 12

Unlike previous Fedora releases, you do not see any menu option to shutdown your system. Instead, you have to press the ALT key. Then the Suspend menu option changes to Power Off. A nice cool feature!

If you move your mouse to the top left hand corner of your screen (the Activities hotspot), the GNOME 3 Shell displays the Activities window. Alternatively you can access the hotspot using the Super_L key which on extended PC keyboards is the Windows key. A more intuitive and very visually appealing way is to simply flick your mouse in the direction of the top left corner of your screen. Try it. I think you will be pleasantly surprised by the smooth visual effects.

GNOME3 shell screenshot 15

You can press the ESCAPE at any time to exit the Activities window.

Here is what you see if you select the Applications overview option from within the Activities window.

GNOME3 shell screenshot 6

You can search for applications and documents via the searchbar on the top right hand side of this window. Application and document searching is similar to Spotlight on an Apple Mac. Just type in the first few characters of the application or document that you are looking for as shown below:

GNOME3 shell screenshot 7

As you type in more characters the number of applications and documents displayed will decrease until hopefully the required application or document is located. You can then click the appropriate icon to launch the application or view/edit the document.

If no results are available, you can use the default Google and Wikipedia (search provider) buttons that appear at the bottom of the screen to quickly perform Internet searches for whatever you are searching for. These buttons use the OpenSearch v1.1 specification to access Google and Wikipedia.

If you want to add more search providers, here is an example of how to do so. Suppose you want to be able to also search the Superuser Q&A website, add the following file to the /usr/share/gnome-shell/search_providers subdirectory. Name it superuser.xml.

 <?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>Super User</ShortName>
<LongName>Search the Super User website</LongName>
<Description>Search the Super User website</Description>
<Developer>Finnbarr P. Murphy</Developer>
<Attribution>Copyright 2011, Finnbarr P. Murphy.  No license.</Attribution>
<Syndication>open</Syndication>
<AdultContent>false</AdultContent>
<Language>en-US</Language>
<InputEncoding>UTF-8</InputEncoding>
<OutputEncoding>UTF-8</OutputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABN0lEQVQ4jZ2SsUsDMRSHv1eL4oml
WClO4igOnUQcKoJ/gnYUnPofuDiKQkFcXFyki4iKNLsOdhPq3qFzJ0EaCsUWSy/P4Q4t9ZA7f5Dh
JeHLl5dAkAtAv8fs/BUAN+0XjP2k1nnG2B0ikpqoH4ADUlNVAIaDY+AEkQLwhLH7UZBxg8PI1Vpn
E2N9ap13jM38ZRCdUq6BahuRRWA1OQAAHaIKMJ0EEDS1fJ5GAZFfG+IZDHoZUBcaJOqBAILzu/R7
j6FBBWPXMTYV3+D21CFyhOolUED1lb0FFx8A4GXWENkNvKQR9wo/EamgugScobqVHAArYQ/uKOXc
fwCErzAan0oGiPgH6Yl6Gxgyl23y0a1TbZXI5vOoesAyqg6RURSgD3SBIlDE+ddAnRmvDGyEJ78h
cg+0xgFf0u1mjKC2xEYAAAAASUVORK5CYII=
</Image>
<Url type="text/html" method="GET" template="http://superuser.com/search?q={searchTerms}"/>
</OpenSearchDescription>


Here you can see that I am using the searchbar to search for unit. Notice the new Super User button at the bottom of the screen.

GNOME3 shell screenshot 16

Here is what you will see in your browser if you press that button:

GNOME3 shell screenshot 17

Notice that the SuperUser website has automatically retrieved all relevant entries containing the term unit. Support for the OpenSearch specification in the GNOME 3 Shell is a very nice bonus!

You can also customize the UI using CSS. For example, I prefer smaller application icons in the Activities window as shown below.

GNOME3 shell screenshot 10

To change the size of the application icons, all you need to do is edit /usr/share/gnome-shell/theme/gnome-shell.css as shown by the following diff output:

$ diff gnome-shell.css gnome-shell.css.org
360,361c360,361
<     height: 34px;    
<     width: 24px;            
---
>     height: 34px;
>     width: 34px;
542,543c542,543
<     spacing: 18px;    
<     -shell-grid-item-size: 59px;
---
>     spacing: 36px;
>     -shell-grid-item-size: 118px;
547c547
<     icon-size: 48px; 
---
>     icon-size: 96px;
551,552c551,552
<     padding: 8px 12px 8px 8px;
<     spacing: 10px;
---
>     padding: 16px 25px 16px 16px;
>     spacing: 20px;
556,557c556,557
<     padding-right: 8px;
<     padding-left: 12px;
---
>     padding-right: 16px;
>     padding-left: 25px;
1180c1180
<     font-size: 8px;         
---
>     font-size: 12px;


For the changes to take effect you must restart the GNOME 3 Shell. You can do this using the Alt- F2 key combination which displays a small command-launcher window. Enter r followed by RETURN here. This will cause the GNOME 3 Shell to be restarted.

To switch running applications, you need to click on the appropriate window, open the Activities window and select the appropriate thumbnail, or use the Alt-Tab key combination which brings up a thumbnail browser that you can tab through sequentially. In this mode a label is displayed under each window containing either the current directory or the name of the application.

GNOME3 shell screenshot 2

Window controls in the GNOME 3 shell consist of a single button on the top right hand side of the titlebar that closes the window. There are no maximize or minimize buttons; such functionality is now only available using the right-click menu. See Owen Tylor‘s email and Allan Day‘s post on this subject to understand the reasoning behind removing these two buttons.

I disagree with removing the minimize button as it is something I use all the time to keep a tidy desktop. On the other hand I do not care whether there is a maximize button or not as I rarely use it. I am quite happy with the ability to just drag the window to the top of the screen to maximize it.

GNOME3 shell screenshot 1

Workspaces have moved from a default of 4 horizontal infrequently used optional workspaces in GNOME 2 to core functionality in the GNOME 3 Shell. The concept of auto workspaces was inspired by Moblin zones. The default number of workspaces is 1. Workspaces are now vertical instead of horizontal to mimic vertically scrolling documents. The workspace sidebar which is on the right of the desktop is hidden by default. Workspace thumbnails slide out on cursor proximity and or when a drag is initiated on a window or a launcher.

GNOME3 shell screenshot 3

The most annoying feature of the GNOME 3 Shell as far as I am concerned is that a user has to select the New Window option to open a new instance of any item on the dash (favorites sidebar).

GNOME3 shell screenshot 14

Currently, if you double click an icon on the dash you are simply taken to the existing application if an instance of it is running, otherwise an instance of the application is launched. The dash does not have a scrollbar. Instead the size of the icons on the dash changes depending on the number of items. According to Jacub Steiner the dash scales “because it’s better to progressively discourage to have too many favorites in there, rather than providing a mean to hide/scroll.”

One of the more interesting things about the GNOME 3 Shell is that it is written in JavaScript and is highly customizable using CSS. All the relevant files are under /usr/share/gnome-shell.

$ cd /usr/share/gnome-shell/
$ ls -R *
js:
misc  perf  ui

js/misc:
config.js  docInfo.js  fileUtils.js  format.js  gnomeSession.js  history.js  params.js  util.js

js/perf:
core.js

js/ui:
altTab.js        docDisplay.js        main.js                       runDialog.js             viewSelector.js
appDisplay.js    endSessionDialog.js  messageTray.js                scripting.js             windowAttentionHandler.js
appFavorites.js  environment.js       modalDialog.js                searchDisplay.js         windowManager.js
boxpointer.js    extensionSystem.js   notificationDaemon.js         search.js                workspace.js
calendar.js      iconGrid.js          overview.js                   shellDBus.js             workspacesView.js
chrome.js        lightbox.js          panel.js                      status                   workspaceSwitcherPopup.js
ctrlAltTab.js    link.js              panelMenu.js                  statusIconDispatcher.js  workspaceThumbnail.js
dash.js          lookingGlass.js      placeDisplay.js               statusMenu.js            xdndHandler.js
dateMenu.js      magnifierDBus.js     polkitAuthenticationAgent.js  telepathyClient.js
dnd.js           magnifier.js         popupMenu.js                  tweener.js

js/ui/status:
accessibility.js  bluetooth.js  keyboard.js  power.js  volume.js

search_providers:
google.xml  wikipedia.xml

shaders:
dim-window.glsl

theme:
calendar-arrow-left.svg   gnome-shell.css.org                scroll-button-down-hover.png  single-view.svg
calendar-arrow-right.svg  mosaic-view-active.svg             scroll-button-down.png        toggle-off-intl.svg
calendar-today.svg        mosaic-view.svg                    scroll-button-up-hover.png    toggle-off-us.svg
close.svg                 move-window-on-new.svg             scroll-button-up.png          toggle-on-intl.svg
close-window.svg          panel-border.svg                   scroll-hhandle.svg            toggle-on-us.svg
corner-ripple.png         panel-button-border.svg            scroll-vhandle.svg            ws-switch-arrow-down.svg
dash-placeholder.svg      panel-button-highlight-narrow.svg  section-more-open.svg         ws-switch-arrow-up.svg
filter-selected-ltr.svg   panel-button-highlight-wide.svg    section-more.svg
filter-selected-rtl.svg   process-working.svg                separator-white.png
gnome-shell.css           running-indicator.svg              single-view-active.svg
$ 


The GNOME 3 Shell comes with a built-in debugger, inspector and JavaScript console called Looking Glass. You can access this debugger via the Alt-F2 key combination followed by lg when asked to enter a command.

GNOME3 shell screenshot 20

Computer accessibility (a11y) was a major theme in the design of GNOME Shell 3 – not bolted on as an afterthought. A full top panel menu is devoted to the Universal Access UI. This menu provides a full range of accessibility options ranging from a magnifying glass (see next screenshot) to a screen keyboard to a high contract screen.

GNOME3 shell screenshot 22

Here is an example of the screen when Zoom (the magnifier) is enabled.

GNOME3 shell screenshot 23

Interestingly, the ability to collect performance data and statistics is built into the GNOME 3 Shell via an event log. When event logging is enabled, all sorts of different types of events are logged. Logging does not significantly affect performance. A statistic is some measurement about the current state of a particular item such as memory. Registered statistics are polled at intervals and written to the event log as a special event type. Statistics collection can also be triggered manually. See here and here for more information.

So what else is happening under the hood for GNOME 3 on Fedora 15? Of interest to me is the plan to remove all HAL interaction with the GNOME desktop. According to the Fedora Project team:

HAL is a behemoth, do-it-all, daemon to access hardware. It is now obsoleted by udisks (né DeviceKit-disks) and upower (né DeviceKit-power), as well as libudev for device discovery.

Frankly I do not know how they can justify that statement. HAL is and was much better, and did a lot more, than udisks and upower do and was far simpler to use.

User notifications is another area which was reworked in the GNOME 3 Shell. Now the bottom of the screen is used exclusively for messages. The message tray now supports persistent notifications as well as transient notifications such as feedback on user actions. A new persistent notification is first shown as a pop-out for a certain time period. After that the notification is still available in the message tray and is only removed when the user interacts with it or switches to the application that sent it. The new behavior means that notifications are less disruptive because a user is no longer forced to react to a notification before it times out.

An extension mechanism for the GNOME 3 Shell, similar to that in the Firefox browser, is under active development. This will enable developers to easily add additional or enhanced functionality to the Shell. Extensions would be coded in JavaScript and styled with CSS. An example of additional functionality is system resource monitoring or hardware enumeration. A formal API has not yet been published but some coding guidelines have been provided.

So what is wrong with the Fedora Project’s current implementation of the GNOME 3 Shell? Some of the things that users of Fedora have come to expect on their desktop are missing. Examples include no minimize buttons, no classical file manager, and none of the standard preference tools that users have become used to. Significantly there is no mechanism for adding widgets (applets) to the top menu bar and no way to change the placement of the menu bar or the notifications area.

Will things get better in subsequent releases? If Fedora Project developers are willing to listen to their user base, most of what users expect to be present on their UI should appear in the GNOME 3 Shell over time. As the actual Fedora 15 release date draws nearer, I suspect that the voices of real users will vocally protest some of the poorer ideas present in the current iteration of the GNOME 3 Shell. For example why is Instant Messaging combined with Account information, System Preferences and Logout in a menu that is under my name?

Not all GNU/Linux distributions are as enthusiastic in embracing the GNOME 3 Shell as Red Hat is. Interestingly, Ubuntu has eschewed GNOME 3 in favor of its own shell called Unity. This shell, which was announced in 2010, uses several key GNOME 3 components including the Clutter framework, the Mutter window manager and the Zeitgeist activity logging engine. Unity is designed to use screen space more efficiently and consume less system resources than a conventional desktop and is targeted at netbooks and touch-based devices. Unity is scheduled to be the default desktop on Ubuntu 11.04 (Natty Narwhal) which is currently at Alpha 1.

It will be interesting to see how the GNOME 3 shell performs in the real world. Currently it is quite slow starting up (over 5 seconds on a very fast platform) but I attribute that mostly to pre-release software. Will people accept the GNOME 3 Shell or will it be a case of a small cabal of designers not necessarily being the best judges of user experience? Will people accept the additional constraints imposed upon them by using the GNOME 3 Shell or will they migrate en mass to another distribution or desktop? Only time will tell!

P.S. If you have found this post via an Internet search, you might be interested to know that I have written a number of other posts in this blog about configuring and extending the GNOME 3 Shell.

27 comments to GNOME 3 Shell in Fedora 15

  • Sriram Ramkrishna

    Great post! This is probably the most comprehensive article I’ve seen on GNOME Shell!

    sri

  • Sriram Ramkrishna

    Oh, one other thing, I believe Unity uses compiz and not mutter for its effects. The lead guy is Neal Patel who was the maintainer of Avant Window Manager (AWN)

    cheers,
    sri

  • aja

    I am using fedora 15 alpha and i love it gnome 3 is the much better compared to kde.

  • I for one like the idea behind gnome3 and am actually running it also. My only real complaint is why is everything so damn big? I installed gnome-tweak-settings to drop the font size to a smaller font. Bad idea this is not intergrated. As for the minimize maximize options they are there just hidden using the tool i mentined above they can be added again. Overall I like it, There is a small getting used to it curve but for someone running gnome for years everything i need is there and it looks good so far.

  • dklann

    Thanks for the post. Very helpful. I just loaded up F15 beta and I think I’ll be able to get used to the GNOME 3 Shell. I’m still looking for a few settings, such as

    – where is the default for CLOCK_SHOW_SECONDS_KEY defined? Looking through the files in /usr/share/gnome-shell reveals this:

    /usr/share/gnome-shell/js/ui/dateMenu.js:const CLOCK_SHOW_SECONDS_KEY = ‘show-seconds’;

    But I haven’t yet found where it is defined.

    – enabling emacs key bindings as the default “keymap”

    Thanks again!

  • dklann

    So, apparently ‘gsettings help’ is your friend for making changes to at least some aspects of gnome-shell.

    Enabling the display of seconds in the clock is:

    gsettings set org.gnome.shell.clock show-seconds true

    And ‘gsettings list-schemas’ shows all the other schema available for tweakage. More thoughts at http://www.scribd.com/doc/52625225/Customizing-the-GNOME-3-Shell

  • the best on GNOME 3.0 i have read till date. i used ubuntu till now but will be shifting on fedora 15 eversince ubuntu screwed with unity. cheers :)

  • Mike

    Thank you for providing a wonderful tutorial!
    I have a question on search providers. I have successfully added one, but I would like to make Google the first option, instead of my custom one. I added Reddit, and I experimented with all sorts of settings, ran several selective touches, changed file names around etc but could not figure out how to get it to rearrange. Through some weird combination of things, and a crash, Reddit showed up last. Do you know how to change the order in which they appear?

  • aintme

    yes, visual nice.
    Something usefull should be to show: $ps uxa | grep ‘mutter’

  • S.E.A.D.

    yes the new Fedora 15 desktop is more beutifull and for Firefox exist a persona for Gnome 3’s adwaita gtk3 theme it is named adwaitfox gives a more integrated interface for Firefox

  • Victor

    what about am/pm don’t show in my clock

    • @Victor. You can set it from with g-s in the Date and Time option which you can access from System Settings.
      Select 12h format.

      Alternatively you can set it using gsettings.

  • Hi, I just found your site an I’m amazed by quality and depth of your articles regarding GNOME 3. I would like to ask you to join Fusion Linux (http://fusionlinux.org/) and help us create kick ass GNOME 3 desktop with amazing extensions and additional tweaks.

    If you are interested feel free to contact me.

    Cheers,
    Valent,
    Fusion Linux Project Leader.

  • inVader

    Nice to learn how to add search buttons to the bottom of the applications page, I was just looking for that. However, Wikipedia is always the default for me, does anybody know how to change the order there?

  • Brodes

    Nice overview. However, you don’t mention how to exit LookingGlass! The only way I could get rid of it was to log out and then back in. Is there a command that quits it? Exit, quit, and even help did nothing

    • Press the ESC key in the initial(inspector) panel. There are plans to implement the ESC key in all panels in LookingGlass.

  • Great and informative post. Thank you for taking the time to write it up and post.

    Marc

  • Thanks for this fairly informative post.

    I just upgraded to F15 today, and encountered Gnome3 for the first time. Frankly I hate it.

  • rambo

    oh no!

    dear gnome 3,

    thanks for breaking the Desktop on my old laptop. Guess I’ll just buy a Mac…sigh

  • BobP

    I gave Gnome3 a good 8 week workout. End result.. I still hate it. I’m going to switch to XCFE or maybe even ‘upgrade’ Fedora 15 back to 14 so I can run Gnome2.

    As a background I’m a Unix/Linux Administrator for a multi-national corporation. I’ve been with Linux since kernel version .9 something. In my opinion Gnome3 is the biggest piece of unusable garbage to grace my desktop.

    Cheers,
    Bob

    • Bob,

      I happen to agree with you. The GNOME Shell has nothing to offer a busy
      system administrator. In fact, it only gets in the way of doing your work. It
      is fine for a user on their single home Linux desktop or laptop.

      I am not sure that I would go back to Fedora 14 however. I like the idea
      of a fairly lightweight window manager such as XCFE on an up-to-date
      kernel and that is what I switch to when I need to manage multiple
      remote systems.

      – Finn

  • hi, your artical is very good ,i like it , i use ubuntu linux ,i think is very easy for me to use it ! i am glad to make friends with you ! haha,welcome to my blog!

  • I am now not positive where you are getting your information, but great topic. I needs to spend a while studying much more or understanding more. Thanks for excellent information I was in search of this info for my mission.

  • fatcamera

    There is a way to customize the order of the search providers. Go to http://bin.baobaojia.org/2011/11/25/customize-the-order-of-open-search-providers-in-gnome-shell/