PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Simon Vieille : Afficher les joies du code dans conky

dimanche 6 janvier 2013 à 18:09

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

$ 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(&#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 :

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

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Articles similaires