From ab8225b76cf9fa84016d3f84a9053b0d89d7072b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kondor=20D=C3=A1niel?= Date: Sat, 10 Jan 2026 18:32:12 +0100 Subject: [PATCH] systemd-integration: disable environment variable substitution By default, systemd substitutes environment variables in the commands it runs. However, this is not expected for commands from .desktop files, so better to explicitly disable it. --- src/implementations/cairo-dock-systemd-integration.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/implementations/cairo-dock-systemd-integration.c b/src/implementations/cairo-dock-systemd-integration.c index 3d0e6a6d..5fb6613d 100644 --- a/src/implementations/cairo-dock-systemd-integration.c +++ b/src/implementations/cairo-dock-systemd-integration.c @@ -86,9 +86,10 @@ static void _spawn_app (const gchar * const *args, const gchar *id, const gchar // Unit properties g_variant_builder_open (&var_builder, G_VARIANT_TYPE ("a(sv)")); g_variant_builder_add (&var_builder, "(sv)", "Description", g_variant_new_string (desc)); - GVariant *tmp = g_variant_new ("(s^asb)", args[0], args, FALSE); // FALSE -> do not keep a "failed" unit on unclean exit - // note: ExecStart expects an array of (sasb) - g_variant_builder_add (&var_builder, "(sv)", "ExecStart", g_variant_new_array (NULL, &tmp, 1)); + const gchar *exec_flags[] = {"no-env-expand", "ignore-failure", NULL}; + GVariant *tmp = g_variant_new ("(s^as^as)", args[0], args, exec_flags); + // note: ExecStartEx expects an array of (sasas) + g_variant_builder_add (&var_builder, "(sv)", "ExecStartEx", g_variant_new_array (NULL, &tmp, 1)); if (env && *env) g_variant_builder_add (&var_builder, "(sv)", "Environment", g_variant_new_strv (env, -1)); if (working_dir) g_variant_builder_add (&var_builder, "(sv)", "WorkingDirectory", g_variant_new_string (working_dir)); // fail if systemd cannot exec the process binary