Simon Vieille : Afficher les joies du code dans conky
dimanche 6 janvier 2013 à 18:09Vous êtes fan des joies du code et vous aimeriez afficher le dernier article sur votre bureau ? Voici une solution écrite en PHP.
Note : je bosse sous Debian, il faudra adapter le gestionnaire de paquet si vous utilisez une autre distribution.
Etape 1 : préparation du répertoire de travail
mkdir -p ~/.conky/les_joies_du_code
Etape 2 : installation des logiciels nécessaires
- Conky : sans lui, on ne ferait pas grand chose !
- Php : pour pouvoir exécuter le script qui va arriver
- Gifsicle : pour récupérer les frames d'un GIF
$ su - # aptitude update && aptitude install conky php5 gifsicle
Etape 3 : préparation du cron
$ cd ~/.conky/les_joies_du_code $ vim cron
#!/bin/sh cd "$(dirname $0)" CONF="$(./update 2>/dev/null)" if [ -n "$CONF" ]; then echo "$CONF" > config fi
Etape 4 : installation du script de mise à jour
Note : il a été fait un peu à l'arrache mais il a le mérite de fonctionner :) Désolé pour les puristes qui liront ces quelques lignes.
$ cd ~/.conkytheme/les_joies_du_code $ vim update
#!/usr/bin/php
// Config
$screen_width = 1920;
$position_y = 50;
$rss_url = 'http://lesjoiesducode.tumblr.com/rss';
// Config end
chdir(dirname($argv[0]));
$pwd = getcwd().'/';
// Création des répertoires de travail
if (!is_dir('tmp')) {
mkdir('tmp');
}
if(!is_dir('tmp/images')) {
mkdir('tmp/images');
}
// Récupération du flux RSS
$rss_file = @file_get_contents($rss_url);
if (!$rss_file) {
die(1);
}
// Parsing du flux et surtout du dernier article posté
$schema = simplexml_load_string($rss_file);
$channel = $schema->channel;
$last_item = $channel->item[0];
preg_match('`src="([^"]+)"`', $last_item->description, $img);
if (!$img) {
die(1);
}
// Récupération du titre
$title = ucfirst($last_item->title);
// Récupération du GIF
file_put_contents('tmp/gif', file_get_contents($img[1]));
list($width, $height) = getimagesize('tmp/gif');
$position_x = $screen_width - $width - 20;
// Récupération des frames du gif
shell_exec('rm -rf tmp/images/*; gifsicle --unoptimize --explode tmp/gif --output tmp/images/frame');
$frames = glob('tmp/images/*');
if (!$frames) {
die(1);
}
// Génération du fichier de configuration pour conky
echo <<< EOF
total_run_times 0
out_to_console no
double_buffer yes
no_buffers no
text_buffer_size 4096
update_interval .24
alignment top_left
minimum_size $width 5
maximum_width $width 50
gap_x $position_x
gap_y $position_y
draw_shades yes
draw_outline no
draw_borders no
border_width 1
border_margin 1
background no
own_window yes
own_window_hints undecorated,below,skip_taskbar,skip_pager,sticky
own_window_type override
own_window_transparent yes
use_xft yes
xftalpha .1
override_utf8_locale yes
xftfont Fixed:size=7
uppercase no
uppercase no
use_spacer right
default_color FFFFFF
default_shade_color 333333
default_outline_color black
color1 FFFFFF
color2 999999
imlib_cache_size 0
template1 $pwd/tmp/images/frame.
template2 -p 0,60 -s ${width}x${height}
TEXT
\\${color1}\\${font Astron Boy Video:style=Bold:pixelsize=15}Les joies du code\\${font}
\\${color2}$title
EOF;
foreach ($frames as $k => $frame) {
list($temp, $num) = explode('.', $frame);
echo '${if_updatenr '.($k+1).'}${image ${template1}'.$num.' ${template2}}${endif}'."\\n";
}
Vous remarquerez 3 variables de configuration au début du fichier :
-
$screen_width
: la résolution de la largeur de votre écran pour que le script calcule et place correctement le conky à droite de l'écran -
$position_y
: la position verticale du conky -
$rss_url
: l'url du flux RSS. Vous pouvez ainsi configurer le script pour les joies du sysadmin
Etape 5 : création de la tâche cron
$ cd ~/.conky/les_joies_du_code $ chmod u+x cron update $ crontab -e
*/20 * * * * $HOME/.conky/les_joies_du_code/cron
Etape 6 : on test si ça fonctionne
$ ~/.conky/les_joies_du_code/cron $ conky -q -c ~/.conky/les_joies_du_code/config
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.
Articles similaires
- Framablog : Rencontre avec trois papas du Coding Goûter (19/11/2012)
- Simon Vieille : Raspberry PI #1 (27/08/2012)
- Simon Vieille : [Tips] Zoomer et dé-zoomer dans urxvt (11/11/2012)