Awesome3

De ArchwikiFR
Révision datée du 18 mars 2011 à 21:34 par ArchFR maintenance (discussion | contributions) (Robot : Enlève modèles : I18n, Lang, Stub, Translateme)


Tiré du site d'Awesome :

"awesome is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license.

It is primarly targeted at power users, developers and any people dealing with every day computing tasks and who want to have fine-grained control on its graphical environment."

Installation

Awesome 3.x est disponible dans les dépôts de la communauté, il suffit de taper :

# pacman -S awesome

Awesome-git

Les versions de développements basés sur GTK sont disponible depuis AUR, voir awesome-git

Il y a de nombreuses façons de les installer. La plus simple est d'utiliser "yaourt" (également disponible dans le AUR). Si vous avez yaourt d'installé, tapez simplement :

# yaourt -S awesome-git

Pour commencer

Utiliser awesome

Pour lancer awesome sans gestionnaire de démarrage, ajoutez simplement exec awesome au script de lancement de votre choix (par exemple ~/.xinitrc.)

Si vous avez des problèmes avec des périphériques (comme monter une clé USB ou lire des DVDs) lisez d'abord les articles sur HAL et policykit. Quand vous n'utilisez pas de gestionnaire de démarrage, rien n'est automatique. Dans certains cas, l'utilisation de exec ck-launch-session awesome peut résoudre vos problèmes.

Pour lancer awesome depuis un gestionnaire de démarrage, voir cet article.

SLIM est un gestionnaire de démarrage léger et populaire et est très recommandé. Vous devriez faire ainsi :

1) Editez /etc/slim.conf pour lancer la session awesome, ajouter awesome à la ligne de sessions.
Par exemple :

sessions             awesome,wmii,xmonad

2) Editez le fichier ~/.xinitrc

DEFAULT_SESSION=awesome
case $1 in
  awesome) exec awesome ;;
  wmii) exec wmii ;;
  xmonad) exec xmonad ;;
  *) exec $DEFAULT_SESSION ;;
esac

Toutefois, vous pouvez aussi lancer awesome sans gestionnaire de démarrage et sans vous connecter, après avoir édité ~/.xinitrc et /etc/inittab correctement. Référez-vous à cet article Start X at boot.

Configuration

Awesome inclus de bons paramètres par défaut, mais tôt ou tard vous voudrez changer quelque chose. Le fichier de configuration basé sur lua est ~/.config/awesome/rc.lua.

Création du fichier de configuration

Premièrement, lancez la commande suivante pour créer le répertoire nécessaire à la prochaine étape :

$ mkdir -p ~/.config/awesome/

À chaque recompilation, awesome essayera d'utiliser les paramètres contenus dans ~/.config/awesome/rc.lua. Ce fichier n'est pas créé par défaut, donc nous devons d'abord copier le fichier d'exemple :

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


La synthaxe du fichier de configuration change souvent lors des mises à jour d'awesome. Donc n'oubliez pas de répéter la commande ci-dessus quand un problème survient avec awesome. Ou il vous faudra sûrement modifier la configuration.

Pour plus d'informations à propos de la configuration d'awesome, voir la page de configuration du wiki d'awesome

Exemples de configuration

Note : La synthaxe de la configuration d'awesome change régulièrement, donc vous devrez probablement modifier les fichier que vous aurez téléchargé.

Ci-dessous, de bons exemples de fichier rc.lua :

Debugguer rc.lua en utilisant Xephyr

C'est ma façon préférée pour débugguer la configuration d'awesome sans modifier mon bureau courant. Tout d'abord, je copie le fichier rc.lua dans un nouveau fichier, rc.lua.new et je le modifie selon mes besoins. Ensuite, je lance une nouvelle instance de Xephyr (qui permet de lancer un serveur X dans une autre fenêtre - screenshot) en utilisant le nouveau fichier de configuration ainsi :

$ Xephyr -ac -br -noreset -screen 1152x720 :1 &
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

Le gros avantage de cette approche est que si je casse le fichier rc.lua.new, je ne casse pas mon bureau courant (avec les éventuels problèmes pour toutes les applications graphiques, les données non sauvegardés, etc…). Une fois que je suis content de mes nouveaux paramètres, je déplace rc.lua.new vers rc.lua et redémarre awesome. Et je suis sûr de pouvoir travailler avec la nouvelle configuration sans problèmes.

Thèmes

Beautiful est une librairie lua qui vous permet de modifier le thème de awesome en utilisant un fichier externe. Il devient ainsi très facile de changer dynamiquement vos couleurs et fond d'écran sans changer votre rc.lua.

Le thème par défaut est dans /usr/share/awesome/themes/default. Copiez-le dans ~/.config/awesome/themes/default et changez la variable theme_path dans rc.lua.

Plus de détails ici.

Un bref exemple de themes.

Modifier votre fond d'écran

Beautiful peut modifier votre fond d'écran, donc vous n'avez pas besoin de modifier vos fichiers .xinitrc ou .xsession. Cela vous permet d'avoir un fond d'écran pour chaque thème. Si vous regardez votre fichier de thème par défaut, vous verrez une clé nommée wallpaper_cmd. Cette commande est executée quand beautiful.init("chemin_vers_le_fichier_de_theme") est lancé. Vous pouvez mettre ici votre propre commande ou supprimer/commenter la clé si vous ne voulez pas que beautiful interfère dans vos modifications de vos fond d'écran.

Par exemple, si vous utilisez awsetbg pour modifier votre fond d'écran, vous pouvez taper :

wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }

Image de fond d'écran aléatoire

Pour modifier le fond d'écran aléatoirement, il suffit de commenter la ligne wallpaper_cmd ci-dessus et d'ajouter un script dans votre .xinitrc avec le code ci-dessous :

while true;
do
  awsetbg -r <path/to/the/directory/of/your/wallpapers>
  sleep 15m
done &

Conseils et astuces

N'hésitez pas à ajouter ici les astuces que vous souhaitez partager avec les autres utilisateurs d'awesome.

Effet d'exposition comme Compiz

Revelation apporte une vue globale de toutes vos fenêtes ouvertes. En cliquant sur une fenêtre, vous l'ammenez au premier plan et lui donnez le focus. De plus, la touche entrée affiche la fenêtre qui a le focus et la touche échap annule.

http://awesome.naquadah.org/wiki/Revelation

Cacher / montrer la wibox avec awesome 3

Pour mapper Modkey-b pour cacher/afficher la barre de status par défaut sur l'écran actif (comme dans awesome 2.3 par défaut), ajoutez dans la section clientkeys de votre fichier rc.lua :

awful.key({ modkey }, "b", function ()
    mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
end),

Activer la capture d'écran

Pour activer la capture d'écran dans awesome en apuyant sur le bouton PrintScreen vous avez besoin d'un programme de capture. Scrot est simple d'utilisation et disponible dans les dépôts d'Arch.

Tapez simplement :

# pacman -S scrot

et installez les dépendances optionnelles si vous pensez en avoir besoin.

Ensuite, nous avons besoin de connaître le nom de la touche PrintScreen. Elle est souvent nommée "Print" mais il faut en être sûr.

Lancez :

# xev

Appuyez maintenant sur le bouton PrintScreen, l'affichage devrait donner quelque chose comme :

 KeyPress event ....
     root 0x25c, subw 0x0, ...
     state 0x0, keycode 107 (keysym 0xff61, Print), same_screen YES,
     ....

Comme vous pouvez le voir, dans mon cas, la touche s'appelle Print.

Et maintenant, configurons awesome !

Quelque part dans votre tableau des clés globales (NdT : globalkeys array) (peu importe où c'est) tapez :

Code Lua :

 awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),

Un bon endroit pour ajouter cette ligne est en dessous de la ligne qui crée un terminal. Pour trouver cette ligne, cherchez avec votre éditeur de texte favori : awful.util.spawn(terminal)

Ainsi, cette fonction sauvegardera les captures d'écran dans ~/screenshots/. Éditez la ligne selon vos besoins.

Marquage dynamique

Eminent est une petite bibliotèque qui apporte un marquage dynamique dans le style de wmii. Contrairement à shifty, eminent ne propose pas un système de marquage très compréhensif mais permet de gérer le marquage dynamique aussi simplement que possible. En effet, un fois que vous avez importé la bilbiothèque eminent, vous n'avez pas besoin de changer votre rc.lua, eminent fera tout le travail pour vous.

Shifty est une extension d'awesome 3 qui implémente le marquage dynamique. Il implémente aussi la configuration précise des fenêtres ce qui VOUS permet d'être le maître de VOTRE ordinateur uniquement en configurant deux variables et quelques raccourcis clavier.

Space Invaders

Space Invaders est une démo pour montrer les possibilitées de l'API Awesome Lua.

Veuillez noter que ce n'est plus inclus dans le paquet d'awesome depuis la version 3.4-rc1.

Notification grâce à Naughty

[1]

Menus

Il existe par défaut un menu très simple dans awesome3, et customiser les menus semble vraiment facile maintenant. Si vous utilisez awesome 2.x, regardez à awful.menu.

Un exemple pour awesome3:

myawesomemenu = {
   { "lock", "xscreensaver-command -activate" },
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}

mycommons = {
   { "pidgin", "pidgin" },
   { "OpenOffice", "soffice-dev" },
   { "Graphic", "gimp" }
}

mymainmenu = awful.menu.new({ items = { 
                                        { "terminal", terminal },
                                        { "icecat", "icecat" },
                                        { "Editor", "gvim" },
                                        { "File Manager", "pcmanfm" },
                                        { "VirtualBox", "VirtualBox" },
                                        { "Common App", mycommons, beautiful.awesome_icon },
                                        { "awesome", myawesomemenu, beautiful.awesome_icon }
                                       }
                             })

Plus de gadgets dans awesome

Widgets in awesome are objects that you can add to any widget-box (statusbars and titlebars), they can provide various information about your system, and are useful for having access to this information, right from your window manager. Widgets are simple to use and offer a great deal of flexibility. -- Source Awesome Wiki: Widgets.

Les gadgets dans awesome sont des objets que vous pouvez ajouter à n'importe quelle boîte de gadgets (barre de status et barre de titre), ils peuvent apporter diverses informations sur votre système, et sont utiles pour avoir accès à ces informations depuis votre gestionnaire de fenêtre. Les gadgets sont simples d'utilisation et offrent une grande flexibilité. -- Source Awesome Wiki: Widgets.

Il existe une bibliothèque de gadgets appellée Wicked (compatible avec awesome versions inférieure à 3.4), qui apporte plus de gadgets. Par exemple pour MPD, l'utilisation du CPU, l'utilisation de la mémoire, etc… Pour plus de détails, voir la page des gadgets.

Pour remplacer Wicked dans awesome 3.4, voir du coté de Vicious, Obvious et Bashets. Si vous utilisez vicious, vous devriez regarder attentivement à la documentation de vicious.

Transparence

Awesome supporte la transparence (2D) grâce à xcompmgr. Notez que vous voudrez probablement la version git de xcompmgr, qui est disponible dans AUR.

Ajoutez ça à votre ~/.xinitrc :

exec xcompmgr &

Voir man xcompmgr ou xcompmgr pour plus d'options.

Dans awesome 3.4, la transparence des fenêtres peut être modifiée dynamiquement en utilisant des signaux. Par exemple, votre rc.lua peut contenir le code suivant :

client.add_signal("focus", function(c)
                              c.border_color = beautiful.border_focus
                              c.opacity = 1
                           end)
client.add_signal("unfocus", function(c)
                                c.border_color = beautiful.border_normal
                                c.opacity = 0.7
                             end)

Notez que si vous utilisez conky, vous devrez le modifier pour qu'il utilise sa propre fenêtre plutôt que le bureau. Pour ce faire, editez ~/.conkyrc pour qu'il contienne :

own_window yes
own_window_transparent yes
own_window_type desktop

Un autre comportement étrange peut être observé, qui rend toutes les fenêtres completement transparentes. Notez aussi que depuis que conky crée une fenêtre transparente sur le bureau, certaines actions définies pour le bureau dans rc.lua ne fonctionnent pas toujours.

Depuis Awesome 3.1, la pseudo-transparence pour les wiboxes est disponible. Pour l'activer, ajoutez 2 chiffres hexadécimaux aux couleurs contenues dans votre fichier de thème (~/.config/awesome/themes/default, qui est souvent une copie de /usr/share/awesome/themes/default), comme montré ici :

bg_normal = #000000AA

où "AA" est la valeur de la transparence.

Lancement automatique de programmes

Ajoutez simplement le code suivant dans rc.lua, et remplacez les applications dans la section autorunApps avec celles que vous voulez lancer. Exemple :

-- Autorun programs
autorun = true
autorunApps = 
{ 
   "swiftfox",
   "mutt",
   "consonance",
   "linux-fetion",
   "weechat-curses",
}
if autorun then
   for app = 1, #autorunApps do
       awful.util.spawn(autorunApps[app])
   end
end

Ou ainsi :

os.execute("mutt &"),
os.execute("weechat-curses &"),

Pour lancer une application une seule fois, par exemple pour relancer awesome, utilisez cette fonction (depuis le wiki d'awesome):

function run_once(prg)
	if not prg then
		do return nil end
	end
	awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")
end
-- AUTORUN APPS!
run_once("parcellite")

Envoyer un contenu aux gadgets avec awesome-client

Vous pouvez facilement envoyer du texte à un gadget d'awesome. Créez simplement un nouveau gadget :

 mywidget = widget({ type = "textbox", name = "mywidget" })
 mywidget.text = "initial text"

Pour mettre à jour le texte depuis une source externe, utilisez awesome-client ainsi :

 
 echo -e 'mywidget.text = "new text"' | awesome-client

N'oubliez pas d'ajouter le gadget à votre wibox.

Dépannage

La touche Mod4

La touche Mod4 est la touche windows par défaut. Si elle n'est pas mappée par défaut, vous pouvez vérifer le code de la touche avec :

$ xev

Ça devrait être 115 pour celle de gauche. Ajoutez donc le code suivant à votre ~/.xinitrc :

xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
exec awesome

La touche Mod4 pour les utilisateurs d'IBM ThinkPad

Les IBM ThinkPads ne sont pas équipés de la touche Windows (bien que Lenovo a changé cette tradition sur leurs ThinkPads). Heureusement, la touche Alt n'est pas utilisée comme combinaison par la configuration par défaut (référez-vous au wiki d'awesome pour la table des commandes) ce qui permet de l'utiliser en remplacement de la touche Windows/Mod4. Pour ce faire, editez votre rc.lua et remplacez :

modkey = "Mod4"

par :

modkey = "Mod1"

Note : Awesome contient quelques commandes qui utilisent Mod4 plus une lettre. Remplacer Mod4 par Mod1/Alt peut endommager quelques combinaisons de touches. Les rares cas où ça peut arriver peuvent être corrigés en changeant le fichier rc.lua.

Si vous n'aimez pas changez les standards d'awesome, vous aimeriez peut-être remapper une touche. Par exemple, la touche Caps Lock est moins inutile (pour moi) en ajoutant à ~/.Xmodmap :

clear lock 
add mod4 = Caps_Lock

et (re)chargez le fichier. Cela va changer la touche Caps Lock en touche Mod4 et marche parfaitement avec les paramètres standards d'awesome. De plus, si besoin, cela permet d'utiliser la touche Mod4 avec d'autres programmes graphiques.

Fuite mémoire de Cairo

Si vous détectez des fuites mémoire alors essayez cairo-git de AUR. Voir aussi le sujet du forum.

Mise à jour : La récente version de Cairo 1.8.6 ne semble pas contenir le bug car elle contient la correction de git.

Liens externes