OVOS Shell
OVOS-shell is the OpenVoiceOS client implementation of the mycroft-gui-qt5 library used in our embedded device images
Design Principles
The OpenVoiceOS Shell was designed with some simple principles in mind.
The visual interface is always secondary to the voice interface.
Our goal is to make all interactions Voice First, meaning that the user could accomplish their tasks with just voice interaction.
Touchscreen menus should be kept to a minimum, this reinforces using the primary mode of interaction, voice.
However, many important controls need to be implemented as multimodal such as the ability to return to the home screen, change the volume, change the brightness of the screen, control media playback, and other system settings.
OpenVoiceOS images ship with ovos-homescreen and ovos-shell
, built on top of QT5, these components ensure the viability of the GUI in embedded devices running ovos-shell
via EGLFS, without requiring a traditional desktop environment
Companion Plugins
To unlock full functionality you also need to configure ovos-gui-plugin-shell-companion in mycroft.conf
This plugin integrates with ovos-gui
to provide:
- color scheme manager
- notifications widgets
- configuration provider (settings UI)
- brightness control (night mode etc)
{
"gui": {
// Extensions provide additional GUI platform support for specific devices
"extension": "ovos-gui-plugin-shell-companion",
// homescreen skill to use
"idle_display_skill": "skill-ovos-homescreen.openvoiceos"
}
}
OVOS-shell is tightly coupled to PHAL, the following companion plugins should also be installed
- ovos-PHAL-plugin-network-manager
- ovos-PHAL-plugin-gui-network-client
- ovos-PHAL-plugin-wifi-setup
- ovos-PHAL-plugin-alsa
- ovos-PHAL-plugin-system
Configuration
The Shell can be configured in a few ways.
GUI
Display settings
Color Theme editor
Shell Options
~/.config/OpenvoiceOS/OvosShell.conf
can be edited to change shell options that
may also be changed via UI. An example config would look like:
[General]
fakeBrightness=1
menuLabels=true
Themes
Shell themes can be included in /usr/share/OVOS/ColorSchemes/
or
~/.local/share/OVOS/ColorSchemes/
in json format. Note that colors should include
an alpha value (usually FF
).
{
"name": "Neon Green",
"primaryColor": "#FF072103",
"secondaryColor": "#FF2C7909",
"textColor": "#FFF1F1F1"
}