Read more

Running the Awesome window manager within Gnome

Tobias Kraze
July 17, 2011Software engineer at makandra GmbH

Note: Consider using MATE instead of Gnome 3 on newer system

Illustration online protection

Rails professionals since 2007

Our laser focus on a single technology has made us a leader in this space. Need help?

  • We build a solid first version of your product
  • We train your development team
  • We rescue your project in trouble
Read more Show archive.org snapshot

Awesome Show archive.org snapshot is a very good tiling window manager that provides neat features like automatic layouting of windows, good multi-display support with per display workspaces and more. Unfortunately, it is only a window manager, and lacks a lot of Gnome's conveniences like the network manager, application menus, automatic updates etc.

Fortunately, Gnome allows you to selectively replace only the window manager, so you get all of Gnome's features with all of Awesome's awesomeness. With Gnome 3 you can even set it up to switch between Awesome and regular Gnome on login. Here is how:

(Tested on Fedora 15 / Ubuntu 11.10/12.04/14.04 with Gnome 3, and Ubuntu 10.10 with Gnome 2):

Install Awesome

On Ubuntu, run sudo apt-get install awesome

On Fedora, register this repository Show archive.org snapshot and run sudo yum install awesome.

On Ubuntu 11.10 and 12.04, run sudo apt-get install gnome-session-fallback notification-daemon

Register Awesome with Gnome 2

Make sure you have the following file:

/usr/share/applications/awesome.desktop:

[Desktop Entry]
Version=1.0
Type=Application
Name=awesome
TryExec=awesome
Exec=awesome

To register Awesome as the default window manager, open the gconf-editor, go to /desktop/gnome/session/required-components and set windowmanager to awesome.

Now boot normally into gnome. To undo your change, set windowmanager to metacity.

Register Awesome with Gnome 3

Create (or update) the following files:

/usr/share/applications/awesome.desktop:

[Desktop Entry]
Version=1.0
Type=Application
Name=awesome
TryExec=awesome
Exec=awesome

/usr/share/xsessions/gnome-awesome.desktop:

[Desktop Entry]
Name=Gnome with Awesome
Comment=Gnome with Awesome as window manager
TryExec=gnome-session
Exec=gnome-session --session=awesome
Type=Application

/usr/share/gnome-session/sessions/awesome.session:

[GNOME Session]
Name=Awesome
RequiredComponents=gnome-panel;gnome-settings-daemon;
RequiredProviders=windowmanager;notifications;
DefaultProvider-windowmanager=awesome
DefaultProvider-notifications=notification-daemon

In newer versions of Gnome this may not work anymore (awesome will simply not start). What seems to do it is this:
/usr/share/gnome-session/sessions/awesome.session:

[GNOME Session]
Name=Awesome
RequiredComponents=gnome-panel;gnome-settings-daemon;awesome

Now log out, and select "Gnome with Awesome" as the session type in gdm.

Optional (only with Gnome 3)

You will make some changes to the Gnome settings when you run Awesome (for example move the Gnome panel). If you want these changes to only apply to your "Gnome with Awesome" sessions, but not for regular Gnome sessions, you can do this:

Create an executable script /etc/X11/xinit/xinitrc.d/set-dconf-profile.sh:
#!/bin/sh

DCONF_PROFILE_DIR=/etc/dconf/profile
if [ -e "$DCONF_PROFILE_DIR/$GDMSESSION" ]
then
  export DCONF_PROFILE=$GDMSESSION
fi  

This allows you to have per-session dconf profiles.

Now create such a profile for gnome-awesome. Look into /etc/dconf/profile and find the current profile (probably) called gdm. Duplicate it as gnome-awesome and change the line user into user-gnome-awesome. For me, it looks like this:

/etc/dconf/profile/gnome-awesome:
user-gnome-awesome
gdm

Now create the dconf settings database itself, by duplicating your current database ~/.config/dconf/user as ~/.config/dconf/user-gnome-awesome.

Configure Gnome

By default, the Gnome panel will hide the more important awesome bar. I suggest you:

  • Remove the bottom Gnome panel (with the task list)
  • Move the top panel (with the menus) to the bottom
  • Untick the expand option
  • Set it to autohide
  • Most importantly: Remove the notification area (Awesome has its own)

In Gnome 2, you can do all this through alt-dragging, and context menus.
In Gnome 3, install and open dconf-editor. You will find all settings under /org/gnome/gnome-panel.

First steps in Awesome

  • Press Meta-Enter. This should open a terminal. Open a few more.
  • Press Meta-Space. This should cycle through layouts.
  • Windows can be dragged while holding down the Meta-key.
  • Open the Awesome man page (with man awesome) and look at the other key bindings
  • Have a look at the Awesome wiki Show archive.org snapshot
  • Improve your font-rendering Show archive.org snapshot
  • Copy /etc/xdg/awesome/rc.lua to ~/.config/awesome/rc.lua. Take a look, it's pretty self-explanatory. You can instantly apply changes by reloading Awesome with Meta-Ctrl-R.

Caveat

If you quit Awesome, Gnome will keep running, but you will be short a window manager.

This might be fixable, but it's probably best to simply log out (or shut down) using the Gnome panel.

Tobias Kraze
July 17, 2011Software engineer at makandra GmbH
Posted by Tobias Kraze to makandra dev (2011-07-17 15:34)