fc-cache scans the font directories on the system and builds font
information cache files for applications using fontconfig for their
font handling.
If directory arguments are not given, fc-cache uses each directory in
the current font configuration. Each directory is scanned for font
files readable by FreeType. A cache is created which contains proper‐
ties of each font and the associated filename. This cache is used to
speed up application startup when using the fontconfig library.
[Conky] Vos .conkyrc !
##hippie irc.freenode.net
Merci pour l'adresse de la police !
In a world without walls and fences, who needs windows and gates ?
Mon .conkyrc:
http://www.box-look.org/content/show.ph ... tent=91541
Et une question : comment se débarasser de l'espace après "top" ?
In a world without walls and fences, who needs windows and gates ?
- froli
- archer de cavalerie
- Messages : 186
- Inscription : dim. 15 juin 2008, 09:09
- Localisation : Québec, Canada
Bah sinon tu utilises quoi? Hotmail?Calimero a écrit :Gmail is watching you. Beware.
Intel Core 2 Quad Q8300 2.5Ghz, 6GB RAM DDR2, 1TB HDD, ATI 4300HD 512MB, KDEmod.
Et quelques adresses free.
Et sûrement pas Hotmail = M$ !
In a world without walls and fences, who needs windows and gates ?
J'ai un problème.
J'ai kdemod3. J'ai mit conky mais il n'est pas transparent.
J'ai donc fait ceci :
Code : Tout sélectionner
#1.1 /bin/sh
feh --bg-scale /opt/kde/share/wallpapers/default_blue.jpg
Si je lance : feh --bg-scale /opt/kde/share/wallpapers/default_blue.jpg
en console ça fonctionne parfaitement.
Je l'ai mit là /home/sky/.kde/Autostart/feh.sh
( j'ai pas vu de .kdemod3, je suppose que c'est .kde )
Mais à part ouvrir Kwrite avec ce fichier ouvert dedans, cela ne fait rien.
Merci de m'aider.
Re: [Conky] Vos .conkyrc !
Voici mes conkyrc, les scripts qui vont avec et deux screenshots.
J'ai fait des raccourcis clavier pour les activer sous xfce et un qui contient "killall conky", je ne les affiche que quand j'en ai besoin.
Mon conky pour mpd
Code : Tout sélectionner
background yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
use_xft yes
xftfont lucon:size=12
xftalpha 10
update_interval 1.0
total_run_times 0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
minimum_size 5 5
maximum_width 1200
draw_shades no
draw_outline no
draw_borders no
border_margin 8
border_width 3
default_color feb318
default_shade_color black
default_outline_color black
alignment top_left
gap_x 8
gap_y 31
no_buffers yes
uppercase no
override_utf8_locale yes
use_spacer yes
TEXT
${font lucon:size=12}${alignc} Status: $mpd_status | Random: $mpd_random | Repeat: $mpd_repeat | Bitrate: $mpd_bitrate | Volume MPD: $mpd_vol
${font lucon:size=15}${alignc} Titre: $mpd_title | Artiste: $mpd_artist | Album: $mpd_album
${alignc}${mpd_bar 10,800}
${font lucon:size=30}${alignc} $mpd_elapsed/$mpd_length
${font lucon:size=12}${alignc} $mpd_file
Code : Tout sélectionner
#!/bin/sh
conky -d -c ~/.conky/.conkyrcmpd
Code : Tout sélectionner
background yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
use_xft yes
xftfont lucon:size=12
xftalpha 10
update_interval 1.0
total_run_times 0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
minimum_size 5 5
maximum_width 260
draw_shades no
draw_outline no
draw_borders no
border_margin 8
border_width 3
default_color feb318
default_shade_color black
default_outline_color black
alignment top_right
gap_x 8
gap_y 31
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
use_spacer yes
TEXT
${color #feb318}${font lucon:size=11}Processus: $processes ${alignr}En cours : $running_processes
$hr
CPU usage:${alignr} PID| CPU% |MEM%
${top name 1}${alignr}${top pid 1}${top cpu 1}${top mem 1}
${font lucon:size=10}${top name 2}${alignr}${top pid 2}${top cpu 2}${top mem 2}
${font lucon:size=9}${top name 3}${alignr}${top pid 3}${top cpu 3}${top mem 3}
$hr
${font lucon:size=11}Mem usage:${alignr} PID| CPU% |MEM%
${top_mem name 1}${alignr}${top_mem pid 1}${top_mem cpu 1}${top_mem mem 1}
${font lucon:size=10}${top_mem name 2}${alignr}${top_mem pid 2}${top_mem cpu 2}${top_mem mem 2}
${font lucon:size=9}${top_mem name 3}${alignr}${top_mem pid 3}${top_mem cpu 3}${top_mem mem 3}
Code : Tout sélectionner
background yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
use_xft yes
xftfont lucon:size=12
xftalpha 10
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
double_buffer yes
minimum_size 5 5
maximum_width 310
draw_shades no
draw_outline no
draw_borders no
border_margin 8
border_width 3
default_color feb318
default_shade_color black
default_outline_color black
alignment bottom_right
gap_x 8
gap_y 8
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
use_spacer yes
own_window_type override
text_buffer_size 2048
TEXT
$kernel-$machine${alignr}Uptime: $uptime
CM: ${platform it87.2576 temp 1}°C${alignr}GPU: ${exec nvidia-settings -q gpucoretemp | grep '):' | awk '{print $4}'}°C
${alignc}CPU1: ${cpu cpu1}% ${platform coretemp.0 temp 1}°C Fan: ${platform it87.2576 fan 2}/rpm CPU2: ${cpu cpu2}% ${platform coretemp.1 temp 1}°C
${cpubar cpu1 10,155} ${alignr}${cpubar cpu2 10,155}
${cpugraph cpu1 30,155 d60000 feb318} ${alignr}${cpugraph cpu2 30,155 feb318 d60000}
RAM: ${alignr}$mem/ $memmax $memperc% ${membar 10,60}
Swap:${alignr}$swap/ $swapmax $swapperc% ${swapbar 10,60}
$hr
IP Locale sur $gw_iface: ${alignr}${addrs eth0}
IP Passerelle: ${alignr}$gw_ip
Download: ${downspeed eth0}/s ${alignr}Upload: ${upspeed eth0}/s
${downspeedgraph eth0 30,155 d60000 feb318} ${alignr}${upspeedgraph eth0 30,155 feb318 d60000}
$hr
${execpi 600 python /home/rouge64/scripts/majnotif}
Code : Tout sélectionner
background yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
use_xft yes
xftfont lucon:size=11
xftalpha 10
update_interval 1.0
total_run_times 0
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
minimum_size 200 5
maximum_width 310
draw_shades no
draw_outline no
draw_borders no
border_margin 8
border_width 1
outline_width 1
default_color feb318
default_shade_color black
default_outline_color red
alignment bottom_left
gap_x 8
gap_y 8
no_buffers yes
uppercase no
override_utf8_locale yes
use_spacer left
TEXT
${exec sudo hddtemp /dev/sda} I/O:${alignr}${diskio /dev/sda}/s
${diskiograph 30,310 d60000 feb318 /dev/sda}
${exec sudo hddtemp /dev/sdb} I/O:${alignr}${diskio /dev/sdb}/s
${diskiograph 30,310 feb318 d60000 /dev/sdb}
Espace Disque: OCCUPÉ | LIBRE | TOTAL
$hr
${alignc}DISQUES LOCAUX
$hr
/${alignr} ${fs_used /} | ${fs_free /} | ${fs_size /} ${fs_bar 10,40 /}
/arch32${alignr} ${fs_used /arch32} | ${fs_free /arch32} | ${fs_size /arch32} ${fs_bar 10,40 /arch32}
/home${alignr} ${fs_used /home} | ${fs_free /home} | ${fs_size /home} ${fs_bar 10,40 /home}
/jeux_windows${alignr} ${fs_used /jeux_windows} | ${fs_free /jeux_windows} | ${fs_size /jeux_windows} ${fs_bar 10,40 /jeux_windows}
/windows${alignr} ${fs_used /windows} | ${fs_free /windows} | ${fs_size /windows} ${fs_bar 10,40 /windows}
/virtualisation${alignr} ${fs_used /virtualisation} | ${fs_free /virtualisation} | ${fs_size /virtualisation} ${fs_bar 10,40 /virtualisation}
/partprimdd2${alignr} ${fs_used /partprimdd2} | ${fs_free /partprimdd2} | ${fs_size /partprimdd2} ${fs_bar 10,40 /partprimdd2}
$hr
${alignc}SERVEUR xxxxxxxx
$hr
/musique${alignr} ${fs_used /serveur_xxxxxxxx/musique} | ${fs_free /serveur_xxxxxxxx/musique} | ${fs_size /serveur_xxxxxxxx/musique} ${fs_bar 10,40 /serveur_xxxxxxxx/musique}
/series${alignr} ${fs_used /serveur_xxxxxxxx/series} | ${fs_free /serveur_xxxxxxxx/series} | ${fs_size /serveur_xxxxxxxx/series} ${fs_bar 10,40 /serveur_xxxxxxxx/series}
/divers${alignr} ${fs_used /serveur_xxxxxxxx/divers} | ${fs_free /serveur_xxxxxxxx/divers} | ${fs_size /serveur_xxxxxxxx/divers} ${fs_bar 10,40 /serveur_xxxxxxxx/divers}
/films${alignr} ${fs_used /serveur_xxxxxxxx/films} | ${fs_free /serveur_xxxxxxxx/films} | ${fs_size /serveur_xxxxxxxx/films} ${fs_bar 10,40 /serveur_xxxxxxxx/films}
/incoming${alignr} ${fs_used /serveur_xxxxxxxx/incoming} | ${fs_free /serveur_xxxxxxxx/incoming} | ${fs_size /serveur_xxxxxxxx/incoming} ${fs_bar 10,40 /serveur_xxxxxxxx/incoming}
Code : Tout sélectionner
#!/bin/sh
sudo /etc/cron.hourly/pacsync.sh
killall conky
conky -d -c ~/.conky/.conkyrc1 && conky -d -c ~/.conky/.conkyrc2 && conky -d -c ~/.conky/.conkyrc3 && conky -d -c ~/.conky/.conkyrcmpd
Code : Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Description: Python script for notifying archlinux updates.
# Usage: Put shell script with command 'pacman -Sy' into /etc/cron.hourly/
# Conky: e.g. put in conky '${texeci 1800 python path/to/this/file}'
# Author: Michal Orlik <thror.fw@gmail.com>, sabooky <sabooky@yahoo.com>
import re
################################################################################
# SETTINGS - main settings
# set this to True if you just want one summary line (True/False)
brief = False
# number of packages to display (0 = display all)
num_of_pkgs = 0
#show only important packages
onlyImportant = False
########################################
# OPTIONAL SETTINGS
# PACKAGE RATING - prioritize packages by rating
# pkgs will be sorted by rating. pkg rating = ratePkg + rateRepo for that pkg
# pkg (default=0, wildcards accepted)
ratePkg = {
'kernel*':10,
'pacman':9,
'nvidia*':8,
}
# repo (default=0, wildcards accepted)
rateRepo = {
'core':5,
'extra':4,
'community':3,
'testing':2,
'unstable':1,
}
# at what point is a pkg considered "important"
iThresh = 5
########################################
# OUTPUT SETINGS - configure the output format
# change width of output
width = 50
# if you would use horizontal you possibly want to disable 'block'
horizontally = False
# separator of horizontal layout
separator = ' ---'
# pkg template - this is how individual pkg info is displayed ('' = disabled)
# valid keywords - %(name)s, %(repo)s, %(size).2f, %(ver)s, %(rate)s
pkgTemplate = "%(repo)s/%(name)s %(ver)s"
# important pkg tempalte - same as above but for "important" pkgs
ipkgTemplate = "%(repo)s/%(name)s %(ver)s"
# summary template - this is the summary line at the end
# valid keywords - %(numpkg)d, %(size).2f, %(inumpkg), %(isize).2f, %(pkgstring)s
summaryTemplate = "%(numpkg)d %(pkgstring)s"
# important summary template - same as above if "important" pkgs are found
isummaryTemplate = summaryTemplate + "$alignr${color ff0000}[${font impact:size=12}/${color ffffff}!${color ff0000}\${font lucon:size=12} %(isize).2f Mo] "
# pkg right column template - individual pkg right column
# valid keywords - same as pkgTemplate
pkgrightcolTemplate = "$alignr %(size).2f Mo"
# important pkg right column template - same as above but for important pkgs
ipkgrightcolTemplate = pkgrightcolTemplate
# summary right column template - summay line right column
# valid keywords - same as summaryTemplate
summaryrightcolTemplate = "$alignr${color FEB318}Total: %(size).2f Mo"
# important summary right column template - same as above if "important" pkgs are found
isummaryrightcolTemplate = summaryrightcolTemplate
# seperator before summary ('' = disabled)
block = '$hr'
# up to date msg
u2d = '${alignc}${color 00ff00}* ${color feb318}S Y S T È M E À J O U R ${color 00ff00}*'
################################################################################
import subprocess
import re
from time import sleep
from glob import glob
from fnmatch import fnmatch
program = []
pkgs = []
url = None
def runpacman():
"""runs pacman returning the popen object"""
p = subprocess.Popen(['pacman','-Qu'],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
return p
def cmpPkgs(x, y):
"""Compares packages for sorting"""
if x['rate']==y['rate']:
return cmp(x['size'], y['size'])
else:
return x['rate']-y['rate']
if onlyImportant:
pkgTemplate, pkgrightcolTemplate = '',''
p = runpacman()
#parse pacmans output
for line in p.stdout:
if re.match('(CÃle|Pakete|Targets|Se procesará|Cibles|Pacchetti|'
'Celuje|Pacotes|Цели) \(.*\):', line):
program = line.split()[2:]
for line in p.stdout:
if not line.strip():
break
program += line.split()
for item in program:
pkg = {}
desc_path = False
desc_paths = glob('/var/lib/pacman/sync/*/%s'%item)
if not desc_path:
desc_path = desc_paths[0] + '/desc'
pkg['repo'] = desc_path.split('/')[-3]
desc = open(desc_path).readlines()
checkName = 0
checkSize = 0
checkVersion = 0
for index, line in enumerate(desc):
if line=='%NAME%\n' and checkName == 0:
pkgName = desc[index+1].strip()
pkg['name'] = pkgName
checkName = 1
if line=='%CSIZE%\n' and checkSize == 0:
pkgSize = int(desc[index+1].strip())
pkg['size'] = pkgSize / 1024.0 / 1024
checkSize = 1
if line=='%VERSION%\n' and checkVersion == 0:
pkgVersion = desc[index+1].strip()
pkg['ver'] = pkgVersion
checkVersion = 1
pkgRate = [v for x, v in ratePkg.iteritems()
if fnmatch(pkg['name'], x)]
repoRate = [v for x, v in rateRepo.iteritems()
if fnmatch(pkg['repo'], x)]
pkg['rate'] = sum(pkgRate + repoRate)
pkgs.append(pkg)
# echo list of pkgs
if pkgs:
summary = {}
summary['numpkg'] = len(pkgs)
summary['size'] = sum([x['size'] for x in pkgs])
if summary['numpkg'] == 1:
summary['pkgstring'] = 'Mise à jour'
else:
summary['pkgstring'] = 'Mises à jours'
summary['inumpkg'] = 0
summary['isize'] = 0
lines = []
pkgs.sort(cmpPkgs, reverse=True)
for pkg in pkgs:
important = False
if pkg['rate'] >= iThresh:
summary['isize'] += pkg['size']
summary['inumpkg'] += 1
pkgString = ipkgTemplate % pkg
sizeValueString = ipkgrightcolTemplate % pkg
else:
pkgString = pkgTemplate % pkg
sizeValueString = pkgrightcolTemplate % pkg
if len(pkgString)+len(sizeValueString)>width:
pkgString = pkgString[:width-len(sizeValueString)-1]+'...'
line = pkgString.ljust(width - len(sizeValueString)) + sizeValueString
line = re.sub("core/", "${font impact:size=12}${color ff0000}/${color ffffff}!${color ff0000}\${font lucon:size=12} [Core] ${color feb318}", line)
line = re.sub("extra/", "${color ff8800}[Extra] ${color feb318}", line)
line = re.sub("community/", "${color ffff00}[Community] ${color feb318}", line)
line = re.sub("testing/", "${color ff00ff}[Testing] ${color feb318}", line)
line = re.sub("xxxxxxxx/", "${color ffff00}[xxxxxxxx] ${color feb318}", line)
if line.strip():
lines.append(line)
if not horizontally:
separator = '\n'
if not brief:
if num_of_pkgs:
print separator.join(lines[:num_of_pkgs])
else:
print separator.join(lines)
if block:
print block.rjust(width-2000)
if summary['inumpkg']:
overallString = isummaryTemplate % summary
overallMBString = summaryrightcolTemplate % summary
else:
overallString = summaryTemplate % summary
overallMBString = isummaryrightcolTemplate % summary
summaryline = overallString.ljust(width - len(overallMBString)) \
+ overallMBString
if summaryline and not horizontally:
print summaryline
else:
print u2d
Code : Tout sélectionner
#!/bin/bash
pacman -Sy
Code : Tout sélectionner
#!/bin/sh
conky -d -c ~/.conky/.horlogetimer && date +"it's ,%H o'clock %M minutes and %S seconds" | festival --tts
Code : Tout sélectionner
background yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
use_xft yes
xftfont lucon:size=7
xftalpha 10
update_interval 1.0
total_run_times 50
own_window yes
own_window_transparent yes
double_buffer yes
minimum_size 5 5
maximum_width 800
draw_shades yes
draw_outline yes
draw_borders no
border_margin 5
border_width 1
default_color feb318
default_shade_color black
default_outline_color black
alignment top_left
gap_x 615
gap_y 850
no_buffers yes
uppercase no
override_utf8_locale yes
use_spacer yes
own_window_type override
TEXT
${font lucon:size=27}${alignc} ${time %A %e %B %Y}
${font lucon:size=36}${alignc} ${time %k:%M:%S}
Ah! et j'allais oublier les screenshots!
Voilà bises à tou(te)s.
Raison : des apercus ! pense à ceux qui n'ont pas du 1600x200
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [Conky] Vos .conkyrc !
Comme je suis un gros chauvin, j'ai donc refait ce script pour nous, utilisateurs de la langue de molière
Voici un donc script perl. Il génère un calendrier qui s'affiche à l'écran. Dans votre fichier .conkyrc, il faudra que vous ayez défini les couleurs suivantes :
Code : Tout sélectionner
color0=xxxxx # Couleur de la date
color1=xxxxx # Couleur initiale du calendrier
color2=xxxxx # Couleur des dates week end
Code : Tout sélectionner
perldoc ce_script_perl
Code : Tout sélectionner
${execp perl ce_script}
Si vous avez d'autres idées d'améliorations autres que celles citées dans la doc, n'hésitez pas
/!\ Attention, dans les dernières versions
- Le texte renvoyé à conky est supérieur à 256 bytes. Il faudra rajouter cette ligne dans votre conky :
Code : Tout sélectionner
text_buffer_size 512
Code : Tout sélectionner
--aligneagauche
--aligneadroite
--aligneaucentre
Version 0.10 du 05/09/2009
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
sub help {
my @nom = split "/", $0;
print "Utilisation : $nom[$#nom] [argument]\n"
. "[argument] : --aligneradroite\n"
. " --aligneaucentre\n"
. " --aligneagauche\n";
exit(1);
}
if(scalar @ARGV != 1) {
help;
}
else {
my $aligne_a_droite = 0;
my $aligne_au_centre = 0;
if($ARGV[0] eq "--aligneadroite") {
$aligne_a_droite++;
}
elsif($ARGV[0] eq "--aligneaucentre") {
$aligne_au_centre++;
}
elsif($ARGV[0] eq "--aligneagauche") {
# On ne fait rien
}
else {
help;
}
use constant VERSION => 0.10;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color1}'; # Couleur initiale
use constant COULEUR_WEEKEND => '${color2}'; # Couleur du week end
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31,
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_mois_annee = length("$mois $annee");
my $taille_entete = (LARGEUR - $taille_mois_annee) / 2;
my $taille_reste = LARGEUR - ($taille_entete + $taille_mois_annee);
# Mise en forme pour l'affichage
my $entete = COULEUR_INITIALE . " " x $taille_entete . "$mois $annee" . " " x $taille_reste . "\n";
my @calendrier = qw(Lu Ma Me Je Ve Sa Di);
foreach my $element (1..($emplacement_premier_jour_mois)%7) {
push @calendrier, " ";
}
# On rentre toutes les dates dans le tableau
foreach my $element (1..$nb_jours_par_mois{$mois}) {
push @calendrier, (($element < 10) ? " " . $element : $element);
}
# On rempli les dates du mois suivant par deux espaces
my $jours_restants = 7 - ((scalar @calendrier) % 7);
foreach my $element (1..$jours_restants) {
push @calendrier, " ";
}
# On applique la couleur sur le samedi
for(my $i = 5; $i < scalar @calendrier; $i += 7) {
next if(($sav_jour eq $calendrier[$i]) || (" $sav_jour" eq $calendrier[$i]));
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# On applique la couleur sur le dimanche
for(my $i = 6; $i < scalar @calendrier; $i += 7) {
next if(($sav_jour eq $calendrier[$i] || " $sav_jour" eq $calendrier[$i]));
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# Affichage du calendrier
if($aligne_a_droite) {
print '${alignr}' . $entete . '${alignr}';
}
elsif($aligne_au_centre) {
print '${alignc}' . $entete . '${alignc}';
}
else {
print $entete;
}
my $j = 0;
foreach my $date (@calendrier) {
$j++;
if(($date eq $sav_jour) || ($date eq " $sav_jour")) {
print COULEUR_DATE . $date . COULEUR_INITIALE;
}
else {
print $date;
}
if(($j%7) == 0) {
if($aligne_a_droite) {
print "\n" . '${alignr}';
}
elsif($aligne_au_centre) {
print "\n" . '${alignc}';
}
else {
print "\n";
}
}
else {
print " ";
}
}
}
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color1> dans conky sera la couleur de la date courante et C<color0> permettra de revenir à la
couleur originale. C<color2> sera la date indiquant les samedis et dimanches.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans le fichier de configuration de conky, il faut impérativement que le buffer soit étendu à 512 bytes.Par défaut celui-ci est à 256 ce qui pose de gros problème d'affichage. Voici le code à
rajouter :
C<text_buffer_size 512>
Ce script s'utiliser comme ceci :
C<${execp perl Calendrier} [argument]>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier} [argument]>
[argument] peut prendre une de ces 3 valeurs :
=over 4
item --aligneagauche
item --aligneadroite
item --aligneaucentre
=back
=head1 BOGUES
Aucun connu actuellement
=head1 Évolutions
=over 4
=item
Mettre les autres jours n'appartenant pas au mois en cours d'une couleur différente
=back
=head1 Changelog
=over 4
=item 05/09/2009
Correction d'un bogue d'affichage de la couleur du jour sur le samedi et le dimanche
=item 01/09/2009
Suppression de la ligne vide au début de calendrier
Mise en couleur des jours inférieurs à 10 à cause d'une égalité erronée
=item 23/08/2009
Correction d'un bogue d'affichage. Lorsque la couleur COULEUR_INITIALE était différente du blanc, le début du calendrier (mois + année + Lu + Ma + Me + Je + Ve) était affiché en blanc alors qu'ils
auraient du être de la couleur COULEUR_INITIALE.
Correction d'un bogue d'affichage lorsqu'on utilisait la balise $alignc avant l'exécution du script. Ceci avait pour effet de décaler bizarrement le mois et l'année. Pour palier la non transmission
du positionnement de conky vers les scripts, j'ai rajouté un argument obligatoire à passer en paramêtre
=item 22/08/2009
Les jours correspondant au weekend, à savoir samedi et dimanche, sont de couleur différente des autre jour de la semaine.
Cette version apporte aussi un changement important au niveau du stockage du calendrier puisque maintenant il se fait dans un tableau et non plus dans une variable texte.
Grâce à cette manière de procéder, un gain sur le temps de mise en page a été apporté. Cette approche aurait du être la première ...
=item 20/08/2009
Remplacement de la balise ${color} par ${color0} suite à un bogue d'affichage dans conky lorsque l'utilisateur affichait intégralement le calendrier d'une couleur différente du blanc
=item 20/08/2009
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item 19/08/2009
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item 18/08/2009
Remplacement de C<my $date = 'date'> par localtime
=item 18/08/2009
Création du script
=item Big Bang
Création de l'univers connu :D
=back
=head1 Remerciements
Une grand merci à Nic0- (pseudo IRC) qui m'a beaucoup aidé dans la recherche de bug. Un grand merci aussi pour ses suggestions d'améliorations
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
sub help {
my @nom = split "/", $0;
print "Utilisation : $nom[$#nom] [argument]\n"
. "[argument] -> --aligneradroite\n"
. " -> --aligneaucentre\n";
exit(1);
}
if(scalar @ARGV != 1) {
help;
}
else {
my $aligne_a_droite = 0;
my $aligne_au_centre = 0;
if($ARGV[0] eq "--aligneadroite") {
$aligne_a_droite++;
}
elsif($ARGV[0] eq "--aligneaucentre") {
$aligne_au_centre++;
}
elsif($ARGV[0] eq "--aligneagauche") {
# On ne fait rien
}
else {
help;
}
use constant VERSION => 0.09;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color1}'; # Couleur initiale
use constant COULEUR_WEEKEND => '${color2}'; # Couleur du week end
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31,
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_mois_annee = length("$mois $annee");
my $taille_entete = (LARGEUR - $taille_mois_annee) / 2;
my $taille_reste = LARGEUR - ($taille_entete + $taille_mois_annee);
# Mise en forme pour l'affichage
my $entete = COULEUR_INITIALE . " " x $taille_entete . "$mois $annee" . " " x $taille_reste . "\n";
my @calendrier = qw(Lu Ma Me Je Ve Sa Di);
foreach my $element (1..($emplacement_premier_jour_mois)%7) {
push @calendrier, " ";
}
# On rentre toutes les dates dans le tableau
foreach my $element (1..$nb_jours_par_mois{$mois}) {
push @calendrier, (($element < 10) ? " " . $element : $element);
}
# On rempli les dates du mois suivant par deux espaces
my $jours_restants = 7 - ((scalar @calendrier) % 7);
foreach my $element (1..$jours_restants) {
push @calendrier, " ";
}
# On applique la couleur sur le samedi
for(my $i = 5; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# On applique la couleur sur le dimanche
for(my $i = 6; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# Affichage du calendrier
if($aligne_a_droite) {
print '${alignr}' . $entete . '${alignr}';
}
elsif($aligne_au_centre) {
print '${alignc}' . $entete . '${alignc}';
}
else {
print $entete;
}
my $j = 0;
foreach my $date (@calendrier) {
$j++;
if(($date eq $sav_jour) || ($date eq " $sav_jour")) {
print COULEUR_DATE . $date . COULEUR_INITIALE;
}
else {
print $date;
}
if(($j%7) == 0) {
if($aligne_a_droite) {
print "\n" . '${alignr}';
}
elsif($aligne_au_centre) {
print "\n" . '${alignc}';
}
else {
print "\n";
}
}
else {
print " ";
}
}
}
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color1> dans conky sera la couleur de la date courante et C<color0> permettra de revenir à la
couleur originale. C<color2> sera la date indiquant les samedis et dimanches.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans le fichier de configuration de conky, il faut impérativement que le buffer soit étendu à 512 bytes.Par défaut celui-ci est à 256 ce qui pose de gros problème d'affichage. Voici le code à
rajouter :
C<text_buffer_size 512>
Ce script s'utiliser comme ceci :
C<${execp perl Calendrier} [argument]>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier} [argument]>
[argument] peut prendre une de ces 3 valeurs :
=over 4
item --aligneagauche
item --aligneadroite
item --aligneaucentre
=back
=head1 BOGUES
Aucun connu actuellement
=head1 Évolutions
=over 4
=item
Mettre les autres jours n'appartenant pas au mois en cours d'une couleur différente
=back
=head1 Changelog
=over 4
=item 01/09/2009
Suppression de la ligne vide au début de calendrier
Mise en couleur des jours inférieurs à 10 à cause d'une égalité erronée
=item 23/08/2009
Correction d'un bogue d'affichage. Lorsque la couleur COULEUR_INITIALE était différente du blanc, le début du calendrier (mois + année + Lu + Ma + Me + Je + Ve) était affiché en blanc alors qu'ils
auraient du être de la couleur COULEUR_INITIALE.
Correction d'un bogue d'affichage lorsqu'on utilisait la balise $alignc avant l'exécution du script. Ceci avait pour effet de décaler bizarrement le mois et l'année. Pour palier la non transmission
du positionnement de conky vers les scripts, j'ai rajouté un argument obligatoire à passer en paramêtre
=item 22/08/2009
Les jours correspondant au weekend, à savoir samedi et dimanche, sont de couleur différente des autre jour de la semaine.
Cette version apporte aussi un changement important au niveau du stockage du calendrier puisque maintenant il se fait dans un tableau et non plus dans une variable texte.
Grâce à cette manière de procéder, un gain sur le temps de mise en page a été apporté. Cette approche aurait du être la première ...
=item 20/08/2009
Remplacement de la balise ${color} par ${color0} suite à un bogue d'affichage dans conky lorsque l'utilisateur affichait intégralement le calendrier d'une couleur différente du blanc
=item 20/08/2009
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item 19/08/2009
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item 18/08/2009
Remplacement de C<my $date = 'date'> par localtime
=item 18/08/2009
Création du script
=item Big Bang
Création de l'univers connu :D
=back
=head1 Remerciements
Une grand merci à Nic0- (pseudo IRC) qui m'a beaucoup aidé dans la recherche de bug. Un grand merci aussi pour ses suggestions d'améliorations
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
sub help {
my @nom = split "/", $0;
print "Utilisation : $nom[$#nom] [argument]\n"
. "[argument] -> --aligneradroite\n"
. " -> --aligneaucentre\n";
exit(1);
}
if(scalar @ARGV != 1) {
help;
}
else {
my $aligne_a_droite = 0;
my $aligne_au_centre = 0;
if($ARGV[0] eq "--aligneadroite") {
$aligne_a_droite++;
}
elsif($ARGV[0] eq "--aligneaucentre") {
$aligne_au_centre++;
}
elsif($ARGV[0] eq "--aligneagauche") {
# On ne fait rien
}
else {
help;
}
use constant VERSION => 0.08;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color1}'; # Couleur initiale
use constant COULEUR_WEEKEND => '${color2}'; # Couleur du week end
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31,
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_mois_annee = length("$mois $annee");
my $taille_entete = (LARGEUR - $taille_mois_annee) / 2;
my $taille_reste = LARGEUR - ($taille_entete + $taille_mois_annee);
# Mise en forme pour l'affichage
my $entete = COULEUR_INITIALE . " " x $taille_entete . "$mois $annee" . " " x $taille_reste . "\n";
my @calendrier = qw(Lu Ma Me Je Ve Sa Di);
foreach my $element (1..$emplacement_premier_jour_mois) {
push @calendrier, " ";
}
# On rentre toutes les dates dans le tableau
foreach my $element (1..$nb_jours_par_mois{$mois}) {
push @calendrier, (($element < 10) ? " " . $element : $element);
}
# On rempli les dates du mois suivant par deux espaces
my $jours_restants = 7 - ((scalar @calendrier) % 7);
foreach my $element (1..$jours_restants) {
push @calendrier, " ";
}
# On applique la couleur sur le samedi
for(my $i = 5; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# On applique la couleur sur le dimanche
for(my $i = 6; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# Affichage du calendrier
if($aligne_a_droite) {
print '${alignr}' . $entete . '${alignr}';
}
elsif($aligne_au_centre) {
print '${alignc}' . $entete . '${alignc}';
}
else {
print $entete;
}
my $j = 0;
foreach my $date (@calendrier) {
$j++;
if($date eq $sav_jour) {
print COULEUR_DATE . $date . COULEUR_INITIALE;
}
else {
print $date;
}
if(($j%7) == 0) {
if($aligne_a_droite) {
print "\n" . '${alignr}';
}
elsif($aligne_au_centre) {
print "\n" . '${alignc}';
}
else {
print "\n";
}
}
else {
print " ";
}
}
}
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color1> dans conky sera la couleur de la date courante et C<color0> permettra de revenir à la
couleur originale. C<color2> sera la date indiquant les samedis et dimanches.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans le fichier de configuration de conky, il faut impérativement que le buffer soit étendu à 512 bytes.Par défaut celui-ci est à 256 ce qui pose de gros problème d'affichage. Voici le code à
rajouter :
C<text_buffer_size 512>
Ce script s'utiliser comme ceci :
C<${execp perl Calendrier} [argument]>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier} [argument]>
[argument] peut prendre une de ces 3 valeurs :
=over 4
item --aligneagauche
item --aligneadroite
item --aligneaucentre
=back
=head1 BOGUES
Aucun connu actuellement
=head1 Évolutions
=over 4
=item
Mettre les autres jours n'appartenant pas au mois en cours d'une couleur différente
=back
=head1 Changelog
=over 4
=item 23/08/2009
Correction d'un bogue d'affichage. Lorsque la couleur COULEUR_INITIALE était différente du blanc, le début du calendrier (mois + année + Lu + Ma + Me + Je + Ve) était affiché en blanc alors qu'ils
auraient du être de la couleur COULEUR_INITIALE.
Correction d'un bogue d'affichage lorsqu'on utilisait la balise $alignc avant l'exécution du script. Ceci avait pour effet de décaler bizarrement le mois et l'année. Pour palier la non transmission
du positionnement de conky vers les scripts, j'ai rajouté un argument obligatoire à passer en paramêtre
=item 22/08/2009
Les jours correspondant au weekend, à savoir samedi et dimanche, sont de couleur différente des autre jour de la semaine.
Cette version apporte aussi un changement important au niveau du stockage du calendrier puisque maintenant il se fait dans un tableau et non plus dans une variable texte.
Grâce à cette manière de procéder, un gain sur le temps de mise en page a été apporté. Cette approche aurait du être la première ...
=item 20/08/2009
Remplacement de la balise ${color} par ${color0} suite à un bogue d'affichage dans conky lorsque l'utilisateur affichait intégralement le calendrier d'une couleur différente du blanc
=item 20/08/2009
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item 19/08/2009
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item 18/08/2009
Remplacement de C<my $date = 'date'> par localtime
=item 18/08/2009
Création du script
=item Big Bang
Création de l'univers connu :D
=back
=head1 Remerciements
Une grand merci à Nic0- (pseudo IRC) qui m'a beaucoup aidé dans la recherche de bug. Un grand merci aussi pour ses suggestions d'améliorations
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
use constant VERSION => 0.07;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color1}'; # Couleur initiale
use constant COULEUR_WEEKEND => '${color2}'; # Couleur du week end
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31,
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_mois_annee = length("$mois $annee");
my $taille_entete = (LARGEUR - $taille_mois_annee) / 2;
my $taille_reste = LARGEUR - ($taille_entete + $taille_mois_annee);
# Mise en forme pour l'affichage
my $entete = COULEUR_INITIALE . " " x $taille_entete . "$mois $annee" . " " x $taille_reste . "\n";
my @calendrier = qw(Lu Ma Me Je Ve Sa Di);
foreach my $element (1..$emplacement_premier_jour_mois) {
push @calendrier, " ";
}
# On rentre toutes les dates dans le tableau
foreach my $element (1..$nb_jours_par_mois{$mois}) {
push @calendrier, (($element < 10) ? " " . $element : $element);
}
# On applique la couleur sur le samedi
for(my $i = 5; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# On applique la couleur sur le dimanche
for(my $i = 6; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
print $entete;
my $j = 0;
foreach my $date (@calendrier) {
$j++;
if($date eq $sav_jour) {
print COULEUR_DATE . $date . COULEUR_INITIALE;
}
else {
print $date;
}
if(($j%7) == 0) {
print "\n";
}
else {
print " ";
}
}
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color1> dans conky sera la couleur de la date courante et C<color0> permettra de revenir à la
couleur originale. C<color2> sera la date indiquant les samedis et dimanches.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans le fichier de configuration de conky, il faut impérativement que le buffer soit étendu à 512 bytes.Par défaut celui-ci est à 256 ce qui pose de gros problème d'affichage. Voici le code à rajouter :
C<text_buffer_size 512>
Ce script s'utiliser comme ceci :
C<${execp perl Calendrier}>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier}>
=head1 BOGUES
Aucun connu actuellement
=head1 Évolutions
=over 4
=item
Mettre les autres jours n'appartenant pas au mois en cours d'une couleur différente
=back
=head1 Changelog
=over 4
=item 23/08/2009
Correction d'un bogue d'affichage. Lorsque la couleur COULEUR_INITIALE était différente du blanc, le début du calendrier (mois + année + Lu + Ma + Me + Je + Ve) était affiché en blanc alors qu'ils
auraient du être de la couleur COULEUR_INITIALE.
Correction d'un bogue d'affichage lorsqu'on utilisait la balise $alignc avant l'exécution du script. Ceci avait pour effet de décaler bizarrement le mois et l'année.
=item 22/08/2009
Les jours correspondant au weekend, à savoir samedi et dimanche, sont de couleur différente des autre jour de la semaine.
Cette version apporte aussi un changement important au niveau du stockage du calendrier puisque maintenant il se fait dans un tableau et non plus dans une variable texte.
Grâce à cette manière de procéder, un gain sur le temps de mise en page a été apporté. Cette approche aurait du être la première ...
=item 20/08/2009
Remplacement de la balise ${color} par ${color0} suite à un bogue d'affichage dans conky lorsque l'utilisateur affichait intégralement le calendrier d'une couleur différente du blanc
=item 20/08/2009
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item 19/08/2009
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item 18/08/2009
Remplacement de C<my $date = 'date'> par localtime
=item 18/08/2009
Création du script
=item Big Bang
Création de l'univers connu :D
=back
=head1 Remerciements
Une grand merci à Nic0- (pseudo IRC) qui m'a beaucoup aidé dans la recherche de bug. Un grand merci aussi pour ses suggestions d'améliorations
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
use constant VERSION => 0.06;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color1}'; # Couleur initiale
use constant COULEUR_WEEKEND => '${color2}'; # Couleur du week end
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31,
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_entete = length("$mois $annee");
$taille_entete = (LARGEUR - $taille_entete) / 2;
# Mise en forme pour l'affichage
my $entete = " " x $taille_entete . "$mois $annee\n";
my @calendrier = qw(Lu Ma Me Je Ve Sa Di);
foreach my $element (1..$emplacement_premier_jour_mois) {
push @calendrier, " ";
}
# On rentre toutes les dates dans le tableau
foreach my $element (1..$nb_jours_par_mois{$mois}) {
push @calendrier, (($element < 10) ? " " . $element : $element);
}
# On applique la couleur sur le samedi
for(my $i = 5; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
# On applique la couleur sur le dimanche
for(my $i = 6; $i < scalar @calendrier; $i += 7) {
next if($sav_jour eq $calendrier[$i]);
$calendrier[$i] = COULEUR_WEEKEND . $calendrier[$i] . COULEUR_INITIALE;
}
print $entete;
my $j = 0;
foreach my $date (@calendrier) {
$j++;
if($date eq $sav_jour) {
print COULEUR_DATE . $date . COULEUR_INITIALE;
}
else {
print $date;
}
if(($j%7) == 0) {
print "\n";
}
else {
print " ";
}
}
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color1> dans conky sera la couleur de la date courante et C<color0> permettra de revenir à la
couleur originale. C<color2> sera la date indiquant les samedis et dimanches.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans le fichier de configuration de conky, il faut impérativement que le buffer soit étendu à 512 bytes.Par défaut celui-ci est à 256 ce qui pose de gros problème d'affichage. Voici le code à rajouter :
C<text_buffer_size 512>
Ce script s'utiliser comme ceci :
C<${execp perl Calendrier}>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier}>
=head1 BOGUES
Aucun connu actuellement
=head1 Évolutions
=over 4
=item
Mettre les autres jours n'appartenant pas au mois en cours d'une couleur différente
=back
=head1 Changelog
=over 4
=item 22/08/2009
Les jours correspondant au weekend, à savoir samedi et dimanche, sont de couleur différente des autre jour de la semaine.
Cette version apporte aussi un changement important au niveau du stockage du calendrier puisque maintenant il se fait dans un tableau et non plus dans une variable texte.
Grâce à cette manière de procéder, un gain sur le temps de mise en page a été apporté. Cette approche aurait du être la première ...
=item 20/08/2009
Remplacement de la balise ${color} par ${color0} suite à un bogue d'affichage dans conky lorsque l'utilisateur affichait intégralement le calendrier d'une couleur différente du blanc
=item 20/08/2009
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item 19/08/2009
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item 18/08/2009
Remplacement de C<my $date = 'date'> par localtime
=item 18/08/2009
Création du script
=item Big Bang
Création de l'univers connu :D
=back
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
use constant VERSION => 0.05;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color}'; # Couleur initiale
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_entete = length("$mois $annee");
$taille_entete = (LARGEUR - $taille_entete) / 2;
# Mise en forme pour l'affichage
my $calendrier = " " x $taille_entete . "$mois $annee\n" . "Lu Ma Me Je Ve Sa Di\n";
foreach my $element (1..$nb_jours_par_mois{$mois}) {
if($element == 1) {
$calendrier .= " " x $emplacement_premier_jour_mois;
$emplacement_premier_jour_mois++;
}
$calendrier .= ($element < 10) ? " " . $element : $element;
if(($emplacement_premier_jour_mois % 7) == 0) {
$calendrier .= "\n";
}
else {
$calendrier .= " ";
}
$emplacement_premier_jour_mois++;
}
$calendrier .= "\n";
my($debut, $fin) = split " $sav_jour ", $calendrier;
# Affichage final
print $debut . " " . COULEUR_DATE . $sav_jour . COULEUR_INITIALE . " " . $fin;
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color0> dans conky sera la couleur de la date courante et C<color> permettra de revenir à la
couleur originale.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans conky, il faut l'utiliser comme ceci :
C<${execp perl Calendrier}>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier}>
=head1 BOGUES
Pas de bogue connu actuellement
=head1 Évolutions
=head2 Futures
=over 4
=item
Mettre les autres jours n'appartenant pas au mois avec une couleur différente
=back
=head2 Passées
=over 4
=item
Lors du découpage du calendrier, j'ai rajouté un espace de chaque coté de la date courante pour supprimer un bogue d'affichage de la date
en couleur
=item
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item
Remplacement de C<my $date = 'date'> par localtime
=item
Création du script
=back
Version 0.04 du 19/08/2009
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use integer;
use constant VERSION => 0.04;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color}'; # Couleur initiale
use constant LARGEUR => 20; # Nombre de caractères par ligne
# Définition des mois
my %nb_jours_par_mois = (
'Janvier' => 31,
'Février' => 28,
'Mars' => 31,
'Avril' => 30,
'Mai' => 31,
'Juin' => 30,
'Juillet' => 31,
'Août' => 31,
'Septembre' => 30,
'Octobre' => 31,
'Novembre' => 30,
'Décembre' => 31
);
# Récupération des informations
my $jour = (localtime)[3];
my $jour_semaine = (localtime)[6];
my $mois_en_chiffre = (localtime)[4];
my $mois = (qw(Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre))[$mois_en_chiffre];
my $annee = 1900 + (localtime)[5];
# Adaptation au calendrier Français qui commence le Lundi et non le Dimanche
my $sav_jour = $jour;
$jour--;
$jour = 6 if($jour < 0);
# Détermination d'une année bissextile
my $bissextile =
$annee % 4 ? 0 :
$annee % 100 ? 1 :
$annee % 400 ? 0 : 1;
$nb_jours_par_mois{'Février'}++ if($bissextile); # Si l'année est bissextile on ajoute un jour à Février
# Rechercher le jour de la semaine du 1ier du mois (voir POD)
my @compensation = (1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6);
my $emplacement_premier_jour_mois = $annee - 2000;
$emplacement_premier_jour_mois += $emplacement_premier_jour_mois / 4;
$emplacement_premier_jour_mois++;
$emplacement_premier_jour_mois += $compensation[$mois_en_chiffre];
$emplacement_premier_jour_mois-- if($bissextile && ($mois_en_chiffre < 2));
$emplacement_premier_jour_mois += 6; # Il faudra rectifier en 2100
$emplacement_premier_jour_mois %= 7;
$emplacement_premier_jour_mois += 5;
# Calcul pour mettre l'entête au milieu
my $taille_entete = length("$mois $annee");
$taille_entete = (LARGEUR - $taille_entete) / 2;
# Mise en forme pour l'affichage
my $calendrier = " " x $taille_entete . "$mois $annee\n" . "Lu Ma Me Je Ve Sa Di\n";
foreach my $element (1..$nb_jours_par_mois{$mois}) {
if($element == 1) {
$calendrier .= " " x $emplacement_premier_jour_mois;
$emplacement_premier_jour_mois++;
}
$calendrier .= ($element < 10) ? " " . $element : $element;
if(($emplacement_premier_jour_mois % 7) == 0) {
$calendrier .= "\n";
}
else {
$calendrier .= " ";
}
$emplacement_premier_jour_mois++;
}
$calendrier .= "\n";
my($debut, $fin) = split $sav_jour, $calendrier;
# Affichage final
print $debut . COULEUR_DATE . $sav_jour . COULEUR_INITIALE . $fin;
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color0> dans conky sera la couleur de la date courante et C<color> permettra de revenir à la
couleur originale.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans conky, il faut l'utiliser comme ceci :
C<${execp perl Calendrier}>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier}>
=head1 BOGUES
Pas de bogue connu actuellement
=head1 Évolutions
=head2 Futures
=over 4
=item
Mettre les autres jours n'appartenant pas au mois avec une couleur différente
=back
=head2 Passées
=over 4
=item
Remplacer le code C<$my calendrier = `cal`> avec la méthode donnée ici
L<http://fr.wikibooks.org/wiki/Trouver_le_jour_de_la_semaine_avec_une_date_donn%C3%A9e>
=item
Remplacement de C<my $date = 'date'> par localtime
=item
Création du script
=back
Version 0.03 du 18/08/2009
Code : Tout sélectionner
#!/usr/bin/perl -w
##################
# Nom du programme : Calendrier
#####################################
use strict;
use warnings;
use constant VERSION => 0.03;
# Définition des couleurs venant de conky
use constant COULEUR_DATE => '${color0}'; # Couleur de la date
use constant COULEUR_INITIALE => '${color}'; # Couleur initiale
# Récupération d'informations
my $calendrier = `cal`; # Récupération du calendrier
my $date = (localtime)[3]; # Récupération de la date courante
# Traitement des informations
my @calendrier = split "\n", $calendrier; # On découpe le calendrier
$calendrier[0] =~ /^(\s+)(\S+)(\s\d{4}.+)$/; # Recherche du mois
$calendrier[0] = $1 . ucfirst($2) . $3; # Mise en maj du 1 ier caractère du mois
$calendrier[1] = "Di Lu Ma Me Je Ve Sa"; # On remplace la 2 ième ligne
$calendrier = join "\n", @calendrier; # On recole tous les morceaux
my ($debut, $fin) = split $date, $calendrier; # Découpe du calendrier
# Affichage final
print $debut . COULEUR_DATE . $date . COULEUR_INITIALE . $fin;
__END__
=encoding utf8
=head1 Nom
Calendrier
=head1 SYNOPSIS
Permet d'afficher un calendrier dans conky. La date courante est affichée d'une couleur différente
=head1 DESCRIPTION
Ce script Perl s'utilise avec conky B<uniquement>. Deux couleurs lui sont passées en paramètre.
C<color0> dans conky sera la couleur de la date courante et C<color> permettra de revenir à la
couleur originale.
=head1 AUTEUR
Chipster Julien
=head1 UTILISATION
Dans conky, il faut l'utiliser comme ceci :
C<${execp perl Calendrier}>
Si vous avez fait un chmod +x Calendrier :
C<${execp ./Calendrier}>
=head1 BOGUES
Le programme devrait être refait en utilisant B<uniquement> localtime en lieu et place de :
C<my $calendrier = `cal`;>
Ceci permettra d'éviter des failles de sécurité
=head1 Évolutions
=head2 Futures
=over 4
=item
Changer le code C<$my calendrier = `cal`>
=item
Mettre les autres jours n'appartenant pas au mois avec une couleur différente
=back
=head2 Passées
=over 4
=item
Remplacement de C<my $date = 'date'> par localtime
=item
Création du script
=back
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [Conky] Vos .conkyrc !
Code : Tout sélectionner
espeak -v fr ...
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [Conky] Vos .conkyrc !
Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
- mélodie
- Maître du Kyudo
- Messages : 2784
- Inscription : lun. 30 oct. 2006, 02:06
- Localisation : Pyrénées
Re: [Conky] Vos .conkyrc !
Si si !chipster a écrit :
Où ça ?Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [Conky] Vos .conkyrc !
mélodie a écrit :Si si !chipster a écrit :
Où ça ?Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
- benjarobin
- Maître du Kyudo
- Messages : 17238
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Conky] Vos .conkyrc !
Sinon c'est vrai tu peux expliquer ? Je n'ai pas comprisSuite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [Conky] Vos .conkyrc !
Bon déjà un gros pardon, mea-culpa à mélodie et un gros bisou en primebenjarobin a écrit :C'est quoi ce free post
Sinon c'est vrai tu peux expliquer ? Je n'ai pas comprisSuite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Ensuite, la grosse mise à jour concernait le remplacement de `date` et ensuite celui de `cal`. De ce fait, le code est plus long mais beaucoup plus rapide. Ce genre de détails est écrit dans le programme. Il suffit de récupérer le code source que j'ai mis, de l'enregistrer dans un fichier (Calendrier par exemple) et ensuite de faire un perldoc Calendrier pour avoir la documentation complète du script
Là, je suis en train de travailler sur une nouvelle version complètement différente à cause de certains soucis avec conky qui part en vrille avec des programmes externes quand on change trop souvent de couleur
- gyo
- Maître du Kyudo
- Messages : 1049
- Inscription : jeu. 19 avr. 2007, 10:40
- Localisation : Nantes (44)
Re: [Conky] Vos .conkyrc !
Ça a l'air sympa conky mais le gros problème, je trouve, c'est que ça bouffe de la place sur le bureau. Du coup, si on aime lancer ses applications X en plein écran ou si l'on se retrouve avec pleins de fenêtres sur l'écran, hé bien fatalement on ne voit plus ses infos.
Alors, du coup, ben on est obligé un moment donné de minimiser (ou iconifier) ses fenêtres (à la main ou via la fonctionnalité « afficher le bureau » ou quelque chose comme ça) ou bien de déplacer ses fenêtres, ce qui, je trouve, est assez contraignant et donc quelque peu anti-ergonomique…
Toujours est-il qu'au boulot, je travaille sur un mac et que son système de widgets (appelé Dashboard®™) est assez bien pensé :
Le système apparaît seulement à la demande (via une touche ou via la souris) et alors donc le bureau est recouvert par un voile opaque avec les différents widgets. Ça ne prend donc pas de place sur le bureau et c'est, à mon sens, assez ergonomique.
On doit pouvoir faire quelque chose de similaire avec conky, j'imagine, car il peut fonctionner en mode fenêtré. Alors après, soit il peut être considéré comme un panel ou une dockapp (à l'instar de pypanel, tint2 et consort (non pas toi ! Reviens !)) ou alors l'afficher à la demande en fenêtre « layout » prioritaire (avec un effet ombragé via xcompmgr par exemple).
Qu'en pensez-vous ?