// This code is adapted from https://github.com/devblackops/Terminal-Icons (which also uses the MIT license). // Nerd fonts can be installed by following the instructions on the Nerd Fonts repository: https://github.com/ryanoasis/nerd-fonts using System.IO.Abstractions; namespace Terminal.Gui; internal class NerdFonts { private readonly char _nf_cod_file = ''; private readonly char _nf_cod_folder = ''; private readonly char _nf_cod_folder_opened = ''; /// /// If , enables the use of Nerd unicode symbols. This requires specific font(s) to be /// installed on the users machine to work correctly. Defaults to . /// [SerializableConfigurationProperty (Scope = typeof (ThemeScope))] public static bool Enable { get; set; } = false; /// Mapping of file extension to name. public Dictionary ExtensionToIcon { get; set; } = new () { // Archive files { ".7z", "nf-oct-file_zip" }, { ".bz", "nf-oct-file_zip" }, { ".tar", "nf-oct-file_zip" }, { ".zip", "nf-oct-file_zip" }, { ".gz", "nf-oct-file_zip" }, { ".xz", "nf-oct-file_zip" }, { ".br", "nf-oct-file_zip" }, { ".bzip2", "nf-oct-file_zip" }, { ".gzip", "nf-oct-file_zip" }, { ".brotli", "nf-oct-file_zip" }, { ".rar", "nf-oct-file_zip" }, { ".tgz", "nf-oct-file_zip" }, // Executable things { ".bat", "nf-custom-msdos" }, { ".cmd", "nf-custom-msdos" }, { ".exe", "nf-mdi-application" }, { ".pl", "nf-dev-perl" }, { ".sh", "nf-oct-terminal" }, // App Packages { ".msi", "nf-mdi-package_variant" }, { ".msix", "nf-mdi-package_variant" }, { ".msixbundle", "nf-mdi-package_variant" }, { ".appx", "nf-mdi-package_variant" }, { ".AppxBundle", "nf-mdi-package_variant" }, { ".deb", "nf-mdi-package_variant" }, { ".rpm", "nf-mdi-package_variant" }, // PowerShell { ".ps1", "nf-mdi-console_line" }, { ".psm1", "nf-mdi-console_line" }, { ".psd1", "nf-mdi-console_line" }, { ".ps1xml", "nf-mdi-console_line" }, { ".psc1", "nf-mdi-console_line" }, { ".pssc", "nf-mdi-console_line" }, // Javascript { ".js", "nf-dev-javascript" }, { ".esx", "nf-dev-javascript" }, { ".mjs", "nf-dev-javascript" }, // Java { ".java", "nf-fae-java" }, { ".jar", "nf-fae-java" }, { ".gradle", "nf-mdi-elephant" }, // Python { ".py", "nf-dev-python" }, { ".ipynb", "nf-mdi-notebook" }, // React { ".jsx", "nf-dev-react" }, { ".tsx", "nf-dev-react" }, // Typescript { ".ts", "nf-seti-typescript" }, // Not-executable code files { ".dll", "nf-fa-archive" }, // Importable Data files { ".clixml", "nf-dev-code_badge" }, { ".csv", "nf-mdi-file_excel" }, { ".tsv", "nf-mdi-file_excel" }, // Settings { ".ini", "nf-fa-gear" }, { ".dlc", "nf-fa-gear" }, { ".config", "nf-fa-gear" }, { ".conf", "nf-fa-gear" }, { ".properties", "nf-fa-gear" }, { ".prop", "nf-fa-gear" }, { ".settings", "nf-fa-gear" }, { ".option", "nf-fa-gear" }, { ".reg", "nf-fa-gear" }, { ".props", "nf-fa-gear" }, { ".toml", "nf-fa-gear" }, { ".prefs", "nf-fa-gear" }, { ".sln.dotsettings", "nf-fa-gear" }, { ".sln.dotsettings.user", "nf-fa-gear" }, { ".cfg", "nf-fa-gear" }, // Source Files { ".c", "nf-mdi-language_c" }, { ".cpp", "nf-mdi-language_cpp" }, { ".go", "nf-dev-go" }, { ".php", "nf-dev-php" }, // Visual Studio { ".csproj", "nf-dev-visualstudio" }, { ".ruleset", "nf-dev-visualstudio" }, { ".sln", "nf-dev-visualstudio" }, { ".slnf", "nf-dev-visualstudio" }, { ".suo", "nf-dev-visualstudio" }, { ".vb", "nf-dev-visualstudio" }, { ".vbs", "nf-dev-visualstudio" }, { ".vcxitems", "nf-dev-visualstudio" }, { ".vcxitems.filters", "nf-dev-visualstudio" }, { ".vcxproj", "nf-dev-visualstudio" }, { ".vsxproj.filters", "nf-dev-visualstudio" }, // CSharp { ".cs", "nf-mdi-language_csharp" }, { ".csx", "nf-mdi-language_csharp" }, // Haskell { ".hs", "nf-dev-haskell" }, // XAML { ".xaml", "nf-mdi-xaml" }, // Rust { ".rs", "nf-dev-rust" }, // Database { ".pdb", "nf-dev-database" }, { ".sql", "nf-dev-database" }, { ".pks", "nf-dev-database" }, { ".pkb", "nf-dev-database" }, { ".accdb", "nf-dev-database" }, { ".mdb", "nf-dev-database" }, { ".sqlite", "nf-dev-database" }, { ".pgsql", "nf-dev-database" }, { ".postgres", "nf-dev-database" }, { ".psql", "nf-dev-database" }, // Source Control { ".patch", "nf-dev-git" }, // Project files { ".user", "nf-mdi-visualstudio" }, { ".code-workspace", "nf-mdi-visualstudio" }, // Text data files { ".log", "nf-fa-list" }, { ".txt", "nf-mdi-file_document" }, // Subtitle files { ".srt", "nf-mdi-file_document" }, { ".lrc", "nf-mdi-file_document" }, { ".ass", "nf-fa-eye" }, // HTML/css { ".html", "nf-seti-html" }, { ".htm", "nf-seti-html" }, { ".xhtml", "nf-seti-html" }, { ".html_vm", "nf-seti-html" }, { ".asp", "nf-seti-html" }, { ".css", "nf-dev-css3" }, { ".sass", "nf-dev-sass" }, { ".scss", "nf-dev-sass" }, { ".less", "nf-dev-less" }, // Markdown { ".md", "nf-dev-markdown" }, { ".markdown", "nf-dev-markdown" }, { ".rst", "nf-dev-markdown" }, // Handlebars { ".hbs", "nf-seti-mustache" }, // JSON { ".json", "nf-seti-json" }, { ".tsbuildinfo", "nf-seti-json" }, // YAML { ".yml", "nf-mdi-format_align_left" }, { ".yaml", "nf-mdi-format_align_left" }, // LUA { ".lua", "nf-seti-lua" }, // Clojure { ".clj", "nf-dev-clojure" }, { ".cljs", "nf-dev-clojure" }, { ".cljc", "nf-dev-clojure" }, // Groovy { ".groovy", "nf-dev-groovy" }, // Vue { ".vue", "nf-mdi-vuejs" }, // Dart { ".dart", "nf-dev-dart" }, // Elixir { ".ex", "nf-custom-elixir" }, { ".exs", "nf-custom-elixir" }, { ".eex", "nf-custom-elixir" }, { ".leex", "nf-custom-elixir" }, // Erlang { ".erl", "nf-dev-erlang" }, // Elm { ".elm", "nf-custom-elm" }, // Applescript { ".applescript", "nf-dev-apple" }, // XML { ".xml", "nf-mdi-file_xml" }, { ".plist", "nf-mdi-file_xml" }, { ".xsd", "nf-mdi-file_xml" }, { ".dtd", "nf-mdi-file_xml" }, { ".xsl", "nf-mdi-file_xml" }, { ".xslt", "nf-mdi-file_xml" }, { ".resx", "nf-mdi-file_xml" }, { ".iml", "nf-mdi-file_xml" }, { ".xquery", "nf-mdi-file_xml" }, { ".tmLanguage", "nf-mdi-file_xml" }, { ".manifest", "nf-mdi-file_xml" }, { ".project", "nf-mdi-file_xml" }, // Documents { ".chm", "nf-mdi-help_box" }, { ".pdf", "nf-mdi-file_pdf" }, // Excel { ".xls", "nf-mdi-file_excel" }, { ".xlsx", "nf-mdi-file_excel" }, // PowerPoint { ".pptx", "nf-mdi-file_powerpoint" }, { ".ppt", "nf-mdi-file_powerpoint" }, { ".pptm", "nf-mdi-file_powerpoint" }, { ".potx", "nf-mdi-file_powerpoint" }, { ".potm", "nf-mdi-file_powerpoint" }, { ".ppsx", "nf-mdi-file_powerpoint" }, { ".ppsm", "nf-mdi-file_powerpoint" }, { ".pps", "nf-mdi-file_powerpoint" }, { ".ppam", "nf-mdi-file_powerpoint" }, { ".ppa", "nf-mdi-file_powerpoint" }, // Word { ".doc", "nf-mdi-file_word" }, { ".docx", "nf-mdi-file_word" }, { ".rtf", "nf-mdi-file_word" }, // Audio { ".mp3", "nf-fa-file_audio_o" }, { ".flac", "nf-fa-file_audio_o" }, { ".m4a", "nf-fa-file_audio_o" }, { ".wma", "nf-fa-file_audio_o" }, { ".aiff", "nf-fa-file_audio_o" }, { ".wav", "nf-fa-file_audio_o" }, { ".aac", "nf-fa-file_audio_o" }, { ".opus", "nf-fa-file_audio_o" }, // Images { ".png", "nf-fa-file_image_o" }, { ".jpeg", "nf-fa-file_image_o" }, { ".jpg", "nf-fa-file_image_o" }, { ".gif", "nf-fa-file_image_o" }, { ".ico", "nf-fa-file_image_o" }, { ".tif", "nf-fa-file_image_o" }, { ".tiff", "nf-fa-file_image_o" }, { ".psd", "nf-fa-file_image_o" }, { ".psb", "nf-fa-file_image_o" }, { ".ami", "nf-fa-file_image_o" }, { ".apx", "nf-fa-file_image_o" }, { ".bmp", "nf-fa-file_image_o" }, { ".bpg", "nf-fa-file_image_o" }, { ".brk", "nf-fa-file_image_o" }, { ".cur", "nf-fa-file_image_o" }, { ".dds", "nf-fa-file_image_o" }, { ".dng", "nf-fa-file_image_o" }, { ".eps", "nf-fa-file_image_o" }, { ".exr", "nf-fa-file_image_o" }, { ".fpx", "nf-fa-file_image_o" }, { ".gbr", "nf-fa-file_image_o" }, { ".jbig2", "nf-fa-file_image_o" }, { ".jb2", "nf-fa-file_image_o" }, { ".jng", "nf-fa-file_image_o" }, { ".jxr", "nf-fa-file_image_o" }, { ".pbm", "nf-fa-file_image_o" }, { ".pgf", "nf-fa-file_image_o" }, { ".pic", "nf-fa-file_image_o" }, { ".raw", "nf-fa-file_image_o" }, { ".webp", "nf-fa-file_image_o" }, { ".svg", "nf-mdi-svg" }, // Video { ".webm", "nf-fa-file_video_o" }, { ".mkv", "nf-fa-file_video_o" }, { ".flv", "nf-fa-file_video_o" }, { ".vob", "nf-fa-file_video_o" }, { ".ogv", "nf-fa-file_video_o" }, { ".ogg", "nf-fa-file_video_o" }, { ".gifv", "nf-fa-file_video_o" }, { ".avi", "nf-fa-file_video_o" }, { ".mov", "nf-fa-file_video_o" }, { ".qt", "nf-fa-file_video_o" }, { ".wmv", "nf-fa-file_video_o" }, { ".yuv", "nf-fa-file_video_o" }, { ".rm", "nf-fa-file_video_o" }, { ".rmvb", "nf-fa-file_video_o" }, { ".mp4", "nf-fa-file_video_o" }, { ".mpg", "nf-fa-file_video_o" }, { ".mp2", "nf-fa-file_video_o" }, { ".mpeg", "nf-fa-file_video_o" }, { ".mpe", "nf-fa-file_video_o" }, { ".mpv", "nf-fa-file_video_o" }, { ".m2v", "nf-fa-file_video_o" }, // Email { ".ics", "nf-fa-calendar" }, // Certificates { ".cer", "nf-fa-certificate" }, { ".cert", "nf-fa-certificate" }, { ".crt", "nf-fa-certificate" }, { ".pfx", "nf-fa-certificate" }, // Keys { ".pem", "nf-fa-key" }, { ".pub", "nf-fa-key" }, { ".key", "nf-fa-key" }, { ".asc", "nf-fa-key" }, { ".gpg", "nf-fa-key" }, // Fonts { ".woff", "nf-fa-font" }, { ".woff2", "nf-fa-font" }, { ".ttf", "nf-fa-font" }, { ".eot", "nf-fa-font" }, { ".suit", "nf-fa-font" }, { ".otf", "nf-fa-font" }, { ".bmap", "nf-fa-font" }, { ".fnt", "nf-fa-font" }, { ".odttf", "nf-fa-font" }, { ".ttc", "nf-fa-font" }, { ".font", "nf-fa-font" }, { ".fonts", "nf-fa-font" }, { ".sui", "nf-fa-font" }, { ".ntf", "nf-fa-font" }, { ".mrg", "nf-fa-font" }, // Ruby { ".rb", "nf-oct-ruby" }, { ".erb", "nf-oct-ruby" }, { ".gemfile", "nf-oct-ruby" }, { "rakefile", "nf-oct-ruby" }, // FSharp { ".fs", "nf-dev-fsharp" }, { ".fsx", "nf-dev-fsharp" }, { ".fsi", "nf-dev-fsharp" }, { ".fsproj", "nf-dev-fsharp" }, // Docker { ".dockerignore", "nf-dev-docker" }, { ".dockerfile", "nf-dev-docker" }, // VSCode { ".vscodeignore", "nf-fa-gear" }, { ".vsixmanifest", "nf-fa-gear" }, { ".vsix", "nf-fa-gear" }, { ".code-workplace", "nf-fa-gear" }, // Sublime { ".sublime-project", "nf-dev-sublime" }, { ".sublime-workspace", "nf-dev-sublime" }, { ".lock", "nf-fa-lock" }, // Terraform { ".tf", "nf-dev-code_badge" }, { ".tfvars", "nf-dev-code_badge" }, { ".tf.json", "nf-dev-code_badge" }, { ".tfvars.json", "nf-dev-code_badge" }, { ".auto.tfvars", "nf-dev-code_badge" }, { ".auto.tfvars.json", "nf-dev-code_badge" }, // Disk Image { ".vmdk", "nf-mdi-harddisk" }, { ".vhd", "nf-mdi-harddisk" }, { ".vhdx", "nf-mdi-harddisk" }, { ".img", "nf-fae-disco" }, { ".iso", "nf-fae-disco" }, // R language { ".R", "nf-mdi-language_r" }, { ".Rmd", "nf-mdi-language_r" }, { ".Rproj", "nf-mdi-language_r" }, // Julia language { ".jl", "nf-seti-julia" }, // Vim { ".vim", "nf-custom-vim" }, // Puppet { ".pp", "nf-custom-puppet" }, { ".epp", "nf-custom-puppet" } }; /// Mapping of file name to name. public Dictionary FilenameToIcon { get; set; } = new () { { "docs", "nf-oct-repo" }, { "documents", "nf-oct-repo" }, { "desktop", "nf-mdi-desktop_classic" }, { "benchmark", "nf-mdi-timer" }, { "demo", "nf-cod-preview" }, { "samples", "nf-cod-preview" }, { "contacts", "nf-mdi-contacts" }, { "apps", "nf-mdi-apps" }, { "applications", "nf-mdi-apps" }, { "artifacts", "nf-cod-package" }, { "shortcuts", "nf-oct-file_symlink_directory" }, { "links", "nf-oct-file_symlink_directory" }, { "fonts", "nf-fa-font" }, { "images", "nf-mdi-folder_image" }, { "photos", "nf-mdi-folder_image" }, { "pictures", "nf-mdi-folder_image" }, { "videos", "nf-mdi-movie" }, { "movies", "nf-mdi-movie" }, { "media", "nf-dev-html5_multimedia" }, { "music", "nf-mdi-library_music" }, { "songs", "nf-mdi-library_music" }, { "onedrive", "nf-mdi-onedrive" }, { "downloads", "nf-mdi-folder_download" }, { "src", "nf-oct-terminal" }, { "development", "nf-oct-terminal" }, { "projects", "nf-seti-project" }, { "bin", "nf-oct-file_binary" }, { "tests", "nf-mdi-test_tube" }, { "windows", "nf-fa-windows" }, { "users", "nf-fa-users" }, { "favorites", "nf-mdi-folder_star" }, { ".config", "nf-seti-config" }, { ".cache", "nf-mdi-cached" }, { ".vscode", "nf-custom-folder_config" }, { ".vscode-insiders", "nf-custom-folder_config" }, { ".git", "nf-custom-folder_git" }, { ".github", "nf-custom-folder_github" }, { "github", "nf-fa-github_alt" }, { "node_modules", "nf-custom-folder_npm" }, { ".azure", "nf-mdi-azure" }, { ".aws", "nf-dev-aws" }, { ".kube", "nf-mdi-ship_wheel" }, { ".docker", "nf-dev-docker" }, { "umbraco", "nf-mdi-umbraco" }, { ".gitattributes", "nf-dev-git" }, { ".gitconfig", "nf-dev-git" }, { ".gitignore", "nf-dev-git" }, { ".gitmodules", "nf-dev-git" }, { ".gitkeep", "nf-dev-git" }, { "git-history", "nf-dev-git" }, { "LICENSE", "nf-mdi-certificate" }, { "CHANGELOG.md", "nf-fae-checklist_o" }, { "CHANGELOG.txt", "nf-fae-checklist_o" }, { "CHANGELOG", "nf-fae-checklist_o" }, { "README.md", "nf-mdi-library_books" }, { "README.txt", "nf-mdi-library_books" }, { "README", "nf-mdi-library_books" }, { ".DS_Store", "nf-fa-file_o" }, { ".tsbuildinfo", "nf-seti-json" }, { ".jscsrc", "nf-seti-json" }, { ".jshintrc", "nf-seti-json" }, { "tsconfig.json", "nf-seti-json" }, { "tslint.json", "nf-seti-json" }, { "composer.lock", "nf-seti-json" }, { ".jsbeautifyrc", "nf-seti-json" }, { ".esformatter", "nf-seti-json" }, { "cdp.pid", "nf-seti-json" }, { ".htaccess", "nf-mdi-file_xml" }, { ".jshintignore", "nf-fa-gear" }, { ".buildignore", "nf-fa-gear" }, { ".mrconfig", "nf-fa-gear" }, { ".yardopts", "nf-fa-gear" }, { "manifest.mf", "nf-fa-gear" }, { ".clang-format", "nf-fa-gear" }, { ".clang-tidy", "nf-fa-gear" }, { "favicon.ico", "nf-seti-favicon" }, { ".travis.yml", "nf-dev-travis" }, { ".gitlab-ci.yml", "nf-fa-gitlab" }, { ".jenkinsfile", "nf-dev-jenkins" }, { "bitbucket-pipelines.yml", "nf-dev-bitbucket" }, { "bitbucket-pipelines.yaml", "nf-dev-bitbucket" }, { ".azure-pipelines.yml", "nf-mdi-azure" }, // Firebase { "firebase.json", "nf-dev-firebase" }, { ".firebaserc", "nf-dev-firebase" }, // Bower { ".bowerrc", "nf-dev-bower" }, { "bower.json", "nf-dev-bower" }, // Conduct { "code_of_conduct.md", "nf-fa-handshake_o" }, { "code_of_conduct.txt", "nf-fa-handshake_o" }, // Docker { "Dockerfile", "nf-dev-docker" }, { "docker-compose.yml", "nf-dev-docker" }, { "docker-compose.yaml", "nf-dev-docker" }, { "docker-compose.dev.yml", "nf-dev-docker" }, { "docker-compose.local.yml", "nf-dev-docker" }, { "docker-compose.ci.yml", "nf-dev-docker" }, { "docker-compose.override.yml", "nf-dev-docker" }, { "docker-compose.staging.yml", "nf-dev-docker" }, { "docker-compose.prod.yml", "nf-dev-docker" }, { "docker-compose.production.yml", "nf-dev-docker" }, { "docker-compose.test.yml", "nf-dev-docker" }, // Vue { "vue.config.js", "nf-mdi-vuejs" }, { "vue.config.ts", "nf-mdi-vuejs" }, // Gulp { "gulpfile.js", "nf-dev-gulp" }, { "gulpfile.ts", "nf-dev-gulp" }, { "gulpfile.babel.js", "nf-dev-gulp" }, // Javascript { "gruntfile.js", "nf-seti-grunt" }, // NodeJS { "package.json", "nf-dev-nodejs_small" }, { "package-lock.json", "nf-dev-nodejs_small" }, { ".nvmrc", "nf-dev-nodejs_small" }, { ".esmrc", "nf-dev-nodejs_small" }, // NPM { ".nmpignore", "nf-dev-npm" }, { ".npmrc", "nf-dev-npm" }, // Authors { "authors", "nf-oct-person" }, { "authors.md", "nf-oct-person" }, { "authors.txt", "nf-oct-person" }, // Terraform { ".terraform.lock.hcl", "nf-fa-lock" }, // Gradle { "gradlew", "nf-mdi-elephant" } }; /// All nerd glyphs used by Terminal.Gui by name. public Dictionary Glyphs { get; set; } = new () { { "nf-cod-package", '' }, { "nf-cod-preview", '' }, { "nf-custom-folder_config", '' }, { "nf-custom-folder_git", '' }, { "nf-custom-folder_git_branch", '' }, { "nf-custom-folder_github", '' }, { "nf-custom-folder_npm", '' }, { "nf-dev-aws", '' }, { "nf-dev-docker", '' }, { "nf-dev-html5_multimedia", '' }, { "nf-fa-font", '' }, { "nf-fa-font_awesome", '' }, { "nf-fa-fonticons", '' }, { "nf-fa-github_alt", '' }, { "nf-fa-users", '' }, { "nf-fa-windows", '' }, { "nf-mdi-apps", '' }, { "nf-mdi-azure", 'ﴃ' }, { "nf-mdi-cached", '' }, { "nf-mdi-contacts", '﯉' }, { "nf-mdi-desktop_classic", 'ﲾ' }, { "nf-mdi-folder_download", '' }, { "nf-mdi-folder_image", '' }, { "nf-mdi-folder_star", 'ﮛ' }, { "nf-mdi-library_music", '' }, { "nf-mdi-movie", '' }, { "nf-mdi-movie_roll", 'ﳜ' }, { "nf-mdi-onedrive", '' }, { "nf-mdi-ship_wheel", 'ﴱ' }, { "nf-mdi-test_tube", 'ﭧ' }, { "nf-mdi-timer", '祥' }, { "nf-mdi-timer_10", '福' }, { "nf-mdi-timer_3", '靖' }, { "nf-mdi-timer_off", '精' }, { "nf-mdi-timer_sand", '羽' }, { "nf-mdi-timer_sand_empty", 'ﮫ' }, { "nf-mdi-timer_sand_full", 'ﲊ' }, { "nf-mdi-umbraco", '煮' }, { "nf-oct-file_binary", '' }, { "nf-oct-file_symlink_directory", '' }, { "nf-oct-repo", '' }, { "nf-oct-repo_clone", '' }, { "nf-oct-repo_force_push", '' }, { "nf-oct-repo_forked", '' }, { "nf-oct-repo_pull", '' }, { "nf-oct-repo_push", '' }, { "nf-oct-terminal", '' }, { "nf-seti-config", '' }, { "nf-seti-project", '' }, { "nf-custom-elixir", '' }, { "nf-custom-elm", '' }, { "nf-custom-msdos", '' }, { "nf-custom-puppet", '' }, { "nf-custom-vim", '' }, { "nf-dev-apple", '' }, { "nf-dev-bitbucket", '' }, { "nf-dev-bower", '' }, { "nf-dev-clojure", '' }, { "nf-dev-clojure_alt", '' }, { "nf-dev-code_badge", '' }, { "nf-dev-css3", '' }, { "nf-dev-css3_full", '' }, { "nf-dev-dart", '' }, { "nf-dev-database", '' }, { "nf-dev-erlang", '' }, { "nf-dev-firebase", '' }, { "nf-dev-fsharp", '' }, { "nf-dev-git", '' }, { "nf-dev-git_branch", '' }, { "nf-dev-git_commit", '' }, { "nf-dev-git_compare", '' }, { "nf-dev-git_merge", '' }, { "nf-dev-git_pull_request", '' }, { "nf-dev-github", '' }, { "nf-dev-github_alt", '' }, { "nf-dev-github_badge", '' }, { "nf-dev-github_full", '' }, { "nf-dev-go", '' }, { "nf-dev-google_cloud_platform", '' }, { "nf-dev-google_drive", '' }, { "nf-dev-groovy", '' }, { "nf-dev-gulp", '' }, { "nf-dev-haskell", '' }, { "nf-dev-javascript", '' }, { "nf-dev-javascript_badge", '' }, { "nf-dev-javascript_shield", '' }, { "nf-dev-jenkins", '' }, { "nf-dev-less", '' }, { "nf-dev-markdown", '' }, { "nf-dev-nodejs_small", '' }, { "nf-dev-npm", '' }, { "nf-dev-perl", '' }, { "nf-dev-php", '' }, { "nf-dev-python", '' }, { "nf-dev-react", '' }, { "nf-dev-rust", '' }, { "nf-dev-sass", '' }, { "nf-dev-sublime", '' }, { "nf-dev-travis", '' }, { "nf-dev-visualstudio", '' }, { "nf-fa-archive", '' }, { "nf-fa-calendar", '' }, { "nf-fa-calendar_check_o", '' }, { "nf-fa-calendar_minus_o", '' }, { "nf-fa-calendar_o", '' }, { "nf-fa-calendar_plus_o", '' }, { "nf-fa-calendar_times_o", '' }, { "nf-fa-certificate", '' }, { "nf-fa-eye", '' }, { "nf-fa-eye_slash", '' }, { "nf-fa-eyedropper", '' }, { "nf-fa-file_audio_o", '' }, { "nf-fa-file_image_o", '' }, { "nf-fa-file_o", '' }, { "nf-fa-file_video_o", '' }, { "nf-fa-gear", '' }, { "nf-fa-gears", '' }, { "nf-fa-gitlab", '' }, { "nf-fa-handshake_o", '' }, { "nf-fa-key", '' }, { "nf-fa-keyboard_o", '' }, { "nf-fa-list", '' }, { "nf-fa-list_alt", '' }, { "nf-fa-list_ol", '' }, { "nf-fa-list_ul", '' }, { "nf-fa-lock", '' }, { "nf-fae-checklist_o", '' }, { "nf-fae-disco", '' }, { "nf-fae-java", '' }, { "nf-mdi-application", 'ﬓ' }, { "nf-mdi-certificate", '' }, { "nf-mdi-console_line", 'ﲵ' }, { "nf-mdi-elephant", 'ﳄ' }, { "nf-mdi-file_document", '' }, { "nf-mdi-file_document_box", '' }, { "nf-mdi-file_excel", '' }, { "nf-mdi-file_excel_box", '' }, { "nf-mdi-file_pdf", '' }, { "nf-mdi-file_pdf_box", '' }, { "nf-mdi-file_powerpoint", '' }, { "nf-mdi-file_powerpoint_box", '' }, { "nf-mdi-file_word", '' }, { "nf-mdi-file_word_box", '' }, { "nf-mdi-file_xml", '' }, { "nf-mdi-format_align_left", '' }, { "nf-mdi-harddisk", '' }, { "nf-mdi-help_box", 'ﲉ' }, { "nf-mdi-language_c", 'ﭰ' }, { "nf-mdi-language_cpp", 'ﭱ' }, { "nf-mdi-language_csharp", '' }, { "nf-mdi-language_css3", '' }, { "nf-mdi-language_r", 'ﳒ' }, { "nf-mdi-library_books", '' }, { "nf-mdi-notebook", 'ﴬ' }, { "nf-mdi-package_variant", '' }, { "nf-mdi-package_variant_closed", '' }, { "nf-mdi-svg", 'ﰟ' }, { "nf-mdi-visualstudio", '﬏' }, { "nf-mdi-vuejs", '﵂' }, { "nf-mdi-xaml", 'ﭲ' }, { "nf-oct-file_zip", '' }, { "nf-oct-person", '' }, { "nf-oct-ruby", '' }, { "nf-seti-favicon", '' }, { "nf-seti-grunt", '' }, { "nf-seti-html", '' }, { "nf-seti-json", '' }, { "nf-seti-julia", '' }, { "nf-seti-lua", '' }, { "nf-seti-mustache", '' }, { "nf-seti-typescript", '' } }; public char GetNerdIcon (IFileSystemInfo file, bool isOpen) { if (FilenameToIcon.ContainsKey (file.Name)) { return Glyphs [FilenameToIcon [file.Name]]; } if (ExtensionToIcon.ContainsKey (file.Extension)) { return Glyphs [ExtensionToIcon [file.Extension]]; } if (file is IDirectoryInfo d) { return isOpen ? _nf_cod_folder_opened : _nf_cod_folder; } return _nf_cod_file; } }