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
Dernière révision Les deux révisions suivantes
awesome [Le 06/02/2012, 14:29]
rolinh ajout note precious
awesome [Le 01/09/2022, 00:02]
moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 10: Ligne 10:
  
  
-Dans sa conception, awesome ressemble assez à [[http://​fr.wikipedia.org/​wiki/​Ion_(logiciel)|ion]] ou encore [[wmii|Wmii]] .+Dans sa conception, awesome ressemble assez à [[https://​fr.wikipedia.org/​wiki/​Ion_(logiciel)|ion]] ou encore [[wmii|Wmii]] .
  
  
Ligne 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 53: Ligne 52:
 =====Configuration Version 3 (Karmic et ultérieur) ===== =====Configuration Version 3 (Karmic et ultérieur) =====
  
-La syntaxe du fichier de configuration a complètement changé avec la version 3 d'​Awesome. Celui-ci utilise désormais le langage [[http://​fr.wikipedia.org/​wiki/​Lua|lua]],​ ce qui facilite grandement la personnalisation.+La syntaxe du fichier de configuration a complètement changé avec la version 3 d'​Awesome. Celui-ci utilise désormais le langage [[https://​fr.wikipedia.org/​wiki/​Lua|lua]],​ ce qui facilite grandement la personnalisation.
  
 En effet, un des intérêts principaux d'​Awesome est de se forger un environnement entièrement personnalisé et dans lequel on se sent à l'aise et productif. En effet, un des intérêts principaux d'​Awesome est de se forger un environnement entièrement personnalisé et dans lequel on se sent à l'aise et productif.
Ligne 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 454: Ligne 361:
  
 === 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 [[https://​sysphere.org/​~anrxc/​j/​archives/​2009/​07/​09/​vicious_widgets_for_awesome_wm/​index.html|le site officiel de Vicious]], ou sur [[http://​awesome.naquadah.org/​wiki/​Vicious|la section Vicious du wiki officiel d'​Awesome]],​ avant de télécharger le code des widgets sur [[http://​git.sysphere.org/​vicious/​|le dépôt Git officiel]].
-==== 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.txt
  • Dernière modification: Le 11/09/2022, 12:01
  • par moths-art