frame A modified version of Marius' PicFrame program, all the fancy image loading and event handling code is all due to Marius, I only really played with the options and audio playing. the new usage is frame [-o|-t|-v|-b] [-p msec_per_frame] [-k time_to_run] directory/template the last option is either a directory name, or a template: if you provide a directory then every file in that directory will be loaded (as long as it ends with a .jpg or .gif (it's not case sensitive) if you provide a template, like the original program (picframe), then you must indicate this with the -t flag (I thouhgt of making it autosense by looking for %d but never did). an example of a template would be /mnt/audrey_pics/pic%d.jpg. The jpg files best be 640x480. -o will cause frame to show the files in directory order (and not at random as is the default) note that the files are chosen in the order they are returned from readdir which is not usually alphabetical, but the order they were added to the directory. The same image is never selected consecutively. -v tells frame to tell you what it's doing (loading/playing) otherwise it doesn't print anything out. -p time tells you how long to wait between each image loading -k time tells you how long to run the app for, if not specified the app runs forever, you can specify this to let the app run for only 2 hours and then stop and allow the audrey screensaver to kick in. it will only kill the app after an image has had it's time. so if you have a pause of 1 hr and a kill of 5 mins, it only checks if the 5 mins have expired when a new image is to be loaded. I use this option to make frame come on at 6pm for 4 hours (via kcrontab) until i goto bed, at which point it turns off and the screensaver kicks in and the audrey shutsdown. -b tells frame that if it reaches the time_to_run (-k) limit to blank the screen before it exits. You'll need to press power twice to get the screen back after it has ben blanked. all times can be specified in milliseconds, or you can append s, m, h or d for seconds, minutes, hours and days (e.g. -p 10s for a 10 second pause) You can also specify all command line options by setting environment variables FRAME_DIR, FRAME_TEMPLATE, FRAME_PAUSE, FRAME_KILL, FRAME_VERBOSE, FRAME_RANDOM like this FRAME_DIR=/mnt/pics; export FRAME_DIR Clicking on the top left screen stops the app. If you click on any other part of the screen then the next image will be loaded. If the app reaches the kill time, the app will close and the screen will blank (using gpio). if you clock on the screen the app will just close. This modifies your screensaver settings when it runs and then restores them when it exits, if you kill the app then your screen saver settings in /config/SYSTEM_ScreenSaveSecs might not be restored. NOT WORKING: When an image is loaded, if a similar filename ending in .wav is found then that image is played (this is untested and rather hacky, but it should work). Frame sends an enter keystroke to the Audrey after every image is loaded, this stops the screensaver from kicking in. once it exits your screen saver should kick in just like normal. it's still small (around 160k)! you can get an icon to add it to your actions pallette http://www.bloodyeck.com/projects/audrey/bin/qnx/frame.gif you can download the app http://www.bloodyeck.com/projects/audrey/bin/qnx/frame you can download this readme http://www.bloodyeck.com/projects/audrey/bin/qnx/frame.txt you can download the src (released under GPL) http://www.bloodyeck.com/projects/audrey/bin/qnx/frame.tgz Alex (alex AT bloodyeck,com) http://www.bloodyeck.com/projects/audrey/ adapted from Picframe by marius_schilder AT yahoo,com key sending code from fireKey audio playing and screen saver trick from code by Jim AT timemocksme,com