/* This function is called only when colorschemes file doesn't exist */ void write_color_scheme_file(void) { FILE *fp; char colors_dir[PATH_MAX]; int y; snprintf(colors_dir, sizeof(colors_dir), "%s/colors", cfg.config_dir); if(make_dir(colors_dir, 0777) != 0) return; strcat(colors_dir, "/Default"); if((fp = fopen(colors_dir, "w")) == NULL) return; fprintf(fp, "\" You can edit this file by hand.\n"); fprintf(fp, "\" The \" character at the beginning of a line comments out the line.\n"); fprintf(fp, "\" Blank lines are ignored.\n\n"); fprintf(fp, "\" The Default color scheme is used for any directory that does not have\n"); fprintf(fp, "\" a specified scheme and for parts of user interface like menus. A\n"); fprintf(fp, "\" color scheme set for a base directory will also\n"); fprintf(fp, "\" be used for the sub directories.\n\n"); fprintf(fp, "\" The standard ncurses colors are:\n"); fprintf(fp, "\" Default = -1 = None, can be used for transparency or default color\n"); fprintf(fp, "\" Black = 0\n"); fprintf(fp, "\" Red = 1\n"); fprintf(fp, "\" Green = 2\n"); fprintf(fp, "\" Yellow = 3\n"); fprintf(fp, "\" Blue = 4\n"); fprintf(fp, "\" Magenta = 5\n"); fprintf(fp, "\" Cyan = 6\n"); fprintf(fp, "\" White = 7\n\n"); fprintf(fp, "\" Available style values (some of them can be combined):\n"); fprintf(fp, "\" bold\n"); fprintf(fp, "\" underline\n"); fprintf(fp, "\" reverse or inverse\n"); fprintf(fp, "\" standout\n"); fprintf(fp, "\" none\n\n"); fprintf(fp, "\" Vifm supports 256 colors you can use color numbers 0-255\n"); fprintf(fp, "\" (requires properly set up terminal: set your TERM environment variable\n"); fprintf(fp, "\" (directly or using resources) to some color terminal name (e.g.\n"); fprintf(fp, "\" xterm-256color) from /usr/lib/terminfo/; you can check current number\n"); fprintf(fp, "\" of colors in your terminal with tput colors command)\n\n"); fprintf(fp, "\" highlight group cterm=style ctermfg=foreground_color ctermbg=background_color\n\n"); for(y = 0; y < MAXNUM_COLOR - 2; y++) { char fg_buf[16], bg_buf[16]; int fg = cfg.cs.color[y].fg; int bg = cfg.cs.color[y].bg; if(fg == -1) strcpy(fg_buf, "default"); else if(fg < ARRAY_LEN(COLOR_NAMES)) strcpy(fg_buf, COLOR_NAMES[fg]); else snprintf(fg_buf, sizeof(fg_buf), "%d", fg); if(bg == -1) strcpy(bg_buf, "default"); else if(bg < ARRAY_LEN(COLOR_NAMES)) strcpy(bg_buf, COLOR_NAMES[bg]); else snprintf(bg_buf, sizeof(bg_buf), "%d", bg); fprintf(fp, "highlight %s cterm=%s ctermfg=%s ctermbg=%s\n", HI_GROUPS[y], attrs_to_str(cfg.cs.color[y].attr), fg_buf, bg_buf); } fclose(fp); }
void write_color_scheme_file(void) { FILE *fp; char colors_dir[PATH_MAX]; int i; snprintf(colors_dir, sizeof(colors_dir), "%s/colors", cfg.config_dir); if(make_dir(colors_dir, 0777) != 0) return; strncat(colors_dir, "/Default", sizeof(colors_dir) - strlen(colors_dir) - 1); if((fp = fopen(colors_dir, "w")) == NULL) return; fprintf(fp, "\" You can edit this file by hand.\n"); fprintf(fp, "\" The \" character at the beginning of a line comments out the line.\n"); fprintf(fp, "\" Blank lines are ignored.\n\n"); fprintf(fp, "\" The Default color scheme is used for any directory that does not have\n"); fprintf(fp, "\" a specified scheme and for parts of user interface like menus. A\n"); fprintf(fp, "\" color scheme set for a base directory will also\n"); fprintf(fp, "\" be used for the sub directories.\n\n"); fprintf(fp, "\" The standard ncurses colors are:\n"); fprintf(fp, "\" Default = -1 = None, can be used for transparency or default color\n"); fprintf(fp, "\" Black = 0\n"); fprintf(fp, "\" Red = 1\n"); fprintf(fp, "\" Green = 2\n"); fprintf(fp, "\" Yellow = 3\n"); fprintf(fp, "\" Blue = 4\n"); fprintf(fp, "\" Magenta = 5\n"); fprintf(fp, "\" Cyan = 6\n"); fprintf(fp, "\" White = 7\n\n"); fprintf(fp, "\" Light versions of colors are also available (set bold attribute):\n"); fprintf(fp, "\" LightBlack\n"); fprintf(fp, "\" LightRed\n"); fprintf(fp, "\" LightGreen\n"); fprintf(fp, "\" LightYellow\n"); fprintf(fp, "\" LightBlue\n"); fprintf(fp, "\" LightMagenta\n"); fprintf(fp, "\" LightCyan\n"); fprintf(fp, "\" LightWhite\n\n"); fprintf(fp, "\" Available attributes (some of them can be combined):\n"); fprintf(fp, "\" bold\n"); fprintf(fp, "\" underline\n"); fprintf(fp, "\" reverse or inverse\n"); fprintf(fp, "\" standout\n"); fprintf(fp, "\" none\n\n"); fprintf(fp, "\" Vifm supports 256 colors you can use color numbers 0-255\n"); fprintf(fp, "\" (requires properly set up terminal: set your TERM environment variable\n"); fprintf(fp, "\" (directly or using resources) to some color terminal name (e.g.\n"); fprintf(fp, "\" xterm-256color) from /usr/lib/terminfo/; you can check current number\n"); fprintf(fp, "\" of colors in your terminal with tput colors command)\n\n"); fprintf(fp, "\" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color\n\n"); for(i = 0; i < MAXNUM_COLOR - 2; ++i) { char fg_buf[16], bg_buf[16]; if(i == OTHER_LINE_COLOR) { /* Skip OtherLine as there is no way to express defaults. */ continue; } color_to_str(cfg.cs.color[i].fg, sizeof(fg_buf), fg_buf); color_to_str(cfg.cs.color[i].bg, sizeof(bg_buf), bg_buf); fprintf(fp, "highlight %s cterm=%s ctermfg=%s ctermbg=%s\n", HI_GROUPS[i], attrs_to_str(cfg.cs.color[i].attr), fg_buf, bg_buf); } fclose(fp); }