Astuces pour awesome

Le WM awesome est majoritairement utilisé par des utilisateurs qui passent du temps à configurer leur bureau (ou qui n’ont pas peur de le faire) et peut être paramétré de bien des manières; les recettes ne manquent pas sur le wiki. Voici ici quelques astuces issues de mon utilisation.

Intégration avec gnome

Awesome est un gestionnaire de fenêtre et ne remplace pas un gestionnaire de bureau et tous ses avantages: monter automatiquement les clefs usb branchées, conserver le mot de passe ssh pour la session, etc.

Gnome permet de remplacer le gestionnaire par un autre, ce que nous allons mettre à profit pour utiliser awesome à la place de celui proposé par défaut. Vous pouvez donc échapper à l’affreux Gnome Shell et passer sous en gestionnaire ergonomique…

Un guide est disponible sur le wiki et une fois configuré, vous n’avez plus qu’à choisir gnome comme session de démarrage: awesome sera automatiquement lancé et utilisé comme gestionnaire de fenêtre!

Il s’agit de la principale astuce car elle permet de lancer un nombre important de services qui ne sont pas pris en charge par un simple gestionnaire de fenêtre.

Session menu

Gérer la session

Maintenant que awesome est lancé dans une session gnome, on peut lancer des commandes DBUS sans difficultées: nous allons en profiter pour ajouter au menu d’awesome la possiblité de gérer sa session. Le code suivant permet de rajouter au menu sous menu «system» qui contiendra les actions «quit», «restart» et «halt» permetant d’éxécuter les commandes de déconnexion directement:

mysystemmemu = {
    {"quit", "dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1"},
    {"restart", 'dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart' },
    {"halt", 'dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop'},

}

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    []
                                    { "system", mysystemmemu }

Les commandes DBUS proviennent du forum ubuntu ; d’une manière générale, DBUS permet de faire énormément de chose avec son système (note pour plus tard, trouver un annuaire des commandes).

Afficher le calendrier

Par défaut, awesome affiche l’heure et la date dans la bare de menu, mais aucun calendrier n’est disponible. Pour ceux qui ont besoin d’un simple calendrier et non d’un agenda, je recommande gsimplecal qui se contente d’afficher le mois en cours. On peut facilement modifier la configuration pour lancer l’application dès que l’on clic sur la date: il suffit de modifier le textbox déjà existant pour lui ajouter un évènement sur le clic de la souris:

-- Create a textclock widget
mytextclock = awful.widget.textclock({ align = "right" })
mytextclock:buttons(awful.util.table.join(
    -- Launch on clic
    awful.button({ }, 1, function() awful.util.spawn_with_shell("gsimplecal") end
))

Utiliser les touches média

Media keys

Vous avez peut-être des touches d’accès rapide sur votre clavier pour le mail, lancer le navigateur web… Ce sont des touches médias, qui peuvent être interceptées par le gestionnaire de fenêtre pour lancer les actions appropriées. On va se servir de ces touches pour lancer les applications dont nous avons besoin.

Toutefois, j’ai rarement besoin d’avoir plus d’un client mail ou un navigateur lancé. De même, je passe souvent d’une recherche sur le web à autre chose, avant de retourner sur le navigateur. J’ai donc pris l’habitude de le garder lancé et ouvert dans un onglet à part. Ce que je propose permet l’action suivante: lorsque l’on appuie sur la touche «web» du clavier, on va demander au gestionnaire de fenêtre d’afficher le tag dans lequel est tourne. Si ce tag n’est pas présent sur le bureau: on va le créer, et lancer au passage le navigateur, ainsi, on n’a pas besoin de savoir si l’application est lancée ou non, c’est Awesome qui se charge de faire ça pour nous.

Il existe une extension permetant de gérer les tags et les applications facilement: shifty, elle vient se substituer au gestionnaire de tag implémenté par défaut, et permet de faire beaucoup de choses très intéressante:

  • lancer une application au démarrage d’un tag

Dans la configuration de shifty, il faut déclarer ses tags ainsi:

shifty.config.tags = {
    ["musique"] = { position = 100, icon = music_icon, spawn = "gmpc"},
    ["mail"] =    { position = 101, icon = mail_icon,  spawn = "icedove"},
    ["web"] =     { position = 102, icon = web_icon,   spawn = "iceweasel"},

Cela permet de lancer l’application désirée lors de la création du tag (s’il n’est pas déjà affiché), puis dans la configuration générale d’awesome:

globalkeys = awful.util.table.join(
    awful.key({         }, "XF86Calculator", function()  awful.tag.viewonly(shifty.getpos(100)) end ),
    awful.key({         }, "XF86Mail",       function()  awful.tag.viewonly(shifty.getpos(101)) end ),
    awful.key({         }, "XF86HomePage",   function()  awful.tag.viewonly(shifty.getpos(102)) end ),

Maintenant on demande à afficher le tag voulu en fonction de la touche clavier préssée: si le tag existe, il sera affiché, sinon il sera non seulement créé, mais l’application sera lancée: un bon moyen pour avoir toujours ses applications préférées au bout des doigts!

Conclusion

Awesome reste pour moi toujours aussi agréable à utiliser. Cela fait plus de trois ans maintenant que je l’utilise, et je continue d’être ravi d’avoir un système qui se contrôle au doigt et à l’œuil (au doigt surtout!). Pouvoir configurer ses applications à sa guise peut paraître couteux et compliqué de prime abord, mais permet d’avoir un système qui correspond à notre besoin: ça n’est pas à nous de nous adapter à un outil, c’est à l’outil de s’adapter à notre usage!