[Conky] Vos .conkyrc !

Ce qui ne concerne ni le forum ni des problèmes
Avatar de l’utilisateur
AddiKT1ve
Elfe
Messages : 543
Inscription : sam. 10 mai 2008, 22:46
Localisation : Lève les yeux...
Contact :

Message par AddiKT1ve »

Mise à jour du cache, comme son nom l'indique :-° Et voilà ce qu'en dit un petit man fc-cache :
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.
;)
Devenez colocataire de Rootards.
##hippie irc.freenode.net
Avatar de l’utilisateur
Calimero
Elfe
Messages : 692
Inscription : ven. 02 mai 2008, 18:16
Localisation : Nantes (44)

Message par Calimero »

Je l'ai pas fait et chezmoiçamarche™ quand-même.

Merci pour l'adresse de la police ! :wink:
Mes trucs : LiveCD http://ctkarch.org/ ; Blog, guide Arch, etc… http://calimeroteknik.free.fr/
In a world without walls and fences, who needs windows and gates ?
Avatar de l’utilisateur
Attentah
Hankyu
Messages : 16
Inscription : mer. 06 août 2008, 21:50
Localisation : Metz

Message par Attentah »

Hop, voilà mon conky à moi (cliquez pour l'agrandir):
Image
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" ?
Avatar de l’utilisateur
Tangrim
archer de cavalerie
Messages : 181
Inscription : mer. 26 sept. 2007, 16:31
Localisation : dans l'underground

Message par Tangrim »

Vous pouvez donner un lien pour le script gmail.py s'il vous plait :)
Avatar de l’utilisateur
Calimero
Elfe
Messages : 692
Inscription : ven. 02 mai 2008, 18:16
Localisation : Nantes (44)

Message par Calimero »

Gmail is watching you. Beware.
Mes trucs : LiveCD http://ctkarch.org/ ; Blog, guide Arch, etc… http://calimeroteknik.free.fr/
In a world without walls and fences, who needs windows and gates ?
Avatar de l’utilisateur
froli
archer de cavalerie
Messages : 186
Inscription : dim. 15 juin 2008, 09:09
Localisation : Québec, Canada

Message par froli »

Calimero a écrit :Gmail is watching you. Beware.
Bah sinon tu utilises quoi? Hotmail? :?
arch64 | froli@jabber.org | Suivez moi sur Image
Intel Core 2 Quad Q8300 2.5Ghz, 6GB RAM DDR2, 1TB HDD, ATI 4300HD 512MB, KDEmod.
Avatar de l’utilisateur
Calimero
Elfe
Messages : 692
Inscription : ven. 02 mai 2008, 18:16
Localisation : Nantes (44)

Message par Calimero »

127.0.0.1 running Dovecot. :lol:

Et quelques adresses free.

Et sûrement pas Hotmail = M$ !
Mes trucs : LiveCD http://ctkarch.org/ ; Blog, guide Arch, etc… http://calimeroteknik.free.fr/
In a world without walls and fences, who needs windows and gates ?
SND
yeomen
Messages : 274
Inscription : mar. 22 juil. 2008, 13:30

Message par SND »

Salut,

J'ai un problème. :lol:
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
J'ai mit scale pour adapté l'image à mon écran.

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.

:cry:

Merci de m'aider.
Cactus
Maître du Kyudo
Messages : 2073
Inscription : sam. 16 sept. 2006, 10:39
Localisation : 31 - Toulouse Nord

Message par Cactus »

As-tu pensé à rendre ton script exécutable ?
SND
yeomen
Messages : 274
Inscription : mar. 22 juil. 2008, 13:30

Message par SND »

Merci, il y avait juste à cocher, rendre ce script éxecutable :oops:

J'ai appris quelque chose.


:wink:
Rougebrik
newbie
Messages : 4
Inscription : mar. 17 juin 2008, 11:39

Re: [Conky] Vos .conkyrc !

Message par Rougebrik »

Bonjour à tout(te)s.
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
Mon script pour ne lancer que lui:

Code : Tout sélectionner

#!/bin/sh
conky -d -c ~/.conky/.conkyrcmpd
Mes trois conkys pour surveiller mon ordi et l'espace disque sur mon serveur.

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}
Le script pour les afficher tous les quatres:

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
Le script pour les mises à jour:

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
Le "pacsync.sh"

Code : Tout sélectionner

#!/bin/bash
pacman -Sy
Mon script d'horloge parlante et le conky qui va avec

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}
Et je vous épargne celui pour le son et celui qui me fait le café :-)

Ah! et j'allais oublier les screenshots!

Image

Image

Voilà bises à tou(te)s.
Dernière modification par tuxce le mar. 14 juil. 2009, 19:47, modifié 1 fois.
Raison : des apercus ! pense à ceux qui n'ont pas du 1600x200
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

J'avais trouvé un script python qui faisait déjà la chose mais en anglais :|
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
Je ferai évoluer ce post en fonction des améliorations. Si vous cherchez comment utiliser ce script,

Code : Tout sélectionner

perldoc ce_script_perl
vous donnera toute l'aide possible. Info importante (même si c'est déjà mis dans la doc pod) ce script s'utilise dans .conkyrc comme ceci :

Code : Tout sélectionner

${execp perl ce_script}
N'oubliez pas le p de "execp" :mrgreen:
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
- Pour palier un problème de passage de paramètres de conky vers un script , vous devez passer un argument au script (si vous trouvez une solution pour connaître l'alignement sans utiliser cette méthode, je suis preneur) :

Code : Tout sélectionner

 --aligneagauche
--aligneadroite
--aligneaucentre
Voici le code :

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
Version 0.09 du 01/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";
   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
Version 0.08 du 23/08/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";
	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
Version 0.07 du 23/08/2009

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
Version 0.06 du 22/08/2009

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
Version 0.05 du 20/08/2009

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
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

Il y a mieux que festival

Code : Tout sélectionner

espeak -v fr ...
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

:up: :pastaper:

Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2785
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées
Contact :

Re: [Conky] Vos .conkyrc !

Message par mélodie »

chipster a écrit : :pastaper:
Si si ! :lol:
Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Où ça ? :? 8) :) :D
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

mélodie a écrit :
chipster a écrit : :pastaper:
Si si ! :lol:
Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Où ça ? :? 8) :) :D
:dtc: :spicedicounasse: :brice: :surrender: :copain: :pastaper: :merci:
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

:heben: :haine:
benjarobin
Maître du Kyudo
Messages : 16005
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Conky] Vos .conkyrc !

Message par benjarobin »

C'est quoi ce free post :D :copain: :humour:
Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Sinon c'est vrai tu peux expliquer ? Je n'ai pas compris
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Conky] Vos .conkyrc !

Message par chipster »

benjarobin a écrit :C'est quoi ce free post :D :copain: :humour:
Suite à une grosse mise à jour hier et une correction de bogue ce matin, voici la dernière mouture du 20/08/2009
Sinon c'est vrai tu peux expliquer ? Je n'ai pas compris
Bon déjà un gros pardon, mea-culpa à mélodie et un gros bisou en prime :mrgreen:

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 :chinois:

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
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)
Contact :

Re: [Conky] Vos .conkyrc !

Message par gyo »

Bon, désolé pour ce message un peu HS…

Ç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 ?
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Répondre