autocommit 2022-04-15 20:23:03 CEST
This commit is contained in:
parent
5f13954dbc
commit
fdf0ab7388
17 changed files with 159 additions and 87 deletions
|
|
@ -1,10 +1,13 @@
|
|||
use std::borrow::Cow;
|
||||
use std::rc::Rc;
|
||||
use thiserror::Error;
|
||||
use crate::dbus::{BUS_DEST, BUS_PATH, DbusError, DictEntry};
|
||||
use crate::state::State;
|
||||
use crate::utils::errorfmt::ErrorFmt;
|
||||
use crate::wire_dbus::org;
|
||||
use {
|
||||
crate::{
|
||||
dbus::{DbusError, DictEntry, BUS_DEST, BUS_PATH},
|
||||
state::State,
|
||||
utils::errorfmt::ErrorFmt,
|
||||
wire_dbus::org,
|
||||
},
|
||||
std::{borrow::Cow, rc::Rc},
|
||||
thiserror::Error,
|
||||
};
|
||||
|
||||
const SYSTEMD_DEST: &str = "org.freedesktop.systemd1";
|
||||
const SYSTEMD_PATH: &str = "/org/freedesktop/systemd1";
|
||||
|
|
@ -17,7 +20,12 @@ pub enum UserSessionError {
|
|||
|
||||
pub fn import_environment(state: &Rc<State>, key: &str, value: &str) {
|
||||
if let Err(e) = import_environment_(state, key, value) {
|
||||
log::error!("Could not import `{}={}` into the system environment: {}", key, value, ErrorFmt(e));
|
||||
log::error!(
|
||||
"Could not import `{}={}` into the system environment: {}",
|
||||
key,
|
||||
value,
|
||||
ErrorFmt(e)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -27,28 +35,46 @@ fn import_environment_(state: &Rc<State>, key: &str, value: &str) -> Result<(),
|
|||
Err(e) => return Err(UserSessionError::AcquireSessionBus(e)),
|
||||
};
|
||||
let setting = format!("{}={}", key, value);
|
||||
session.call(BUS_DEST, BUS_PATH, org::freedesktop::dbus::UpdateActivationEnvironment {
|
||||
environment: Cow::Borrowed(&[DictEntry {
|
||||
key: key.into(),
|
||||
value: value.into(),
|
||||
}])
|
||||
}, {
|
||||
let setting = setting.clone();
|
||||
move |rep| {
|
||||
if let Err(e) = rep {
|
||||
log::error!("Could not import `{}` into the dbus environment: {}", setting, ErrorFmt(e));
|
||||
session.call(
|
||||
BUS_DEST,
|
||||
BUS_PATH,
|
||||
org::freedesktop::dbus::UpdateActivationEnvironment {
|
||||
environment: Cow::Borrowed(&[DictEntry {
|
||||
key: key.into(),
|
||||
value: value.into(),
|
||||
}]),
|
||||
},
|
||||
{
|
||||
let setting = setting.clone();
|
||||
move |rep| {
|
||||
if let Err(e) = rep {
|
||||
log::error!(
|
||||
"Could not import `{}` into the dbus environment: {}",
|
||||
setting,
|
||||
ErrorFmt(e)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
session.call(SYSTEMD_DEST, SYSTEMD_PATH, org::freedesktop::systemd1::manager::SetEnvironment {
|
||||
names: Cow::Borrowed(&[Cow::Borrowed(&setting)]),
|
||||
}, {
|
||||
let setting = setting.clone();
|
||||
move |rep| {
|
||||
if let Err(e) = rep {
|
||||
log::error!("Could not import `{}` into the systemd environment: {}", setting, ErrorFmt(e));
|
||||
},
|
||||
);
|
||||
session.call(
|
||||
SYSTEMD_DEST,
|
||||
SYSTEMD_PATH,
|
||||
org::freedesktop::systemd1::manager::SetEnvironment {
|
||||
names: Cow::Borrowed(&[Cow::Borrowed(&setting)]),
|
||||
},
|
||||
{
|
||||
let setting = setting.clone();
|
||||
move |rep| {
|
||||
if let Err(e) = rep {
|
||||
log::error!(
|
||||
"Could not import `{}` into the systemd environment: {}",
|
||||
setting,
|
||||
ErrorFmt(e)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue