diff options
author | Arnaud Ferraris <arnaud.ferraris@collabora.com> | 2021-12-01 20:09:30 +0100 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2021-12-20 18:02:20 -0500 |
commit | d388e92df803d0c8a7b0c18762b0900796e348d1 (patch) | |
tree | 213ecdfbfc41e677700c47ff492912637fce4039 /data | |
parent | d58aab33e54bea28a33a5ef6b62a5a3e5b6003d1 (diff) |
applaunchd: Initial commit
`applaunchd` is a new service, dedicated to starting and monitoring
applications. It is part of the Application Framework rework.
Bug-AGL: SPEC-4160
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Change-Id: I9543957f9065670e9112556f5cd2b31d0b2ab9d9
Diffstat (limited to 'data')
-rw-r--r-- | data/meson.build | 57 | ||||
-rw-r--r-- | data/org.automotivelinux.AppLaunch.service.in | 3 | ||||
-rw-r--r-- | data/org.automotivelinux.AppLaunch.xml | 74 | ||||
-rw-r--r-- | data/org.freedesktop.Application.xml | 17 |
4 files changed, 151 insertions, 0 deletions
diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..34aefa4 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,57 @@ +# +# Copyright (C) 2021 Collabora Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +gnome = import('gnome') + +# DBus server interface +dbus_prefix = 'org.automotivelinux.' +dbus_namespace = 'applaunchd' + +generated_dbus_sources = [] + +dbus_interfaces = [ 'org.automotivelinux.AppLaunch.xml' ] + +generated_dbus_sources += gnome.gdbus_codegen('applaunch-dbus', + sources : dbus_interfaces, + object_manager : false, + interface_prefix : 'org.automotivelinux.', + install_header : false, + namespace : 'applaunchd') + +dbus_header_dir = meson.current_build_dir() +dbus_inc = include_directories('.') +install_data(dbus_interfaces, install_dir: ifacedir) + +# Application DBus interface +generated_dbus_sources += gnome.gdbus_codegen('fdo-dbus', + sources : [ 'org.freedesktop.Application.xml' ], + object_manager : false, + interface_prefix : 'org.freedesktop.', + install_header : false, + namespace : 'fdo') + +# systemd service file +service_data = configuration_data() +service_data.set('bindir', bindir) +service_file = 'org.automotivelinux.AppLaunch.service' + +configure_file( + input : service_file + '.in', + output : service_file, + configuration : service_data, + install : true, + install_dir: servicedir, +) diff --git a/data/org.automotivelinux.AppLaunch.service.in b/data/org.automotivelinux.AppLaunch.service.in new file mode 100644 index 0000000..41acad5 --- /dev/null +++ b/data/org.automotivelinux.AppLaunch.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.automotivelinux.AppLaunch +Exec=@bindir@/applaunchd diff --git a/data/org.automotivelinux.AppLaunch.xml b/data/org.automotivelinux.AppLaunch.xml new file mode 100644 index 0000000..52aa20b --- /dev/null +++ b/data/org.automotivelinux.AppLaunch.xml @@ -0,0 +1,74 @@ +<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> + +<!-- + AppLaunch Interface Specification + + Copyright (C) 2021 Collabora Ltd +--> +<node name="/org/automotivelinux/AppLaunch" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + + <!-- + org.automotivelinux.AppLaunch: + @short_description: The AppLaunch interface. + + The AppLaunch interface allows requesting application startup and + being notified of application startup and termination events. + --> + <interface name="org.automotivelinux.AppLaunch"> + + <!-- + start: + @appid: Application ID, should match: + - the xdg-shell app-id for graphical applications started + through a command line + - the D-Bus name owned by the application for D-Bus activated + apps + + Start the application with the corresponding application ID. + --> + <method name="start"> + <arg name="appid" type="s" direction="in"/> + </method> + + <!-- + listApplications: + @graphical: Whether the should should be limited to graphical + applications. + @applist: The application list as an array of variants. Each array item + is an application entry, represented as a structure of 3 strings: + - application ID + - application name + - absolute icon path + + Retrieve the list of applications which can be started using this interface. + --> + <method name="listApplications"> + <arg name="graphical" type="b" direction="in"/> + <arg name="applist" type="av" direction="out"/> + </method> + + <!-- + started: + @appid: Application ID + + Emitted when an application started successfully, which happens when: + - the D-Bus name has been taken for D-Bus activated applications + - the process was created for other applications + --> + <signal name="started"> + <arg name="appid" type="s"/> + </signal> + + <!-- + terminated: + @appid: Application ID + + Emitted when an application terminated, which happens when: + - the D-Bus name has been released for D-Bus activated applications + - the process exited for other applications + --> + <signal name="terminated"> + <arg name="appid" type="s"/> + </signal> + </interface> +</node> diff --git a/data/org.freedesktop.Application.xml b/data/org.freedesktop.Application.xml new file mode 100644 index 0000000..dc03d70 --- /dev/null +++ b/data/org.freedesktop.Application.xml @@ -0,0 +1,17 @@ +<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> +<node> + <interface name='org.freedesktop.Application'> + <method name='Activate'> + <arg type='a{sv}' name='platform_data' direction='in'/> + </method> + <method name='Open'> + <arg type='as' name='uris' direction='in'/> + <arg type='as' name='platform_data' direction='in'/> + </method> + <method name='ActivateAction'> + <arg type='s' name='action_name' direction='in'/> + <arg type='av' name='parameter' direction='in'/> + <arg type='as' name='platform_data' direction='in'/> + </method> + </interface> +</node> |