Nuvola Apps™ is a runtime for semi-sandboxed web apps providing more native user experience and tighter integration with Linux desktop environments than usual web browsers can offer. It tries to feel and look like a native application as much as possible. Nuvola™ mostly specializes on music streaming web apps (e.g. Google Play Music, Spotify, Amazon Music, Deezer, nd more), but progress is being made to support generic web apps (e.g. Google Calendar, Google Keep, etc.).
Features of Nuvola: Desktop launchers, integration with media applets (e.g. in GNOME Shell and Ubuntu sound menu), Unity launcher quick list actions, lyrics fetching, Last.fm audio scrobbler, tray icon, desktop notifications, media keys binding, password manager, remote control over HTTP and more. Some features may be available only to users with premium or patron plans available at https://tiliado.eu/nuvolaplayer/funding/
Support: Users of the genuine Nuvola builds available at https://nuvola.tiliado.eu are eligible for a limited user support free of charge. Users of third-party builds should contact the customer care of their distributor or order paid support provided by the Nuvola developer.
Trademarks: Nuvola™, Nuvola Player™ and Nuvola Apps™ are trademarks held by Jiří Janoušek, the founder of Nuvola project. Nuvola Apps software is not affiliated with the Nuvola icon theme.
To avoid confusion, the default build doesn't pretend to be Nuvola Apps but "Web Apps based on the open source code
from Nuvola Apps project™". If you distribute binaries based on Nuvola code, keep in mind that it is your responsibility
to provide your users with support and documentation. You should customize your build with following two branding files
at least and enable branding by passing --branding=NAME
to waf configure
.
A file in JSON format. All keys are optional.
- "name": The name of your Nuvola derivative, e.g. "Cloud Apps".
- "help_url": The web page to be opened when users activates a Help menu item or command. It should provide basic documentation. Default page.
- "requirements_help_url": The web page to be opened when system fails to satisfy requirements of a particular app. It should provide information on how to install missing requirements (e.g. Adobe Flash plugin). Default page.
A file in XML-like format. A subset of HTML formatting is supported (e.g. h1, h2, p, a, i and b). This file is shown in the Welcome tab of the main window of Nuvola's master process. It should answer following questions:
- How to find out which Nuvola apps are available and in which version?
- Where to report bugs and how to get support?
Nuvola uses Git version control system for its code base and GitHub for both code hosting and issue tracking. All official Git repositories are located under Tiliado organization account. The code-base is divided to three parts:
- Diorite library: Private utility and widget library for Nuvola Player project based on GLib, GIO and GTK.
- Nuvola Apps Runtime: The Nuvola Apps run-time without service integrations.
- Service integrations that have certain degree of independence and are maintained in separate
repositories named
nuvola-app-...
.
If you would like to contribute to Nuvola Apps project development, there are two areas you can jump in.
-
Core development - development of the Nuvola Apps run-time that loads web app integrations and interacts with the Linux desktop components.
Skills: Vala, GTK+ 3, WebKitGtk+, GIT, JavaScript
-
Service Integrations - service integration scripts that runs in the web interface and communicates with Nuvola Apps run-time.
Skills: JavaScript, DOM, HTML.
- Python 3 >= 3.4
- Vala >= 0.36.3
- Diorite library 0.3.x
- 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.16.0 (2.16.1 recommended)
- javascriptcoregtk-4.0 >= 2.16.0 (2.16.1 recommended)
- libnotify >= 0.7
- gstreamer >= 1.8.3 (>= 1.12 for MSE)
- libdri2 >= 1.0.0
- libdrm >= 2.2
- libuuid
- libsecret-1 >= 0.16
- g-ir-compiler
- optional unity >= 3.0
- optional dbusmenu-glib-0.4 >= 0.4
- optional appindicator3-0.1 >= 0.4
- optional engine.io-client >= 3.1.0 (installed as /usr/share/javascript/engine.io-client/engine.io.js)
- optional unit.js 2.0.0 (installed as /usr/share/javascript/unitjs/unit.js) for JavaScript unit tests (included in the test service - web_apps/test subdirectory)
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 configure [--prefix=...] [--libdir=...] [--branding=...] [--noopt] [--nodebug] [--nounity] [--noappindicator]
$ ./waf build
# ./waf install [--destdir=...]
# /sbin/ldconfig
# gtk-update-icon-cache ...
# gtk-update-icon-cache-3.0 ...
# ./waf uninstall [--destdir=...]
See CHANGELOG.md.