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

Conky - Les joies du code

Simon Vieille

Détecter les vulnérabilités dans les dépendances de son projet

Détecter les vulnérabilités dans les dépendances de son projet

La gestion des dépendances dans un projet est quelque chose de complexe. Il y a autant de ge…

Woodpecker CI, envoyer du mail dans certaines conditions

Woodpecker CI, envoyer du mail dans certaines conditions

En juin dernier, j'ai migré ma plateforme d'intégration continue vers Woodpecker CI et j'en …

Sharepoint Office365 sur Linux : automatiser l'authentification (v2)

Sharepoint Office365 sur Linux : automatiser l'authentification (v2)

En septembre 2018, je publiais un article pour automatiser l'authentification sur Sharepoint…


Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown

Renouveler