Nuvola Build Instructions
To avoid a violation of Nuvola Apps Runtime™ trademark, the default branding is set to Web Apps Runtime. You should not set it to Nuvola Apps Runtime without our permission. You may, however, use any branding that does not violate the trademark.
To change branding, pass
waf configure, where
NAME is used to construct paths to relevant
branding files, then
cp branding/default.json branding/NAME.json and edit this file (it has comments, btw.).
Web App Requirements
Individual web apps specify their requirements in the
requirements field of the
It is your responsibility to make sure you ship only the scripts whose requirements can be satisfied by
your custom Nuvola build. Otherwise, they may refuse to start.
- Feature[Flash] - Adobe Flash plugin is required.
- Feature[MSE] - Media Source Extension feature is required. Use Chromium web engine or build
-DENABLE_MEDIA_SOURCE=ONand Nuvola with
- Feature[Widevine] - Widevine CDM plugin. Currently supported by Chromium web engine.
- Codec[MP3] - A MP3 decoder for GStreamer is required.
It should be included in the
- Codec[H264] - A H264 decoder for GStreamer is required.
- WebKitGTK[X.Y.Z] - A particular version of WebKitGTK+ is required.
- Chromium[X.Y.Z] - A particular version of Chromium web engine is required.
Nuvola can be built with two web engines: Chromium Embedded Framework (CEF) and WebKitGTK.
While the Chromium engine is still optional (can be disabled with
--no-cef configure option), bear in mind that
some websites no longer work with the old WebKitGTK backend (Spotify, YouTube, Mixcloud) because they dropped
Flash-based player and require HTML5 Audio with MSE or even Widevine DRM plugin.
In addition, most scripts are tested only with the Chromium backend and specify
for that reason. If you are stuck with the WebKitGTK backend, you may remove
Chromium[X.Y.Z] Feature[MSE] requirements
to make the script run with WebKitGTK+ backend and add
Feature[Flash] to use Flash plugin for audio playback.
However, this should be done on a case-by-case basis and after careful testing.
- Python 3 >= 3.4
- Vala compiler >= 0.42.0 && < 0.43. If your system contains a different version of Vala, we cannot guarantee that Nuvola builds correctly and it may lead to memory leaks or invalid memory access. We recommend building the correct Vala version from source prior to building Nuvola. You can then throw it away as Vala compiler is not needed after Nuvola is built.
- Diorite library (version number is in sync with Nuvola)
- glib-2.0 >= 2.52.0
- gio-2.0 >= 2.52.0
- gobject-2.0 >= 2.52.0
- gtk+-3.0 >= 3.22.0
- gdk-3.0 >= 3.22.0
- gdk-x11-3.0 >= 3.22.0
- x11 >= 0.5
- json-glib-1.0 >= 0.7
- webkit2gtk-4.0 >= 2.18.0
- libnotify >= 0.7
- gstreamer >= 1.8.3 (>= 1.12 for MSE)
- libdri2 >= 1.0.0
- libdrm >= 2.2
- gee-0.8 >= 0.20.1
- libsecret-1 >= 0.16
- libarchive >= 3.2
- valalint or configure with
- standardjs or configure with
- ValaCEF or configure with
- unity >= 3.0 or configure with
- dbusmenu-glib-0.4 >= 0.4 or configure with
- libayatana-appindicator3-0.1 >= 0.4 or configure with
Build & Install Nuvola Runtime
Waf Build System
Nuvola uses waf build system. You are supposed to use the waf binary bundled with
Nuvola's source code. The build script
wscript may not be compatible with other versions. If you manage
to port wscript to a newer stable waf release, you may provide us with patches to be merged once we decide
to update our waf binary. Meantime, you can carry them downstream.
To find out what build parameters can be set run ./waf --help
$ ./waf --help $ ./waf configure [--prefix=...] [--libdir=...] [--branding=...] [--no-...] $ ./waf build
# ./waf install [--destdir=...] # /sbin/ldconfig # gtk-update-icon-cache ... # gtk-update-icon-cache-3.0 ...
# ./waf uninstall [--destdir=...]
Build & Install Nuvola Apps
Individual Nuvola apps are maintained in
nuvola-app-XXX GitHub repositories under
They use Nuvola SDK. Please refer to
the Build a Project Using Nuvola SDK
page in order to obtain information about dependencies and installation instructions.