Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
awesome [Le 12/12/2011, 14:12]
rolinh [Ajouter des widgets] début de modif
awesome [Le 11/09/2022, 12:01] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 7: Ligne 7:
  
 **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"​. **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.+C'est un gestionnaire de fenêtre qui utilise la technique dite du "​tiling";​ comprendre ​parlà ​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]] .+Dans sa conception, awesome ressemble assez à [[https://​fr.wikipedia.org/​wiki/​Ion_(logiciel)|ion]] ou encore [[wmii|Wmii]] .
  
  
Ligne 26: Ligne 26:
 ===== Installation ===== ===== Installation =====
  
-Awesome se trouve déjà dans les dépôts officiels. ​+<note important>​Il existe un dépôt PPA contenant la dernière version. Pour Installer awesome depuis ce dépôt : 
 +<​code>​sudo add-apt-repository ppa:​klaus-vormweg/​awesome && sudo apt-get update && sudo apt-get install awesome</​code></​note>​ 
 + 
 +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]]**. ​ 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+Le paquet **awesome-extra** fournit de nombreux //widgets// supplémentaires
 (l'​usage de la mémoire, la vitesse bande passante, etc ). (l'​usage de la mémoire, la vitesse bande passante, etc ).
- 
-La compilation (fastidieuse) de awesone n'est utile que pour ceux qui ont réellement besoin de la toute dernière version. 
- 
-  
 ==== En compilant les sources ==== ==== En compilant les sources ====
  
Ligne 47: Ligne 46:
 <note important>​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.</​note>​ <note important>​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.</​note>​
  
-Ou bien, notamment si vous êtes sous Hardy : +Ou bien, notamment si vous êtes sous Hardy :
 [[http://​awesome.naquadah.org/​wiki/​index.php?​title=Ubuntu_Hardy]] [[http://​awesome.naquadah.org/​wiki/​index.php?​title=Ubuntu_Hardy]]
  
Ligne 53: Ligne 52:
 =====Configuration Version 3 (Karmic et ultérieur) ===== =====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.+La syntaxe du fichier de configuration a complètement changé avec la version 3 d'​Awesome. Celui-ci utilise désormais le langage [[https://​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. 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.
Ligne 64: Ligne 63:
  
 ==== Configuration ==== ==== Configuration ====
-<note tip>Le fichier de configuration ​par défaut ​se trouve dans /​etc/​xdg/​awesome/​rc.lua</​note>​+<note tip>Le fichier de configuration ​pardéfaut ​se trouve dans /​etc/​xdg/​awesome/​rc.lua</​note>​
 Passons à la partie vraiment intéressante :-P Passons à la partie vraiment intéressante :-P
  
-Il faut commencer ​par créer ​le dossier qui contiendra les fichiers de configuration dans le home:+Il faut commencer ​parcréer ​le dossier qui contiendra les fichiers de configuration dans le home:
 <​code>​mkdir ~/​.config/​awesome</​code>​ <​code>​mkdir ~/​.config/​awesome</​code>​
-Ensuite, afin d'​avoir une base, on copie de le fichier de configuration ​par défaut:+Ensuite, afin d'​avoir une base, on copie le fichier de configuration ​pardéfaut:
 <​code>​cp /​etc/​xdg/​awesome/​rc.lua ~/​.config/​awesome/​rc.lua</​code>​ <​code>​cp /​etc/​xdg/​awesome/​rc.lua ~/​.config/​awesome/​rc.lua</​code>​
 Il est aussi possible de copier le fichier de thème afin de les personnaliser:​ Il est aussi possible de copier le fichier de thème afin de les personnaliser:​
Ligne 77: Ligne 76:
 ==== Raccourcis claviers ==== ==== Raccourcis claviers ====
 Les principaux sont les suivants: Les principaux sont les suivants:
-  * Meta = Touche Windows (entre Ctrl gauche et Alt) +  * Super = Touche Windows (entre Ctrl gauche et Alt) 
-  * Meta + Entrer => ouvre un terminal +  * Super + Entrer => ouvre un terminal 
-  * Meta Fleche ​Droite => passer au bureau de droite +  * Super Flèche ​Droite => passer au bureau de droite 
-  * Meta Fleche ​Gauche => passer au bureau de gauche +  * Super Flèche ​Gauche => passer au bureau de gauche 
-  * Meta + F1 => lanceur d'un manuel pour une application+  * 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:+Les raccourcis ​pardé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:
 <code lua> <code lua>
 tagkeys = { '#​10',​ '#​11',​ '#​12',​ '#​13',​ '#​14',​ '#​15',​ '#​16',​ '#​17',​ '#​18',​ '#​19',​ '#​20'​ }  tagkeys = { '#​10',​ '#​11',​ '#​12',​ '#​13',​ '#​14',​ '#​15',​ '#​16',​ '#​17',​ '#​18',​ '#​19',​ '#​20'​ } 
Ligne 122: Ligne 121:
  
 qui vous permet d'​utiliser les numéros des tags plus facilement sur un clavier en azerty. 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)+( Mod4+guillemet pour aller au bureau n°3, parexemple)
  
 ==== Raccourcis claviers Perso pour lancer des applications==== ==== Raccourcis claviers Perso pour lancer des applications====
Ligne 131: Ligne 130:
 Cette ligne (a placer dans la section KeysBindings) vous permet de lancer Firefox via SUPER+ALT+f,​ quelques explications:​ 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   * awful.key: ​              ​permet de créer le raccourci
-  * { modkey,"​Mod1"​},​ "​f",: ​ combinaison de touches a maintenir ​+  * { modkey,"​Mod1"​},​ "​f",: ​ combinaison de touches a maintenir
   * awful.util.spawn: ​       permet de lancer une commande   * awful.util.spawn: ​       permet de lancer une commande
  
Ligne 138: Ligne 137:
 </​note>​ </​note>​
  
-==== afficher ​la date et l'​heure dans la version française ====+==== Afficher ​la date et l'​heure dans la version française ====
  
 Modifiez les lignes suivantes : Modifiez les lignes suivantes :
Ligne 144: Ligne 143:
 <code lua> <code lua>
 -- Create a textclock widget -- Create a textclock widget
-mytextclock = awful.widget.textclock({ align = "​right"​ })</​code>​+mytextclock = awful.widget.textclock()</​code>​
  
-par +par
  
 <code lua> <code lua>
 -- Create a textclock widget -- Create a textclock widget
 os.setlocale("​fr_FR.UTF-8"​) -- Français os.setlocale("​fr_FR.UTF-8"​) -- Français
-mytextclock = awful.widget.textclock({ align = "right" ​}," %a %d %b  %H:%M "​)</​code>​+mytextclock = awful.widget.textclock(" ​%a %d %b  %H:%M ", ​60) 
 +-- mytextclock = awful.widget.textclock(" %a %d %b%H:%M:%S ", 1si vous voulez afficher les secondes</​code>​
  
  
-==== Configurer les "​layouts" ​par défaut ​et renommer les "​tags"​ ====+==== Configurer les "​layouts" ​pardé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). 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. 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:+Pour ceci, il faut repérer la partie Tags de votre rc.lua (plutôt au début) et la remplacer ​parcelle-ci:
 <code lua>-- {{{ Tags <code lua>-- {{{ Tags
 -- Define a tag table which hold all screen tags. -- Define a tag table which hold all screen tags.
Ligne 170: Ligne 170:
  
 -- }}}</​code>​ -- }}}</​code>​
-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. +Vous pouvez noter que dans ''​names'',​ on a les noms des tags (qui remplacent donc les chiffres de 1-9 pardé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!+Les layouts (''​layouts[2]'' ​parexemple) 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 demarrage====+====Lancer des applications au démarrage====
  
-Pour lancer des applications au demarrage ​rien de plus simple, il suffit de rajouter cette ligne (en fin de fichier rc.lua) pour lancer nm-applet (applet de Network-Manager)+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)
 <​code>​os.execute("​nm-applet &"​)</​code>​ <​code>​os.execute("​nm-applet &"​)</​code>​
 ou ou
 <​code>​awful.util.spawn("​nm-applet &"​)</​code>​ <​code>​awful.util.spawn("​nm-applet &"​)</​code>​
-Bien evidemment ​ceci est valable pour tout les executables ​que vous voudriez lancer au demarrage ​:D+Bien évidemment ​ceci est valable pour tout les exécutables ​que vous voudriez lancer au démarrage ​:D
  
 +<note important>​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</​note>​
 ==== Ajouter des widgets ==== ==== 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.+La zone de notification se situe pardéfaut ​en haut à droite, à côté de l'​horloge. Il est très facile d'​écrire des widgets en lua afin de, parexemple, 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.
  
-=== Widgets de Rolinh === +=== 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!+<note important>​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.</​note>​ 
 +<note warning>​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.</​note>​
  
 Pour avoir une idée de ce à quoi cela peut ressembler, voici une capture de la zone de widget: Pour avoir une idée de ce à quoi cela peut ressembler, voici une capture de la zone de widget:
Ligne 191: Ligne 193:
 {{:​awesomewmapplet.png|}} {{:​awesomewmapplet.png|}}
  
-Il est à noté 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.+Il est à noter cependant qu'il est fort possible, ​voire très probable, qu'ils aient changé ​évolué ​et que d'​autres soient apparus depuis le temps de la capture d'​écran.
  
-Premièrement, il faut savoir ​que pour que les widgets ​apparaissent, il faut qu'ils soient mentionnés ​dans la liste des widgets ​(mywibox) ​de votre rc.lua qui ressemble à quelque chose comme ça:+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:​ 
 +<​code>​ 
 +cd $XDG_CONFIG_HOME/​awesome 
 +</​code>​ 
 +Puis clonez le dépôt precious: 
 +<​code>​ 
 +git clone git://​rolinh.ch/​precious.git 
 +</​code>​ 
 +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: 
 +<​code>​ 
 +git pull 
 +</​code>​ 
 + 
 +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: 
 +<code lua> 
 +require("​precious.sound"​) 
 +</​code>​ 
 + 
 +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:
 <code lua> ​   -- Create the wibox <code lua> ​   -- Create the wibox
     mywibox[s] = awful.wibox({ position = "​top",​ screen = s })     mywibox[s] = awful.wibox({ position = "​top",​ screen = s })
Ligne 219: Ligne 244:
 <note tip>​Notez bien que c'est l'​ordre dans lequel vous les mettez qui déterminent l'​ordre dans lequel ils apparaissent</​note>​ <note tip>​Notez bien que c'est l'​ordre dans lequel vous les mettez qui déterminent l'​ordre dans lequel ils apparaissent</​note>​
  
-La manière la plus simple d'ajouter les widgets consiste à utiliser une ligne de code dans votre rc.lua qui permet d'​inclure le code des widgets. Par exemple, si vous avez enregistré le widget pour le son dans le fichier ​///home/moi/​.config/​awesome/​rolinh/​son.lua//,​ alors il faut inclure cette ligne de code dans votre rc.lua: +Si on poursuit avec l'​exemple ​du widget pour le son, il vous faut donc encore ajouter ​//tb_volume// dans la liste.
-<code lua> +
-require("​rolinh.son"​) +
-</​code>​+
  
-Si ce n'est pas bien clair, il suffit de regarder comment cela est fait dans mon [[http://​git.rolinh.ch/?​p=conf.git&a=blob&​h=2c202d9fd1c446e7118de49504642085484a6a68&​hb=b57b1405b4ca890212b8a735770ba231ac128958&​f=config/​awesome/​rc.lua|rc.lua]]. ;-) (notez que mon rc.lua est séparé en plusieurs fichiers mais la partie concernant l'​inclusion des widgets se trouve bien là)+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à).
- +
-Tous les widgets se trouvent dans un dépôt git et sont accessibles [[http://​git.rolinh.ch/?​p=conf.git&​a=tree&​h=8db2070e97d2b9687c516339c73a270bf10f11e2&​hb=b57b1405b4ca890212b8a735770ba231ac128958&​f=config/​awesome/​widgets | ici]].+
  
 === Applet pour le son === === Applet pour le son ===
Ligne 236: Ligne 256:
 awful.key({ }, "​XF86AudioRaiseVolume",​ function () volume("​up",​ tb_volume) end), awful.key({ }, "​XF86AudioRaiseVolume",​ function () volume("​up",​ tb_volume) end),
 awful.key({ }, "​XF86AudioLowerVolume",​ function () volume("​down",​ tb_volume) end), awful.key({ }, "​XF86AudioLowerVolume",​ function () volume("​down",​ tb_volume) end),
-awful.key({ }, "​XF86AudioMute",​ function () volume("​mute",​ tb_volume) end)</code+awful.key({ }, "​XF86AudioMute",​ function () volume("​mute",​ tb_volume) end)</coPassons maintenant à l'​applet lui-même:​de
- +</​code>​ 
-Pour le reste, il vous suffit d'​inclure le code correspondant au widget pour le son: [[http://​git.rolinh.ch/?​p=conf.git&​a=blob_plain&​h=4770fd655d944f2fdaa7f9f4efdc59eece5b1f07&​f=config/​awesome/​widgets/​sound.lua|sound.lua]]+Pour le reste, il vous suffit d'​inclure le code correspondant au widget pour le son à votre rc.lua
 +<​code ​lua
 +require("​precious.sound"​) 
 +</​code>​
 N'​oubliez pas non plus de rajouter ''​tb_volume''​ dans la liste des widgets de la wibox. N'​oubliez pas non plus de rajouter ''​tb_volume''​ dans la liste des widgets de la wibox.
  
 === Applet pour mocplayer (mocp) === === Applet pour mocplayer (mocp) ===
-Maintenant que les touches son et l'​applet de son fonctionne, il est intéressant d'​avoir un applet pour un lecteur de musique. 
 <​note>​Cet applet fonctionne uniquement avec mocplayer qui est un lecteur de musique en console</​note>​ <​note>​Cet applet fonctionne uniquement avec mocplayer qui est un lecteur de musique en console</​note>​
-Comme pour le son, il faut d'​abord le bout de code qui permet de gérer mocp avant de passer au wigdet lui-même. Ceci est à placer au début de votre rc.lua: 
-<code lua>-- Enable mocp 
-function moc_control (action) 
- local moc_info,​moc_state 
  
- if action == "​next"​ then +Pour une utilisation optimale de ce widget, il est recommandé d'​ajouter ​des raccourcis qui vous permettent de contrôler ​le mocplayerPour ceci, ajouter ​le bout de code suivant ​à votre rc.lua ​dans la section ​"​keybindings":​
- io.popen("​mocp --next"​) +
- elseif action == "​previous"​ then +
- io.popen("​mocp --previous"​) +
- elseif action == "​stop"​ then +
- io.popen("​mocp --stop"​) +
- elseif action == "​play_pause"​ then +
- moc_info = io.popen("​mocp -i"​):​read("​*all"​) +
-         moc_state = string.gsub(string.match(moc_info,​ "​State:​ %a*"​),"​State:​ ",""​) +
- +
- if moc_state == "​PLAY"​ then +
- io.popen("​mocp --pause"​) +
- elseif moc_state == "​PAUSE"​ then +
- io.popen("​mocp --unpause"​) +
- elseif moc_state == "​STOP"​ then +
- io.popen("​mocp --play"​) +
- end +
- end +
-end</​code>​ +
-Maintenant que ceci est fait, il est aussi intéressant de rajouter ​des raccourcis ​clavier ​qui permettent de le contrôler facilement. +
-Donc le bout de code suivant ​va dans la partie ​"​keybindings" ​de votre rc.lua:+
 <code lua> ​   awful.key({ "​Control",​ }, "​Right",​ function () moc_control("​next"​) end), <code lua> ​   awful.key({ "​Control",​ }, "​Right",​ function () moc_control("​next"​) end),
     awful.key({ "​Control",​ }, "​Left",​ function () moc_control("​previous"​) end),     awful.key({ "​Control",​ }, "​Left",​ function () moc_control("​previous"​) end),
     awful.key({ "​Control",​ }, "​Up",​ function () moc_control("​stop"​) end),     awful.key({ "​Control",​ }, "​Up",​ function () moc_control("​stop"​) end),
     awful.key({ "​Control",​ }, "​Down",​ function () moc_control("​play_pause"​) end)</​code>​     awful.key({ "​Control",​ }, "​Down",​ function () moc_control("​play_pause"​) end)</​code>​
-<note tip>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.</​note>​+<note tip>Vous pouvez très bien remplacer la touche contrôle ​parune ​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.</​note>​
  
-Passons ​maintenant ​à l'​applet lui-même+Il faut maintenant ​inclure le code correspondant au widget
-<code lua>-- Moc Widget +<code lua> 
-tb_moc = widget({ type = "textbox",​ align = "​right"​ }) +require("precious.mocp"​) 
- +</​code>​
-function hook_moc() +
-       ​moc_info = io.popen("​mocp -i"​):​read("​*all") +
-       moc_state = string.gsub(string.match(moc_info,​ "​State:​ %a*"​),"​State:​ ",""​) +
-       if moc_state == "​PLAY"​ or moc_state == "​PAUSE"​ then +
-           ​moc_artist = string.gsub(string.match(moc_info,​ "​Artist:​ %C*"), "​Artist:​ ",""​) +
-           ​moc_title = string.gsub(string.match(moc_info,​ "​SongTitle:​ %C*"), "​SongTitle:​ ",""​) +
-           ​moc_curtime = string.gsub(string.match(moc_info,​ "​CurrentTime:​ %d*:​%d*"​),​ "​CurrentTime:​ ",""​) +
-           ​moc_totaltime = string.gsub(string.match(moc_info,​ "​TotalTime:​ %d*:​%d*"​),​ "​TotalTime:​ ",""​) +
-           if moc_artist == ""​ then  +
-               ​moc_artist = "​unknown artist"​  +
-           end +
-           if moc_title == ""​ then  +
-               ​moc_title = "​unknown title"  +
-           end +
-    -- moc_title = string.format("​%.5c",​ moc_title) +
-           ​moc_string = moc_artist .. " - " .. moc_title .. "​("​ .. moc_curtime .. "/"​ .. moc_totaltime .. "​)"​ +
-           if moc_state == "​PAUSE"​ then  +
-               ​moc_string = "PAUSE - " .. moc_string .. ""​ +
-           end +
-       ​else +
-           ​moc_string = "-- not playing --" +
-       end +
-       ​return moc_string +
-end +
- +
--- refresh Moc widget +
-moc_timer = timer({timeout = 1}) +
-moc_timer:​add_signal("​timeout",​ function() tb_moc.text = '| ' .. hook_moc() .. ' ' end) +
-moc_timer:​start()</​code>​+
 N'​oubliez pas non-plus de rajouter ''​tb_moc''​ dans la wibox. N'​oubliez pas non-plus de rajouter ''​tb_moc''​ dans la wibox.
  
 === Applet d'​indication de l'​état de la batterie === === Applet d'​indication de l'​état de la batterie ===
 Cet applet n'est utile que pour ceux qui utilisent un ordinateur portable ;-) Cet applet n'est utile que pour ceux qui utilisent un ordinateur portable ;-)
-Il faut d'​abord vérifier le numéro de la batterie pour le remplacer dans le bout de code qui suit. 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 dans le bout de code qui suit: 
-<code lua> 
--- Battery status Widget 
  
--- get the full capacity of the battery +{{:precious-battery.png|}}
-for line in io.lines("/​proc/​acpi/​battery/​BAT0/​info"​) do +
- bat_stat = string.match(line,​ "last full capacity:\ +(%d+)"​)+
  
- if bat_stat then +Les informations détaillées ne sont affichées qu'au survol de l'​applet ​(en haut à gauche sur l'​imageavec la souris
- -- define stat_tot for reuse later for battery status +<note important>Si le widget ne fonctionne pasil faut vérifier le numéro de la batterie pour le remplacer dans le code de battery.luaPour celaallez faire un tour dans ''/​proc/acpi/battery'' ​et vérifiez si c'est dans BAT0 ou BAT1 qu'il y a les infosChez 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).</note
- stat_tot = bat_stat +Il suffit d'include le widget: 
- end +<code lua
-end +require("precious.battery")
- +
-function activebat() +
- local stat_actu, res +
- +
- for line in io.lines("/​proc/​acpi/​battery/​BAT0/​state"​) do +
- local present = string.match(line,​ "​present:​\ +(%a+)"​) +
- if (present == "​no"​) then +
- return '<span color="​red"​>not present</​span>'​ +
- end +
- local status ​ =  string.match(line"​remaining capacity:\ +(%d+)"​) +
- local state = string.match(line, "​charging state:\ +(%a+)"​) +
- if status then +
- stat_actu = status +
- end +
- if state then +
- stat_bat = state +
- end +
- end +
- +
- res = string.format("​%.2f"​(stat_actu/​stat_tot) * 100); +
- +
- if ((stat_actu/​stat_tot) * 100)  < 10 then +
- res = '<span color="​red">​' ​.. res .. '</span>'​ +
- elseif ((stat_actu/stat_tot) * 100) < 20 then +
- res = '<span color="​orange">​' ​.. res .. '</​span>'​ +
- elseif ​ ((stat_actu/​stat_tot) * 100)  < 30 then +
- res = '<​span color="​yellow">​' .. res .. '</​span>'​ +
- elseif ​((stat_actu/​stat_tot* 100) >= 100 then +
- return '<​span color="​green">​fully charged</​span>'​ +
- else +
- res = '<​span color="​green">' ​.. res .. '</span>' +
- end +
- +
- if (stat_bat == 'discharging'​) then +
- stat_bat = '<span color="​red"​>discharging</​span>'​ +
- elseif ​(stat_bat == '​charging'​) then +
- stat_bat = '<​span color = "green">​charging</​span>'​ +
- end +
- +
- res = res .. '% ' .. stat_bat +
- +
- +
- return res +
-end +
- +
-batinfo = widget({ type = "textbox"​ , name = "​batinfo"​ }) +
- +
--- Assign a hook to update info +
--- awful.hooks.timer.register(1,​ function() batinfo.text = "BAT: " .. activebatrc.lua() .. " |" end) +
-activebat_timer = timer({timeout = 1}) +
-activebat_timer:​add_signal("​timeout",​ function() batinfo.text = "BAT: " .. activebat() .. " |" end) +
-activebat_timer:​start()+
 </​code>​ </​code>​
 Et comme d'​habitude,​ n'​oubliez pas de rajouter ''​batinfo''​ dans la wibox. 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 === === Applet d'​indication de l'​état d'​utilisation de la mémoire RAM ===
-Comme je ne vais pas chercher la taille de votre mémoire RAM automatiquement (ce n'est pas quelque chose qui change souvent :-P ), il faut juste indiquer le total correspondant (chez moi c'est 2056100). +Comme d'habitude
-Pour savoir la quantité exact de RAM, utilisez cette commande+<​code ​lua> 
-<​code>​cat /​proc/​meminfo | grep MemTotal</​code>​ +require("​precious.ram"​) 
-<code lua>-- Create a RAM widget giving the MB used by the RAM +</​code>​
--- declare memtot for reuse below +
-memtot = 2056100+
  
-function activeram() +Et il faut aussi ajouter ​''​meminfo'' ​dans la wibox.
- local active, ramusg, res +
-  +
- for line in io.lines("/​proc/​meminfo"​) do +
- for key , value in string.gmatch(line,​ "​(%w+):​\ +(%d+).+"​) do +
- if key == "​Active"​ then active = tonumber(value) +
- end +
- end +
- end +
-  +
- ramusg = (active/​memtot)*100 +
-  +
- res = string.format("​%.2f",​ (active/​1024)) +
-  +
- if ramusg < 51 then +
- res = '<span color="​green">​' ​.. res .. '</​span>​MB (<span color="​green">​' .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- elseif ramusg < 71 then +
- res = '<​span color="​yellow">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- elseif ​ ramusg < 86 then  +
- res = '<​span color="​orange">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- else  +
- res = '<​span color="​red">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- end+
  
- return res +=== Applet du taux d'​utilisation du CPU et de sa température === 
-end +<code lua> 
- +require("precious.cpu")
-meminfo ​widget({ type "​textbox",​ name "​meminfo"​ }) +
- +
--- Assign a hook to update info +
-meminfo_timer ​timer({timeout ​1}) +
-meminfo_timer:​add_signal("timeout",​ function() meminfo.text = activeram() .. " ​| " ​ end) +
-meminfo_timer:​start()+
 </​code>​ </​code>​
-Et de nouveau, il faut ajouter ''​meminfo''​ dans la wibox. 
- 
-=== Applet du taux d'​utilisation du CPU et de sa température === 
-<code lua>-- Create a CPU widget 
-jiffies = {} 
-function activecpu() 
- local s, str 
-  
- for line in io.lines("/​proc/​stat"​) do 
- local cpu,​newjiffies = string.match(line,​ "​(cpu)\ +(%d+)"​) 
- if cpu and newjiffies then 
- if not jiffies[cpu] then 
- jiffies[cpu] = newjiffies 
- end 
- -- The string.format prevents your task list from jumping around 
- -- When CPU usage goes above/below 10% 
- str = string.format("​%02d",​ newjiffies-jiffies[cpu]) 
- 
- if str < "​31"​ then 
- str = '<​span color="​green">'​ .. str .. '</​span>'​ 
- elseif str < "​51"​ then 
- str = '<​span color="​yellow">'​ .. str .. '</​span>'​ 
- elseif str < "​70"​ then 
- str = '<​span color="​orange">'​ .. str .. '</​span>'​ 
- else 
- str = '<​span color="​red">'​ .. str .. '</​span>'​ 
- end 
- 
- s = '| CPU: ' .. str .. '% ' 
- jiffies[cpu] = newjiffies 
- end 
- end 
-  
- return s 
-end 
- 
-cpuinfo = widget({ type = "​textbox",​ name = "​cpuinfo"​ }) 
--- register the hook to update the display 
-cpuinfo_timer = timer({timeout = 1}) 
-cpuinfo_timer:​add_signal("​timeout",​ function() cpuinfo.text = activecpu() end) 
-cpuinfo_timer:​start() 
- 
--- Create CPU Temp Widget 
-function activecputemp() 
- local temp 
- 
- io.input("/​sys/​bus/​acpi/​devices/​LNXTHERM\:​00/​thermal_zone/​temp"​) 
- temp = io.read("​*number"​)/​1000 
- 
- if temp < 46 then 
- temp = '<​span color="​turquoise">'​ .. temp .. '</​span>'​ 
- elseif temp < 61 then 
- temp = '<​span color="​yellow">'​ .. temp .. '</​span>'​ 
- elseif ​ temp < 76 then 
- temp = '<​span color="​orange">'​ .. temp .. '</​span>'​ 
- else 
- temp = '<​span color="​red">'​ .. temp .. '</​span>'​ 
- end 
- 
- return temp 
-end 
- 
-cputemp = widget({ type = "​textbox"​ , name = "​cputemp"​ }) 
- 
--- Assign a hook to update temperature 
--- awful.hooks.timer.register(1,​ function() cputemp.text = "@ " .. activecputemp() .. "°C | RAM: " end) 
-cputemp_timer = timer({timeout = 1}) 
-cputemp_timer:​add_signal("​timeout",​ function() cputemp.text = "@ " .. activecputemp() .. "°C | RAM: " end) 
-cputemp_timer:​start()</​code>​ 
 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). 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).
  
Ligne 521: Ligne 334:
 <​code>​touch ~/​tmp/​gmail</​code>​ <​code>​touch ~/​tmp/​gmail</​code>​
  
-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:+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 parle votre:
 <code lua>-- GMail Widget <code lua>-- GMail Widget
 mymail = widget({ type = "​textbox",​ align = "​right"​ }) mymail = widget({ type = "​textbox",​ align = "​right"​ })
Ligne 547: Ligne 360:
 Ajouter encore ''​mymail''​ dans la wibox. Ajouter encore ''​mymail''​ dans la wibox.
  
-==== Exemple de rc.lua ==== +=== Vicious ​=== 
-Pour les flemmard qui ne veulent pas tout écrire eux-même ou pour ceux qui veulent s'en inspirervoici mon rc.lua complet: +Tout d'abordune bonne idée est d'aller faire un tour sur [[https://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]].
-<code lua> +
--- Standard awesome library +
-require("​awful"​) +
-require("​awful.autofocus"​) +
-require("​awful.rules"​) +
--- Theme handling library +
-require("​beautiful"​) +
--- Notification library +
-require("​naughty"​) +
- +
--- Sound Widget +
-cardid ​ = 0 +
-channel = "​Master"​ +
-function volume (mode, widget) +
- if mode == "​update"​ then +
-             local fd = io.popen("​amixer -c " .. cardid .. " -- sget " .. channel) +
-             local status = fd:​read("​*all"​) +
-             ​fd:​close() +
- +
- local volume = string.match(status,​ "(%d?​%d?​%d)%%"​) +
- volume = string.format("​% 3d", volume) +
- +
- status = string.match(status,​ "%[(o[^%]]*)%]"​) +
- +
- if string.find(status,​ "​on",​ 1, true) then +
- volume = "| Vol:<span color='​green'>"​ .. volume .. "</span>% " +
- else +
- volume = "| Vol:<​span color='​red'>"​ .. volume .. "</span>M " +
- end +
- widget.text = volume +
- elseif mode == "​up"​ then +
- io.popen("​amixer -q -c " .. cardid .. " sset " .. channel .. " 5%+"​):​read("​*all"​) +
- volume("​update",​ widget) +
- elseif mode == "​down"​ then +
- io.popen("​amixer -q -c " .. cardid .. " sset " .. channel .. " 5%-"​):​read("​*all"​) +
- volume("​update",​ widget) +
- else +
- io.popen("​amixer -c " .. cardid .. " sset " .. channel .. " toggle"​):​read("​*all"​) +
- volume("​update",​ widget) +
- end +
-end +
- +
--- Enable mocp +
-function moc_control (action) +
- local moc_info,​moc_state +
- +
- if action == "​next"​ then +
- io.popen("​mocp --next"​) +
- elseif action == "​previous"​ then +
- io.popen("​mocp --previous"​) +
- elseif action == "​stop"​ then +
- io.popen("​mocp --stop"​) +
- elseif action == "​play_pause"​ then +
- moc_info = io.popen("​mocp -i"​):​read("​*all"​) +
-         moc_state = string.gsub(string.match(moc_info,​ "​State:​ %a*"​),"​State:​ ",""​) +
- +
- if moc_state == "​PLAY"​ then +
- io.popen("​mocp --pause"​) +
- elseif moc_state == "​PAUSE"​ then +
- io.popen("​mocp --unpause"​) +
- elseif moc_state == "​STOP"​ then +
- io.popen("​mocp --play"​) +
- end +
- end +
-end +
- +
--- {{{ Variable definitions +
--- Themes define colours, icons, and wallpapers +
-beautiful.init("​/usr/share/awesome/themes/shertheme/theme.lua"​) +
- +
--- This is used later as the default terminal and editor to run. +
---terminal = "​xterm"​ +
-terminal = "​urxvtc"​ +
-editor = os.getenv("​EDITOR"​) or "​vim"​ +
-editor_cmd = terminal .. " -e " .. editor +
- +
--- Default modkey. +
--- Usually, Mod4 is the key with a logo between Control and Alt. +
--- If you do not like this or do not have such a key, +
--- I suggest you to remap Mod4 to another key using xmodmap or other tools. +
--- However, you can use another modifier like Mod1, but it may interact with others. +
-modkey = "​Mod4"​ +
- +
--- Table of layouts to cover with awful.layout.inc,​ order matters. +
-layouts = +
-+
-    awful.layout.suit.floating,​ +
-    awful.layout.suit.tile,​ +
-    awful.layout.suit.tile.left,​ +
-    awful.layout.suit.tile.bottom,​ +
-    awful.layout.suit.tile.top,​ +
-    awful.layout.suit.fair,​ +
-    awful.layout.suit.fair.horizontal,​ +
-    awful.layout.suit.spiral,​ +
-    awful.layout.suit.spiral.dwindle,​ +
-    awful.layout.suit.max,​ +
-    awful.layout.suit.max.fullscreen,​ +
-    awful.layout.suit.magnifier +
-+
--- }}} +
- +
--- {{{ 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 +
- +
--- }}} +
- +
--- {{{ Menu +
--- Create a laucher widget and a main menu +
-myawesomemenu = { +
-   { "​manual",​ terminal .. " -e man awesome"​ }, +
-   { "edit config",​ editor_cmd .. " " .. awful.util.getdir("​config"​) .. "/rc.lua"​ }, +
-   { "​restart",​ awesome.restart }, +
-   { "​quit",​ awesome.quit } +
-+
- +
-mymainmenu = awful.menu({ items = { { "​awesome",​ myawesomemenu,​ beautiful.awesome_icon }, +
-                                    { "open terminal",​ terminal }, +
-                                  } +
-                        }) +
- +
-mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),​ +
-                                     menu = mymainmenu }) +
--- }}} +
- +
--- {{{ Wibox +
- +
--- Create Volume Control Widget +
- ​tb_volume = widget({ type = "​textbox",​ name = "​tb_volume",​ align = "​right"​ }) +
- ​tb_volume:​buttons(awful.util.table.join( +
- awful.button({ }, 4, function () volume("​up",​ tb_volume) end), +
- awful.button({ }, 5, function () volume("​down",​ tb_volume) end), +
- awful.button({ }, 1, function () volume("​mute",​ tb_volume) end) +
- )) +
- ​volume("​update",​ tb_volume) +
- +
--- refresh the Volume Control Widget +
-tb_volume_timer = timer({ timeout = 10 }) +
-tb_volume_timer:​add_signal("​timeout",​ function () volume("​update",​ tb_volume) end) +
-tb_volume_timer:​start() +
- +
--- Moc Widget +
-tb_moc = widget({ type = "​textbox",​ align = "​right"​ }) +
- +
-function hook_moc() +
-       ​moc_info = io.popen("​mocp -i"​):​read("​*all"​) +
-       ​moc_state = string.gsub(string.match(moc_info,​ "​State:​ %a*"​),"​State:​ ",""​) +
-       if moc_state == "​PLAY"​ or moc_state == "​PAUSE"​ then +
-           ​moc_artist = string.gsub(string.match(moc_info,​ "​Artist:​ %C*"), "​Artist:​ ",""​) +
-           ​moc_title = string.gsub(string.match(moc_info,​ "​SongTitle:​ %C*"), "​SongTitle:​ ",""​) +
-           ​moc_curtime = string.gsub(string.match(moc_info,​ "​CurrentTime:​ %d*:​%d*"​),​ "​CurrentTime:​ ",""​) +
-           ​moc_totaltime = string.gsub(string.match(moc_info,​ "​TotalTime:​ %d*:​%d*"​),​ "​TotalTime:​ ",""​) +
-           if moc_artist == ""​ then +
-               ​moc_artist = "​unknown artist"​ +
-           end +
-           if moc_title == ""​ then +
-               ​moc_title = "​unknown title"​ +
-           end +
-    -- moc_title = string.format("​%.5c",​ moc_title) +
-           ​moc_string = moc_artist .. " - " .. moc_title .. "​("​ .. moc_curtime .. "/" ​.. moc_totaltime .. "​)"​ +
-           if moc_state == "​PAUSE"​ then +
-               ​moc_string = "PAUSE - " .. moc_string .. ""​ +
-           end +
-       ​else +
-           ​moc_string = "-- not playing --" +
-       end +
-       ​return moc_string +
-end +
- +
--- refresh Moc widget +
---awful.hooks.timer.register(1,​ function() tb_moc.text = '' .. hook_moc() .. ' ' end) +
-moc_timer = timer({timeout = 1}) +
-moc_timer:​add_signal("​timeout",​ function() tb_moc.text = '| ' .. hook_moc() .. ' ' end) +
-moc_timer:​start() +
- +
--- Create a CPU widget +
-jiffies = {} +
-function activecpu() +
- local s, str +
- +
- for line in io.lines("/​proc/​stat"​) do +
- local cpu,​newjiffies = string.match(line,​ "​(cpu)\ +(%d+)"​) +
- if cpu and newjiffies then +
- if not jiffies[cputhen +
- jiffies[cpu= newjiffies +
- end +
- -- The string.format prevents your task list from jumping around +
- -- When CPU usage goes above/below 10% +
- str = string.format("​%02d"​newjiffies-jiffies[cpu]) +
- +
- if str < "​31"​ then +
- str = '<​span color="​green">'​ .. str .. '</​span>'​ +
- elseif str < "​51"​ then +
- str = '<​span color="​yellow">'​ .. str .. '</​span>'​ +
- elseif str < "​70"​ then +
- str = '<​span color="​orange">'​ .. str .. '</​span>'​ +
- else +
- str = '<​span color="​red">'​ .. str .. '</​span>'​ +
- end +
- +
- s = '| CPU: ' .. str .. '% ' +
- jiffies[cpu] = newjiffies +
- end +
- end +
- +
- return s +
-end +
- +
-cpuinfo = widget({ type = "​textbox",​ name = "​cpuinfo"​ }) +
- +
--- register the hook to update the display +
--- awful.hooks.timer.register(1,​ function() cpuinfo.text = activecpu() end) +
-cpuinfo_timer = timer({timeout = 1}) +
-cpuinfo_timer:add_signal("​timeout",​ function() cpuinfo.text = activecpu() end) +
-cpuinfo_timer:​start() +
- +
- +
--- Create CPU Temp Widget +
-function activecputemp() +
- local temp +
- +
- io.input("​/sys/bus/​acpi/​devices/​LNXTHERM\:​00/​thermal_zone/​temp"​) +
- temp = io.read("​*number"​)/​1000 +
- +
- if temp < 46 then +
- temp = '<​span color="​turquoise">' ​.. temp .. '</span>'​ +
- elseif temp < 61 then +
- temp = '<​span color="​yellow">'​ .. temp .. '</span>'​ +
- elseif ​ temp < 76 then +
- temp = '<​span color="​orange">'​ .. temp .. '</​span>'​ +
- else +
- temp = '<​span color="​red">'​ .. temp .. '</​span>'​ +
- end +
- +
- return temp +
-end +
- +
-cputemp = widget({ type = "​textbox"​ , name = "​cputemp"​ }) +
- +
--- Assign a hook to update temperature +
--- awful.hooks.timer.register(1,​ function() cputemp.text = "@ " .. activecputemp() .. "​°C ​RAM: " end) +
-cputemp_timer = timer({timeout = 1}) +
-cputemp_timer:​add_signal("​timeout",​ function() cputemp.text = "@ " .. activecputemp() .. "°C | RAM: " end) +
-cputemp_timer:​start() +
- +
--- Battery status Widget +
- +
--- get the full capacity of the battery +
-for line in io.lines("/​proc/​acpi/​battery/​BAT0/​info"​) do +
- bat_stat = string.match(line,​ "last full capacity:\ +(%d+)") +
- +
- if bat_stat then +
- -- define stat_tot for reuse later for battery status +
- stat_tot = bat_stat +
- end +
-end +
- +
-function activebat() +
- local stat_actu, res +
- +
- for line in io.lines("/​proc/​acpi/​battery/​BAT0/​state"​) do +
- local present = string.match(line,​ "​present:​\ +(%a+)"​) +
- if (present == "​no"​) then +
- return ​'<span color="​red">​not present</​span>'​ +
- end +
- local status ​ =  string.match(line,​ "​remaining capacity:\ +(%d+)"​) +
- local state = string.match(line,​ "​charging state:\ +(%a+)"​) +
- if status then +
- stat_actu = status +
- end +
- if state then +
- stat_bat = state +
- end +
- end +
- +
- res = string.format("​%.2f",​ (stat_actu/​stat_tot) * 100); +
- +
- if ((stat_actu/​stat_tot) * 100)  < 10 then +
- res = '<​span color="​red">'​ .. res .. '</​span>'​ +
- elseif ((stat_actu/​stat_tot) * 100) < 20 then +
- res = '<​span color="​orange">'​ .. res .. '</​span>'​ +
- elseif ​ ((stat_actu/​stat_tot) * 100)  < 30 then +
- res = '<​span color="​yellow">'​ .. res .. '</​span>'​ +
- elseif ((stat_actu/​stat_tot) * 100) >= 100 then +
- return '<​span color="​green">​fully charged</​span>'​ +
- else +
- res = '<​span color="​green">'​ .. res .. '</​span>'​ +
- end +
- +
- if (stat_bat == '​discharging'​) then +
- stat_bat = '<​span color="​red">​discharging</​span>'​ +
- elseif (stat_bat == '​charging'​) then +
- stat_bat = '<​span color = "​green">​charging</​span>'​ +
- end +
- +
- res = res .. '% ' .. stat_bat +
- +
- +
- return res +
-end +
- +
-batinfo = widget({ type = "​textbox"​ , name = "​batinfo"​ }) +
- +
--- Assign a hook to update info +
--- awful.hooks.timer.register(1,​ function() batinfo.text = "BAT: " .. activebat() .. " |" end) +
-activebat_timer = timer({timeout = 1}) +
-activebat_timer:​add_signal("​timeout",​ function() batinfo.text = "BAT: " .. activebat() .. " |" end) +
-activebat_timer:​start() +
- +
--- Create a RAM widget giving the MB used by the RAM +
--- declare memtot for reuse below +
-memtot = 2056100 +
- +
-function activeram() +
- local active, ramusg, res +
- +
- for line in io.lines("/​proc/​meminfo"​) do +
- for key , value in string.gmatch(line,​ "​(%w+):​\ +(%d+).+"​) do +
- if key == "​Active"​ then active = tonumber(value) +
- end +
- end +
- end +
- +
- ramusg = (active/​memtot)*100 +
- +
- res = string.format("​%.2f",​ (active/​1024)) +
- +
- if ramusg < 51 then +
- res = '<​span color="​green">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- elseif ramusg < 71 then +
- res = '<​span color="​yellow">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- elseif ​ ramusg < 86 then +
- res = '<​span color="​orange">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- else +
- res = '<​span color="​red">'​ .. res .. '</​span>​MB (<span color="​green">'​ .. string.format("​%.2f",​ramusg) .. '</​span>​%)'​ +
- end +
- +
- return res +
-end +
- +
-meminfo = widget({ type = "​textbox",​ name = "​meminfo"​ }) +
- +
--- Assign a hook to update info +
--- awful.hooks.timer.register(1,​ function() meminfo.text = activeram() .. " | " ​ end) +
-meminfo_timer = timer({timeout = 1}) +
-meminfo_timer:​add_signal("​timeout",​ function() meminfo.text = activeram() .. " | " ​ end) +
-meminfo_timer:​start() +
- +
--- Create a textclock widget +
-mytextclock = awful.widget.textclock({ align = "​right"​ }) +
- +
--- Create a systray +
-mysystray = widget({ type = "​systray"​ }) +
- +
--- Create a wibox for each screen and add it +
-mywibox = {} +
-mypromptbox = {} +
-mylayoutbox = {} +
-mytaglist = {} +
-mytaglist.buttons = awful.util.table.join( +
-                    awful.button({ }, 1, awful.tag.viewonly),​ +
-                    awful.button({ modkey }, 1, awful.client.movetotag),​ +
-                    awful.button({ }, 3, awful.tag.viewtoggle),​ +
-                    awful.button({ modkey }, 3, awful.client.toggletag),​ +
-                    awful.button({ }, 4, awful.tag.viewnext),​ +
-                    awful.button({ }, 5, awful.tag.viewprev) +
-                    ) +
-mytasklist = {} +
-mytasklist.buttons = awful.util.table.join( +
-                     ​awful.button({ }, 1, function (c) +
-                                              if not c:​isvisible() then +
-                                                  awful.tag.viewonly(c:​tags()[1]+
-                                              end +
-                                              client.focus = c +
-                                              c:raise() +
-                                          end), +
-                     ​awful.button({ }, 3, function () +
-                                              if instance then +
-                                                  instance:​hide() +
-                                                  instance = nil +
-                                              else +
-                                                  instance = awful.menu.clients({ width=250 }) +
-                                              end +
-                                          end), +
-                     ​awful.button({ }, 4, function () +
-                                              awful.client.focus.byidx(1) +
-                                              if client.focus then client.focus:​raise() end +
-                                          end), +
-                     ​awful.button({ }, 5, function () +
-                                              awful.client.focus.byidx(-1) +
-                                              if client.focus then client.focus:​raise() end +
-                                          end)) +
- +
-for s = 1, screen.count() do +
-    -- Create a promptbox for each screen +
-    mypromptbox[s= awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright }) +
-    -- Create an imagebox widget which will contains an icon indicating which layout we're using. +
-    -- We need one layoutbox per screen. +
-    mylayoutbox[s] = awful.widget.layoutbox(s) +
-    mylayoutbox[s]:​buttons(awful.util.table.join( +
-                           ​awful.button({ }1, function () awful.layout.inc(layouts,​ 1) end), +
-                           ​awful.button({ }, 3, function () awful.layout.inc(layouts,​ -1) end), +
-                           ​awful.button({ }, 4, function () awful.layout.inc(layouts,​ 1) end), +
-                           ​awful.button({ }, 5, function () awful.layout.inc(layouts,​ -1) end))) +
-    -- Create a taglist widget +
-    mytaglist[s] = awful.widget.taglist(s,​ awful.widget.taglist.label.all,​ mytaglist.buttons) +
- +
-    -- Create a tasklist widget +
-    mytasklist[s] = awful.widget.tasklist(function(c) +
-                                              return awful.widget.tasklist.label.currenttags(c,​ s) +
-                                          end, mytasklist.buttons) +
- +
-    -- 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 +
-    } +
-end +
--- }}} +
- +
--- {{{ Mouse bindings +
-root.buttons(awful.util.table.join( +
-    awful.button({ }, 3, function () mymainmenu:toggle() end), +
-    awful.button({ }, 4, awful.tag.viewnext),​ +
-    awful.button({ }, 5, awful.tag.viewprev) +
-)) +
--- }}} +
- +
--- {{{ Key bindings +
-globalkeys = awful.util.table.join( +
-    awful.key({ modkey, ​          }, "​Left", ​  ​awful.tag.viewprev ​      ), +
-    awful.key({ modkey, ​          }, "​Right", ​ awful.tag.viewnext ​      ), +
-    awful.key({ modkey, ​          }, "​Escape",​ awful.tag.history.restore),​ +
- +
-    awful.key({ modkey, ​          }, "​j",​ +
-        function () +
-            awful.client.focus.byidx( 1) +
-            if client.focus then client.focus:​raise() end +
-        end), +
-    awful.key({ modkey, ​          }, "​k",​ +
-        function () +
-            awful.client.focus.byidx(-1) +
-            if client.focus then client.focus:​raise() end +
-        end), +
-    awful.key({ modkey, ​          }, "​w",​ function () mymainmenu:​show(true) ​       end), +
- +
-    -- 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), +
-    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), +
- +
-    -- Layout manipulation +
-    awful.key({ modkey, "​Shift" ​  }, "​j",​ function () awful.client.swap.byidx( ​ 1)    end), +
-    awful.key({ modkey, "​Shift" ​  }, "​k",​ function () awful.client.swap.byidx( -1)    end), +
-    awful.key({ modkey, "​Control"​ }, "​j",​ function () awful.screen.focus_relative( 1) end), +
-    awful.key({ modkey, "​Control"​ }, "​k",​ function () awful.screen.focus_relative(-1) end), +
-    awful.key({ modkey, ​          }, "​u",​ awful.client.urgent.jumpto),​ +
-    awful.key({ modkey, ​          }, "​Tab",​ +
-        function () +
-            awful.client.focus.history.previous() +
-            if client.focus then +
-                client.focus:​raise() +
-            end +
-        end), +
- +
-    -- Standard program +
-    awful.key({ modkey, ​          }, "​Return",​ function () awful.util.spawn(terminal) end), +
-    awful.key({ modkey, "​Control"​ }, "​r",​ awesome.restart),​ +
-    awful.key({ modkey, "​Shift" ​  }, "​q",​ awesome.quit),​ +
- +
-    awful.key({ modkey, ​          }, "​l", ​    ​function () awful.tag.incmwfact( 0.05)    end), +
-    awful.key({ modkey, ​          }, "​h", ​    ​function () awful.tag.incmwfact(-0.05) ​   end), +
-    awful.key({ modkey, "​Shift" ​  }, "​h", ​    ​function () awful.tag.incnmaster( 1)      end), +
-    awful.key({ modkey, "​Shift" ​  }, "​l", ​    ​function () awful.tag.incnmaster(-1) ​     end), +
-    awful.key({ modkey, "​Control"​ }, "​h", ​    ​function () awful.tag.incncol( 1)         ​end),​ +
-    awful.key({ modkey, "​Control"​ }, "​l", ​    ​function () awful.tag.incncol(-1) ​        ​end),​ +
-    awful.key({ modkey, ​          }, "​space",​ function () awful.layout.inc(layouts, ​ 1) end), +
-    awful.key({ modkey, "​Shift" ​  }, "​space",​ function () awful.layout.inc(layouts,​ -1) end), +
- +
-    -- Prompt +
-    awful.key({ modkey },            "​r", ​    ​function () mypromptbox[mouse.screen]:​run() end), +
- +
-    awful.key({ modkey }, "​x",​ +
-              function () +
-                  awful.prompt.run({ prompt = "Run Lua code: " }, +
-                  mypromptbox[mouse.screen].widget,​ +
-                  awful.util.eval,​ nil, +
-                  awful.util.getdir("​cache"​) .. "/history_eval"​) +
-              end) +
-+
- +
-clientkeys = awful.util.table.join( +
-    awful.key({ modkey, ​          }, "​f", ​     function (c) c.fullscreen = not c.fullscreen ​ end), +
-    awful.key({ modkey, "​Shift" ​  }, "​c", ​     function (c) c:​kill() ​                        ​end),​ +
-    awful.key({ modkey, "​Control"​ }, "​space", ​ awful.client.floating.toggle ​                    ), +
-    awful.key({ modkey, "​Control"​ }, "​Return",​ function (c) c:​swap(awful.client.getmaster()) end), +
-    awful.key({ modkey, ​          }, "​o", ​     awful.client.movetoscreen ​                       ), +
-    awful.key({ modkey, "​Shift" ​  }, "​r", ​     function (c) c:​redraw() ​                      ​end),​ +
-    awful.key({ modkey, ​          }, "​n", ​     function (c) c.minimized = not c.minimized ​   end), +
-    awful.key({ modkey, ​          }, "​m",​ +
-        function (c) +
-            c.maximized_horizontal = not c.maximized_horizontal +
-            c.maximized_vertical ​  = not c.maximized_vertical +
-        end) +
-+
- +
- +
--- Compute the maximum number of digit we need, limited to 9 +
-keynumber = 0 +
-for s = 1, screen.count() do +
-   ​keynumber = math.min(9, math.max(#​tags[s], keynumber));​ +
-end +
- +
--- Bind all key numbers to tags. +
--- Be careful: we use keycodes to make it works on any keyboard layout. +
--- This should map on the top row of your keyboard, usually 1 to 9. +
-for i = 1, keynumber do +
-    globalkeys = awful.util.table.join(globalkeys,​ +
-        awful.key({ modkey }, "#"​ .. i + 9, +
-                  function () +
-                        local screen = mouse.screen +
-                        if tags[screen][i] then +
-                            awful.tag.viewonly(tags[screen][i]) +
-                        end +
-                  end), +
-        awful.key({ modkey, "​Control"​ }, "#"​ .. i + 9, +
-                  function () +
-                      local screen = mouse.screen +
-                      if tags[screen][i] then +
-                          awful.tag.viewtoggle(tags[screen][i]) +
-                      end +
-                  end), +
-        awful.key({ modkey, "​Shift"​ }, "#"​ .. i + 9, +
-                  function () +
-                      if client.focus and tags[client.focus.screen][i] then +
-                          awful.client.movetotag(tags[client.focus.screen][i]) +
-                      end +
-                  end), +
-        awful.key({ modkey, "​Control",​ "​Shift"​ }, "#"​ .. i + 9, +
-                  function () +
-                      if client.focus and tags[client.focus.screen][i] then +
-                          awful.client.toggletag(tags[client.focus.screen][i]) +
-                      end +
-                  end)) +
-end +
- +
-clientbuttons = 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)) +
- +
--- Set keys +
-root.keys(globalkeys) +
--- }}} +
- +
--- {{{ Rules +
-awful.rules.rules = { +
-    -- All clients will match this rule. +
-    { rule = { }, +
-      properties = { border_width = beautiful.border_width,​ +
-                     ​border_color = beautiful.border_normal,​ +
-                     focus = true, +
-                     keys = clientkeysl,​ +
-      ​floating = false, +
-                     ​buttons = clientbuttons } }, +
-    { rule = { class = "​MPlayer"​ }, +
-      properties = { floating = true } }, +
-    { rule = { class = "​pinentry"​ }, +
-      properties = { floating = true } }, +
-    { rule = { class = "​gimp"​ }, +
-      properties = { floating = true} }, +
-    -- Set Firefox to always map on tags number 4 of screen 1. +
-    { rule = { class = "​Firefox"​ }, +
-      properties = { tag = tags[1][4], switchtotag = true } }, +
-    -- Set Pidgin to always map on tags number 5 of screen 1. +
-    { rule = { class = "​Pidgin"​ }, +
-      properties = { tag = tags[1][5], switchtotag = true } }, +
-    -- Set Opera to always map on tags number 4 of screen 1. +
-    { rule = { class = "​Opera"​ }, +
-      properties = { tag = tags[1][4], switchtotag = true } }, +
-    -- Set Okular to always map on tags number 2 of screen 1. +
-    { rule = { class = "​Okular"​ }, +
-      properties = { tag = tags[1][2], switchtotag = true } }, +
-+
--- }}} +
- +
--- {{{ Signals +
--- Signal function to execute when a new client appears. +
-client.add_signal("​manage",​ function (c, startup) +
-    -- Add a titlebar +
-    -- awful.titlebar.add(c,​ { modkey = modkey }) +
- +
-    -- Enable sloppy focus +
-    c:​add_signal("​mouse::​enter",​ function(c) +
-        if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier +
-            and awful.client.focus.filter(c) then +
-            client.focus = c +
-        end +
-    end) +
- +
-    if not startup then +
-        -- Set the windows at the slave, +
-        -- i.e. put it at the end of others instead of setting it master. +
-        -- awful.client.setslave(c) +
- +
-        -- Put windows in a smart way, only if they does not set an initial position. +
-        if not c.size_hints.user_position and not c.size_hints.program_position then +
-            awful.placement.no_overlap(c) +
-            awful.placement.no_offscreen(c) +
-        end +
-    end +
-end) +
- +
-client.add_signal("​unfocus",​ function(c) c.border_color = beautiful.border_focus end) +
-client.add_signal("​focus",​ function(c) c.border_color = beautiful.border_normal end) +
--- }}} +
- +
---  Launch the network-manager applet +
-awful.util.spawn('​nm-applet'​) +
---awful.util.spawn('​conky'​) +
-</​code>​+
  
 ==== Astuce permettant de tester sans risques son rc.lua ==== ==== Astuce permettant de tester sans risques son rc.lua ====
Ligne 1208: Ligne 371:
 === Utiliser Xephyr pour tester la configuration === === 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. 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.+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//, ​parexemple ​//​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]]**):​ 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]]**):​
 <​code>​Xephyr -ac -br -noreset -screen 1024x600 :1 &</​code>​ <​code>​Xephyr -ac -br -noreset -screen 1024x600 :1 &</​code>​
 Une fois ceci fait, lancez awesome: Une fois ceci fait, lancez awesome:
 <​code>​DISPLAY=:​1.0 awesome -c ~/​.config/​awesome/​rc.test.lua</​code>​ <​code>​DISPLAY=:​1.0 awesome -c ~/​.config/​awesome/​rc.test.lua</​code>​
-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//​ ;-)+Et voilà, plus qu'à vérifier que les changements apportés conviennent et le cas échéant, remplacer son //​rc.lua// ​parle //​rc.test.lua//​ ;-)
 ===="​Astuces"​ en rapport avec des logiciels annexes==== ===="​Astuces"​ en rapport avec des logiciels annexes====
  
 ===Conky=== ===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**:​+Si vous desirez que votre conky (ou vos conky) ne puissient pas etre recouverts ​parles ​fenetres il suffit pour cela de rajouter (ou modifier) ces lignes dans votre **conkyrc**:​
 <​code>​own_window_type panel <​code>​own_window_type panel
 own_window_hints below,​sticky,​skip_taskbar,​skip_pager</​code>​ own_window_hints below,​sticky,​skip_taskbar,​skip_pager</​code>​
Ligne 1224: Ligne 387:
 ====Screenshots==== ====Screenshots====
  
-A venir, merci de ne pas envahir cette section ;) Elle aura simplement pour but de donner un apercu des possibilitées ​;) +A venir, merci de ne pas envahir cette section ;) Elle aura simplement pour but de donner un apercu des possibilités ​;)
- +
- +
-===== Configuration Version 2 (Hardy et Jaunty) ===== +
- +
- +
-Pour personnaliser Awesome, il suffit de [[:​tutoriel:​comment_editer_un_fichier|modifier le fichier]] **~/​.awesomerc**. +
- +
-Voici la syntaxe : +
- +
-<​file>#​ commentaire +
-section +
-+
-    variable = valeur +
-    sous_section +
-    { +
-        variable = valeur +
-    } +
-    type widget +
-    { +
-        variable = valeur +
-        sous_section +
-        { +
-            variable = valeur +
-        } +
-    } +
-}</​file>​ +
- +
-Il y a plusieurs sections : +
-screen 0 : Ecran numéro 1,  +
-rules : Pour paramétrer des règles d'​affichage pour certaines fenêtres en particulier,​  +
-mouse : pour paramétrer la souris,  +
-keys : pour les raccourcis clavier +
- +
-Donc notre fichier de configuration doit ressembler à ceci au départ : +
- +
-<​file>​screen 0 +
-+
-+
- +
-rules +
-+
-+
- +
-mouse +
-+
-+
- +
-keys +
-+
-}</​file>​ +
- +
-=== La barre de status === +
- +
-La barre de status est en réalité la barre de tâche, on peut lui donner de nombreuses possibilités,​ avant tout, il faut la créer : +
- +
-<​code>​screen 0 +
-+
-    statusbar mystatusbar # vous pouvez modifier ce nom +
-    { +
-        position= "​top"​ # bottom - left - right +
-    } +
-}</​code>​ +
- +
-Nous ajouterons des widgets plus tard. Pour l'​instant nous allons paramétrer l'​écran +
- +
-Il faudra déterminer la couleur des fenêtres sélectionnées (focus), des normales (normal), et des urgentes (urgent) +
- +
-<​code>​screen 0 +
-+
-    styles +
-    { +
-        normal +
-        { +
-            font = "sans 9" # police d'​écriture +
-            fg = "#​dddddd"​ # couleur du texte +
-            bg = "#​444444"​ # couleur de fond +
-            border = "#​555555"​ # couleur de la bordure +
-        } +
-        focus +
-        { +
-            fg = "#​ffffff"​ +
-            bg = "#​535d6c"​ +
-            border = "#​285577"​ +
-        } +
-        urgent +
-        { +
-            fg = "#​111111"​ +
-            bg = "#​ff4500"​ +
-        } +
-    } +
-}</​code>​+
  
-Il vous suffit de modifier les couleurs (codées en hexadécimal) pour personaliser.+=== Avec ImageMagick ===
  
 +Une astuce simple pour prendre un screenshot est d'​utiliser ImageMagick en tapant dans votre console:
 +<​code>​import screenshot.png</​code>​
  
 +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 ===== ===== Voir aussi =====
  
Ligne 1327: Ligne 402:
   * [[http://​forum.malekal.com/​awesome-window-manager-t21608.html|Tutoriel complet]]   * [[http://​forum.malekal.com/​awesome-window-manager-t21608.html|Tutoriel complet]]
   * **(en)** [[http://​awesome.naquadah.org/​wiki/​Ubuntu_Hardy|Installation sous Hardy]]   * **(en)** [[http://​awesome.naquadah.org/​wiki/​Ubuntu_Hardy|Installation sous Hardy]]
-  ​* **(en)** [[http://​awesome.naquadah.org/​wiki/​index.php?​title=Awesome-3-git-Ubuntu-Intrepid&​oldid=2100]| Installation Sous Intrepid]] +  *  [[http://projects.gw-computing.net/​projects/preciousWidgets Precious]]
-  ​*  [[http://rolinh.gw-computing.net/​~robin/conf/​rc.lua.html|rc.lua de Rolinh]] +
-  *  [[http://​rolinh.gw-computing.net/​~robin/​conf/​rc.fredr.lua.html|rc.lua de fredr]]+
  
 ---- ----
  
 //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK // //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK //
  • awesome.1323695541.txt.gz
  • Dernière modification: Le 15/12/2011, 15:18
  • (modification externe)