External Interface Requirements
User Interfaces
Iface.UI.IconTheme
The system shall use the Papirus icon set for any icons displayed in the user interface. Priority: Medium.
Iface.UI.TabStops
The system shall ensure that each interactive control be assigned a tab stop in order from top left to top right to bottom left to bottom right.
Iface.UI.Accelerators
The system shall ensure that interactive controls may be selected for input via a keyboard accelerator. The keyboard accelerator shall be in the form of Alt+[key], and the key shall be discoverable by underlining the letter corresponding to the key in the label for the interactive control.
Iface.UI.ButtonAccel
The system shall ensure that all displayed buttons have a corresponding function key as a keyboard accelerator. The function key shall be displayed as a parenthetical note next to the label of the button. For example: "Next (F6)", "Cancel (F3)".
Iface.UI.ScreenRes
The system shall be usable with a minimum screen resolution of 800x600 pixels.
Iface.UI.Scaling
The system shall ensure that controls and fonts are scaled based on the DPI of the screen.
Iface.UI.StandardButtons
Horizon UI shall have a "Back (F5)", "Next (F8)", "Cancel (F3)", and "Help (F1)" on all pages except the first page (where the Back button shall not be displayed) and the last page (where the Back and Cancel buttons shall not be displayed).
Iface.UI.ScreenReader
The system shall be usable with the built-in Qt screen reader. Priority: Low.
Iface.UI.Colours
The system shall not rely on colour alone to differentiate options, controls, or other elements. The system shall additionally be tested in a greyscale mode.
Iface.UI.NeutralColours
The system shall use neutral colours for the window title bar, window border, and background.
Hardware Interfaces
No direct hardware interfaces have been identified for this release of Project Horizon; all interfacing with hardware is done via other libraries as defined below in .
External Software Interfaces
Iface.Software.WPA
The system shall use the wpactrl library from bcnm for manipulating wireless network connections.
Iface.Software.blkid
The system shall use the blkid library from util-linux for determining current disk layout.
Iface.Software.Parted
The system shall use the libparted library from parted for manipulating disk partitions.
Iface.Software.dhcpcd
The system shall use dhcpcd for automatically obtaining network configuration over the DHCP protocol.
Iface.Software.Eudev
The system shall use the libudev library from eudev for enumerating devices present on the system, including but not limited to: disk drives, network interfaces, graphics adaptors.
Iface.Software.Timezones
The system shall use tzdata for time zone information and selection, and shall write the selected time zone to /etc/localtime in the installation environment.
External Communication Interfaces
Iface.Comm.Serial
Horizon Runner shall support writing progress and log messages to a serial interface if requested by the user.
Iface.Comm.UI.UploadLog
Horizon UI shall support uploading of log files to an external service in the event of an installation failure.
Iface.Comm.UI.Network.Wireless.SecTypes
The system shall support the following security types for wireless networking access points:
No Security
WEP Passphrase
WPA with Preshared Key (PSK)
Runner Listening Agent Interface
The Horizon Runner Listening Agent Interface is the interface used to communicate progress. The Horizon Runner will send messages to the Listening Agent using the interface defined here to note status messages, step completion, and any exceptions that occur during execution. The Listening Agent may be an external application (such as the Horizon UI), a logging system, or even a serial port or TTY monitored by the user. For this reason, automated parsing is a higher priority than sapient parsing, but sapient parsing still must be considered.
Agent.MessageFormat
Messages sent by the Agent shall be in the following format:
A timestamp, in ISO 8601 format, with millisecond resolution;
A tab character (\t);
Message class: log, prompt, stepstart, stepend
A tab character (\t);
The message;
A newline character (\n).
Agent.Prompt
When the Agent requires external input from the User, the system shall interpret the answer as an entire line sent to the Agent via STDIN terminated with a newline.