Awesome

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Awesome and the translation is 100% complete.


awesome est un gestionnaire de fenêtres pour X hautement configurable, de nouvelle génération et dynamique. Il est principalement destiné aux utilisateurs avancés, aux développeurs et à tous ceux qui désirent un contrôle très fin de leur environnement graphique. Il est configurable grâce au langage de programmation Lua.

Pré-requis

Services

Choisir l'un d'eux:

  • elogind: Paquet logind indépendant (NdT: standalone en anglais), extrait du projet systemd pour l'utilisation avec OpenRC ou d'autres systèmes d'initialisation.
  • systemd: Utilise le traqueur de session faisant partie de systemd. Les utilisateurs de systemd n'ont pas besoin de faire quoi que ce soit de plus ici.

Divers

  • D-Bus: Active l'utilisation du système bus de message de D-Bus.
  • polkit: Active le framework polkit pour le contrôle à l'échelle du système des privilèges des services.
  • udisks: Active le support pour quelques services en liens avec le stockage.

Serveur X

Suivre les instructions du guide Xorg/Guide pour paramétrer un environnement avec X.

Démarrer le serveur X

L'une des méthodes suivantes peut être utilisée pour démarrer X :

Installation

USE flags

USE flags for x11-wm/awesome A dynamic floating and tiling window manager

dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
gnome Add GNOME support
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)

Emerge

Installer x11-wm/awesome :

root #emerge --ask x11-wm/awesome

Configuration

Démarrage

Pour démarrer awesome, se référer à Démarrer le serveur X ou utiliser la commande startx.

Pour utiliser startx avec le support pour elogind, il faut paramétrer elogind et créer le fichier suivant :

FILE ~/.xinitrc
exec dbus-launch --sh-syntax --exit-with-session awesome

Fichier de configuration

Le fichier de configuration par défaut d'awesome est situé dans ~/.config/awesome/rc.lua. Si un tel répertoire ou fichier n'existe pas alors il doit être créé. Un fichier prêt à l'emploi, par défaut, de configuration est distribué avec awesome et peut être trouvé dans /etc/xdg/awesome/rc.lua. Copier ce fichier dans le répertoire home de l'utilisateur.

Tout d'abord créer le répertoire awesome/ :

user $mkdir -p ~/.config/awesome/

Copier ensuite le fichier de configuration rc.lua :

user $cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

Si x11-terms/xterm n'est pas installé, l'installer ou changer le terminal par défaut par un des émulateur de terminaux présents sur le système. Ci-dessous, l'émulateur de terminal par défaut est configuré pour konsole, faisant partie de kde-apps/konsole.

FILE ~/.config/awesome/rc.lua
-- Cela sera utilisé plus tard en tant que terminal et éditeur à lancer.
terminal = "konsole"

Après avoir fait des changements il est utile de vérifier le fichier de configuration à la recherche d'erreurs:

user $awesome -k
✔ Configuration file syntax OK

On peut utiliser le paquet media-gfx/feh pour gérer le fond d'écran.

root #emerge --ask media-gfx/feh

Par exemple, pour utiliser awsetbg pour définir le fond d'écran, éditer ~/.config/awesome/theme/theme.lua :

FILE ~/.config/awesome/theme/theme.luaParamétrer un fond d'écran spécifique en utilisant awsetbg
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }

Ou paramétrer tout simplement les propriétés du fond d'écran du thème :

FILE ~/.config/awesome/theme/theme.luaParamétrer un fond d'écran spécifique en utilisant la propriété de fond d'écran
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"

Tags (NdT: étiquettes)

Dans awesome, on nomme tags les différents bureaux virtuels dans lesquels une ou plusieurs applications sont ouvertes. On peut définir pour chaque tag un symbole particulier :

FILE ~/.config/awesome/rc.lua
-- {{{ Tags
tags = {}
for s = 1, screen.count() do
    tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1])
end
-- }}}

Menu

Ci dessous un exemple de menu awesome personnalisé :

FILE ~/.config/awesome/rc.lua
-- {{{ Menu
myawesomemenu = {
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awesome.conffile },
   { "reload", awesome.restart },
   { "quit", awesome.quit },
   { "reboot", "reboot" },
   { "shutdown", "shutdown" }
}
 
appsmenu = {
   { "urxvt", "urxvt" },
   { "sakura", "sakura" },
   { "ncmpcpp", terminal .. " -e ncmpcpp" },
   { "luakit", "luakit" },
   { "uzbl", "uzbl-browser" },
   { "firefox", "firefox" },
   { "chromium", "chromium" },
   { "thunar", "thunar" },
   { "ranger", terminal .. " -e ranger" },
   { "gvim", "gvim" },
   { "leafpad", "leafpad" },
   { "htop", terminal .. " -e htop" },
   { "sysmonitor", "gnome-system-monitor" }
}
 
gamesmenu = {
   { "warsow", "warsow" },
   { "nexuiz", "nexuiz" },
   { "xonotic", "xonotic" },
   { "openarena", "openarena" },
   { "alienarena", "alienarena" },
   { "teeworlds", "teeworlds" },
   { "frozen-bubble", "frozen-bubble" },
   { "warzone2100", "warzone2100" },
   { "wesnoth", "wesnoth" },
   { "supertuxkart", "supertuxkart" },
   { "xmoto" , "xmoto" },
   { "flightgear", "flightgear" },
   { "snes9x" , "snes9x" }
}
 
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu },
                                    { "apps", appsmenu },
				    { "games", gamesmenu },
                                    { "terminal", terminal },
				    { "web browser", browser },
				    { "text editor", geditor }
                                  }
                        })
 
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
                                     menu = mymainmenu })
-- }}}

Date

Ci-dessous un exemple d'usage d'un format de date personnalisé. Le format de la syntaxe utilisé est %Y-%m-%d %H:%M. La seconde option, 60, est l’intervalle de rafraîchissement en seconde.

FILE ~/.config/awesome/rc.luaCréer un widget textuel pour l'horloge
-- {{{ Wibox
-- Créer un widget textuel pour la date et l'heure
mytextclock = wibox.widget.textclock(" %Y-%m-%d %H:%M ", 60)
-- }}}
Remarque
Pour plus d'informations sur les options de formatage de la date, lancer date --help.

Contrôleur de volume

Le paquet media-sound/volumeicon peut être utilisé pour gérer les touches de volumes automatiquement et afficher les informations concernant le volume dans la zone de notification.

root #emerge --ask media-sound/volumeicon

Lancement automatique de volumeicon depuis ~/.xinitrc :

FILE ~/.xinitrcLancer volumeicon en tâche de fond au démarrage d'X
volumeicon &
exec [...]

Une méthode alternative consiste à configurer les touches de volume directement dans le fichier de configuration d'awesome :

FILE ~/.config/awesome/rc.luaTouches de volume
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q sset Master 5%-") end)
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q sset Master 5%+") end)

Touches multimédia d'MPD

Installer media-sound/mpc pour ajouter les raccourcies claviers pour MPD :

root #emerge --ask media-sound/mpc

Mettez à jour le fichier de configuration d'awesome pour assigner les touches multimédias aux commandes correspondantes :

FILE ~/.config/awesome/rc.luaRaccourcie des touches du volume
awful.key({ }, "XF86AudioNext",function () awful.util.spawn( "mpc next" ) end),
awful.key({ }, "XF86AudioPrev",function () awful.util.spawn( "mpc prev" ) end),
awful.key({ }, "XF86AudioPlay",function () awful.util.spawn( "mpc play" ) end),
awful.key({ }, "XF86AudioStop",function () awful.util.spawn( "mpc pause" ) end),

Supprimer l'espace entre les fenêtres

L'espace entre les fenêtres peut être visible, notamment entre les fenêtres des terminaux. Il peut être supprimé en insérant la propriété size_hints_honor = false dans le tableau awful.rules.rules comme-ceci :

FILE ~/.config/awesome/rc.luaParamétrer la propriété size_hints_honor
awful.rules.rules = {
    { rule = { },
      properties = { size_hints_honor = false, -- Supprime les espaces
                     border_width = beautiful.border_width,
                     border_color = beautiful.border_normal,
      ...

Debugger la configuration avec Xephyr

Xephyr est un outil très pratique pour corriger les erreurs de configuration. Il crée une instance d'un serveur X dans une fenêtre client.

user $Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1

Cela ouvrira une fenêtre de 800×600. Pour y lancer awesome, ouvrir un terminal et exécuter la commande :

user $DISPLAY=:1.0 awesome

Cela lancera awesome dans la fenêtre.

Raccourcies clavier

Voici une liste des principaux raccourcis clavier par défaut.

  • Super+Mouse1 = Déplacer le client avec la souris
  • Super+Mouse2 = Redimensionner le client avec la souris
  • Super+Enter = ouvre le terminal
  • Super+r = lance une commande
  • Super+Shift+c = tue (NdT: la fenêtre)
  • Super+m = Agrandir
  • Super+n = Réduire
  • Super+Ctrl+n = Restaure les clients minimisés
  • Super+f = Plein écran
  • Super+Tab = Passe au client précédent
  • Super+Ctrl+Space = Flottement
  • Super+j = Mise en évidence du client de gauche
  • Super+k = Mise en évidence du client de droite
  • Super+Shift+j = Déplace le client à droite
  • Super+Shift+k = Déplace le client à gauche
  • mod4+l = redimensionne un client lorsqu'on est en mode mosaïque (NdT: tiling)
  • mod4+h = redimensionne un client lorsqu'on est en mode mosaïque (NdT: tiling)
  • Super+left / right = Change l'étiquette
  • Super+1-9 = Change l'étiquette
  • Super+Shift+1-9 = Envoie le client vers l'étiquette

On peut ainsi définir n'importe quel raccourci clavier. Par exemple pour utiliser Alt+Tab pour basculer sur la fenêtre précédente :

FILE ~/.config/awesome/rc.luaRaccourcie clavier Alt-TAB
-- {{{ Key bindings
globalkeys = awful.util.table.join(
...
    -- alt + tab
    awful.key({ "Mod1", }, "Tab",
        function ()
            awful.client.focus.history.previous()
            if client.focus then
                client.focus:raise()
            end
        end),
-- }}}

Ressources externes