Core Areas and APIs
This page provides a summary of the core areas of SailfishOS.
- 1 System essentials
- 2 Session management
- 3 Networking
- 4 Graphics
- 5 Multimedia
- 6 Input
- 7 Filesystem
- 8 Application / Middleware
Sailfish OS is a GNU/Linux system and as such relies on many of the standard GNU applications (shell tools): bash, coreutils, sed, ncurses, gzip, gawk, findutils, readline, emacs, and so on.
The central C library is eglibc 2.15.
Systemd provides the system-level session management for Sailfish OS. It handles transitions between power off, act-dead mode (charging), upgrade mode and normal user-sessions/runtime. Systemd's user-session system is used to manage the user executed code, such as the lipstick process.
Most scheduling is handled by timed.
Networking capabilities are primarily implemented through:
- ConnMan for general network connection management
- oFono for cellular networking
- BlueZ for Bluetooth connectivity
The graphical display for Sailfish OS is handled by Qt and typically operates via a Wayland driver.
Mer core provides the open source Mesa 3D Graphics Library containing OpenGL ES 2.0 and EGL libraries to link and build against, which can at image build time be replaced with device-specific OpenGL ES 2.0/EGL implementations.
In the core Mesa is built to use LLVMpipe for fast software rendering with no hardware specific drivers enabled.
Sailfish Multimedia uses QtMultimedia, on top of GStreamer 1.0 supporting the 'good' and 'bad' plugin collections. The 'ugly' plugin set is not supported for licensing reasons.
Some low-level media services that interact with the Android HAL are wrapped up in droidmedia, and exposed in a custom Gstreamer plugin: GStreamer1.0-droid. This includes support for OMX codecs (H.264/AVC, VP8, MPEG-4 & H.263 video, MP3 & AAC audio), Camera support (including direct capture and encoding of video for recording) and EGL display, which can all use Android native buffers and formats internally for added performance.
Media indexing is provided by GNOME Tracker, using libav for video extraction to avoid interfering with the video hardware through GStreamer.
Low level audio is handled by pulseaudio with prioritisation by ohm.
Sailfish OS input is provided by the kernel's evdev layer and is mainly handled by Qt with mce handling the hardware keys and proximity sensors.
Sailfish OS does not depend on a specific filesystem and can use BTRFS and Ext4.
Application / Middleware
Sailfish OS comprises of a variety of middleware and application components; the main components are listed below. Many of these are built upon the Qt framework.
The main home screen and application UI area is driven by the Lipstick subsystem. This handles:
- Home screen and launcher
- Primary system UI swipe navigation
- Application windows/compositing
- System-level windows and notifications
- Events screen and notifications
- Device locking
- Ambience switching
Sailfish OS provides features to store and manage contact data, synchronize with online contact storage services, and transfer contacts between devices.
The Sailfish OS telephony features include the capabilities for making phone calls, alerting with ringtones, phone call audio routing, SIM management and dual SIM capabilities, GPRS and phone network operator connections, AT command handling, SIM ToolKit interaction and general modem management.
Sailfish OS includes a unified messaging framework which allows messages from a variety of sources to be sent and received using a variety of protocols and services, all from the messaging application.
The Calendar system in Sailfish OS allows users to view, create, and share calendar events, and to schedule reminders for various events. Event information from a variety of sources is separated in the database into distinct calendar collections.
Accounts & SSO
Sailfish OS allows the user to create an account on the device, sign in on the device, and then have multiple Sailfish OS applications and services able to access the service with that account. Only privileged applications are able to access account information, or use account credentials to sign on to services.
Sailfish OS supports a number of email communication protocols and services. These include:
- SMTP, POP3 and IMAP access
- Microsoft Exchange ActiveSync access
- Scheduling of email synchronization through the Buteo synchronization framework
- Rendering of HTML emails through WebKit
The web browser in Sailfish OS is a fully open-source component which has been developed in active collaboration with community members. It uses Sailfish Silica UI elements for the browser chrome, and an embedded Gecko engine for content rendering.
Alarms and Timezone
The time daemon in Sailfish OS provides time-tracking for the system, and handles alarms and timer notifications from the hardware platform to trigger user-visible notifications and non-graphical-feedback, as well as more complicated user interaction. It can use a variety of clocks (including hardware real-time clocks, network time protocol packets from data networks, and NITZ packets from cellular service providers) to synchronise the system date time and timezone, and to trigger events.
Location and Positioning
Sailfish OS utilises the GeoClue framework to provide positioning information to clients. A variety of GeoClue provider plugins are implemented within Sailfish OS, each of which uses a different method or resource to provide position updates (including GPS and GPS-assistance services). Client applications can use the QtPositioning APIs to receive position and satellite information updates, via the GeoClue backend for the QtPositioning API.
Secure Storage and Cryptography
Sailfish OS offers secure storage and cryptographic operation functionality to client applications. These facilities are provided by plugins to a system daemon, and those plugins may optionally use a Secure Peripheral or Trusted Execution Environment application to perform the storage or crypto operations. Clients can use the provided Qt-based APIs to send requests to the system daemon via DBus.