Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/06/2010, à 20:13

wlourf

Postez vos scripts Lua pour Conky !

Bonsoir à tous ceux pour qui chaque pixel du bureau compte,

J'ouvre ce topic suite aux discussions sur le topic des conky pour discuter des scripts Lua dans conky.
Lua est un langage de script léger et  facile a utiliser qui permet d'ajouter de nouvelles fonctionnalités à nos conky, on l'utilise souvent avec Cairo pour dessiner des choses sympathiques et colorées dans son conky mais aussi pour manipuler du texte.

Quelques liens (an anglais) :
doc Lua : http://www.lua.org/manual/5.1/index.html
doc Cairo : http://cairographics.org/documentation/
Quelques captures d'écrans :
Conky hardcore : http://conky.linux-hardcore.com/?page_id=2243

Pour utiliser Lua et Cairo avec conky, vous devez avoir la version de conky 1.7.2 installée, ou mieux la 1.8.0 qui apporte plus de fonctionnalité AVEC le support pour Lua,
conky -v doit vous retourner ça au minimum :

  Lua bindings:
   * Cairo
   * Imlib2

Si ce n'est pas le cas, installez le paquet conky-all ou compilez les sources avec les options (pour la 1.8.0) :

--enable-lua  --enable-lua-cairo --enable-lua-imlib2

Pour appeler un script Lua dans son conky, dans la section avant-TEXT, utiliser cette ligne :

lua_load ~/chemin/script.lua

Pour appeler une fonction du script chargé, dans la section avant-TEXT, utiliser cette ligne (pour appeler le script Lua AVANT d'afficher le conky) :

lua_draw_hook_pre nom_de_la_fonction

ou (pour appeler le script Lua APRES l'affichage du conky)

lua_draw_hook_post nom_de_la_fonction

Dans le script Lua la fonction à appeler sera précédée de conky_ ainsi :

function conky_nom_de_la_fonction()
end

A noter que l'on peut passer des arguments aux fonctions.

Si votre fonction Lua retourne du texte, on peut afficher ce résultat dans conky (section TEXT)

${lua nom_de_la_fonction parametres}

Si votre fonction  Lua retourne des chiffres, il existe aussi les variables conky suivantes :

$lua_bar
$lua_gauge
$lua_graph

Plus d'info sur les variables conky ici et sur les variables de configuration (section avant-TEXT) ici et aussi les fonctions conky utilisables dans Lua : ici, par exemple pour récupérer la taille de la fenêtre du conky.


Le truc super-important : il faut qu'il y ait au moins une ligne (vide ou non) après TEXT dans votre conkyrc sinon ça ne marchera pas mad
Si vos scripts ne fonctionnent pas, lancez le conky en mode console et postez l'erreur retournée :

conky -c /chemin/conkyrc

__________________________________________________________________________________

Allez pour la route, quelques exemples trouvés sur la toile, ils necessitent un peu d'entrainement tongue
http://forum.ubuntu-it.org/index.php/topic,290268.msg2831607.html#msg2831607

55428894425314035935_thumb.jpg

http://forum.ubuntu.ru/index.php?topic=63273.msg640444#msg640444

s_1266897671_0fdd06e098.png

Le dernier de ma pomme big_smile

1271696006.png

Totalement inutile ... donc indispensable !

Dernière modification par wlourf (Le 15/06/2010, à 22:48)

Hors ligne

#2 Le 09/06/2010, à 08:23

iuchiban

Re : Postez vos scripts Lua pour Conky !

Salut,

C'est impressionnant ce qui peut être fait comme truc avec lua et conky yikes
Pour le moment je ne l'utilise pas encore vu que je viens de le découvrir, mais je m'abonne au sujet big_smile


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#3 Le 09/06/2010, à 15:44

Gardouille

Re : Postez vos scripts Lua pour Conky !

Salut,

Tout d'abord, respect pour ce que t'as présenté jusque là^^

Sinon, j'ai téléchargé l'archive sur le forum russe pour le deuxième exemple. Et dans les commentaires du script .lua, on peut voir ça:
"
Shadowed clock by wlourf (10 jan. 2010) - стрелки часов с тенью
calendar wheel by Wlourf (14 jan. 2010) - календарь
"

Donc, si c'est bien toi, est ce que tu saurais détaillé ce qui est nécessaire pour bien faire fonctionner conky avec ce script?

J'ai essayé, mais j'obtiens ceci:
monconky.th.png

J'ai bien conky 1.8.0

Si tu as une idée tongue

Merci pour ce topic et ton "petit" script du topic conky wink

Dernière modification par Gardouille (Le 10/06/2010, à 12:29)

Hors ligne

#4 Le 09/06/2010, à 17:09

chepioq

Re : Postez vos scripts Lua pour Conky !

@Gardouille

Chez moi le script fonctionne, j'ai la même image que celle du forum russe.
J'ai juste une erreur qui s'affiche en console:

[dominique@localhost calendar]$ conky -c conkyrc1
Conky: desktop window (1c00170) is subwindow of root window (15a)
Conky: window type - override
Conky: drawing to created window (0x4a00001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_widgets execution failed: ...dominique/Téléchargements/calendar/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: ...dominique/Téléchargements/calendar/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: ...dominique/Téléchargements/calendar/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: ...dominique/Téléchargements/calendar/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: ...dominique/Téléchargements/calendar/calendar3_1.lua:1040: attempt to compare nil with number

Que donne le retour de la commande

conky -v

Tout est dans tout et réciproquement....

Hors ligne

#5 Le 09/06/2010, à 17:19

wlourf

Re : Postez vos scripts Lua pour Conky !

chez moi aussi ça fonctionne (plus ou moins, j'ai commenté la ligne 995) mais là tu t'attaques à du lourd, un mix de 4 ou 5 scripts en russe en plus ! mais on va essayer de t'aider  !
Lance le script en console avec

conky -c /chemin/conkyrc

et envoie nous l'erreur + le conky -v comme à dit chepioq
A vue de nez je dirais que tu n'as pas le support imlib installé, mais conky -v le confirmera ou non !

Dernière modification par wlourf (Le 09/06/2010, à 17:25)

Hors ligne

#6 Le 09/06/2010, à 21:25

Gardouille

Re : Postez vos scripts Lua pour Conky !

conky -v
Conky 1.8.0 compiled Thu Apr  1 14:52:48 UTC 2010 for Linux 2.6.26-2-686 (i686)

Compiled in features:

System config file: /etc/conky/conky.conf
Package library path: /usr/lib/conky

 X11:
  * Xdamage extension
  * XDBE (double buffer extension)
  * Xft
  * ARGB visual

 Music detection:
  * MPD
  * MOC

 General:
  * math
  * hddtemp
  * portmon
  * Curl
  * RSS
  * Weather (METAR)
  * Weather (XOAP)
  * wireless
  * support for IBM/Lenovo notebooks
  * nvidia
  * eve-online
  * config-output
  * Imlib2
  * ALSA mixer support
  * apcupsd
  * iostats
  * ncurses
  * Lua

  Lua bindings:
   * Cairo
   * Imlib2

Il me semble que j'obtiens également des erreurs au lancement de conky, mais je ne peux pas les donner maintenant, je n'ai pas l'affichage graphique depuis mon poste.

Je vous accorde que c'est du lourd pour les script russes lol, mais en tout cas, merci pour l'intérêt tongue

Je poste les erreurs demain et j'essaye de me repancher là dessus demain matin quand je serai sur mon poste.


Edit:

Bonjour,
Tout d'abord, j'obtiens les mêmes erreurs que toi, chepioq.

Ensuite, j'ai commenté la ligne 995, comme indiqué par wlourf

--		draw_pie(tbl, pt)

Ça fonctionne un peu mieux:
monconkybis.th.png

Je n'ai pas la liste des processus, mais c'est pas très grave. Si vous avez une idée, tant mieux sinon, j'arriverai à me "contenter" de script plein de commentaires russes big_smile

Dernière modification par Gardouille (Le 10/06/2010, à 12:29)

Hors ligne

#7 Le 10/06/2010, à 11:59

chepioq

Re : Postez vos scripts Lua pour Conky !

J'ai exactement le même rendu, mais sans commenter la ligne 995, et je n'ai pas non plus les processus... (je verrai ça ce soir, là je suis au boulot sur windows...)
Par contre on peut le mettre en français, il suffit pour cela d'ajouter:

${time}

juste après TEXT,et de mettre :

xftalpha 0.0

de mémoire il est à 0.5 dans le script original...

Dernière modification par chepioq (Le 10/06/2010, à 12:06)


Tout est dans tout et réciproquement....

Hors ligne

#8 Le 10/06/2010, à 12:18

Gardouille

Re : Postez vos scripts Lua pour Conky !

chepioq a écrit :

Par contre on peut le mettre en français, il suffit pour cela d'ajouter:

${time}

juste après TEXT

Ça fonctionne, merci.

chepioq a écrit :

et de mettre :

xftalpha 0.0

de mémoire il est à 0.5 dans le script original...

Par contre, je ne vois pas de différence entre 0.0 et 0.5

Edit:
J'ai remis la ligne 995 et tadaa:
monconkyok.th.png

J'ai bien les processus. Me demander pas le comment du pourquoi lol.
Par contre, comme vous pouvez le constater, le nom des processus est pas super lisible, la faute aux "trucs" gris et jaune qui pointent vers différents jour du calendrier. La solution serait-elle dans le "xftalpha" dont parle chepioq?

Dernière modification par Gardouille (Le 10/06/2010, à 12:27)

Hors ligne

#9 Le 10/06/2010, à 17:35

loke

Re : Postez vos scripts Lua pour Conky !

Bonjour

Je me suis lancé sur le même conky et voila le résultat

78811d370c50eb7d83690d4ca7d73t.jpg

~$ conky -v
Conky 1.8.0 compiled Thu May 13 15:01:31 UTC 2010 for Linux 2.6.24-27-xen (i686)

Compiled in features:

System config file: /etc/conky/conky.conf
Package library path: /usr/lib/conky

 X11:
  * Xdamage extension
  * XDBE (double buffer extension)
  * Xft
  * ARGB visual

 Music detection:
  * MPD
  * MOC

 General:
  * math
  * hddtemp
  * portmon
  * Curl
  * RSS
  * Weather (METAR)
  * Weather (XOAP)
  * wireless
  * support for IBM/Lenovo notebooks
  * nvidia
  * eve-online
  * config-output
  * Imlib2
  * ALSA mixer support
  * apcupsd
  * iostats
  * ncurses
  * Lua

  Lua bindings:
   * Cairo
   * Imlib2

Dans mon terminal

~$ conky -c conkyrc1
Conky: desktop window (22000a9) is subwindow of root window (1ad)
Conky: window type - override
Conky: drawing to created window (0x4800001)
Conky: drawing to double buffer
sh: vnstat: not found
sh: vnstat: not found
sh: vnstat: not found
sh: vnstat: not found
sh: vnstat: not found
sh: vnstat: not found
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:917: bad argument #2 to 'format' (number expected, got nil)
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:917: bad argument #2 to 'format' (number expected, got nil)
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:913: attempt to perform arithmetic on field 'value' (a nil value)
Conky: llua_do_call: function conky_widgets execution failed: /home/vlad/scripts/calendar3_1.lua:1040: attempt to compare nil with number

une idée du problème pour la transparence et l'affichage décalé  ?

Dernière modification par loke (Le 10/06/2010, à 18:44)

Hors ligne

#10 Le 10/06/2010, à 18:49

wlourf

Re : Postez vos scripts Lua pour Conky !

@loke, dans le terminal avant d'avoir tous les même messages d'erreur qui se répètent, tu dois avoir un message qui te dit ou se trouve le numéro de ligne qui pose problème.
Edit : je viens de voir ton edit loke, j'avais les mêmes erreurs que toi jusqu'à ce que j'applique la méthode ci-dessous. Pour la transparence, tu aurais pas compiz qui tourne aussi ? pour le décalage, ça doit s'ajuster dans la partie TEXT du conky non ?


Sinon, j'ai réussi à le faire fonctionner sans avoir de messages d'erreurs dans le terminal. Voici une méthode:
0-spécifier le chemin vers le script lua à la ligne 105 : lua_load ...
1- virer toutes les lignes avec vnstat dans le conky (je ne l'utilise pas)
2- ajouter ${time} pour avoir le calendrier en français, par contre je n'arrive pas à cacher uniquement cette partie du conky, peut-on mettre l'alpha à zéro pour une partie donnée comme on modifie les couleurs avec $color
3- adapter l'interface internet à son pc, eth1 chez moi, ça donne ça pour la fin du conkyrc

lua_load ~/scripts/olgmen/calendar3_1.lua
lua_draw_hook_pre widgets

TEXT
${goto 240}Total:${goto 300}${totaldown eth1}
${goto 240}Down:${goto 300}${downspeedf eth1}
${voffset 230}${goto 240}Up:${goto 300}${upspeedf eth1}
${goto 240}Total:${goto 300}${totalup eth1}
${voffset 280}
${time}

Ensuite dans le script Lua : j'ai modifié les lignes 909 à 932 comme ceci (on remplace les valeurs nulles par zéro ou une chaine vide, ces valeurs nulles n'apparaissent qu'au lancement du conky on dirait) :

if draw_bg then	draw_dat_pie(0, 1, radius, bg_colour, 1) end
-- сбрасываем значение p на 0
	local p = 0
-- загружаем в f значение
	if t[1].value== nil then t[1].value=0 end ----------AJOUT
	local f = t[1]['value'] / 100

	for i in pairs(t) do
		local v = t[i]['value']
		if v==nil then v=0 end ----------------------------AJOUT
		if t[i].name==nil then t[i].name="" end -------------AJOUT
		local str = string.format('%.1f %s', v, t[i]['name'])
		v = v / 100
-- если используем тень, тогда загружаем данные тени
		if shade then
			draw_dat_pie(p, p + v, radius * 0.94, fg_colour, v / p, str)
-- иначе загружаем данные без тени
		else
			draw_dat_pie(p, p + v, radius * 0.94, fg_colour, 1, str)
		end


		p = p + v
	end

Pareil pour le bloc vers la ligne 1041 :

		function addzero100(num)
		if num==nil then num=0 end ---------------AJOUT
		if tonumber(num) < 10 then
		return "00" .. num
		elseif tonumber(num) <100 then
		return "0" .. num
		else
		return num
		end
	end

Enfin adapter les lignes 1383 et 1385 avec votre interface (eth1 ici), le chiffre juste après eth1 est la vitesse maxi en kb/s de votre connexion

equalizer(cr, 'downspeedf', 'eth1', 1000, 10, CAIRO_LINE_CAP_ROUND, 215, 111, 1, 12, 2, 0x606070, 0.5, 0xffdf00, 0.5, 0xff8700, 1, 80, true, 1, true, 0xff0000, 0.5, 90)

equalizer(cr, 'upspeedf', 'eth1', 100, 10, CAIRO_LINE_CAP_ROUND, 215, 317, 1, 12, 2, 0x606070, 0.5, 0xffdf00, 0.5, 0xff8700, 1, 80, true, 1, true, 0xff0000, 0.5, 90)

Enfin pour formater la date différement en français le "." final est déjà compris dans le format, il faut donc mettre %a à la place de %a. (ligne 488 à peu près !)

local dt = os.date("%a %d %b.",s2),os.date("%d",s2),os.date("%b",s2)

même avec ça, ça fonctionnera

local dt = os.date("%a %d %b.",s2)

Pour les formats de date c'est ici, j'espère que ça ira chez vous ! wink
En tous cas bravo à olgmen pour cette intégration de scripts même si c'est un peu dur de s'y retrouver !

Dernière modification par wlourf (Le 10/06/2010, à 18:54)

Hors ligne

#11 Le 10/06/2010, à 19:32

chepioq

Re : Postez vos scripts Lua pour Conky !

@wlourf
J'ai fait tes modifications, et cela fonctionne chez moi sans messages d'erreurs.
Pour le ${time} j'ai trouvé une solution en étudiant le man strftime (c'est cette fonction qu'utilise le time de conky)
au lieu de  ${time} tu mets

${time %t}

Le calendrier est en français et je n'ai pas le time du conky qui s'affiche même avec un "xftalpha 1.0"

Ne me demande pas pourquoi, mais cela fonctionne chez moi.


Tout est dans tout et réciproquement....

Hors ligne

#12 Le 10/06/2010, à 19:49

chepioq

Re : Postez vos scripts Lua pour Conky !

@loke
Pour l'affichage décalé, cela vient du fait que tu as ajouté ${time} pour avoir le calendrier en français.
Il faut modifier le ${voffset 30} de la première ligne après ${time} et le mettre à 5.

TEXT
${time %t}
${voffset 5}${goto 240}${color 9999aa}Month:${goto 300}${execi 60 vnstat -m | grep "`LANG=en_GB.UTF-8 date +"%b '%y"`"| awk '{print $3 $4}'}
..........

Tout est dans tout et réciproquement....

Hors ligne

#13 Le 10/06/2010, à 20:03

wlourf

Re : Postez vos scripts Lua pour Conky !

chepioq a écrit :

@wlourf
J'ai fait tes modifications, et cela fonctionne chez moi sans messages d'erreurs.
Pour le ${time} j'ai trouvé une solution en étudiant le man strftime (c'est cette fonction qu'utilise le time de conky)
au lieu de  ${time} tu mets

${time %t}

Le calendrier est en français et je n'ai pas le time du conky qui s'affiche même avec un "xftalpha 1.0"

Ne me demande pas pourquoi, mais cela fonctionne chez moi.

Génial!! merci chepioq!
le %t c'est pour une tabulation, ça marche aussi avec le %n (new line)

Hors ligne

#14 Le 10/06/2010, à 21:05

loke

Re : Postez vos scripts Lua pour Conky !

wlourf a écrit :

@loke, dans le terminal avant d'avoir tous les même messages d'erreur qui se répètent, tu dois avoir un message qui te dit ou se trouve le numéro de ligne qui pose problème.
Edit : je viens de voir ton edit loke, j'avais les mêmes erreurs que toi jusqu'à ce que j'applique la méthode ci-dessous. Pour la transparence, tu aurais pas compiz qui tourne aussi ? pour le décalage, ça doit s'ajuster dans la partie TEXT du conky non ?

merci pour ta réponse je vient de testé est j'ai du faire une erreur sur calendar3_1.lua pars-qu'il ne fonction plus, tu pourrai me faire un pack avec le tien? sa sera plus facile est puis sa risque de servir a d'autre personne.

pour ce qui est de la transparence je n'utilise pas compiz.

Hors ligne

#15 Le 10/06/2010, à 22:31

wlourf

Re : Postez vos scripts Lua pour Conky !

@loke, voici celui que j'ai modifié http://dl.free.fr/i9mX2bVi6

Sinon, comme promis j'ai mis à jour mon petit "text widget" : on peut maintenant choisir l'orientation du dégradé, appliquer un dégradé radial ou encore aligner le texte par rapport au point (x,y).


En image :
93d71adfac0fc65adf17bc15467act.jpg

Edit : La dernière version est téléchargeable sur deviantArt


Petite précisions pour Lua
Le seul truc où il faut faire attention, c'est bien mettre les virgules après chaque élément et bien fermer les accolades (gedit met en surbrillance les accolades), tout se configure au début du script Lua dans la table text_settings, qui elle même contient une table pour chaque texte à afficher, et chaque texte à afficher peut contenir lui même des tables (les tables sont entre { et }) ... et ainsi de suite
Exemple d'une table extraite de la table text_settings:

        {--afficher un texte vertical (angle=-90), avec un dégradé nw 5 couleurs
        text="texte vertical",
        x=30,
        y=450,
        colour={{0         ,0xFF0000,1},
                {0.25    ,0xFFFF00,1},
                {0.50    ,0x00FF00,1},
                {0.75    ,0x00FFFF,1},
                {1         ,0x0000FF,1}
                },
        angle=-90,
        font_name="Clarendon",
        font_size=40,
        orientation="nw",
        },

Cette table sans nom contient la table "couleur" qui contient 5 éléments, chacun de ces 5 éléments est une table de 3 éléments ... tongue
Chaque élément d'une table est séparé par une virgule et une virgule après le dernier élement ne pose pas de problème (ex après orientation="nw") ... bon courage !

Dernière modification par wlourf (Le 12/01/2011, à 18:55)

Hors ligne

#16 Le 11/06/2010, à 00:01

Leyna

Re : Postez vos scripts Lua pour Conky !

Merci pour toutes ces explications wlourf, ça devient petit à petit plus clair à mes yeux smile

Hors ligne

#17 Le 11/06/2010, à 09:15

loke

Re : Postez vos scripts Lua pour Conky !

wlourf a écrit :

@loke, voici celui que j'ai modifié http://dl.free.fr/i9mX2bVi6

Merci wlourf sa marche parfaitement smile

Hors ligne

#18 Le 13/06/2010, à 09:05

Fenouille84

Re : Postez vos scripts Lua pour Conky !

Je poste pour suivre le fil !!
Super idée wink


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#19 Le 14/06/2010, à 16:17

Ph3nix_

Re : Postez vos scripts Lua pour Conky !

55428894425314035935_thumb.jpg
Je suis capable de refaire ce conky la (je vous posterai celui que j'ai fait). Sauf que je n'ai absolument aucune idée de comment faire les aiguilles de la pendule.

Quelqu'un a une idée?

J'ai aussi en tête de refaire ce conky la: http://customize.org/thumbnails/larger/78804.jpg (le conky winamp)
Je sais comment récuperer des infos à partir de rhytmbox etc..
En revanche le seul soucis se sont les icones cliquables, (suivant,précédent... etc) Si quelqu'un a des éxemples de scripts je suis preneur

Voici un éxemple de conky que j'ai fait: (à partir des scripts lua conky-rings)
1276529136.png

@Fenouille84: find n'est pas récursif mais multiprocessus (le récursif c'est le mal)

Dernière modification par Ph3nix_ (Le 14/06/2010, à 16:32)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#20 Le 14/06/2010, à 16:35

Leyna

Re : Postez vos scripts Lua pour Conky !

Salut Ph3nix_,
Est-ce que tu peux publier les scripts de ton conky (le blanc) s'il te plaît?

Hors ligne

#21 Le 14/06/2010, à 20:35

Ph3nix_

Re : Postez vos scripts Lua pour Conky !

oui

conkyrc

# -- Conky settings -- #
background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
imlib_cache_size 0

# -- Window specifications -- #
own_window  yes
own_window_transparent yes
own_window_type  override
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

border_inner_margin 0
border_outer_margin 0

minimum_size 400 170
#maximum_width 400

alignment tm
gap_x -460
gap_y 50

# -- Graphics settings -- #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

# -- Text settings -- #
use_xft yes
xftfont Santana:size=12
xftalpha 0.8   

default_color 000000

# -- Lua Load -- #
lua_load ~/.conky/myconky_v2/time.lua
lua_draw_hook_pre ring_stats

TEXT
${voffset 35}${font Santana:size=30}${alignr}${time %H.%M}${font}
${goto 140}${hr 1}
${font Santana:size=10}${alignr}${time %A, %d %B %Y}${font}

>>> time.lua

--[[
Ring Meters by londonali1010 (2009)

This script draws percentage meters as rings. It is fully customisable; all options are described in the script.

IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num>5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num>3; conversely if you update Conky every 0.5s, you should use update_num>10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.

To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
	lua_load ~/scripts/rings-v1.2.lua
	lua_draw_hook_pre ring_stats
	
Changelog:
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]

settings_table = {
--[[ heure ]]
	{
		-- Edit this table to customise your rings.
		-- You can create more rings simply by adding more elements to settings_table.
		-- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
		name='time',
		-- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
		arg='%I.%M',
		-- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
		max=12,
		-- "bg_colour" is the colour of the base ring.
		bg_colour=0x000000,
		-- "bg_alpha" is the alpha value of the base ring.
		bg_alpha=0,
		-- "fg_colour" is the colour of the indicator part of the ring.
		fg_colour=0x000000,
		-- "fg_alpha" is the alpha value of the indicator part of the ring.
		fg_alpha=0.2,
		-- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
		x=122, y=90,
		-- "radius" is the radius of the ring.
		radius=53,
		-- "thickness" is the thickness of the ring, centred around the radius.
		thickness=9,
		-- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
		start_angle=90,
		-- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.
		end_angle=450
	},
--[ minutes ]
	{
		name='time',
		arg='%M.%S',
		max=60,
		bg_colour=0x000000,
		bg_alpha=0.1,
		fg_colour=0x000000,
		fg_alpha=0.8,
		x=122, y=90,
		radius=42,
		thickness=7,
		start_angle=90,
		end_angle=450
	},
-- [ secondes ]
	{
		name='time',
		arg='%S',
		max=60,
		bg_colour=0x000000,
		bg_alpha=0,
		fg_colour=0x000000,
		fg_alpha=0.4,
		x=122, y=90,
		radius=27,
		thickness=17,
		start_angle=90,
		end_angle=450
	},
--[ jour ]
	{
		name='time',
		arg='%d',
		max=31,
		bg_colour=0x000000,
		bg_alpha=0.1,
		fg_colour=0x000000,
		fg_alpha=0.6,
		x=122, y=90,
		radius=67,
		thickness=2,
		start_angle=90,
		end_angle=450
	},
--[ mois ]
--[[
	{
		name='time',
		arg='%m',
		max=12,
		bg_colour=0xffffff,
		bg_alpha=0.1,
		fg_colour=0xffffff,
		fg_alpha=0.8,
		x=120, y=100,
		radius=56,
		thickness=5,
		start_angle=90,
		end_angle=450
	},
]]
}


require 'cairo'

function rgb_to_r_g_b(colour,alpha)
	return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

function draw_ring(cr,t,pt)
	local w,h=conky_window.width,conky_window.height
	
	local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
	local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']

	local angle_0=sa*(2*math.pi/360)-math.pi/2
	local angle_f=ea*(2*math.pi/360)-math.pi/2
	local t_arc=t*(angle_f-angle_0)

	-- Draw background ring

	cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
	cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
	cairo_set_line_width(cr,ring_w)
	cairo_stroke(cr)
	
	-- Draw indicator ring

	cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
	cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
	cairo_stroke(cr)		
end

function conky_ring_stats()
	local function setup_rings(cr,pt)
		local str=''
		local value=0
		
		str=string.format('${%s %s}',pt['name'],pt['arg'])
		str=conky_parse(str)
		
		value=tonumber(str)
		pct=value/pt['max']
		
		draw_ring(cr,pct,pt)
	end

	if conky_window==nil then return end
	local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
	
	local cr=cairo_create(cs)	
	
	local updates=conky_parse('${updates}')
	update_num=tonumber(updates)
	
	if update_num>5 then
		for i in pairs(settings_table) do
			setup_rings(cr,settings_table[i])
		end
	end
end

Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#22 Le 15/06/2010, à 11:15

wlourf

Re : Postez vos scripts Lua pour Conky !

Ph3nix_ a écrit :

http://upload.centerzone.it/images/5542 … _thumb.jpg
Je suis capable de refaire ce conky la (je vous posterai celui que j'ai fait). Sauf que je n'ai absolument aucune idée de comment faire les aiguilles de la pendule.

Quelqu'un a une idée?

Pour l'horloge, tu peux t'inspirer de ce script :
http://conky.linux-hardcore.com/bienvenue/les-scripts/par-londonali1010/horloge-anneaux-pour-conky-1-7-2/
plus particulièrement cette fonction function draw_clock_hands(cr,xc,yc)

Hors ligne

#23 Le 15/06/2010, à 15:17

Ph3nix_

Re : Postez vos scripts Lua pour Conky !

J'ai regardé mais j'ai pas réussi à le réutiliser:/
Voici ce que donne mon conky pour l'instant
1276611391.png
Il reste la récupération de l'image de l'album.. son redimensionnement avec imagick
C'est loin d'être fini tongue


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#24 Le 15/06/2010, à 23:05

wlourf

Re : Postez vos scripts Lua pour Conky !

@Ph3nix_ j'ai l'impression que lorsqu'on verra ton bureau complet on ne fera plus attention au conky mais au wall wink
Sinon, Lua permet aussi de redimensionner les images avec imlib... mais c'est sûrement moins simple qu'une simple ligne de commande.
Edit : je viens de voir ton bureau sur un autre topic! Pour ton horloge poste, tu peux toujours poster ton script Lua et les éventuels messages d'erreurs si tu es toujours bloqué

Sinon, j'ai ajouté quelques paramètres au Text widget ci-dessus : dégradé radial et alignements verticaux et horizontaux du texte. J'aurai encore d'autre trucs à ajouter comme la réflexion ou un effet de perspective mais ça devient un peu compliqué !
Par contre, on peut simplement obtenir des effets de flou, d'ombre ou de focus actuellement, en recopiant les textes avec de légers décalages sur x,y et l'opacité, avec cette table :

   text_settings={
        --DEBUT DES PARAMETRES
        {
        text=conky_parse('home : ${fs_used_perc /} %'),
        x=20,
        y=50,
        font_name="Clarendon",
        font_size="48",
        colour={{1,0xFF0000,0.75},
        		},
       	orientation="ww",
        },

          {
        text=conky_parse('home : ${fs_used_perc /} %'),
        x=18,
        y=48,
        font_name="Clarendon",
        font_size="48",
        colour={        		{0,0xFFFF00,1}},
   		 orientation="ww",
        },
        
        {
        text=conky_parse('cpu : ${cpu} %'),
        x=20,
        y=90,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0xFFFF00,1},
        		{0.33,0xFF0000,1},
        		{0.66,0xFFFF00,1},
        		{1.00,0xFF0000,1},
        		},
       	orientation="ww",
        },             
 
         {
        text=conky_parse('cpu : ${cpu} %'),
        x=18,
        y=88,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,1},
        		{0.33,0x0000FF,1},
        		{0.66,0x00FFFF,1},
        		{1.00,0x0000FF,1},
        		},
       	orientation="ww",
        },           

--blur effect
        {
        text=conky_parse('mem : ${memperc} %'),
        x=20,
        y=130,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FF00,0.35},
        		},
       	orientation="ww",
        },   
         {
        text=conky_parse('mem : ${memperc} %'),
        x=19,
        y=129,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FF00,0.35},
        		},
       	orientation="ww",
        },         
         {
        text=conky_parse('mem : ${memperc} %'),
        x=21,
        y=131,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FF00,0.35},
        		},
       	orientation="ww",
        }, 
--focus effect 1
         {
        text=conky_parse('${time}'),
        x=20,
        y=180,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,0},
        		{0.50,0x00FFFF,1},
		        {1.00,0x00FFFF,0},
        		},
       	orientation="ww",
        }, 
         {
        text=conky_parse('${time}'),
        x=19,
        y=179,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,0.5},
        		{0.50,0x00FFFF,0},
		        {1.00,0x00FFFF,0.5},
        		},
       	orientation="ww",
        }, 
         {
        text=conky_parse('${time}'),
        x=21,
        y=181,
		font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,0.5},
        		{0.50,0x00FFFF,0},
		        {1.00,0x00FFFF,0.5},
        		},
       	orientation="ww",
        }, 
--focus effect 2        
         {
        text=conky_parse('${time}'),
        x=20,
        y=230,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,1},
        		{1,0x00FFFF,0},
        		},
       	orientation="ww",
       	
        }, 
         {
        text=conky_parse('${time}'),
        x=19,
        y=229,
        font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,0},
        		{1,0x00FFFF,0.25}, 
        		},
       	orientation="ww",
        }, 
         {
        text=conky_parse('${time}'),
        x=21,
        y=231,
		font_name="Clarendon",
        font_size="48",
        colour={{0.00,0x00FFFF,0},
        		{1,0x00FFFF,0.25},        		
        		},
       	orientation="ww",
        }, 
        
--centré + dégradé radial
         {
        text="radial gradient",
        x=400,
        y=280,
        font_name="Clarendon",
        font_size="48",
        colour={
		        {0.8,0xF0FFF0,1},
        		{1.00,0xF0F0FF,0.1},
        		},
       	orientation="ww",
       	h_align="c",
       	radial={0,300,0,0,300,370}
       	
        }, 
         {
        text="another radial gradient",
        x=400,
        y=350,
        font_name="Clarendon",
        font_size="48",
        colour={
		        {0.98,	0xFFFF00,1},
		        {0.99,	0xFF0000,1},
        		{1.00,	0xFF00FF,1},
        		},
       	orientation="nn",
       	h_align="c",
       	v_align="m",
		radial={0,-1000,0,0,-1000,1020}
       	
        }, 
 
           
    }

on obtient ça (faut agrandir pour voir les effets! ) :
1276638904.png

Dernière modification par wlourf (Le 15/06/2010, à 23:20)

Hors ligne

#25 Le 16/06/2010, à 12:22

Ph3nix_

Re : Postez vos scripts Lua pour Conky !

@Ph3nix_ j'ai l'impression que lorsqu'on verra ton bureau complet on ne fera plus attention au conky mais au wall;)

Je voulais faire la surprise mais apparemment tu l'as déjà vu tongue
Un screen de mon bureau ici ---> http://pix.louiz.org/upload/original/1276637978.png

Pour l'horloge, il n'y a rien d'exceptionnel, j'ai repris le script "conky-rings" ici: http://conky.linux-hardcore.com/beginne … nky-1-7-2/
et je l'ai un peu modifié.. En revanche je n'ai toujours pas trouvé comment faire les aguilles même avec le lien que tu m'as donné. Je dois avoué que je ne sais pas programmé en lua, je reprends juste des scripts smile

Pour rhtythmbox, j'utilise les astuces trouvés ici: http://doc.ubuntu-fr.org/conky_scripts_multimedia notamment pour la barre de progression. D'ailleurs j'ai posté mon script.
En revanche je n'ai pas réussi a récuperer la pochette CD d'une chanson en cours avec ce script:

#!/bin/bash

album=$(rhythmbox-client --print-playing-format "%ta - %at")
fichier="$HOME/.cache/rhythmbox/covers/$album.jpg"

if test -s "$fichier"
then
	ln -sf "$fichier" "$HOME/.conky_cover.jpg"

else
	if test -s "$HOME/.conky_cover.jpg"
	then
		rm "$HOME/.conky_cover.jpg"
	fi
fi

Je n'ai aucun fichier image dans ce reperetoire.... "~/.cache/rhythmbox/covers/"

Enfin pour les mails j'utilise ce script:

import os
import string

#Enter your username and password below within double quotes
# eg. username="username" and password="password"
username="ici-votre-username"
password="ici-votre-mdp"

com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"

temp=os.popen(com)
msg=temp.read()
index=string.find(msg,"<fullcount>")
index2=string.find(msg,"</fullcount>")
fc=int(msg[index+11:index2])

if fc==0:
   print "0 nouveau"
else:
   print str(fc)+" nouveau"

que j'appelle ainsi dans mon conky:

${execi 300 python ~/.scripts/gmail.py}

J'ai récupère ce script dans un conky sur deviantart

Pour le réseau, j'ai un petit soucis avec les variables ${if_up interface} de conky. Elles ne fonctionnent pas chez moi. La je suis en wifi et ${if_up eth0} retourne vrai et ${if_up wlan0} retourne vrai aussi...

Je n'ai aucune erreur à l'éxécution a part une erreur "llua_to_call" avec une erreur sur une variable nil (je ne me souviens plus du texte éxact)

Juste une remarque: même si j'utilise des scripts pythons et bash, il est déconseillé d'utiliser ce genre de scripts avec son conky, la doc précise qu'il est préférable d'utiliser le langage C pour effectuer des traitements.

@wlourf: pas mal tes widgets, je vais essayer tongue

Dernière modification par Ph3nix_ (Le 16/06/2010, à 12:33)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne