diff --git a/config/preset/yazi.toml b/config/preset/yazi.toml index c7357c14..d9584bce 100644 --- a/config/preset/yazi.toml +++ b/config/preset/yazi.toml @@ -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 = [ "$*" ] }, - { cmd = "open", args = [ "-R", "$*" ] }, + { cmd = "open", args = [ "$*" ], display_name = "Open" }, + { cmd = "open", args = [ "-R", "$*" ], display_name = "Reveal in Finder" }, ] [open] diff --git a/config/src/open/opener.rs b/config/src/open/opener.rs index 568fec03..29e7ad5e 100644 --- a/config/src/open/opener.rs +++ b/config/src/open/opener.rs @@ -2,10 +2,11 @@ use serde::{Deserialize, Deserializer}; #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Opener { - pub cmd: String, - pub args: Vec, - pub block: bool, - pub spread: bool, + pub cmd: String, + pub args: Vec, + pub block: bool, + pub display_name: String, + pub spread: bool, } impl<'de> Deserialize<'de> for Opener { @@ -15,17 +16,20 @@ impl<'de> Deserialize<'de> for Opener { { #[derive(Deserialize)] pub struct Shadow { - pub cmd: String, - pub args: Vec, + pub cmd: String, + pub args: Vec, #[serde(default)] - pub block: bool, + pub block: bool, + pub display_name: Option, #[serde(skip)] - pub spread: bool, + 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 { cmd: shadow.cmd, args: shadow.args, block: shadow.block, spread }) + + Ok(Self { cmd: shadow.cmd, args: shadow.args, block: shadow.block, display_name, spread }) } } diff --git a/core/src/manager/manager.rs b/core/src/manager/manager.rs index 2ac229de..3b047f16 100644 --- a/core/src/manager/manager.rs +++ b/core/src/manager/manager.rs @@ -163,7 +163,7 @@ 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| o.display_name.clone()).collect(), position: Position::Hovered, })); if let Ok(choice) = result.await { @@ -236,6 +236,7 @@ impl Manager { cmd: "sh".to_string(), args: vec!["-c".to_string(), "$0".to_string()], block, + display_name: Default::default(), spread: false, }) )); diff --git a/cspell.json b/cspell.json index 689c4b3c..120b2a9b 100644 --- a/cspell.json +++ b/cspell.json @@ -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"]}