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]
folder = [
{ cmd = "open", args = [ "-R", "$*" ] },
{ cmd = "open", args = [ "-R", "$*" ], display_name = "Reveal in Finder" },
{ cmd = "vim", args = [ "$*" ] },
]
archive = [
{ cmd = "unar", args = [ "$0" ] },
{ cmd = "unar", args = [ "$0" ], display_name = "Extract here" },
]
text = [
{ cmd = "vim", args = [ "$*" ], block = true },
]
image = [
{ cmd = "open", args = [ "$*" ] },
{ cmd = "exiftool", args = [ "$0" ], block = true },
{ cmd = "open", args = [ "$*" ], display_name = "Open" },
{ cmd = "exiftool", args = [ "$0" ], block = true, display_name = "Show EXIF" },
]
video = [
{ cmd = "mpv", args = [ "$*" ] },
{ cmd = "mediainfo", args = [ "$0" ], block = true },
{ cmd = "mediainfo", args = [ "$0" ], block = true, display_name = "Show media info" },
]
audio = [
{ cmd = "mpv", args = [ "$*" ] },
{ cmd = "mediainfo", args = [ "$0" ], block = true },
{ cmd = "mediainfo", args = [ "$0" ], block = true, display_name = "Show media info" },
]
fallback = [
{ cmd = "open", args = [ "$*" ] },
{ display_name = "open in Finder", cmd = "open", args = [ "-R", "$*" ] },
{ cmd = "open", args = [ "$*" ], display_name = "Open" },
{ cmd = "open", args = [ "-R", "$*" ], display_name = "Reveal in Finder" },
]
[open]

View file

@ -2,10 +2,10 @@ 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,
pub display_name: String,
pub spread: bool,
}
@ -16,24 +16,20 @@ 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)]
pub block: bool,
pub display_name: Option<String>,
#[serde(skip)]
pub spread: bool,
}
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());
Ok(Self {
display_name: shadow.display_name,
cmd: shadow.cmd,
args: shadow.args,
block: shadow.block,
spread
})
Ok(Self { cmd: shadow.cmd, args: shadow.args, block: shadow.block, display_name, spread })
}
}

View file

@ -163,12 +163,7 @@ impl Manager {
let result = emit!(Select(SelectOpt {
title: "Open with:".to_string(),
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(),
items: openers.iter().map(|o| o.display_name.clone()).collect(),
position: Position::Hovered,
}));
if let Ok(choice) = result.await {
@ -238,10 +233,10 @@ 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,
display_name: Default::default(),
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"]}