{ pkgs, ... }: { # REF: https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/yazi.toml file = (pkgs.formats.toml { }).generate "YaziYaziConfig" { manager = { # linemode = "mtime"; mouse_events = [ ]; ratio = [ 1 4 3 ]; scrolloff = 1; show_hidden = false; show_symlink = true; sort_by = "natural"; sort_dir_first = true; sort_sensitive = true; sort_translit = true; }; preview = { # image_filter = "triangle"; image_filter = "lanczos3"; image_quality = 80; }; opener = let openWith = app: "${app} \"$@\""; in { default = [{ desc = "Default"; orphan = true; run = openWith "xdg-open"; }]; archive = [{ desc = "Archive"; run = openWith "archive"; }]; archive_fast = [{ desc = "Archive Fast"; run = openWith "archive_fast"; }]; audio = [{ desc = "Audio"; orphan = true; run = openWith "mpv --no-video"; }]; audio_shuffle = [{ desc = "Audio Shuffle"; orphan = true; run = "mpv --no-video --shuffle \"$@\"/**"; }]; browser = [{ desc = "Browser"; orphan = true; run = openWith "firefox-esr"; }]; document = [{ desc = "Document"; orphan = true; run = openWith "onlyoffice-desktopeditors"; }]; hex = [{ desc = "Hex"; block = true; run = openWith "radare2 -c V -w"; }]; picture = [{ desc = "Picture"; orphan = true; run = openWith "loupe"; }]; picture_edit = [{ desc = "Picture Edit"; orphan = true; run = openWith "gimp"; }]; picture_edit_quick = [{ desc = "Picture Quick Edit"; orphan = true; run = openWith "pic_edit"; }]; picture_copy = [{ desc = "Picture Copy"; run = openWith "pic_copy"; }]; mount = [{ desc = "Mount"; run = openWith "fmount"; }]; pdf = [{ desc = "Pdf"; orphan = true; run = openWith "evince"; }]; switch_install = [{ desc = "Switch Install"; run = openWith "switch_install"; }]; steam_run = [{ desc = "Run"; run = openWith "steam-run"; }]; bottle_run = [{ desc = "Run bottle"; run = openWith "btp"; }]; unlock = [{ desc = "Unlock"; block = true; run = openWith "funlock"; }]; text = [{ desc = "Text"; block = true; run = openWith "nvim"; }]; video = [{ desc = "Video"; orphan = true; run = openWith "mpv"; }]; unpack = [{ desc = "Unpack"; run = openWith "unpack"; }]; }; open = { rules = let defaultUse = [ "text" "archive_fast" "hex" ]; mkMime = mime: use: { inherit mime; use = use ++ defaultUse; }; mkName = name: use: { inherit name; use = use ++ defaultUse; }; in [ (mkName "*.xlsx" [ "document" ]) (mkName "*.mka" [ "audio" ]) (mkName "*.nsp" [ "switch_install" ]) (mkName "*.nsz" [ "switch_install" ]) # Use `file -i file.txt` to find file mime type. # Use `xdg-mime query default "text/plain"` to find default app. (mkMime "application/gzip" [ "unpack" ]) (mkMime "application/x-tar" [ "unpack" ]) (mkMime "application/x-xz" [ "unpack" ]) (mkMime "application/zip" [ "unpack" ]) (mkMime "application/x-7z-compressed" [ "unpack" ]) (mkMime "application/x-iso9660-image" [ "mount" ]) (mkMime "application/x-raw-disk-image" [ "unlock" ]) (mkMime "application/pdf" [ "pdf" ]) (mkMime "audio/*" [ "audio" ]) (mkMime "image/*" [ "picture" "picture_copy" "picture_edit" "picture_edit_quick" ]) (mkMime "video/*" [ "video" ]) (mkMime "text/html" [ "browser" ]) (mkMime "application/vnd.openxmlformats-officedocument.*" [ "document" ]) (mkMime "application/x-executable" [ "steam_run" ]) { mime = "inode/directory"; use = [ "archive" "bottle_run" "audio_shuffle" ]; } (mkMime "*" [ ]) ]; }; which = { sort_by = "key"; sort_sensitive = false; }; }; }