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 06/02/2012, 14:29]
rolinh ajout note precious
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.
  
 === Precious (Widgets de Rolinh) === === Precious (Widgets de Rolinh) ===
-<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://git.rolinh.ch/?p=precious.git&​a=summary|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 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 à noter cependant qu'il est fort possible, ​voir très probable, qu'ils aient changés ​évolués ​et que d'​autres soient apparus depuis le temps de la capture d'​écran.+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.
  
-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 recomandé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.+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. 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? 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?
Ligne 280: Ligne 282:
 === 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 ;-)
 +
 +{{:​precious-battery.png|}}
 +
 +Les informations détaillées ne sont affichées qu'au survol de l'​applet (en haut à gauche sur l'​image) avec la souris.
 <note important>​Si le widget ne fonctionne pas, il faut vérifier le numéro de la batterie pour le remplacer dans le code de battery.lua. Pour cela, allez faire un tour dans ''/​proc/​acpi/​battery''​ et vérifiez si c'est dans BAT0 ou BAT1 qu'il y a les infos. Chez moi, les infos sont dans BAT0 mais si chez vous c'est dans BAT1 il faut alors remplacer en conséquence la première ligne dans le widget (battery.lua).</​note>​ <note important>​Si le widget ne fonctionne pas, il faut vérifier le numéro de la batterie pour le remplacer dans le code de battery.lua. Pour cela, allez faire un tour dans ''/​proc/​acpi/​battery''​ et vérifiez si c'est dans BAT0 ou BAT1 qu'il y a les infos. Chez moi, les infos sont dans BAT0 mais si chez vous c'est dans BAT1 il faut alors remplacer en conséquence la première ligne dans le widget (battery.lua).</​note>​
 Il suffit d'​include le widget: Il suffit d'​include le widget:
Ligne 288: Ligne 294:
  
 === 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 455: Ligne 362:
 === Vicious === === Vicious ===
 Tout d'​abord,​ une bonne idée est d'​aller faire un tour sur [[http://​sysphere.org/​~anrxc/​j/​archives/​2009/​07/​09/​vicious_widgets_for_awesome_wm/​index.html|le site officiel de Vicious]], ou sur [[http://​awesome.naquadah.org/​wiki/​Vicious|la section Vicious du wiki officiel d'​Awesome]],​ avant de télécharger le code des widgets sur [[http://​git.sysphere.org/​vicious/​|le dépôt Git officiel]]. Tout d'​abord,​ une bonne idée est d'​aller faire un tour sur [[http://​sysphere.org/​~anrxc/​j/​archives/​2009/​07/​09/​vicious_widgets_for_awesome_wm/​index.html|le site officiel de Vicious]], ou sur [[http://​awesome.naquadah.org/​wiki/​Vicious|la section Vicious du wiki officiel d'​Awesome]],​ avant de télécharger le code des widgets sur [[http://​git.sysphere.org/​vicious/​|le dépôt Git officiel]].
-==== Exemple de rc.lua ==== 
-Pour les flemmard qui ne veulent pas tout écrire eux-même ou pour ceux qui veulent s'en inspirer, voici mon rc.lua complet: 
-<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[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 
--- 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 1132: 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 1141: 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=precious.git&​a=summarywidgets de Rolinh]]+  *  [[http://projects.gw-computing.net/​projects/​precious| ​Widgets Precious]]
  
 ---- ----
  
 //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK // //​Contributeurs : x0rg62, rhaamo, [[utilisateurs:​zobi8225]],​[[:​utilisateurs:​Sherwood51|Rolinh]],​ TraGiKomiK //
  • awesome.1328534967.txt.gz
  • Dernière modification: Le 06/02/2012, 14:29
  • par rolinh