This commit is contained in:
sxyazi 2023-08-07 21:00:10 +08:00
parent 6790567279
commit 1f1a9ff9cd
No known key found for this signature in database
4 changed files with 16 additions and 25 deletions

View file

@ -10,30 +10,30 @@ max_height = 900
[opener] [opener]
folder = [ folder = [
{ cmd = "open", args = [ "-R", "$*" ] }, { cmd = "open", args = [ "-R", "$*" ], display_name = "Reveal in Finder" },
{ cmd = "vim", args = [ "$*" ] }, { cmd = "vim", args = [ "$*" ] },
] ]
archive = [ archive = [
{ cmd = "unar", args = [ "$0" ] }, { cmd = "unar", args = [ "$0" ], display_name = "Extract here" },
] ]
text = [ text = [
{ cmd = "vim", args = [ "$*" ], block = true }, { cmd = "vim", args = [ "$*" ], block = true },
] ]
image = [ image = [
{ cmd = "open", args = [ "$*" ] }, { cmd = "open", args = [ "$*" ], display_name = "Open" },
{ cmd = "exiftool", args = [ "$0" ], block = true }, { cmd = "exiftool", args = [ "$0" ], block = true, display_name = "Show EXIF" },
] ]
video = [ video = [
{ cmd = "mpv", args = [ "$*" ] }, { cmd = "mpv", args = [ "$*" ] },
{ cmd = "mediainfo", args = [ "$0" ], block = true }, { cmd = "mediainfo", args = [ "$0" ], block = true, display_name = "Show media info" },
] ]
audio = [ audio = [
{ cmd = "mpv", args = [ "$*" ] }, { cmd = "mpv", args = [ "$*" ] },
{ cmd = "mediainfo", args = [ "$0" ], block = true }, { cmd = "mediainfo", args = [ "$0" ], block = true, display_name = "Show media info" },
] ]
fallback = [ fallback = [
{ cmd = "open", args = [ "$*" ] }, { cmd = "open", args = [ "$*" ], display_name = "Open" },
{ display_name = "open in Finder", cmd = "open", args = [ "-R", "$*" ] }, { cmd = "open", args = [ "-R", "$*" ], display_name = "Reveal in Finder" },
] ]
[open] [open]

View file

@ -2,10 +2,10 @@ 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,
pub display_name: String,
pub spread: bool, pub spread: bool,
} }
@ -16,24 +16,20 @@ 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)]
pub block: bool, pub block: bool,
pub display_name: Option<String>,
#[serde(skip)] #[serde(skip)]
pub spread: bool, pub spread: bool,
} }
let shadow = Shadow::deserialize(deserializer)?; let shadow = Shadow::deserialize(deserializer)?;
let display_name = if let Some(s) = shadow.display_name { s } else { shadow.cmd.clone() };
let spread = shadow.args.contains(&"$*".to_string()); let spread = shadow.args.contains(&"$*".to_string());
Ok(Self {
display_name: shadow.display_name, Ok(Self { cmd: shadow.cmd, args: shadow.args, block: shadow.block, display_name, spread })
cmd: shadow.cmd,
args: shadow.args,
block: shadow.block,
spread
})
} }
} }

View file

@ -163,12 +163,7 @@ 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| { items: openers.iter().map(|o| o.display_name.clone()).collect(),
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 {
@ -238,10 +233,10 @@ 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,
display_name: Default::default(),
spread: false, spread: false,
}) })
)); ));

View file

@ -1 +1 @@
{"language":"en","flagWords":[],"words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp"," Überzug"," Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler","prebuild","singlefile","jpegopt"],"version":"0.2"} {"version":"0.2","flagWords":[],"language":"en","words":["Punct","KEYMAP","splitn","crossterm","YAZI","unar","peekable","ratatui","syntect","pbpaste","pbcopy","ffmpegthumbnailer","oneshot","Posix","Lsar","XADDOS","zoxide","cands","Deque","precache","imageops","IFBLK","IFCHR","IFDIR","IFIFO","IFLNK","IFMT","IFSOCK","IRGRP","IROTH","IRUSR","ISGID","ISUID","ISVTX","IWGRP","IWOTH","IWUSR","IXGRP","IXOTH","IXUSR","libc","winsize","TIOCGWINSZ","xpixel","ypixel","ioerr","appender","Catppuccin","macchiato","gitmodules","Dotfiles","bashprofile","vimrc","flac","webp","exiftool","mediainfo","ripgrep","nvim","indexmap","indexmap","unwatch","canonicalize","serde","fsevent","Ueberzug","iterm","wezterm","sixel","chafa","ueberzugpp"," Überzug"," Überzug","Konsole","Alacritty","Überzug","pkgs","paru","unarchiver","pdftoppm","poppler","prebuild","singlefile","jpegopt","EXIF"]}