Note: Je vous recommande grandement l'utilisation d'un éditeur de texte supportant la coloration syntaxique, afin de rendre le travail sur le fichier plus visuel et agréable.
Le fichier étant en lua, il faut vous assurer que votre éditeur supporte la coloration pour ce langage.
Gedit peut faire parfaitement l'affaire si vous ne savez pas quoi prendre.
Un éditeur avec coloration syntaxique (c'est quand même plus agréable, non ?):
Récupérez à présent votre fichier de configuration: le rc.lua. (le mien en l'occurrence.)
Le mien est disponible ici:
http://silverstrate.org/no~star/awesome/rc.lua
Téléchargez-le et déposez-le dans le dossier
~/.config/awesome/
Armez vous de votre éditeur de texte favori et éditez-le.
Tout d'abord, attaquons nous à cette partie du fichier :
Code : Tout sélectionner
-- Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
--require("vicious")
-- Load Debian menu entries
require("debian.menu")
-- Custom libraries
require("revelation")
require("shifty")
require("vicious")
require("teardrop")
En dessous de la mention
Custom Libraries, vous devez ajouter un « -- » devant chaque « require » appelant une librairie que vous n'avez pas téléchargée.
Par exemple, si vous n'avez pas eu envie d'utiliser Teardrop, vous devez modifier la ligne afin qu'elle ressemble à ceci:
--require("teardrop")
Cela aura pour effet de commenter la ligne et donc désactiver le module.
De même, pour ceux n'utilisant pas
Debian, il est plus prudent de commenter la ligne appelant le Debian.menu, elle n'est de toute façon pas essentielle.
Une fois ceci fait, il vous faut adapter la ligne renvoyant vers le thème :
beautiful.init("/home/engil/.config/awesome/themes/fiesta/theme.lua")
Remplacez simplement
engil par votre nom d'utilisateur.
Si vous voulez utiliser un autre thème, il en existe dans /usr/share/awesome/themes/, faites vous plaisir.
Shifty: Organisons votre espace de travail
Par la suite vient la section configurant les
tag du wm.
Un tag, correspond en gros à un bureau, et Awesome permet à l'aide de
Shifty de gérer finement ses tag, d'en créer spécialement pour une application... ect.
Voici à quoi ressemble la liste de tag dans l'interface d'awesome.
Code : Tout sélectionner
shifty.config.tags = {
["[urxvt]"] = { position = 1, init = true, },
["[www]"] = { position = 2, spawn = browser,},
["[gimp]"] = { position = 6, exclusive = true, nopopup = true, spawn = gimp, },
["[irc]"] = { position = 3, nopopup = true, spawn = "rxvt-unicode -T weechat -e weechat-curses" },
["[sys]"] = { position = 5, exclusive = true, nopopup = true, },
["[msg]"] = { position = 7, exclusive = true, nopopup = true, },
["[view]"] = { position = 8, exclusive = true, nopopup = true, },
["[vbox]"] = { position = 9, exclusive = true, nopopup = true, },
["[mail]"] = { position = 10, exclusive = true, nopopup = true, },
["[med]"] = { position = 11, nopopup = true, },
-- ["[mplayer]"] = { position = 11, nopopup = true, spawn = "rxvt-unicode -T mplay"},
["[bt]"] = { position = 11, nopopup = true, spawn = "Transmission"},
Le nom du tag se situe entre le [" et le "]: exemple ["nom-du-tag"]
Il existe diverses options, en voici quelques exemples:
init, qui si elle est placée sur
true, affiche le tag directement au démarrage du wm, sinon il n'apparaîtra que quand une application l'appellera.
Position défini dans quel ordre se trouvera ce tag dans la taglist... le 1 sera donc le plus à droite.
persist, lui, indique que lorsque la dernière fenêtre d'un tag est fermée, le tag ne sera pas détruit, et restera donc acessible. (
init n'a pas besoin de
persist donc.)
nopopup, indique que lors de la création du tag, celui ci ne doit pas être affiché à l'écran. (en effet, lorsqu'un tag est créé, le focus se passe immédiatement dessus, ce paramètre vous permet donc d'éviter ce comportement envahissant.)
Pour plus d'information, vous pouvez lire la documentation sur Shifty, disponible sur le wiki d'awesome:
http://awesome.naquadah.org/wiki/Shifty/fr
Une autre étape importante de votre configuration, c'est celle du pré réglage des
clients, un client c'est, en gros, une fenêtre, et on peut lui appliquer divers réglages comme lui définir un tag qui lui sera propre, et bien d'autres choses.
Code : Tout sélectionner
{ match = {"Transmission" }, tag = "[bt]" },
{ match = {"^Download$", "Preferences", "VideoDownloadHelper" }, float = true, intrusive = true },
{ match = {"Firefox","Iceweasel","Vimperator","Shiretoko"} , tag = "[www]", opacity = 1.0 } ,
{ match = { "WeeChat 0.2.6.2","weechat-curses","weechat" }, tag = "[irc]" , },
{ match = {"Gimp" }, tag = "[gimp]", float = true , opacity = 1.0 },
{ match = {"gimp-image-window" }, slave = true, opacity = 1.0 },
{ match = {"MPlayer","ffplay" }, float = true, opacity = 1.0 },
{ match = {"alpine" }, tag = "[mail]", },
{ match = {"med" }, tag = "[med]" },
{ match = {"ncmpcpp","ncmpc++ ver.0.3.4","med" }, tag = "[med]", },
{ match = {"Pidgin" }, tag = "[msg]", float = true },
{ match = {"htop" }, tag = "[sys]", },
{ match = {"VirtualBox" }, tag = "[vbox]", float = true, opacity = 1.0 },
{ match = {"lxappearence" }, float = true, opacity = 1.0 },
{ match = {"gpicview" }, float = true, tag = "[view]", },
{ match = { "" },
buttons = awful.util.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ modkey }, 1, awful.mouse.client.move),
awful.button({ modkey }, 3, awful.mouse.client.resize),
awful.button({ modkey }, 8, awful.mouse.client.resize))
Pour paramétrer le comportement d'une application, il vous faut son WM_class, qui est une information que vous donne la commande xprop (une fois lancée, cliquez simplement sur l'application visée et lisez la sortie de xprop)
La WM_class de Virtualbox est par exemple VirtualBox, la casse compte donc.
Une fois que vous avez obtenu la class de votre programme, il faut lui créer une ligne lui correcpondant:
{ match = {"mon_application"... et lui entrer les bon paramètre.
Basiquement, on lui dira dans quel tag il va, via le paramètre tag, mais on peut également définir son opacité (nous verrons plus tard comment l'activer), ou rendre la fenêtre flottante, comme le ferait un WM normal. (c'est utile pour les lecteurs video par exemple, ce n'est jamais agréable d'avoir une image toute déformée.)
Prenons un exemple:
{ match = {"MPlayer","ffplay" }, float = true, opacity = 1.0 },
Ici, l'application MPlayer et ffplay, des lecteurs vidéos, non pas de tag défini, ce qui veut dire que l'application une fois lancée restera dans le tag actuel, float est réglé sur true, ce qui indique que la fenêtre sera flottante, et ne subira donc pas de déformation et sera pleinement manipulable à la souris, et opacity est réglé sur 1.0, la fenêtre ne sera donc pas transparente.
Voici le résultat final pour Mplayer:

La fenêtre est donc
flottante, c'est à dire qu'elle se trouve au dessus des autres est n'est pas
tilée par Awesome, et elle n'est pas transparente.
Voilà, faites vous plaisir maintenant, c'est le plus gros travail à faire pour vous je pense, il va vous falloir définir un comportement pour chaque application que vous utilisez régulièrement.
Code : Tout sélectionner
shifty.config.defaults = {
layout = awful.layout.suit.tile,
ncol = 1,
mwfact = 0.50,
floatBars=false,
Ici, pas grand chose, vous pouvez laisser comme ça, sauf, à la rigueur, modifier floatBars sur true, qui permet d'obtenir une petit fenêtre comme tout bon WM possède, et mieux manipuler les applications flottante (comme MPlayer dans cet exemple)