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:
And this is what I did to a freshly installed Ubuntu 11.10 system to get there:
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
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.
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"
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:
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.
- 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.
- 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.
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 \
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.
Next I installed dconf-editor, which allows a few additional tweaks to be make to Unity:
sudo apt-get install dconf-tools
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.
To add a quick list of locations to the Launcher “files” icon, I ran the following as a single command:
echo "[Desktop Entry]
Comment=Open your personal folder
[Videos Shortcut Group]
[Documents Shortcut Group]
[Music Shortcut Group]
[Pictures Shortcut Group]
[Downloads Shortcut Group]
TargetEnvironment=Unity" | sudo tee /usr/share/applications/nautilus-home.desktop
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:
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.
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
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.
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!