Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock Wiki Doncky setups
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
History View code

Glx-Dock / Cairo-Dock

Home

History

Language

fr Français

Support Us

Flattr this

Cairo-Dockon

Doncky setups

Cette page est en cours d'edition.

Pourquoi une page specifique Doncky ?

C'est un de mes fantasmes et j'espere en amenant des curieux ici de pouvoir influencer le developpement afin que cet applet soit remis au gout du jour.

Je pense sincerement que cet applet est le futur de cairo-dock. En permettant a tous les applets d'etres configurables via un fichier .xml, on aura acces a de nouveaux themes ainsi que de nouvelles contributions. Le succes de conky et de ces nombreux themes sur le net en sont la preuve.
Le developpement sera aussi liberer de la forme des applets et pourra ainsi se focaliser sur le fond.

Tous les applets externes pourraient ainsi avoir des themes parce qu'a ce jour ils sont tres limites lorsqu'ils sont places hors du dock.

Exemple de base d'un fichier de configuration de Doncky
<doncky>
    <br>8</br>
    <alignW>center</alignW>
    <font>A bite 24</font>
    <color>255;255;255;255</color>
    <txt>Network </txt>
    <br>1</br>
    <alignW>left</alignW>
    <font>UnDotum Bold 10</font>
    <color>0;0;0;255</color>
    <txt>Ip adress :</txt>
    <font>UnDotum Bold 9</font>
    <color>0;0;0;255</color>
    <cmd>
        <bash>/yourlocation/script.sh</bash>
        <refresh>800</refresh>
</cmd>
</doncky>


Les scripts

Des scripts pour afficher des infos avec doncky.

N'oubliez pas de rendre les scripts executable

Afficher sa release

#!/usr/bin/perl

use strict;
use warnings;

my $a = `lsb_release -d`;
my $b = `lsb_release -c`;

$a =~ s/\n//g;
$a =~ s/\t//g;
$b =~ s/\n//g;
$b =~ s/\t//g;
$a =~ s/.*Description://g;
$b =~ s/.*Codename://g;
print $a." ( ".$b." )\n";


Afficher le nom du compte connecté
#!/usr/bin/perl

use strict;
use warnings;

print $ENV{USER}."\n";


Afficher le Load Average
#!/usr/bin/perl

use strict;
use warnings;

my $loadavg = `uptime`;

$loadavg =~ s/.*load\saverage:\s(.*)\n$/$1/;
print $loadavg."\n";


Uptime
#!/usr/bin/perl

use strict;
use warnings;

my $uptime = `uptime`;

$uptime =~ s/.*up\s(.*),(\s+)(\d+)\susers,.*\n$/$1/;
print $uptime."\n";


Nombre de processus
perl programme.pl total|run|sleep|stop|zombie


#!/usr/bin/perl

use strict;
use warnings;

sub help {
    print "programme <option>\n\t<option> = total|run|sleep|stop|zombie\n";
    exit;
}

if ( defined($ARGV[0]) ) {
    my $process = `top -n 1 | head -n 2 | tail -n 1`;
    if ( $ARGV[0] eq "total" ) {
        $process =~ s/.*Tasks:(.*)total.*\n$/$1/;
        $process =~ s/(\t)|(\s)//g;
        print $process."\n";
    } elsif ( $ARGV[0] eq "run" ) {
        $process =~ s/.*total,(.*)running.*\n$/$1/;
        $process =~ s/(\t)|(\s)//g;
        print $process."\n";
    } elsif ( $ARGV[0] eq "sleep" ) {
        $process =~ s/.*running,(.*)sleeping.*\n$/$1/;
        $process =~ s/(\t)|(\s)//g;
        print $process."\n";
    } elsif ( $ARGV[0] eq "stop" ) {
        $process =~ s/.*sleeping,(.*)stopped.*\n$/$1/;
        $process =~ s/(\t)|(\s)//g;
        print $process."\n";
    } elsif ( $ARGV[0] eq "zombie" ) {
        $process =~ s/.*stopped,(.*)zombie.*\n$/$1/;
        $process =~ s/(\t)|(\s)//g;
        print $process."\n";
    } else {
        &help;
    }
} else {
    &help;
}


Afficher son IP addresse externe
version bash :
#!/bin/bash

# voir ip derriere routeur

wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 > ip
cat ip

version perl :
#!/usr/bin/perl

use strict;
use warnings;

my $a = `dig +short myip.opendns.com \@resolver1.opendns.com`;

$a =~ s/\n//g;
print $a."\n";


Afficher son ip locale

#!/usr/bin/perl

use strict;
use warnings;

my $wifi = `ifconfig wlan0`;
my $ethernet = `ifconfig eth0`;

if ( $wifi =~ /.*inet\sadr.*/ ) {
$wifi = `ifconfig wlan0 | grep "inet adr"`;
$wifi =~ s/.*inet\sadr://g;
$wifi =~ s/Bcast:.*//g;
$wifi =~ s/\s//g;
print $wifi."\n";
} elsif ( $ethernet =~ /.*inet\sadr.*/ ) {
$ethernet = `ifconfig eth0 | grep "inet adr"`;
$ethernet =~ s/.*inet\sadr://g;
$ethernet =~ s/Bcast:.*//g;
$ethernet =~ s/\s//g;
print $ethernet."\n";
} else {
print "NA\n";
}


Afficher si l'on est connecté en wifi ou ethernet

#!/usr/bin/perl

use strict;
use warnings;

my $wifi = `ifconfig wlan0`;
my $ethernet = `ifconfig eth0`;

if ( $wifi =~ /.*inet\sadr.*/ ) {
print "Wifi\n";
} elsif ( $ethernet =~ /.*inet\sadr.*/ ) {
print "Ethernet\n";
} else {
print "NA\n";
}


Température

Cpu

#!/usr/bin/perl

use strict;
use warnings;

my $a = `acpi -t`;

$a =~ s/.*,//g;
$a =~ s/\n//g;
$a =~ s/degrees\sC//g;
$a =~ s/\s//g;
print $a."\n";


Gpu

Version Nvidia

#!/usr/bin/perl

use strict;
use warnings;

my $a = `nvidia-settings -q gpucoretemp | grep Attribute`;

$a =~ s/.*://g;
$a =~ s/\n//g;
$a =~ s/\s//g;
$a =~ s/\.//g;
print $a.".0\n";


Résolution d'écran

#!/usr/bin/perl

use strict;
use warnings;

my $a = `xrandr -q | grep Screen`;

$a =~ s/\n//g;
$a =~ s/.*current\s//g;
$a =~ s/,\smaximum.*//g;
print $a."\n";


Afficher la version du driver Nvidia propriétaire
#!/usr/bin/perl

use strict;
use warnings;

my $a = `nvidia-smi -q | grep Driver | grep Version`;

$a =~ s/\n//g;
$a =~ s/.*://g;
$a =~ s/\s//g;
print $a."\n";


Obtenir une image satellite de son pays

Informations

pour le moment, les pays sont :
-fr pour france
-de pour allemagne
-en pour angleterre
-es pour espagne
-it pour italie
-pt pour portugal ( image identique à l'es )
-ca pour quebec
-usnw pour US North West
-usnc pour US North Central
-usne pour US North East
-uscw pour US Central West
-uscc pour US Central Central
-usce pour US Central East
-ussw pour US South West
-ussc pour US South Central
-usse pour US South East
( sans le - )

Code

perl <nom_du_programme.pl> <pays> <largeur> <hauteur>


( necessite d'avoir convert d'ImageMagick d'installé )
#!/usr/bin/perl

use strict;
use warnings;
use FindBin;

my $dir = $FindBin::Bin;

if ( !defined($ARGV[0]) or !defined($ARGV[1]) or !defined($ARGV[2]) ) {
    print "perl imgsat.pl fr|en|de|es|pt|it|ca|usnw|uscw|ussw|usnc|uscc|ussc|usne|usce|usse largeur hauteur\n";
    exit;
}

if ( ! -d $dir."/img/" ) { `mkdir $dir/img/`; }
if ( ! -d $dir."/img/sat/" ) { `mkdir $dir/img/sat/`; }

if ( ($ARGV[0] eq "fr") or ($ARGV[0] eq "en") or ($ARGV[0] eq "de") or ($ARGV[0] eq "es") or ($ARGV[0] eq "pt") or ($ARGV[0] eq "it") ) {
    `cd $dir/img/sat/ && wget -m -nd http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_VIS006EColor-westernEurope.jpg`;
    `cp $dir/img/sat/EUMETSAT_MSG_VIS006EColor-westernEurope.jpg $dir/img/sat/imagesattmp.jpg`;
} elsif ( ($ARGV[0] eq "usnw") or ($ARGV[0] eq "ussw") or ($ARGV[0] eq "usne") or ($ARGV[0] eq "uscw") or ($ARGV[0] eq "uscc") or ($ARGV[0] eq "usce") or ($ARGV[0] eq "usnc") or ($ARGV[0] eq "ussc") or ($ARGV[0] eq "usse") ) {
    `cd $dir/img/sat/ && wget --no-check-certificate -m -nd https://www.nrlmry.navy.mil/focus_public/CONUS/focus_regions/Full/Overview/vis_ir_background/goes/CURRENT.jpg`;
    `cp $dir/img/sat/CURRENT.jpg $dir/img/sat/imagesattmp.jpg`;
} elsif ( $ARGV[0] eq "ca" ) {
    `cd $dir/img/sat/ && wget -m -nd http://www.meteo.gc.ca/data/satellite/goes_ecan_vvi_100.jpg`;
    `cp $dir/img/sat/goes_ecan_vvi_100.jpg $dir/img/sat/imagesattmp.jpg`;
} else {
    print "perl imgsat.pl fr|en|de|es|pt|it|ca|usnw|uscw|ussw|usnc|uscc|ussc|usne|usce|usse largeur hauteur\n";
    exit;
}

my ($up,$down);

if ( $ARGV[0] eq "fr" ) {
    $up = "617x432+260+100";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "en" ) {
    $up = "617x432+205+45";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "de" ) {
    $up = "617x432+342+55";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "es" ) {
    $up = "617x432+182+185";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "pt" ) {
    $up = "617x432+182+185";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "it" ) {
    $up = "617x432+367+160";
    $down = "357x332-107-177";
} elsif ( $ARGV[0] eq "ca" ) {
     $up = "1024x1024+409+214";
    $down = "615x810-140-500";
} elsif ( $ARGV[0] eq "usnw" ) {
    $up = "1300x800+210+88";
    $down = "1090x712-746-499";
} elsif ( $ARGV[0] eq "uscw" ) {
    $up = "1300x800+210+301";
    $down = "1090x499-746-286";
} elsif ( $ARGV[0] eq "ussw" ) {
    $up = "1300x800+210+514";
     $down = "1090x286-746-73";
} elsif ( $ARGV[0] eq "usnc" ) {
    $up = "1300x800+554+88";
    $down = "746x712-402-499";
} elsif ( $ARGV[0] eq "uscc" ) {
    $up = "1300x800+554+301";
     $down = "746x499-402-286";
} elsif ( $ARGV[0] eq "ussc" ) {
    $up = "1300x800+554+514";
     $down = "746x286-402-73";
} elsif ( $ARGV[0] eq "usne" ) {
    $up = "1300x800+898+88";
    $down = "402x712-58-499";
} elsif ( $ARGV[0] eq "usce" ) {
    $up = "1300x800+898+301";
    $down = "402x499-58-286";
} elsif ( $ARGV[0] eq "usse" ) {
    $up = "1300x800+898+514";
    $down = "402x286-58-73";
}
`cd $dir/img/sat/ && convert imagesattmp.jpg -crop $up imagesattmp.jpg`;
`cd $dir/img/sat/ && convert imagesattmp.jpg -crop $down image.jpg`;
`cd $dir/img/sat/ && convert image.jpg -resize $ARGV[1]x$ARGV[2]\! image.jpg`;
`cd $dir/img/sat/ && rm -rf imagesattmp.jpg`;


Images
Europe ( dimension 250/155 ) :
http://uppix.net/a/e/6/25dff08a8fd2e037d6a4083ca85e9.jpg http://uppix.net/f/0/f/cf774705491e14c5ce8b0bc52bddb.jpg http://uppix.net/7/4/a/c87a8cd44892150e550a32f833bad.jpg
http://uppix.net/f/6/1/168690715797cf507b97a83990b7f.jpg http://uppix.net/c/3/3/1dfab0060eb5343cfd4d3691402a8.jpg

Quebec ( dimension 475/310 ) :
http://uppix.net/6/d/9/c218a99b5e8858624f8a683d7bc83.jpg

U.S.A ( dimension 344/213 ) :
http://uppix.net/4/5/b/cb5548352a87db87545f80b00a00b.jpg http://uppix.net/0/c/d/8326fc6be76c087eb8ecf9a921242.jpg http://uppix.net/5/b/0/a5d304ae0bce7d7b8dce08bd1f992.jpg
http://uppix.net/2/5/d/f09b8dcde124c7d88335a69dd5670.jpg http://uppix.net/5/5/f/4a4e4a5997c9d6673dc6aff611322.jpg http://uppix.net/a/9/6/bcb8206d5a2c21b9cb3cbe7f036a8.jpg
http://uppix.net/1/1/c/ccb7a90bab488834d91fd58628009.jpg http://uppix.net/4/1/a/0d9d2d869649db7c37ebc47413cd7.jpg http://uppix.net/2/3/d/1ce5fe6dc2095222ae8442a4a749d.jpg


Phases de la lune

Necessite Astro::MoonPhase disponible sur CPAN

Vous permet d'afficher les phases de la lune en image.


le lien de téléchargement contient aussi les images a afficher.
#!/usr/bin/perl

use strict;
use warnings;
use Astro::MoonPhase;
use FindBin;

my $dir = $FindBin::Bin;

my (undef,$moonillu,undef,undef,undef,undef,undef) = phase(time);

$moonillu = int($moonillu*100);

$dir = $dir."/img/moon";
my $file = $moonillu.".png";
`rm -rf $dir/moon.png && cp -r $dir/$file $dir/moon.png`;


Afficher des VDM

permet d'afficher aléatoirement une VDM de viedemerde.fr
perl <nom_du_script.pl> <longueur du texte>

longueur du texte doit correspondre au nombre de caracteres maximum avant d'aller automatiquement à la ligne.

#!/usr/bin/perl

use strict;
use warnings;

my $vdm_choisi;
my @vdm;

if (!defined($ARGV[0])) {
    print "[Cairo-Dock][vdm applet] no option defined\nNeed lenght cut in option\n";
    exit;
}
sub getvdm {
    my $vdm_link = "http://www.viedemerde.fr/data/fr/fortunes";

    my $dl = `curl -s --user-agent "Mozilla/5.0" $vdm_link`;
    my $phrase = "";
    foreach my $a (split(/\n/,$dl)) {
        if ( $a =~ /^Aujourd.*VDM$/ ) {
            $phrase = $phrase."\n".$a;        
        }
    }

    $phrase =~ s/^\n//g;
    @vdm = split(/\n/,$phrase);
}

sub choosevdm {$vdm_choisi = $vdm[int(rand(@vdm))]; }
sub vdm_get {

    &getvdm;

    &choosevdm;

    if ( $vdm_choisi eq "" ) { &choosevdm; }

    my @vdm_choisi_split = split(/\s/,$vdm_choisi);
    my $phrase_final = "";
    my $tmp = "";

    foreach my $a (@vdm_choisi_split) {
        $tmp = $tmp." ".$a;
        if ( length($tmp) >= $ARGV[0] ) {
            $tmp =~ s/^\s//g;
            $phrase_final = $phrase_final."\n".$tmp;
            $tmp = "";
        }
    }
    $tmp =~ s/^\s//g;
    $phrase_final = $phrase_final."\n".$tmp;
    $phrase_final =~ s/^\n//g;
    $phrase_final =~ s/^\s//g;
    $phrase_final =~ s/\"/\"/g;
    $phrase_final = $phrase_final."\n";

    return $phrase_final;
}

my $vdm_final = &vdm_get;
print $vdm_final;


Afficher un calendrier

Ce petit script vous permet d'afficher un calendrier.
il s'agit d'une version modifiée de celui ci : http://www.gladir.com/CODER/PERL/calendar.htm

#!/usr/bin/perl

use strict;
use warnings;

sub IsLeapYear($) {
    my ($Year) = @_;
    return ((($Year & 3) == 0) && (($Year % 100 != 0) || ($Year % 400 == 0)));
}

sub DateToDayOfWeek($$$) {
    my ($Y,$M,$D) = @_;
    if(($M > 12) || (0 == $M) || (0 == $D)) {
        return 0;
    }
    if($Y < 0) {
        $Y++;
    }
    my $T0 = int(0.6 + 1 / $M);
    my $T1 = $M + 12 * $T0;
    my $T2 = $Y - $T0;
    my $Total = int(13 * ($T1 + 1) / 5) + int(5 * $T2 / 4) - int($T2 / 100) + int($T2 / 400) + $D - 1;
    return $Total - 7 * int($Total / 7);
}

sub PutCalendar($$$) {
    my ($Year,$Month,$Day) = @_;
    my @Days = ( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
    if(&IsLeapYear($Year)) { $Days[2] = 29; }
    my $D = &DateToDayOfWeek($Year, $Month, 1);
    print "Diman Lundi Mardi Mercr Jeudi Vendr Samed\n";
    print " " x (6 * $D);
    for(my $I = 1;$I <= $Days[$Month]; $I++) {
        print $I < 10 ? " " : "";
        print $I," " x 4;
        if (0 == ($D + $I) % 7) { print "\n"; }
    }
}
my $time = time();
my ( undef, undef, undef, undef, $mois, $annee, undef, undef, undef ) = localtime($time);
$mois += 1;
$annee += 1900;
&PutCalendar($annee, $mois, 3);


Météo / Vent / Lune
basé sur l'API de google pour la météo et le vent
la phase est un modules Perl
programmé en Perl,

necessite LWP ( certainement disponible dans vos dépots )
necessite Astro::Moonphase ( deja mis dans le fichier compressé )

Attention, la page de google meteo a un antiflood assez sensible.
si l'applet se met a ne plus fonctionner, rendez vous sur http://www.google.com/ig/api?weather=lille&hl=fr

si le texte est de ce type :

We're sorry...

... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.


baissez la duree entre chaque update de la meteo n'a malheureusement aucun effet. ( blacklistage ? )


Attention, etant donné que le module perl n est pas installé de maniere globale, vous devez vous rendre dans le dossier du script avant de l executer donc par exemple :
cd ~Cairo-Dock/meteo/ && perl meteo.pl <ville>


en option, il faut passer le nom de la ville, par exemple Lille, et ne mettez pas Nomain ( qui lui sera inconnu de google ).

le résultat est donné sous plusieurs formes :
  • un fichier meteo.db presenté sous cette forme :
<ville>
<temperature actuelle>
<meteo actuelle>
<sens du vent>
<jour>
<temperature mini du jour>
<temperature maxi du jour>
<meteo moyenne du jour>
<jour +1>
<temperature mini du jour +1>
<temperature maxi du jour +1>
<meteo moyenne du jour +1>
<jour +2>
<temperature mini du jour +2>
<temperature maxi du jour +2>
<meteo moyenne du jour +2>
<jour +3>
<temperature mini du jour +3>
<temperature maxi du jour +3>
<meteo moyenne du jour +3>

  • des images dans le dossier "meteo/actual"
"j.png" <meteo actuelle>
"j+1.png" <meteo du jour>
"j+2.png" <meteo du jour +1>
"j+3.png" <meteo du jour +2>
"j+4.png" <meteo du jour +3>
"vent.png" <sens du vent>
"moon.png" <phase de la lune>

le theme actuel est celui de l'applet météo de Cairo-Dock ( theme Clear )

disponible ici : http://dl.free.fr/nF1uqYJXj

#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple;
use FindBin;
use Astro::MoonPhase;

my $dir = $FindBin::Bin;
my $result = 0;

my $ville = $ARGV[0];

my $link = get("http://www.google.com/ig/api?weather=".$ville."&hl=fr") or $result = 1;
my $db_file = $dir."/meteo.db";

my (undef,$moonillu,undef,undef,undef,undef,undef) = phase(time);
$moonillu = int($moonillu*100);

if ( $result ) {
    open(FIC,">".$db_file);
    print FIC "NA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\nNA\n";
    close(FIC);
    `rm -rf $dir/actual/*.png`;
    `cp $dir/moon/$moonillu.png $dir/actual/moon.png`;
    `cp $dir/maxi/undefined.png $dir/actual/j.png`;
    `cp $dir/mini/undefined.png $dir/actual/j+1.png`;
    `cp $dir/mini/undefined.png $dir/actual/j+2.png`;
    `cp $dir/mini/undefined.png $dir/actual/j+3.png`;
    `cp $dir/mini/undefined.png $dir/actual/j+4.png`;
    `cp $dir/vent/undefined.png $dir/actual/vent.png`;
} else {
    $link =~ s/\n//g;
    $link =~ s/\t//g;
    my $link2 = $link;
    $link2 =~ s/.*<current_conditions>//;
    $link2 =~ s/<\/current_conditions>.*//;
    my ($temp_act,$icon_act,$wind_act) = ($link2,$link2,$link2);
    $temp_act =~ s/.*<temp_c\sdata="(.*)"\/><humi.*/$1/;
    $icon_act =~ s/.*icon\sdata="\/ig\/images\/weather\/(.*)\.gif"\/><wind.*/$1/;
    $wind_act =~ s/.*wind_condition\sdata="Vent\s:\s(.*)\sà.*/$1/;
    my $link3 = $link;
    $link3 =~ s/<forecast_conditions>(.*)<\/forecast_conditions><forecast_conditions>(.*)<\/forecast_conditions><forecast_conditions>(.*)<\/forecast_conditions><forecast_conditions>(.*)<\/forecast_conditions>/$1=::=$2=::=$3=::=$4/;
    my ( $jplus1,$jplus2,$jplus3,$jplus4 ) = ( split( "=::=",$link3));
    my $jplus1_jour = $jplus1;
    my $jplus1_temp_min = $jplus1;
    my $jplus1_temp_max = $jplus1;
    my $jplus1_ciel = $jplus1;
    $jplus1_jour =~ s/.*_of_week\sdata="(.*)"\/><low\sdata.*/$1/;
    $jplus1_temp_min =~ s/.*<low\sdata="(.*)"\/><high\sdata.*/$1/;
    $jplus1_temp_max =~ s/.*<high\sdata="(.*)"\/><icon\sdata.*/$1/;
    $jplus1_ciel =~ s/.*icon data="\/ig\/images\/weather\/(.*)\.gif"\/><condition\sdata.*/$1/;
    my $jplus2_jour = $jplus2;
    my $jplus2_temp_min = $jplus2;
    my $jplus2_temp_max = $jplus2;
    my $jplus2_ciel = $jplus2;
    $jplus2_jour =~ s/.*_of_week\sdata="(.*)"\/><low\sdata.*/$1/;
    $jplus2_temp_min =~ s/.*<low\sdata="(.*)"\/><high\sdata.*/$1/;
    $jplus2_temp_max =~ s/.*<high\sdata="(.*)"\/><icon\sdata.*/$1/;
    $jplus2_ciel =~ s/.*icon data="\/ig\/images\/weather\/(.*)\.gif"\/><condition\sdata.*/$1/;
    my $jplus3_jour = $jplus3;
    my $jplus3_temp_min = $jplus3;
    my $jplus3_temp_max = $jplus3;
    my $jplus3_ciel = $jplus3;
    $jplus3_jour =~ s/.*_of_week\sdata="(.*)"\/><low\sdata.*/$1/;
    $jplus3_temp_min =~ s/.*<low\sdata="(.*)"\/><high\sdata.*/$1/;
    $jplus3_temp_max =~ s/.*<high\sdata="(.*)"\/><icon\sdata.*/$1/;
    $jplus3_ciel =~ s/.*icon data="\/ig\/images\/weather\/(.*)\.gif"\/><condition\sdata.*/$1/;
    my $jplus4_jour = $jplus4;
    my $jplus4_temp_min = $jplus4;
    my $jplus4_temp_max = $jplus4;
    my $jplus4_ciel = $jplus4;
    $jplus4_jour =~ s/.*_of_week\sdata="(.*)"\/><low\sdata.*/$1/;
    $jplus4_temp_min =~ s/.*<low\sdata="(.*)"\/><high\sdata.*/$1/;
    $jplus4_temp_max =~ s/.*<high\sdata="(.*)"\/><icon\sdata.*/$1/;
    $jplus4_ciel =~ s/.*icon data="\/ig\/images\/weather\/(.*)\.gif"\/><condition\sdata.*/$1/;
    open(FIC,">".$db_file);
    print FIC $ville."\n".$temp_act."\n".$icon_act."\n".$wind_act."\n".$jplus1_jour."\n".$jplus1_temp_min."\n".$jplus1_temp_max."\n".$jplus1_ciel."\n".$jplus2_jour."\n".$jplus2_temp_min."\n".$jplus2_temp_max."\n".$jplus2_ciel."\n".$jplus3_jour."\n".$jplus3_temp_min."\n".$jplus3_temp_max."\n".$jplus3_ciel."\n".$jplus4_jour."\n".$jplus4_temp_min."\n".$jplus4_temp_max."\n".$jplus4_ciel."\n";
    close(FIC);
    `rm -rf $dir/actual/*.png`;
    `cp $dir/moon/$moonillu.png $dir/actual/moon.png`;
    `cp $dir/maxi/$icon_act.png $dir/actual/j.png`;
    `cp $dir/mini/$jplus1_ciel.png $dir/actual/j+1.png`;
    `cp $dir/mini/$jplus2_ciel.png $dir/actual/j+2.png`;
    `cp $dir/mini/$jplus3_ciel.png $dir/actual/j+3.png`;
    `cp $dir/mini/$jplus4_ciel.png $dir/actual/j+4.png`;
    `cp $dir/vent/$wind_act.png $dir/actual/vent.png`;
}


Fête des Saints

Script qui vous permet d'afficher le Saint fêté le jour même.
( n'affiche que le prénom )

Version Hors Ligne
disponible ici : http://dl.free.fr/fY9LcMBdo

attention,
nécessite le dossier saint contenu dans l'archive ainsi que ses deux fichiers 365.db et 366.db sinon,
le script vous affichera une jolie erreur :)

#!/usr/bin/perl

use strict;
use warnings;
use FindBin;

my $dir = $FindBin::Bin;
my $file = $dir."/saints/365.db";
my (undef,undef,undef,undef,undef,$year,undef,$yday,undef) = localtime(time);
$year += 1900;

#si l'année est bisextile
if ((($year % 4 ) == 0) && (($year % 100 != 0) || ($year % 400 == 0))) {
    $file = $dir."/saints/366.db";
}

sub noreadfile {
    print "le fichier des saints n'existe pas ...\n\t".$file."\n";;
    exit;
}

open(FIC,$file) or &noreadfile;
my @day = <FIC>;
my $fete = $day[$yday];
close(FIC);

print $fete;


Version En Ligne
Ce script necessite l'installation de LWP ( disponible sur cpan.org ou pour ubuntu dans les dépots )

ce script utilise l'api de : http://fetedujour.fr

#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple;

my $result = 0;
my $link = get("http://fetedujour.fr/api/text") or $result = 1;

if ( $result ) {
    print "NA\n";
} else {
    $link =~ s/.*les\s(.*)\./$1/;
    print $link."\n";
}


Afficher des flux rss
vous permet d'afficher les titres de flux RSS.
dépendance requise : LWP

format :
perl <lien du flux> <longueur des titres> <nombre de titres>


  • lien du flux : lien direct du flux RSS
  • longueur des titres : nombre de caracteres maximum affiché ( par exemple, 150 caracteres, si le texte equivaut ou est moins de 150 caractere, il sera affiché entierement, sinon, il sera tronqué a 147 et "..." sera rajouté derriere.
  • nombres de titres : affichera les n premiers titres de la page de flux.


#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple;
use LWP::UserAgent;

if ( !defined($ARGV[0]) or !defined($ARGV[1]) or !defined($ARGV[2]) ) {
    print "Error\n";
    exit;
}

my ( $link,$lenght,$qte) = ($ARGV[0],$ARGV[1],$ARGV[2]);

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
$ua->agent('Mozilla/5.0');
my $response = $ua->get($link);

if ($response->is_success) {
    my $dl = $response->decoded_content;
    $dl =~ s/\n//g;
    $dl =~ s/.*gif<\/url><link>http:\/\/www\.lemonde\.fr<\/link><\/image>(.*)/$1/;
    $dl =~ s/<\/channel><\/rss>//;
    $dl =~ s/<\/item>//g;
    $dl =~ s/^<item>//;
    my @list = split("<item>",$dl);
    my $count = 0;
    while ( $count < $qte ) {
        my $tmp = $list[$count];
        $count = $count + 1;
        $tmp =~ s/<title>//g;
        $tmp =~ s/<\/title>.*//g;
        if ( length($tmp) <= $lenght ) {
            print $tmp."\n";
        } else {
            my $tmp2 = $lenght - 3;
            $tmp =~ s/(.{$tmp2}).*/$1\.\.\./;
            print $tmp."\n";
        }
    }
}


Les Modules Perl
Au long de cette page, nous avons utilisé différents modules Perl.
l'installation de ces modules se fait de manière assez simple en règle général.
Pour le cas d'ubuntu, certains sont disponibles dans les dépots par exemple libwww-perl ( correspondant à http://search.cpan.org/~gaas/libwww-perl-6.04/ ).
l'intégralité des modules Perl est disponible ici : http://www.cpan.org/modules/01modules.index.html , les infos sur chaque module peuvent etre trouvées : http://search.cpan.org/ ( on peut aussi les DL du dernier lien. )

On peut les installer de deux manieres, via cpan ( le programme ) ou en installation manuelle. l'avantage de l'installation via cpan, c'est qu'il vous proposera automatiquement d'installer les modules dépendant. l'installation manuelle peut etre sympa dans des cas tres particuliers, par exemple pour Moon::Phase, la création d'un dossier "Astro" contenant MoonPhase.pm fonctionne aussi bien que l'installation via CPAN.

pour CPAN, mettez vous en root puis :

# cpan


ensuite dans le shell Perl :

help

vous obtiendrez plus d'infos concernant l'installation de modules via cpan.
si vous connaissez le nom du module, dans le shell cpan :
install Astro::MoonPhase


l'installation manuelle peut devenir obligatoire si vous n'avez pas accès au compte root de la machine.

Petite particularité, l'installer en manuel ( sans utiliser le makefile ) fera que le script ne sera disponible que pour l'utilisateur ( sauf droits foireux sur les homes ).
il faut aussi lancer le script Perl depuis le dossier ou est contenu le dossier des modules sinon, Perl ne le trouvera pas.
par exemple si dans /home/ours/doncky_moon j'ai mis mon dossier Astro ( je le rappelle, il contient moonphase.pm )
et le programme principal que l'on nommera ici doncky_moon.pl

perl /home/ours/doncky_moon/doncky_moon.pl

ne fonctionnera pas

cd /home/ours/doncky_moon/ && perl doncky_moon.pl

fonctionnera

j'espere avoir été assez clair.

info
Je mets un peu a jour mes recherches et mes scripts pour les sauvegarder afin que d'autres puissent aussi avoir un peu de doncky power sur leur ordi (taiebot65)
divers scripts crées par ours_en_pluche


Glx-Dock / Cairo-Dock Wiki Doncky setups Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.