Il fût un temps où Linux faisait cela en standard : il suffisait de mettre une résolution plus grande que celle de l'écran et le tour était joué. Cependant le serveur graphique ayant été modifié de façon importante ces dernières années, quelques fonctionnalités sont passées à la trappe… Heureusement des personnes avisées ont non seulement suivi le sujet, mais en plus ont un EeePC à la maison ! Le résultat est un tout petit programme, eeepan, qui interagit avec le serveur graphique pour lui permettre à nouveau des résolutions virtuelles (cf. Panning utility for the eeePC sur le wiki EeeUser). Cet outil fonctionne aussi bien dans le Linux Xandros livré sur l'EeePC qu'avec la nouvelle version de Debian encore en préparation, Lenny. Il y a toutefois une (grosse) déception : compiz, utilisé pour les effets 3D du bureau, ne se rend pas compte que la résolution est supérieure à celle de l'écran…

L'utilisation de eeepan est relativement simple. Tout d'abord on déclare un écran plus grand que celui qu'on a avec la commande xrandr, puis on lance la commande eeepan. Lorsqu'on souhaite revenir à un écran normal, il suffit de tuer le processus eeepan. Côté installation, l'outil xrandr fait partie du paquet x11-xserver-utils qui est normalement installé avec votre système :

$ dpkg -S xrandr | sort
app-install-data: /usr/share/app-install/desktop/lxrandr.desktop
gnome-settings-daemon: /usr/lib/gnome-settings-daemon-2.0/libxrandr.so
[…]
x11-xserver-utils: /usr/bin/xrandr
x11-xserver-utils: /usr/share/man/man1/xrandr.1.gz

Ici la commande dpkg -S permet de rechercher les paquets du système qui auraient installé un fichier dont le nom est passé en argument. La commande sort trie le résultat de la commande précédente par ordre alphabétique.

Pour avoir eeepan, on peut télécharger l'archive qui contient les sources mais aussi une version compilée prête à l'emploi. Néanmoins j'ai aussi spécialement préparé un paquet Debian à partir de cette archive, ce qui demande encore moins d'effort ;-) . On peut le récupérer depuis mon dépôt EeePC. Dans ce paquet j'ai ajouté les commandes eeepan-start et eeepan-stop pour démarrer et arrêter le mode élargi. La seule subtilité est qu'il vaut mieux spécifier à xrandr une résolution réelle d'écran en points par pouces (dpi) sinon les polices de caractères deviennent minuscules. On trouvera le listing des scripts en fin de billet.

Le script de lancement permet de donner en argument une résolution virtuelle autre que la valeur par défaut 800x600 du script :

$ eeepan-start 800x800
eeepan: screen size: 800x800
eeepan: panel size: 800x480

Le script d'arrêt ne prend lui aucun argument :

$ eeepan-stop
Caught signal 15 - Terminated, exiting.
Closing Display and terminating.

D'après les discussions du lien anglophone donné plus haut, on peut arriver à des résolutions plus larges que 800 points mais il faut pour cela une version 1.2.2 ou supérieure pour xrandr, ce qui n'est visiblement pas mon cas :

$ xrandr --version
Server reports RandR version 1.2

Il semble possible d'installer une version plus récente aussi bien dans le système Xandros fourni avec l'EeePC que dans Debian Lenny, mais ceci nécessite de changer un certain nombre d'autres paquets, ce qui n'est jamais garanti sans effets de bord…

Application aux jeux éducatifs

toys Vu le prix et la taille tous deux réduits du EeePC et des machines concurrentes, il est dommage de ne pas pouvoir dérouler toute la panoplie des applications éducatives pour les enfants à cause de problèmes de résolution d'écran. Or si tuxpaint, gcompris et gamine marchent sans problème en 800x480, ce n'est malheureusement pas le cas de pysycache et childsplay[1] Grâce à eeepan, on va facilement contourner ce petit problème : il suffit d'encapsuler leur lancement entre les deux commandes eeepan-start et eeepan-stop.

Ceci nous donne deux nouveaux scripts eeechildsplay et eeepysycache qu'il suffit ensuite de placer dans le répertoire /usr/games/ en tant qu'administrateur. On trouvera le code de ces scripts plus loin et, pour les plus pressés, mon petit dépôt Debian contient deux autres paquets nommés avec beaucoup d'originalité eeechildsplay et eeepysycache ;-) .

Je signale tout de suite que, comme j'ai remplacé la Xandros de l'EeePC par Debian Lenny, bien plus à mon goût, je ne teste que sous Debian Lenny, même pas Etch, alors ne venez pas vous plaindre si ça ne marche pas hors Lenny[2] ! À ce propos, il faut aussi savoir que gamine et pysycache font partie de Debian Lenny mais pas de Etch, mon paquet eeepysycache refusera donc de s'installer sous Etch et Xandros sauf si vous trouvez un dépôt pysycache pour Etch comme debian.ofset.org par exemple.

NB: les plus curieux auront aussi décelé dans mon dépôt deux autres paquets eeechildsplay-session et eeepysycache-session dont l'objectif est de créer une session qui au lieu de lancer Gnome, KDE, Xfce, LXDE, E17 ou je ne sais quoi, va lancer l'application. C'est plus pratique pour les petits enfants et tout est expliqué dans le billet Créer une session Linux pour les (petits) enfants.

Scripts de démarrage et d'arrêt

Pour ceux qui voudraient savoir ce qu'ils vont télécharger ou simplement voir ce que j'ai mis dans mes scripts, les voici et c'est garanti sans logiciels malveillants !

eeepan-start, lancement de eeepan :

#!/bin/sh
#
# starts eeepan

SIZE=800x600
if [ $# -gt 0 ]; then
	if [ -z $(echo ${1} | grep '[0-9]*x[0-9]') ]; then
		echo 'usage: eeepan-start ?(X)x(Y)?'
		echo ''
		echo 'eg.: eeepan-start 600x800, default size is 800x600'
		exit
	fi
	SIZE=${1}
fi
xrandr --fb $SIZE --dpi 85
eeepan &

eeepan-stop, arrêt de eeepan :

#!/bin/sh
#
# stops eeepan

if [ $# -gt 0 ]; then
	echo 'usage: eeepan-stop'
	exit
fi
killall eeepan && xrandr -s 800x480 --dpi 85

eeechildsplay, lancement de childsplay en résolution virtuelle 800x600 :

#!/bin/sh
#
# simple wrapper to make Childsplay run on the smallest EeeePC

eeepan-start
childsplay
eeepan-stop

eeepysycache, lancement de pysycache en résolution virtuelle 800x600 :

#!/bin/sh
#
# simple wrapper to make Childsplay run on the smallest EeeePC

eeepan-start
pysycache -nf -nc
eeepan-stop

Notes

[1] ces logiciels font tous partie de la future Debian Lenny, ils s'installent donc sans effort…

[2] cependant si pysycache ne marche pas chez vous, consultez d'abord le rapport de bogue que j'ai posté des fois que ce soit ça le problème