{{tag>gestionnaire_de_fenêtres}} ---- ====== Awesome ====== **Awesome** est un « Window Manager » minimaliste, très léger et donc extrêmement rapide, conçu pour être utilisé sans souris et spécialement optimisé pour le "multiscreen". C'est un gestionnaire de fenêtre qui utilise la technique dite du "tiling"; comprendre par là que le maximum de l'écran sera toujours utilisé pour les fenêtres et celles-ci ne se chevaucheront jamais. A noter qu'il y a plusieurs modes de tiling disponibles. Néanmoins, le mode "floating" (fenêtres "volantes") peut être utilisé également. Dans sa conception, awesome ressemble assez à [[http://fr.wikipedia.org/wiki/Ion_(logiciel)|ion]] ou encore [[wmii|Wmii]] . Le [[gestionnaire de fenêtres]] (WM, « Window Manager ») **Awesome** est basé sur le code de [[:dwm]], qu'il tente d'améliorer en gardant les idées du concept de base de ce gestionnaire, tout en l'améliorant grandement en terme d'usabilité et d'interface (support [[wp>Xft]], [[wpfr>Cairo (informatique)|Cairo]], etc.). Comme une image vaut mieux qu'un long discours, voici à quoi cela ressemble: {{:awesome.png?500|}} ===== Pré-requis ===== * Disposer des [[:sudo|droits d'administration]]. * Disposer d'une connexion à Internet configurée et activée. ===== Installation ===== Il existe un dépôt PPA contenant la dernière version. Pour Installer awesome depuis ce dépôt : sudo add-apt-repository ppa:klaus-vormweg/awesome && sudo apt-get update && sudo apt-get install awesome Awesome se trouve déjà dans les dépôts officiels. Il suffit d’[[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt://awesome|awesome]] et [[apt://awesome-extra|awesome-extra]]**. Le paquet **awesome-extra** fournit de nombreux //widgets// supplémentaires (l'usage de la mémoire, la vitesse bande passante, etc ). ==== En compilant les sources ==== Vous pouvez aussi compiler les sources, en vous rendant sur le git de Awesome vous possèderez les dernières modifications : http://git.naquadah.org/ Décompressez l'archive, mettez vous dans le dossier obtenu puis tapez : ./configure && make && sudo make install Si il y a une erreur lors du ./configure, installez la librairie requise. Pour Awesome 3 veuillez vous référer à cette publication de leur mailing-list : http://article.gmane.org/gmane.comp.freedesktop.xcb/3350/ afin de réussir l'installation pour xcb-util. Ou bien, notamment si vous êtes sous Hardy : [[http://awesome.naquadah.org/wiki/index.php?title=Ubuntu_Hardy]] =====Configuration Version 3 (Karmic et ultérieur) ===== La syntaxe du fichier de configuration a complètement changé avec la version 3 d'Awesome. Celui-ci utilise désormais le langage [[http://fr.wikipedia.org/wiki/Lua|lua]], ce qui facilite grandement la personnalisation. En effet, un des intérêts principaux d'Awesome est de se forger un environnement entièrement personnalisé et dans lequel on se sent à l'aise et productif. Vous pouvez consulter [[http://awesome.naquadah.org/wiki/Awesome_3_configuration/fr|la documentation officielle sur la configuration d'awesome 3]]. Pensez aussi à regarder les notes de changements entre versions: * [[http://awesome.naquadah.org/wiki/Awesome_3.0_to_3.1|de la 3.0 à la 3.1 (anglais)]] * [[http://awesome.naquadah.org/wiki/Awesome_3.3_to_3.4|de la 3.3 à la 3.4 (anglais)]] ==== Configuration ==== Le fichier de configuration par défaut se trouve dans /etc/xdg/awesome/rc.lua Passons à la partie vraiment intéressante :-P Il faut commencer par créer le dossier qui contiendra les fichiers de configuration dans le home: mkdir ~/.config/awesome Ensuite, afin d'avoir une base, on copie le fichier de configuration par défaut: cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua Il est aussi possible de copier le fichier de thème afin de les personnaliser: cp -R /usr/share/awesome/* ~/.config/awesome Il est fréquent qu'après une mise à jour d'awesome, le fichier de thème ne corresponde plus et vous empêche même, dans le pire des cas, de lancer votre session. ==== Raccourcis claviers ==== Les principaux sont les suivants: * Super = Touche Windows (entre Ctrl gauche et Alt) * Super + Entrer => ouvre un terminal * Super + Flèche Droite => passer au bureau de droite * Super + Flèche Gauche => passer au bureau de gauche * Super + F1 => lanceur d'un manuel pour une application Les raccourcis par défaut sont pensés pour un clavier QWERTY. Si vous utilisez un clavier QWERTZ, les raccourcis seront également bien adaptés mais si vous utilisez un clavier azerty, je vous recommande de modifier le fichier de configuration pour avoir quelque chose comme: tagkeys = { '#10', '#11', '#12', '#13', '#14', '#15', '#16', '#17', '#18', '#19', '#20' } for i = 1, keynumber do keybinding({ modkey }, tagkeys[i], function () local screen = mouse.screen if tags[screen][i] then awful.tag.viewonly(tags[screen][i]) end end):add() keybinding({ modkey, "Control" }, tagkeys[i], function () local screen = mouse.screen if tags[screen][i] then tags[screen][i].selected = not tags[screen][i].selected end end):add() keybinding({ modkey, "Shift" }, tagkeys[i], function () if client.focus then if tags[client.focus.screen][i] then awful.client.movetotag(tags[client.focus.screen][i]) end end end):add() keybinding({ modkey, "Control", "Shift" }, tagkeys[i] , function () if client.focus then if tags[client.focus.screen][i] then awful.client.toggletag(tags[client.focus.screen][i]) end end end):add() end qui vous permet d'utiliser les numéros des tags plus facilement sur un clavier en azerty. ( Mod4+guillemet pour aller au bureau n°3, par exemple) ==== Raccourcis claviers Perso pour lancer des applications==== Il est possible de rajouter ses propres raccourcis afin de lancer des applications, un exemple: awful.key({ modkey,"Mod1"}, "f", function () awful.util.spawn("firefox") end), Cette ligne (a placer dans la section KeysBindings) vous permet de lancer Firefox via SUPER+ALT+f, quelques explications: * awful.key: permet de créer le raccourci * { modkey,"Mod1"}, "f",: combinaison de touches a maintenir * awful.util.spawn: permet de lancer une commande Pour connaitre la correspondance des touches ainsi que leur syntaxe exacte il suffit de lancer xmodmap dans une console. ==== Afficher la date et l'heure dans la version française ==== Modifiez les lignes suivantes : -- Create a textclock widget mytextclock = awful.widget.textclock() par -- Create a textclock widget os.setlocale("fr_FR.UTF-8") -- Français mytextclock = awful.widget.textclock(" %a %d %b %H:%M ", 60) -- mytextclock = awful.widget.textclock(" %a %d %b, %H:%M:%S ", 1) si vous voulez afficher les secondes ==== Configurer les "layouts" par défaut et renommer les "tags" ==== Par défaut, les "layouts" sont en mode "float" pour tous les tags (nb: un tag correspond plus ou moins à un bureau virtuel). Cependant, il est possible de configurer chaque tag avec un layout particulier. Par exemple, j'aime bien avoir mon navigateur web en mode "float" pour ne pas avoir une fenêtre de notification qui occupe la moité de mon écran quand elle apparaît. Pour ceci, il faut repérer la partie Tags de votre rc.lua (plutôt au début) et la remplacer par celle-ci: -- {{{ Tags -- Define a tag table which hold all screen tags. tags = { names = { "sec", "main", "dev", "web", "im", "mus" }, layout = { layouts[2], layouts[2], layouts[2], layouts[1], layouts[2], layouts[2]} } for s = 1, screen.count() do tags[s] = awful.tag(tags.names, s, tags.layout) end -- }}} Vous pouvez noter que dans ''names'', on a les noms des tags (qui remplacent donc les chiffres de 1-9 par défaut). Vous pouvez en ajouter/enlever comme bon vous semble ainsi que les renommer. Les layouts (''layouts[2]'' par exemple) correspondent au layouts définit dans le tableau au dessus dans votre rc.lua. Ainsi, ''layouts[2]'' correspond au mode tile normal et layouts[1] correspond au mode float. Vous pouvez donc remplacer le numéro celui qui correspond à n'importe lequel des 12 layouts disponibles. Notez bien que les arrays ''names'' et ''layout'' doivent avoir la même taille! ====Lancer des applications au démarrage==== Pour lancer des applications au démarrage rien de plus simple, il suffit de rajouter cette ligne (en fin de fichier rc.lua) pour lancer nm-applet (applet de Network-Manager) os.execute("nm-applet &") ou awful.util.spawn("nm-applet &") Bien évidemment ceci est valable pour tout les exécutables que vous voudriez lancer au démarrage :D Cette fonctionnalité ne fonctionne pas sur la version 13.10 avec awful.util.spawn. Plus d'information sur la page de bug https://bugs.launchpad.net/ubuntu/+source/awesome/+bug/1176862 ==== Ajouter des widgets ==== La zone de notification se situe par défaut en haut à droite, à côté de l'horloge. Il est très facile d'écrire des widgets en lua afin de, par exemple, afficher des notifications à propos de l'état de la batterie ou encore créer un applet de son. Cependant, si cela vous rebute, il y existe également des librairies de widgets toute prêtes dont l'utilisation est détaillée ci-dessous. === Precious (Widgets de Rolinh) === Ces widgets ont été écrit pas mes soins et adapté à mes machines. Par conséquent, il est possible qu'il y ait quelques modifications mineures à apporter à certains de ces widgets afin qu'ils marchent correctement pour vous. Rien d'insurmontable cependant. Libre à vous également de les adapter/modifier comme bon vous semble! On peut les trouver dans ce [[http://projects.gw-computing.net/projects/precious/repository|dépôt git]]. Il est prévu que je les améliore dans le futur afin de les rendre plus générique. Depuis la version 3.5 (sortie en décembre 2012), les API Awesome pour les widgets ont complétement changés. Étant donné que Precious souffre également du manque d'une couche d'abstraction pour récupérer les informations nécessaires aux widgets, je ne vais pas fournir l'effort d'adapter les widgets à Awesome 3.5 (pour le moment en tout cas). La librairie Vicious fonctionne avec Awesome 3.5 et constiture à mon avis une bonne alternative. Pour avoir une idée de ce à quoi cela peut ressembler, voici une capture de la zone de widget: {{:awesomewmapplet.png|}} Il est à noter cependant qu'il est fort possible, voir très probable, qu'ils aient changés / évolués et que d'autres soient apparus depuis le temps de la capture d'écran. Ajouter des widgets peut se faire de plusieurs manières, la plus simple étant de copier le code d'un widget directement dans votre rc.lua. En revanche, cette méthode n'est pas recommandée car si des mises-à-jours sont apportées aux widgets, vous devrez recommencer le processus sans compter que vous ne serez pas forcément au courant des mises-à-jour. La méthode recommandée consiste donc à cloner le dépôt [[git|git]] dans votre dossier awesome. Pour cela, il vous faut bien sûr que git soit installé sur votre machine. Une fois que vous l'aurez cloné, la mise.à-jour des widgets se fera simplement à l'aide d'une commande. Alors, elle n'est pas belle la vie? Afin de cloner le dépôt, rendez-vous d'abord dans votre dossier de configuration d'Awesome: cd $XDG_CONFIG_HOME/awesome Puis clonez le dépôt precious: git clone git://rolinh.ch/precious.git Cette commande créera un dossier nommé //precious// contenant tous les widgets. Par la suite, afin de mettre à jour vos widgets, il suffira de ce rendre dans ce dossier et de lancer cette commande: git pull Si vous avez donc cloné le dépôt, comme il est recommandé, les widgets ne seront pas ajoutés à votre configuration pour autant. Et heureusement car il est fort probable que vous ne vouliez utiliser qu'un ou quelques widgets sans forcément utiliser la collection complète. Afin de les ajouter, il suffit d'une ligne précisant le widget que vous voulez inclure. L'exemple ci-dessous ajoute le widget du son: require("precious.sound") Cependant, ce n'est pas tout: il faut également les mentionner dans la liste des widgets de votre //rc.lua// (mywibox) qui ressemble à quelque chose comme ça: -- Create the wibox mywibox[s] = awful.wibox({ position = "top", screen = s }) -- Add widgets to the wibox - order matters mywibox[s].widgets = { { mylauncher, mytaglist[s], mypromptbox[s], layout = awful.widget.layout.horizontal.leftright }, mylayoutbox[s], mymail, s == 1 and mysystray or nil, tb_volume, mytextclock, batinfo, meminfo, cputemp, cpuinfo, tb_moc, mytasklist[s], layout = awful.widget.layout.horizontal.rightleft } Notez bien que c'est l'ordre dans lequel vous les mettez qui déterminent l'ordre dans lequel ils apparaissent Si on poursuit avec l'exemple du widget pour le son, il vous faut donc encore ajouter //tb_volume// dans la liste. Si ce n'est pas bien clair, il suffit de regarder comment cela est fait dans mon rc.lua disponible dans [[http://git.rolinh.ch/index.php?p=dotfiles.git&a=summary|mon dépôt de configurations]]. ;-) (notez que mon rc.lua est séparé en plusieurs fichiers mais la partie concernant l'inclusion des widgets se trouve bien là). === Applet pour le son === L'applet suivant permet de contrôler le son. Possibilité notamment de régler le volume avec la molette de la souris quand cette dernière est au-dessus. Il indique également, en pourcentage, le volume sonore et s'il est muet ou non. Une première chose avant de passer au code de l'applet lui-même: pour ceux qui ont des raccourcis multimédias (touches pour le son dans notre cas, qui sont très courantes sur les ordinateurs portables), il est intéressant de les faire fonctionner. Pour cela, il faut rajouter ces lignes dans la partie "keybindings" de votre rc.lua: -- Multimedia keys awful.key({ }, "XF86AudioRaiseVolume", function () volume("up", tb_volume) end), awful.key({ }, "XF86AudioLowerVolume", function () volume("down", tb_volume) end), awful.key({ }, "XF86AudioMute", function () volume("mute", tb_volume) end) Pour le reste, il vous suffit d'inclure le code correspondant au widget pour le son à votre rc.lua: require("precious.sound") N'oubliez pas non plus de rajouter ''tb_volume'' dans la liste des widgets de la wibox. === Applet pour mocplayer (mocp) === Cet applet fonctionne uniquement avec mocplayer qui est un lecteur de musique en console Pour une utilisation optimale de ce widget, il est recommandé d'ajouter des raccourcis qui vous permettent de contrôler le mocplayer. Pour ceci, ajouter le bout de code suivant à votre rc.lua dans la section "keybindings": awful.key({ "Control", }, "Right", function () moc_control("next") end), awful.key({ "Control", }, "Left", function () moc_control("previous") end), awful.key({ "Control", }, "Up", function () moc_control("stop") end), awful.key({ "Control", }, "Down", function () moc_control("play_pause") end) Vous pouvez très bien remplacer la touche contrôle par une autre que vous souhaitez. A noter que le raccourcis play/pause permet de lancer automatiquement mocplayer sans même le lancer dans un terminal (il commencera la lecture de votre denière playlist), ce qui est très pratique à l'usage. Il faut maintenant inclure le code correspondant au widget: require("precious.mocp") N'oubliez pas non-plus de rajouter ''tb_moc'' dans la wibox. === Applet d'indication de l'état de la batterie === Cet applet n'est utile que pour ceux qui utilisent un ordinateur portable ;-) {{:precious-battery.png|}} Les informations détaillées ne sont affichées qu'au survol de l'applet (en haut à gauche sur l'image) avec la souris. Si le widget ne fonctionne pas, il faut vérifier le numéro de la batterie pour le remplacer dans le code de battery.lua. Pour cela, allez faire un tour dans ''/proc/acpi/battery'' et vérifiez si c'est dans BAT0 ou BAT1 qu'il y a les infos. Chez moi, les infos sont dans BAT0 mais si chez vous c'est dans BAT1 il faut alors remplacer en conséquence la première ligne dans le widget (battery.lua). Il suffit d'include le widget: require("precious.battery") Et comme d'habitude, n'oubliez pas de rajouter ''batinfo'' dans la wibox. === Applet d'indication de l'état d'utilisation de la mémoire RAM === Comme d'habitude: require("precious.ram") Et il faut aussi ajouter ''meminfo'' dans la wibox. === Applet du taux d'utilisation du CPU et de sa température === require("precious.cpu") Ajoutez encore ''cpuinfo'' et ''cputemp'' dans la wibox en suivant cet ordre afin que l'affichage soit correct (il s'agit de deux widgets différents). === Applet de notification des emails pour Gmail === Cet applet va vérifier s'il y a des emails non-lus sur votre compte Gmail et notifie le nombre via un numéro. Tout d'abord, il faut créer un dossier dans votre home: mkdir ~/scripts Dans ce dossier, créez un fichier nommé ''unread.py'' et copiez/collez-y ce script python en prenant soin de renseigner votre adresse email ainsi que votre mot de passe. #!/usr/bin/python import imaplib #first field is imap server, second - port (993 for gmail SSL IMAP) M=imaplib.IMAP4_SSL("imap.gmail.com", 993) #first field is imap login (gmail uses login with domain and '@' character), second - password M.login("adress@gmail.com","password") status, counts = M.status("Inbox","(MESSAGES UNSEEN)") unread = counts[0].split()[4][:-1] if unread == "0": print " 0 " else: #red bg color when you have unseen mail print unread M.logout() Il est également nécessaire de créer un fichier qui sera utilisé comme tampon: touch ~/tmp/gmail Maintenant, il faut ajouter ce bout de code dans votre rc.lua pour le widget en prenant soin de remplacer le chemin du fichier tmp pour gmail par le votre: -- GMail Widget mymail = widget({ type = "textbox", align = "right" }) mymail.text = ' |V|' awful.hooks.timer.register(30, function () local f = io.open("/home/VOTRE_NOM_DE_USER/tmp/gmail") local l = nil if f ~= nil then l = f:read() -- read output of command else l = "gmail" end f:close() if l ~= "0" then l = '' .. l .. '' else l = '' end mymail.text = ' |V|' .. l os.execute("~/scripts/unread.py > ~/tmp/gmail &") end) Ajouter encore ''mymail'' dans la wibox. === Vicious === Tout d'abord, une bonne idée est d'aller faire un tour sur [[http://sysphere.org/~anrxc/j/archives/2009/07/09/vicious_widgets_for_awesome_wm/index.html|le site officiel de Vicious]], ou sur [[http://awesome.naquadah.org/wiki/Vicious|la section Vicious du wiki officiel d'Awesome]], avant de télécharger le code des widgets sur [[http://git.sysphere.org/vicious/|le dépôt Git officiel]]. ==== Astuce permettant de tester sans risques son rc.lua ==== Cela vous est peut-être déjà arrivé: une erreur dans le rc.lua et hop, on se retrouve avec quelque chose d'inutilisable. Voici deux astuces à combiner qui permettent de tester son rc.lua avant de l'utiliser. === Vérifier la syntaxe === Il suffit d'oublier de fermer une parenthèse ou d'oublier une virgule pour que la configuration ne marche pas. Afin d'éviter cela, il est possible de faire une vérification syntaxique du rc.lua: awesome -k === Utiliser Xephyr pour tester la configuration === La commande ci-dessus permet uniquement de vérifier la syntaxe mais elle ne vous permet pas de tester les changements apportés à la configuration. Une astuce, tirée du wiki d'archlinux, propose d'utiliser Xephyr. L'idée est d'enregistrer ses modifications dans un nouveau //rc.lua//, par exemple //rc.test.lua// et de lancer awesome avec cette configuration dans Xephyr au moyen de l'option -c. Pour ce faire, passez la commande suivante (vous pouvez changer la résolution à loisir ;-) ) afin de lancer Xephyr (note: s'il n'est pas déjà installé, cliquez ici sur ce lien apt **[[apt>xserver-xephyr]]**): Xephyr -ac -br -noreset -screen 1024x600 :1 & Une fois ceci fait, lancez awesome: DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.test.lua Et voilà, plus qu'à vérifier que les changements apportés conviennent et le cas échéant, remplacer son //rc.lua// par le //rc.test.lua// ;-) ===="Astuces" en rapport avec des logiciels annexes==== ===Conky=== Si vous desirez que votre conky (ou vos conky) ne puissient pas etre recouverts par les fenetres il suffit pour cela de rajouter (ou modifier) ces lignes dans votre **conkyrc**: own_window_type panel own_window_hints below,sticky,skip_taskbar,skip_pager ====Screenshots==== A venir, merci de ne pas envahir cette section ;) Elle aura simplement pour but de donner un apercu des possibilités ;) === Avec ImageMagick === Une astuce simple pour prendre un screenshot est d'utiliser ImageMagick en tapant dans votre console: import screenshot.png Cette commande va vous permettre de dessiner avec la souris le cadre du screenshot que vous voulez prendre et l'enregistrera dans un fichier (ici screenshot.png). ===== Voir aussi ===== * **(en)** [[http://awesome.naquadah.org/|Site officiel]] * **(en)** [[http://awesome.naquadah.org/wiki/Awesome_3_configuration|la documentation officielle sur la configuration d'awesome 3]] * [[http://forum.ubuntu-fr.org/viewtopic.php?pid=3512680#p3512680|Discussion «  [awesome]installation et configuration » sur le forum Ubuntu-fr]] * [[http://forum.malekal.com/awesome-window-manager-t21608.html|Tutoriel complet]] * **(en)** [[http://awesome.naquadah.org/wiki/Ubuntu_Hardy|Installation sous Hardy]] *  [[http://projects.gw-computing.net/projects/precious| Widgets Precious]] ---- //Contributeurs : x0rg62, rhaamo, [[utilisateurs:zobi8225]],[[:utilisateurs:Sherwood51|Rolinh]], TraGiKomiK //