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:18]
rolinh Suppression des liens invalides et ajout d'un lien
awesome [Le 21/02/2020, 19:02] (Version actuelle)
91.169.249.112
Ligne 25: Ligne 25:
  
 ===== Installation ===== ===== Installation =====
 +
 +<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. ​ 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 69: Ligne 68:
 Il faut commencer par créer le dossier qui contiendra les fichiers de configuration dans le home: Il faut commencer par cré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 par dé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
  
  
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 
Ligne 151: Ligne 150:
 -- 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>​
  
  
Ligne 173: Ligne 173:
 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]''​ 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 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 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.
  
-=== 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),
Ligne 276: Ligne 274:
 <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 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>​
  
-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 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 [[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]].
-<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 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 ​;) 
 + 
 +=== 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 1233: 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]]
-  *  [[http://git.rolinh.ch/?​p=conf.git&​a=tree&​hb=b57b1405b4ca890212b8a735770ba231ac128958&​h=0ab7ce296efa0a11d4f58bd56d53867bb8e7594e&​f=config/awesome|configuration et widgets de Rolinh]]+  *  [[http://projects.gw-computing.net/projects/preciousWidgets Precious]]
  
 ---- ----
  
 //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK // //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK //
  • awesome.1323695899.txt.gz
  • Dernière modification: Le 15/12/2011, 15:18
  • (modification externe)