Page 1 sur 1

[Awesome 3.4] Widget temp GPU

Publié : sam. 24 oct. 2009, 00:12
par xscream
Bonsoir à tous,

J'aimerais une petite aide en ce qui concerne awesome. J'essaie desespérément de faire un widget qui m'afficherait la température de la carte graphique.
Pour l'avoir sous un terminal je fais :

Code : Tout sélectionner

nvidia-settings -t -q GPUCoreTemp
Cela me rend la température sous la forme :
50 (il y a un retour chariot après pour faire ca propre)

Donc voila le petit widget que je voudrais faire :

Code : Tout sélectionner

gputempwidget = widget({ type = "textbox" , name = "gputempwidget"})
gputempwidget.text = os.execute("nvidia-settings -t -q GPUCoreTemp") 
Ensuite je l'ajoute au reste de mes widgets, je n'utilise pour l'instant que ceux fournis par vicious (CPU temp, MPD Playing now, Memory usage, ...) mais c'est déjà tout prêt, rien de particulier a faire.

Mais au moment ou je l'ajoute, cela ne fait rien et fait meme beuguer awesome.

J'ai tenté de faire une fonction qui retourne la même chose, mais ca ne marche pas non plus.

Code : Tout sélectionner

function gputemp()
local fd = io.popen("nvidia-settings -t -q GPUCoreTemp")
local status = fd.read()
fd.close()
return status
end
Elle marche correctement, elle me rend la même chose que lorsque j'appelle nvidia-settings ...

Je sais plus trop quoi faire là ! Merci de votre aide :D

Bonne soirée,
Screamy.

Re: [Awesome 3.4] Widget temp GPU

Publié : sam. 07 nov. 2009, 20:49
par lid
Salut, alors:

- d'abord déclarer ton widget dans ton rc.lua, au même endroit que les autres widgets que tu utilises:

Code : Tout sélectionner

mon_gpu_temp =  widget({
	type = 'textbox',
	name = 'volwidget',
	align = 'right'
})
ensuite, il te faut créer une fonction qui va modifier la valeur de la variable mon_gpu_temp.text (c'est l'astuce), tu peux la placer direct en dessous de la création du widget :

Code : Tout sélectionner

fonction get_gpu_temp()
	local f = io.popen("nvidia-settings -t -q GPUCoreTemp")
	local gpu_temp = f:read("*all")
	f:close()
	mon_gpu_temp.text = gpu_temp
end
puis, rajouter ton widget mon_gpu_temp dans la liste des widgets de ta barre de statuts, avec les widgets mpd et compagnie :

Code : Tout sélectionner

mywibox[s].widgets = {
        {
       --     mylauncher,
            mytaglist[s],
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],
  --      memwidget,       
--        mytextclock, mytimeicon,
--        s == 1 and mysystray or nil,
        myspacer,
	mypercent, volwidget, myspacer, pb_volume, myvolicon,
	myspacer, mon_gpu_temp,
        mpdwidget, mymusicicon,  
        etc etc etc...    }
Et pour finir, très important, rajouter un hook en fin de fichier afin qu'awesome exécute la fonction get_gpu_temp() à intervalle régulier :

Code : Tout sélectionner

awful.hooks.timer.register(60, function () get_gpu_temp() end)  -- 60 pour 60 secondes, il updatera la fonction toutes les minutes, tu peux bien sûr le changer comme tu veux :)
Voilà, en espérant que ça t'aide!

Re: [Awesome 3.4] Widget temp GPU

Publié : sam. 07 nov. 2009, 22:16
par erdnaxeli
Perdu, avec la version 3.4 les hook ont été remplacés par signal :

Code : Tout sélectionner

mytimer = timer { timeout = 60 }
mytimer:add_signal("timeout", function () get_gpu_temp() end)
mytimer:start()

Re: [Awesome 3.4] Widget temp GPU

Publié : sam. 07 nov. 2009, 22:30
par catwell
Au passage, la version 3.4 rend le code Lua vraiment trop moche (où est l'esprit KISS ?) et m'a fait passer à PekWM.

Re: [Awesome 3.4] Widget temp GPU

Publié : dim. 08 nov. 2009, 12:10
par lid
erdnaxeli a écrit :Perdu, avec la version 3.4 les hook ont été remplacés par signal :

Code : Tout sélectionner

mytimer = timer { timeout = 60 }
mytimer:add_signal("timeout", function () get_gpu_temp() end)
mytimer:start()
Ah, au temps pour moi alors. Par contre, la fonction awful.hooks.timer.register semble toujours exister, je m'en sers dans mon rc.lua pour mon widget de volume (et j'utilise bien la 3.4) et tout semble fonctionner sans problème. Cependant, je vais essayer ta méthode, ce serait plus propre surtout si les hooks sont amenés à disparaître.