aboutsummaryrefslogtreecommitdiffstats
path: root/src/app_info.c
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denys@konsulko.com>2022-06-28 20:48:17 +0000
committerDenys Dmytriyenko <denys@konsulko.com>2022-07-11 20:02:21 +0000
commitefbd734aca8b813710d7564d79696b1cf150a88c (patch)
treed68747e79b2b6723dc238106e23f6dbf3a14f102 /src/app_info.c
parentc84836ec5ddaf2d0e91c46713475c35652bb540f (diff)
Add systemd_manager support.
This replaces dbus_activation_manager and retains basic process_manager for now. The first version of systemd_manager supports starting apps as services, handles aynchronous events to emit corresponding STARTED and TERMINATED signals. But it still relies on .desktop files for application enumeration and icon setting, plus uses DBusActivatable=true to prefer systemd_manager over process_manager. These shortcomings will be addressed in future revisions. And systemd_manager supports sandboxing and templating with overrides: * There's a generic systemd service template called systemd/system/agl-app@.service, that becomes agl-app@<app>.service for a given <app> * Overrides for an <app> are symlinks in systemd/system/agl-app@<app>.service.d/ pointing to corresponding generic configs in systemd/sandboxing/*.conf Bug-AGL: SPEC-4466 Signed-off-by: Denys Dmytriyenko <denys@konsulko.com> Change-Id: Id62cbf848f09250f1a8989a79cc61292a3ce054a
Diffstat (limited to 'src/app_info.c')
-rw-r--r--src/app_info.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/app_info.c b/src/app_info.c
index 03e1f02..0d25d37 100644
--- a/src/app_info.c
+++ b/src/app_info.c
@@ -17,7 +17,6 @@
#include <gio/gio.h>
#include "app_info.h"
-#include "dbus_activation_manager.h"
struct _AppInfo {
GObject parent_instance;
@@ -26,14 +25,14 @@ struct _AppInfo {
gchar *name;
gchar *icon_path;
gchar *command;
- gboolean dbus_activated;
+ gboolean systemd_activated;
gboolean graphical;
AppStatus status;
/*
* `runtime_data` is an opaque pointer depending on the app startup method.
- * It is set in by ProcessManager or DBusActivationManager.
+ * It is set in by ProcessManager or SystemdManager.
*/
gpointer runtime_data;
};
@@ -52,13 +51,7 @@ static void app_info_dispose(GObject *object)
g_clear_pointer(&self->name, g_free);
g_clear_pointer(&self->icon_path, g_free);
g_clear_pointer(&self->app_id, g_free);
-
- if (self->dbus_activated) {
- g_clear_pointer(&self->runtime_data,
- dbus_activation_manager_free_runtime_data);
- } else {
- g_clear_pointer(&self->runtime_data, g_free);
- }
+ g_clear_pointer(&self->runtime_data, g_free);
G_OBJECT_CLASS(app_info_parent_class)->dispose(object);
}
@@ -86,7 +79,8 @@ static void app_info_init(AppInfo *self)
AppInfo *app_info_new(const gchar *app_id, const gchar *name,
const gchar *icon_path, const gchar *command,
- gboolean dbus_activated, gboolean graphical)
+ gboolean systemd_activated,
+ gboolean graphical)
{
AppInfo *self = g_object_new(APPLAUNCHD_TYPE_APP_INFO, NULL);
@@ -94,7 +88,7 @@ AppInfo *app_info_new(const gchar *app_id, const gchar *name,
self->name = g_strdup(name);
self->icon_path = g_strdup(icon_path);
self->command = g_strdup(command);
- self->dbus_activated = dbus_activated;
+ self->systemd_activated = systemd_activated;
self->graphical = graphical;
return self;
@@ -128,11 +122,11 @@ const gchar *app_info_get_command(AppInfo *self)
return self->command;
}
-gboolean app_info_get_dbus_activated(AppInfo *self)
+gboolean app_info_get_systemd_activated(AppInfo *self)
{
g_return_val_if_fail(APPLAUNCHD_IS_APP_INFO(self), FALSE);
- return self->dbus_activated;
+ return self->systemd_activated;
}
gboolean app_info_get_graphical(AppInfo *self)