Simple Linux Interface for the Elderly

My grandfather is in his late 80s but is still very active. He swims every day and is the handy man for a number of his neighbors.

He first started using a computer several years ago with Windows XP. He encountered a lot of confusion with the interface and ended up forgetting things like that he either needed to go through the start menu to open programs or minimize everything to get to the desktop icons. He would also somehow manage to accidentally copy his desktop icons and would always end up with many copies of his email and freecell shortcuts. Given how limited his needs from the PC were, it was frustrating that windows could not accommodate his needs in a simple way. I decided that the best course of action would be to move him over to Linux. It was not very hard to sell him on this concept; the deal breaker for him was the fact that freecell on linux was capable of running in full screen. This article discussed the design of version 2 of his customized linux interface which has just been put together.

The design goals were as follows:

  • Remove window management - multiple instances of applications are not needed in any of his use cases
  • Allow easy instance access to programs
  • Show only those functions which will be used
  • Block access to configuration options - prevent accidental configuration changes

General configuration state:

  • Base system: Ubuntu 10.04 Desktop Edition
  • Matchbox minimal window manager - title bar disabled, no desktop icons
  • Matchbox panel with pictographic shortcuts to needed programs
  • Free and simple linux games and programs
  • Custom launcher script to prevent multiple instances, shows existing instance if one exists
  • Limited number of programs means that all apps can be left running in the background. Not closed until computer is shut down
  • Pictures folder screen saver (my grandparents love this)

The result:

 

 

Configuration details:

1. Install Ubuntu base system

2. Install matchbox-window-manager (documentation)

3. Install desired applications

gnotravex, freedink, gbrainy, gnome-hearts, picasa, openoffice.org writer, and thunderbird for email

4. Create icons for installed applications

I used Inkscape and roughed up some shortcuts with included text and Google Images icons.

5. Create single instance launcher script

/usr/bin/once

#!/bin/bash
SIGNATURE=$1
COUNT=$(ps ax | grep $SIGNATURE | grep -v grep | grep -v /usr/bin/once | grep -v mb-applet-launcher | wc -l)
if [ $COUNT -ne 0 ]; then
	PID=$(ps ax | grep $SIGNATURE | grep -v grep | grep -v /usr/bin/once | grep -v mb-applet-launcher | sed -e "s/ */ /" | cut -f2 -d" ")
	echo Exists with pid=$PID
	WID=`wmctrl -p -l | grep " *$PID *" | cut -f1 -d" "`
	echo Focusing existing window $WID
	wmctrl -i -a $WID
	exit
fi
echo Launching new instance of $1
shift
exec $@

Usage syntax is: "once ident command arg1 arg2..." where 'ident' is the text which can be grep-ed from "ps ax" which will return the application window process. For picasa for instance this is Picasa3.exe. Run "wmctrl -p -l" while the application is running and find which window is the one of interest. Then run "ps ax" and grep for the associated pid. Use the program text as the identifier for the once script. Note that an attempt was made early on to just save the executing process id in a file while starting the application, but this saved pid often different from the pid of interest for the use of wmctrl (there was no known way to check the parent processes of all wmctrl listings to find the one launched by the execution process).

6. Configure matchbox

Matchbox configuration is stored in ~/.matchbox

session - stores the global matchbox launch configuration

mbdock.session - stores the programs shown on the launcher panel.

 

session

#matchbox-desktop &
matchbox-panel --orientation south --no-menu --size 120 &
exec matchbox-window-manager -use_titlebar no

matchbox-desktop is disabled to stop the matchbox desktop full of application launchers from showing. This can be uncommented through a command line editor such as pico using console access when configuration changes are needed (ctrl-alt-f1).

mbdock.session

mb-applet-launcher -l /home/user/.icons/tetravex.png once gnotravex gnotravex
mb-applet-launcher -l /home/user/.icons/adventure.png once dink dink --window --nojoy
mb-applet-launcher -l /home/user/.icons/puzzles.png once gbrainy gbrainy
mb-applet-launcher -l /home/user/.icons/hearts.png once gnome-hearts gnome-hearts
mb-applet-launcher -l /home/user/.icons/photos.png once Picasa3.exe picasa
mb-applet-launcher -l /home/user/.icons/typing.png once soffice.bin oowriter
mb-applet-launcher -l /home/user/.icons/email.png once thunderbird-bin thunderbird
mb-applet-launcher -l /home/user/.icons/poweroff.png shutdown -h now

One remaining issue was the inability to edit font sizes. For the sake of easy reading it was desired to have large fonts displayed in all of the applications; however, matchbox did not allow such changes to be made. Documentation was insufficient to find how to make any font size changes. It was found however that the "Appearance" gnome applet, when launcher, would correctly start theming all programs and set the correct font size. The problem was that such changes were reverted each time the computer was shut down and did not re-apply until the Appearance applet was launched again. The solution found for this was to add "gnome-settings-daemon" into the ~/.Xprofile executable script. Once this was done there were no further issues with font size

Attachments: