Harden desktop recovery and pre-release stability checks
Bound IPC transport deadlines while preserving portal leases, supervise desktop helper and agent recovery, and reserve final floating window geometry during placement. Stabilize CLI output and isolated tests, expand workspace CI, resolve formatting and lint failures, and bundle the MIT license with installer compatibility.
This commit is contained in:
1 parent
a00f1c6f3a
commit
a6f24e8188
30 files changed
+810
-44
No files matched your search
@@ -15,6 +15,9 @@ use tracing::{info, warn};
|
||||
use crate::Ferese;
|
||||
use crate::private_client::{self, ClientCapabilities};
|
||||
|
||||
mod supervisor;
|
||||
pub(crate) use supervisor::Supervisor;
|
||||
|
||||
pub(crate) fn command(program: impl AsRef<OsStr>) -> Command {
|
||||
let mut command = Command::new(program);
|
||||
// Calloop blocks these on the compositor thread; fork/exec inherits that
|
||||
@@ -41,6 +44,15 @@ pub(crate) fn spawn_client<S: AsRef<OsStr>>(
|
||||
state: &mut Ferese,
|
||||
args: impl IntoIterator<Item = S>,
|
||||
capabilities: ClientCapabilities,
|
||||
) -> Option<Child> {
|
||||
spawn_client_inner(state, args, capabilities, None)
|
||||
}
|
||||
|
||||
fn spawn_client_inner<S: AsRef<OsStr>>(
|
||||
state: &mut Ferese,
|
||||
args: impl IntoIterator<Item = S>,
|
||||
capabilities: ClientCapabilities,
|
||||
supervised_restart: Option<bool>,
|
||||
) -> Option<Child> {
|
||||
let mut args = args.into_iter();
|
||||
let Some(program) = args.next() else {
|
||||
@@ -51,6 +63,10 @@ pub(crate) fn spawn_client<S: AsRef<OsStr>>(
|
||||
let program = program.as_ref();
|
||||
let mut command = command(program);
|
||||
command.args(args);
|
||||
if let Some(restarted) = supervised_restart {
|
||||
command.process_group(0);
|
||||
command.env("FERESE_CLIENT_RESTART", if restarted { "1" } else { "0" });
|
||||
}
|
||||
// Workers may already exist. Change only this child's environment.
|
||||
// Apply before granting the child a private Wayland connection.
|
||||
state.session_environment.apply_public(&mut command);
|
||||
|
||||
Reference in new issue
Block a user