2022-04-27 20:08:05 +02:00
|
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
|
|
2022-05-03 13:37:51 +02:00
|
|
|
use crate::state::State;
|
2022-04-27 20:08:05 +02:00
|
|
|
use libsystemd::daemon::{booted, notify, NotifyState};
|
|
|
|
|
use std::process::Command;
|
|
|
|
|
|
|
|
|
|
pub fn ready(state: &State) {
|
|
|
|
|
if booted() {
|
|
|
|
|
match Command::new("systemctl")
|
|
|
|
|
.args(["--user", "import-environment", "WAYLAND_DISPLAY"])
|
|
|
|
|
.env("WAYLAND_DISPLAY", &state.common.socket)
|
|
|
|
|
.status()
|
|
|
|
|
{
|
2022-05-03 13:37:51 +02:00
|
|
|
Ok(x) if x.success() => {}
|
|
|
|
|
Ok(x) => slog_scope::warn!(
|
|
|
|
|
"Failed to import WAYLAND_DISPLAY into systemd (exit code {:?})",
|
|
|
|
|
x.code()
|
|
|
|
|
),
|
|
|
|
|
Err(err) => slog_scope::error!(
|
|
|
|
|
"Failed to run systemctl although booted with systemd: {}",
|
|
|
|
|
err
|
|
|
|
|
),
|
2022-04-27 20:08:05 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if let Err(err) = notify(false, &[NotifyState::Ready]) {
|
|
|
|
|
slog_scope::error!("Failed to notify systemd: {}", err);
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-05-03 13:37:51 +02:00
|
|
|
}
|