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 = [
|
fallback = [
|
||||||
{ cmd = "open", args = [ "$*" ] },
|
{ cmd = "open", args = [ "$*" ] },
|
||||||
{ cmd = "open", args = [ "-R", "$*" ] },
|
{ display_name = "open in Finder", cmd = "open", args = [ "-R", "$*" ] },
|
||||||
]
|
]
|
||||||
|
|
||||||
[open]
|
[open]
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use serde::{Deserialize, Deserializer};
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
pub struct Opener {
|
pub struct Opener {
|
||||||
|
pub display_name: Option<String>,
|
||||||
pub cmd: String,
|
pub cmd: String,
|
||||||
pub args: Vec<String>,
|
pub args: Vec<String>,
|
||||||
pub block: bool,
|
pub block: bool,
|
||||||
|
|
@ -15,6 +16,7 @@ impl<'de> Deserialize<'de> for Opener {
|
||||||
{
|
{
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
pub struct Shadow {
|
pub struct Shadow {
|
||||||
|
pub display_name: Option<String>,
|
||||||
pub cmd: String,
|
pub cmd: String,
|
||||||
pub args: Vec<String>,
|
pub args: Vec<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
@ -26,6 +28,12 @@ impl<'de> Deserialize<'de> for Opener {
|
||||||
let shadow = Shadow::deserialize(deserializer)?;
|
let shadow = Shadow::deserialize(deserializer)?;
|
||||||
|
|
||||||
let spread = shadow.args.contains(&"$*".to_string());
|
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 {
|
let result = emit!(Select(SelectOpt {
|
||||||
title: "Open with:".to_string(),
|
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,
|
position: Position::Hovered,
|
||||||
}));
|
}));
|
||||||
if let Ok(choice) = result.await {
|
if let Ok(choice) = result.await {
|
||||||
|
|
@ -233,6 +238,7 @@ impl Manager {
|
||||||
emit!(Open(
|
emit!(Open(
|
||||||
vec![(cmd.into(), "".to_string())],
|
vec![(cmd.into(), "".to_string())],
|
||||||
Some(Opener {
|
Some(Opener {
|
||||||
|
display_name: None,
|
||||||
cmd: "sh".to_string(),
|
cmd: "sh".to_string(),
|
||||||
args: vec!["-c".to_string(), "$0".to_string()],
|
args: vec!["-c".to_string(), "$0".to_string()],
|
||||||
block,
|
block,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue