ediaf
Table of Contents
Figure 1: Ediaf running on real hardware, can you spot the bug?
News
2025-12-15 0.2.0
This version added a feature that allow to update the program and the modules to the latest version.
2025-12-11 0.1.1
This version remove crash occurring when getting RSS feeds.
Name
Ediaf is a simple extensible digital frame, can be installed on a raspberry pi (or similar SBC)
Here is a shaky 😕 video of actual hardware running this software.
Sources
The project is kindly hosted on codeberg.
Synopsis
ediaf [-h|–help] [-v|–version] [-s|–starting-week-is-sunday] [-k|–keep-existing-configuration-file] [-w|–world-sizes CANVASSIZES] [-t|–toolbar-width TOOLBARWIDTH] [-r|–toolbar-columns-number TOOLBARCOLUMNSNUMBER] [-F|–fps FPS] [-c|–clock-hour-format CLOCKHOURFORMAT] [–toolbar-background-color TOOLBARBGCOLOR]
Description
Ediaf is a simple framework for digital frames, it allows to write small programs (called: "modules") that provide visual information to the user and a simple touch interface.
Command line options
- -h, –help
- Print help and exit.
- -v, –version
- Print program information and exit.
- -s, –starting-week-is-sunday
- The starting day of the weeks is Saturday (default is Monday).
- -k, –keep-existing-configuration-file
- Prevent the command line switches to be saved into the configuration file (see below).
- -w, –world-sizes CANVASSIZES
- Preferred size (in pixels) of the canvas area (format: WxH). Default 320x240
- -t, –toolbar-width TOOLBARWIDTH
- Fraction of the window reserved for toolbar: interval (0,1]. Default 1/5.
- -r, –toolbar-columns-number TOOLBARCOLUMNSNUMBER
- The maximum number of columns the toolbar can be divided, each column can accommodate a command button (positive integer, default 3).
- -F, –fps FPS
- The animation refresh frequency (frames per second, default 20).
- -c, –clock-hour-format CLOCKHOURFORMAT
- The clock hour format, 12 or 24 hours (default: 24).
- –toolbar-background-color TOOLBARBGCOLOR
- The background color of the toolbar (format: "#RRGGBB" or color name e.g: "white", default: white).
Please note that command line switches are persistent unless -k is used.
So ediaf -w320x240 will save the resolution for future calls.
Permissions
The user running ediaf must be in the sudoers(5) file and must be able to run any command without prompting for password.
Usage
When started the program generates a full screen window composed by two main elements: the canvas and the toolbar.
+---------------------+---------+
| | |
| canvas | toolbar |
| | |
| | |
| | |
| | |
| | |
+---------------------+---------+
.
The portion of the window occupied by these two elements is defined by the configuration set from the command line switches.
The canvas is where the modules print visual information to the user, a visual information can be anything from strings to complex animations.
The toolbar is, instead, a matrix of button widgets that modules uses to more complex interaction with user, for example, many modules uses toolbar to shows a button that, when pressed, open a new window with a GUI to configure the module to fits the user's needs.
Also the canvas permits some user interaction, but so far is limited: a widget can reacts to user tap; is the module that is in charge to signal to ediaf that it will reacts to the tap event and build the reply.
Modules
When ediaf is invoked a disappointing gray screen and a couple of buttons, appears on the screen. This is because the main program is just a frame, whilst the modules are the programs that extends ediaf adding features for the users.
In fact the most complex part (but perhaps the most interesting) of ediaf's usage is writing a module.
A module is a common lisp program that leverage ediaf's functions to produce a visual output. Writing a module is, someway, a complex task and for this reason is not explained here, but, if you want to write one, there is a module available on the WWW that can acts both as tutorial and as boilerplate for writing your own module.
https://codeberg.org/cage/ediaf-tutorial/
Only two modules are bundled with the main program: a module to manage install or uninstall of other modules and a module to restart the software.
Fortunately some modules are already available:
- https://codeberg.org/cage/ediaf-blank-screen/
- switch off/on the screen
- https://codeberg.org/cage/ediaf-meteo/
- fetch weather forecast
- https://codeberg.org/cage/ediaf-power-off/
- turn off your computer
- https://codeberg.org/cage/ediaf-alarm-clock/
- an alarm clock
- https://codeberg.org/cage/ediaf-music-player/
- a simple music player
- https://codeberg.org/cage/ediaf-volume-control/
- simple volume control using pulseaudio
- https://codeberg.org/cage/ediaf-moon-phases/
- calculate moon phases
- https://codeberg.org/cage/ediaf-wifi/
- configure your wifi connection
- https://codeberg.org/cage/ediaf-temperature-humidity
- display environment's temperature and humidity
- https://codeberg.org/cage/ediaf-dict/
- query an online English dictionary
- https://codeberg.org/cage/ediaf-rss.git/
- fetch an RSS feed
- https://codeberg.org/cage/ediaf-temperature-alarm.git/
- send a visual alarm and slowdown animation after a CPU temperature limit is reached
- https://codeberg.org/cage/ediaf-sleep.git/
- (RPI5 only) put the system on sleep for some time