diff --git a/userspace/graphics/term/src/config.rs b/userspace/graphics/term/src/config.rs index 31a8ab3c..927e272d 100644 --- a/userspace/graphics/term/src/config.rs +++ b/userspace/graphics/term/src/config.rs @@ -41,6 +41,7 @@ pub struct Config { pub colors: ColorsConfig, } +#[cfg(any(rust_analyzer, target_os = "yggdrasil"))] impl Default for FontConfig { fn default() -> Self { Self { @@ -53,6 +54,20 @@ impl Default for FontConfig { } } +#[cfg(any(rust_analyzer, unix))] +impl Default for FontConfig { + fn default() -> Self { + // TODO query fontconfig for monospace + Self { + regular: PathBuf::from("/usr/share/fonts/TTF/DejaVuSansMono.ttf"), + italic: PathBuf::from("/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf"), + bold: PathBuf::from("/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf"), + bold_italic: PathBuf::from("/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf"), + size: 16, + } + } +} + impl Default for ColorsConfig { fn default() -> Self { Self { diff --git a/userspace/graphics/term/src/main.rs b/userspace/graphics/term/src/main.rs index 4f5504c8..a6c2a08b 100644 --- a/userspace/graphics/term/src/main.rs +++ b/userspace/graphics/term/src/main.rs @@ -380,6 +380,7 @@ impl Terminal<'_> { .stdin(Stdio::from_raw_fd(pty_slave_stdin)) .stdout(Stdio::from_raw_fd(pty_slave_stdout)) .stderr(Stdio::from_raw_fd(pty_slave_stderr)) + .create_session()? .create_process_group()? .spawn()? }; diff --git a/userspace/lib/cross/src/process.rs b/userspace/lib/cross/src/process.rs index 0019836e..444cd2b0 100644 --- a/userspace/lib/cross/src/process.rs +++ b/userspace/lib/cross/src/process.rs @@ -1,5 +1,6 @@ use std::io; pub trait CommandSpawnExt { + fn create_session(&mut self) -> io::Result<&mut Self>; fn create_process_group(&mut self) -> io::Result<&mut Self>; } diff --git a/userspace/lib/cross/src/sys/unix/mod.rs b/userspace/lib/cross/src/sys/unix/mod.rs index 2d341172..59f5c33d 100644 --- a/userspace/lib/cross/src/sys/unix/mod.rs +++ b/userspace/lib/cross/src/sys/unix/mod.rs @@ -64,4 +64,9 @@ impl CommandSpawnExt for Command { fn create_process_group(&mut self) -> io::Result<&mut Self> { Ok(self.process_group(0)) } + + fn create_session(&mut self) -> io::Result<&mut Self> { + // TODO + Ok(self) + } } diff --git a/userspace/lib/cross/src/sys/yggdrasil/mod.rs b/userspace/lib/cross/src/sys/yggdrasil/mod.rs index 41486326..273688ac 100644 --- a/userspace/lib/cross/src/sys/yggdrasil/mod.rs +++ b/userspace/lib/cross/src/sys/yggdrasil/mod.rs @@ -49,4 +49,8 @@ impl CommandSpawnExt for Command { let group = unsafe { runtime::rt::sys::create_process_group() }; Ok(self.process_group(group)) } + + fn create_session(&mut self) -> io::Result<&mut Self> { + Ok(unsafe { self.gain_terminal(0) }) + } }