Interzona

ediaf

Table of Contents

ediaf-hardware.jpg

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

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Italy License.

Distribuited software and source code published are licensed under the GNU General Public License version 3.0 or later if not specified otherwise.
🢠 fediring website 🢡
random fediring member
Mastodon