Implement the wayland_socket config option for realms
This commit is contained in:
parent
ef04bc1786
commit
a77a7cc07b
@ -65,6 +65,9 @@ pub struct RealmConfig {
|
||||
#[serde(rename="use-wayland")]
|
||||
pub use_wayland: Option<bool>,
|
||||
|
||||
#[serde(rename="wayland-socket")]
|
||||
pub wayland_socket: Option<String>,
|
||||
|
||||
#[serde(rename="use-kvm")]
|
||||
pub use_kvm: Option<bool>,
|
||||
|
||||
@ -188,6 +191,7 @@ impl RealmConfig {
|
||||
use_sound: Some(true),
|
||||
use_x11: Some(true),
|
||||
use_wayland: Some(true),
|
||||
wayland_socket: Some("wayland-0".to_string()),
|
||||
use_kvm: Some(false),
|
||||
use_gpu: Some(false),
|
||||
use_gpu_card0: Some(false),
|
||||
@ -217,6 +221,7 @@ impl RealmConfig {
|
||||
use_sound: None,
|
||||
use_x11: None,
|
||||
use_wayland: None,
|
||||
wayland_socket: None,
|
||||
use_kvm: None,
|
||||
use_gpu: None,
|
||||
use_gpu_card0: None,
|
||||
@ -246,8 +251,6 @@ impl RealmConfig {
|
||||
self.bool_value(|c| c.use_kvm)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// If `true` render node device /dev/dri/renderD128 will be added to realm.
|
||||
///
|
||||
/// This enables hardware graphics acceleration in realm.
|
||||
@ -319,6 +322,12 @@ impl RealmConfig {
|
||||
self.bool_value(|c| c.use_wayland)
|
||||
}
|
||||
|
||||
/// The name of the wayland socket to use if `self.wayland()` is `true`
|
||||
/// defaults to wayland-0, will appear in the realm as wayland-0 regardless of value
|
||||
pub fn wayland_socket(&self) -> &str {
|
||||
self.str_value(|c| c.wayland_socket.as_ref()).unwrap_or("wayland-0")
|
||||
}
|
||||
|
||||
/// If `true` the realm will have access to the network through the zone specified
|
||||
/// by `self.network_zone()`
|
||||
pub fn network(&self) -> bool {
|
||||
|
@ -140,7 +140,9 @@ impl <'a> RealmLauncher <'a> {
|
||||
}
|
||||
|
||||
if config.wayland() {
|
||||
writeln!(s, "BindReadOnly=/run/user/1000/wayland-0:/run/user/host/wayland-0")?;
|
||||
// This socket will always be mounted in the realm as wayland-0, regardless of the
|
||||
// value of wayland_socket()
|
||||
writeln!(s, "BindReadOnly=/run/user/1000/{}:/run/user/host/wayland-0", config.wayland_socket())?;
|
||||
}
|
||||
|
||||
for bind in config.extra_bindmounts() {
|
||||
@ -206,7 +208,6 @@ impl <'a> RealmLauncher <'a> {
|
||||
for dev in &self.devices {
|
||||
writeln!(s, "DeviceAllow={}", dev).unwrap();
|
||||
}
|
||||
|
||||
REALM_SERVICE_TEMPLATE.replace("$REALM_NAME", self.realm.name())
|
||||
.replace("$ROOTFS", &rootfs)
|
||||
.replace("$NETNS_ARG", &netns_arg)
|
||||
@ -226,4 +227,5 @@ impl From<fmt::Error> for crate::Error {
|
||||
fn from(e: fmt::Error) -> Self {
|
||||
format_err!("Error formatting string: {}", e).into()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ impl RealmManager {
|
||||
pub fn launch_terminal(&self, realm: &Realm) -> Result<()> {
|
||||
info!("opening terminal in realm '{}'", realm.name());
|
||||
let title_arg = format!("Realm: {}", realm.name());
|
||||
let args = &["/usr/bin/gnome-terminal".to_owned(), "--title".to_owned(), title_arg];
|
||||
let args = &["/usr/bin/x-terminal-emulator".to_owned(), "--title".to_owned(), title_arg];
|
||||
Systemd::machinectl_shell(realm, args, "user", true, true)?;
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user