NerdFonts.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. // This code is adapted from https://github.com/devblackops/Terminal-Icons (which also uses the MIT license).
  2. // Nerd fonts can be installed by following the instructions on the Nerd Fonts repository: https://github.com/ryanoasis/nerd-fonts
  3. using System.Collections.Generic;
  4. using System.IO.Abstractions;
  5. using static Terminal.Gui.ConfigurationManager;
  6. namespace Terminal.Gui {
  7. internal class NerdFonts {
  8. /// <summary>
  9. /// If <see langword="true"/>, enables the use of Nerd unicode symbols.
  10. /// This requires specific font(s) to be installed on the users machine
  11. /// to work correctly. Defaults to <see langword="false"/>.
  12. /// </summary>
  13. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  14. public static bool Enable { get; set; } = false;
  15. public char GetNerdIcon(IFileSystemInfo file, bool isOpen)
  16. {
  17. if(FilenameToIcon.ContainsKey(file.Name))
  18. {
  19. return Glyphs[FilenameToIcon[file.Name]];
  20. }
  21. if(ExtensionToIcon.ContainsKey(file.Extension))
  22. {
  23. return Glyphs[ExtensionToIcon[file.Extension]];
  24. }
  25. if(file is IDirectoryInfo d)
  26. {
  27. return isOpen ? _nf_cod_folder_opened :_nf_cod_folder;
  28. }
  29. return _nf_cod_file;
  30. }
  31. char _nf_cod_folder = '';
  32. char _nf_cod_folder_opened = '';
  33. char _nf_cod_file = '';
  34. /// <summary>
  35. /// All nerd glyphs used by Terminal.Gui by name.
  36. /// </summary>
  37. public Dictionary<string,char> Glyphs {get;set;} = new Dictionary<string, char>{
  38. {"nf-cod-package", ''},
  39. {"nf-cod-preview", ''},
  40. {"nf-custom-folder_config", ''},
  41. {"nf-custom-folder_git", ''},
  42. {"nf-custom-folder_git_branch", ''},
  43. {"nf-custom-folder_github", ''},
  44. {"nf-custom-folder_npm", ''},
  45. {"nf-dev-aws", ''},
  46. {"nf-dev-docker", ''},
  47. {"nf-dev-html5_multimedia", ''},
  48. {"nf-fa-font", ''},
  49. {"nf-fa-font_awesome", ''},
  50. {"nf-fa-fonticons", ''},
  51. {"nf-fa-github_alt", ''},
  52. {"nf-fa-users", ''},
  53. {"nf-fa-windows", ''},
  54. {"nf-mdi-apps", ''},
  55. {"nf-mdi-azure", 'ﴃ'},
  56. {"nf-mdi-cached", ''},
  57. {"nf-mdi-contacts", '﯉'},
  58. {"nf-mdi-desktop_classic", 'ﲾ'},
  59. {"nf-mdi-folder_download", ''},
  60. {"nf-mdi-folder_image", ''},
  61. {"nf-mdi-folder_star", 'ﮛ'},
  62. {"nf-mdi-library_music", ''},
  63. {"nf-mdi-movie", ''},
  64. {"nf-mdi-movie_roll", 'ﳜ'},
  65. {"nf-mdi-onedrive", ''},
  66. {"nf-mdi-ship_wheel", 'ﴱ'},
  67. {"nf-mdi-test_tube", 'ﭧ'},
  68. {"nf-mdi-timer", '祥'},
  69. {"nf-mdi-timer_10", '福'},
  70. {"nf-mdi-timer_3", '靖'},
  71. {"nf-mdi-timer_off", '精'},
  72. {"nf-mdi-timer_sand", '羽'},
  73. {"nf-mdi-timer_sand_empty", 'ﮫ'},
  74. {"nf-mdi-timer_sand_full", 'ﲊ'},
  75. {"nf-mdi-umbraco", '煮'},
  76. {"nf-oct-file_binary", ''},
  77. {"nf-oct-file_symlink_directory", ''},
  78. {"nf-oct-repo", ''},
  79. {"nf-oct-repo_clone", ''},
  80. {"nf-oct-repo_force_push", ''},
  81. {"nf-oct-repo_forked", ''},
  82. {"nf-oct-repo_pull", ''},
  83. {"nf-oct-repo_push", ''},
  84. {"nf-oct-terminal", ''},
  85. {"nf-seti-config", ''},
  86. {"nf-seti-project", ''},
  87. {"nf-custom-elixir", ''},
  88. {"nf-custom-elm", ''},
  89. {"nf-custom-msdos", ''},
  90. {"nf-custom-puppet", ''},
  91. {"nf-custom-vim", ''},
  92. {"nf-dev-apple", ''},
  93. {"nf-dev-bitbucket", ''},
  94. {"nf-dev-bower", ''},
  95. {"nf-dev-clojure", ''},
  96. {"nf-dev-clojure_alt", ''},
  97. {"nf-dev-code_badge", ''},
  98. {"nf-dev-css3", ''},
  99. {"nf-dev-css3_full", ''},
  100. {"nf-dev-dart", ''},
  101. {"nf-dev-database", ''},
  102. {"nf-dev-erlang", ''},
  103. {"nf-dev-firebase", ''},
  104. {"nf-dev-fsharp", ''},
  105. {"nf-dev-git", ''},
  106. {"nf-dev-git_branch", ''},
  107. {"nf-dev-git_commit", ''},
  108. {"nf-dev-git_compare", ''},
  109. {"nf-dev-git_merge", ''},
  110. {"nf-dev-git_pull_request", ''},
  111. {"nf-dev-github", ''},
  112. {"nf-dev-github_alt", ''},
  113. {"nf-dev-github_badge", ''},
  114. {"nf-dev-github_full", ''},
  115. {"nf-dev-go", ''},
  116. {"nf-dev-google_cloud_platform", ''},
  117. {"nf-dev-google_drive", ''},
  118. {"nf-dev-groovy", ''},
  119. {"nf-dev-gulp", ''},
  120. {"nf-dev-haskell", ''},
  121. {"nf-dev-javascript", ''},
  122. {"nf-dev-javascript_badge", ''},
  123. {"nf-dev-javascript_shield", ''},
  124. {"nf-dev-jenkins", ''},
  125. {"nf-dev-less", ''},
  126. {"nf-dev-markdown", ''},
  127. {"nf-dev-nodejs_small", ''},
  128. {"nf-dev-npm", ''},
  129. {"nf-dev-perl", ''},
  130. {"nf-dev-php", ''},
  131. {"nf-dev-python", ''},
  132. {"nf-dev-react", ''},
  133. {"nf-dev-rust", ''},
  134. {"nf-dev-sass", ''},
  135. {"nf-dev-sublime", ''},
  136. {"nf-dev-travis", ''},
  137. {"nf-dev-visualstudio", ''},
  138. {"nf-fa-archive", ''},
  139. {"nf-fa-calendar", ''},
  140. {"nf-fa-calendar_check_o", ''},
  141. {"nf-fa-calendar_minus_o", ''},
  142. {"nf-fa-calendar_o", ''},
  143. {"nf-fa-calendar_plus_o", ''},
  144. {"nf-fa-calendar_times_o", ''},
  145. {"nf-fa-certificate", ''},
  146. {"nf-fa-eye", ''},
  147. {"nf-fa-eye_slash", ''},
  148. {"nf-fa-eyedropper", ''},
  149. {"nf-fa-file_audio_o", ''},
  150. {"nf-fa-file_image_o", ''},
  151. {"nf-fa-file_o", ''},
  152. {"nf-fa-file_video_o", ''},
  153. {"nf-fa-gear", ''},
  154. {"nf-fa-gears", ''},
  155. {"nf-fa-gitlab", ''},
  156. {"nf-fa-handshake_o", ''},
  157. {"nf-fa-key", ''},
  158. {"nf-fa-keyboard_o", ''},
  159. {"nf-fa-list", ''},
  160. {"nf-fa-list_alt", ''},
  161. {"nf-fa-list_ol", ''},
  162. {"nf-fa-list_ul", ''},
  163. {"nf-fa-lock", ''},
  164. {"nf-fae-checklist_o", ''},
  165. {"nf-fae-disco", ''},
  166. {"nf-fae-java", ''},
  167. {"nf-mdi-application", 'ﬓ'},
  168. {"nf-mdi-certificate", ''},
  169. {"nf-mdi-console_line", 'ﲵ'},
  170. {"nf-mdi-elephant", 'ﳄ'},
  171. {"nf-mdi-file_document", ''},
  172. {"nf-mdi-file_document_box", ''},
  173. {"nf-mdi-file_excel", ''},
  174. {"nf-mdi-file_excel_box", ''},
  175. {"nf-mdi-file_pdf", ''},
  176. {"nf-mdi-file_pdf_box", ''},
  177. {"nf-mdi-file_powerpoint", ''},
  178. {"nf-mdi-file_powerpoint_box", ''},
  179. {"nf-mdi-file_word", ''},
  180. {"nf-mdi-file_word_box", ''},
  181. {"nf-mdi-file_xml", ''},
  182. {"nf-mdi-format_align_left", ''},
  183. {"nf-mdi-harddisk", ''},
  184. {"nf-mdi-help_box", 'ﲉ'},
  185. {"nf-mdi-language_c", 'ﭰ'},
  186. {"nf-mdi-language_cpp", 'ﭱ'},
  187. {"nf-mdi-language_csharp", ''},
  188. {"nf-mdi-language_css3", ''},
  189. {"nf-mdi-language_r", 'ﳒ'},
  190. {"nf-mdi-library_books", ''},
  191. {"nf-mdi-notebook", 'ﴬ'},
  192. {"nf-mdi-package_variant", ''},
  193. {"nf-mdi-package_variant_closed", ''},
  194. {"nf-mdi-svg", 'ﰟ'},
  195. {"nf-mdi-visualstudio", '﬏'},
  196. {"nf-mdi-vuejs", '﵂'},
  197. {"nf-mdi-xaml", 'ﭲ'},
  198. {"nf-oct-file_zip", ''},
  199. {"nf-oct-person", ''},
  200. {"nf-oct-ruby", ''},
  201. {"nf-seti-favicon", ''},
  202. {"nf-seti-grunt", ''},
  203. {"nf-seti-html", ''},
  204. {"nf-seti-json", ''},
  205. {"nf-seti-julia", ''},
  206. {"nf-seti-lua", ''},
  207. {"nf-seti-mustache", ''},
  208. {"nf-seti-typescript", ''},
  209. };
  210. /// <summary>
  211. /// Mapping of file name to <see cref="Glyphs"/> name.
  212. /// </summary>
  213. public Dictionary<string, string> FilenameToIcon {get;set;} = new Dictionary<string, string> ()
  214. {
  215. {"docs","nf-oct-repo"},
  216. {"documents","nf-oct-repo"},
  217. {"desktop","nf-mdi-desktop_classic"},
  218. {"benchmark","nf-mdi-timer"},
  219. {"demo","nf-cod-preview"},
  220. {"samples","nf-cod-preview"},
  221. {"contacts","nf-mdi-contacts"},
  222. {"apps","nf-mdi-apps"},
  223. {"applications","nf-mdi-apps"},
  224. {"artifacts","nf-cod-package"},
  225. {"shortcuts","nf-oct-file_symlink_directory"},
  226. {"links","nf-oct-file_symlink_directory"},
  227. {"fonts","nf-fa-font"},
  228. {"images","nf-mdi-folder_image"},
  229. {"photos","nf-mdi-folder_image"},
  230. {"pictures","nf-mdi-folder_image"},
  231. {"videos","nf-mdi-movie"},
  232. {"movies","nf-mdi-movie"},
  233. {"media","nf-dev-html5_multimedia"},
  234. {"music","nf-mdi-library_music"},
  235. {"songs","nf-mdi-library_music"},
  236. {"onedrive","nf-mdi-onedrive"},
  237. {"downloads","nf-mdi-folder_download"},
  238. {"src","nf-oct-terminal"},
  239. {"development","nf-oct-terminal"},
  240. {"projects","nf-seti-project"},
  241. {"bin","nf-oct-file_binary"},
  242. {"tests","nf-mdi-test_tube"},
  243. {"windows","nf-fa-windows"},
  244. {"users","nf-fa-users"},
  245. {"favorites","nf-mdi-folder_star"},
  246. {".config","nf-seti-config"},
  247. {".cache","nf-mdi-cached"},
  248. {".vscode","nf-custom-folder_config"},
  249. {".vscode-insiders","nf-custom-folder_config"},
  250. {".git","nf-custom-folder_git"},
  251. {".github","nf-custom-folder_github"},
  252. {"github","nf-fa-github_alt"},
  253. {"node_modules","nf-custom-folder_npm"},
  254. {".azure","nf-mdi-azure"},
  255. {".aws","nf-dev-aws"},
  256. {".kube","nf-mdi-ship_wheel"},
  257. {".docker","nf-dev-docker"},
  258. {"umbraco","nf-mdi-umbraco"},
  259. {".gitattributes", "nf-dev-git"},
  260. {".gitconfig", "nf-dev-git"},
  261. {".gitignore", "nf-dev-git"},
  262. {".gitmodules", "nf-dev-git"},
  263. {".gitkeep", "nf-dev-git"},
  264. {"git-history", "nf-dev-git"},
  265. {"LICENSE", "nf-mdi-certificate"},
  266. {"CHANGELOG.md", "nf-fae-checklist_o"},
  267. {"CHANGELOG.txt", "nf-fae-checklist_o"},
  268. {"CHANGELOG", "nf-fae-checklist_o"},
  269. {"README.md", "nf-mdi-library_books"},
  270. {"README.txt", "nf-mdi-library_books"},
  271. {"README", "nf-mdi-library_books"},
  272. {".DS_Store", "nf-fa-file_o"},
  273. {".tsbuildinfo", "nf-seti-json"},
  274. {".jscsrc", "nf-seti-json"},
  275. {".jshintrc", "nf-seti-json"},
  276. {"tsconfig.json", "nf-seti-json"},
  277. {"tslint.json", "nf-seti-json"},
  278. {"composer.lock", "nf-seti-json"},
  279. {".jsbeautifyrc", "nf-seti-json"},
  280. {".esformatter", "nf-seti-json"},
  281. {"cdp.pid", "nf-seti-json"},
  282. {".htaccess", "nf-mdi-file_xml"},
  283. {".jshintignore", "nf-fa-gear"},
  284. {".buildignore", "nf-fa-gear"},
  285. {".mrconfig", "nf-fa-gear"},
  286. {".yardopts", "nf-fa-gear"},
  287. {"manifest.mf", "nf-fa-gear"},
  288. {".clang-format", "nf-fa-gear"},
  289. {".clang-tidy", "nf-fa-gear"},
  290. {"favicon.ico", "nf-seti-favicon"},
  291. {".travis.yml", "nf-dev-travis"},
  292. {".gitlab-ci.yml", "nf-fa-gitlab"},
  293. {".jenkinsfile", "nf-dev-jenkins"},
  294. {"bitbucket-pipelines.yml", "nf-dev-bitbucket"},
  295. {"bitbucket-pipelines.yaml", "nf-dev-bitbucket"},
  296. {".azure-pipelines.yml", "nf-mdi-azure"},
  297. // Firebase
  298. {"firebase.json", "nf-dev-firebase"},
  299. {".firebaserc", "nf-dev-firebase"},
  300. // Bower
  301. {".bowerrc", "nf-dev-bower"},
  302. {"bower.json", "nf-dev-bower"},
  303. // Conduct
  304. {"code_of_conduct.md", "nf-fa-handshake_o"},
  305. {"code_of_conduct.txt", "nf-fa-handshake_o"},
  306. // Docker
  307. {"Dockerfile", "nf-dev-docker"},
  308. {"docker-compose.yml", "nf-dev-docker"},
  309. {"docker-compose.yaml", "nf-dev-docker"},
  310. {"docker-compose.dev.yml", "nf-dev-docker"},
  311. {"docker-compose.local.yml", "nf-dev-docker"},
  312. {"docker-compose.ci.yml", "nf-dev-docker"},
  313. {"docker-compose.override.yml", "nf-dev-docker"},
  314. {"docker-compose.staging.yml", "nf-dev-docker"},
  315. {"docker-compose.prod.yml", "nf-dev-docker"},
  316. {"docker-compose.production.yml", "nf-dev-docker"},
  317. {"docker-compose.test.yml", "nf-dev-docker"},
  318. // Vue
  319. {"vue.config.js", "nf-mdi-vuejs"},
  320. {"vue.config.ts", "nf-mdi-vuejs"},
  321. // Gulp
  322. {"gulpfile.js", "nf-dev-gulp"},
  323. {"gulpfile.ts", "nf-dev-gulp"},
  324. {"gulpfile.babel.js", "nf-dev-gulp"},
  325. // Javascript
  326. {"gruntfile.js", "nf-seti-grunt"},
  327. // NodeJS
  328. {"package.json", "nf-dev-nodejs_small"},
  329. {"package-lock.json", "nf-dev-nodejs_small"},
  330. {".nvmrc", "nf-dev-nodejs_small"},
  331. {".esmrc", "nf-dev-nodejs_small"},
  332. // NPM
  333. {".nmpignore", "nf-dev-npm"},
  334. {".npmrc", "nf-dev-npm"},
  335. // Authors
  336. {"authors", "nf-oct-person"},
  337. {"authors.md", "nf-oct-person"},
  338. {"authors.txt", "nf-oct-person"},
  339. // Terraform
  340. {".terraform.lock.hcl", "nf-fa-lock"},
  341. // Gradle
  342. {"gradlew", "nf-mdi-elephant"},
  343. };
  344. /// <summary>
  345. /// Mapping of file extension to <see cref="Glyphs"/> name.
  346. /// </summary>
  347. public Dictionary<string, string> ExtensionToIcon {get;set;} = new Dictionary<string, string> ()
  348. {
  349. // Archive files
  350. {".7z" , "nf-oct-file_zip"},
  351. {".bz" , "nf-oct-file_zip"},
  352. {".tar" , "nf-oct-file_zip"},
  353. {".zip" , "nf-oct-file_zip"},
  354. {".gz" , "nf-oct-file_zip"},
  355. {".xz" , "nf-oct-file_zip"},
  356. {".br" , "nf-oct-file_zip"},
  357. {".bzip2" , "nf-oct-file_zip"},
  358. {".gzip" , "nf-oct-file_zip"},
  359. {".brotli" , "nf-oct-file_zip"},
  360. {".rar" , "nf-oct-file_zip"},
  361. {".tgz" , "nf-oct-file_zip"},
  362. // Executable things
  363. {".bat" , "nf-custom-msdos"},
  364. {".cmd" , "nf-custom-msdos"},
  365. {".exe" , "nf-mdi-application"},
  366. {".pl" , "nf-dev-perl"},
  367. {".sh" , "nf-oct-terminal"},
  368. // App Packages
  369. {".msi" , "nf-mdi-package_variant"},
  370. {".msix" , "nf-mdi-package_variant"},
  371. {".msixbundle" , "nf-mdi-package_variant"},
  372. {".appx" , "nf-mdi-package_variant"},
  373. {".AppxBundle" , "nf-mdi-package_variant"},
  374. {".deb" , "nf-mdi-package_variant"},
  375. {".rpm" , "nf-mdi-package_variant"},
  376. // PowerShell
  377. {".ps1" , "nf-mdi-console_line"},
  378. {".psm1" , "nf-mdi-console_line"},
  379. {".psd1" , "nf-mdi-console_line"},
  380. {".ps1xml" , "nf-mdi-console_line"},
  381. {".psc1" , "nf-mdi-console_line"},
  382. {".pssc" , "nf-mdi-console_line"},
  383. // Javascript
  384. {".js" , "nf-dev-javascript"},
  385. {".esx" , "nf-dev-javascript"},
  386. {".mjs" , "nf-dev-javascript"},
  387. // Java
  388. {".java" , "nf-fae-java"},
  389. {".jar" , "nf-fae-java"},
  390. {".gradle" , "nf-mdi-elephant"},
  391. // Python
  392. {".py" , "nf-dev-python"},
  393. {".ipynb" , "nf-mdi-notebook"},
  394. // React
  395. {".jsx" , "nf-dev-react"},
  396. {".tsx" , "nf-dev-react"},
  397. // Typescript
  398. {".ts" , "nf-seti-typescript"},
  399. // Not-executable code files
  400. {".dll" , "nf-fa-archive"},
  401. // Importable Data files
  402. {".clixml" , "nf-dev-code_badge"},
  403. {".csv" , "nf-mdi-file_excel"},
  404. {".tsv" , "nf-mdi-file_excel"},
  405. // Settings
  406. {".ini" , "nf-fa-gear"},
  407. {".dlc" , "nf-fa-gear"},
  408. {".config" , "nf-fa-gear"},
  409. {".conf" , "nf-fa-gear"},
  410. {".properties" , "nf-fa-gear"},
  411. {".prop" , "nf-fa-gear"},
  412. {".settings" , "nf-fa-gear"},
  413. {".option" , "nf-fa-gear"},
  414. {".reg" , "nf-fa-gear"},
  415. {".props" , "nf-fa-gear"},
  416. {".toml" , "nf-fa-gear"},
  417. {".prefs" , "nf-fa-gear"},
  418. {".sln.dotsettings" , "nf-fa-gear"},
  419. {".sln.dotsettings.user" , "nf-fa-gear"},
  420. {".cfg" , "nf-fa-gear"},
  421. // Source Files
  422. {".c" , "nf-mdi-language_c"},
  423. {".cpp" , "nf-mdi-language_cpp"},
  424. {".go" , "nf-dev-go"},
  425. {".php" , "nf-dev-php"},
  426. // Visual Studio
  427. {".csproj" , "nf-dev-visualstudio"},
  428. {".ruleset" , "nf-dev-visualstudio"},
  429. {".sln" , "nf-dev-visualstudio"},
  430. {".slnf" , "nf-dev-visualstudio"},
  431. {".suo" , "nf-dev-visualstudio"},
  432. {".vb" , "nf-dev-visualstudio"},
  433. {".vbs" , "nf-dev-visualstudio"},
  434. {".vcxitems" , "nf-dev-visualstudio"},
  435. {".vcxitems.filters" , "nf-dev-visualstudio"},
  436. {".vcxproj" , "nf-dev-visualstudio"},
  437. {".vsxproj.filters" , "nf-dev-visualstudio"},
  438. // CSharp
  439. {".cs" , "nf-mdi-language_csharp"},
  440. {".csx" , "nf-mdi-language_csharp"},
  441. // Haskell
  442. {".hs" , "nf-dev-haskell"},
  443. // XAML
  444. {".xaml" , "nf-mdi-xaml"},
  445. // Rust
  446. {".rs" , "nf-dev-rust"},
  447. // Database
  448. {".pdb" , "nf-dev-database"},
  449. {".sql" , "nf-dev-database"},
  450. {".pks" , "nf-dev-database"},
  451. {".pkb" , "nf-dev-database"},
  452. {".accdb" , "nf-dev-database"},
  453. {".mdb" , "nf-dev-database"},
  454. {".sqlite" , "nf-dev-database"},
  455. {".pgsql" , "nf-dev-database"},
  456. {".postgres" , "nf-dev-database"},
  457. {".psql" , "nf-dev-database"},
  458. // Source Control
  459. {".patch" , "nf-dev-git"},
  460. // Project files
  461. {".user" , "nf-mdi-visualstudio"},
  462. {".code-workspace" , "nf-mdi-visualstudio"},
  463. // Text data files
  464. {".log" , "nf-fa-list"},
  465. {".txt" , "nf-mdi-file_document"},
  466. // Subtitle files
  467. {".srt" , "nf-mdi-file_document"},
  468. {".lrc" , "nf-mdi-file_document"},
  469. {".ass" , "nf-fa-eye"},
  470. // HTML/css
  471. {".html" , "nf-seti-html"},
  472. {".htm" , "nf-seti-html"},
  473. {".xhtml" , "nf-seti-html"},
  474. {".html_vm" , "nf-seti-html"},
  475. {".asp" , "nf-seti-html"},
  476. {".css" , "nf-dev-css3"},
  477. {".sass" , "nf-dev-sass"},
  478. {".scss" , "nf-dev-sass"},
  479. {".less" , "nf-dev-less"},
  480. // Markdown
  481. {".md" , "nf-dev-markdown"},
  482. {".markdown" , "nf-dev-markdown"},
  483. {".rst" , "nf-dev-markdown"},
  484. // Handlebars
  485. {".hbs" , "nf-seti-mustache"},
  486. // JSON
  487. {".json" , "nf-seti-json"},
  488. {".tsbuildinfo" , "nf-seti-json"},
  489. // YAML
  490. {".yml" , "nf-mdi-format_align_left"},
  491. {".yaml" , "nf-mdi-format_align_left"},
  492. // LUA
  493. {".lua" , "nf-seti-lua"},
  494. // Clojure
  495. {".clj" , "nf-dev-clojure"},
  496. {".cljs" , "nf-dev-clojure"},
  497. {".cljc" , "nf-dev-clojure"},
  498. // Groovy
  499. {".groovy" , "nf-dev-groovy"},
  500. // Vue
  501. {".vue" , "nf-mdi-vuejs"},
  502. // Dart
  503. {".dart" , "nf-dev-dart"},
  504. // Elixir
  505. {".ex" , "nf-custom-elixir"},
  506. {".exs" , "nf-custom-elixir"},
  507. {".eex" , "nf-custom-elixir"},
  508. {".leex" , "nf-custom-elixir"},
  509. // Erlang
  510. {".erl" , "nf-dev-erlang"},
  511. // Elm
  512. {".elm" , "nf-custom-elm"},
  513. // Applescript
  514. {".applescript" , "nf-dev-apple"},
  515. // XML
  516. {".xml" , "nf-mdi-file_xml"},
  517. {".plist" , "nf-mdi-file_xml"},
  518. {".xsd" , "nf-mdi-file_xml"},
  519. {".dtd" , "nf-mdi-file_xml"},
  520. {".xsl" , "nf-mdi-file_xml"},
  521. {".xslt" , "nf-mdi-file_xml"},
  522. {".resx" , "nf-mdi-file_xml"},
  523. {".iml" , "nf-mdi-file_xml"},
  524. {".xquery" , "nf-mdi-file_xml"},
  525. {".tmLanguage" , "nf-mdi-file_xml"},
  526. {".manifest" , "nf-mdi-file_xml"},
  527. {".project" , "nf-mdi-file_xml"},
  528. // Documents
  529. {".chm" , "nf-mdi-help_box"},
  530. {".pdf" , "nf-mdi-file_pdf"},
  531. // Excel
  532. {".xls" , "nf-mdi-file_excel"},
  533. {".xlsx" , "nf-mdi-file_excel"},
  534. // PowerPoint
  535. {".pptx" , "nf-mdi-file_powerpoint"},
  536. {".ppt" , "nf-mdi-file_powerpoint"},
  537. {".pptm" , "nf-mdi-file_powerpoint"},
  538. {".potx" , "nf-mdi-file_powerpoint"},
  539. {".potm" , "nf-mdi-file_powerpoint"},
  540. {".ppsx" , "nf-mdi-file_powerpoint"},
  541. {".ppsm" , "nf-mdi-file_powerpoint"},
  542. {".pps" , "nf-mdi-file_powerpoint"},
  543. {".ppam" , "nf-mdi-file_powerpoint"},
  544. {".ppa" , "nf-mdi-file_powerpoint"},
  545. // Word
  546. {".doc" , "nf-mdi-file_word"},
  547. {".docx" , "nf-mdi-file_word"},
  548. {".rtf" , "nf-mdi-file_word"},
  549. // Audio
  550. {".mp3" , "nf-fa-file_audio_o"},
  551. {".flac" , "nf-fa-file_audio_o"},
  552. {".m4a" , "nf-fa-file_audio_o"},
  553. {".wma" , "nf-fa-file_audio_o"},
  554. {".aiff" , "nf-fa-file_audio_o"},
  555. {".wav" , "nf-fa-file_audio_o"},
  556. {".aac" , "nf-fa-file_audio_o"},
  557. {".opus" , "nf-fa-file_audio_o"},
  558. // Images
  559. {".png" , "nf-fa-file_image_o"},
  560. {".jpeg" , "nf-fa-file_image_o"},
  561. {".jpg" , "nf-fa-file_image_o"},
  562. {".gif" , "nf-fa-file_image_o"},
  563. {".ico" , "nf-fa-file_image_o"},
  564. {".tif" , "nf-fa-file_image_o"},
  565. {".tiff" , "nf-fa-file_image_o"},
  566. {".psd" , "nf-fa-file_image_o"},
  567. {".psb" , "nf-fa-file_image_o"},
  568. {".ami" , "nf-fa-file_image_o"},
  569. {".apx" , "nf-fa-file_image_o"},
  570. {".bmp" , "nf-fa-file_image_o"},
  571. {".bpg" , "nf-fa-file_image_o"},
  572. {".brk" , "nf-fa-file_image_o"},
  573. {".cur" , "nf-fa-file_image_o"},
  574. {".dds" , "nf-fa-file_image_o"},
  575. {".dng" , "nf-fa-file_image_o"},
  576. {".eps" , "nf-fa-file_image_o"},
  577. {".exr" , "nf-fa-file_image_o"},
  578. {".fpx" , "nf-fa-file_image_o"},
  579. {".gbr" , "nf-fa-file_image_o"},
  580. {".jbig2" , "nf-fa-file_image_o"},
  581. {".jb2" , "nf-fa-file_image_o"},
  582. {".jng" , "nf-fa-file_image_o"},
  583. {".jxr" , "nf-fa-file_image_o"},
  584. {".pbm" , "nf-fa-file_image_o"},
  585. {".pgf" , "nf-fa-file_image_o"},
  586. {".pic" , "nf-fa-file_image_o"},
  587. {".raw" , "nf-fa-file_image_o"},
  588. {".webp" , "nf-fa-file_image_o"},
  589. {".svg" , "nf-mdi-svg"},
  590. // Video
  591. {".webm" , "nf-fa-file_video_o"},
  592. {".mkv" , "nf-fa-file_video_o"},
  593. {".flv" , "nf-fa-file_video_o"},
  594. {".vob" , "nf-fa-file_video_o"},
  595. {".ogv" , "nf-fa-file_video_o"},
  596. {".ogg" , "nf-fa-file_video_o"},
  597. {".gifv" , "nf-fa-file_video_o"},
  598. {".avi" , "nf-fa-file_video_o"},
  599. {".mov" , "nf-fa-file_video_o"},
  600. {".qt" , "nf-fa-file_video_o"},
  601. {".wmv" , "nf-fa-file_video_o"},
  602. {".yuv" , "nf-fa-file_video_o"},
  603. {".rm" , "nf-fa-file_video_o"},
  604. {".rmvb" , "nf-fa-file_video_o"},
  605. {".mp4" , "nf-fa-file_video_o"},
  606. {".mpg" , "nf-fa-file_video_o"},
  607. {".mp2" , "nf-fa-file_video_o"},
  608. {".mpeg" , "nf-fa-file_video_o"},
  609. {".mpe" , "nf-fa-file_video_o"},
  610. {".mpv" , "nf-fa-file_video_o"},
  611. {".m2v" , "nf-fa-file_video_o"},
  612. // Email
  613. {".ics" , "nf-fa-calendar"},
  614. // Certificates
  615. {".cer" , "nf-fa-certificate"},
  616. {".cert" , "nf-fa-certificate"},
  617. {".crt" , "nf-fa-certificate"},
  618. {".pfx" , "nf-fa-certificate"},
  619. // Keys
  620. {".pem" , "nf-fa-key"},
  621. {".pub" , "nf-fa-key"},
  622. {".key" , "nf-fa-key"},
  623. {".asc" , "nf-fa-key"},
  624. {".gpg" , "nf-fa-key"},
  625. // Fonts
  626. {".woff" , "nf-fa-font"},
  627. {".woff2" , "nf-fa-font"},
  628. {".ttf" , "nf-fa-font"},
  629. {".eot" , "nf-fa-font"},
  630. {".suit" , "nf-fa-font"},
  631. {".otf" , "nf-fa-font"},
  632. {".bmap" , "nf-fa-font"},
  633. {".fnt" , "nf-fa-font"},
  634. {".odttf" , "nf-fa-font"},
  635. {".ttc" , "nf-fa-font"},
  636. {".font" , "nf-fa-font"},
  637. {".fonts" , "nf-fa-font"},
  638. {".sui" , "nf-fa-font"},
  639. {".ntf" , "nf-fa-font"},
  640. {".mrg" , "nf-fa-font"},
  641. // Ruby
  642. {".rb" , "nf-oct-ruby"},
  643. {".erb" , "nf-oct-ruby"},
  644. {".gemfile" , "nf-oct-ruby"},
  645. {"rakefile" , "nf-oct-ruby"},
  646. // FSharp
  647. {".fs" , "nf-dev-fsharp"},
  648. {".fsx" , "nf-dev-fsharp"},
  649. {".fsi" , "nf-dev-fsharp"},
  650. {".fsproj" , "nf-dev-fsharp"},
  651. // Docker
  652. {".dockerignore" , "nf-dev-docker"},
  653. {".dockerfile" , "nf-dev-docker"},
  654. // VSCode
  655. {".vscodeignore" , "nf-fa-gear"},
  656. {".vsixmanifest" , "nf-fa-gear"},
  657. {".vsix" , "nf-fa-gear"},
  658. {".code-workplace" , "nf-fa-gear"},
  659. // Sublime
  660. {".sublime-project" , "nf-dev-sublime"},
  661. {".sublime-workspace" , "nf-dev-sublime"},
  662. {".lock" , "nf-fa-lock"},
  663. // Terraform
  664. {".tf" , "nf-dev-code_badge"},
  665. {".tfvars" , "nf-dev-code_badge"},
  666. {".tf.json" , "nf-dev-code_badge"},
  667. {".tfvars.json" , "nf-dev-code_badge"},
  668. {".auto.tfvars" , "nf-dev-code_badge"},
  669. {".auto.tfvars.json" , "nf-dev-code_badge"},
  670. // Disk Image
  671. {".vmdk" , "nf-mdi-harddisk"},
  672. {".vhd" , "nf-mdi-harddisk"},
  673. {".vhdx" , "nf-mdi-harddisk"},
  674. {".img" , "nf-fae-disco"},
  675. {".iso" , "nf-fae-disco"},
  676. // R language
  677. {".R" , "nf-mdi-language_r"},
  678. {".Rmd" , "nf-mdi-language_r"},
  679. {".Rproj" , "nf-mdi-language_r"},
  680. // Julia language
  681. {".jl" , "nf-seti-julia"},
  682. // Vim
  683. {".vim" , "nf-custom-vim"},
  684. // Puppet
  685. {".pp" , "nf-custom-puppet"},
  686. {".epp" , "nf-custom-puppet"},
  687. };
  688. }
  689. }