2 Commits

Author SHA1 Message Date
Uber Veng
80d2e7fd71 Fix first startup on macOS 2 2026-05-29 13:17:30 +07:00
Uber Veng
03e1311e90 update install script 5 2026-05-29 13:03:35 +07:00
4 changed files with 17 additions and 3 deletions

2
Cargo.lock generated
View File

@@ -1203,7 +1203,7 @@ dependencies = [
[[package]] [[package]]
name = "ostiary" name = "ostiary"
version = "1.1.3" version = "1.1.4"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "ostiary" name = "ostiary"
version = "1.1.3" version = "1.1.4"
edition = "2024" edition = "2024"
[dependencies] [dependencies]

View File

@@ -109,7 +109,7 @@ fi
echo "" echo ""
ok "Launching ${BINARY}..." ok "Launching ${BINARY}..."
if { true </dev/tty; } 2>/dev/null; then if { true </dev/tty; } 2>/dev/null; then
exec "$INSTALL_DIR/$BINARY" "$INSTALL_DIR/$BINARY"
else else
ok "Run: $BINARY" ok "Run: $BINARY"
fi fi

View File

@@ -12,6 +12,8 @@ mod updater;
use std::io; use std::io;
use anyhow::Result; use anyhow::Result;
#[cfg(unix)]
use libc;
use crossterm::{ use crossterm::{
event::{DisableMouseCapture, EnableMouseCapture}, event::{DisableMouseCapture, EnableMouseCapture},
execute, execute,
@@ -29,6 +31,18 @@ async fn main() -> Result<()> {
config::Config::create_with_endpoint(&url, &name)? config::Config::create_with_endpoint(&url, &name)?
}; };
// Before initializing the TUI, ensure our process group is the terminal's
// foreground group. When launched from a non-interactive install script on
// macOS, the parent shell may not have granted terminal ownership, causing
// crossterm's kqueue-based input reader to fail silently.
#[cfg(unix)]
{
use std::os::unix::io::AsRawFd;
if let Ok(tty) = std::fs::File::open("/dev/tty") {
unsafe { libc::tcsetpgrp(tty.as_raw_fd(), libc::getpgrp()); }
}
}
enable_raw_mode()?; enable_raw_mode()?;
let mut stdout = io::stdout(); let mut stdout = io::stdout();
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;