From d58a45a96c2fce2602224cd246b3576d0c975cf3 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 20 Feb 2024 13:54:16 +0400 Subject: Add systemd feature flag for systemd-specific things --- src/main.rs | 19 ++++++++++++++++--- src/niri.rs | 2 -- src/utils.rs | 4 ++-- 3 files changed, 18 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 275d747b..a19abfa2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,15 @@ fn main() -> Result<(), Box> { REMOVE_ENV_RUST_LIB_BACKTRACE.store(true, Ordering::Relaxed); } - IS_SYSTEMD_SERVICE.store(env::var_os("NOTIFY_SOCKET").is_some(), Ordering::Relaxed); + if env::var_os("NOTIFY_SOCKET").is_some() { + IS_SYSTEMD_SERVICE.store(true, Ordering::Relaxed); + + #[cfg(not(feature = "systemd"))] + warn!( + "running as a systemd service, but systemd support is compiled out. \ + Are you sure you did not forget to set `--features systemd`?" + ); + } let directives = env::var("RUST_LOG").unwrap_or_else(|_| "niri=debug".to_owned()); let env_filter = EnvFilter::builder().parse_lossy(directives); @@ -249,11 +257,16 @@ fn import_environment() { ] .join(" "); + #[cfg(feature = "systemd")] + let systemctl = format!("systemctl --user import-environment {variables} && "); + #[cfg(not(feature = "systemd"))] + let systemctl = String::new(); + let rv = Command::new("/bin/sh") .args([ "-c", &format!( - "systemctl --user import-environment {variables} && \ + "{systemctl}\ hash dbus-update-activation-environment 2>/dev/null && \ dbus-update-activation-environment {variables}" ), @@ -273,7 +286,7 @@ fn import_environment() { } }, Err(err) => { - warn!("error spawning shell to import environment into systemd: {err:?}"); + warn!("error spawning shell to import environment: {err:?}"); } } } diff --git a/src/niri.rs b/src/niri.rs index 35337653..d88893a9 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -1063,8 +1063,6 @@ impl Niri { pub fn inhibit_power_key(&mut self) -> anyhow::Result<()> { let conn = zbus::blocking::ConnectionBuilder::system()?.build()?; - // logind-zbus has a wrong signature for this method, so do it manually. - // https://gitlab.com/flukejones/logind-zbus/-/merge_requests/5 let message = conn.call_method( Some("org.freedesktop.login1"), "/org/freedesktop/login1", diff --git a/src/utils.rs b/src/utils.rs index 298dace1..5801de9e 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -229,7 +229,7 @@ fn spawn_sync(command: impl AsRef, args: impl IntoIterator anyhow::Result<()> { use std::fmt::Write as _; use std::path::Path; -- cgit