sxyazi/yazi · error
uninitialized ueberzugpp
Error message
uninitialized ueberzugpp
What it means
The ueberzugpp daemon channel (`DEMON`) was never initialized when `image_show` was called, meaning the background task holding the child process and its sender was not started. The guard is a `let-else` on the global `DEMON` slot; the fault is calling show before the driver's init ran (or after it failed).
Source
Thrown at yazi-adapter/src/drivers/ueberzug.rs:49
while let Some(cmd) = rx.recv().await {
let exit = child.as_mut().and_then(|c| c.try_wait().ok());
if exit != Some(None) {
child = None;
}
if child.is_none() {
child = Self::create_demon(driver).ok();
}
if let Some(c) = &mut child {
Self::send_command(driver, c, cmd).await.ok();
}
}
});
DEMON.init(Some(tx))
}
pub(super) async fn image_show(path: PathBuf, max: Rect) -> Result<Rect> {
let Some(tx) = &*DEMON else {
bail!("uninitialized ueberzugpp");
};
let (w, h, path) = tokio::task::spawn_blocking(move || {
ImageReader::open(&path)?.with_guessed_format()?.into_dimensions().map(|(w, h)| (w, h, path))
})
.await??;
let area = Dimension::cell_size()
.map(|(cw, ch)| Rect {
x: max.x,
y: max.y,
width: max.width.min((w.min(YAZI.preview.max_width as _) as f64 / cw).ceil() as _),
height: max.height.min((h.min(YAZI.preview.max_height as _) as f64 / ch).ceil() as _),
})
.unwrap_or(max);
tx.send(Some((path, area)))?;
ADAPTOR.shown_store(area);View on GitHub (pinned to 5f901b886b)
Solutions
- Ensure ueberzug is enabled in the adapter layer before showing images.
- Check that ueberzugpp is installed and the daemon task spawned successfully at startup.
- Fall back to another preview adapter when the daemon is unavailable.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at yazi-adapter/src/drivers/ueberzug.rs:49 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sxyazi/yazi@5f901b886b (2026-09-02).
Data as JSON: /api/errors/28df917ca0715498.
Report an issue: GitHub.