zenity 2.30

L’outil du jour s’appelle Zenity. Il permet d’afficher des boites de dialogue GTK+ à partir de commandes simples. Comme il est écrit sur le site officiel, il appartient à la même famille que dialog, xdialog et cdialog, mais il surpasse tous ces projets en ayant un nom bien plus classe.

Zenity gère les boites de dialogue suivantes :

  • calendrier
  • saisie de texte
  • message d’erreur
  • message d’information
  • sélection de fichier
  • liste de choix
  • icône de notification
  • barre de progression
  • question
  • message d’avertissement
  • échelle
  • affichage de texte

Un petit coup de zenity -help fournissant une aide conséquente, je ne m’étendrai pas ici sur toutes les options possibles, mais voici quelques cas concrets, simples mais efficaces :

#!/bin/sh
 
# Liste
zenity --list --title="leloup.org" --text="Comment trouvez-vous leloup.org ?" --column="Appréciation" "Excellent" "Parfait" "Fantastique" "Divin"
 
# Echelle
zenity --scale --title="leloup.org" --text="Saisissez la qualité du site leloup.org" --value=95 --min-value=0 --max-value=100
 
# Notification
zenity --notification --text="Parlez de leloup.org autour de vous"
 
# Question
zenity --question --text="Allez-vous répondre 'non' à cette question ?"
 
# Barre de progression
(while [ ... ]; do
 # Traitement
 # ...
 # Calcul du pourcentage pour la barre de progression)
 pourcentage="..."
 # Texte à afficher, et pourcentage, à afficher dans la fenêtre de la barre de progression pour le traitement courant)
 echo "# nom du traitement en cours"
 echo "$pourcentage"
 shift
done
) | zenity --progress --text="leloup.org" --percentage=0 --auto-kill

Précision concernant la barre de progression : elle ne calcule pas la progression elle-même, elle ne fait qu’afficher une progression qui est calculée par vous-même à chaque itération. Pour transmettre un pourcentage quelconque à la barre de progression, il faut écrire echo « <nombre entre 0 et 100> » comme dans l’exemple. Pour calculer le pourcentage, tout dépend de votre problème !

Et voilà, il ne vous reste plus qu’à créer un script révolutionnaire à base de zenity

littleScheme

Vous aimez les jeux de société ? Vous aimez internet ? Alors littleScheme est tout ce qu’il vous faut ;-) C’est un site qui vient d’ouvrir ses portes, et qui vous propose de jouer contre d’autres participants à des jeux de société. Les trois jeux proposés pour le moment sont vraiment très sympathiques, vous les connaissez peut-être, ils ont déjà été édités sous leur forme traditionnelle :

Tzaar (par Kris Burm) :

Tentez de capturer une catégorie de pièces de l’adversaire, tout en veillant à ne pas vous faire capturer vous-même.

Mana (par Claude Leroy) :

Un  mélange explosif entre un jeu d’échec et un jeu de dames.

Tyrus (par Laurent Escoffier et David Franck) :

Le gagnant sera le plus bluffeur et celui qui saura doser ses coups au plus juste.

Le site contient également un tchat, un forum, un classement des joueurs pour chaque jeu, un système de visualisation des parties déjà jouées, et plusieurs options, notamment pour jouer pour le classement ou en amical, ou bien encore un système de sablier pour varier entre parties éclair et parties illimitées.

Pour jouer, il suffit de s’inscrire, puis de cliquer ici. Je suis inscrit, venez donc vous frotter à moi :-)

L’utopie

« Partout où la propriété est un droit individuel, où toutes choses se mesurent par l’argent, là on ne pourra jamais organiser la justice et la prospérité sociale, à moins que vous n’estimiez parfaitement heureux l’État où la fortune publique se trouve la proie d’une poignée d’individus insatiables de puissance, tandis que la masse est dévorée par la misère. Aussi quand je compare les institutions utopiennes à celles des autres pays, je ne puis assez admirer la sagesse et l’humanité d’une part et déplorer de l’autre, la déraison et la barbarie. »

Thomas More, l’Utopie, 1516

java split

Voici un problème qui va certainement vous paraitre basique, mais bon, pas sûr, ça pourrait bien vous éviter quelques effets de bord disgracieux.

Attention à la méthode split(String regex) en java ! Elle renvoie bien les éléments vides, mais uniquement les éléments vides qui ne sont pas situés en bout de chaine.

Exemple :

String chaine = "0;1;;3;4;;";
String[] tab = chaine.split(";");
// tab[2] renvoie bien ""
// tab[5] renvoie une exception

Heureusement il existe la méthode split(String regex, int limit). Le 2ème paramètre indique le nombre limite de recherches à partir de la regex. Je vous invite à lire l’API pour plus de détails, en tout cas pour résoudre notre problème il suffit d’indiquer un entier négatif pour le 2ème paramètre afin que les éléments vides ne soient pas ignorés.

Exemple :

String chaine = "0;1;;3;4;;";
String[] tab = chaine.split(";",-1);
// tab[2] renvoie bien ""
// tab[5] renvoie bien ""

Le défi du jour

Le défi du 18 juillet 2010 (à l’heure où nous en sommes à Ubuntu 10.04, Firefox 3.6 et Flash 10.1) : refaire fonctionner les vidéos Youtube et les jeux Flash sur un très vieil ordinateur équipé de Kubuntu 7.04, Firefox 2.0 et Flash 9.0, situé à 1000 km de distance, utilisé par des gens qui connaissent Windows uniquement et qui ne sont pas du tout informaticiens. :-)

De prime abord le problème semblait simple à résoudre, mais finalement aucune méthode traditionnelle ne s’est avérée concluante. Voici donc les problèmes rencontrés et les contournements utilisés :

Version d’Ubuntu :
- Déjà, impossible de préconiser l’installation d’Ubuntu 10.04, la machine n’aurait pas supporté. Et de toute façon, même si Ubuntu est simple à installer, il n’y aurait eu personne pour le faire, et personne pour revenir en arrière en cas de problème. Mouarf.

L’accès à distance :
- Au départ, je ne me souvenais plus que cette machine était équipée de Kubuntu, je pensais qu’il s’agissait d’Ubuntu, j’ai donc dû m’y reprendre à plusieurs fois pour faire installer TeamViewer (ce n’était jamais les bons menus, pas les bons outils de décompression, etc.). Mouarf. Finalement l’accès à distance s’est fait par la version portable de TeamViewer :
- Récupérer le logiciel ici : http://www.teamviewer.com/fr/download/index.aspx?os=linux (prendre le tar.gz)
- Extraire le contenu du fichier (dans notre cas avec Ark)
- Dans le dossier « teamviewer5″ extrait, il y a un fichier nommé « teamviewer », à renommer en « teamviewer.sh » (il est déjà exécutable).
- Lancer ce script, qui lance TeamViewer

Gestionnaire de mise à jour :
Kubuntu 7.04 n’est plus maintenu depuis belle lurette, impossible de songer à effectuer les mises à jour de ce côté là. Mouarf.

Firefox :
(Youtube refuse tout simplement d’afficher son contenu lorsqu’il détecte une version trop ancienne de Firefox. Mouarf, cependant c’est une excellente initiative. Il faudrait voir ce que ça donne avec IE6)
- Récupérer la dernière version de Firefox portable : http://www.mozilla-europe.org/fr/firefox/
- Extraire le fichier .tar.bz2 récupéré
- Ne pas laisser le dossier extrait trainer sur le bureau, le placer à un endroit où il ne sera pas supprimé, et penser à modifier les raccourcis Firefox existants (les faire pointer vers le script « firefox » extrait)
- Lancer la dernière version de Firefox
- Pas la peine d’essayer d’installer la nouvelle version de Flash à partir du gestionnaire de Firefox, ça ne fonctionne pas. Mouarf.

Flash :
- Ne pas essayer de faire tourner l’ancienne version de Flash sur le nouveau Firefox, ça aboutira sur un plantage de Flash (en tout cas je n’ai pas réussi à faire mieux). Mouarf. Dans notre malheur, Firefox 3.6 ne gèle plus si un des composants d’une page plante.
- Récupérer la dernière version de Flash : http://get.adobe.com/fr/flashplayer/ Ne pas récupérer le .deb car à l’installation il indiquera que plusieurs dépendances sont trop anciennes. Mouarf. Pas de bol, les mises à jour par apt ne sont plus possibles, et je n’ai pas trouvé sur internet les fichiers indiqués, la distribution n’étant plus très courue. Mouarf. La feinte est de récupérer simplement le .tar.gz :-)
- Extraire le fichier récupéré qui ne contient qu’un seul fichier nommé « libflashplayer.so »
- Placer ce fichier dans le dossier « plugins » du dossier « firefox » extrait aux étapes précédentes

Relancer Firefox pour que l’ajout du .so soit pris en compte.

Et voilà !!! Il ne reste plus qu’à tester Flash sur un site quelconque. Il est également possible d’accéder à l’adresse about:plugins et s’assurer que « Shockwave Flash » apparait avec la bonne version.