Tibor's Musings

Gnome3 First Look

Now that Gnome 3.0.2 packages hit Debian Wheezy repository, I thought of giving vanilla Gnome a try for a week or two. After many years of using small, tiling, keyboard-friendly window managers ion, dwm, awesome and xmonad, I was curious to see how a typical mainstream Desktop Environment user experience evolved over time from a keyboard-oriented user point of view.

Install gnome-shell and gnome-tweak-tool

Installed gnome-shell and gnome-tweak-tool:

$ sudo aptitude install gnome-shell gnome-tweak-tool

and configured keyboard shortcuts to my liking (e.g. s-2 to switch to desktop 2) and to be more Dvorak-friendly (e.g. s-c to switch to the last focused window).

If running gnome-tweak-tool gives a message about pk-gtk-module not being available, then install it:

$ sudo apt-file search pk-gtk-module
gnome-packagekit: /usr/lib/gnome-settings-daemon-3.0/gtk-modules/gpk-pk-gtk-module.desktop
packagekit-dbg: /usr/lib/debug/usr/lib/gtk-3.0/modules/libpk-gtk-module.so
packagekit-gtk3-module: /usr/lib/gtk-3.0/modules/libpk-gtk-module.so
$ sudo aptitude install gnome-packagekit packagekit-dbg packagekit-gtk3-module

Switch off blinking cursor in gnome-terminal

In gnome terminal, the default blinking cursor is annoying. There does not seem to be an UI option to disable blinking cursor. One has to use gsettings:

$ gsettings set org.gnome.desktop.interface cursor-blink false

Otherwise the terminal scrolling speed seems to be on the par with urxvt, and looks are good with Unifont Medium 12 and green-on-black colour scheme.

Reduce window title bar height

Window title bars are too large and space consuming, especially since I'm used to using window managers where they are typically absent. So I did:

$ sudo sed -i '/title_vertical_pad/s|value="[0-9]\{1,2\}"|value="0"|g' \
       /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml

followed by restarting the gnome-shell via M-F2 r RET. This changes vertical padding from 14 to 0, which gives windows a sleeker look. To restore the original values, re-install package gnome-themes-standard.

Tip seen at the fine ArchWiki Gnome page.

Hide window title bar when maximised

Window title bars are better removed completely, especially in maximised mode. I did:

$ sudo sed -i -r 's|(<frame_geometry name="max")|\1 has_title="false"|' \
       /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml

followed by restarting the gnome-shell via M-F2 r RET. After this tweak, you may find it difficult to un-maximize a window when there is no title bar to grab. With suitable keybindings, you should be able to use M-F5, M-F10 or M-SPC to remedy the situation.

Tip seen at the fine ArchWiki Gnome page.

Keyboard-friendly window navigation

It is rather essential to install gnome-shell-extensions. Especially the windows navigator extension is essential for keyboard-friendly navigation in the Gnome Overview "Exposé" mode. However, gnome-shell-extensions did not seem to have hit the Debian Wheezy software repository yet. So built Debian packages in this way:

mkdir -p /home/simko-local/apps/gnome-shell-extensions
cd /home/simko-local/apps/gnome-shell-extensions
git clone https://github.com/bilalakhtar/gnome-shell-extensions-debian.git
cd gnome-shell-extensions-debian
dpkg-buildpackage -rfakeroot -uc -b
sudo dpkg -i ../gnome-shell-extensions-common_3.0.2-1_all.deb \
             ../gnome-shell-extensions-windows-navigator_3.0.2-1_all.deb

followed by restarting gnome-shell by M-F2 r RET and checking extensions in gnome-tweak-tool and Gnome Looking Glass (M-F2 lg RET).

After installing and enabling the windows navigator extension one can switch windows via s M-3 like keyboard combinations in the Gnome Overview "Exposé" mode.

Start some applications in some desktops

Another useful productivity extension is auto-move-windows that permits to start certain applications on certain desktops. It got compiled in the previous step. Install via:

$ sudo dpkg -i ../gnome-shell-extensions-auto-move-windows_3.0.2-1_all.deb

Here is an example of a configuration that will start Chromium on desktop three and Skype on desktop four:

$ gsettings set org.gnome.shell.extensions.auto-move-windows \
    application-list "['chromium.desktop:3','skype.desktop:4']"

BTW, in order to start some applications automatically at the Gnome boot up time, when not using ~/.xinitrc, one can configure them by running gnome-session-properties, or else via editing files under ~/.config/autostart/foo.desktop.

Tiling

gnome-shell comes with basic tiling functionality, covering 2x1 setup. This is suitable especially for laptop only use case, where I usually either maximise windows, or else use them tiled precisely in a 2x1 manner. However, when using bigger screens, the 2x1 tiling mode is not sufficient. I would have preferred to have at least one more grid-like 2x2 tiling mode option.

The tiling is achieved by mouse-dragging windows to the left or right. There does not seem to be a possibility to define keyboard shortcuts to tile windows.

However, there is shellshape gnome extension that provides some tiling capabilities like xmonad. It is less smooth around the ages.

Summary

Impressions after using this setup for a week? Pleasant UI with good looks, modern feel, nice overview exposé-like mode. With the above-mentioned tweaks, also relatively space efficient and keyboard friendly. I was pleased to see that basic tiling capabilities started to hit the main desktop environments in a native manner. (And I hope that native tiling gets extended much more in next gnome-shell versions.) However, the productivity and ergonomics is still far from using a native keyboard-friendly tiling window manager for me. This is especially noticeable on set ups with bigger screens. After I went back to xmonad, I felt immediately much more productive and efficient. Home, sweet home.

gnome