]> Sergey Matveev's repositories - nnn.git/blob - src/icons.h
Add djvu icon
[nnn.git] / src / icons.h
1 #ifndef INCLUDE_ICONS_H
2 #define INCLUDE_ICONS_H
3
4 #if defined(ICONS_GENERATE) || defined(ICONS_ENABLED)
5
6 /*
7  * 1st arg = ICONS_IN_TERM
8  *
9  * 2nd arg = NERD ICONS
10  * You can find hex codes for nerd fonts here: https://www.nerdfonts.com/cheat-sheet
11  *
12  * 3rd arg = EMOJIS
13  * You can find a list of emoji here: https://unicode.org/Public/emoji/5.0/emoji-test.txt
14  *
15  * Any entry with empty icon gets removed by the hash-table generator
16  */
17 #if defined(ICONS_IN_TERM)
18         #define ICON_STR(I, N, E) I
19         #include "icons-in-terminal.h"
20 #elif defined(NERD)
21         #define ICON_STR(I, N, E) N
22 #elif defined(EMOJI)
23         #define ICON_STR(I, N, E) E
24 #endif
25
26 /*
27  * Define a string to be printed before and after the icon
28  * Adjust if the icons are not printed properly
29  */
30 #if defined(EMOJI)
31         /*
32          * NOTE: As some emojis take up two cells, all of the emoji icons must
33          * be of width 2. Therefore, right pad single-width emoji with a space.
34          */
35         #define ICON_SIZE 2
36         #define ICON_PADDING_RIGHT " "
37 #else
38         #define ICON_SIZE 1
39         #define ICON_PADDING_RIGHT "  "
40 #endif
41 #define ICON_PADDING_LEFT  ""
42 #define ICON_PADDING_LEFT_LEN  (sizeof ICON_PADDING_LEFT  - 1)
43 #define ICON_PADDING_RIGHT_LEN (sizeof ICON_PADDING_RIGHT - 1)
44
45 /* ARROWS */
46 #define ICON_ARROW_UP      ICON_STR(MD_ARROW_UPWARD, "󰁝", "⬆")
47 #define ICON_ARROW_FORWARD ICON_STR(MD_ARROW_FORWARD, "󰁔", "➡")
48 #define ICON_ARROW_DOWN    ICON_STR(MD_ARROW_DOWNWARD, "󰁅", "⬇")
49
50 /* GENERIC */
51 #define ICON_DIRECTORY     ICON_STR(FA_FOLDER, "", "📂")
52 #define ICON_FILE          ICON_STR(FA_FILE, "󰈔", "📃")
53 #define ICON_EXEC          ICON_STR(FA_COG, "", "⚙️ ")
54
55 /* Top level and common icons */
56 #define ICON_ARCHIVE       ICON_STR(FA_FILE_ARCHIVE_O, "󰀼", "📦")
57 #define ICON_BRIEFCASE     ICON_STR(FA_BRIEFCASE, "󰃖", "💼")
58 #define ICON_C             ICON_STR(MFIZZ_C, "", "🇨 ")
59 #define ICON_CHANGELOG     ICON_STR(FA_HISTORY, "󰋚", "🔺")
60 #define ICON_CHESS         ICON_STR("", "󰄺", "")
61 #define ICON_CLOJURE       ICON_STR(MFIZZ_CLOJURE, "", "")
62 #define ICON_CONFIGURE     ICON_STR(FILE_CONFIG, "", "🔧")
63 #define ICON_CPLUSPLUS     ICON_STR(MFIZZ_CPLUSPLUS, "", ICON_C)
64 #define ICON_DATABASE      ICON_STR(MFIZZ_DATABASE_ALT2, "󰆼", "🗃️ ")
65 #define ICON_DESKTOP       ICON_STR(FA_DESKTOP, "󰟀", "🖥️ ")
66 #define ICON_DJVU          ICON_STR(FA_PAPERCLIP, "", "📎")
67 #define ICON_DOCUMENT      ICON_STR(FA_FILE_TEXT_O, "󰈙", "🗒 ")
68 #define ICON_DOWNLOADS     ICON_STR(FA_DOWNLOAD, "󰃘", "📥")
69 #define ICON_ELIXIR        ICON_STR(MFIZZ_ELIXIR, "", "💧")
70 #define ICON_ENCRYPT       ICON_STR("", "󰌆", "🔒")
71 #define ICON_FSHARP        ICON_STR(DEV_FSHARP, "", "")
72 #define ICON_FONT          ICON_STR(FILE_FONT, "", "")
73 #define ICON_GIT           ICON_STR(FA_GIT, "", "🌱")
74 #define ICON_HASKELL       ICON_STR("", "", "")
75 #define ICON_HTML          ICON_STR(FA_FILE_CODE_O, "󰌝", "")
76 #define ICON_JAVA          ICON_STR(MFIZZ_JAVA, "", "☕")
77 #define ICON_JAVASCRIPT    ICON_STR(FA_FILE_CODE_O, "󰌞", "")
78 #define ICON_LICENSE       ICON_STR(FA_COPYRIGHT, "󰈙", "⚖️ ")
79 #define ICON_LINUX         ICON_STR(FA_LINUX, "󰌽", "🐧")
80 #define ICON_MAKEFILE      ICON_STR(FILE_CMAKE, "󰆍", "🛠 ")
81 #define ICON_MANUAL        ICON_STR(FILE_MANPAGE, "󱓷", "❓")
82 #define ICON_MS_EXCEL      ICON_STR(FILE_EXCEL, "󰈛", ICON_WORDDOC)
83 #define ICON_MUSIC         ICON_STR(FA_MUSIC, "󱍙", "🎧")
84 #define ICON_MUSICFILE     ICON_STR(FA_FILE_AUDIO_O, "󰎈", ICON_MUSIC)
85 #define ICON_OPTICALDISK   ICON_STR(LINEA_MUSIC_CD, "", "💿")
86 #define ICON_PDF           ICON_STR(FA_FILE_PDF_O, "󰈦", "📕")
87 #define ICON_PHOTOSHOP     ICON_STR(DEV_PHOTOSHOP, "", ICON_PICTUREFILE)
88 #define ICON_PICTUREFILE   ICON_STR(FA_FILE_IMAGE_O, "󰈟", ICON_PICTURES)
89 #define ICON_PICTURES      ICON_STR(MD_CAMERA_ALT, "󰉔", "🎨")
90 #define ICON_PLAYLIST      ICON_STR(ICON_MUSICFILE, "󱍙", "")
91 #define ICON_POWERPOINT    ICON_STR(FILE_POWERPOINT, "󰈧", "📊")
92 #define ICON_PUBLIC        ICON_STR(FA_INBOX, "", "👀")
93 #define ICON_PYTHON        ICON_STR(MFIZZ_PYTHON, "", "🐍")
94 #define ICON_REACT         ICON_STR(FILE_JSX, "", ICON_JAVASCRIPT)
95 #define ICON_RUBY          ICON_STR(MFIZZ_RUBY, "", "💎")
96 #define ICON_RUST          ICON_STR(DEV_RUST, "", "")
97 #define ICON_SASS          ICON_STR("", "", "")
98 #define ICON_SCRIPT        ICON_STR(MFIZZ_SCRIPT, "", "📜")
99 #define ICON_SUBTITLE      ICON_STR(FA_COMMENTS_O, "󰅺", "💬")
100 #define ICON_TEMPLATES     ICON_STR(FA_PAPERCLIP, "󰗇", "📎")
101 #define ICON_TEX           ICON_STR(FILE_TEX, "󰙩", ICON_DOCUMENT)
102 #define ICON_VIDEOFILE     ICON_STR(FA_FILE_MOVIE_O, "󰈫", ICON_VIDEOS)
103 #define ICON_VIDEOS        ICON_STR(FA_FILM, "󰈰", "🎞 ")
104 #define ICON_VIM           ICON_STR(DEV_VIM, "", "")
105 #define ICON_WORDDOC       ICON_STR(FILE_WORD, "󰈬", "📘")
106
107 #define ICON_EXT_ASM       ICON_STR(FILE_NASM, "", "")
108 #define ICON_EXT_BIN       ICON_STR(OCT_FILE_BINARY, "", "📓")
109 #define ICON_EXT_COFFEE    ICON_STR(MFIZZ_COFFEE_BEAN, "", "")
110 #define ICON_EXT_CSS       ICON_STR(MFIZZ_CSS3, "", "🦋")
111 #define ICON_EXT_DEB       ICON_STR(MFIZZ_DEBIAN, "", ICON_LINUX)
112 #define ICON_EXT_DIFF      ICON_STR(FILE_DIFF, "", "📋")
113 #define ICON_EXT_GO        ICON_STR(MFIZZ_GO, "󰟓", "")
114 #define ICON_EXT_JSON      ICON_STR(ICON_JAVASCRIPT, "", ICON_JAVASCRIPT)
115 #define ICON_EXT_LUA       ICON_STR(FILE_LUA, "", "🌘")
116 #define ICON_EXT_M         ICON_STR("", "󰠞", "📊")
117 #define ICON_EXT_MAT       ICON_STR("", "", "")
118 #define ICON_EXT_MD        ICON_STR(DEV_MARKDOWN, "", "📝")
119 #define ICON_EXT_MSI       ICON_STR(FA_WINDOWS, "󰍲", "🪟")
120 #define ICON_EXT_NIX       ICON_STR("", "", "")
121 #define ICON_EXT_PATCH     ICON_STR(FILE_PATCH, "", "🩹")
122 #define ICON_EXT_PHP       ICON_STR(MFIZZ_PHP, "", "🌐")
123 #define ICON_EXT_ROM       ICON_STR(FA_LOCK, "󰊖", "")
124 #define ICON_EXT_RSS       ICON_STR(FA_RSS_SQUARE, "", "📡")
125 #define ICON_EXT_RTF       ICON_STR(ICON_PDF, "󰈦", ICON_PDF)
126 #define ICON_EXT_SCALA     ICON_STR(MFIZZ_SCALA, "", "")
127 #define ICON_EXT_SLN       ICON_STR(DEV_VISUALSTUDIO, "", "")
128 #define ICON_EXT_TS        ICON_STR(FILE_TS, "", "")
129
130
131 /*
132  * Hex xterm 256 color code, 0 to follow file specific (if any)
133  * Codes: https://jonasjacek.github.io/colors/
134  * Spectrum sorted: https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg
135  * Color names: https://www.ditig.com/256-colors-cheat-sheet
136  */
137 #define COLOR_LIST \
138         COLOR_X(COLOR_VIDEO,         45)  /* Turquoise2 */ \
139         COLOR_X(COLOR_VIDEO1,       226)  /* Yellow1 */ \
140         COLOR_X(COLOR_AUDIO,        220)  /* Gold1 */ \
141         COLOR_X(COLOR_AUDIO1,       205)  /* HotPink */ \
142         COLOR_X(COLOR_IMAGE,         82)  /* Chartreuse2 */ \
143         COLOR_X(COLOR_DOCS,         202)  /* OrangeRed1 */ \
144         COLOR_X(COLOR_ARCHIVE,      209)  /* Salmon1 */ \
145         COLOR_X(COLOR_C,             81)  /* SteelBlue1 */ \
146         COLOR_X(COLOR_JAVA,          32)  /* DeepSkyBlue3 */ \
147         COLOR_X(COLOR_JAVASCRIPT,    47)  /* SpringGreen2 */ \
148         COLOR_X(COLOR_REACT,         39)  /* DeepSkyBlue1 */ \
149         COLOR_X(COLOR_CSS,          199)  /* DeepPink1 */ \
150         COLOR_X(COLOR_PYTHON,       227)  /* LightGoldenrod1 */ \
151         COLOR_X(COLOR_LUA,           19)  /* Blue3 */ \
152         COLOR_X(COLOR_DOCUMENT,      15)  /* White */ \
153         COLOR_X(COLOR_FSHARP,        31)  /* DeepSkyBlue3 */ \
154         COLOR_X(COLOR_RUBY,         160)  /* Red3 */ \
155         COLOR_X(COLOR_SCALA,        196)  /* Red1 */ \
156         COLOR_X(COLOR_SHELL,         47)  /* SpringGreen2 */ \
157         COLOR_X(COLOR_VIM,           28)  /* Green4 */ \
158         COLOR_X(COLOR_ELIXIR,       104)  /* MediumPurple */ \
159
160 /* X-Macro: https://en.wikipedia.org/wiki/X_Macro */
161 #define COLOR_X(N, V) N = (V),
162 enum { COLOR_LIST };
163 #undef COLOR_X
164 #define COLOR_X(N, V) N,
165 static const unsigned char init_colors[] = { COLOR_LIST };
166 #undef COLOR_X
167
168 #ifdef ICONS_GENERATE
169         /* temporary struct using `char *`. the hash-table generator will
170          * output a more optimized version which uses `char[]` instead reducing
171          * indirection and the total binary size.
172          */
173         struct icon_pair { const char *match; const char *icon; unsigned char color; };
174 #endif
175
176 struct icon { const char *icon; unsigned char color; };
177
178 static const struct icon dir_icon  = {ICON_DIRECTORY, 0};
179 static const struct icon file_icon = {ICON_FILE, 0};
180 static const struct icon exec_icon = {ICON_EXEC, 0};
181
182 static const struct icon_pair icons_name[] = {
183         {".git",        ICON_GIT,       0},
184         {"Desktop",     ICON_DESKTOP,   0},
185         {"Documents",   ICON_BRIEFCASE, 0},
186         {"Downloads",   ICON_DOWNLOADS, 0},
187         {"Music",       ICON_MUSIC,     0},
188         {"Pictures",    ICON_PICTURES,  0},
189         {"Public",      ICON_PUBLIC,    0},
190         {"Templates",   ICON_TEMPLATES, 0},
191         {"Videos",      ICON_VIDEOS,    0},
192         {"CHANGELOG",   ICON_CHANGELOG, COLOR_DOCS},
193         {"configure",   ICON_CONFIGURE, 0},
194         {"License",     ICON_LICENSE,   COLOR_DOCS},
195         {"Makefile",    ICON_MAKEFILE,  0},
196 };
197
198 #ifdef ICONS_GENERATE
199 /*
200  * The goal here is to provide a small set of default values. We don't try to
201  * provide icons for everything under the sun because keeping a _huge_ table of
202  * icons would: increase binary size, increase memory usage, decrease performance.
203  *
204  * Users are free to customize this *locally* as they see fit. Only open a
205  * pull-request if you think your changes are aligned with the goal described
206  * above.
207  */
208
209 static const struct icon_pair icons_ext[] = { /* All entries are case-insensitive */
210         /* Numbers */
211         {"1",          ICON_MANUAL,         COLOR_DOCS},
212         {"7z",         ICON_ARCHIVE,        COLOR_ARCHIVE},
213
214         /* A */
215         {"a",          ICON_MANUAL,         0},
216         {"apk",        ICON_ARCHIVE,        COLOR_ARCHIVE},
217         {"asm",        ICON_EXT_ASM,        0},
218         {"aup",        ICON_MUSICFILE,      COLOR_AUDIO},
219         {"avi",        ICON_VIDEOFILE,      COLOR_VIDEO},
220
221         /* B */
222         {"bat",        ICON_SCRIPT,         0},
223         {"bib",        ICON_TEX,            0},
224         {"bin",        ICON_EXT_BIN,        0},
225         {"bmp",        ICON_PICTUREFILE,    COLOR_IMAGE},
226         {"bz2",        ICON_ARCHIVE,        COLOR_ARCHIVE},
227
228         /* C */
229         {"c",          ICON_C,              COLOR_C},
230         {"c++",        ICON_CPLUSPLUS,      COLOR_C},
231         {"cabal",      ICON_HASKELL,        COLOR_VIDEO},
232         {"cab",        ICON_ARCHIVE,        COLOR_ARCHIVE},
233         {"cbr",        ICON_ARCHIVE,        COLOR_ARCHIVE},
234         {"cbz",        ICON_ARCHIVE,        COLOR_ARCHIVE},
235         {"cc",         ICON_CPLUSPLUS,      COLOR_C},
236         {"class",      ICON_JAVA,           COLOR_JAVA},
237         {"clj",        ICON_CLOJURE,        0},
238         {"cljc",       ICON_CLOJURE,        0},
239         {"cljs",       ICON_CLOJURE,        0},
240         {"cls",        ICON_TEX,            0},
241         {"cmake",      ICON_MAKEFILE,       0},
242         {"coffee",     ICON_EXT_COFFEE,     0},
243         {"conf",       ICON_CONFIGURE,      0},
244         {"cpio",       ICON_ARCHIVE,        COLOR_ARCHIVE},
245         {"cpp",        ICON_CPLUSPLUS,      COLOR_C},
246         {"css",        ICON_EXT_CSS,        COLOR_CSS},
247         {"cue",        ICON_PLAYLIST,       COLOR_AUDIO},
248         {"cvs",        ICON_CONFIGURE,      0},
249         {"cxx",        ICON_CPLUSPLUS,      COLOR_C},
250
251         /* D */
252         {"db",         ICON_DATABASE,       0},
253         {"deb",        ICON_EXT_DEB,        COLOR_ARCHIVE},
254         {"diff",       ICON_EXT_DIFF,       0},
255         {"dll",        ICON_SCRIPT,         0},
256         {"djvu",       ICON_DJVU,           COLOR_DOCS},
257         {"doc",        ICON_WORDDOC,        COLOR_DOCUMENT},
258         {"docx",       ICON_WORDDOC,        COLOR_DOCUMENT},
259
260         /* E */
261         {"ejs",        ICON_JAVASCRIPT,     COLOR_JAVASCRIPT},
262         {"elf",        ICON_LINUX,          0},
263         {"epub",       ICON_PDF,            COLOR_DOCS},
264         {"exe",        ICON_EXEC,           0},
265         {"ex",         ICON_ELIXIR,         COLOR_ELIXIR},
266         {"eex",        ICON_ELIXIR,         COLOR_ELIXIR},
267         {"exs",        ICON_ELIXIR,         COLOR_ELIXIR},
268
269         /* F */
270         {"f#",         ICON_FSHARP,         COLOR_FSHARP},
271         {"fen",        ICON_CHESS,          0},
272         {"flac",       ICON_MUSICFILE,      COLOR_AUDIO1},
273         {"flv",        ICON_VIDEOFILE,      COLOR_VIDEO},
274         {"fs",         ICON_FSHARP,         COLOR_FSHARP},
275         {"fsi",        ICON_FSHARP,         COLOR_FSHARP},
276         {"fsscript",   ICON_FSHARP,         COLOR_FSHARP},
277         {"fsx",        ICON_FSHARP,         COLOR_FSHARP},
278
279         /* G */
280         {"gem",        ICON_RUBY,           COLOR_RUBY},
281         {"gif",        ICON_PICTUREFILE,    COLOR_IMAGE},
282         {"go",         ICON_EXT_GO,         COLOR_C},
283         {"gpg",        ICON_ENCRYPT,        COLOR_ARCHIVE},
284         {"gz",         ICON_ARCHIVE,        COLOR_ARCHIVE},
285         {"gzip",       ICON_ARCHIVE,        COLOR_ARCHIVE},
286
287         /* H */
288         {"h",          ICON_C,              COLOR_C},
289         {"hh",         ICON_CPLUSPLUS,      COLOR_C},
290         {"hpp",        ICON_CPLUSPLUS,      COLOR_C},
291         {"hs",         ICON_HASKELL,        COLOR_ELIXIR},
292         {"htaccess",   ICON_CONFIGURE,      0},
293         {"htpasswd",   ICON_CONFIGURE,      0},
294         {"htm",        ICON_HTML,           0},
295         {"html",       ICON_HTML,           0},
296         {"hxx",        ICON_CPLUSPLUS,      COLOR_C},
297         {"heex",       ICON_ELIXIR,         COLOR_ELIXIR},
298
299         /* I */
300         {"ico",        ICON_PICTUREFILE,    COLOR_IMAGE},
301         {"ini",        ICON_CONFIGURE,      0},
302         {"img",        ICON_OPTICALDISK,    COLOR_ARCHIVE},
303         {"iso",        ICON_OPTICALDISK,    COLOR_ARCHIVE},
304
305         /* J */
306         {"jar",        ICON_JAVA,           COLOR_JAVA},
307         {"java",       ICON_JAVA,           COLOR_JAVA},
308         {"jl",         ICON_CONFIGURE,      0},
309         {"jpeg",       ICON_PICTUREFILE,    COLOR_IMAGE},
310         {"jpg",        ICON_PICTUREFILE,    COLOR_IMAGE},
311         {"js",         ICON_JAVASCRIPT,     COLOR_JAVASCRIPT},
312         {"json",       ICON_EXT_JSON,       COLOR_JAVASCRIPT},
313         {"jsx",        ICON_REACT,          COLOR_REACT},
314         {"jxl",        ICON_PICTUREFILE,    COLOR_IMAGE},
315
316         /* K */
317         {"ksh",        ICON_SCRIPT,         COLOR_SHELL},
318
319         /* L */
320         {"lha",        ICON_ARCHIVE,        COLOR_ARCHIVE},
321         {"lhs",        ICON_HASKELL,        COLOR_VIM},
322         {"log",        ICON_DOCUMENT,       0},
323         {"lua",        ICON_EXT_LUA,        COLOR_LUA},
324         {"lzh",        ICON_ARCHIVE,        COLOR_ARCHIVE},
325         {"lzma",       ICON_ARCHIVE,        COLOR_ARCHIVE},
326
327         /* M */
328         {"m",          ICON_EXT_M,          COLOR_C},
329         {"m4a",        ICON_MUSICFILE,      COLOR_AUDIO},
330         {"m4v",        ICON_VIDEOFILE,      COLOR_VIDEO},
331         {"markdown",   ICON_EXT_MD,         COLOR_DOCS},
332         {"mat",        ICON_EXT_MAT,        COLOR_C},
333         {"md",         ICON_EXT_MD,         COLOR_DOCS},
334         {"mk",         ICON_MAKEFILE,       0},
335         {"mkv",        ICON_VIDEOFILE,      COLOR_VIDEO},
336         {"mov",        ICON_VIDEOFILE,      COLOR_VIDEO},
337         {"mp3",        ICON_MUSICFILE,      COLOR_AUDIO},
338         {"mp4",        ICON_VIDEOFILE,      COLOR_VIDEO1},
339         {"mpeg",       ICON_VIDEOFILE,      COLOR_VIDEO},
340         {"mpg",        ICON_VIDEOFILE,      COLOR_VIDEO},
341         {"msi",        ICON_EXT_MSI,        0},
342
343         /* N */
344         {"nix",        ICON_EXT_NIX,        COLOR_FSHARP},
345
346         /* O */
347         {"o",          ICON_MANUAL,         0},
348         {"ogg",        ICON_MUSICFILE,      COLOR_AUDIO},
349         {"opus",       ICON_MUSICFILE,      COLOR_AUDIO},
350         {"opdownload", ICON_DOWNLOADS,      0},
351         {"otf",        ICON_FONT,           0},
352         {"out",        ICON_LINUX,          0},
353
354         /* P */
355         {"part",       ICON_DOWNLOADS,      0},
356         {"patch",      ICON_EXT_PATCH,      0},
357         {"pdf",        ICON_PDF,            COLOR_DOCS},
358         {"pgn",        ICON_CHESS,          0},
359         {"php",        ICON_EXT_PHP,        0},
360         {"png",        ICON_PICTUREFILE,    COLOR_IMAGE},
361         {"ppt",        ICON_POWERPOINT,     0},
362         {"pptx",       ICON_POWERPOINT,     0},
363         {"psb",        ICON_PHOTOSHOP,      0},
364         {"psd",        ICON_PHOTOSHOP,      0},
365         {"py",         ICON_PYTHON,         COLOR_PYTHON},
366         {"pyc",        ICON_PYTHON,         COLOR_PYTHON},
367         {"pyd",        ICON_PYTHON,         COLOR_PYTHON},
368         {"pyo",        ICON_PYTHON,         COLOR_PYTHON},
369
370         /* Q */
371
372         /* R */
373         {"rar",        ICON_ARCHIVE,        COLOR_ARCHIVE},
374         {"rb",         ICON_RUBY,           COLOR_RUBY},
375         {"rc",         ICON_CONFIGURE,      0},
376         {"rom",        ICON_EXT_ROM,        0},
377         {"rpm",        ICON_ARCHIVE,        COLOR_ARCHIVE},
378         {"rs",         ICON_RUST,           COLOR_DOCS},
379         {"rss",        ICON_EXT_RSS,        0},
380         {"rtf",        ICON_EXT_RTF,        0},
381
382         /* S */
383         {"sass",       ICON_SASS,           COLOR_CSS},
384         {"scss",       ICON_SASS,           COLOR_CSS},
385         {"so",         ICON_MANUAL,         0},
386         {"scala",      ICON_EXT_SCALA,      COLOR_SCALA},
387         {"sh",         ICON_SCRIPT,         COLOR_SHELL},
388         {"slim",       ICON_SCRIPT,         COLOR_DOCUMENT},
389         {"sln",        ICON_EXT_SLN,        0},
390         {"sql",        ICON_DATABASE,       0},
391         {"srt",        ICON_SUBTITLE,       0},
392         {"sty",        ICON_TEX,            0},
393         {"sub",        ICON_SUBTITLE,       0},
394         {"svg",        ICON_PICTUREFILE,    COLOR_IMAGE},
395
396         /* T */
397         {"tar",        ICON_ARCHIVE,        COLOR_ARCHIVE},
398         {"tex",        ICON_TEX,            0},
399         {"tgz",        ICON_ARCHIVE,        COLOR_ARCHIVE},
400         {"ts",         ICON_EXT_TS,         COLOR_JAVASCRIPT},
401         {"tsx",        ICON_REACT,          COLOR_REACT},
402         {"txt",        ICON_DOCUMENT,       COLOR_DOCUMENT},
403         {"txz",        ICON_ARCHIVE,        COLOR_ARCHIVE},
404         {"ttf",        ICON_FONT,           0},
405
406         /* U */
407
408         /* V */
409         {"vid",        ICON_VIDEOFILE,      COLOR_VIDEO},
410         {"vim",        ICON_VIM,            COLOR_VIM},
411         {"vimrc",      ICON_VIM,            COLOR_VIM},
412         {"vtt",        ICON_SUBTITLE,       0},
413
414         /* W */
415         {"wav",        ICON_MUSICFILE,      COLOR_AUDIO},
416         {"webm",       ICON_VIDEOFILE,      COLOR_VIDEO},
417         {"webp",       ICON_PICTUREFILE,    COLOR_IMAGE},
418         {"wma",        ICON_VIDEOFILE,      COLOR_AUDIO},
419         {"wmv",        ICON_VIDEOFILE,      COLOR_VIDEO},
420
421         /* X */
422         {"xbps",       ICON_ARCHIVE,        COLOR_ARCHIVE},
423         {"xcf",        ICON_PICTUREFILE,    COLOR_IMAGE},
424         {"xhtml",      ICON_HTML,           0},
425         {"xls",        ICON_MS_EXCEL,       0},
426         {"xlsx",       ICON_MS_EXCEL,       0},
427         {"xml",        ICON_HTML,           0},
428         {"xz",         ICON_ARCHIVE,        COLOR_ARCHIVE},
429
430         /* Y */
431         {"yaml",       ICON_CONFIGURE,      COLOR_DOCUMENT},
432         {"yml",        ICON_CONFIGURE,      COLOR_DOCUMENT},
433
434         /* Z */
435         {"zip",        ICON_ARCHIVE,        COLOR_ARCHIVE},
436         {"zsh",        ICON_SCRIPT,         COLOR_SHELL},
437         {"zst",        ICON_ARCHIVE,        COLOR_ARCHIVE},
438
439         /* Other */
440 };
441 #endif
442
443 #endif /* defined(ICONS_GENERATE) || defined(ICONS_ENABLED) */
444
445 #endif /* INCLUDE_ICONS_H */