|
|
@@ -11,9 +11,9 @@ impl Icons {
|
|
|
const BINARY: char = '\u{eae8}'; //
|
|
|
const BOOK: char = '\u{e28b}'; //
|
|
|
const CALENDAR: char = '\u{eab0}'; //
|
|
|
+ const CLOCK: char = '\u{f43a}'; //
|
|
|
const COMPRESSED: char = '\u{f410}'; //
|
|
|
const CONFIG: char = '\u{e615}'; //
|
|
|
- const CONFIG_FOLDER: char = '\u{e5fc}'; //
|
|
|
const CSS3: char = '\u{e749}'; //
|
|
|
const DATABASE: char = '\u{f1c0}'; //
|
|
|
const DIFF: char = '\u{f440}'; //
|
|
|
@@ -21,115 +21,275 @@ impl Icons {
|
|
|
const DOCKER: char = '\u{e650}'; //
|
|
|
const DOCUMENT: char = '\u{f1c2}'; //
|
|
|
const EMACS: char = '\u{e632}'; //
|
|
|
+ const FILE: char = '\u{f15b}'; //
|
|
|
+ const FILE_OUTLINE: char = '\u{f016}'; //
|
|
|
+ const FOLDER: char = '\u{e5ff}'; //
|
|
|
+ const FOLDER_CONFIG: char = '\u{e5fc}'; //
|
|
|
+ const FOLDER_GIT: char = '\u{e5fb}'; //
|
|
|
+ const FOLDER_GITHUB: char = '\u{e5fd}'; //
|
|
|
+ const FOLDER_HIDDEN: char = '\u{f179e}'; //
|
|
|
+ const FOLDER_KEY: char = '\u{f08ac}'; //
|
|
|
+ const FOLDER_NPM: char = '\u{e5fa}'; //
|
|
|
+ const FOLDER_OPEN: char = '\u{f115}'; //
|
|
|
const FONT: char = '\u{f031}'; //
|
|
|
const GIST_SECRET: char = '\u{eafa}'; //
|
|
|
const GIT: char = '\u{f1d3}'; //
|
|
|
const GRADLE: char = '\u{e660}'; //
|
|
|
const GRUNT: char = '\u{e611}'; //
|
|
|
const GULP: char = '\u{e610}'; //
|
|
|
- const HEADER: char = '\u{f0fd}'; //
|
|
|
const HTML5: char = '\u{f13b}'; //
|
|
|
const IMAGE: char = '\u{f1c5}'; //
|
|
|
const INTELLIJ: char = '\u{e7b5}'; //
|
|
|
+ const JSON: char = '\u{e60b}'; //
|
|
|
const KEY: char = '\u{eb11}'; //
|
|
|
const KEYPASS: char = '\u{f23e}'; //
|
|
|
- const JSON: char = '\u{e60b}'; //
|
|
|
const LANG_ASSEMBLY: char = '\u{e637}'; //
|
|
|
const LANG_C: char = '\u{e61e}'; //
|
|
|
const LANG_CPP: char = '\u{e61d}'; //
|
|
|
const LANG_CSHARP: char = '\u{f031b}'; //
|
|
|
const LANG_ELIXIR: char = '\u{e62d}'; //
|
|
|
const LANG_FSHARP: char = '\u{e7a7}'; //
|
|
|
- const LANG_GO: char = '\u{e724}'; //
|
|
|
+ const LANG_GO: char = '\u{e65e}'; //
|
|
|
const LANG_HASKELL: char = '\u{e777}'; //
|
|
|
const LANG_JAVA: char = '\u{e256}'; //
|
|
|
const LANG_JAVASCRIPT: char = '\u{e74e}'; //
|
|
|
+ const LANG_KOTLIN: char = '\u{e634}'; //
|
|
|
const LANG_OCAML: char = '\u{e67a}'; //
|
|
|
- const LANG_PERL: char = '\u{e769}'; //
|
|
|
+ const LANG_PERL: char = '\u{e67e}'; //
|
|
|
const LANG_PHP: char = '\u{e73d}'; //
|
|
|
const LANG_PYTHON: char = '\u{e606}'; //
|
|
|
const LANG_R: char = '\u{f25d}'; //
|
|
|
const LANG_RUBY: char = '\u{e21e}'; //
|
|
|
const LANG_RUBYRAILS: char = '\u{e73b}'; //
|
|
|
const LANG_RUST: char = '\u{e7a8}'; //
|
|
|
+ const LANG_SASS: char = '\u{e603}'; //
|
|
|
const LANG_STYLUS: char = '\u{e600}'; //
|
|
|
const LANG_TEX: char = '\u{e69b}'; //
|
|
|
const LANG_TYPESCRIPT: char = '\u{e628}'; //
|
|
|
- const LOCK: char = '\u{f023}'; //
|
|
|
const LICENSE: char = '\u{f02d}'; //
|
|
|
+ const LOCK: char = '\u{f023}'; //
|
|
|
+ const MAKE: char = '\u{e673}'; //
|
|
|
const MARKDOWN: char = '\u{f48a}'; //
|
|
|
const MUSTACHE: char = '\u{e60f}'; //
|
|
|
const NODEJS: char = '\u{e718}'; //
|
|
|
const NPM: char = '\u{e71e}'; //
|
|
|
- const OS_APPLE: char = '\u{f179}'; //
|
|
|
const OS_ANDROID: char = '\u{e70e}'; //
|
|
|
+ const OS_APPLE: char = '\u{f179}'; //
|
|
|
const OS_LINUX: char = '\u{f17c}'; //
|
|
|
const OS_WINDOWS: char = '\u{f17a}'; //
|
|
|
const OS_WINDOWS_CMD: char = '\u{ebc4}'; //
|
|
|
+ const PLAYLIST: char = '\u{f0cb9}'; //
|
|
|
const POWERSHELL: char = '\u{ebc7}'; //
|
|
|
- const REACT: char = '\u{e7ba}'; //
|
|
|
+ const PRIVATE_KEY: char = '\u{f0306}'; //
|
|
|
+ const PUBLIC_KEY: char = '\u{f0dd6}'; //
|
|
|
const RAZOR: char = '\u{f1fa}'; //
|
|
|
+ const REACT: char = '\u{e7ba}'; //
|
|
|
const SHEET: char = '\u{f1c3}'; //
|
|
|
- const SHELL: char = '\u{f489}'; //
|
|
|
+ const SHELL_CMD: char = '\u{f489}'; //
|
|
|
+ const SHELL: char = '\u{f1183}'; //
|
|
|
+ const SHIELD_CHECK: char = '\u{f0565}'; //
|
|
|
+ const SHIELD_KEY: char = '\u{f0bc4}'; //
|
|
|
+ const SHIELD_LOCK: char = '\u{f099d}'; //
|
|
|
+ const SIGNED_FILE: char = '\u{f19c3}'; //
|
|
|
const SLIDE: char = '\u{f1c4}'; //
|
|
|
+ const SUBLIME: char = '\u{e7aa}'; //
|
|
|
+ const SUBTITLE: char = '\u{f0a16}'; //
|
|
|
+ const TERRAFORM: char = '\u{f1062}'; //
|
|
|
const TEXT: char = '\u{f15c}'; //
|
|
|
const UNITY: char = '\u{e721}'; //
|
|
|
+ const VECTOR: char = '\u{f0559}'; //
|
|
|
const VIDEO: char = '\u{f03d}'; //
|
|
|
const VIM: char = '\u{e7c5}'; //
|
|
|
+ const WRENCH: char = '\u{f0ad}'; //
|
|
|
const XML: char = '\u{f05c0}'; //
|
|
|
- const YAML: char = '\u{f481}'; // - Find better icon
|
|
|
+ const YAML: char = '\u{e6a8}'; //
|
|
|
+ const YARN: char = '\u{e6a7}'; //
|
|
|
}
|
|
|
|
|
|
-/// Mapping from full filenames to file type. This mapping should also contain all the "dot"
|
|
|
-/// files/directories that have a custom icon.
|
|
|
+/// Mapping from full filenames to directory icon. This mapping should contain
|
|
|
+/// all the directories that have a custom icon.
|
|
|
+const DIRECTORY_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
+ ".config" => Icons::FOLDER_CONFIG, //
|
|
|
+ ".git" => Icons::FOLDER_GIT, //
|
|
|
+ ".github" => Icons::FOLDER_GITHUB, //
|
|
|
+ ".npm" => Icons::FOLDER_NPM, //
|
|
|
+ ".ssh" => Icons::FOLDER_KEY, //
|
|
|
+ ".Trash" => '\u{f1f8}', //
|
|
|
+ "cron.d" => Icons::FOLDER_CONFIG, //
|
|
|
+ "cron.daily" => Icons::FOLDER_CONFIG, //
|
|
|
+ "cron.hourly" => Icons::FOLDER_CONFIG, //
|
|
|
+ "cron.monthly" => Icons::FOLDER_CONFIG, //
|
|
|
+ "cron.weekly" => Icons::FOLDER_CONFIG, //
|
|
|
+ "Desktop" => '\u{f108}', //
|
|
|
+ "Downloads" => '\u{f024d}', //
|
|
|
+ "config" => Icons::FOLDER_CONFIG, //
|
|
|
+ "etc" => Icons::FOLDER_CONFIG, //
|
|
|
+ "hidden" => Icons::FOLDER_HIDDEN, //
|
|
|
+ "include" => Icons::FOLDER_CONFIG, //
|
|
|
+ "Mail" => '\u{f01f0}', //
|
|
|
+ "Movies" => '\u{f0fce}', //
|
|
|
+ "Music" => '\u{f1359}', //
|
|
|
+ "node_modules" => Icons::FOLDER_NPM, //
|
|
|
+ "npm_cache" => Icons::FOLDER_NPM, //
|
|
|
+ "pam.d" => Icons::FOLDER_KEY, //
|
|
|
+ "Pictures" => '\u{f024f}', //
|
|
|
+ "ssh" => Icons::FOLDER_KEY, //
|
|
|
+ "sudoers.d" => Icons::FOLDER_KEY, //
|
|
|
+ "Videos" => '\u{f03d}', //
|
|
|
+ "xbps.d" => Icons::FOLDER_CONFIG, //
|
|
|
+ "xorg.conf.d" => Icons::FOLDER_CONFIG, //
|
|
|
+};
|
|
|
+
|
|
|
+/// Mapping from full filenames to file icon. This mapping should also contain
|
|
|
+/// all the "dot" files that have a custom icon.
|
|
|
const FILENAME_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
".atom" => '\u{e764}', //
|
|
|
- ".bashprofile" => Icons::CONFIG, //
|
|
|
- ".bashrc" => Icons::SHELL, //
|
|
|
+ ".bashrc" => Icons::SHELL, //
|
|
|
+ ".bash_history" => Icons::SHELL, //
|
|
|
+ ".bash_logout" => Icons::SHELL, //
|
|
|
+ ".bash_profile" => Icons::SHELL, //
|
|
|
+ ".CFUserTextEncoding" => Icons::OS_APPLE, //
|
|
|
+ ".clang-format" => Icons::CONFIG, //
|
|
|
+ ".cshrc" => Icons::SHELL, //
|
|
|
+ ".DS_Store" => Icons::OS_APPLE, //
|
|
|
".emacs" => Icons::EMACS, //
|
|
|
- ".git" => Icons::GIT, //
|
|
|
".gitattributes" => Icons::GIT, //
|
|
|
".gitconfig" => Icons::GIT, //
|
|
|
- ".github" => '\u{f408}', //
|
|
|
".gitignore" => Icons::GIT, //
|
|
|
".gitignore_global" => Icons::GIT, //
|
|
|
+ ".gitlab-ci.yml" => '\u{f296}', //
|
|
|
".gitmodules" => Icons::GIT, //
|
|
|
+ ".htaccess" => Icons::CONFIG, //
|
|
|
+ ".htpasswd" => Icons::CONFIG, //
|
|
|
".idea" => Icons::INTELLIJ, //
|
|
|
+ ".ideavimrc" => Icons::VIM, //
|
|
|
+ ".inputrc" => Icons::CONFIG, //
|
|
|
+ ".kshrc" => Icons::SHELL, //
|
|
|
+ ".login" => Icons::SHELL, //
|
|
|
+ ".logout" => Icons::SHELL, //
|
|
|
+ ".node_repl_history" => Icons::NODEJS, //
|
|
|
+ ".npmignore" => Icons::NPM, //
|
|
|
+ ".npmrc" => Icons::NPM, //
|
|
|
+ ".profile" => Icons::SHELL, //
|
|
|
+ ".python_history" => Icons::LANG_PYTHON, //
|
|
|
+ ".rustfmt.toml" => Icons::LANG_RUST, //
|
|
|
".rvm" => Icons::LANG_RUBY, //
|
|
|
- ".Trash" => '\u{f1f8}', //
|
|
|
+ ".rvmrc" => Icons::LANG_RUBY, //
|
|
|
+ ".tcshrc" => Icons::SHELL, //
|
|
|
+ ".viminfo" => Icons::VIM, //
|
|
|
".vimrc" => Icons::VIM, //
|
|
|
- ".vscode" => '\u{f0a1e}', //
|
|
|
- ".zshrc" => Icons::SHELL, //
|
|
|
- "bin" => Icons::CONFIG_FOLDER, //
|
|
|
+ ".Xauthority" => Icons::CONFIG, //
|
|
|
+ ".xinitrc" => Icons::CONFIG, //
|
|
|
+ ".Xresources" => Icons::CONFIG, //
|
|
|
+ ".yarnrc" => Icons::YARN, //
|
|
|
+ ".zlogin" => Icons::SHELL, //
|
|
|
+ ".zlogout" => Icons::SHELL, //
|
|
|
+ ".zprofile" => Icons::SHELL, //
|
|
|
+ ".zshenv" => Icons::SHELL, //
|
|
|
+ ".zshrc" => Icons::SHELL, //
|
|
|
+ ".zsh_history" => Icons::SHELL, //
|
|
|
+ ".zsh_sessions" => Icons::SHELL, //
|
|
|
+ "._DS_Store" => Icons::OS_APPLE, //
|
|
|
+ "a.out" => Icons::SHELL_CMD, //
|
|
|
+ "authorized_keys" => '\u{f08c0}', //
|
|
|
+ "bashrc" => Icons::SHELL, //
|
|
|
+ "bspwmrc" => Icons::CONFIG, //
|
|
|
+ "build.gradle.kts" => Icons::GRADLE, //
|
|
|
"Cargo.lock" => Icons::LANG_RUST, //
|
|
|
- "config" => Icons::CONFIG_FOLDER, //
|
|
|
+ "Cargo.toml" => Icons::LANG_RUST, //
|
|
|
+ "CMakeLists.txt" => Icons::MAKE, //
|
|
|
+ "composer.json" => Icons::LANG_PHP, //
|
|
|
+ "composer.lock" => Icons::LANG_PHP, //
|
|
|
+ "config" => Icons::CONFIG, //
|
|
|
+ "config.status" => Icons::CONFIG, //
|
|
|
+ "configure" => Icons::WRENCH, //
|
|
|
+ "configure.ac" => Icons::CONFIG, //
|
|
|
+ "configure.in" => Icons::CONFIG, //
|
|
|
+ "constraints.txt" => Icons::LANG_PYTHON, //
|
|
|
+ "crontab" => Icons::CONFIG, //
|
|
|
+ "crypttab" => Icons::CONFIG, //
|
|
|
+ "csh.cshrc" => Icons::SHELL, //
|
|
|
+ "csh.login" => Icons::SHELL, //
|
|
|
+ "csh.logout" => Icons::SHELL, //
|
|
|
"docker-compose.yml" => Icons::DOCKER, //
|
|
|
"Dockerfile" => Icons::DOCKER, //
|
|
|
- "ds_store" => Icons::OS_APPLE, //
|
|
|
"Earthfile" => '\u{f0ac}', //
|
|
|
- "gitignore_global" => Icons::GIT, //
|
|
|
- "gitlab-ci.yml" => '\u{f296}', //
|
|
|
- "go.mod" => Icons::LANG_GO, //
|
|
|
- "go.sum" => Icons::LANG_GO, //
|
|
|
+ "environment" => Icons::CONFIG, //
|
|
|
+ "GNUmakefile" => Icons::MAKE, //
|
|
|
+ "go.mod" => Icons::LANG_GO, //
|
|
|
+ "go.sum" => Icons::LANG_GO, //
|
|
|
+ "go.work" => Icons::LANG_GO, //
|
|
|
"gradle" => Icons::GRADLE, //
|
|
|
+ "gradle.properties" => Icons::GRADLE, //
|
|
|
+ "gradlew" => Icons::GRADLE, //
|
|
|
+ "gradlew.bat" => Icons::GRADLE, //
|
|
|
+ "group" => Icons::LOCK, //
|
|
|
"gruntfile.coffee" => Icons::GRUNT, //
|
|
|
"gruntfile.js" => Icons::GRUNT, //
|
|
|
"gruntfile.ls" => Icons::GRUNT, //
|
|
|
+ "gshadow" => Icons::LOCK, //
|
|
|
"gulpfile.coffee" => Icons::GULP, //
|
|
|
"gulpfile.js" => Icons::GULP, //
|
|
|
"gulpfile.ls" => Icons::GULP, //
|
|
|
- "hidden" => Icons::LOCK, //
|
|
|
- "include" => Icons::CONFIG_FOLDER, //
|
|
|
- "lib" => '\u{f121}', //
|
|
|
+ "heroku.yml" => '\u{e77b}', //
|
|
|
+ "hostname" => Icons::CONFIG, //
|
|
|
+ "id_dsa" => Icons::PRIVATE_KEY, //
|
|
|
+ "id_ecdsa" => Icons::PRIVATE_KEY, //
|
|
|
+ "id_ecdsa_sk" => Icons::PRIVATE_KEY, //
|
|
|
+ "id_ed25519" => Icons::PRIVATE_KEY, //
|
|
|
+ "id_ed25519_sk" => Icons::PRIVATE_KEY, //
|
|
|
+ "id_rsa" => Icons::PRIVATE_KEY, //
|
|
|
+ "inputrc" => Icons::CONFIG, //
|
|
|
+ "Jenkinsfile" => '\u{e66e}', //
|
|
|
+ "jsconfig.json" => Icons::LANG_JAVASCRIPT,//
|
|
|
+ "Justfile" => Icons::WRENCH, //
|
|
|
+ "known_hosts" => '\u{f08c0}', //
|
|
|
+ "LICENCE" => Icons::LICENSE, //
|
|
|
+ "LICENCE.md" => Icons::LICENSE, //
|
|
|
+ "LICENCE.txt" => Icons::LICENSE, //
|
|
|
"LICENSE" => Icons::LICENSE, //
|
|
|
+ "LICENSE.md" => Icons::LICENSE, //
|
|
|
+ "LICENSE.txt" => Icons::LICENSE, //
|
|
|
"localized" => Icons::OS_APPLE, //
|
|
|
- "Makefile" => Icons::SHELL, //
|
|
|
- "node_modules" => Icons::NODEJS, //
|
|
|
- "npmignore" => Icons::NPM, //
|
|
|
+ "localtime" => Icons::CLOCK, //
|
|
|
+ "Makefile" => Icons::MAKE, //
|
|
|
+ "makefile" => Icons::MAKE, //
|
|
|
+ "Makefile.ac" => Icons::MAKE, //
|
|
|
+ "Makefile.am" => Icons::MAKE, //
|
|
|
+ "Makefile.in" => Icons::MAKE, //
|
|
|
+ "MANIFEST" => Icons::LANG_PYTHON, //
|
|
|
+ "MANIFEST.in" => Icons::LANG_PYTHON, //
|
|
|
+ "npm-shrinkwrap.json" => Icons::NPM, //
|
|
|
+ "npmrc" => Icons::NPM, //
|
|
|
+ "package-lock.json" => Icons::NPM, //
|
|
|
+ "package.json" => Icons::NPM, //
|
|
|
+ "passwd" => Icons::LOCK, //
|
|
|
"PKGBUILD" => '\u{f303}', //
|
|
|
+ "php.ini" => Icons::LANG_PHP, //
|
|
|
+ "pom.xml" => '\u{e674}', //
|
|
|
+ "Procfile" => '\u{e77b}', //
|
|
|
+ "profile" => Icons::SHELL, //
|
|
|
+ "pyproject.toml" => Icons::LANG_PYTHON, //
|
|
|
+ "Rakefile" => Icons::LANG_RUBY, //
|
|
|
+ "release.toml" => Icons::LANG_RUST, //
|
|
|
+ "requirements.txt" => Icons::LANG_PYTHON, //
|
|
|
+ "robots.txt" => '\u{f06a9}', //
|
|
|
"rubydoc" => Icons::LANG_RUBYRAILS, //
|
|
|
+ "rvmrc" => Icons::LANG_RUBY, //
|
|
|
+ "settings.gradle.kts" => Icons::GRADLE, //
|
|
|
+ "shadow" => Icons::LOCK, //
|
|
|
+ "shells" => Icons::CONFIG, //
|
|
|
+ "sudoers" => Icons::LOCK, //
|
|
|
+ "timezone" => Icons::CLOCK, //
|
|
|
+ "tsconfig.json" => Icons::LANG_TYPESCRIPT,//
|
|
|
"Vagrantfile" => '\u{2371}', // ⍱
|
|
|
- "yarn.lock" => '\u{e6a7}', //
|
|
|
+ "webpack.config.js" => '\u{f072b}', //
|
|
|
+ "yarn.lock" => Icons::YARN, //
|
|
|
+ "zlogin" => Icons::SHELL, //
|
|
|
+ "zlogout" => Icons::SHELL, //
|
|
|
+ "zprofile" => Icons::SHELL, //
|
|
|
+ "zshenv" => Icons::SHELL, //
|
|
|
+ "zshrc" => Icons::SHELL, //
|
|
|
};
|
|
|
|
|
|
/// Mapping from lowercase file extension to icons. If an image, video, or audio extension is add
|
|
|
@@ -147,23 +307,25 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"apple" => Icons::OS_APPLE, //
|
|
|
"ar" => Icons::COMPRESSED, //
|
|
|
"arw" => Icons::IMAGE, //
|
|
|
+ "asc" => Icons::SHIELD_LOCK, //
|
|
|
"asm" => Icons::LANG_ASSEMBLY, //
|
|
|
+ "asp" => '\u{f121}', //
|
|
|
"avi" => Icons::VIDEO, //
|
|
|
"avif" => Icons::IMAGE, //
|
|
|
"avro" => Icons::JSON, //
|
|
|
- "awk" => Icons::SHELL, //
|
|
|
- "bash" => Icons::SHELL, //
|
|
|
- "bashrc" => Icons::SHELL, //
|
|
|
- "bash_history" => Icons::SHELL, //
|
|
|
- "bash_profile" => Icons::SHELL, //
|
|
|
+ "awk" => Icons::SHELL_CMD, //
|
|
|
+ "bash" => Icons::SHELL_CMD, //
|
|
|
"bat" => Icons::OS_WINDOWS_CMD, //
|
|
|
- "bats" => Icons::SHELL, //
|
|
|
+ "bats" => Icons::SHELL_CMD, //
|
|
|
"bib" => Icons::LANG_TEX, //
|
|
|
"bin" => Icons::BINARY, //
|
|
|
"bmp" => Icons::IMAGE, //
|
|
|
+ "br" => Icons::COMPRESSED, //
|
|
|
"bst" => Icons::LANG_TEX, //
|
|
|
+ "bundle" => Icons::OS_APPLE, //
|
|
|
"bz" => Icons::COMPRESSED, //
|
|
|
"bz2" => Icons::COMPRESSED, //
|
|
|
+ "bz3" => Icons::COMPRESSED, //
|
|
|
"c" => Icons::LANG_C, //
|
|
|
"c++" => Icons::LANG_CPP, //
|
|
|
"cab" => Icons::OS_WINDOWS, //
|
|
|
@@ -177,8 +339,10 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"clj" => '\u{e768}', //
|
|
|
"cljs" => '\u{e76a}', //
|
|
|
"cls" => Icons::LANG_TEX, //
|
|
|
+ "cmake" => Icons::MAKE, //
|
|
|
"cmd" => Icons::OS_WINDOWS, //
|
|
|
"coffee" => '\u{f0f4}', //
|
|
|
+ "com" => Icons::OS_WINDOWS_CMD, //
|
|
|
"conf" => Icons::CONFIG, //
|
|
|
"config" => Icons::CONFIG, //
|
|
|
"cp" => Icons::LANG_CPP, //
|
|
|
@@ -187,7 +351,7 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"cr2" => Icons::IMAGE, //
|
|
|
"crt" => Icons::GIST_SECRET, //
|
|
|
"cs" => Icons::LANG_CSHARP, //
|
|
|
- "csh" => Icons::SHELL, //
|
|
|
+ "csh" => Icons::SHELL_CMD, //
|
|
|
"cshtml" => Icons::RAZOR, //
|
|
|
"csproj" => Icons::LANG_CSHARP, //
|
|
|
"css" => Icons::CSS3, //
|
|
|
@@ -195,6 +359,7 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"csx" => Icons::LANG_CSHARP, //
|
|
|
"cts" => Icons::LANG_TYPESCRIPT, //
|
|
|
"cu" => '\u{e64b}', //
|
|
|
+ "cue" => Icons::PLAYLIST, //
|
|
|
"cxx" => Icons::LANG_CPP, //
|
|
|
"d" => '\u{e7af}', //
|
|
|
"dart" => '\u{e798}', //
|
|
|
@@ -208,27 +373,30 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"dmg" => Icons::DISK_IMAGE, //
|
|
|
"doc" => Icons::DOCUMENT, //
|
|
|
"docx" => Icons::DOCUMENT, //
|
|
|
+ "dot" => '\u{f1049}', //
|
|
|
+ "download" => '\u{f01da}', //
|
|
|
"drawio" => '\u{ebba}', //
|
|
|
- "ds_store" => Icons::OS_APPLE, //
|
|
|
"dump" => Icons::DATABASE, //
|
|
|
"dvi" => Icons::IMAGE, //
|
|
|
+ "dylib" => Icons::OS_APPLE, //
|
|
|
"ebook" => Icons::BOOK, //
|
|
|
"ebuild" => '\u{f30d}', //
|
|
|
"editorconfig" => Icons::CONFIG, //
|
|
|
"ejs" => '\u{e618}', //
|
|
|
"el" => Icons::EMACS, //
|
|
|
+ "elc" => Icons::EMACS, //
|
|
|
"elm" => '\u{e62c}', //
|
|
|
"eml" => '\u{f003}', //
|
|
|
"env" => '\u{f462}', //
|
|
|
"eot" => Icons::FONT, //
|
|
|
- "eps" => Icons::IMAGE, //
|
|
|
+ "eps" => Icons::VECTOR, //
|
|
|
"epub" => Icons::BOOK, //
|
|
|
"erb" => Icons::LANG_RUBYRAILS, //
|
|
|
"erl" => '\u{e7b1}', //
|
|
|
"ex" => Icons::LANG_ELIXIR, //
|
|
|
- "exe" => Icons::OS_WINDOWS, //
|
|
|
+ "exe" => Icons::OS_WINDOWS_CMD, //
|
|
|
"exs" => Icons::LANG_ELIXIR, //
|
|
|
- "fish" => Icons::SHELL, //
|
|
|
+ "fish" => Icons::SHELL_CMD, //
|
|
|
"flac" => Icons::AUDIO, //
|
|
|
"flv" => Icons::VIDEO, //
|
|
|
"font" => Icons::FONT, //
|
|
|
@@ -242,35 +410,34 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"gform" => '\u{f298}', //
|
|
|
"gif" => Icons::IMAGE, //
|
|
|
"git" => Icons::GIT, //
|
|
|
- "gitattributes" => Icons::GIT, //
|
|
|
- "gitignore" => Icons::GIT, //
|
|
|
- "gitmodules" => Icons::GIT, //
|
|
|
- "go" => Icons::LANG_GO, //
|
|
|
- "gpg" => '\u{e60a}', //
|
|
|
+ "go" => Icons::LANG_GO, //
|
|
|
+ "gpg" => Icons::SHIELD_LOCK, //
|
|
|
"gradle" => Icons::GRADLE, //
|
|
|
"groovy" => '\u{e775}', //
|
|
|
"gsheet" => Icons::SHEET, //
|
|
|
"gslides" => Icons::SLIDE, //
|
|
|
"guardfile" => Icons::LANG_RUBY, //
|
|
|
+ "gv" => '\u{f1049}', //
|
|
|
"gz" => Icons::COMPRESSED, //
|
|
|
- "h" => Icons::HEADER, //
|
|
|
+ "h" => Icons::LANG_C, //
|
|
|
"hbs" => Icons::MUSTACHE, //
|
|
|
- "heic" => Icons::VIDEO, //
|
|
|
+ "heic" => Icons::IMAGE, //
|
|
|
+ "heics" => Icons::VIDEO, //
|
|
|
"heif" => Icons::IMAGE, //
|
|
|
- "hpp" => Icons::HEADER, //
|
|
|
+ "hpp" => Icons::LANG_CPP, //
|
|
|
"hs" => Icons::LANG_HASKELL, //
|
|
|
"htm" => Icons::HTML5, //
|
|
|
"html" => Icons::HTML5, //
|
|
|
- "hxx" => Icons::HEADER, //
|
|
|
+ "hxx" => Icons::LANG_CPP, //
|
|
|
"ical" => Icons::CALENDAR, //
|
|
|
"icalendar" => Icons::CALENDAR, //
|
|
|
"ico" => Icons::IMAGE, //
|
|
|
"ics" => Icons::CALENDAR, //
|
|
|
"ifb" => Icons::CALENDAR, //
|
|
|
- "image" => Icons::IMAGE, //
|
|
|
+ "image" => Icons::DISK_IMAGE, //
|
|
|
"img" => Icons::DISK_IMAGE, //
|
|
|
"iml" => Icons::INTELLIJ, //
|
|
|
- "ini" => Icons::OS_WINDOWS, //
|
|
|
+ "ini" => Icons::CONFIG, //
|
|
|
"ipynb" => '\u{e678}', //
|
|
|
"iso" => Icons::DISK_IMAGE, //
|
|
|
"j2c" => Icons::IMAGE, //
|
|
|
@@ -293,15 +460,20 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"json" => Icons::JSON, //
|
|
|
"jsx" => Icons::REACT, //
|
|
|
"jxl" => Icons::IMAGE, //
|
|
|
+ "kbx" => Icons::SHIELD_KEY, //
|
|
|
"kdb" => Icons::KEYPASS, //
|
|
|
"kdbx" => Icons::KEYPASS, //
|
|
|
"key" => Icons::KEY, //
|
|
|
"ko" => Icons::OS_LINUX, //
|
|
|
- "ksh" => Icons::SHELL, //
|
|
|
+ "ksh" => Icons::SHELL_CMD, //
|
|
|
+ "kt" => Icons::LANG_KOTLIN, //
|
|
|
+ "kts" => Icons::LANG_KOTLIN, //
|
|
|
"latex" => Icons::LANG_TEX, //
|
|
|
+ "ldb" => Icons::DATABASE, //
|
|
|
"less" => '\u{e758}', //
|
|
|
"lhs" => Icons::LANG_HASKELL, //
|
|
|
"license" => Icons::LICENSE, //
|
|
|
+ "lisp" => '\u{f0172}', //
|
|
|
"localized" => Icons::OS_APPLE, //
|
|
|
"lock" => Icons::LOCK, //
|
|
|
"log" => '\u{f18d}', //
|
|
|
@@ -314,13 +486,17 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"m" => Icons::LANG_C, //
|
|
|
"m2ts" => Icons::VIDEO, //
|
|
|
"m2v" => Icons::VIDEO, //
|
|
|
+ "m3u" => Icons::PLAYLIST, //
|
|
|
+ "m3u8" => Icons::PLAYLIST, //
|
|
|
"m4a" => Icons::AUDIO, //
|
|
|
"m4v" => Icons::VIDEO, //
|
|
|
"magnet" => '\u{f076}', //
|
|
|
"markdown" => Icons::MARKDOWN, //
|
|
|
"md" => Icons::MARKDOWN, //
|
|
|
+ "md5" => Icons::SHIELD_CHECK, //
|
|
|
+ "mdb" => Icons::DATABASE, //
|
|
|
"mjs" => Icons::LANG_JAVASCRIPT, //
|
|
|
- "mk" => Icons::SHELL, //
|
|
|
+ "mk" => Icons::MAKE, //
|
|
|
"mka" => Icons::AUDIO, //
|
|
|
"mkd" => Icons::MARKDOWN, //
|
|
|
"mkv" => Icons::VIDEO, //
|
|
|
@@ -342,8 +518,7 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"nef" => Icons::IMAGE, //
|
|
|
"ninja" => '\u{f0774}', //
|
|
|
"nix" => '\u{f313}', //
|
|
|
- "node" => '\u{f0399}', //
|
|
|
- "npmignore" => Icons::NPM, //
|
|
|
+ "node" => Icons::NODEJS, //
|
|
|
"o" => Icons::BINARY, //
|
|
|
"odp" => Icons::SLIDE, //
|
|
|
"ods" => Icons::SHEET, //
|
|
|
@@ -356,36 +531,45 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"org" => '\u{e633}', //
|
|
|
"otf" => Icons::FONT, //
|
|
|
"out" => '\u{eb2c}', //
|
|
|
+ "p12" => Icons::KEY, //
|
|
|
"par" => Icons::COMPRESSED, //
|
|
|
"part" => '\u{f43a}', //
|
|
|
"patch" => Icons::DIFF, //
|
|
|
"pbm" => Icons::IMAGE, //
|
|
|
"pdf" => '\u{f1c1}', //
|
|
|
"pem" => Icons::KEY, //
|
|
|
+ "pfx" => Icons::KEY, //
|
|
|
"pgm" => Icons::IMAGE, //
|
|
|
+ "phar" => Icons::LANG_PHP, //
|
|
|
"php" => Icons::LANG_PHP, //
|
|
|
- "pl" => Icons::LANG_PERL, //
|
|
|
- "plx" => Icons::LANG_PERL, //
|
|
|
- "pm" => Icons::LANG_PERL, //
|
|
|
+ "pkg" => '\u{eb29}', //
|
|
|
+ "pl" => Icons::LANG_PERL, //
|
|
|
+ "plist" => Icons::OS_APPLE, //
|
|
|
+ "plx" => Icons::LANG_PERL, //
|
|
|
+ "pm" => Icons::LANG_PERL, //
|
|
|
"png" => Icons::IMAGE, //
|
|
|
"pnm" => Icons::IMAGE, //
|
|
|
- "pod" => Icons::LANG_PERL, //
|
|
|
+ "pod" => Icons::LANG_PERL, //
|
|
|
+ "pp" => '\u{e631}', //
|
|
|
"ppm" => Icons::IMAGE, //
|
|
|
"ppt" => Icons::SLIDE, //
|
|
|
"pptx" => Icons::SLIDE, //
|
|
|
- "procfile" => Icons::LANG_RUBY, // - Can not find a reference to procfile being Ruby
|
|
|
"properties" => Icons::JSON, //
|
|
|
- "ps" => Icons::IMAGE, //
|
|
|
+ "ps" => Icons::VECTOR, //
|
|
|
"ps1" => Icons::POWERSHELL, //
|
|
|
"psd" => '\u{e7b8}', //
|
|
|
"psd1" => Icons::POWERSHELL, //
|
|
|
"psm1" => Icons::POWERSHELL, //
|
|
|
+ "pub" => Icons::PUBLIC_KEY, //
|
|
|
"pxm" => Icons::IMAGE, //
|
|
|
"py" => Icons::LANG_PYTHON, //
|
|
|
"pyc" => Icons::LANG_PYTHON, //
|
|
|
+ "pyd" => Icons::LANG_PYTHON, //
|
|
|
+ "pyi" => Icons::LANG_PYTHON, //
|
|
|
+ "pyo" => Icons::LANG_PYTHON, //
|
|
|
+ "qcow" => Icons::DISK_IMAGE, //
|
|
|
"qcow2" => Icons::DISK_IMAGE, //
|
|
|
"r" => Icons::LANG_R, //
|
|
|
- "rakefile" => Icons::LANG_RUBY, //
|
|
|
"rar" => Icons::COMPRESSED, //
|
|
|
"raw" => Icons::IMAGE, //
|
|
|
"razor" => Icons::RAZOR, //
|
|
|
@@ -409,31 +593,53 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"ru" => Icons::LANG_RUBY, //
|
|
|
"rubydoc" => Icons::LANG_RUBYRAILS, //
|
|
|
"s" => Icons::LANG_ASSEMBLY, //
|
|
|
- "sass" => '\u{e603}', //
|
|
|
+ "sass" => Icons::LANG_SASS, //
|
|
|
"scala" => '\u{e737}', //
|
|
|
- "scss" => Icons::CSS3, //
|
|
|
+ "scss" => Icons::LANG_SASS, //
|
|
|
"service" => '\u{eba2}', //
|
|
|
- "sh" => Icons::SHELL, //
|
|
|
- "shell" => Icons::SHELL, //
|
|
|
+ "sh" => Icons::SHELL_CMD, //
|
|
|
+ "sha1" => Icons::SHIELD_CHECK, //
|
|
|
+ "sha224" => Icons::SHIELD_CHECK, //
|
|
|
+ "sha256" => Icons::SHIELD_CHECK, //
|
|
|
+ "sha384" => Icons::SHIELD_CHECK, //
|
|
|
+ "sha512" => Icons::SHIELD_CHECK, //
|
|
|
+ "shell" => Icons::SHELL_CMD, //
|
|
|
+ "sig" => Icons::SIGNED_FILE, //
|
|
|
+ "signature" => Icons::SIGNED_FILE, //
|
|
|
"slim" => Icons::LANG_RUBYRAILS, //
|
|
|
"sln" => '\u{e70c}', //
|
|
|
"so" => Icons::OS_LINUX, //
|
|
|
"sql" => Icons::DATABASE, //
|
|
|
"sqlite3" => '\u{e7c4}', //
|
|
|
+ "srt" => Icons::SUBTITLE, //
|
|
|
"stl" => Icons::IMAGE, //
|
|
|
"sty" => Icons::LANG_TEX, //
|
|
|
"styl" => Icons::LANG_STYLUS, //
|
|
|
"stylus" => Icons::LANG_STYLUS, //
|
|
|
+ "sub" => Icons::SUBTITLE, //
|
|
|
+ "sublime-build" => Icons::SUBLIME, //
|
|
|
+ "sublime-keymap" => Icons::SUBLIME, //
|
|
|
+ "sublime-menu" => Icons::SUBLIME, //
|
|
|
+ "sublime-options"=> Icons::SUBLIME, //
|
|
|
+ "sublime-package"=> Icons::SUBLIME, //
|
|
|
+ "sublime-project"=> Icons::SUBLIME, //
|
|
|
+ "sublime-session"=> Icons::SUBLIME, //
|
|
|
+ "sublime-settings"=>Icons::SUBLIME, //
|
|
|
+ "sublime-snippet"=> Icons::SUBLIME, //
|
|
|
+ "sublime-theme" => Icons::SUBLIME, //
|
|
|
"svelte" => '\u{e697}', //
|
|
|
- "svg" => Icons::IMAGE, //
|
|
|
+ "svg" => Icons::VECTOR, //
|
|
|
"swift" => '\u{e755}', //
|
|
|
- "t" => Icons::LANG_PERL, //
|
|
|
+ "t" => Icons::LANG_PERL, //
|
|
|
"tar" => Icons::COMPRESSED, //
|
|
|
"taz" => Icons::COMPRESSED, //
|
|
|
"tbz" => Icons::COMPRESSED, //
|
|
|
"tbz2" => Icons::COMPRESSED, //
|
|
|
- "tc" => Icons::COMPRESSED, //
|
|
|
+ "tc" => Icons::DISK_IMAGE, //
|
|
|
"tex" => Icons::LANG_TEX, //
|
|
|
+ "tf" => Icons::TERRAFORM, //
|
|
|
+ "tfstate" => Icons::TERRAFORM, //
|
|
|
+ "tfvars" => Icons::TERRAFORM, //
|
|
|
"tgz" => Icons::COMPRESSED, //
|
|
|
"tif" => Icons::IMAGE, //
|
|
|
"tiff" => Icons::IMAGE, //
|
|
|
@@ -443,6 +649,7 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"ts" => Icons::LANG_TYPESCRIPT, //
|
|
|
"tsv" => Icons::SHEET, //
|
|
|
"tsx" => Icons::REACT, //
|
|
|
+ "ttc" => Icons::FONT, //
|
|
|
"ttf" => Icons::FONT, //
|
|
|
"twig" => '\u{e61c}', //
|
|
|
"txt" => Icons::TEXT, //
|
|
|
@@ -462,11 +669,13 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"wav" => Icons::AUDIO, //
|
|
|
"webm" => Icons::VIDEO, //
|
|
|
"webp" => Icons::IMAGE, //
|
|
|
+ "whl" => Icons::LANG_PYTHON, //
|
|
|
"windows" => Icons::OS_WINDOWS, //
|
|
|
"wma" => Icons::AUDIO, //
|
|
|
"wmv" => Icons::VIDEO, //
|
|
|
"woff" => Icons::FONT, //
|
|
|
"woff2" => Icons::FONT, //
|
|
|
+ "xcf" => Icons::IMAGE, //
|
|
|
"xhtml" => Icons::HTML5, //
|
|
|
"xls" => Icons::SHEET, //
|
|
|
"xlsm" => Icons::SHEET, //
|
|
|
@@ -475,14 +684,13 @@ const EXTENSION_ICONS: Map<&'static str, char> = phf_map! {
|
|
|
"xpm" => Icons::IMAGE, //
|
|
|
"xul" => Icons::XML, //
|
|
|
"xz" => Icons::COMPRESSED, //
|
|
|
- "yaml" => Icons::YAML, //
|
|
|
- "yml" => Icons::YAML, //
|
|
|
+ "yaml" => Icons::YAML, //
|
|
|
+ "yml" => Icons::YAML, //
|
|
|
"z" => Icons::COMPRESSED, //
|
|
|
"zig" => '\u{21af}', // ↯
|
|
|
"zip" => Icons::COMPRESSED, //
|
|
|
- "zsh" => Icons::SHELL, //
|
|
|
- "zsh-theme" => Icons::SHELL, //
|
|
|
- "zshrc" => Icons::SHELL, //
|
|
|
+ "zsh" => Icons::SHELL_CMD, //
|
|
|
+ "zsh-theme" => Icons::SHELL, //
|
|
|
"zst" => Icons::COMPRESSED, //
|
|
|
};
|
|
|
|
|
|
@@ -503,17 +711,19 @@ pub fn iconify_style(style: Style) -> Style {
|
|
|
/// Lookup the icon for a file based on the file's name, if the entry is a
|
|
|
/// directory, or by the lowercase file extension.
|
|
|
pub fn icon_for_file(file: &File<'_>) -> char {
|
|
|
- if let Some(icon) = FILENAME_ICONS.get(file.name.as_str()) {
|
|
|
+ if file.points_to_directory() {
|
|
|
+ *DIRECTORY_ICONS.get(file.name.as_str()).unwrap_or_else(|| {
|
|
|
+ if file.is_empty_dir() {
|
|
|
+ &Icons::FOLDER_OPEN //
|
|
|
+ } else {
|
|
|
+ &Icons::FOLDER //
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else if let Some(icon) = FILENAME_ICONS.get(file.name.as_str()) {
|
|
|
*icon
|
|
|
- } else if file.points_to_directory() {
|
|
|
- if file.is_empty_dir() {
|
|
|
- '\u{f115}' //
|
|
|
- } else {
|
|
|
- '\u{f07b}' //
|
|
|
- }
|
|
|
} else if let Some(ext) = file.ext.as_ref() {
|
|
|
- *EXTENSION_ICONS.get(ext.as_str()).unwrap_or(&'\u{f15b}') //
|
|
|
+ *EXTENSION_ICONS.get(ext.as_str()).unwrap_or(&Icons::FILE) //
|
|
|
} else {
|
|
|
- '\u{f016}' //
|
|
|
+ Icons::FILE_OUTLINE //
|
|
|
}
|
|
|
}
|