Compare commits

..

2 Commits

Author SHA1 Message Date
andromeda
70a2e9a729 embed ttf in exe 2026-01-17 20:29:25 +01:00
andromeda
b51d2a4f12 creates sh in empty environment 2026-01-17 19:58:11 +01:00
2 changed files with 12 additions and 8 deletions

BIN
fonts/Miracode.ttf Normal file

Binary file not shown.

View File

@@ -15,9 +15,7 @@ use vte::{Params, Parser, Perform};
use zeno::{Mask, Transform}; use zeno::{Mask, Transform};
// params const FONT: &[u8] = std::include_bytes!("../fonts/Miracode.ttf");
const SHELL: &str = "/home/andromeda/.nix-profile/bin/sh";
const FONT: &str = "/home/andromeda/.nix-profile/share/fonts/truetype/Miracode.ttf";
struct Buffer<T: std::clone::Clone> { struct Buffer<T: std::clone::Clone> {
buffer: Vec<T>, buffer: Vec<T>,
@@ -160,8 +158,7 @@ impl OutlineBuilder for Builder {
fn main() { fn main() {
// initialize the font // initialize the font
let font_data = std::fs::read(FONT).unwrap(); let face = Face::parse(FONT, 0).unwrap();
let face = Face::parse(&font_data, 0).unwrap();
let font = generate_font(&face); let font = generate_font(&face);
let mut model = Model::new( let mut model = Model::new(
@@ -186,7 +183,7 @@ fn main() {
.unwrap(); .unwrap();
window.set_target_fps(60); window.set_target_fps(60);
let pty = spawn_pty(&SHELL).unwrap(); let pty = spawn_pty().unwrap();
fcntl( fcntl(
&pty, &pty,
F_SETFL(OFlag::from_bits_truncate(fcntl(&pty, F_GETFL).unwrap()) | OFlag::O_NONBLOCK), F_SETFL(OFlag::from_bits_truncate(fcntl(&pty, F_GETFL).unwrap()) | OFlag::O_NONBLOCK),
@@ -257,7 +254,7 @@ fn main() {
} }
// forks a new pty and returns file descriptor of the master // forks a new pty and returns file descriptor of the master
fn spawn_pty(shell: &str) -> Option<PtyMaster> { fn spawn_pty() -> Option<PtyMaster> {
// SAFETY safe unless os out of PTYs; incredibly unlikely // SAFETY safe unless os out of PTYs; incredibly unlikely
match unsafe { forkpty(None, None) } { match unsafe { forkpty(None, None) } {
Ok(fork_pty_res) => match fork_pty_res { Ok(fork_pty_res) => match fork_pty_res {
@@ -266,7 +263,14 @@ fn spawn_pty(shell: &str) -> Option<PtyMaster> {
return Some(unsafe { PtyMaster::from_owned_fd(master) }); return Some(unsafe { PtyMaster::from_owned_fd(master) });
} }
ForkptyResult::Child => { ForkptyResult::Child => {
let _ = execv::<CString>(&CString::new(shell).unwrap(), &[]); let _ = execv::<CString>(
&CString::new("/usr/bin/env").unwrap(),
&[ CString::new("/usr/bin/env").unwrap(),
CString::new("-i").unwrap(),
CString::new("sh").unwrap(),
CString::new("--norc").unwrap(),
CString::new("--noprofile").unwrap() ],
);
return None; return None;
} }
}, },