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

Capture, un reverse proxy pour analyser les requêtes de vos applications
Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. C…

Un modèle pour démarrer un script shell
J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois…

Gitea et forgejo v1.19.0 sont dans les bacs 🥳
Le 20 mars dernier a été publiée la version v1.19.0 de Gitea ! Forgejo, le soft fork de Gite…