Core Areas and APIs
This page provides a summary of the core areas of SailfishOS.
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.
Low level audio is handled by pulseaudio with prioritisation by ohm.
Gstreamer is used to provide video playback and recording.
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.