terminal emulator
git clone https://git.lucas.co/cce-terminal.git
Install a logger so fatal event-loop errors are visible
cce-ui reports its fatal paths — a Wayland dispatch Io error or protocol
error ending the event loop (window_runner.rs:4338/4360) — through the
`log` facade, which is a silent sink unless the app installs a logger.
cce-terminal never did, so when its compositor connection died on
2026-08-13 the app's own explanation was discarded and only libwayland's
C-level stderr survived to say why. Mirrors cce-status-interface's
env_logger setup (default filter info), plus start/exit markers.
Co-Authored-By: Claude Fable 5 <[email protected]>
Cargo.toml | 2 ++
src/main.rs | 7 +++++++
2 files changed, 9 insertions(+)
diff --git a/Cargo.toml b/Cargo.toml
index 0d1711a..795b271 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,3 +10,5 @@ calloop = "0.13.0"
libc = "0.2"
alacritty_terminal = "0.26.0"
glyphon = "0.8"
+log = "0.4"
+env_logger = "0.11"
diff --git a/src/main.rs b/src/main.rs
index 5c8bebc..bff01d9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1154,7 +1154,14 @@ impl Application for TerminalApp {
}
fn main() {
+ // cce-ui logs its own fatal paths (Wayland dispatch / protocol errors that
+ // end the event loop) through `log`, which is a no-op sink unless the app
+ // installs a logger — without this, an app that dies with its compositor
+ // connection leaves no explanation behind.
+ env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
+ log::info!("cce-terminal starting (pid {})", std::process::id());
cce_ui::engine::run::<TerminalApp>();
+ log::info!("cce-terminal event loop returned; exiting");
}
#[cfg(test)]