summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2024-02-25 13:45:48 +0100
committerCanop <cano.petrole@gmail.com>2024-02-25 13:45:48 +0100
commita83e76070e676d1ae4a323e12df726f53a211ae6 (patch)
tree43dd90286df36b464539d0536f0f9f22f47b6261
parentc0798890630c9ddac63cbd98b48799af3de8fde2 (diff)
parentc2d2dbb7be2021531f493053ab869f0fd1c1fdb0 (diff)
Merge branch 'feature/nerdfont' of github.com:JonasLeonhard/broot into JonasLeonhard-feature/nerdfont
-rw-r--r--resources/icons/nerdfont/README.md37
-rw-r--r--resources/icons/nerdfont/data/double_extension_to_icon_name_map.rs52
-rw-r--r--resources/icons/nerdfont/data/extension_to_icon_name_map.rs513
-rw-r--r--resources/icons/nerdfont/data/file_name_to_icon_name_map.rs170
-rw-r--r--resources/icons/nerdfont/data/icon_name_to_icon_code_point_map.rs784
-rw-r--r--src/icon/font.rs (renamed from src/icon/vscode.rs)64
-rw-r--r--src/icon/mod.rs22
-rw-r--r--website/docs/icons.md69
-rw-r--r--website/docs/img/20201117-icons.pngbin100218 -> 0 bytes
-rw-r--r--website/docs/img/20240225-icon-comparison.pngbin0 -> 235281 bytes
-rw-r--r--website/docs/img/20240225-nerdfont-cheatsheet.pngbin0 -> 146738 bytes
11 files changed, 1666 insertions, 45 deletions
diff --git a/resources/icons/nerdfont/README.md b/resources/icons/nerdfont/README.md
new file mode 100644
index 0000000..0ef71ae
--- /dev/null
+++ b/resources/icons/nerdfont/README.md
@@ -0,0 +1,37 @@
+# Nerd Fonts Icons
+
+## Requirements
+
+[Nerd Fonts](https://github.com/ryanoasis/nerd-fonts) installed either through a patched font or available as a fallback font.
+
+## Configuration
+
+In broot config file, set
+
+```
+icon_theme: nerdfont
+```
+
+## Limitations
+
+These icons are limited by availability of symbols in Nerd Fonts, so this feature can only support a subset of filetypes available in `vscode` theme.
+
+## Editing the Icon for a File:
+If you want to find an icon for a file: go to https://www.nerdfonts.com/cheat-sheet and search for:
+- a icon name like "file", which should return the multiple file icon results. Pick one you like and copy the icon code "ea7b". Copy it into the corresponding mapping prefixed with "0x" in ./data/*.rs. ( "default_file", 0xf15b ), // 
+- a icon code like "0xf15b" without the "0x" prefix. This should return the corresponding "" icon.
+
+
+## Tips on editing these files in vi
+
+1. Open ./icon_name_to_icon_code_point_map.rs
+ then in the same session, switch to file you want to edit
+ use C-n and C-y in edit mode
+
+2. This plugin currently searches for lowercase, make everything so
+
+3. Remember to run :Tabularize over ')' and ','. <a href="https://github.com/godlygeek/tabular?tab=readme-ov-file">The tabular Plugin</a>
+
+4. :'<,'>!sort
+
+5. `cargo run` in debug mode should figure out some problems.
diff --git a/resources/icons/nerdfont/data/double_extension_to_icon_name_map.rs b/resources/icons/nerdfont/data/double_extension_to_icon_name_map.rs
new file mode 100644
index 0000000..ca5bce3
--- /dev/null
+++ b/resources/icons/nerdfont/data/double_extension_to_icon_name_map.rs
@@ -0,0 +1,52 @@
+// SEE ./README on how to edit this file
+[
+ ( "adapter.js" , "file_type_nest_adapter_js" ),
+ ( "adapter.ts" , "file_type_nest_adapter_ts" ),
+ ( "component.dart" , "file_type_ng_component_dart" ),
+ ( "component.js" , "file_type_ng_component_js2" ),
+ ( "component.ts" , "file_type_ng_component_ts2" ),
+ ( "container.dart" , "file_type_ng_smart_component_dart" ),
+ ( "container.js" , "file_type_ng_smart_component_js2" ),
+ ( "container.ts" , "file_type_ng_smart_component_ts2" ),
+ ( "controller.js" , "file_type_nest_controller_js" ),
+ ( "controller.ts" , "file_type_nest_controller_ts" ),
+ ( "css.map" , "file_type_cssmap" ),
+ ( "d.ts" , "file_type_typescriptdef_official" ),
+ ( "decorator.js" , "file_type_nest_decorator_js" ),
+ ( "decorator.ts" , "file_type_nest_decorator_ts" ),
+ ( "directive.dart" , "file_type_ng_directive_dart" ),
+ ( "directive.js" , "file_type_ng_directive_js2" ),
+ ( "directive.ts" , "file_type_ng_directive_ts2" ),
+ ( "eslintrc.js" , "file_type_eslint" ),
+ ( "filter.js" , "file_type_nest_filter_js" ),
+ ( "filter.ts" , "file_type_nest_filter_ts" ),
+ ( "gateway.js" , "file_type_nest_gateway_js" ),
+ ( "gateway.ts" , "file_type_nest_gateway_ts" ),
+ ( "guard.js" , "file_type_nest_guard_js" ),
+ ( "guard.ts" , "file_type_nest_guard_ts" ),
+ ( "interceptor.dart" , "file_type_ng_interceptor_dart" ),
+ ( "interceptor.js" , "file_type_nest_interceptor_js" ),
+ ( "interceptor.ts" , "file_type_nest_interceptor_ts" ),
+ ( "js.flow" , "file_type_flow" ),
+ ( "js.map" , "file_type_jsmap" ),
+ ( "js.snap" , "file_type_jest_snapshot" ),
+ ( "middleware.js" , "file_type_nest_middleware_js" ),
+ ( "middleware.ts" , "file_type_nest_middleware_ts" ),
+ ( "module.js" , "file_type_nest_module_js" ),
+ ( "module.ts" , "file_type_nest_module_ts" ),
+ ( "page.dart" , "file_type_ng_smart_component_dart" ),
+ ( "page.js" , "file_type_ng_smart_component_js2" ),
+ ( "page.ts" , "file_type_ng_smart_component_ts2" ),
+ ( "pipe.dart" , "file_type_ng_pipe_dart" ),
+ ( "pipe.js" , "file_type_nest_pipe_js" ),
+ ( "pipe.ts" , "file_type_nest_pipe_ts" ),
+ ( "routing.dart" , "file_type_ng_routing_dart" ),
+ ( "routing.js" , "file_type_ng_routing_js2" ),
+ ( "routing.ts" , "file_type_ng_routing_ts2" ),
+ ( "service.dart" , "file_type_ng_service_dart" ),
+ ( "service.js" , "file_type_nest_service_js" ),
+ ( "service.ts" , "file_type_nest_service_ts" ),
+ ( "tar.gz" , "file_type_zip" ),
+ ( "tar.xz" , "file_type_zip" ),
+ ( "tar.zst" , "file_type_zip" ),
+]
diff --git a/resources/icons/nerdfont/data/extension_to_icon_name_map.rs b/resources/icons/nerdfont/data/extension_to_icon_name_map.rs
new file mode 100644
index 0000000..7c9ad85
--- /dev/null
+++ b/resources/icons/nerdfont/data/extension_to_icon_name_map.rs
@@ -0,0 +1,513 @@
+// SEE ./README on how to edit this file
+[
+( "3g2" , "file_type_video" ),
+( "3gp" , "file_type_video" ),
+( "7z" , "file_type_zip2" ),
+( "P" , "file_type_prolog" ),
+( "a" , "file_type_binary" ),
+( "aac" , "file_type_audio" ),
+( "accda" , "file_type_access2" ),
+( "accdb" , "file_type_access" ),
+( "accdc" , "file_type_access2" ),
+( "accde" , "file_type_access2" ),
+( "accdp" , "file_type_access2" ),
+( "accdr" , "file_type_access2" ),
+( "accdt" , "file_type_access2" ),
+( "accdu" , "file_type_access2" ),
+( "act" , "file_type_audio" ),
+( "ade" , "file_type_access2" ),
+( "adp" , "file_type_access2" ),
+( "afdesign" , "file_type_affinitydesigner" ),
+( "affinitydesigner" , "file_type_affinitydesigner" ),
+( "affinityphoto" , "file_type_affinityphoto" ),
+( "affinitypublisher" , "file_type_affinitypublisher" ),
+( "afphoto" , "file_type_affinityphoto" ),
+( "afpub" , "file_type_affinitypublisher" ),
+( "ai" , "file_type_ai2" ),
+( "aiff" , "file_type_audio" ),
+( "amr" , "file_type_audio" ),
+( "amv" , "file_type_video" ),
+( "ape" , "file_type_audio" ),
+( "app" , "file_type_binary" ),
+( "ascx" , "file_type_aspx" ),
+( "asf" , "file_type_video" ),
+( "aspx" , "file_type_aspx" ),
+( "au" , "file_type_audio" ),
+( "avi" , "file_type_video" ),
+( "avif" , "file_type_avif" ),
+( "awk" , "file_type_awk" ),
+( "babelignore" , "file_type_babel2" ),
+( "babelrc" , "file_type_babel2" ),
+( "bazel" , "file_type_bazel" ),
+( "bazelrc" , "file_type_bazel" ),
+( "bb" , "file_type_blitzbasic" ),
+( "bcmx" , "file_type_outlook" ),
+( "bin" , "file_type_binary" ),
+( "bithoundrc" , "file_type_bithound" ),
+( "bmp" , "file_type_image" ),
+( "boringignore" , "file_type_darcs" ),
+( "bowerrc" , "file_type_bower" ),
+( "browserslistrc" , "file_type_browserslist" ),
+( "buckconfig" , "file_type_buckbuild" ),
+( "bz" , "file_type_zip2" ),
+( "bz2" , "file_type_zip2" ),
+( "bzip2" , "file_type_zip2" ),
+( "bzrignore" , "file_type_bazaar" ),
+( "c" , "file_type_c" ),
+( "cake" , "file_type_cake" ),
+( "cargo-lock" , "file_type_rust" ),
+( "cer" , "file_type_cert" ),
+( "cfignore" , "file_type_cloudfoundry" ),
+( "cjm" , "file_type_clojure" ),
+( "cl" , "file_type_opencl" ),
+( "class" , "file_type_class" ),
+( "cljc" , "file_type_clojure" ),
+( "cljs" , "file_type_clojurescript" ),
+( "cma" , "file_type_binary" ),
+( "cmi" , "file_type_binary" ),
+( "cmo" , "file_type_binary" ),
+( "cmx" , "file_type_binary" ),
+( "cmxa" , "file_type_binary" ),
+( "coffeelintignore" , "file_type_coffeelint" ),
+( "condarc" , "file_type_conda" ),
+( "cpp" , "file_type_cpp" ),
+( "crec" , "file_type_lync" ),
+( "crl" , "file_type_cert" ),
+( "crt" , "file_type_cert" ),
+( "cs" , "file_type_csharp" ),
+( "csproj" , "file_type_csproj" ),
+( "csr" , "file_type_cert" ),
+( "css" , "file_type_css" ),
+( "csslintrc" , "file_type_csslint" ),
+( "csv" , "file_type_csv" ),
+( "csx" , "file_type_csharp2" ),
+( "cvsignore" , "file_type_cvs" ),
+( "db" , "file_type_db" ),
+( "db3" , "file_type_sqlite" ),
+( "dct" , "file_type_audio" ),
+( "der" , "file_type_cert" ),
+( "dio" , "file_type_drawio" ),
+( "divx" , "file_type_video" ),
+( "djt" , "file_type_django" ),
+( "dll" , "file_type_binary" ),
+( "doc" , "file_type_word2" ),
+( "docm" , "file_type_word2" ),
+( "docx" , "file_type_word2" ),
+( "doczrc" , "file_type_docz" ),
+( "dojorc" , "file_type_dojo" ),
+( "dot" , "file_type_word2" ),
+( "dotm" , "file_type_word2" ),
+( "dotx" , "file_type_word2" ),
+( "drawio" , "file_type_drawio" ),
+( "dss" , "file_type_audio" ),
+( "dta" , "file_type_stata" ),
+( "dvc" , "file_type_dvc" ),
+( "dvf" , "file_type_audio" ),
+( "eco" , "file_type_docpad" ),
+( "editorconfig" , "file_type_editorconfig" ),
+( "ejs" , "file_type_ejs" ),
+( "el" , "file_type_emacs" ),
+( "elc" , "file_type_emacs" ),
+( "ember-cli" , "file_type_ember" ),
+( "enc" , "file_type_license" ),
+( "ensime" , "file_type_ensime" ),
+( "env" , "file_type_env" ),
+( "eot" , "file_type_font" ),
+( "eps" , "file_type_eps" ),
+( "eskip" , "file_type_skipper" ),
+( "eslintcache" , "file_type_eslint2" ),
+( "eslintignore" , "file_type_eslint2" ),
+( "eslintrc" , "file_type_eslint2" ),
+( "exe" , "file_type_binary" ),
+( "exp" , "file_type_tcl" ),
+( "f4a" , "file_type_video" ),
+( "f4b" , "file_type_video" ),
+( "f4p" , "file_type_video" ),
+( "f4v" , "file_type_video" ),
+( "fbx" , "file_type_fbx" ),
+( "fig" , "file_type_matlab" ),
+( "firebaserc" , "file_type_firebase" ),
+( "fish" , "file_type_shell" ),
+( "fla" , "file_type_fla" ),
+( "flac" , "file_type_audio" ),
+( "flooignore" , "file_type_floobits" ),
+( "flowconfig" , "file_type_flow" ),
+( "flutter-plugins" , "file_type_flutter" ),
+( "flv" , "file_type_video" ),
+( "fods" , "file_type_excel2" ),
+( "fossaignore" , "file_type_fossa" ),
+( "fsproj" , "file_type_fsproj" ),
+( "gemfile" , "file_type_bundler" ),
+( "gif" , "file_type_image" ),
+( "gitattributes" , "file_type_git" ),
+( "gitconfig" , "file_type_git" ),
+( "gitignore" , "file_type_git" ),
+( "gitkeep" , "file_type_git" ),
+( "gitmodules" , "file_type_git" ),
+( "gmx" , "file_type_gamemaker" ),
+( "go" , "file_type_go" ),
+( "gqlconfig" , "file_type_graphql" ),
+( "gradle" , "file_type_gradle2" ),
+( "graphqlconfig" , "file_type_graphql_config" ),
+( "gsm" , "file_type_audio" ),
+( "gvimrc" , "file_type_vim" ),
+( "gz" , "file_type_zip2" ),
+( "h" , "file_type_cheader" ),
+( "hgignore" , "file_type_mercurial" ),
+( "hl" , "file_type_binary" ),
+( "hpp" , "file_type_cppheader" ),
+( "html" , "file_type_html" ),
+( "htmlhintrc" , "file_type_htmlhint" ),
+( "huskyrc" , "file_type_husky" ),
+( "hxp" , "file_type_lime" ),
+( "hxproj" , "file_type_haxedevelop" ),
+( "ibc" , "file_type_idrisbin" ),
+( "ico" , "file_type_image" ),
+( "idr" , "file_type_idris" ),
+( "ignore-glob" , "file_type_fossil" ),
+( "iklax" , "file_type_audio" ),
+( "ilk" , "file_type_binary" ),
+( "inc" , "file_type_inc" ),
+( "include" , "file_type_inc" ),
+( "infopathxml" , "file_type_infopath" ),
+( "ino" , "file_type_arduino" ),
+( "ipkg" , "file_type_idrispkg" ),
+( "ipynb" , "file_type_jupyter" ),
+( "iuml" , "file_type_plantuml" ),
+( "ivs" , "file_type_audio" ),
+( "jade-lintrc" , "file_type_pug" ),
+( "java" , "file_type_java" ),
+( "jestrc" , "file_type_jest" ),
+( "jpeg" , "file_type_image" ),
+( "jpg" , "file_type_image" ),
+( "jpmignore" , "file_type_jpm" ),
+( "js" , "file_type_js" ),
+( "jsbeautify" , "file_type_jsbeautify" ),
+( "jsbeautifyrc" , "file_type_jsbeautify" ),
+( "jshintignore" , "file_type_jshint" ),
+( "jshintrc" , "file_type_jshint" ),
+( "json" , "file_type_json_official" ),
+( "json-ld" , "file_type_jsonld" ),
+( "json5" , "file_type_json5" ),
+( "jsonld" , "file_type_jsonld" ),
+( "jsp" , "file_type_jsp" ),
+( "jss" , "file_type_jss" ),
+( "key" , "file_type_key" ),
+( "kit" , "file_type_codekit" ),
+( "kiteignore" , "file_type_kite" ),
+( "kt" , "file_type_kotlin" ),
+( "laccdb" , "file_type_access2" ),
+( "ldb" , "file_type_access2" ),
+( "lib" , "file_type_binary" ),
+( "licence" , "file_type_license" ),
+( "lidr" , "file_type_idris" ),
+( "lintstagedrc" , "file_type_lintstagedrc" ),
+( "liquid" , "file_type_liquid" ),
+( "lnk" , "file_type_lnk" ),
+( "lock" , "emoji_type_lock" ),
+( "log" , "file_type_log" ),
+( "ls" , "file_type_livescript" ),
+( "lua" , "file_type_lua" ),
+( "lucee" , "file_type_cf2" ),
+( "m2v" , "file_type_video" ),
+( "m4a" , "file_type_audio" ),
+( "m4b" , "file_type_audio" ),
+( "m4p" , "file_type_audio" ),
+( "m4v" , "file_type_video" ),
+( "mailmap" , "file_type_git" ),
+( "mam" , "file_type_access2" ),
+( "manifest" , "file_type_manifest" ),
+( "map" , "file_type_map" ),
+( "maq" , "file_type_access2" ),
+( "markdown" , "file_type_markdown" ),
+( "master" , "file_type_layout" ),
+( "md" , "file_type_markdown" ),
+( "mdb" , "file_type_access2" ),
+( "mdown" , "file_type_markdown" ),
+( "mdw" , "file_type_access2" ),
+( "mdx" , "file_type_mdx" ),
+( "merlin" , "file_type_ocaml" ),
+( "metadata" , "file_type_flutter" ),
+( "mex" , "file_type_matlab" ),
+( "mexn" , "file_type_matlab" ),
+( "mexrs6" , "file_type_matlab" ),
+( "mk3d" , "file_type_video" ),
+( "mkv" , "file_type_video" ),
+( "mmf" , "file_type_audio" ),
+( "mn" , "file_type_matlab" ),
+( "mo" , "file_type_poedit" ),
+( "modernizr" , "file_type_modernizr" ),
+( "mogg" , "file_type_audio" ),
+( "mov" , "file_type_video" ),
+( "mp2" , "file_type_video" ),
+( "mp3" , "file_type_audio" ),
+( "mp4" , "file_type_video" ),
+( "mpc" , "file_type_audio" ),
+( "mpe" , "file_type_video" ),
+( "mpeg" , "file_type_video" ),
+( "mpeg2" , "file_type_video" ),
+( "mpg" , "file_type_video" ),
+( "mpv" , "file_type_video" ),
+( "msg" , "file_type_outlook" ),
+( "mst" , "file_type_mustache" ),
+( "msv" , "file_type_audio" ),
+( "mtn-ignore" , "file_type_monotone" ),
+( "mum" , "file_type_matlab" ),
+( "mustache" , "file_type_mustache" ),
+( "mx" , "file_type_matlab" ),
+( "mx3" , "file_type_matlab" ),
+( "mysql" , "file_type_mysql" ),
+( "n" , "file_type_binary" ),
+( "ndll" , "file_type_binary" ),
+( "nix" , "file_type_nix" ),
+( "njs" , "file_type_nunjucks" ),
+( "njsproj" , "file_type_njsproj" ),
+( "node-version" , "file_type_node2" ),
+( "nowignore" , "file_type_zeit" ),
+( "npmignore" , "file_type_npm" ),
+( "npmrc" , "file_type_npm" ),
+( "npy" , "file_type_numpy" ),
+( "npz" , "file_type_numpy" ),
+( "nsriignore" , "file_type_nsri" ),
+( "nsrirc" , "file_type_nsri" ),
+( "nsv" , "file_type_video" ),
+( "nu" , "file_type_nushell" ),
+( "nunj" , "file_type_nunjucks" ),
+( "nupkg" , "file_type_nuget" ),
+( "nuspec" , "file_type_nuget" ),
+( "nvmrc" , "file_type_node2" ),
+( "nycrc" , "file_type_nyc" ),
+( "o" , "file_type_binary" ),
+( "obj" , "file_type_binary" ),
+( "ocrec" , "file_type_lync" ),
+( "ods" , "file_type_excel2" ),
+( "oft" , "file_type_outlook" ),
+( "oga" , "file_type_audio" ),
+( "ogg" , "file_type_audio" ),
+( "ogv" , "file_type_video" ),
+( "one" , "file_type_onenote" ),
+( "onepkg" , "file_type_onenote" ),
+( "onetoc" , "file_type_onenote" ),
+( "onetoc2" , "file_type_onenote" ),
+( "opencl" , "file_type_opencl" ),
+( "opus" , "file_type_audio" ),
+( "org" , "file_type_org" ),
+( "otf" , "file_type_font" ),
+( "otm" , "file_type_outlook" ),
+( "ovpn" , "file_type_ovpn" ),
+( "p12" , "file_type_cert" ),
+( "p4ignore" , "file_type_helix" ),
+( "p7b" , "file_type_cert" ),
+( "p7r" , "file_type_cert" ),
+( "pa" , "file_type_powerpoint2" ),
+( "packages" , "file_type_flutter_package" ),
+( "patch" , "file_type_patch" ),
+( "pcd" , "file_type_pcl" ),
+( "pck" , "file_type_plsql_package" ),
+( "pdb" , "file_type_binary" ),
+( "pde" , "file_type_arduino" ),
+( "pdf" , "file_type_pdf2" ),
+( "pem" , "file_type_key" ),
+( "pex" , "file_type_xml" ),
+( "pfa" , "file_type_font" ),
+( "pfb" , "file_type_font" ),
+( "pfx" , "file_type_cert" ),
+( "pgsql" , "file_type_pgsql" ),
+( "phar" , "file_type_php3" ),
+( "php" , "file_type_php" ),
+( "php1" , "file_type_php3" ),
+( "php2" , "file_type_php3" ),
+( "php3" , "file_type_php3" ),
+( "php4" , "file_type_php3" ),
+( "php5" , "file_type_php3" ),
+( "php6" , "file_type_php3" ),
+( "php_cs" , "file_type_phpcsfixer" ),
+( "phps" , "file_type_php3" ),
+( "phpsa" , "file_type_php3" ),
+( "phpt" , "file_type_php3" ),
+( "phpunit" , "file_type_phpunit" ),
+( "phtml" , "file_type_php3" ),
+( "pipfile" , "file_type_pip" ),
+( "pkb" , "file_type_plsql_package_body" ),
+( "pkg" , "file_type_package" ),
+( "pkh" , "file_type_plsql_package_header" ),
+( "pks" , "file_type_plsql_package_spec" ),
+( "plantuml" , "file_type_plantuml" ),
+( "plist" , "file_type_config" ),
+( "png" , "file_type_image" ),
+( "po" , "file_type_poedit" ),
+( "policyfile" , "file_type_chef" ),
+( "postcssrc" , "file_type_postcssconfig" ),
+( "pot" , "file_type_powerpoint2" ),
+( "potm" , "file_type_powerpoint2" ),
+( "potx" , "file_type_powerpoint2" ),
+( "ppa" , "file_type_powerpoint2" ),
+( "ppam" , "file_type_powerpoint2" ),
+( "pps" , "file_type_powerpoint2" ),
+( "ppsm" , "file_type_powerpoint2" ),
+( "ppsx" , "file_type_powerpoint2" ),
+( "ppt" , "file_type_powerpoint2" ),
+( "pptm" , "file_type_powerpoint2" ),
+( "pptx" , "file_type_powerpoint2" ),
+( "prettierignore" , "file_type_prettier" ),
+( "prettierrc" , "file_type_prettier" ),
+( "pro" , "file_type_prolog" ),
+( "procfile" , "file_type_procfile" ),
+( "psd" , "file_type_photoshop2" ),
+( "psd1" , "file_type_powershell_psd2" ),
+( "psm1" , "file_type_powershell_psm2" ),
+( "psmdcp" , "file_type_nuget" ),
+( "pst" , "file_type_outlook" ),
+( "pu" , "file_type_plantuml" ),
+( "pub" , "file_type_publisher" ),
+( "pug-lintrc" , "file_type_pug" ),
+( "puml" , "file_type_plantuml" ),
+( "puz" , "file_type_publisher" ),
+( "py" , "file_type_python" ),
+( "pyc" , "file_type_binary" ),
+( "pyd" , "file_type_binary" ),
+( "pyo" , "file_type_binary" ),
+( "pyup" , "file_type_pyup" ),
+( "q" , "file_type_q" ),
+( "qbs" , "file_type_qbs" ),
+( "qmldir" , "file_type_qmldir" ),
+( "qt" , "file_type_video" ),
+( "qvd" , "file_type_qlikview" ),
+( "qvw" , "file_type_qlikview" ),
+( "ra" , "file_type_audio" ),
+( "rake" , "file_type_rake" ),
+( "rakefile" , "file_type_rake" ),
+( "rar" , "file_type_zip2" ),
+( "raw" , "file_type_audio" ),
+( "rb" , "file_type_ruby" ),
+( "reg" , "file_type_registry" ),
+( "rego" , "file_type_rego" ),
+( "rehypeignore" , "file_type_rehype" ),
+( "rehyperc" , "file_type_rehype" ),
+( "remarkignore" , "file_type_remark" ),
+( "remarkrc" , "file_type_remark" ),
+( "renovaterc" , "file_type_renovate" ),
+( "retextignore" , "file_type_retext" ),
+( "retextrc" , "file_type_retext" ),
+( "rm" , "file_type_video" ),
+( "rmvb" , "file_type_video" ),
+( "rproj" , "file_type_rproj" ),
+( "rs" , "file_type_rust" ),
+( "rspec" , "file_type_rspec" ),
+( "rt" , "file_type_reacttemplate" ),
+( "rust-toolchain" , "file_type_rust_toolchain" ),
+( "rwd" , "file_type_matlab" ),
+( "sailsrc" , "file_type_sails" ),
+( "sass" , "file_type_sass" ),
+( "scpt" , "file_type_binary" ),
+( "scptd" , "file_type_binary" ),
+( "scssm" , "file_type_scss" ),
+( "sentryclirc" , "file_type_sentry" ),
+( "sequelizerc" , "file_type_sequelize" ),
+( "sfd" , "file_type_font" ),
+( "sh" , "file_type_shell" ),
+( "sig" , "file_type_onenote" ),
+( "sketch" , "file_type_sketch" ),
+( "slddc" , "file_type_matlab" ),
+( "sldm" , "file_type_powerpoint2" ),
+( "sldx" , "file_type_powerpoint2" ),
+( "sln" , "file_type_sln2" ),
+( "sls" , "file_type_saltstack" ),
+( "slx" , "file_type_matlab" ),
+( "smv" , "file_type_matlab" ),
+( "snyk" , "file_type_snyk" ),
+( "so" , "file_type_binary" ),
+( "solidarity" , "file_type_solidarity" ),
+( "spe" , "file_type_spacengine" ),
+( "sql" , "file_type_sql" ),
+( "sqlite" , "file_type_sqlite" ),
+( "sqlite3" , "file_type_sqlite" ),
+( "src" , "file_type_cert" ),
+( "sss" , "file_type_sss" ),
+( "sst" , "file_type_cert" ),
+( "stl" , "file_type_cert" ),
+( "storyboard" , "file_type_storyboard" ),
+( "stylelintcache" , "file_type_stylelint" ),
+( "stylelintignore" , "file_type_stylelint" ),
+( "stylelintrc" , "file_type_stylelint" ),
+( "svg" , "file_type_svg" ),
+( "svi" , "file_type_video" ),
+( "svnignore" , "file_type_subversion" ),
+( "swc" , "file_type_flash" ),
+( "swf" , "file_type_flash" ),
+( "swift" , "file_type_swift" ),
+( "tar" , "file_type_zip2" ),
+( "tcl" , "file_type_tcl" ),
+( "texi" , "file_type_tex" ),
+( "tfignore" , "file_type_tfs" ),
+( "tfstate" , "file_type_terraform" ),
+( "tgz" , "file_type_zip2" ),
+( "tiff" , "file_type_image" ),
+( "tikz" , "file_type_tex" ),
+( "tlg" , "file_type_log" ),
+( "tmlanguage" , "file_type_xml" ),
+( "todo" , "file_type_todo" ),
+( "toml" , "file_type_toml" ),
+( "ts" , "file_type_typescript" ),
+( "tst" , "file_type_test" ),
+( "tt2" , "file_type_tt" ),
+( "tta" , "file_type_audio" ),
+( "ttf" , "file_type_font" ),
+( "txt" , "file_type_text" ),
+( "unibeautifyrc" , "file_type_unibeautify" ),
+( "unity" , "file_type_shaderlab" ),
+( "vagrantfile" , "file_type_vagrant" ),
+( "vala" , "file_type_vala" ),
+( "vapi" , "file_type_vapi" ),
+( "vash" , "file_type_vash" ),
+( "vbhtml" , "file_type_vbhtml" ),
+( "vbproj" , "file_type_vbproj" ),
+( "vcxproj" , "file_type_vcxproj" ),
+( "vercelignore" , "file_type_zeit" ),
+( "vimrc" , "file_type_vim" ),
+( "vob" , "file_type_video" ),
+( "vox" , "file_type_audio" ),
+( "vscodeignore" , "file_type_vscode-insiders" ),
+( "vsix" , "file_type_vsix" ),
+( "vsixmanifest" , "file_type_vsixmanifest" ),
+( "vuerc" , "file_type_vueconfig" ),
+( "wasm" , "file_type_wasm" ),
+( "watchmanconfig" , "file_type_watchmanconfig" ),
+( "wav" , "file_type_audio" ),
+( "webm" , "file_type_video" ),
+( "webp" , "file_type_webp" ),
+( "wll" , "file_type_word2" ),
+( "wma" , "file_type_audio" ),
+( "wmv" , "file_type_video" ),
+( "woff" , "file_type_font" ),
+( "woff2" , "file_type_font" ),
+( "wxml" , "file_type_wxml" ),
+( "wxss" , "file_type_wxss" ),
+( "xcodeproj" , "file_type_xcode" ),
+( "xfl" , "file_type_xfl" ),
+( "xib" , "file_type_xib" ),
+( "xlf" , "file_type_xliff" ),
+( "xliff" , "file_type_xliff" ),
+( "xls" , "file_type_excel2" ),
+( "xlsm" , "file_type_excel2" ),
+( "xlsx" , "file_type_excel2" ),
+( "xsf" , "file_type_infopath" ),
+( "xsn" , "file_type_infopath" ),
+( "xtp2" , "file_type_infopath" ),
+( "xvc" , "file_type_matlab" ),
+( "xz" , "file_type_zip2" ),