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