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 = &#039;http://lesjoiesducode.tumblr.com/rss&#039;;
 
// Config end
 
chdir(dirname($argv[0]));
$pwd = getcwd().&#039;/&#039;;
 
// Création des répertoires de travail
if (!is_dir(&#039;tmp&#039;)) {
    mkdir(&#039;tmp&#039;);
}
 
if(!is_dir(&#039;tmp/images&#039;)) {
    mkdir(&#039;tmp/images&#039;);
}
 
// 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(&#039;`src="([^"]+)"`&#039;, $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(&#039;tmp/gif&#039;, file_get_contents($img[1]));
 
list($width, $height) = getimagesize(&#039;tmp/gif&#039;);
 
$position_x = $screen_width - $width - 20;
 
// Récupération des frames du gif
shell_exec(&#039;rm -rf tmp/images/*; gifsicle --unoptimize --explode tmp/gif --output tmp/images/frame&#039;);
 
$frames = glob(&#039;tmp/images/*&#039;);
 
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(&#039;.&#039;, $frame);
	echo &#039;${if_updatenr &#039;.($k+1).&#039;}${image ${template1}&#039;.$num.&#039; ${template2}}${endif}&#039;."\\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

Conky - Les joies du code

Vus : 1663
Publié par Simon Vieille : 144