diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-02-20 13:54:16 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-02-21 07:27:49 +0400 |
| commit | d58a45a96c2fce2602224cd246b3576d0c975cf3 (patch) | |
| tree | 025af22a48cc4b778f17c22a9c901071e7f0195e /src | |
| parent | 9f1b4ee2996bc75ba521e9d80f001c98e379b231 (diff) | |
| download | niri-d58a45a96c2fce2602224cd246b3576d0c975cf3.tar.gz niri-d58a45a96c2fce2602224cd246b3576d0c975cf3.tar.bz2 niri-d58a45a96c2fce2602224cd246b3576d0c975cf3.zip | |
Add systemd feature flag for systemd-specific things
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 19 | ||||
| -rw-r--r-- | src/niri.rs | 2 | ||||
| -rw-r--r-- | src/utils.rs | 4 |
3 files changed, 18 insertions, 7 deletions
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<dyn std::error::Error>> { 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<OsStr>, args: impl IntoIterator<Item = impl As trace!("spawned PID: {pid}"); // Start a systemd scope for the grandchild. - #[cfg(feature = "dbus")] + #[cfg(feature = "systemd")] if let Err(err) = start_systemd_scope(command, child.id(), pid as u32) { trace!("error starting systemd scope for spawned command: {err:?}"); } @@ -292,7 +292,7 @@ pub static IS_SYSTEMD_SERVICE: AtomicBool = AtomicBool::new(false); /// /// This separates the pid from the compositor scope, which for example prevents the OOM killer /// from bringing down the compositor together with a misbehaving client. -#[cfg(feature = "dbus")] +#[cfg(feature = "systemd")] fn start_systemd_scope(name: &OsStr, intermediate_pid: u32, child_pid: u32) -> anyhow::Result<()> { use std::fmt::Write as _; use std::path::Path; |
