Afficher les joies du code dans conky
Vous ê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 <?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