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.

#26 Le 07/04/2013, à 08:37

ljere

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

j'ai pas fait grand chose mais je suis content d'avoir pu être utile tongue


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#27 Le 07/04/2013, à 12:30

A.

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour,

Je réitère ma demande (#25) au cas où ce soit passé inaperçu et j'en profite pour demander la différence entre totaldown et vnstat, si vous avez une idée.

Merci.

Hors ligne

#28 Le 07/04/2013, à 14:14

ljere

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

A. a écrit :

Bonjour,

J'avais posé une question dans la partie réseaux et internet du forum (http://forum.ubuntu-fr.org/viewtopic.php?id=1243931), mais peut-être qu'ici ce sera mieux.
Mon PC est connecté à internet via une clé 3G. J'ai un volume de téléchargement mensuel limité. Donc pour surveiller un peu ma connexion, je voulais afficher le volume téléchargé dans mon conky.
j'ai trouvé la commande "totaldown 'nom_du_réseau' ", mais il y a plusieurs questions :

- d'abord, est-ce cette fonction consomme des datas ?
- ensuite, qu'est-ce qui est affiché exactement ? Parce que je peux suivre ma consommation sur internet et il y avait une incohérence entre les valeurs.

Merci.

normalement non cette fonction ne consomme pas de data, elle écoute juste ce que tu consommes je suppose que tu l'as additionné à totalup.
elle est de combien l'incohérence souvent les infos sur internet sont des approximations


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#29 Le 07/04/2013, à 15:06

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour a tous,
pour ceux qui seraient intéressé par la vraie transparence et des images intactes, voici le code lua a ajouter à vos conky.

image.lua

require 'cairo'
home = os.getenv ('HOME')

--Fonction d'affichage
function conky_fDrawImage(path,x,y,w,h,arc)

	path = string.gsub(path, "~", home)
	path = string.gsub(path, "$HOME", home)

	local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
	
	local function fDrawImage(path,x,y,w,h,arc)
		x=x+(w/2)
		y=y+(h/2)
		local img =  cairo_image_surface_create_from_png(path)
		local w_img, h_img = cairo_image_surface_get_width (img), cairo_image_surface_get_height (img)

		local cr = cairo_create (cs)
		cairo_translate (cr, x, y)

		if arc then
			cairo_rotate (cr, arc)
		end

		cairo_scale (cr, w/w_img, h/h_img)
		cairo_set_source_surface (cr, img, -w_img/2, -h_img/2)
		cairo_paint (cr)
		cairo_destroy(cr)
		cairo_surface_destroy (img)
	end
	fDrawImage(path,x,y,w,h,arc)
	cairo_surface_destroy(cs)
	return ""
end

Pour l'utilisation rien de bien compliqué.
dans conky il faudra ajouter avant TEXT

lua_load /chemin_vers_le_script/image.lua

ensuite pour afficher une image dans la partie après TEXT

${lua conky_fDrawImage image_a_afficher position_x position_y hauteur largeur rotation_si_nécessaire}

en fait pour modifier vos conkys, il suffit de modifier les lignes image de ceci

${image ~/.conky/conky-perso/HorlogeBois/HorlogeBois.png -p 0,0 -s 350x350}

a ceci

${lua conky_fDrawImage ~/.conky/conky-perso/HorlogeBois/HorlogeBois.png 0 0 350 350}

Hors ligne

#30 Le 07/04/2013, à 16:53

A.

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

ljere a écrit :

[...]
normalement non cette fonction ne consomme pas de data, elle écoute juste ce que tu consommes je suppose que tu l'as additionné à totalup.
elle est de combien l'incohérence souvent les infos sur internet sont des approximations

Non, je ne l'avais pas additionné. Je vais corriger ça, merci.
Je m'attendais bien à ce que la fonctionne ne consomme rien, mais j'ai déjà vu le compteur augmenter sans (à priori) qu'il n'y ait de consommation.  Peut-être un service..

Pour l'incohérence entre le conky et internet, j'avais une consommation de 3834 ko le 03/04.
En fin de soirée, totaldown m'annonçait 5.91Mo de consommation.
Le 04/04, ma consommation sur internet est passée à 7219 ko.

Je vais faire un conky dédié avec en parallèle totaldown et vnstat et faire un relevé sur plusieurs jours. En corrigeant mon erreur, ça ira peut-être mieux.

Hors ligne

#31 Le 08/04/2013, à 16:39

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@Didier-T
Salut,
Quelle fonction utilises-tu pour changer de fond d'écran sur chaque bureau ?

Hors ligne

#32 Le 08/04/2013, à 16:59

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Un script maison que j'ai écrit pour voyager

Hors ligne

#33 Le 08/04/2013, à 17:26

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

Un script maison que j'ai écrit pour voyager

AHHH je me disais bien... J'en ai un qui n'est pas très "frais" pour le changement d'écran...
Voudrais-tu nous le partager STP ?
le mien en python :
WallByDesk.py

 #! /usr/bin/python
# -*- coding: utf-8 -*-

## Réalisé par ArkSeth et ADcomp du forum Ubuntu-fr
## Distribué sous les termes de la GNU GPL v3.
## Ce script est un "daemon" pour utiliser un fond d'écran par bureau.

##Fonctionne en python, requiert les modules pygtk et wnck
##Ce dernier se trouve dans le paquet 'python-wnck' sous Debian
##    et dans le paquet 'python-gnome2-desktop' sous Ubuntu.

import wnck
import gtk
import os

##Indiquez ici la commande servant à modifier le fond d'écran.
wallpainter = "feh --bg-fill"
##Indiquez ici l'adresse du fichier contenant vos préférences
wallfiles = "/home/climatix/.config/wallpapers"
##Ce fichier doit contenir l'adresse des images à utiliser, par ligne
## (première ligne => premier bureau et ainsi de suite)

##Lecture du fichier pour récupérer les fonds d'écran
file = open(wallfiles, "r")
wallpapers = file.readlines()
file.close

##Fonction qui modifie les fonds d'écrans au changement
def workspace_active_changed(screen, previous):
    os.system(wallpainter+" "+wallpapers[screen.get_workspace_index(screen.get_active_workspace())])

##Lancement du daemon d'écoute
screen = wnck.screen_get_default()
screen.connect('active-workspace-changed', workspace_active_changed)
gtk.main() 

Dernière modification par ragamatrix (Le 08/04/2013, à 17:27)

Hors ligne

#34 Le 08/04/2013, à 20:33

ljere

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

tu te déconnectes comment ? hibernation, suspend, shutdown ou autre?
je sais qu'il y a un script qui ferme les ports usb pour permettre la veille dans la doc on pourrait inclure un killall conky pour ton problème


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#35 Le 08/04/2013, à 20:38

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@ ragamatrix,

voici le code, du python, d'ailleurs le code que tu propose y ressemble beaucoup big_smile

bureau.py

#! /usr/bin/python
# -*- coding: utf-8 -*-

import wnck
import gtk
import os


##Fonction qui modifie les fonds d'écrans au changement
def changement_de_bureau(screen, previous):
    homedir = os.path.expanduser('~')
    ## on récupère le bureau actif
    actif = screen.get_active_workspace()
    ## on récupère son index
    index = screen.get_workspace_index(actif)

    fichier = open(homedir+"/.scripts/Wall/changement_dash", "r")
    info = fichier.readline()
    fichier.close()

    if info == "0":
        if index == 0:
            os.system("~/.scripts/Wall/wall1")
        elif index == 1:
            os.system("~/.scripts/Wall/wall2")
        elif index == 2:
            os.system("~/.scripts/Wall/wall3")
        elif index == 3:
            os.system("~/.scripts/Wall/wall4")

    fichier = open(homedir+"/.scripts/Wall/changement_dash", "w")
    fichier.write("0")
    fichier.close()
    


##Lancement du daemon d'écoute
bureau = wnck.screen_get_default()
bureau.connect('active-workspace-changed', changement_de_bureau)
gtk.main()

la il est fait pour voyager, il vas donc lancer un script bash a chaque changement de bureau, chaque script change le fond d’écran. un petit exemple.

wall1

#!/bin/bash
# License GPL
# by rodofr Live Voyager
# Display the action selector
if [[ ! $(wmctrl -d | grep '*' | cut -d " " -f1) -eq 0 ]]; then
    echo "1" > ~/.scripts/Wall/changement_dash
    wmctrl -s0 &
fi
xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "/usr/share/xfce4/backdrops/xubuntu-quantal.png"
if [ ! -z "$1" ];then
    xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "$1"
    ~/.scripts/Wall/Voyager_Wall 0 1 "$1"
fi
exit 0

Hors ligne

#36 Le 08/04/2013, à 20:39

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

ljere a écrit :

tu te déconnectes comment ? hibernation, suspend, shutdown ou autre?
je sais qu'il y a un script qui ferme les ports usb pour permettre la veille dans la doc on pourrait inclure un killall conky pour ton problème

ou mettre le killall conky avant de les lancer dans un script bash, appelé au démarrage

Hors ligne

#37 Le 08/04/2013, à 21:45

chepioq

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

golgot200 a écrit :

Bonjour à tous,

J'ai un petit problème avec mon conky horloge bois.
J'allume mon ordi, mon conky se lance nickel. Je vérifie les processus en cours. conky X 1
Je me déconecte et me reconnecte  ..............................................les processus en cours. conky X 2
Et ainsi de suite ...............................................................................................les processus en cours. conky X 3
Et à force, mon cpu à 100 %
Galère.
Une idée ?

Tu utilises gnome ou kde ?

Pour kde, il faut lui notifier de démarrer avec une session vide (Configuration du système ==> Démarrage et arrêt ==> Gestion de session ==> cocher la case "Démarrer avec une session vide"

Pour gnome je ne sais pas...


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

Hors ligne

#38 Le 08/04/2013, à 22:35

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

@ ragamatrix,

voici le code, du python, d'ailleurs le code que tu propose y ressemble beaucoup big_smile

bureau.py

#! /usr/bin/python
# -*- coding: utf-8 -*-

import wnck
import gtk
import os


##Fonction qui modifie les fonds d'écrans au changement
def changement_de_bureau(screen, previous):
    homedir = os.path.expanduser('~')
    ## on récupère le bureau actif
    actif = screen.get_active_workspace()
    ## on récupère son index
    index = screen.get_workspace_index(actif)

    fichier = open(homedir+"/.scripts/Wall/changement_dash", "r")
    info = fichier.readline()
    fichier.close()

    if info == "0":
        if index == 0:
            os.system("~/.scripts/Wall/wall1")
        elif index == 1:
            os.system("~/.scripts/Wall/wall2")
        elif index == 2:
            os.system("~/.scripts/Wall/wall3")
        elif index == 3:
            os.system("~/.scripts/Wall/wall4")

    fichier = open(homedir+"/.scripts/Wall/changement_dash", "w")
    fichier.write("0")
    fichier.close()
    


##Lancement du daemon d'écoute
bureau = wnck.screen_get_default()
bureau.connect('active-workspace-changed', changement_de_bureau)
gtk.main()

la il est fait pour voyager, il vas donc lancer un script bash a chaque changement de bureau, chaque script change le fond d’écran. un petit exemple.

wall1

#!/bin/bash
# License GPL
# by rodofr Live Voyager
# Display the action selector
if [[ ! $(wmctrl -d | grep '*' | cut -d " " -f1) -eq 0 ]]; then
    echo "1" > ~/.scripts/Wall/changement_dash
    wmctrl -s0 &
fi
xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "/usr/share/xfce4/backdrops/xubuntu-quantal.png"
if [ ! -z "$1" ];then
    xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "$1"
    ~/.scripts/Wall/Voyager_Wall 0 1 "$1"
fi
exit 0

Ok Merci Didier-T,
Là ton script fonctionne avec voyager, je suis aussi sur cette distribution mais je n'utilise pas xfce mais openbox...
Il faut que je remplace ça :

  xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "/usr/share/xfce4/backdrops/xubuntu-quantal.png"
if [ ! -z "$1" ];then
    xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor0/image-path" -s "$1"
    ~/.scripts/Wall/Voyager_Wall 0 1 "$1"

avec des commandes pour feh et openbox ?
Cela fonctionnera t-il avec le script fond ecran de jpdipsy ?
merci...

Hors ligne

#39 Le 09/04/2013, à 05:51

chepioq

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

golgot200 a écrit :

@chepioq

Bonsoir,

Alors là, ... mais alors là, je dis chapeau bas  smile . Tu viens non seulement de régler mon problème !!! Mais en plus un autre de taille. Mes icônes de ma boite à miniatures arrivaient les uns après les autres, le son d'ouverture de session légerement en retard, se suivait si impatience avant ce son d'ouverture, d'avoir le malheur de vouloir ex faire un clic sur le menu de lancement ou autre d'un fisage momentané.
Là, ils arrivent instantanément, son y compris.
C'est une astuce à épingler. Il me semble n'avoir jamais vu cette solution ......

Encore merci

Ce n'est pas une astuce propre à conky, mais à linux en général.

Si tu ne démarres pas avec une session vide, tu démarres donc avec la dernière session sauvegardée que tu as quitté, par exemple pour conky :
1°) tu mets conky en lancement automatique
2eme lancement : tu as le premier conky (de la session sauvegardée) plus celui qui est lancé automatiquement = 2 conky
3eme lancement  : les deux conky sauvegardés plus celui lancé au démarrage = 3 conky
.........................................................
et ainsi de suite, tu te retrouves vite avec des dizaines de conky lancés, et avec un cpu à 100%.

Dernière modification par chepioq (Le 09/04/2013, à 05:53)


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

Hors ligne

#40 Le 09/04/2013, à 07:00

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@ ragamatrix,

en effet, il faut modifier le script de modification de fond en y mettant les commande pour ton environnement, et il me semble que le script de jpdipsy vérifie les changement de fond, mais le mieux est de lui demander.

@ golgot200,

dans le cas de ton conky cette fonction ne sert a rien, car elle est tirée de cairo_clock.lua, en fait ce que tu as fait dans le meilleur des cas affiche deux fois le fond d'horloge (une fois avec cairo_clock.lua, puis avec image.lua) et dans le pire des cas fait clignoter les aiguilles de ton horloge.
l’intérêt du script image.lua est de rendre possible la gestion de la vraie transparence avec tout type de conky.

Hors ligne

#41 Le 10/04/2013, à 12:54

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@Didier-T
Salut;
J'ai essayé tes scripts pour changements de bureaux mais je n'ai pas du savoir la bonne syntaxe:
wall1:

 #!/bin/bash
# License GPL
# by rodofr Live Voyager
# Display the action selector
if [[ ! $(wmctrl -d | grep '*' | cut -d " " -f1) -eq 0 ]]; then
    echo "1" > ~/.scripts/Wall/changement_dash
    wmctrl -s0 &
fi
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg &
if [ ! -z "$1" ];then
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg & "$1"
    ~/.scripts/Wall/Voyager_Wall 0 1 "$1"
fi
exit 0

 

erreur:

 Traceback (most recent call last):
  File "/home/climatix/.scripts/xdesk.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/changement_dash", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/changement_dash'
 

Merci

Hors ligne

#42 Le 10/04/2013, à 14:23

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Que faut-il mettre dans :

fichier = open(homedir+"/.scripts/Wall/changement_dash", "r") 

Changement_dash est un fichier texte avec le chemin des images ?

Hors ligne

#43 Le 10/04/2013, à 16:56

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@ ragamatrix,

la commande pour changer l'image de fond sur ton environnement c'est quoi ?

Hors ligne

#44 Le 10/04/2013, à 17:24

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

@ ragamatrix,

la commande pour changer l'image de fond sur ton environnement c'est quoi ?

Salut;
J'ai mis ça dans le script wall1:

 #!/bin/bash
# License GPL
# by rodofr Live Voyager
# Display the action selector
if [[ ! $(wmctrl -d | grep '*' | cut -d " " -f1) -eq 0 ]]; then
    echo "1" > ~/.scripts/Wall/changement_dash
    wmctrl -s0 &
fi
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg &
if [ ! -z "$1" ];then
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg & "$1"
    ~/.scripts/Wall/Voyager_Wall 0 1 "$1"
fi
exit 0
 

Donc avec cette commande :

 feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg & 

Avec ou sans le & ?

Hors ligne

#45 Le 10/04/2013, à 21:30

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@ ragamatrix,

tient voici une version modifier du script bureau.py

#! /usr/bin/python
# -*- coding: utf-8 -*-

import wnck
import gtk
import os


##Fonction qui modifie les fonds d'écrans au changement
def changement_de_bureau(screen, previous):
    homedir = os.path.expanduser('~')
    ## on récupère le bureau actif
    actif = screen.get_active_workspace()
    ## on récupère son index
    index = screen.get_workspace_index(actif)

    fichier = open(homedir+"/.scripts/Wall/fond", "r")
    info = fichier.readline()
    fichier.close()
    os.system(info[0])

##Lancement du daemon d'écoute
bureau = wnck.screen_get_default()
bureau.connect('active-workspace-changed', changement_de_bureau)
gtk.main()

dans le fichier fond tu colle la ligne de commande complète pour le changement de fond
par exemple:

feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos1.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos2.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos3.jpg

bureau 0 = ~/Images/fondsdebureaux/rosared_cosmos.jpg
bureau 1 = ~/Images/fondsdebureaux/rosared_cosmos1.jpg
etc..

n'étant pas sous openbox, je ne peut tester, donc si il y a un soucis n’hésite pas

Hors ligne

#46 Le 10/04/2013, à 22:05

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Merci Didier-T
Je testerais demain; donc plus de scripts bash pour chaque image ?
Quelle est la différence avec le premier script python que j'avais ?

Hors ligne

#47 Le 11/04/2013, à 07:36

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

il n'y a pratiquement pas de différence, avec ton ancien script il faillais modifier le script si changement d’environnement, et pour modifier la liste de fond d'écran tu devais redémarrer le script, ou l'ordinateur.
avec le mien tu n'as qu'un fichier a modifier, et toute modification de fond d'écran est immédiatement prise en charge (et encore sa peut être amélioré avec un passage d'argument au script pour lui dire ou chercher les infos)

Hors ligne

#48 Le 11/04/2013, à 09:17

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

@ ragamatrix,

tient voici une version modifier du script bureau.py

#! /usr/bin/python
# -*- coding: utf-8 -*-

import wnck
import gtk
import os


##Fonction qui modifie les fonds d'écrans au changement
def changement_de_bureau(screen, previous):
    homedir = os.path.expanduser('~')
    ## on récupère le bureau actif
    actif = screen.get_active_workspace()
    ## on récupère son index
    index = screen.get_workspace_index(actif)

    fichier = open(homedir+"/.scripts/Wall/fond", "r")
    info = fichier.readline()
    fichier.close()
    os.system(info[0])

##Lancement du daemon d'écoute
bureau = wnck.screen_get_default()
bureau.connect('active-workspace-changed', changement_de_bureau)
gtk.main()

dans le fichier fond tu colle la ligne de commande complète pour le changement de fond
par exemple:

feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos1.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos2.jpg
feh --bg-fill ~/Images/fondsdebureaux/rosared_cosmos3.jpg

bureau 0 = ~/Images/fondsdebureaux/rosared_cosmos.jpg
bureau 1 = ~/Images/fondsdebureaux/rosared_cosmos1.jpg
etc..

n'étant pas sous openbox, je ne peut tester, donc si il y a un soucis n’hésite pas

Merci mais ce code ne fonctionne pas...
retour:

 ┌─( climatix ) - ( 3.2.0-40-generic ) - ( ~ )
└─> '/home/climatix/.scripts/bureau.py' 

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE
Traceback (most recent call last):
  File "/home/climatix/.scripts/bureau.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/fond", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/fond'
Traceback (most recent call last):
  File "/home/climatix/.scripts/bureau.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/fond", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/fond'
Traceback (most recent call last):
  File "/home/climatix/.scripts/bureau.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/fond", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/fond'
Traceback (most recent call last):
  File "/home/climatix/.scripts/bureau.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/fond", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/fond'
Traceback (most recent call last):
  File "/home/climatix/.scripts/bureau.py", line 17, in changement_de_bureau
    fichier = open(homedir+"/.scripts/Wall/fond", "r")
IOError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/climatix/.scripts/Wall/fond'

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

(bureau.py:6390): Wnck-WARNING **: Unhandled action type _OB_WM_ACTION_UNDECORATE

 

Hors ligne

#49 Le 11/04/2013, à 11:09

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

le fichier ~/.scripts/Wall/fond n’existe pas.
il y aura peut être d'autre soucis

Hors ligne

#50 Le 11/04/2013, à 11:11

ljere

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

didier j'ai un souci avec le conky pour le vpn, il fait grimper mon proc à 100%, peux tu jeter un œil please?
conky-vpn

background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2
temperature_unit celsius

double_buffer yes
no_buffers yes
text_buffer_size 2048

gap_x 10
gap_y 30
minimum_size 320 0
#maximum_width 190
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
own_window_argb_visual yes
#own_window_argb_value
border_inner_margin 0
border_outer_margin 0
alignment tr

draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

override_utf8_locale yes
use_xft yes
xftfont 6x10:size=8
xftalpha 0.8
uppercase no

default_color 666666
color1 888888
color2 AAAAAA
color3 DDDDDD
color4 CC3333

lua_load ~/.conky/conky-perso/scripts/conky.lua
lua_draw_hook_pre main_box
lua_draw_hook_post main_rings

TEXT
${goto 65}${font 6x10:size=12,weight:bold}${color #F09000}$sysname ${font 6x10:size=7,weight:bold}${color}$kernel on $machine

${voffset 10}
${goto 60}${font 6x10:size=12,weight:bold}${color3}CPU
${goto 45}${font 6x10:size=7,weight:normal}${color2}core 1:${goto 90}${cpu cpu1}%


${goto 45}${threads} process 

${voffset -95}
${goto 218}${font 6x10:size=12,weight:bold}${color3}MEM
${goto 205}${font 6x10:size=7,weight:normal}${color2}RAM ${goto 240}$mem
${goto 205}SWAP ${goto 240}$swap


${voffset 82}
${goto 210}${font 6x10:size=12,weight:bold}${color3}DISKS
${goto 205}${font 6x10:size=7,weight:normal}${color2}/media${goto 245}${fs_used /media/a2dca2ce-c919-4edc-8cf5-599b6575b9d6}
${goto 205}/${goto 245}${fs_used /}

${voffset -90}
${goto 5}${color3}TOP CPU
${goto 5}${color2}${top name 1}${goto 90}${top pid 1}${goto 125}${top cpu 1}%
${goto 5}${color2}${top name 2}${goto 90}${top pid 2}${goto 125}${top cpu 2}%
${goto 5}${color2}${top name 3}${goto 90}${top pid 3}${goto 125}${top cpu 3}%

${goto 5}${color3}TOP MEM
${goto 5}${color2}${top_mem name 1}${goto 90}${top_mem pid 1}${goto 125}${top_mem mem 1}%
${goto 5}${color2}${top_mem name 2}${goto 90}${top_mem pid 2}${goto 125}${top_mem mem 2}%
${goto 5}${color2}${top_mem name 3}${goto 90}${top_mem pid 3}${goto 125}${top_mem mem 3}%
${if_existing /proc/net/route eth0}
${voffset 0}
${goto 5}${font 6x10:size=12,weight:bold}${color3}NET
${goto 5}${color1}${font 6x10:size=7,weight:bold}eth0 ${addr eth0}
${goto 5}${color}${font 6x10:size=7,weight:normal}Down: ${downspeed eth0}
${goto 5}Up: ${upspeed eth0}
${goto 5}Total Down: ${totaldown eth0}
${goto 5}Total Up: ${totalup eth0}
${endif}
${if_existing /proc/net/route tun0}${goto 5}${color1}${font 6x10:size=7,weight:bold}VPN ${addr tun0}
${goto 5}${color}${font 6x10:size=7,weight:normal}Down: ${downspeed tun0}
${goto 5}Up: ${upspeed tun0}
${goto 5}Total Down: ${totaldown tun0}
${goto 5}Total Up: ${totalup tun0}
${endif}
${font 6x10:size=7,weight:normal}${color1}${execi 1800 grep personnes /tmp/fip_occupation |cut -d '<' -f2 | cut -d '"' -f2 | sed -e '/FR1/d' | sort -k1n}

${if_existing /proc/net/route tun0}${goto 5}${font 6x10:size=7,weight:bold}${color}open ports:   ${tcp_portmon 1 65535 count}
${goto 5}${offset 10}URL${goto 270}PORT
${goto 5}${font 6x10:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rhost 0} ${goto 270} ${tcp_portmon 1 65535 rport 0}
${goto 5}${tcp_portmon 1 65535 rhost 1} ${goto 270} ${tcp_portmon 1 65535 rport 1}
${goto 5}${tcp_portmon 1 65535 rhost 2} ${goto 270} ${tcp_portmon 1 65535 rport 2}
${goto 5}${tcp_portmon 1 65535 rhost 3} ${goto 270} ${tcp_portmon 1 65535 rport 3}
${goto 5}${tcp_portmon 1 65535 rhost 4} ${goto 270} ${tcp_portmon 1 65535 rport 4}
${else}
${if_existing /proc/net/route eth0}${goto 5}${font 6x10:size=7,weight:bold}${color}open ports:   ${tcp_portmon 1 65535 count}
${goto 5}${offset 10}URL${goto 270}PORT
${goto 5}${font 6x10:size=7,weight:normal}${color1}${tcp_portmon 1 65535 rhost 0} ${goto 270} ${tcp_portmon 1 65535 rport 0}
${goto 5}${tcp_portmon 1 65535 rhost 1} ${goto 270} ${tcp_portmon 1 65535 rport 1}
${goto 5}${tcp_portmon 1 65535 rhost 2} ${goto 270} ${tcp_portmon 1 65535 rport 2}
${goto 5}${tcp_portmon 1 65535 rhost 3} ${goto 270} ${tcp_portmon 1 65535 rport 3}
${goto 5}${tcp_portmon 1 65535 rhost 4} ${goto 270} ${tcp_portmon 1 65535 rport 4}
${endif}${endif}

conky.lua (c'est une adaptation de conky_8c.lua)

--[[ RINGS with SECTORS widget
	v1.1 by wlourf (07 Jan. 2011)
	edited by Caymus
	this widget draws a ring with differents effects 
	http://u-scripts.blogspot.com/2010/08/rings-sectors-widgets.html
	
To call the script in a conky, use, before TEXT
	lua_load /path/to/the/script/rings.lua
	lua_draw_hook_pre main_rings
and add one line (blank or not) after TEXT


Parameters are :
3 parameters are mandatory
name		- the name of the conky variable to display,
			  for example for {$cpu cpu0}, just write name="cpu"
arg			- the argument of the above variable,
			  for example for {$cpu cpu0}, just write arg="cpu0"
		  	  arg can be a numerical value if name=""
max			- the maximum value the above variable can reach,
			  for example for {$cpu cpu0}, just write max=100
	
Optional parameters:
xc,yc		- coordinates of the center of the ring,
			  default = middle of the conky window
radius		- external radius of the ring, in pixels,
			  default = quarter of the width of the conky window
thickness	- thickness of the ring, in pixels, default = 10 pixels
start_angle	- starting angle of the ring, in degrees, value can be negative,
			  default = 0 degree
end_angle	- ending angle of the ring, in degrees,
			  value must be greater than start_angle, default = 360 degrees
sectors		- number of sectors in the ring, default = 10
gap_sectors - gap between two sectors, in pixels, default = 1 pixel
cap			- the way to close a sector, available values are
				"p" for parallel , default value 
				"r" for radial (follow the radius)
inverse_arc	- if set to true, arc will be anticlockwise, default=false
border_size	- size of the border, in pixels, default = 0 pixel i.e. no border
fill_sector	- if set to true, each sector will be completely filled,
			  default=false, this parameter is inoperate if sectors=1
background	- if set to false, background will not be drawn, default=true
foreground	- if set to false, foreground will not be drawn, default=true

Colours tables below are defined into braces :
{position in the gradient (0 to 1), colour in hexadecimal, alpha (0 to 1)}
example for a single colour table : 
{{0,0xFFAA00,1}} position parameter doesn't matter
example for a two-colours table : 
{{0,0xFFAA00,1},{1,0x00AA00,1}} or {{0.5,0xFFAA00,1},{1,0x00AA00,1}}
example for a three-colours table : 
{{0,0xFFAA00,1},{0.5,0xFF0000,1},{1,0x00AA00,1}}

bg_colour1	- colour table for background,
			  default = {{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
fg_colour1	- colour table for foreground,
			  default = {{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
bd_colour1	- colour table for border,
			  default = {{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}			  

Seconds tables for radials gradients :
bg_colour2	- second colour table for background, default = no second colour
fg_colour2	- second colour table for foreground, default = no second colour
bd_colour2	- second colour table for border, default = no second colour

draw_me     - if set to false, text is not drawn (default = true or 1)
              it can be used with a conky string, if the string returns 1, the text is drawn :
              example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",

v1.0 (08 Aug. 2010) original release
v1.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"
                    text is parsed inside the function, not in the array of settings

--      This program is free software; you can redistribute it and/or modify
--      it under the terms of the GNU General Public License as published by
--      the Free Software Foundation version 3 (GPLv3)
--     
--      This program is distributed in the hope that it will be useful,
--      but WITHOUT ANY WARRANTY; without even the implied warranty of
--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--      GNU General Public License for more details.
--     
--      You should have received a copy of the GNU General Public License
--      along with this program; if not, write to the Free Software
--      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
--      MA 02110-1301, USA.		

]]


require 'cairo'

function conky_main_rings()
-- START PARAMETERS HERE
local rings_settings={

	{
	name="cpu",
	arg="cpu1",
	exist="",
	max=100,
	xc=80,
	yc=100,
	thickness=10,
	radius=60,
	start_angle=5,
	end_angle=175,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="memperc",
	arg="",
	exist="",
	max=100,
	xc=240,
	yc=100,
	thickness=10,
	radius=60,
	start_angle=5,
	end_angle=175,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="swapperc",
	arg="",
	exist="",
	max=100,
	xc=240,
	yc=100,
	thickness=10,
	radius=60,
	start_angle=185,
	end_angle=355,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="fs_used_perc",
	arg="/home",
	exist="",
	max=100,
	xc=240,
	yc=250,
	thickness=10,
	radius=60,
	start_angle=5,
	end_angle=175,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="fs_used_perc",
	arg="/",
	exist="",
	max=100,
	xc=240,
	yc=250,
	thickness=10,
	radius=60,
	start_angle=185,
	end_angle=355,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="downspeedf",
	arg="eth0",
	exist="${if_existing /proc/net/route eth0}Ok${else}Nil${endif}",
	max=100,
	xc=270,
	yc=375,
	thickness=5,
	radius=30,
	start_angle=5,
	end_angle=175,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="upspeedf",
	arg="eth0",
	exist="${if_existing /proc/net/route eth0}Ok${else}Nil${endif}",
	max=100,
	xc=270,
	yc=375,
	thickness=5,
	radius=30,
	start_angle=185,
	end_angle=355,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="downspeedf",
	arg="tun0",
	exist="${if_existing /proc/net/route tun0}Ok${else}Nil${endif}",
	max=100,
	xc=270,
	yc=450,
	thickness=5,
	radius=30,
	start_angle=5,
	end_angle=175,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

	{
	name="upspeedf",
	arg="tun0",
	exist="${if_existing /proc/net/route tun0}Ok${else}Nil${endif}",
	max=100,
	xc=270,
	yc=450,
	thickness=5,
	radius=30,
	start_angle=185,
	end_angle=355,
	sectors=20,
	bg_colour1={{0,0xFFFFFF,0.1},{0.5,0xFFFFFF,0.4},{1,0xFFFFFF,0.1}},
	fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1.0},{1,0x00FF00,0.1}},
	fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
	},

}
--END OF PARAMETERS HERE

--main function

	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)

	if tonumber(conky_parse('${updates}'))>3 then
		for i in pairs(rings_settings) do
			if rings_settings[i].exist==nil then rings_settings[i].exist="" end
			if rings_settings[i].exist~="" then 
				if conky_parse(rings_settings[i].exist)=="Ok" then
					draw_ring(cr,rings_settings[i])
				end
			else
				draw_ring(cr,rings_settings[i])
			end
		end
	end

	cairo_destroy(cr)

end




function draw_ring(cr, t)

	local function rgba_to_r_g_b_a(tcolour)
		local colour,alpha=tcolour[2],tcolour[3]
		return ((colour / 0x10000) % 0x100) / 255., 
			((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
	end
			
			
	local function calc_delta(tcol1,tcol2)
		--calculate deltas P R G B A to table_colour 1

		for x = 1, #tcol1 do
			tcol1[x].dA	= 0
			tcol1[x].dP = 0
	 		tcol1[x].dR = 0
			tcol1[x].dG = 0
			tcol1[x].dB = 0
			if tcol2~=nil and #tcol1 == #tcol2 then
				local r1,g1,b1,a1 = rgba_to_r_g_b_a(tcol1[x])
				local r2,g2,b2,a2 = rgba_to_r_g_b_a(tcol2[x])
				tcol1[x].dP = (tcol2[x][1]-tcol1[x][1])/t.sectors
		 		tcol1[x].dR = (r2-r1)/t.sectors
				tcol1[x].dG = (g2-g1)/t.sectors
				tcol1[x].dB = (b2-b1)/t.sectors
				tcol1[x].dA = (a2-a1)/t.sectors		
				
			end
		end
		
		return tcol1
	end

	--check values
	local function setup(t)
		if t.name==nil and t.arg==nil then 
			print ("No input values ... use parameters 'name'" +
				" with 'arg' or only parameter 'arg' ") 
			return
		end

		if t.max==nil then
			print ("No maximum value defined, use 'max'")
			print ("for name=" .. t.name)
			print ("with arg=" .. t.arg)
			return
		end
		if t.name==nil then t.name="" end
		if t.arg==nil then t.arg="" end

		if t.xc==nil then t.xc=conky_window.width/2 end
		if t.yc==nil then t.yc=conky_window.height/2 end
		if t.thickness ==nil then t.thickness = 10 end
		if t.radius ==nil then t.radius =conky_window.width/4 end
		if t.start_angle==nil then t.start_angle =0 end
		if t.end_angle==nil then t.end_angle=360 end
		if t.bg_colour1==nil then 
			t.bg_colour1={{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
		end
		if t.fg_colour1==nil then
			t.fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
		end
		if t.bd_colour1==nil then
			t.bd_colour1={{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
		end
		if t.sectors==nil then t.sectors=10 end
		if t.gap_sectors==nil then t.gap_sectors=1 end 
		if t.fill_sector==nil then t.fill_sector=false end
		if t.sectors==1 then t.fill_sector=false end
		if t.border_size==nil then t.border_size=0 end
		if t.cap==nil then t.cap="p" end
		--some checks
		if t.thickness>t.radius then t.thickness=t.radius*0.1 end
		t.int_radius = t.radius-t.thickness

		--check colors tables 
		for i=1, #t.bg_colour1 do 
			if #t.bg_colour1[i]~=3 then t.bg_colour1[i]={1,0xFFFFFF,0.5} end
		end
		for i=1, #t.fg_colour1 do 
			if #t.fg_colour1[i]~=3 then t.fg_colour1[i]={1,0xFF0000,1} end
		end
		for i=1, #t.bd_colour1 do 
			if #t.bd_colour1[i]~=3 then t.bd_colour1[i]={1,0xFFFF00,1} end
		end
	
		if t.bg_colour2~=nil then
			for i=1, #t.bg_colour2 do 
				if #t.bg_colour2[i]~=3 then t.bg_colour2[i]={1,0xFFFFFF,0.5} end
			end
		end
		if t.fg_colour2~=nil then
			for i=1, #t.fg_colour2 do 
				if #t.fg_colour2[i]~=3 then t.fg_colour2[i]={1,0xFF0000,1} end
			end
		end
		if t.bd_colour2~=nil then
			for i=1, #t.bd_colour2 do 
				if #t.bd_colour2[i]~=3 then t.bd_colour2[i]={1,0xFFFF00,1} end
			end
		end 	
		
		if t.start_angle>=t.end_angle then
		 local tmp_angle=t.end_angle
		 t.end_angle= t.start_angle
		 t.start_angle = tmp_angle
		 -- print ("inversed angles")
			if t.end_angle-t.start_angle>360 and t.start_angle>0 then
				t.end_angle=360+t.start_angle
				print ("reduce angles")
			end
		
			if t.end_angle+t.start_angle>360 and t.start_angle<=0 then
				t.end_angle=360+t.start_angle
				print ("reduce angles")
			end
		
			if t.int_radius<0 then t.int_radius =0 end
			if t.int_radius>t.radius then
				local tmp_radius=t.radius
				t.radius=t.int_radius
				t.int_radius=tmp_radius
				print ("inversed radius")
			end
			if t.int_radius==t.radius then
				t.int_radius=0
				print ("int radius set to 0")
			end 
		end
		
		t.fg_colour1 = calc_delta(t.fg_colour1,t.fg_colour2)
		t.bg_colour1 = calc_delta(t.bg_colour1,t.bg_colour2)
		t.bd_colour1 = calc_delta(t.bd_colour1,t.bd_colour2)
	end
	
	if t.draw_me == true then t.draw_me = nil end
	if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end	
	--initialize table
	setup(t)
	
	--initialize cairo context
	cairo_save(cr)
	cairo_translate(cr,t.xc,t.yc)
	cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND)
	cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)

	--get value
	local value = 0
	if t.name ~="" then
		value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
	else
		value = tonumber(t.arg)
	end
	if value==nil then value =0 end

	--initialize sectors
	--angle of a sector :
	local angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180
	--value of a sector : 
	local valueA = t.max/t.sectors
	--first angle of a sector : 
	local lastAngle = t.start_angle*math.pi/180


	local function draw_sector(type_arc,angle0,angle,valpc, idx)
	 
		--this function draws a portion of arc
	 	--type of arc, angle0 = strating angle, angle= angle of sector,
	 	--valpc = percentage inside the sector, idx = sctor number #
	 	local tcolor
		 if type_arc=="bg" then 		--background
			 if valpc==1 then return end
		 	tcolor=t.bg_colour1
		 elseif type_arc=="fg" then	--foreground
		 	if valpc==0 then return end
		 	tcolor=t.fg_colour1
		 elseif type_arc=="bd" then	--border
		 	tcolor=t.bd_colour1
		 end 

		--angles equivalents to gap_sector
		local ext_delta=math.atan(t.gap_sectors/(2*t.radius))
		local int_delta=math.atan(t.gap_sectors/(2*t.int_radius))

		--angles of arcs
		local ext_angle=(angle-ext_delta*2)*valpc
		local int_angle=(angle-int_delta*2)*valpc

		--define colours to use for this sector
		if #tcolor==1 then 
			--plain color
			local vR,vG,vB,vA = rgba_to_r_g_b_a(tcolor[1])
			cairo_set_source_rgba(cr,vR+tcolor[1].dR*idx,
									vG+tcolor[1].dG*idx,
									vB+tcolor[1].dB*idx,
									vA+tcolor[1].dA*idx	)
		else
			--radient color
			local pat=cairo_pattern_create_radial(0,0,t.int_radius,0,0,t.radius)
			for i=1, #tcolor do
				local vP,vR,vG,vB,vA = tcolor[i][1], rgba_to_r_g_b_a(tcolor[i])
				cairo_pattern_add_color_stop_rgba (pat, 
									vP+tcolor[i].dP*idx,
									vR+tcolor[i].dR*idx,
									vG+tcolor[i].dG*idx,
									vB+tcolor[i].dB*idx,
									vA+tcolor[i].dA*idx	)
			end
			cairo_set_source (cr, pat)
			cairo_pattern_destroy(pat)
		end

		--start drawing
		 cairo_save(cr)
		--x axis is parrallel to start of sector
		cairo_rotate(cr,angle0-math.pi/2)

		local ri,re = t.int_radius ,t.radius

		--point A 
		local angle_a
	
		if t.cap == "p" then 
			angle_a = int_delta
			if t.inverse_arc and type_arc ~="bg" then
				angle_a = angle-int_angle-int_delta
			end
			if not(t.inverse_arc) and type_arc =="bg" then
				angle_a = int_delta+int_angle
			end
		else --t.cap=="r"
			angle_a = ext_delta
			if t.inverse_arc and type_arc~="bg" then
				angle_a = angle-ext_angle-ext_delta
			end
			if not(t.inverse_arc) and type_arc=="bg" then
				angle_a = ext_delta+ext_angle
			end
		end
		local ax,ay = ri*math.cos(angle_a),ri*math.sin(angle_a)


		--point B
		local angle_b = ext_delta
		if t.cap == "p" then 
			if t.inverse_arc and type_arc ~="bg" then
				angle_b = angle-ext_angle-ext_delta
			end
			if not(t.inverse_arc) and type_arc=="bg" then
				angle_b = ext_delta+ext_angle
			end
		else
			if t.inverse_arc and type_arc ~="bg" then
				angle_b = angle-ext_angle-ext_delta
			end
			if not(t.inverse_arc) and type_arc=="bg" then
				angle_b = ext_delta+ext_angle
			end
		end
		local bx,by = re*math.cos(angle_b),re*math.sin(angle_b)

		-- EXTERNAL ARC B --> C
		local b0,b1
		if t.inverse_arc then
			if type_arc=="bg" then
				b0,b1= ext_delta, angle-ext_delta-ext_angle
			else
				b0,b1= angle-ext_angle-ext_delta, angle-ext_delta
			end
		else
			if type_arc=="bg" then
				b0,b1= ext_delta+ext_angle, angle-ext_delta
			else
				b0,b1= ext_delta, ext_angle+ext_delta
			end
		end
		
		---POINT D
		local angle_c, angle_d
		if t.cap == "p" then 
			angle_d = angle-int_delta
			if t.inverse_arc and type_arc=="bg" then
				angle_d = angle-int_delta-int_angle	
			end
			if not(t.inverse_arc) and type_arc~="bg" then
				angle_d=int_delta+int_angle
			end
		else
			angle_d = angle-ext_delta
			if t.inverse_arc and type_arc=="bg" then
				angle_d =angle-ext_delta-ext_angle
			end
			if not(t.inverse_arc) and type_arc~="bg" then
				angle_d = ext_angle+ext_delta
			end
		end
		local dx,dy = ri*math.cos(angle_d),ri*math.sin(angle_d)
		
		-- INTERNAL ARC D --> A
		local d0,d1
		if t.cap=="p" then	
			if t.inverse_arc then	
				if type_arc=="bg" then
					d0,d1= angle-int_delta-int_angle,int_delta
				else
					d0,d1= angle-int_delta, angle- int_angle-int_delta
				end
			else
				if type_arc=="bg" then
					d0,d1= angle-int_delta, int_delta+int_angle
				else
					d0,d1= int_delta+int_angle, int_delta
				end
			end
		else
			if t.inverse_arc then	
				if type_arc=="bg" then	
					d0,d1= angle-ext_delta-ext_angle,ext_delta
				else
					d0,d1= angle-ext_delta, angle- ext_angle-ext_delta
				end
			else
				if type_arc=="bg" then	
					d0,d1= angle-ext_delta,ext_delta+ext_angle
				else	
					d0,d1= ext_angle+ext_delta, ext_delta
				end
			end			
		end
			
		--draw sector
		cairo_move_to(cr,ax,ay)
		cairo_line_to(cr,bx,by)
		cairo_arc(cr,0,0,re,b0,b1)
		cairo_line_to(cr,dx,dy) 
		cairo_arc_negative(cr,0,0,ri,d0,d1)
		 cairo_close_path (cr);

		--stroke or fill sector
		 if type_arc=="bd" then
		 	cairo_set_line_width(cr,t.border_size)
		 	cairo_stroke(cr)
		 else
			 cairo_fill(cr)
		 end

		 cairo_restore(cr)

	 end
	--draw sectors
	local n0,n1,n2 = 1,t.sectors,1
	if t.inverse_arc then n0,n1,n2 = t.sectors,1,-1 end
	local index = 0
	for i = n0,n1,n2 do 
		index = index +1
		local valueZ=1
		local cstA, cstB = (i-1),i
		if t.inverse_arc then cstA,cstB = (t.sectors-i), (t.sectors-i+1) end
		
		if value>valueA *cstA and value<valueA*cstB then
			if not t.fill_sector then
				valueZ = (value-valueA*cstA)/valueA
			end
		else
			if value<valueA*cstB then valueZ=0 end
		end
		
		local start_angle= lastAngle+(i-1)*angleA
		if t.foreground ~= false then 
			draw_sector("fg",start_angle,angleA,valueZ, index)
		end
		if t.background ~= false then 
			draw_sector("bg",start_angle,angleA,valueZ, i)
		end
		if t.border_size>0 then draw_sector("bd",start_angle,angleA,1, i) end
	end

	cairo_restore(cr)
end


--[[END OF RING-SECTORS WIDGET]]

require 'cairo'
    
function conky_main_box()

    if conky_window==nil then return end

	---------------------- PARAMETERS BEGIN HERE
    local boxes_settings={
    --FIRST COLUMN
        --default colour and corner
       	{x=0, y=0, w=320, h=700,
      	exist="${if_existing /proc/net/route eth0}${if_existing /proc/net/route tun0}Ok${else}Nil${endif}${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {0,0,0,700},
      	corners={ {"circle",20}} },

       	{x=0, y=0, w=320, h=600,
      	exist="${if_existing /proc/net/route eth0}${if_existing /proc/net/route tun0}Nil${else}Ok${endif}${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {0,0,0,600},
      	corners={ {"circle",20}} },

       	{x=0, y=0, w=320, h=600,
      	exist="${if_existing /proc/net/route tun0}${if_existing /proc/net/route eth0}Nil${else}Ok${endif}${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {0,0,0,600},
      	corners={ {"circle",20}} },

       	{x=0, y=0, w=320, h=350,
      	exist="${if_existing /proc/net/route tun0}Nil${else}${if_existing /proc/net/route eth0}Nil${else}Ok${endif}${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {0,0,0,350},
      	corners={ {"circle",20}} },

      	{x=10, y=30, w=140, h=140, 
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {140,140,10,10} ,
      	corners={ {"circle",70} }, },
      	{x=20, y=40, w=120, h=120,
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {20,20,120,120}  ,
      	corners={ {"circle",60} }, },

      	{x=170, y=30, w=140, h=140, 
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {140,140,10,10} ,
      	corners={ {"circle",70} }, },
      	{x=180, y=40, w=120, h=120,
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {20,20,120,120}  ,
      	corners={ {"circle",60} }, },

      	{x=170, y=180, w=140, h=140, 
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {140,140,10,10} ,
      	corners={ {"circle",70} }, },
      	{x=180, y=190, w=120, h=120,
      	exist="",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {20,20,120,120}  ,
      	corners={ {"circle",60} }, },

      	{x=235, y=339, w=70, h=70, 
      	exist="${if_existing /proc/net/route eth0}Ok${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {70,70,10,10} ,
      	corners={ {"circle",35} }, },
      	{x=240, y=345, w=60, h=60,
      	exist="${if_existing /proc/net/route eth0}Ok${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {20,20,60,60}  ,
      	corners={ {"circle",30} }, },

      	{x=235, y=414, w=70, h=70, 
      	exist="${if_existing /proc/net/route tun0}Ok${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {70,70,10,10} ,
      	corners={ {"circle",35} }, },
      	{x=240, y=420, w=60, h=60,
      	exist="${if_existing /proc/net/route tun0}Ok${else}Nil${endif}",
      	colour={{0,0x858585,0.5}, {1,0x000000,0.5}}, linear_gradient= {20,20,60,60}  ,
      	corners={ {"circle",30} }, },
    }


    ---------------------------- PARAMETERS END HERE
    
    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)
    
    if tonumber(conky_parse("$updates"))<5 then return end
    for i in pairs(boxes_settings) do
    	if boxes_settings[i].exist==nil then boxes_settings[i].exist="" end
			if boxes_settings[i].exist~="" then 
				if conky_parse(boxes_settings[i].exist)=="Ok" then
					draw_box(cr,boxes_settings[i])
				end
			else
				draw_box (cr,boxes_settings[i])
			end
    end
    cairo_destroy(cr)
    cairo_surface_destroy(cs)    
end

    
function draw_box(cr,t)

	if t.draw_me == true then t.draw_me = nil end
	if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end	

    local table_corners={"circle","curve","line"}

    local t_operators={
        clear   = CAIRO_OPERATOR_CLEAR,
        source  = CAIRO_OPERATOR_SOURCE,
        over    = CAIRO_OPERATOR_OVER,
        ["in"]      = CAIRO_OPERATOR_IN,
        out     = CAIRO_OPERATOR_OUT,
        atop    = CAIRO_OPERATOR_ATOP,
        dest    = CAIRO_OPERATOR_DEST,
        dest_over   = CAIRO_OPERATOR_DEST_OVER,
        dest_in = CAIRO_OPERATOR_DEST_IN,
        dest_out = CAIRO_OPERATOR_DEST_OUT,
        dest_atop = CAIRO_OPERATOR_DEST_ATOP,
        xor = CAIRO_OPERATOR_XOR,
        add = CAIRO_OPERATOR_ADD,
        saturate =  CAIRO_OPERATOR_SATURATE,
    }
        
    function rgba_to_r_g_b_a(tc)
        --tc={position,colour,alpha}
        local colour = tc[2]
        local alpha = tc[3]
        return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    end

    function table.copy(t)
      local t2 = {}
      for k,v in pairs(t) do
       t2[k] = {v[1],v[2]}
      end
      return t2
    end

    function draw_corner(num,t)
        local shape=t[1]
        local radius=t[2]
        local x,y = t[3],t[4]
        if shape=="line" then
            if num == 1 then cairo_line_to(cr,radius,0) 
                elseif num == 2 then cairo_line_to(cr,x,radius) 
                elseif num == 3 then cairo_line_to(cr,x-radius,y)
                elseif num == 4 then cairo_line_to(cr,0,y-radius)
            end
        end
        if shape=="circle" then
		    local PI = math.pi
           if num == 1 then cairo_arc(cr,radius,radius,radius,-PI,-PI/2)
                elseif num == 2 then cairo_arc(cr,x-radius,y+radius,radius,-PI/2,0)
                elseif num == 3 then cairo_arc(cr,x-radius,y-radius,radius,0,PI/2) 
                elseif num == 4 then cairo_arc(cr,radius,y-radius,radius,PI/2,-PI)
            end
        end
        if shape=="curve" then
            if num == 1 then cairo_curve_to(cr,0,radius ,0,0 ,radius,0) 
                elseif num == 2 then cairo_curve_to(cr,x-radius,0, x,y, x,radius)
                elseif num == 3 then cairo_curve_to(cr,x,y-radius, x,y, x-radius,y)
                elseif num == 4 then cairo_curve_to(cr,radius,y, x,y, 0,y-radius)
            end
        end        
    end   

    --check values and set default values
    if t.x == nil then t.x = 0 end
    if t.y == nil then t.y = 0 end
    if t.w == nil then t.w = conky_window.width end
    if t.h == nil then t.h = conky_window.height end
    if t.radius == nil then t.radius = 0 end
    if t.border == nil then t.border = 0 end
    if t.colour==nil then t.colour={{1,0xFFFFFF,0.5}} end
    if t.linear_gradient ~= nil then 
        if #t.linear_gradient ~= 4 then
            t.linear_gradient = {t.x,t.y,t.width,t.height}
        end
    end 
    if t.angle==nil then t.angle = 0 end

	if t.skew_x == nil then t.skew_x=0  end
	if t.skew_y == nil then  t.skew_y=0 end
	if t.scale_x==nil then t.scale_x=1 end
	if t.scale_y==nil then t.scale_y=1 end	
	if t.rot_x == nil then t.rot_x=0  end
	if t.rot_y == nil then  t.rot_y=0 end
    
    if t.operator == nil then t.operator = "over" end
    if (t_operators[t.operator]) == nil then
        print ("wrong operator :",t.operator)
        t.operator = "over"
    end
    
    if t.radial_gradient ~= nil then 
        if #t.radial_gradient ~= 6 then
            t.radial_gradient = {t.x,t.y,0, t.x,t.y, t.width}
        end
    end 
    
    for i=1, #t.colour do    
        if #t.colour[i]~=3 then 
            print ("error in color table")
            t.colour[i]={1,0xFFFFFF,1} 
        end
    end

    if t.corners == nil then t.corners={ {"line",0} } end
    local t_corners = {}
    local t_corners = table.copy(t.corners)
    --don't use t_corners=t.corners otherwise t.corners is altered

    --complete the t_corners table if needed
    for i=#t_corners+1,4 do    
        t_corners[i]=t_corners[#t_corners]
        local flag=false
        for j,v in pairs(table_corners) do flag=flag or (t_corners[i][1]==v) end 
        if not flag then print ("error in corners table :",t_corners[i][1]);t_corners[i][1]="curve"  end
    end

    --this way :    
    --    t_corners[1][4]=x    
    --    t_corners[2][3]=y
    --doesn't work
    t_corners[1]={t_corners[1][1],t_corners[1][2],0,0}
    t_corners[2]={t_corners[2][1],t_corners[2][2],t.w,0}
    t_corners[3]={t_corners[3][1],t_corners[3][2],t.w,t.h}    
    t_corners[4]={t_corners[4][1],t_corners[4][2],0,t.h}        

    t.no_gradient = (t.linear_gradient == nil ) and (t.radial_gradient == nil )

    cairo_save(cr)
    cairo_translate(cr, t.x, t.y)
    if t.rot_x~=0 or t.rot_y~=0 or t.angle~=0 then
        cairo_translate(cr,t.rot_x,t.rot_y)
        cairo_rotate(cr,t.angle*math.pi/180)
        cairo_translate(cr,-t.rot_x,-t.rot_y)
    end
    if t.scale_x~=1 or t.scale_y~=1 or t.skew_x~=0 or t.skew_y~=0 then
	    local matrix0 = cairo_matrix_t:create()
	    tolua.takeownership(matrix0)
	    cairo_matrix_init (matrix0, t.scale_x,math.pi*t.skew_y/180	, math.pi*t.skew_x/180	,t.scale_y,0,0)
	    cairo_transform(cr,matrix0)    
    end
    
    local tc=t_corners
    cairo_move_to(cr,tc[1][2],0)
    cairo_line_to(cr,t.w-tc[2][2],0)
    draw_corner(2,tc[2])
    cairo_line_to(cr,t.w,t.h-tc[3][2])
    draw_corner(3,tc[3])
    cairo_line_to(cr,tc[4][2],t.h)
    draw_corner(4,tc[4])
    cairo_line_to(cr,0,tc[1][2])
    draw_corner(1,tc[1])
    
    if t.no_gradient then
        cairo_set_source_rgba(cr,rgba_to_r_g_b_a(t.colour[1]))
    else
        if t.linear_gradient ~= nil then
            pat = cairo_pattern_create_linear (t.linear_gradient[1],t.linear_gradient[2],t.linear_gradient[3],t.linear_gradient[4])
        elseif t.radial_gradient ~= nil then
            pat = cairo_pattern_create_radial (t.radial_gradient[1],t.radial_gradient[2],t.radial_gradient[3],
            	t.radial_gradient[4],t.radial_gradient[5],t.radial_gradient[6])
        end
        for i=1, #t.colour do
            cairo_pattern_add_color_stop_rgba (pat, t.colour[i][1], rgba_to_r_g_b_a(t.colour[i]))
        end
        cairo_set_source (cr, pat)
        cairo_pattern_destroy(pat)
    end 
     
    cairo_set_operator(cr,t_operators[t.operator]) 

    if t.border>0 then
        cairo_close_path(cr)
        if t.dash ~= nil then cairo_set_dash(cr, t.dash, 1, 0.0) end
        cairo_set_line_width(cr,t.border)
        cairo_stroke(cr)
    else
        cairo_fill(cr)
    end

    cairo_restore(cr)
end

le fichier /tmp/fip_occupation est téléchargé par cron toute les heures


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne