mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
fix: graceful shutdown
This commit is contained in:
parent
78b98a98c3
commit
f168dbb1e3
4 changed files with 27 additions and 23 deletions
|
|
@ -46,7 +46,7 @@ impl Ueberzug {
|
||||||
tx.send(Some((path.to_path_buf(), rect)))?;
|
tx.send(Some((path.to_path_buf(), rect)))?;
|
||||||
Adaptor::shown_store(rect, (0, 0));
|
Adaptor::shown_store(rect, (0, 0));
|
||||||
} else {
|
} else {
|
||||||
bail!("uninitialized ueberzug");
|
bail!("uninitialized ueberzugpp");
|
||||||
}
|
}
|
||||||
|
|
||||||
let path = path.to_owned();
|
let path = path.to_owned();
|
||||||
|
|
@ -66,12 +66,13 @@ impl Ueberzug {
|
||||||
if let Some(tx) = &*DEMON {
|
if let Some(tx) = &*DEMON {
|
||||||
Ok(tx.send(None)?)
|
Ok(tx.send(None)?)
|
||||||
} else {
|
} else {
|
||||||
bail!("uninitialized ueberzug");
|
bail!("uninitialized ueberzugpp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_demon(adaptor: Adaptor) -> Result<Child> {
|
fn create_demon(adaptor: Adaptor) -> Result<Child> {
|
||||||
let result = Command::new("ueberzug")
|
// TODO: demon
|
||||||
|
let result = Command::new("ueberzugpp")
|
||||||
.args(["layer", "-so", &adaptor.to_string()])
|
.args(["layer", "-so", &adaptor.to_string()])
|
||||||
.kill_on_drop(true)
|
.kill_on_drop(true)
|
||||||
.stdin(Stdio::piped())
|
.stdin(Stdio::piped())
|
||||||
|
|
@ -79,7 +80,7 @@ impl Ueberzug {
|
||||||
.spawn();
|
.spawn();
|
||||||
|
|
||||||
if let Err(ref e) = result {
|
if let Err(ref e) = result {
|
||||||
warn!("ueberzug spawning failed: {}", e);
|
warn!("ueberzugpp spawning failed: {e}");
|
||||||
}
|
}
|
||||||
Ok(result?)
|
Ok(result?)
|
||||||
}
|
}
|
||||||
|
|
@ -98,9 +99,9 @@ impl Ueberzug {
|
||||||
async fn send_command(child: &mut Child, cmd: Option<(PathBuf, Rect)>) -> Result<()> {
|
async fn send_command(child: &mut Child, cmd: Option<(PathBuf, Rect)>) -> Result<()> {
|
||||||
let stdin = child.stdin.as_mut().unwrap();
|
let stdin = child.stdin.as_mut().unwrap();
|
||||||
if let Some((path, rect)) = cmd {
|
if let Some((path, rect)) = cmd {
|
||||||
debug!("ueberzug rect before adjustment: {:?}", rect);
|
debug!("ueberzugpp rect before adjustment: {:?}", rect);
|
||||||
let rect = Self::adjust_rect(rect);
|
let rect = Self::adjust_rect(rect);
|
||||||
debug!("ueberzug rect after adjustment: {:?}", rect);
|
debug!("ueberzugpp rect after adjustment: {:?}", rect);
|
||||||
|
|
||||||
let s = format!(
|
let s = format!(
|
||||||
r#"{{"action":"add","identifier":"yazi","x":{},"y":{},"max_width":{},"max_height":{},"path":"{}"}}{}"#,
|
r#"{{"action":"add","identifier":"yazi","x":{},"y":{},"max_width":{},"max_height":{},"path":"{}"}}{}"#,
|
||||||
|
|
@ -111,10 +112,10 @@ impl Ueberzug {
|
||||||
path.to_string_lossy(),
|
path.to_string_lossy(),
|
||||||
"\n"
|
"\n"
|
||||||
);
|
);
|
||||||
debug!("ueberzug command: {}", s);
|
debug!("ueberzugpp command: {}", s);
|
||||||
stdin.write_all(s.as_bytes()).await?;
|
stdin.write_all(s.as_bytes()).await?;
|
||||||
} else {
|
} else {
|
||||||
debug!("ueberzug command: remove");
|
debug!("ueberzugpp command: remove");
|
||||||
stdin
|
stdin
|
||||||
.write_all(format!(r#"{{"action":"remove","identifier":"yazi"}}{}"#, "\n").as_bytes())
|
.write_all(format!(r#"{{"action":"remove","identifier":"yazi"}}{}"#, "\n").as_bytes())
|
||||||
.await?;
|
.await?;
|
||||||
|
|
|
||||||
|
|
@ -74,8 +74,11 @@ impl Boot {
|
||||||
println!(" WAYLAND_DISPLAY: {:?}", env::var_os("WAYLAND_DISPLAY"));
|
println!(" WAYLAND_DISPLAY: {:?}", env::var_os("WAYLAND_DISPLAY"));
|
||||||
println!(" DISPLAY: {:?}", env::var_os("DISPLAY"));
|
println!(" DISPLAY: {:?}", env::var_os("DISPLAY"));
|
||||||
|
|
||||||
println!("\nUeberzug");
|
println!("\nUeberzug++");
|
||||||
println!(" Version: {:?}", std::process::Command::new("ueberzug").arg("--version").output());
|
println!(
|
||||||
|
" Version: {:?}",
|
||||||
|
std::process::Command::new("ueberzugpp").arg("--version").output()
|
||||||
|
);
|
||||||
|
|
||||||
println!("\nWSL");
|
println!("\nWSL");
|
||||||
println!(
|
println!(
|
||||||
|
|
|
||||||
|
|
@ -106,18 +106,18 @@ keymap = [
|
||||||
{ on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" },
|
{ on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" },
|
||||||
|
|
||||||
# Sorting
|
# Sorting
|
||||||
{ on = [ ",", "m" ], run = "sort modified --dir-first", desc = "Sort by modified time" },
|
{ on = [ ",", "m" ], run = "sort modified", desc = "Sort by modified time" },
|
||||||
{ on = [ ",", "M" ], run = "sort modified --reverse --dir-first", desc = "Sort by modified time (reverse)" },
|
{ on = [ ",", "M" ], run = "sort modified --reverse", desc = "Sort by modified time (reverse)" },
|
||||||
{ on = [ ",", "c" ], run = "sort created --dir-first", desc = "Sort by created time" },
|
{ on = [ ",", "c" ], run = "sort created", desc = "Sort by created time" },
|
||||||
{ on = [ ",", "C" ], run = "sort created --reverse --dir-first", desc = "Sort by created time (reverse)" },
|
{ on = [ ",", "C" ], run = "sort created --reverse", desc = "Sort by created time (reverse)" },
|
||||||
{ on = [ ",", "e" ], run = "sort extension --dir-first", desc = "Sort by extension" },
|
{ on = [ ",", "e" ], run = "sort extension", desc = "Sort by extension" },
|
||||||
{ on = [ ",", "E" ], run = "sort extension --reverse --dir-first", desc = "Sort by extension (reverse)" },
|
{ on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
|
||||||
{ on = [ ",", "a" ], run = "sort alphabetical --dir-first", desc = "Sort alphabetically" },
|
{ on = [ ",", "a" ], run = "sort alphabetical", desc = "Sort alphabetically" },
|
||||||
{ on = [ ",", "A" ], run = "sort alphabetical --reverse --dir-first", desc = "Sort alphabetically (reverse)" },
|
{ on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" },
|
||||||
{ on = [ ",", "n" ], run = "sort natural --dir-first", desc = "Sort naturally" },
|
{ on = [ ",", "n" ], run = "sort natural", desc = "Sort naturally" },
|
||||||
{ on = [ ",", "N" ], run = "sort natural --reverse --dir-first", desc = "Sort naturally (reverse)" },
|
{ on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" },
|
||||||
{ on = [ ",", "s" ], run = "sort size --dir-first", desc = "Sort by size" },
|
{ on = [ ",", "s" ], run = "sort size", desc = "Sort by size" },
|
||||||
{ on = [ ",", "S" ], run = "sort size --reverse --dir-first", desc = "Sort by size (reverse)" },
|
{ on = [ ",", "S" ], run = "sort size --reverse", desc = "Sort by size (reverse)" },
|
||||||
|
|
||||||
# Tabs
|
# Tabs
|
||||||
{ on = [ "t" ], run = "tab_create --current", desc = "Create a new tab using the current path" },
|
{ on = [ "t" ], run = "tab_create --current", desc = "Create a new tab using the current path" },
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ impl Which {
|
||||||
};
|
};
|
||||||
|
|
||||||
if opt.tx.try_send(opt.idx).is_err() {
|
if opt.tx.try_send(opt.idx).is_err() {
|
||||||
error!("callback: send error");
|
error!("which callback: send error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue