DoudouLinux dev's blog

To content | To menu | To search

Tag - tricks

Entries feed - Comments feed

Sunday 15 January 2012

LxLauncher: automatic icon size for a nicer interface

One issue we had in mind for a while is the fixed size of icons in LxLauncher. Depending on screen resolution, this size can be fitting well (small resolutions) or really too small (large resolutions). In the later case, the interface of advanced activities like “Whole DoudouLinux” and “Mini DoudouLinux” can look very empty, just as the screenshot that is unfortunately available on our DistroWatch page.

With automatic icon size computation, we are now able to get a similar rendering on various screen resolutions as shown on the photo composition below. In this case, screen resolutions are 1280×800 (HP), 1280×1024 (CRT display), 1024×768 (Dell) and 1024×600 (Genesi), leading to screen size ratios 5÷4, 4÷3 or between 16÷10 and 16÷9. If you want to give it a try, just download one of our recent dailybuilds, in English or French only.

Automatic icon size for LxLauncher

We hope then to not see this kind of screenshot anymore:

LxLauncher without automatic icon size

Now few words about the way we achieved it.

In Debian Squeeze, the LxLauncher version, v0.2.1, features icon size tuning in a configuration file, /etc/xdg/lxlauncher/settings.conf. This is an easy way to change the icon size but, of course, requires user action. This is why we've developed a shell script that is called during GDM initialization to adapt the icon size to the actual screen resolution. The algorithm is the following:

  1. compute screen surface in pixels-square
  2. compute the width of icons to have a given number of them in a given portion of the screen (45% in our script)
  3. compute the rounded number of icons per row using the previous width
  4. compute the final icon width using screen width and number of icons per row

This script is available on our SVN server. Its algorithm is designed to be independent of screen orientation since it does not uses the screen width to compute the icon size but the screen surface. We hope then to be able to run DoudouLinux on any device in the future, from the smallest handheld devices to the largest TV screens :).

Finally, what about the stable DoudouLinux release Gondwana? Well it is shipping with LxLauncher v0.2.0 which does not allow to set icon size (it is hard-coded). Nevertheless trials have been performed to backport icon size setting from 0.2.1 and it seems to work! We should then release the latest update of Gondwana, v1.2, with this new feature :).

Friday 25 November 2011

Automatic login now available

The default behavior of DoudouLinux is to show the menu of activities (see below) after the system has started and as soon as any activity is leaved. This is good for small children because the activities menu offers activities in the increasing order of difficulties, from top to bottom. However, for older children, the first activities are or will quickly become of poor interest. This is why the list of activities shown – but not their order – can be changed with the activities menu editor .

Activities menu (small)

However the oldest children may still have no interest at all in seeing a menu of activities, since they will surely login into “Whole DoudouLinux”. The new version of the activities menu editor can now do this. The trick is quite simple: if only one activity is selected in the menu, DoudouLinux will not show the activities menu but instead will enter this activity directly. Activities menu settings are recorded in the directory /home/etc/, which means that any data persistence (user data or user+system) is sufficient to make settings survive a reboot or a shutdown.

This new version of the activities menu editor will be available with next releases: the coming development release numbered 2011-11 and the planned official release update Gondwana 1.2, due to mid January.

Wednesday 19 January 2011

Changing the session menu

A question that is regularly asked is how to remove some entries in the session menu (shown on the screenshot below). The standard session menu has 7 sessions. If you want a DoudouLinux for very young children, you may wonder how to remove the two most advanced sessions, Mini and Whole DoudouLinux. On the contrary the first 2 or 3 sessions are quite useless if your children are bigger.

GDM session menu (Chinese)

The solution is to enter the session Whole DoudouLinux and open a console. Because the session menu is based on GDM, the tool that will allow you to hide sessions is “gdmsetup”:

$ sudo gdmsetup

In the latest tab you can add or remove users in the list of users who are not shown in the menu:

gdmsetup – user's tab

Of course changes are lost after shutdown or reboot if you have not installed DoudouLinux on hard disk or if full persistence is not set. The session names to be used in the order of session difficulty are:

0gamine
1pysycache
2childsplay
3tuxpaint
4gcompris
5doudoulinux
tux

The resulting session menu with “5doudoulinux” and “tux” removed is the following:

GDM session menu modified (Chinese)

So everything is OK but you may have noticed that a problem occurs if you want to change the sound volume or to make removed sessions reappear: you do not have access to the required tools anymore through the remaining sessions… The solution is simple: just type the name of the Whole DoudouLinux session user, which is “tux”, then press Return. This is shown in the following screenshot:

GDM type user name (Chinese)

To conclude there is just one thing to add: it would be better to have a small but nice interface to set the session menu. Be patient, this will come!

Sunday 22 August 2010

Installer DoudouLinux définitivement - suite

Dans le billet précédent Installer DoudouLinux définitivement, on a expliqué les détails techniques qui permettent d'installer DoudouLinux définitivement sur l'ordinateur - en détruisant tout ce qui est dessus au passage. Comme cette procédure va effrayer plus d'un utilisateur, j'avais sous-entendu en fin de billet que ça devrait pouvoir s'automatiser…

Et bien oui, c'est fait ! J'ai un script Python doudou-installer qui devine tout seul comme un grand où est la clef USB et où est le disque interne de la machine. L'utilisation est ultra simple lorsqu'il n'y a qu'un seul disque interne : il faut simplement valider le choix proposé par le script ! Il effectuera ensuite les opérations suivantes :

  • copie bas niveau de la clef USB
  • création d'une partition swap d'environ 350 Mo
  • utilisation de l'espace restant pour activer la persistance des données

Le type de persistance mis en place est persistance complète (système + données utilisateurs) avec stockage directement sur la partition, laquelle est formatée ext3. Par contre le système demande toujours à enlever le support à l'extinction (!), un bogue identifié fait qu'il croit toujours être sur un CD malgré mes tentatives…

Au niveau intégration à DoudouLinux, je précise tout de suite qu'il n'y aura pas d'icône pour installer facilement. Même si le script doit poser 3 fois la question « Êtes-vous vraiment sûr de vouloir tout écraser ? », les enfants ne doivent pas pouvoir accéder facilement à cet outil sinon comment papa et maman vont-ils garder l'esprit tranquille ?

NB: côté interface graphique, ne vous attendez pas à de beaux boutons translucides, je développe pour le moment dans l'urgence et je vais à l'essentiel → les fonctionnalités. On verra plus tard pour les beaux boutons !

Saturday 24 July 2010

Installer DoudouLinux définitivement

Pour le moment l'installation de DoudouLinux n'est pas activée via le système officiel des LiveCD Debian. Cependant, comme ceci ajoute une sur-couche logicielle de plusieurs dizaines de Mo, ceci veut dire qu'il faudra opérer des choix sur les logiciels installés… Une solution, pour ceux qui n'ont pas besoin de multiboot, c'est de copier tout simplement les données Live vers le disque dur local.

Avec le LiveCD, c'est compliqué car la structure d'un CD n'est pas celle d'un disque. Par contre avec la clef LiveUSB c'est très simple, il suffit de demander au système de faire une copie de bas niveau. C'est la commande dd qui permet de faire cela :

$ sudo dd if=/dev/sda of=/dev/hda
1434580+0 enregistrements lus
1434580+0 enregistrements écrits
734504960 bytes (735 MB) copied, 437,301 s, 1,7 MB/s

Toute la question est de retrouver les bons chemins /dev/sda et /dev/hda… Dans notre cas, manuel, on s'en sort en analysant les disques du système :

$ sudo fdisk -l

Disk /dev/hda: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/hda doesn't contain a valid partition table

Disk /dev/sda: 2070 MB, 2070937600 bytes
255 heads, 63 sectors/track, 251 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0005800f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          92      738958+  83  Linux
/dev/sda2              93         251     1277167+  83  Linux

On a donc deux disques de 40 Go et 2 Go respectivement, le premier est forcément celui de la machine alors que le second est la clef USB. On peut vérifier en regardant ce qui est monté dans le système DoudouLinux en fonctionnement (via df -h). Cependant pour une utilisation en mode automatique (= interface graphique dans DoudouLinux), il faudra un processus de détermination des disques source et cible :

  • la clef USB est connectée sur le bus USB (!) et devrait être montée
  • le disque dur est forcément monté sur un bus interne (IDE ou SCSI)

La clef USB a peut-être aussi des partitions avec un nom en rapport avec DoudouLinux, comme l'image ISO de CD (à vérifier…).

Remarque : cette technique a été testée avec succès depuis une clef USB Live en cours de fonctionnement. Normalement on peut aussi activer la persistance des données avec l'outil intégré à DoudouLinux, mais ça n'a pas été testé. Le seul truc qui manque vraiment : retirer le message à l'extinction qui dit d'enlever la clef !