nnn/src/icons.h
2020-09-18 05:58:38 +05:30

507 lines
17 KiB
C

#pragma once
#if defined(ICONS)
#include "icons-in-terminal.h"
#elif defined(NERD)
#include "icons-nerdfont.h"
#endif
struct icon_pair {
const char *match;
const char *icon;
/*
* Hex xterm 256 color code, 0 to follow file specific (if any)
* Codes: https://jonasjacek.github.io/colors/
* Spectrum sorted: https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg
*/
const unsigned char color;
};
/*
* Define a string to be printed before and after the icon
* Adjust if the icons are not printed properly
*/
#define ICON_PADDING_LEFT ""
#define ICON_PADDING_RIGHT " "
#define COLOR_VIDEO 93 /* Purple */
#define COLOR_AUDIO 220 /* Gold1 */
#define COLOR_IMAGE 82 /* Chartreuse2 */
#define COLOR_DOCS 202 /* OrangeRed1 */
#define COLOR_ARCHIVE 209 /* Salmon1 */
#define COLOR_C 81 /* SteelBlue1 */
#define COLOR_JAVA 32 /* DeepSkyBlue3 */
#define COLOR_JAVASCRIPT 47 /* SpringGreen2 */
#define COLOR_REACT 39 /* DeepSkyBlue1 */
#define COLOR_CSS 199 /* DeepPink1 */
#define COLOR_PYTHON 227 /* LightGoldenrod1 */
#define COLOR_LUA 19 /* LightGoldenrod1 */
#define COLOR_DOCUMENT 15 /* WHITE */
#define COLOR_FSHARP 31 /* DeepSkyBlue3 */
#define COLOR_RUBY 160 /* Red3 */
#define COLOR_SCALA 196 /* Red1 */
#define COLOR_VIM 28 /* Green4 */
/*
* Using symbols defined in icons-in-terminal.h, or even using icons-in-terminal is not necessary.
* You can use whatever pathched font you like. You just have to put the desired icon as a string.
* If you are using icons-in-terminal the creator recommends that you do use the symbols in the generated header.
*/
#if defined(ICONS)
static const struct icon_pair dir_icon = {"", FA_FOLDER, 0};
static const struct icon_pair file_icon = {"", FA_FILE_O, 0};
static const struct icon_pair exec_icon = {"", FA_COG, 0};
#elif defined(NERD)
static const struct icon_pair dir_icon = {"", ICON_DIRECTORY, 0};
static const struct icon_pair file_icon = {"", ICON_FILE, 0};
static const struct icon_pair exec_icon = {"", ICON_EXEC, 0};
#endif
/* All entries are case-insensitive */
static const struct icon_pair icons_name[] = {
#if defined(ICONS)
{".git", FA_GIT, 0},
{"Desktop", FA_DESKTOP, 0},
{"Documents", FA_BRIEFCASE, 0},
{"Downloads", FA_DOWNLOAD, 0},
{"Music", FA_MUSIC, 0},
{"Pictures", MD_CAMERA_ALT, 0},
{"Public", FA_INBOX, 0},
{"Templates", FA_PAPERCLIP, 0},
{"Videos", FA_FILM, 0},
{"CHANGELOG", FA_HISTORY, COLOR_DOCS},
{"configure", FILE_CONFIG, 0},
{"License", FA_COPYRIGHT, COLOR_DOCS},
{"Makefile", FILE_CMAKE, 0},
#elif defined(NERD)
{".git", ICON_GIT, 0},
{"Desktop", ICON_DESKTOP, 0},
{"Documents", ICON_BRIEFCASE, 0},
{"Downloads", ICON_DOWNLOADS, 0},
{"Music", ICON_MUSIC, 0},
{"Pictures", ICON_PICTURES, 0},
{"Public", ICON_PUBLIC, 0},
{"Templates", ICON_TEMPLATES, 0},
{"Videos", ICON_VIDEOS, 0},
{"CHANGELOG", ICON_CHANGELOG, COLOR_DOCS},
{"configure", ICON_CONFIGURE, 0},
{"License", ICON_LICENSE, COLOR_DOCS},
{"Makefile", ICON_MAKEFILE, 0},
#endif
};
/*
* New entries should bu added such that the first character of the extension is in the correct group .
* This is done for performance reason so that the correct icon can be found faster.
* All entries are case-insensitive
*/
static const struct icon_pair icons_ext[] = {
#if defined(ICONS)
/* Numbers */
{"1", FILE_MANPAGE, COLOR_DOCS},
{"7z", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* A */
{"a", FILE_MANPAGE, 0},
{"apk", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"asm", FILE_NASM, 0},
{"aup", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"avi", FA_FILE_MOVIE_O, COLOR_VIDEO},
/* B */
{"bat", MFIZZ_SCRIPT, 0},
{"bin", OCT_FILE_BINARY, 0},
{"bmp", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"bz2", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* C */
{"c", MFIZZ_C, 0},
{"c++", MFIZZ_CPLUSPLUS, 0},
{"cab", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"cbr", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"cbz", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"cc", MFIZZ_CPLUSPLUS, 0},
{"class", MFIZZ_JAVA, 0},
{"clj", MFIZZ_CLOJURE, 0},
{"cljc", MFIZZ_CLOJURE, 0},
{"cljs", MFIZZ_CLOJURE, 0},
{"cmake", FILE_CMAKE, 0},
{"coffee", MFIZZ_COFFEE_BEAN, 0},
{"conf", FA_COGS, 0},
{"cpio", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"cpp", MFIZZ_CPLUSPLUS, 0},
{"css", MFIZZ_CSS3, 0},
{"cue", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"cvs", FA_COGS, 0},
{"cxx", MFIZZ_CPLUSPLUS, 0},
/* D */
{"db", MFIZZ_DATABASE_ALT2, 0},
{"deb", MFIZZ_DEBIAN, COLOR_ARCHIVE},
{"diff", FILE_DIFF, 0},
{"dll", FILE_MANPAGE, 0},
{"doc", FILE_WORD, 0},
{"docx", FILE_WORD, 0},
/* E */
{"ejs", FA_FILE_CODE_O, 0},
{"elf", FA_LINUX, 0},
{"epub", FA_FILE_PDF_O, COLOR_DOCS},
{"exe", FA_WINDOWS, 0},
/* F */
{"f#", DEV_FSHARP, 0},
{"flac", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"flv", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"fs", DEV_FSHARP, 0},
{"fsi", DEV_FSHARP, 0},
{"fsscript", DEV_FSHARP, 0},
{"fsx", DEV_FSHARP, 0},
/* G */
{"gem", FA_FILE_ARCHIVE_O, 0},
{"gif", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"go", MFIZZ_GO, 0},
{"gz", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"gzip", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* H */
{"h", MFIZZ_C, 0},
{"hh", MFIZZ_CPLUSPLUS, 0},
{"htaccess", FA_COGS, 0},
{"htpasswd", FA_COGS, 0},
{"htm", FA_FILE_CODE_O, 0},
{"html", FA_FILE_CODE_O, 0},
{"hxx", MFIZZ_CPLUSPLUS, 0},
/* I */
{"ico", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"img", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"ini", FA_COGS, 0},
{"iso", LINEA_MUSIC_CD, COLOR_ARCHIVE},
/* J */
{"jar", MFIZZ_JAVA, 0},
{"java", MFIZZ_JAVA, 0},
{"jl", FA_COGS, 0},
{"jpeg", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"jpg", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"js", DEV_JAVASCRIPT_BADGE, 0},
{"json", MFIZZ_JAVASCRIPT, 0},
{"jsx", FILE_JSX, 0},
/* K */
/* L */
{"lha", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"log", FA_FILE_TEXT_O, 0},
{"lua", FILE_LUA, 0},
{"lzh", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"lzma", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* M */
{"m4a", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"m4v", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"markdown", DEV_MARKDOWN, COLOR_DOCS},
{"md", DEV_MARKDOWN, COLOR_DOCS},
{"mk", FILE_CMAKE, 0},
{"mkv", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"mov", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"mp3", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"mp4", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"mpeg", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"mpg", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"msi", FA_WINDOWS, 0},
/* N */
/* O */
{"o", FILE_MANPAGE, 0},
{"ogg", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"opdownload", FA_DOWNLOAD, 0},
{"out", FA_LINUX, 0},
/* P */
{"part", FA_DOWNLOAD, 0},
{"patch", FILE_PATCH, 0},
{"pdf", FA_FILE_PDF_O, COLOR_DOCS},
{"php", MFIZZ_PHP, 0},
{"png", FA_FILE_IMAGE_O, COLOR_IMAGE},
{"ppt", FILE_POWERPOINT, 0},
{"pptx", FILE_POWERPOINT, 0},
{"psb", DEV_PHOTOSHOP, 0},
{"psd", DEV_PHOTOSHOP, 0},
{"py", MFIZZ_PYTHON, 0},
{"pyc", MFIZZ_PYTHON, 0},
{"pyd", MFIZZ_PYTHON, 0},
{"pyo", MFIZZ_PYTHON, 0},
/* Q */
/* R */
{"rar", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"rc", FA_COGS, 0},
{"rom", FA_LOCK, 0},
{"rpm", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"rss", FA_RSS_SQUARE, 0},
{"rtf", FA_FILE_PDF_O, 0},
/* S */
{"so", FILE_MANPAGE, 0},
{"scala", MFIZZ_SCALA, 0},
{"sh", MFIZZ_SCRIPT, 0},
{"slim", FA_FILE_CODE_O, 0},
{"sln", DEV_VISUALSTUDIO, 0},
{"sql", MFIZZ_MYSQL, 0},
{"srt", FA_COMMENTS_O, 0},
{"sub", FA_COMMENTS_O, 0},
{"svg", FA_FILE_IMAGE_O, COLOR_IMAGE},
/* T */
{"tar", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"tex", FILE_TEX, 0},
{"tgz", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"ts", FILE_TS, 0},
{"tsx", FILE_TSX, 0},
{"txt", FA_FILE_TEXT_O, 0},
{"txz", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* U */
/* V */
{"vid", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"vim", DEV_VIM, 0},
{"vimrc", DEV_VIM, 0},
{"vtt", FA_COMMENTS_O, 0},
/* W */
{"wav", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"webm", FA_FILE_MOVIE_O, COLOR_VIDEO},
{"wma", FA_FILE_AUDIO_O, COLOR_AUDIO},
{"wmv", FA_FILE_MOVIE_O, COLOR_VIDEO},
/* X */
{"xbps", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
{"xhtml", FA_FILE_CODE_O, 0},
{"xls", FILE_EXCEL, 0},
{"xlsx", FILE_EXCEL, 0},
{"xml", FA_FILE_CODE_O, 0},
{"xz", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* Y */
{"yaml", FA_COGS, 0},
{"yml", FA_COGS, 0},
/* Z */
{"zip", FA_FILE_ARCHIVE_O, COLOR_ARCHIVE},
/* Other */
#elif defined(NERD)
/* Numbers */
{"1", ICON_EXT_1, COLOR_DOCS},
{"7z", ICON_EXT_7Z, COLOR_ARCHIVE},
/* A */
{"a", ICON_EXT_A, 0},
{"apk", ICON_EXT_APK, COLOR_ARCHIVE},
{"asm", ICON_EXT_ASM, 0},
{"aup", ICON_EXT_AUP, COLOR_AUDIO},
{"avi", ICON_EXT_AVI, COLOR_VIDEO},
/* B */
{"bat", ICON_EXT_BAT, 0},
{"bin", ICON_EXT_BIN, 0},
{"bmp", ICON_EXT_BMP, COLOR_IMAGE},
{"bz2", ICON_EXT_BZ2, COLOR_ARCHIVE},
/* C */
{"c", ICON_EXT_C, COLOR_C},
{"c++", ICON_EXT_CPLUSPLUS, COLOR_C},
{"cab", ICON_EXT_CAB, COLOR_ARCHIVE},
{"cbr", ICON_EXT_CBR, COLOR_ARCHIVE},
{"cbz", ICON_EXT_CBZ, COLOR_ARCHIVE},
{"cc", ICON_EXT_CC, COLOR_C},
{"class", ICON_EXT_CLASS, COLOR_JAVA},
{"clj", ICON_EXT_CLJ, 0},
{"cljc", ICON_EXT_CLJC, 0},
{"cljs", ICON_EXT_CLJS, 0},
{"cmake", ICON_EXT_CMAKE, 0},
{"coffee", ICON_EXT_COFFEE, 0},
{"conf", ICON_EXT_CONF, 0},
{"cpio", ICON_EXT_CPIO, COLOR_ARCHIVE},
{"cpp", ICON_EXT_CPP, 0},
{"css", ICON_EXT_CSS, COLOR_CSS},
{"cue", ICON_EXT_CUE, COLOR_AUDIO},
{"cvs", ICON_EXT_CVS, 0},
{"cxx", ICON_EXT_CXX, COLOR_C},
/* D */
{"db", ICON_EXT_DB, 0},
{"deb", ICON_EXT_DEB, COLOR_ARCHIVE},
{"diff", ICON_EXT_DIFF, 0},
{"dll", ICON_EXT_DLL, 0},
{"doc", ICON_EXT_DOC, COLOR_DOCUMENT},
{"docx", ICON_EXT_DOCX, COLOR_DOCUMENT},
/* E */
{"ejs", ICON_EXT_EJS, COLOR_JAVASCRIPT},
{"elf", ICON_EXT_ELF, 0},
{"epub", ICON_EXT_EPUB, COLOR_DOCS},
{"exe", ICON_EXT_EXE, 0},
/* F */
{"f#", ICON_EXT_FSHARP, COLOR_FSHARP},
{"flac", ICON_EXT_FLAC, COLOR_AUDIO},
{"flv", ICON_EXT_FLV, COLOR_VIDEO},
{"fs", ICON_EXT_FS, COLOR_FSHARP},
{"fsi", ICON_EXT_FSI, COLOR_FSHARP},
{"fsscript", ICON_EXT_FSSCRIPT, COLOR_FSHARP},
{"fsx", ICON_EXT_FSX, COLOR_FSHARP},
/* G */
{"gem", ICON_EXT_GEM, COLOR_RUBY},
{"gif", ICON_EXT_GIF, COLOR_IMAGE},
{"go", ICON_EXT_GO, 0},
{"gz", ICON_EXT_GZ, COLOR_ARCHIVE},
{"gzip", ICON_EXT_GZIP, COLOR_ARCHIVE},
/* H */
{"h", ICON_EXT_H, COLOR_C},
{"hh", ICON_EXT_HH, COLOR_C},
{"htaccess", ICON_EXT_HTACCESS, 0},
{"htpasswd", ICON_EXT_HTPASSWD, 0},
{"htm", ICON_EXT_HTM, 0},
{"html", ICON_EXT_HTML, 0},
{"hxx", ICON_EXT_HXX, COLOR_C},
/* I */
{"ico", ICON_EXT_ICO, COLOR_IMAGE},
{"img", ICON_EXT_IMG, COLOR_ARCHIVE},
{"ini", ICON_EXT_INI, 0},
{"iso", ICON_EXT_ISO, COLOR_ARCHIVE},
/* J */
{"jar", ICON_EXT_JAR, COLOR_JAVA},
{"java", ICON_EXT_JAVA, COLOR_JAVA},
{"jl", ICON_EXT_JL, 0},
{"jpeg", ICON_EXT_JPEG, COLOR_IMAGE},
{"jpg", ICON_EXT_JPG, COLOR_IMAGE},
{"js", ICON_EXT_JS, COLOR_JAVASCRIPT},
{"json", ICON_EXT_JSON, COLOR_JAVASCRIPT},
{"jsx", ICON_EXT_JSX, COLOR_REACT},
/* K */
/* L */
{"lha", ICON_EXT_LHA, COLOR_ARCHIVE},
{"log", ICON_EXT_LOG, 0},
{"lua", ICON_EXT_LUA, 0},
{"lzh", ICON_EXT_LZH, COLOR_ARCHIVE},
{"lzma", ICON_EXT_LZMA, COLOR_ARCHIVE},
/* M */
{"m4a", ICON_EXT_M4A, COLOR_AUDIO},
{"m4v", ICON_EXT_M4V, COLOR_VIDEO},
{"markdown", ICON_EXT_MD, COLOR_DOCS},
{"md", ICON_EXT_MD, COLOR_DOCS},
{"mk", ICON_EXT_MK, 0},
{"mkv", ICON_EXT_MKV, COLOR_VIDEO},
{"mov", ICON_EXT_MOV, COLOR_VIDEO},
{"mp3", ICON_EXT_MP3, COLOR_AUDIO},
{"mp4", ICON_EXT_MP4, COLOR_VIDEO},
{"mpeg", ICON_EXT_MPEG, COLOR_VIDEO},
{"mpg", ICON_EXT_MPG, COLOR_VIDEO},
{"msi", ICON_EXT_MSI, 0},
/* N */
/* O */
{"o", ICON_EXT_O, 0},
{"ogg", ICON_EXT_OGG, COLOR_AUDIO},
{"opdownload", ICON_EXT_ODOWNLOAD, 0},
{"out", ICON_EXT_OUT, 0},
/* P */
{"part", ICON_EXT_PART, 0},
{"patch", ICON_EXT_PATCH, 0},
{"pdf", ICON_EXT_PDF, COLOR_DOCS},
{"php", ICON_EXT_PHP, 0},
{"png", ICON_EXT_PNG, COLOR_IMAGE},
{"ppt", ICON_EXT_PPT, 0},
{"pptx", ICON_EXT_PPTX, 0},
{"psb", ICON_EXT_PSB, 0},
{"psd", ICON_EXT_PSD, 0},
{"py", ICON_EXT_PY, COLOR_PYTHON},
{"pyc", ICON_EXT_PYC, COLOR_PYTHON},
{"pyd", ICON_EXT_PYD, COLOR_PYTHON},
{"pyo", ICON_EXT_PYO, COLOR_PYTHON},
/* Q */
/* R */
{"rar", ICON_EXT_RAR, COLOR_ARCHIVE},
{"rc", ICON_EXT_RC, 0},
{"rom", ICON_EXT_ROM, 0},
{"rpm", ICON_EXT_RPM, COLOR_ARCHIVE},
{"rss", ICON_EXT_RSS, 0},
{"rtf", ICON_EXT_RTF, 0},
/* S */
{"sass", ICON_EXT_SASS, COLOR_CSS},
{"scss", ICON_EXT_SCSS, COLOR_CSS},
{"so", ICON_EXT_SO, 0},
{"scala", ICON_EXT_SCALA, COLOR_SCALA},
{"sh", ICON_EXT_SH, 0},
{"slim", ICON_EXT_SLIM, COLOR_DOCUMENT},
{"sln", ICON_EXT_SLN, 0},
{"sql", ICON_EXT_SQL, 0},
{"srt", ICON_EXT_SRT, 0},
{"sub", ICON_EXT_SUB, 0},
{"svg", ICON_EXT_SVG, COLOR_IMAGE},
/* T */
{"tar", ICON_EXT_TAR, COLOR_ARCHIVE},
{"tex", ICON_EXT_TEX, 0},
{"tgz", ICON_EXT_TGZ, COLOR_ARCHIVE},
{"ts", ICON_EXT_TS, COLOR_JAVASCRIPT},
{"tsx", ICON_EXT_TSX, COLOR_REACT},
{"txt", ICON_EXT_TXT, COLOR_DOCUMENT},
{"txz", ICON_EXT_TXZ, COLOR_ARCHIVE},
/* U */
/* V */
{"vid", ICON_EXT_VID, COLOR_VIDEO},
{"vim", ICON_EXT_VIM, COLOR_VIM},
{"vimrc", ICON_EXT_VIMRC, COLOR_VIM},
{"vtt", ICON_EXT_SRT, 0},
/* W */
{"wav", ICON_EXT_WAV, COLOR_AUDIO},
{"webm", ICON_EXT_WEBM, COLOR_VIDEO},
{"wma", ICON_EXT_WMA, COLOR_AUDIO},
{"wmv", ICON_EXT_WMV, COLOR_VIDEO},
/* X */
{"xbps", ICON_EXT_XBPS, COLOR_ARCHIVE},
{"xhtml", ICON_EXT_XHTML, 0},
{"xls", ICON_EXT_XLS, 0},
{"xlsx", ICON_EXT_XLSX, 0},
{"xml", ICON_EXT_XML, 0},
{"xz", ICON_EXT_XZ, COLOR_ARCHIVE},
/* Y */
{"yaml", ICON_EXT_YAML, COLOR_DOCUMENT},
{"yml", ICON_EXT_YML, COLOR_DOCUMENT},
/* Z */
{"zip", ICON_EXT_ZIP, COLOR_ARCHIVE},
/* Other */
#endif
};