Description
Support a way to configure a set of Apps (!) that are launched automatically when the device has finished booting to (unlocked) Lipstick, or Lipstick is restarted.
Current state
Prior to the introduction of SailJail, there were various ways of configuring such functionality, from Parsing the Exec
line in the .desktop file to calling DBus “Prestart” methods, and others.
Apps such as Takeoff and others could be used for that purpose.
Since Sailjail, launching an application correctly (i.e. jailed including Permission prompts, environment etc.) can not be replicated reliably, rendering such apps nonfunctional, or semi-functional (e.g. launching all applications out of their Jails).
Limitations
It should suffice to limit such autostart functionality to applications which have a .desktop file, AND are SailJail-enabled (either through the X-SailJail
section, or implicitly through the default fallbacks).
Un-Jailed (Sandboxing=Disabled
), and non-desktop applications (such as daemons, scripts, comman-line tools …) should be exempt from being supported
Standards
XDG specifies something like this Desktop Application Autostart Specification
As other aspects of the XDG spec for .desktop files are already implemented in SFOS, it would appear doing following that specification would be beneficial.
SystemD also has a (WIP?) spec: here
(… which in this authors opinion sounds quite horrible and could be an example of what to avoid)
Implementation
Perhaps the easiest path to implementation would be if Lipstick (or something else) offered a DBus service which when called replicates the same behaviour as a click on a Launcher Item by the user.
Example:
busctl --user call com.jolla.lipstick.Launcher / com.jolla.lipstick.Launcher.launchApp s "harbour-example.desktop"
If such an interface existed, Community could develop apps to manage the list, and issue calls to such service.
Apps could then implement XDG Autostart spec, and/or Concepts such as “Sessions” or “Activities” as in use by e.g. Linux Desktop Environments.