The search for a new desktop continues

So the fight to find a workable productive solution continues. Lubuntu and Xubuntu both ended up having problems with some of IBM’s productivity applications. Not an issue for the majority of users, but critical for me. And I also discovered that IBM and Canonical have committed to work together to ensure that we “internal” IBM users of Ubuntu will get the support to ensure that our internal productivity tools do work under Unity.

Which gives me a pretty strong push back towards finding a way to make Unity somewhat more palatable and productive. So I’ve set about trying to turn Unity into something that I can live with for work. I’d not say I’ve completely achieved that yet, but a couple of (long) evenings have got me a fair way forward, and revealed a few problems that I probably need to raise as bugs against Unity – though given the non-standard way that I’ve exposed them, it’s debatable whether they’ll ever be addressed or not. Anyway, here are the results so far:

My normal desktop

Customised Oneiric, with the launcher open

Customised Oneiric, with application selector open

And this is what I did to a freshly installed Ubuntu 11.10 system to get there:

  1. Add back a menu of applications that can act as a launcher, and a taskbar where I can see what I have running. I came across this post describing how to resolve these issues, and merely followed the directions.

    First the menu launcher:

    sudo add-apt-repository ppa:diesch/testing
    sudo apt-get update
    sudo apt-get install classicmenu-indicator

    Once installed, run it by pressing Alt-F2 and typing classicmenu-indicator.

    Now install the taskbar:

    sudo apt-get install tint2

    Once installed, set it to auto-run on system start, by adding an entry to the Startup Applications. The executable is at /usr/bin/tint2. Then configure the resulting bottom panel (in ~/.config/tint2/tint2rc) so it only has a taskbar, removing the clock and battery indicators, by adding:
    panel_items = T
    and adjust its size to avoid interference with the unity launcher (when it’s on screen) by making sure:
    panel_size = 90% 30
    and finally (a personal choice) remove the ability to close applications from the taskbar by setting:
    mouse_right = none

  2. Next, get rid of the ugly Unity launcher by making it autohide. This is done by altering some parameters in the Unity plugin in compiz. You need to install Compiz Config Settings Manager (CCSM) first, by:

    sudo apt-get install compizconfig-settings-manager

    Then run it with ccsm, and find and select the Unity plugin. Then on the Behaviour tab:

    Set “Hide Launcher” to “Autohide”

    Set “Edge Reveal Timeout” to 100

    On the Experimental tab:

    Set “Backlight mode” to “Edge Illumination Toggles”

    Set “Launcher Icon Size” to 32

    Set “Launcher Opacity” to “0.8000”

    I still think it looks like it was designed by a child with a set of blunt crayons, but this makes it a bit more professional-looking, and since it’s now going to be hidden most of the time (and rarely used) I can live with it. I do wish there was an option to completely disable it though.

  3. Next I fixed the window buttons, by re-enabling the standard minimise, maximise, close triple, and moving them to the right side of the window title bar. Do this by entering:

    gconftool-2 --set /apps/metacity/general/button_layout --type string ":minimize,maximize,close"

  4. Then I disabled the ridiculous Overlay Scrollbars, and the Global Menu; together this moves the window buttons and menus back onto the windows where they belong, and gives us working scrollbars on all applications again, including those that are built on Eclipse:

    sudo su
    echo "export LIBOVERLAY_SCROLLBAR=0" > /etc/X11/Xsession.d/80overlayscrollbars
    echo "export UBUNTU_MENUPROXY=0" > /etc/X11/Xsession.d/81ubuntumenuproxy

    Sadly the scrollbars lack scroll buttons; I’ve not worked out how to resolve this yet, which can make fine positioning difficult. But it’s orders of magnitude easier than fighting with the overlay scrollbars.

  5. Firefox has an extension to separately move its menus to Unitys top panel, and this needs to be disabled too. Access it from Firefox’s Tools->AddOns menu. It seems to require that Firefox be restarted, and a logout/login sequence to be followed before it fully takes effect.
  6. Next I took back control of the workspaces, by adding an indicator applet into the notification area of the top panel, that also functions as a workspace switcher. The indicator is in a PPA, but unfortunately only for Natty rather than Oneiric. The Natty version works just fine under Oneiric, and installing it is straightforward, if a little fiddly, by following these instructions.

  7. At this point I rebooted to make sure everything was working, and noticed that the classic menu indicator was not the leftmost of my indicators any more. However, it is possible to specify the exact ordering of indicators, so I reordered mine by:

    mkdir -p ~/.local/share/indicators/application
    cp /usr/share/indicator-application/ordering-override.keyfile ~/.local/share/indicators/application/

    Editing the new local ordering-override.keyfile allows the exact order of the indicators to be specified. Lowest numbers are to the right of the panel. To find the id of unknown indicators, use:

    dbus-send --type=method_call --print-reply \
    --dest=com.canonical.indicator.application \
    /com/canonical/indicator/application/service \
    com.canonical.indicator.application.service.GetApplications | grep "object path"

    This results in lines like:
    object path "/org/ayatana/NotificationItem/gnome_power_manager/Menu"
    In this case, the id is gnome-power-manager, but note that the command output contains underscores which need to be changed to dashes to be valid in the ordering-override.keyfile.

  8. Next I installed dconf-editor, which allows a few additional tweaks to be make to Unity:

    sudo apt-get install dconf-tools

  9. I then did some configuration of general settings around the operating system. First, I configured the terminal look and feel by opening terminal preferences:

    Set font to "Monospace 9"
    Set default size to 100x40
    Set scrollback to 10000

    Next I changed all the fonts throughout the system, as the defaults seem far too large:

    gsettings set org.gnome.desktop.interface document-font-name 'Sans 10'
    gsettings set org.gnome.desktop.interface font-name 'Ubuntu 9'
    gsettings set org.gnome.desktop.interface monospace-font-name 'Ubuntu Mono 10'
    gsettings set org.gnome.nautilus.desktop font 'Ubuntu 10'
    gconftool --set /apps/metacity/general/titlebar_font 'Ubuntu Bold 9' --type STRING

    Then, in the “Screen” settings, I configured the screen to turn off at “30 minutes”, and set the screen lock “on” after the “screen turns off”. In the “Power” settings I set the system to “Do nothing” when the lid is closed (on battery or AC), and not to suspend when inactive (on battery or AC), but to shutdown when power is critically short on battery. In the Time and Date settings I set the Panel clock to show the Date and Month, and the clock in 12 hour format. Finally, in “Removable Media” I set the system to never prompt or start programs on media insertion.

  10. To add a quick list of locations to the Launcher “files” icon, I ran the following as a single command:

    echo "[Desktop Entry]

    Name=Home Folder
    Comment=Open your personal folder
    Exec=nautilus --no-desktop

    [Videos Shortcut Group]
    Exec=nautilus Videos

    [Documents Shortcut Group]
    Exec=nautilus Documents

    [Music Shortcut Group]
    Exec=nautilus Music

    [Pictures Shortcut Group]
    Exec=nautilus Pictures

    [Downloads Shortcut Group]
    Exec=nautilus Downloads
    TargetEnvironment=Unity" | sudo tee /usr/share/applications/nautilus-home.desktop

  11. Next I disabled the guest account in LightDM. This prevents someone from logging into my machine (albeit with very limited privileges) when I’m away from the machine. I suspect our security people would not be comfortable with this feature left enabled. To do this, edit /etc/lightdm/lightdm.conf, and make it read:


  12. Next I wanted to change the Alt-PrtSc capability, so I can capture a specific area if the screen rather than the active window. I want to retain the default PrtSc functionality. To do this, I started ccsm, and in the Gnome Compatibility plugin I changed the command “gnome-screenshot -w” (active window) to “gnome-screenshot –area”.

    While I was in ccsm I also disabled the “Snapping Windows” plugin, as it was driving me nuts. I also set a key combination (Ctl-Alt-g) on the “Toggle Handles” option of the Unity MT Grab Handles plugin, to allow easier screen grabbing & manipulation, as the default theme has quite small borders to its windows.

  13. By default, Oneiric doesn’t come with any screensavers. It simply fades to black. Which is efficient, but rather boring. So I removed the default screensaver (which does nothing) and reenabled all the pretty screensavers:

    sudo apt-get remove --purge gnome-screensaver
    sudo apt-get install xscreensaver xscreensaver-gl-extra xscreensaver-data-extra

    It’s then necessary to add “xscreensaver -nosplash” to the startup applications. This is the server portion of the screensaver which does the actual displaying of the animations, the locking of the screen, and any power management. It’s configured with “xscreensaver-demo”, which allows graphical selection of screensaver animations etc. Finally, to keep the ctl-alt-L key combination to manually start the screensaver, it’s necessary to:

    sudo ln -s /usr/bin/xscreensaver-command /usr/bin/gnome-screensaver-command

  14. Getting Conky installed (to create the animated desktop) was simple, once I’d realised that the key to making it work under Unity is to change the .conkyrc configuration stanza to own_window_type normal. However, Unity does something odd with painting itself into a different window than the root, so Conky cannot do transparent without help from something like feh, but that can only work with static images, not my preferred gradient fill. I resolved the issue by adopting an image for my desktop background.

  15. Finally, I mentioned a few issues that I’d not resolved yet:

    It seems impossible to stop the Unity top panel showing the name of the active applicaton.

    It seems impossible to move the classicmenu_indicator to the left of the Unity top panel.

    Having disabled the overlay scrollbars, the remaining scrollbars lack scroll buttons

    It seems impossible to remove the workplace switcher icon from the Unity Dash (hard-coded) Raised as Bug 898230.

    It seems impossible to remove the Dash Home icon from the Unity Dash (Hard-coded) Raised as Bug 898230.

    When maximising a window, Unity still steals the window buttons, and places them in its top panel Raised as Bug 898250.

    When stealing the window buttons, it doesn’t adhere to the setting in gconf for how to display them, but uses a hardcoded default Raised as Bug 898250.

    Seems to be impossible to completely disable the Unity Launcher Raised as Bug 898260.

    Help with any of the above would be much appreciated!

3 thoughts on “The search for a new desktop continues

  1. Great post, Richard.

    Forgive me for saying this though… but… haven’t you essentially said “I installed Oneiric, did as much as I could to make Unity as non-Unity / the way I wish it worked as possible, and raised bugs about the rest”?

    Curious as to whether you considered GNOME 3 instead. I’m sure you’ll also find that it offends your view of how desktops “should” work, but it will be the future of Red Hat EL as well, and I’m guessing that IBM will have to make its apps work in that environment, too.

    And I dread to ask the 64-bit question…. ๐Ÿ™‚

    (all from a man who needs to make a decision about which way to go when he rebuilds a similar system with similar requirements over Christmas…)

    • I actually started out with a pretty open mind about Unity and Gnome Shell, and spent about a week investigating them with fresh installs of Oneiric with first Unity, and then Gnome Shell. The problem was that I didn’t find either very easy to work with – especially on a big high resolution monitor.

      I get the feeling that the intention is for me to run each application fullscreen, and hop around workspaces to switch applications. Which may make sense on a small screen like a netbook or a phone, but makes no sense at all for me.

      So then I tried Oneiric Lubuntu and Xubuntu, which are both traditional desktops; Lubuntu in particular was pretty impressive given how relatively immature it is, but both have issues with some of our IBM-required software stack, and aren’t going to get any support within IBM.

      Which (as you pointed out) pretty much forces me back to either Unity or Gnome Shell.

      So this was all about getting Unity to work the way I wanted, rather than me having to work the way Unity wants. I’d assert that the bugs are valid (well, ok, maybe 898260 is a bit speculative!) even if they are only exposed when the system has been hacked around quite a lot. After all, that’s why I’ve not raised my other issues with Unity as bugs too ๐Ÿ™‚

      A similar post on Gnome Shell should be going up later tonight. I don’t want to spoil the surprise, but at the moment I think I’ll be going with Gnome Shell in due course.

      I’m also investigating 64 bit in parallel to the DE considerations. So far I’m not convinced that multiarch support in Oneiric is mature enough for production use with the application mix that we have. Some applications are fine, others are most definitely not. But against that, I actually don’t need 64bit yet. I can cope just fine with PAE. So I can afford to defer this concern for a while; and it may well be that Precise, being an LTS release, will tidy up the multiarch support enough for me to adopt anyway.

  2. Pingback: The search for a new desktop still continues « Richard's Blog

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s