The widgets

José Bollo

Fulup Ar Foll

24 juin 2016

The widgets

The widgets

The widgets are described by the technical recommendations widgets and widgets-digsig.

In summary, widgets are ZIP files that can be signed and whose content is described by the file .

The configuration file config.xml

This is one of the important file of the widget. It fully describes the widget.

Here is the example of the config file for the QML application SmartHome.

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" id="smarthome" version="0.1">
  <name>SmartHome</name>
  <icon src="smarthome.png"/>
  <content src="qml/smarthome/smarthome.qml" type="text/vnd.qt.qml"/>
  <description>This is the Smarthome QML demo application. It shows some user interfaces for controlling an 
automated house. The user interface is completely done with QML.</description>
  <author>Qt team</author>
  <license>GPL</license>
</widget>

The most important items are:

Further development will add handling of for requiring and providing permissions and services.

Tools for managing widgets

This project includes tools for managing widgets. These tools are:

For all these commands, a tiny help is available with options -h or --help.

There is no tool for unpacking a widget. For doing such operation, you can use the command unzip.

To list the files of a widget:

$ unzip -l WIDGET

To extract a widget in some directory:

$ unzip WIDGET -d DIRECTORY

Note that DIRECTORY will be created if needed.

Signing a widget

To sign a widget, you need a private key and its certificate.

The tool wgtpkg-sign creates or replace a signature file in the directory of the widget BEFORE its packaging.

There are two types of signature files: author and distributor.

Example 1: add an author signature

$ wgtpkg-sign -a -k me.key.pem -c me.cert.pem DIRECTORY

Example 2: add a distributor signature

$ wgtpkg-sign -k authority.key.pem -c authority.cert.pem DIRECTORY

Packing a widget

This operation can be done using the command zip but we provide the tool wgtpkg-pack that may add checking.

Example:

$ wgtpkg-pack DIRECTORY -o file.wgt

Getting data about a widget file

The command wgtpkg-info opens a widget file, reads its config.xml file and displays its content in a human readable way.

Writing a widget

What kind of application?

The file /etc/afm/afm-launch.conf explain how to launch applications. (It is the current state that use afm-user-daemon. In a future, it may be replace by systemd features.)

Currently the applications that can be run are:

The steps for writing a widget

  1. make your application

  2. create its configuration file config.xml

  3. sign it

  4. pack it

Fairly easy, no?

Organization of directory of applications

directory where are stored applications

Applications can be installed in different places: the system itself, extension device. On a phone application are typically installed on the sd card.

This translates to:

From here those paths are referenced as: "APPDIR".

The main path for applications is: APPDIR/PKGID/VER.

Where:

This organization has the advantage to allow several versions to leave together. This is needed for some good reasons (rolling back) and also for less good reasons (user habits).

Identity of installed files

All files are installed as user "afm" and group "afm". All files have rw(x) for user and r-(x) for group and others.

This allows every user to read every file.

labeling the directories of applications

The data of a user are in its directory and are labelled by the security-manager using the labels of the application.