mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: add name to opener and show opener's args
This commit is contained in:
parent
ab5ff057c4
commit
6790567279
3 changed files with 25 additions and 11 deletions
|
|
@ -33,7 +33,7 @@ audio = [
|
|||
]
|
||||
fallback = [
|
||||
{ cmd = "open", args = [ "$*" ] },
|
||||
{ cmd = "open", args = [ "-R", "$*" ] },
|
||||
{ display_name = "open in Finder", cmd = "open", args = [ "-R", "$*" ] },
|
||||
]
|
||||
|
||||
[open]
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ use serde::{Deserialize, Deserializer};
|
|||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub struct Opener {
|
||||
pub display_name: Option<String>,
|
||||
pub cmd: String,
|
||||
pub args: Vec<String>,
|
||||
pub block: bool,
|
||||
|
|
@ -15,6 +16,7 @@ impl<'de> Deserialize<'de> for Opener {
|
|||
{
|
||||
#[derive(Deserialize)]
|
||||
pub struct Shadow {
|
||||
pub display_name: Option<String>,
|
||||
pub cmd: String,
|
||||
pub args: Vec<String>,
|
||||
#[serde(default)]
|
||||
|
|
@ -26,6 +28,12 @@ impl<'de> Deserialize<'de> for Opener {
|
|||
let shadow = Shadow::deserialize(deserializer)?;
|
||||
|
||||
let spread = shadow.args.contains(&"$*".to_string());
|
||||
Ok(Self { cmd: shadow.cmd, args: shadow.args, block: shadow.block, spread })
|
||||
Ok(Self {
|
||||
display_name: shadow.display_name,
|
||||
cmd: shadow.cmd,
|
||||
args: shadow.args,
|
||||
block: shadow.block,
|
||||
spread
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,7 +163,12 @@ impl Manager {
|
|||
|
||||
let result = emit!(Select(SelectOpt {
|
||||
title: "Open with:".to_string(),
|
||||
items: openers.iter().map(|o| o.cmd.clone()).collect(),
|
||||
items: openers.iter().map(|o| {
|
||||
return if let Some(display_name) = &o.display_name {
|
||||
display_name.clone()
|
||||
} else {
|
||||
format!("{} {}", o.cmd, o.args.join(" "))
|
||||
}}).collect(),
|
||||
position: Position::Hovered,
|
||||
}));
|
||||
if let Ok(choice) = result.await {
|
||||
|
|
@ -233,6 +238,7 @@ impl Manager {
|
|||
emit!(Open(
|
||||
vec![(cmd.into(), "".to_string())],
|
||||
Some(Opener {
|
||||
display_name: None,
|
||||
cmd: "sh".to_string(),
|
||||
args: vec!["-c".to_string(), "$0".to_string()],
|
||||
block,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue