1 #pragma once
2 
3 #if defined(ICONS)
4 #include "icons-in-terminal.h"
5 #elif defined(NERD)
6 #include "icons-nerdfont.h"
7 #endif
8 
9 struct icon_pair {
10 	const char *match;
11 	const char *icon;
12 	/*
13 	 * Hex xterm 256 color code, 0 to follow file specific (if any)
14 	 * Codes: https://jonasjacek.github.io/colors/
15 	 * Spectrum sorted: https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg
16 	 */
17 	const unsigned char color;
18 };
19 
20 /*
21  * Define a string to be printed before and after the icon
22  * Adjust if the icons are not printed properly
23  */
24 
25 #define ICON_PADDING_LEFT  ""
26 #define ICON_PADDING_RIGHT " "
27 
28 #define COLOR_VIDEO        93  /* Purple */
29 #define COLOR_AUDIO        220 /* Gold1 */
30 #define COLOR_IMAGE        82  /* Chartreuse2 */
31 #define COLOR_DOCS         202 /* OrangeRed1 */
32 #define COLOR_ARCHIVE      209 /* Salmon1 */
33 #define COLOR_C            81  /* SteelBlue1 */
34 #define COLOR_JAVA         32  /* DeepSkyBlue3 */
35 #define COLOR_JAVASCRIPT   47  /* SpringGreen2 */
36 #define COLOR_REACT        39  /* DeepSkyBlue1 */
37 #define COLOR_CSS          199 /* DeepPink1 */
38 #define COLOR_PYTHON       227 /* LightGoldenrod1 */
39 #define COLOR_LUA          19  /* Blue3 */
40 #define COLOR_DOCUMENT     15  /* White */
41 #define COLOR_FSHARP       31  /* DeepSkyBlue3 */
42 #define COLOR_RUBY         160 /* Red3 */
43 #define COLOR_SCALA        196 /* Red1 */
44 #define COLOR_SHELL        47  /* SpringGreen2 */
45 #define COLOR_VIM          28  /* Green4 */
46 
47 /*
48  * Using symbols defined in icons-in-terminal.h, or even using icons-in-terminal is not necessary.
49  * You can use whatever pathched font you like. You just have to put the desired icon as a string.
50  * If you are using icons-in-terminal the creator recommends that you do use the symbols in the generated header.
51  */
52 
53 #if defined(ICONS)
54 static const struct icon_pair dir_icon  = {"", FA_FOLDER, 0};
55 static const struct icon_pair file_icon = {"", FA_FILE_O, 0};
56 static const struct icon_pair exec_icon = {"", FA_COG,    0};
57 #elif defined(NERD)
58 static const struct icon_pair dir_icon  = {"", ICON_DIRECTORY, 0};
59 static const struct icon_pair file_icon = {"", ICON_FILE,      0};
60 static const struct icon_pair exec_icon = {"", ICON_EXEC,      0};
61 #endif
62 
63 /* All entries are case-insensitive */
64 
65 static const struct icon_pair icons_name[] = {
66 #if defined(ICONS)
67 	{".git",         FA_GIT,        0},
68 	{"Desktop",      FA_DESKTOP,    0},
69 	{"Documents",    FA_BRIEFCASE,  0},
70 	{"Downloads",    FA_DOWNLOAD,   0},
71 	{"Music",        FA_MUSIC,      0},
72 	{"Pictures",     MD_CAMERA_ALT, 0},
73 	{"Public",       FA_INBOX,      0},
74 	{"Templates",    FA_PAPERCLIP,  0},
75 	{"Videos",       FA_FILM,       0},
76 	{"CHANGELOG",    FA_HISTORY,    COLOR_DOCS},
77 	{"configure",    FILE_CONFIG,   0},
78 	{"License",      FA_COPYRIGHT,  COLOR_DOCS},
79 	{"Makefile",     FILE_CMAKE,    0},
80 #elif defined(NERD)
81 	{".git",         ICON_GIT,       0},
82 	{"Desktop",      ICON_DESKTOP,   0},
83 	{"Documents",    ICON_BRIEFCASE, 0},
84 	{"Downloads",    ICON_DOWNLOADS, 0},
85 	{"Music",        ICON_MUSIC,     0},
86 	{"Pictures",     ICON_PICTURES,  0},
87 	{"Public",       ICON_PUBLIC,    0},
88 	{"Templates",    ICON_TEMPLATES, 0},
89 	{"Videos",       ICON_VIDEOS,    0},
90 	{"CHANGELOG",    ICON_CHANGELOG, COLOR_DOCS},
91 	{"configure",    ICON_CONFIGURE, 0},
92 	{"License",      ICON_LICENSE,   COLOR_DOCS},
93 	{"Makefile",     ICON_MAKEFILE,  0},
94 #endif
95 };
96 
97 /*
98  * New entries should bu added such that the first character of the extension is in the correct group .
99  * This is done for performance reason so that the correct icon can be found faster.
100  * All entries are case-insensitive
101  */
102 
103 static const struct icon_pair icons_ext[] = {
104 #if defined(ICONS)
105 	/* Numbers */
106 	{"1",        FILE_MANPAGE,         COLOR_DOCS},
107 	{"7z",       FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
108 
109 	/* A */
110 	{"a",        FILE_MANPAGE,         0},
111 	{"apk",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
112 	{"asm",      FILE_NASM,            0},
113 	{"aup",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
114 	{"avi",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
115 
116 	/* B */
117 	{"bat",      MFIZZ_SCRIPT,         0},
118 	{"bin",      OCT_FILE_BINARY,      0},
119 	{"bmp",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
120 	{"bz2",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
121 
122 	 /* C */
123 	{"c",        MFIZZ_C,              0},
124 	{"c++",      MFIZZ_CPLUSPLUS,      0},
125 	{"cab",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
126 	{"cbr",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
127 	{"cbz",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
128 	{"cc",       MFIZZ_CPLUSPLUS,      0},
129 	{"class",    MFIZZ_JAVA,           0},
130 	{"clj",      MFIZZ_CLOJURE,        0},
131 	{"cljc",     MFIZZ_CLOJURE,        0},
132 	{"cljs",     MFIZZ_CLOJURE,        0},
133 	{"cmake",    FILE_CMAKE,           0},
134 	{"coffee",   MFIZZ_COFFEE_BEAN,    0},
135 	{"conf",     FA_COGS,              0},
136 	{"cpio",     FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
137 	{"cpp",      MFIZZ_CPLUSPLUS,      0},
138 	{"css",      MFIZZ_CSS3,           0},
139 	{"cue",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
140 	{"cvs",      FA_COGS,              0},
141 	{"cxx",      MFIZZ_CPLUSPLUS,      0},
142 
143 	/* D */
144 	{"db",       MFIZZ_DATABASE_ALT2,  0},
145 	{"deb",      MFIZZ_DEBIAN,         COLOR_ARCHIVE},
146 	{"diff",     FILE_DIFF,            0},
147 	{"dll",      FILE_MANPAGE,         0},
148 	{"doc",      FILE_WORD,            0},
149 	{"docx",     FILE_WORD,            0},
150 
151 	 /* E */
152 	{"ejs",      FA_FILE_CODE_O,       0},
153 	{"elf",      FA_LINUX,             0},
154 	{"epub",     FA_FILE_PDF_O,        COLOR_DOCS},
155 	{"exe",      FA_WINDOWS,           0},
156 
157 	/* F */
158 	{"f#",       DEV_FSHARP,           0},
159 	{"flac",     FA_FILE_AUDIO_O,      COLOR_AUDIO},
160 	{"flv",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
161 	{"fs",       DEV_FSHARP,           0},
162 	{"fsi",      DEV_FSHARP,           0},
163 	{"fsscript", DEV_FSHARP,           0},
164 	{"fsx",      DEV_FSHARP,           0},
165 
166 	/* G */
167 	{"gem",      FA_FILE_ARCHIVE_O,    0},
168 	{"gif",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
169 	{"go",       MFIZZ_GO,             0},
170 	{"gz",       FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
171 	{"gzip",     FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
172 
173 	/* H */
174 	{"h",        MFIZZ_C,              0},
175 	{"hh",       MFIZZ_CPLUSPLUS,      0},
176 	{"htaccess", FA_COGS,              0},
177 	{"htpasswd", FA_COGS,              0},
178 	{"htm",      FA_FILE_CODE_O,       0},
179 	{"html",     FA_FILE_CODE_O,       0},
180 	{"hxx",      MFIZZ_CPLUSPLUS,      0},
181 
182 	/* I */
183 	{"ico",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
184 	{"img",      LINEA_MUSIC_CD,       COLOR_ARCHIVE},
185 	{"ini",      FA_COGS,              0},
186 	{"iso",      LINEA_MUSIC_CD,       COLOR_ARCHIVE},
187 
188 	/* J */
189 	{"jar",      MFIZZ_JAVA,           0},
190 	{"java",     MFIZZ_JAVA,           0},
191 	{"jl",       FA_COGS,              0},
192 	{"jpeg",     FA_FILE_IMAGE_O,      COLOR_IMAGE},
193 	{"jpg",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
194 	{"js",       DEV_JAVASCRIPT_BADGE, 0},
195 	{"json",     MFIZZ_JAVASCRIPT,     0},
196 	{"jsx",      FILE_JSX,             0},
197 
198 	/* K */
199 
200 	/* L */
201 	{"lha",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
202 	{"log",      FA_FILE_TEXT_O,       0},
203 	{"lua",      FILE_LUA,             COLOR_LUA},
204 	{"lzh",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
205 	{"lzma",     FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
206 
207 	/* M */
208 	{"m4a",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
209 	{"m4v",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
210 	{"markdown", DEV_MARKDOWN,         COLOR_DOCS},
211 	{"md",       DEV_MARKDOWN,         COLOR_DOCS},
212 	{"mk",       FILE_CMAKE,           0},
213 	{"mkv",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
214 	{"mov",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
215 	{"mp3",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
216 	{"mp4",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
217 	{"mpeg",     FA_FILE_MOVIE_O,      COLOR_VIDEO},
218 	{"mpg",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
219 	{"msi",      FA_WINDOWS,           0},
220 
221 	/* N */
222 
223 	/* O */
224 	{"o",          FILE_MANPAGE,       0},
225 	{"ogg",        FA_FILE_AUDIO_O,    COLOR_AUDIO},
226 	{"opdownload", FA_DOWNLOAD,        0},
227 	{"out",        FA_LINUX,           0},
228 
229 	/* P */
230 	{"part",     FA_DOWNLOAD,          0},
231 	{"patch",    FILE_PATCH,           0},
232 	{"pdf",      FA_FILE_PDF_O,        COLOR_DOCS},
233 	{"php",      MFIZZ_PHP,            0},
234 	{"png",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
235 	{"ppt",      FILE_POWERPOINT,      0},
236 	{"pptx",     FILE_POWERPOINT,      0},
237 	{"psb",      DEV_PHOTOSHOP,        0},
238 	{"psd",      DEV_PHOTOSHOP,        0},
239 	{"py",       MFIZZ_PYTHON,         0},
240 	{"pyc",      MFIZZ_PYTHON,         0},
241 	{"pyd",      MFIZZ_PYTHON,         0},
242 	{"pyo",      MFIZZ_PYTHON,         0},
243 
244 	/* Q */
245 
246 	/* R */
247 	{"rar",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
248 	{"rb",       MFIZZ_RUBY,           COLOR_RUBY},
249 	{"rc",       FA_COGS,              0},
250 	{"rom",      FA_LOCK,              0},
251 	{"rpm",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
252 	{"rss",      FA_RSS_SQUARE,        0},
253 	{"rtf",      FA_FILE_PDF_O,        0},
254 
255 	/* S */
256 	{"so",       FILE_MANPAGE,         0},
257 	{"scala",    MFIZZ_SCALA,          0},
258 	{"sh",       MFIZZ_SCRIPT,         COLOR_SHELL},
259 	{"slim",     FA_FILE_CODE_O,       0},
260 	{"sln",      DEV_VISUALSTUDIO,     0},
261 	{"sql",      MFIZZ_MYSQL,          0},
262 	{"srt",      FA_COMMENTS_O,        0},
263 	{"sub",      FA_COMMENTS_O,        0},
264 	{"svg",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
265 
266 	/* T */
267 	{"tar",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
268 	{"tex",      FILE_TEX,             0},
269 	{"tgz",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
270 	{"ts",       FILE_TS,              0},
271 	{"tsx",      FILE_TSX,             0},
272 	{"txt",      FA_FILE_TEXT_O,       0},
273 	{"txz",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
274 
275 	/* U */
276 
277 	/* V */
278 	{"vid",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
279 	{"vim",      DEV_VIM,              0},
280 	{"vimrc",    DEV_VIM,              0},
281 	{"vtt",      FA_COMMENTS_O,        0},
282 
283 	/* W */
284 	{"wav",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
285 	{"webm",     FA_FILE_MOVIE_O,      COLOR_VIDEO},
286 	{"wma",      FA_FILE_AUDIO_O,      COLOR_AUDIO},
287 	{"wmv",      FA_FILE_MOVIE_O,      COLOR_VIDEO},
288 
289 	/* X */
290 	{"xbps",     FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
291 	{"xcf",      FA_FILE_IMAGE_O,      COLOR_IMAGE},
292 	{"xhtml",    FA_FILE_CODE_O,       0},
293 	{"xls",      FILE_EXCEL,           0},
294 	{"xlsx",     FILE_EXCEL,           0},
295 	{"xml",      FA_FILE_CODE_O,       0},
296 	{"xz",       FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
297 
298 	/* Y */
299 	{"yaml",     FA_COGS,              0},
300 	{"yml",      FA_COGS,              0},
301 
302 	/* Z */
303 	{"zip",      FA_FILE_ARCHIVE_O,    COLOR_ARCHIVE},
304 
305 	/* Other */
306 #elif defined(NERD)
307 	/* Numbers */
308 	{"1",          ICON_EXT_1,         COLOR_DOCS},
309 	{"7z",         ICON_EXT_7Z,        COLOR_ARCHIVE},
310 
311 	/* A */
312 	{"a",          ICON_EXT_A,         0},
313 	{"apk",        ICON_EXT_APK,       COLOR_ARCHIVE},
314 	{"asm",        ICON_EXT_ASM,       0},
315 	{"aup",        ICON_EXT_AUP,       COLOR_AUDIO},
316 	{"avi",        ICON_EXT_AVI,       COLOR_VIDEO},
317 
318 	/* B */
319 	{"bat",        ICON_EXT_BAT,       0},
320 	{"bib",        ICON_EXT_BIB,       0},
321 	{"bin",        ICON_EXT_BIN,       0},
322 	{"bmp",        ICON_EXT_BMP,       COLOR_IMAGE},
323 	{"bz2",        ICON_EXT_BZ2,       COLOR_ARCHIVE},
324 
325 	 /* C */
326 	{"c",          ICON_EXT_C,         COLOR_C},
327 	{"c++",        ICON_EXT_CPLUSPLUS, COLOR_C},
328 	{"cabal",      ICON_EXT_CABAL,     COLOR_VIDEO},
329 	{"cab",        ICON_EXT_CAB,       COLOR_ARCHIVE},
330 	{"cbr",        ICON_EXT_CBR,       COLOR_ARCHIVE},
331 	{"cbz",        ICON_EXT_CBZ,       COLOR_ARCHIVE},
332 	{"cc",         ICON_EXT_CC,        COLOR_C},
333 	{"class",      ICON_EXT_CLASS,     COLOR_JAVA},
334 	{"clj",        ICON_EXT_CLJ,       0},
335 	{"cljc",       ICON_EXT_CLJC,      0},
336 	{"cljs",       ICON_EXT_CLJS,      0},
337 	{"cls",        ICON_EXT_CLS,       0},
338 	{"cmake",      ICON_EXT_CMAKE,     0},
339 	{"coffee",     ICON_EXT_COFFEE,    0},
340 	{"conf",       ICON_EXT_CONF,      0},
341 	{"cpio",       ICON_EXT_CPIO,      COLOR_ARCHIVE},
342 	{"cpp",        ICON_EXT_CPP,       COLOR_C},
343 	{"css",        ICON_EXT_CSS,       COLOR_CSS},
344 	{"cue",        ICON_EXT_CUE,       COLOR_AUDIO},
345 	{"cvs",        ICON_EXT_CVS,       0},
346 	{"cxx",        ICON_EXT_CXX,       COLOR_C},
347 
348 	/* D */
349 	{"db",         ICON_EXT_DB,        0},
350 	{"deb",        ICON_EXT_DEB,       COLOR_ARCHIVE},
351 	{"diff",       ICON_EXT_DIFF,      0},
352 	{"dll",        ICON_EXT_DLL,       0},
353 	{"doc",        ICON_EXT_DOC,       COLOR_DOCUMENT},
354 	{"docx",       ICON_EXT_DOCX,      COLOR_DOCUMENT},
355 
356 	 /* E */
357 	{"ejs",        ICON_EXT_EJS,       COLOR_JAVASCRIPT},
358 	{"elf",        ICON_EXT_ELF,       0},
359 	{"epub",       ICON_EXT_EPUB,      COLOR_DOCS},
360 	{"exe",        ICON_EXT_EXE,       0},
361 
362 	/* F */
363 	{"f#",         ICON_EXT_FSHARP,    COLOR_FSHARP},
364 	{"fen",        ICON_EXT_FEN,       0},
365 	{"flac",       ICON_EXT_FLAC,      COLOR_AUDIO},
366 	{"flv",        ICON_EXT_FLV,       COLOR_VIDEO},
367 	{"fs",         ICON_EXT_FS,        COLOR_FSHARP},
368 	{"fsi",        ICON_EXT_FSI,       COLOR_FSHARP},
369 	{"fsscript",   ICON_EXT_FSSCRIPT,  COLOR_FSHARP},
370 	{"fsx",        ICON_EXT_FSX,       COLOR_FSHARP},
371 
372 	/* G */
373 	{"gem",        ICON_EXT_GEM,       COLOR_RUBY},
374 	{"gif",        ICON_EXT_GIF,       COLOR_IMAGE},
375 	{"go",         ICON_EXT_GO,        0},
376 	{"gz",         ICON_EXT_GZ,        COLOR_ARCHIVE},
377 	{"gzip",       ICON_EXT_GZIP,      COLOR_ARCHIVE},
378 
379 	/* H */
380 	{"h",          ICON_EXT_H,         COLOR_C},
381 	{"hh",         ICON_EXT_HH,        COLOR_C},
382 	{"hpp",        ICON_EXT_HPP,       COLOR_C},
383 	{"hs",         ICON_EXT_HS,        COLOR_VIM},
384 	{"htaccess",   ICON_EXT_HTACCESS,  0},
385 	{"htpasswd",   ICON_EXT_HTPASSWD,  0},
386 	{"htm",        ICON_EXT_HTM,       0},
387 	{"html",       ICON_EXT_HTML,      0},
388 	{"hxx",        ICON_EXT_HXX,       COLOR_C},
389 
390 	/* I */
391 	{"ico",        ICON_EXT_ICO,       COLOR_IMAGE},
392 	{"img",        ICON_EXT_IMG,       COLOR_ARCHIVE},
393 	{"ini",        ICON_EXT_INI,       0},
394 	{"iso",        ICON_EXT_ISO,       COLOR_ARCHIVE},
395 
396 	/* J */
397 	{"jar",        ICON_EXT_JAR,       COLOR_JAVA},
398 	{"java",       ICON_EXT_JAVA,      COLOR_JAVA},
399 	{"jl",         ICON_EXT_JL,        0},
400 	{"jpeg",       ICON_EXT_JPEG,      COLOR_IMAGE},
401 	{"jpg",        ICON_EXT_JPG,       COLOR_IMAGE},
402 	{"js",         ICON_EXT_JS,        COLOR_JAVASCRIPT},
403 	{"json",       ICON_EXT_JSON,      COLOR_JAVASCRIPT},
404 	{"jsx",        ICON_EXT_JSX,       COLOR_REACT},
405 
406 	/* K */
407 
408 	/* L */
409 	{"lha",        ICON_EXT_LHA,       COLOR_ARCHIVE},
410 	{"lhs",        ICON_EXT_LHS,       COLOR_VIM},
411 	{"log",        ICON_EXT_LOG,       0},
412 	{"lua",        ICON_EXT_LUA,       COLOR_LUA},
413 	{"lzh",        ICON_EXT_LZH,       COLOR_ARCHIVE},
414 	{"lzma",       ICON_EXT_LZMA,      COLOR_ARCHIVE},
415 
416 	/* M */
417 	{"m",          ICON_EXT_M,         COLOR_C},
418 	{"m4a",        ICON_EXT_M4A,       COLOR_AUDIO},
419 	{"m4v",        ICON_EXT_M4V,       COLOR_VIDEO},
420 	{"markdown",   ICON_EXT_MD,        COLOR_DOCS},
421 	{"mat",        ICON_EXT_MAT,       COLOR_C},
422 	{"md",         ICON_EXT_MD,        COLOR_DOCS},
423 	{"mk",         ICON_EXT_MK,        0},
424 	{"mkv",        ICON_EXT_MKV,       COLOR_VIDEO},
425 	{"mov",        ICON_EXT_MOV,       COLOR_VIDEO},
426 	{"mp3",        ICON_EXT_MP3,       COLOR_AUDIO},
427 	{"mp4",        ICON_EXT_MP4,       COLOR_VIDEO},
428 	{"mpeg",       ICON_EXT_MPEG,      COLOR_VIDEO},
429 	{"mpg",        ICON_EXT_MPG,       COLOR_VIDEO},
430 	{"msi",        ICON_EXT_MSI,       0},
431 
432 	/* N */
433 	{"nix",        ICON_EXT_NIX,       COLOR_FSHARP},
434 
435 	/* O */
436 	{"o",          ICON_EXT_O,         0},
437 	{"ogg",        ICON_EXT_OGG,       COLOR_AUDIO},
438 	{"opdownload", ICON_EXT_ODOWNLOAD, 0},
439 	{"out",        ICON_EXT_OUT,       0},
440 
441 	/* P */
442 	{"part",       ICON_EXT_PART,      0},
443 	{"patch",      ICON_EXT_PATCH,     0},
444 	{"pdf",        ICON_EXT_PDF,       COLOR_DOCS},
445 	{"pgn",        ICON_EXT_PGN,       0},
446 	{"php",        ICON_EXT_PHP,       0},
447 	{"png",        ICON_EXT_PNG,       COLOR_IMAGE},
448 	{"ppt",        ICON_EXT_PPT,       0},
449 	{"pptx",       ICON_EXT_PPTX,      0},
450 	{"psb",        ICON_EXT_PSB,       0},
451 	{"psd",        ICON_EXT_PSD,       0},
452 	{"py",         ICON_EXT_PY,        COLOR_PYTHON},
453 	{"pyc",        ICON_EXT_PYC,       COLOR_PYTHON},
454 	{"pyd",        ICON_EXT_PYD,       COLOR_PYTHON},
455 	{"pyo",        ICON_EXT_PYO,       COLOR_PYTHON},
456 
457 	/* Q */
458 
459 	/* R */
460 	{"rar",        ICON_EXT_RAR,       COLOR_ARCHIVE},
461 	{"rb",         ICON_EXT_RB,        COLOR_RUBY},
462 	{"rc",         ICON_EXT_RC,        0},
463 	{"rom",        ICON_EXT_ROM,       0},
464 	{"rpm",        ICON_EXT_RPM,       COLOR_ARCHIVE},
465 	{"rss",        ICON_EXT_RSS,       0},
466 	{"rtf",        ICON_EXT_RTF,       0},
467 
468 	/* S */
469 	{"sass",       ICON_EXT_SASS,      COLOR_CSS},
470 	{"scss",       ICON_EXT_SCSS,      COLOR_CSS},
471 	{"so",         ICON_EXT_SO,        0},
472 	{"scala",      ICON_EXT_SCALA,     COLOR_SCALA},
473 	{"sh",         ICON_EXT_SH,        COLOR_SHELL},
474 	{"slim",       ICON_EXT_SLIM,      COLOR_DOCUMENT},
475 	{"sln",        ICON_EXT_SLN,       0},
476 	{"sql",        ICON_EXT_SQL,       0},
477 	{"srt",        ICON_EXT_SRT,       0},
478 	{"sty",        ICON_EXT_STY,       0},
479 	{"sub",        ICON_EXT_SUB,       0},
480 	{"svg",        ICON_EXT_SVG,       COLOR_IMAGE},
481 
482 	/* T */
483 	{"tar",        ICON_EXT_TAR,       COLOR_ARCHIVE},
484 	{"tex",        ICON_EXT_TEX,       0},
485 	{"tgz",        ICON_EXT_TGZ,       COLOR_ARCHIVE},
486 	{"ts",         ICON_EXT_TS,        COLOR_JAVASCRIPT},
487 	{"tsx",        ICON_EXT_TSX,       COLOR_REACT},
488 	{"txt",        ICON_EXT_TXT,       COLOR_DOCUMENT},
489 	{"txz",        ICON_EXT_TXZ,       COLOR_ARCHIVE},
490 
491 	/* U */
492 
493 	/* V */
494 	{"vid",        ICON_EXT_VID,       COLOR_VIDEO},
495 	{"vim",        ICON_EXT_VIM,       COLOR_VIM},
496 	{"vimrc",      ICON_EXT_VIMRC,     COLOR_VIM},
497 	{"vtt",        ICON_EXT_SRT,       0},
498 
499 	/* W */
500 	{"wav",        ICON_EXT_WAV,       COLOR_AUDIO},
501 	{"webm",       ICON_EXT_WEBM,      COLOR_VIDEO},
502 	{"wma",        ICON_EXT_WMA,       COLOR_AUDIO},
503 	{"wmv",        ICON_EXT_WMV,       COLOR_VIDEO},
504 
505 	/* X */
506 	{"xbps",       ICON_EXT_XBPS,      COLOR_ARCHIVE},
507 	{"xcf",        ICON_EXT_XCF,       COLOR_IMAGE},
508 	{"xhtml",      ICON_EXT_XHTML,     0},
509 	{"xls",        ICON_EXT_XLS,       0},
510 	{"xlsx",       ICON_EXT_XLSX,      0},
511 	{"xml",        ICON_EXT_XML,       0},
512 	{"xz",         ICON_EXT_XZ,        COLOR_ARCHIVE},
513 
514 	/* Y */
515 	{"yaml",       ICON_EXT_YAML,      COLOR_DOCUMENT},
516 	{"yml",        ICON_EXT_YML,       COLOR_DOCUMENT},
517 
518 	/* Z */
519 	{"zip",        ICON_EXT_ZIP,       COLOR_ARCHIVE},
520 	{"zsh",        ICON_EXT_ZSH,       COLOR_SHELL},
521 	{"zst",        ICON_EXT_ZST,       COLOR_ARCHIVE},
522 
523 	/* Other */
524 #endif
525 };
526