From 256c8128f7138808a3e7ec0a667fe6aee4db0ccf Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 30 Apr 2014 01:35:33 -0400 Subject: move config stuff out to a separate struct --- src/config.c | 598 +++++++++++++++++++++++++++--------------------------- src/config.h | 20 ++ src/display.c | 26 +-- src/parser.c | 2 +- src/parser.l | 2 +- src/pty-unix.c | 2 +- src/runes.h | 4 +- src/term.c | 4 + src/term.h | 19 +- src/window-xlib.c | 14 +- 10 files changed, 351 insertions(+), 340 deletions(-) diff --git a/src/config.c b/src/config.c index d81f93e..1179a3d 100644 --- a/src/config.c +++ b/src/config.c @@ -25,291 +25,291 @@ void runes_config_cleanup(RunesTerm *t) { int i; - free(t->font_name); - cairo_pattern_destroy(t->cursorcolor); - cairo_pattern_destroy(t->mousecursorcolor); - cairo_pattern_destroy(t->fgdefault); - cairo_pattern_destroy(t->bgdefault); + free(t->config.font_name); + cairo_pattern_destroy(t->config.cursorcolor); + cairo_pattern_destroy(t->config.mousecursorcolor); + cairo_pattern_destroy(t->config.fgdefault); + cairo_pattern_destroy(t->config.bgdefault); for (i = 0; i < 256; ++i) { - cairo_pattern_destroy(t->colors[i]); + cairo_pattern_destroy(t->config.colors[i]); } } static void runes_config_set_defaults(RunesTerm *t) { - memset((void *)t, 0, sizeof(*t)); - - t->font_name = strdup("monospace 10"); - t->bold_is_bright = 1; - t->bold_is_bold = 1; - t->audible_bell = 1; - t->bell_is_urgent = 1; - - t->cursorcolor = cairo_pattern_create_rgb(0.0, 1.0, 0.0); - t->mousecursorcolor = cairo_pattern_create_rgb(1.0, 1.0, 1.0); - - t->fgdefault = cairo_pattern_create_rgb(0.827, 0.827, 0.827); - t->bgdefault = cairo_pattern_create_rgb(0.0, 0.0, 0.0); - - t->colors[0] = cairo_pattern_create_rgb(0.000, 0.000, 0.000); - t->colors[1] = cairo_pattern_create_rgb(0.804, 0.000, 0.000); - t->colors[2] = cairo_pattern_create_rgb(0.000, 0.804, 0.000); - t->colors[3] = cairo_pattern_create_rgb(0.804, 0.804, 0.000); - t->colors[4] = cairo_pattern_create_rgb(0.000, 0.000, 0.804); - t->colors[5] = cairo_pattern_create_rgb(0.804, 0.000, 0.804); - t->colors[6] = cairo_pattern_create_rgb(0.000, 0.804, 0.804); - t->colors[7] = cairo_pattern_create_rgb(0.898, 0.898, 0.898); - t->colors[8] = cairo_pattern_create_rgb(0.302, 0.302, 0.302); - t->colors[9] = cairo_pattern_create_rgb(1.000, 0.000, 0.000); - t->colors[10] = cairo_pattern_create_rgb(0.000, 1.000, 0.000); - t->colors[11] = cairo_pattern_create_rgb(1.000, 1.000, 0.000); - t->colors[12] = cairo_pattern_create_rgb(0.000, 0.000, 1.000); - t->colors[13] = cairo_pattern_create_rgb(1.000, 0.000, 1.000); - t->colors[14] = cairo_pattern_create_rgb(0.000, 1.000, 1.000); - t->colors[15] = cairo_pattern_create_rgb(1.000, 1.000, 1.000); - t->colors[16] = cairo_pattern_create_rgb(0.000, 0.000, 0.000); - t->colors[17] = cairo_pattern_create_rgb(0.000, 0.000, 0.373); - t->colors[18] = cairo_pattern_create_rgb(0.000, 0.000, 0.529); - t->colors[19] = cairo_pattern_create_rgb(0.000, 0.000, 0.686); - t->colors[20] = cairo_pattern_create_rgb(0.000, 0.000, 0.843); - t->colors[21] = cairo_pattern_create_rgb(0.000, 0.000, 1.000); - t->colors[22] = cairo_pattern_create_rgb(0.000, 0.373, 0.000); - t->colors[23] = cairo_pattern_create_rgb(0.000, 0.373, 0.373); - t->colors[24] = cairo_pattern_create_rgb(0.000, 0.373, 0.529); - t->colors[25] = cairo_pattern_create_rgb(0.000, 0.373, 0.686); - t->colors[26] = cairo_pattern_create_rgb(0.000, 0.373, 0.843); - t->colors[27] = cairo_pattern_create_rgb(0.000, 0.373, 1.000); - t->colors[28] = cairo_pattern_create_rgb(0.000, 0.529, 0.000); - t->colors[29] = cairo_pattern_create_rgb(0.000, 0.529, 0.373); - t->colors[30] = cairo_pattern_create_rgb(0.000, 0.529, 0.529); - t->colors[31] = cairo_pattern_create_rgb(0.000, 0.529, 0.686); - t->colors[32] = cairo_pattern_create_rgb(0.000, 0.529, 0.843); - t->colors[33] = cairo_pattern_create_rgb(0.000, 0.529, 1.000); - t->colors[34] = cairo_pattern_create_rgb(0.000, 0.686, 0.000); - t->colors[35] = cairo_pattern_create_rgb(0.000, 0.686, 0.373); - t->colors[36] = cairo_pattern_create_rgb(0.000, 0.686, 0.529); - t->colors[37] = cairo_pattern_create_rgb(0.000, 0.686, 0.686); - t->colors[38] = cairo_pattern_create_rgb(0.000, 0.686, 0.843); - t->colors[39] = cairo_pattern_create_rgb(0.000, 0.686, 1.000); - t->colors[40] = cairo_pattern_create_rgb(0.000, 0.843, 0.000); - t->colors[41] = cairo_pattern_create_rgb(0.000, 0.843, 0.373); - t->colors[42] = cairo_pattern_create_rgb(0.000, 0.843, 0.529); - t->colors[43] = cairo_pattern_create_rgb(0.000, 0.843, 0.686); - t->colors[44] = cairo_pattern_create_rgb(0.000, 0.843, 0.843); - t->colors[45] = cairo_pattern_create_rgb(0.000, 0.843, 1.000); - t->colors[46] = cairo_pattern_create_rgb(0.000, 1.000, 0.000); - t->colors[47] = cairo_pattern_create_rgb(0.000, 1.000, 0.373); - t->colors[48] = cairo_pattern_create_rgb(0.000, 1.000, 0.529); - t->colors[49] = cairo_pattern_create_rgb(0.000, 1.000, 0.686); - t->colors[50] = cairo_pattern_create_rgb(0.000, 1.000, 0.843); - t->colors[51] = cairo_pattern_create_rgb(0.000, 1.000, 1.000); - t->colors[52] = cairo_pattern_create_rgb(0.373, 0.000, 0.000); - t->colors[53] = cairo_pattern_create_rgb(0.373, 0.000, 0.373); - t->colors[54] = cairo_pattern_create_rgb(0.373, 0.000, 0.529); - t->colors[55] = cairo_pattern_create_rgb(0.373, 0.000, 0.686); - t->colors[56] = cairo_pattern_create_rgb(0.373, 0.000, 0.843); - t->colors[57] = cairo_pattern_create_rgb(0.373, 0.000, 1.000); - t->colors[58] = cairo_pattern_create_rgb(0.373, 0.373, 0.000); - t->colors[59] = cairo_pattern_create_rgb(0.373, 0.373, 0.373); - t->colors[60] = cairo_pattern_create_rgb(0.373, 0.373, 0.529); - t->colors[61] = cairo_pattern_create_rgb(0.373, 0.373, 0.686); - t->colors[62] = cairo_pattern_create_rgb(0.373, 0.373, 0.843); - t->colors[63] = cairo_pattern_create_rgb(0.373, 0.373, 1.000); - t->colors[64] = cairo_pattern_create_rgb(0.373, 0.529, 0.000); - t->colors[65] = cairo_pattern_create_rgb(0.373, 0.529, 0.373); - t->colors[66] = cairo_pattern_create_rgb(0.373, 0.529, 0.529); - t->colors[67] = cairo_pattern_create_rgb(0.373, 0.529, 0.686); - t->colors[68] = cairo_pattern_create_rgb(0.373, 0.529, 0.843); - t->colors[69] = cairo_pattern_create_rgb(0.373, 0.529, 1.000); - t->colors[70] = cairo_pattern_create_rgb(0.373, 0.686, 0.000); - t->colors[71] = cairo_pattern_create_rgb(0.373, 0.686, 0.373); - t->colors[72] = cairo_pattern_create_rgb(0.373, 0.686, 0.529); - t->colors[73] = cairo_pattern_create_rgb(0.373, 0.686, 0.686); - t->colors[74] = cairo_pattern_create_rgb(0.373, 0.686, 0.843); - t->colors[75] = cairo_pattern_create_rgb(0.373, 0.686, 1.000); - t->colors[76] = cairo_pattern_create_rgb(0.373, 0.843, 0.000); - t->colors[77] = cairo_pattern_create_rgb(0.373, 0.843, 0.373); - t->colors[78] = cairo_pattern_create_rgb(0.373, 0.843, 0.529); - t->colors[79] = cairo_pattern_create_rgb(0.373, 0.843, 0.686); - t->colors[80] = cairo_pattern_create_rgb(0.373, 0.843, 0.843); - t->colors[81] = cairo_pattern_create_rgb(0.373, 0.843, 1.000); - t->colors[82] = cairo_pattern_create_rgb(0.373, 1.000, 0.000); - t->colors[83] = cairo_pattern_create_rgb(0.373, 1.000, 0.373); - t->colors[84] = cairo_pattern_create_rgb(0.373, 1.000, 0.529); - t->colors[85] = cairo_pattern_create_rgb(0.373, 1.000, 0.686); - t->colors[86] = cairo_pattern_create_rgb(0.373, 1.000, 0.843); - t->colors[87] = cairo_pattern_create_rgb(0.373, 1.000, 1.000); - t->colors[88] = cairo_pattern_create_rgb(0.529, 0.000, 0.000); - t->colors[89] = cairo_pattern_create_rgb(0.529, 0.000, 0.373); - t->colors[90] = cairo_pattern_create_rgb(0.529, 0.000, 0.529); - t->colors[91] = cairo_pattern_create_rgb(0.529, 0.000, 0.686); - t->colors[92] = cairo_pattern_create_rgb(0.529, 0.000, 0.843); - t->colors[93] = cairo_pattern_create_rgb(0.529, 0.000, 1.000); - t->colors[94] = cairo_pattern_create_rgb(0.529, 0.373, 0.000); - t->colors[95] = cairo_pattern_create_rgb(0.529, 0.373, 0.373); - t->colors[96] = cairo_pattern_create_rgb(0.529, 0.373, 0.529); - t->colors[97] = cairo_pattern_create_rgb(0.529, 0.373, 0.686); - t->colors[98] = cairo_pattern_create_rgb(0.529, 0.373, 0.843); - t->colors[99] = cairo_pattern_create_rgb(0.529, 0.373, 1.000); - t->colors[100] = cairo_pattern_create_rgb(0.529, 0.529, 0.000); - t->colors[101] = cairo_pattern_create_rgb(0.529, 0.529, 0.373); - t->colors[102] = cairo_pattern_create_rgb(0.529, 0.529, 0.529); - t->colors[103] = cairo_pattern_create_rgb(0.529, 0.529, 0.686); - t->colors[104] = cairo_pattern_create_rgb(0.529, 0.529, 0.843); - t->colors[105] = cairo_pattern_create_rgb(0.529, 0.529, 1.000); - t->colors[106] = cairo_pattern_create_rgb(0.529, 0.686, 0.000); - t->colors[107] = cairo_pattern_create_rgb(0.529, 0.686, 0.373); - t->colors[108] = cairo_pattern_create_rgb(0.529, 0.686, 0.529); - t->colors[109] = cairo_pattern_create_rgb(0.529, 0.686, 0.686); - t->colors[110] = cairo_pattern_create_rgb(0.529, 0.686, 0.843); - t->colors[111] = cairo_pattern_create_rgb(0.529, 0.686, 1.000); - t->colors[112] = cairo_pattern_create_rgb(0.529, 0.843, 0.000); - t->colors[113] = cairo_pattern_create_rgb(0.529, 0.843, 0.373); - t->colors[114] = cairo_pattern_create_rgb(0.529, 0.843, 0.529); - t->colors[115] = cairo_pattern_create_rgb(0.529, 0.843, 0.686); - t->colors[116] = cairo_pattern_create_rgb(0.529, 0.843, 0.843); - t->colors[117] = cairo_pattern_create_rgb(0.529, 0.843, 1.000); - t->colors[118] = cairo_pattern_create_rgb(0.529, 1.000, 0.000); - t->colors[119] = cairo_pattern_create_rgb(0.529, 1.000, 0.373); - t->colors[120] = cairo_pattern_create_rgb(0.529, 1.000, 0.529); - t->colors[121] = cairo_pattern_create_rgb(0.529, 1.000, 0.686); - t->colors[122] = cairo_pattern_create_rgb(0.529, 1.000, 0.843); - t->colors[123] = cairo_pattern_create_rgb(0.529, 1.000, 1.000); - t->colors[124] = cairo_pattern_create_rgb(0.686, 0.000, 0.000); - t->colors[125] = cairo_pattern_create_rgb(0.686, 0.000, 0.373); - t->colors[126] = cairo_pattern_create_rgb(0.686, 0.000, 0.529); - t->colors[127] = cairo_pattern_create_rgb(0.686, 0.000, 0.686); - t->colors[128] = cairo_pattern_create_rgb(0.686, 0.000, 0.843); - t->colors[129] = cairo_pattern_create_rgb(0.686, 0.000, 1.000); - t->colors[130] = cairo_pattern_create_rgb(0.686, 0.373, 0.000); - t->colors[131] = cairo_pattern_create_rgb(0.686, 0.373, 0.373); - t->colors[132] = cairo_pattern_create_rgb(0.686, 0.373, 0.529); - t->colors[133] = cairo_pattern_create_rgb(0.686, 0.373, 0.686); - t->colors[134] = cairo_pattern_create_rgb(0.686, 0.373, 0.843); - t->colors[135] = cairo_pattern_create_rgb(0.686, 0.373, 1.000); - t->colors[136] = cairo_pattern_create_rgb(0.686, 0.529, 0.000); - t->colors[137] = cairo_pattern_create_rgb(0.686, 0.529, 0.373); - t->colors[138] = cairo_pattern_create_rgb(0.686, 0.529, 0.529); - t->colors[139] = cairo_pattern_create_rgb(0.686, 0.529, 0.686); - t->colors[140] = cairo_pattern_create_rgb(0.686, 0.529, 0.843); - t->colors[141] = cairo_pattern_create_rgb(0.686, 0.529, 1.000); - t->colors[142] = cairo_pattern_create_rgb(0.686, 0.686, 0.000); - t->colors[143] = cairo_pattern_create_rgb(0.686, 0.686, 0.373); - t->colors[144] = cairo_pattern_create_rgb(0.686, 0.686, 0.529); - t->colors[145] = cairo_pattern_create_rgb(0.686, 0.686, 0.686); - t->colors[146] = cairo_pattern_create_rgb(0.686, 0.686, 0.843); - t->colors[147] = cairo_pattern_create_rgb(0.686, 0.686, 1.000); - t->colors[148] = cairo_pattern_create_rgb(0.686, 0.843, 0.000); - t->colors[149] = cairo_pattern_create_rgb(0.686, 0.843, 0.373); - t->colors[150] = cairo_pattern_create_rgb(0.686, 0.843, 0.529); - t->colors[151] = cairo_pattern_create_rgb(0.686, 0.843, 0.686); - t->colors[152] = cairo_pattern_create_rgb(0.686, 0.843, 0.843); - t->colors[153] = cairo_pattern_create_rgb(0.686, 0.843, 1.000); - t->colors[154] = cairo_pattern_create_rgb(0.686, 1.000, 0.000); - t->colors[155] = cairo_pattern_create_rgb(0.686, 1.000, 0.373); - t->colors[156] = cairo_pattern_create_rgb(0.686, 1.000, 0.529); - t->colors[157] = cairo_pattern_create_rgb(0.686, 1.000, 0.686); - t->colors[158] = cairo_pattern_create_rgb(0.686, 1.000, 0.843); - t->colors[159] = cairo_pattern_create_rgb(0.686, 1.000, 1.000); - t->colors[160] = cairo_pattern_create_rgb(0.843, 0.000, 0.000); - t->colors[161] = cairo_pattern_create_rgb(0.843, 0.000, 0.373); - t->colors[162] = cairo_pattern_create_rgb(0.843, 0.000, 0.529); - t->colors[163] = cairo_pattern_create_rgb(0.843, 0.000, 0.686); - t->colors[164] = cairo_pattern_create_rgb(0.843, 0.000, 0.843); - t->colors[165] = cairo_pattern_create_rgb(0.843, 0.000, 1.000); - t->colors[166] = cairo_pattern_create_rgb(0.843, 0.373, 0.000); - t->colors[167] = cairo_pattern_create_rgb(0.843, 0.373, 0.373); - t->colors[168] = cairo_pattern_create_rgb(0.843, 0.373, 0.529); - t->colors[169] = cairo_pattern_create_rgb(0.843, 0.373, 0.686); - t->colors[170] = cairo_pattern_create_rgb(0.843, 0.373, 0.843); - t->colors[171] = cairo_pattern_create_rgb(0.843, 0.373, 1.000); - t->colors[172] = cairo_pattern_create_rgb(0.843, 0.529, 0.000); - t->colors[173] = cairo_pattern_create_rgb(0.843, 0.529, 0.373); - t->colors[174] = cairo_pattern_create_rgb(0.843, 0.529, 0.529); - t->colors[175] = cairo_pattern_create_rgb(0.843, 0.529, 0.686); - t->colors[176] = cairo_pattern_create_rgb(0.843, 0.529, 0.843); - t->colors[177] = cairo_pattern_create_rgb(0.843, 0.529, 1.000); - t->colors[178] = cairo_pattern_create_rgb(0.843, 0.686, 0.000); - t->colors[179] = cairo_pattern_create_rgb(0.843, 0.686, 0.373); - t->colors[180] = cairo_pattern_create_rgb(0.843, 0.686, 0.529); - t->colors[181] = cairo_pattern_create_rgb(0.843, 0.686, 0.686); - t->colors[182] = cairo_pattern_create_rgb(0.843, 0.686, 0.843); - t->colors[183] = cairo_pattern_create_rgb(0.843, 0.686, 1.000); - t->colors[184] = cairo_pattern_create_rgb(0.843, 0.843, 0.000); - t->colors[185] = cairo_pattern_create_rgb(0.843, 0.843, 0.373); - t->colors[186] = cairo_pattern_create_rgb(0.843, 0.843, 0.529); - t->colors[187] = cairo_pattern_create_rgb(0.843, 0.843, 0.686); - t->colors[188] = cairo_pattern_create_rgb(0.843, 0.843, 0.843); - t->colors[189] = cairo_pattern_create_rgb(0.843, 0.843, 1.000); - t->colors[190] = cairo_pattern_create_rgb(0.843, 1.000, 0.000); - t->colors[191] = cairo_pattern_create_rgb(0.843, 1.000, 0.373); - t->colors[192] = cairo_pattern_create_rgb(0.843, 1.000, 0.529); - t->colors[193] = cairo_pattern_create_rgb(0.843, 1.000, 0.686); - t->colors[194] = cairo_pattern_create_rgb(0.843, 1.000, 0.843); - t->colors[195] = cairo_pattern_create_rgb(0.843, 1.000, 1.000); - t->colors[196] = cairo_pattern_create_rgb(1.000, 0.000, 0.000); - t->colors[197] = cairo_pattern_create_rgb(1.000, 0.000, 0.373); - t->colors[198] = cairo_pattern_create_rgb(1.000, 0.000, 0.529); - t->colors[199] = cairo_pattern_create_rgb(1.000, 0.000, 0.686); - t->colors[200] = cairo_pattern_create_rgb(1.000, 0.000, 0.843); - t->colors[201] = cairo_pattern_create_rgb(1.000, 0.000, 1.000); - t->colors[202] = cairo_pattern_create_rgb(1.000, 0.373, 0.000); - t->colors[203] = cairo_pattern_create_rgb(1.000, 0.373, 0.373); - t->colors[204] = cairo_pattern_create_rgb(1.000, 0.373, 0.529); - t->colors[205] = cairo_pattern_create_rgb(1.000, 0.373, 0.686); - t->colors[206] = cairo_pattern_create_rgb(1.000, 0.373, 0.843); - t->colors[207] = cairo_pattern_create_rgb(1.000, 0.373, 1.000); - t->colors[208] = cairo_pattern_create_rgb(1.000, 0.529, 0.000); - t->colors[209] = cairo_pattern_create_rgb(1.000, 0.529, 0.373); - t->colors[210] = cairo_pattern_create_rgb(1.000, 0.529, 0.529); - t->colors[211] = cairo_pattern_create_rgb(1.000, 0.529, 0.686); - t->colors[212] = cairo_pattern_create_rgb(1.000, 0.529, 0.843); - t->colors[213] = cairo_pattern_create_rgb(1.000, 0.529, 1.000); - t->colors[214] = cairo_pattern_create_rgb(1.000, 0.686, 0.000); - t->colors[215] = cairo_pattern_create_rgb(1.000, 0.686, 0.373); - t->colors[216] = cairo_pattern_create_rgb(1.000, 0.686, 0.529); - t->colors[217] = cairo_pattern_create_rgb(1.000, 0.686, 0.686); - t->colors[218] = cairo_pattern_create_rgb(1.000, 0.686, 0.843); - t->colors[219] = cairo_pattern_create_rgb(1.000, 0.686, 1.000); - t->colors[220] = cairo_pattern_create_rgb(1.000, 0.843, 0.000); - t->colors[221] = cairo_pattern_create_rgb(1.000, 0.843, 0.373); - t->colors[222] = cairo_pattern_create_rgb(1.000, 0.843, 0.529); - t->colors[223] = cairo_pattern_create_rgb(1.000, 0.843, 0.686); - t->colors[224] = cairo_pattern_create_rgb(1.000, 0.843, 0.843); - t->colors[225] = cairo_pattern_create_rgb(1.000, 0.843, 1.000); - t->colors[226] = cairo_pattern_create_rgb(1.000, 1.000, 0.000); - t->colors[227] = cairo_pattern_create_rgb(1.000, 1.000, 0.373); - t->colors[228] = cairo_pattern_create_rgb(1.000, 1.000, 0.529); - t->colors[229] = cairo_pattern_create_rgb(1.000, 1.000, 0.686); - t->colors[230] = cairo_pattern_create_rgb(1.000, 1.000, 0.843); - t->colors[231] = cairo_pattern_create_rgb(1.000, 1.000, 1.000); - t->colors[232] = cairo_pattern_create_rgb(0.031, 0.031, 0.031); - t->colors[233] = cairo_pattern_create_rgb(0.071, 0.071, 0.071); - t->colors[234] = cairo_pattern_create_rgb(0.110, 0.110, 0.110); - t->colors[235] = cairo_pattern_create_rgb(0.149, 0.149, 0.149); - t->colors[236] = cairo_pattern_create_rgb(0.188, 0.188, 0.188); - t->colors[237] = cairo_pattern_create_rgb(0.227, 0.227, 0.227); - t->colors[238] = cairo_pattern_create_rgb(0.267, 0.267, 0.267); - t->colors[239] = cairo_pattern_create_rgb(0.306, 0.306, 0.306); - t->colors[240] = cairo_pattern_create_rgb(0.345, 0.345, 0.345); - t->colors[241] = cairo_pattern_create_rgb(0.376, 0.376, 0.376); - t->colors[242] = cairo_pattern_create_rgb(0.400, 0.400, 0.400); - t->colors[243] = cairo_pattern_create_rgb(0.463, 0.463, 0.463); - t->colors[244] = cairo_pattern_create_rgb(0.502, 0.502, 0.502); - t->colors[245] = cairo_pattern_create_rgb(0.541, 0.541, 0.541); - t->colors[246] = cairo_pattern_create_rgb(0.580, 0.580, 0.580); - t->colors[247] = cairo_pattern_create_rgb(0.620, 0.620, 0.620); - t->colors[248] = cairo_pattern_create_rgb(0.659, 0.659, 0.659); - t->colors[249] = cairo_pattern_create_rgb(0.698, 0.698, 0.698); - t->colors[250] = cairo_pattern_create_rgb(0.737, 0.737, 0.737); - t->colors[251] = cairo_pattern_create_rgb(0.776, 0.776, 0.776); - t->colors[252] = cairo_pattern_create_rgb(0.816, 0.816, 0.816); - t->colors[253] = cairo_pattern_create_rgb(0.855, 0.855, 0.855); - t->colors[254] = cairo_pattern_create_rgb(0.894, 0.894, 0.894); - t->colors[255] = cairo_pattern_create_rgb(0.933, 0.933, 0.933); - - t->default_rows = 24; - t->default_cols = 80; + RunesConfig *config = &t->config; + + config->font_name = strdup("monospace 10"); + config->bold_is_bright = 1; + config->bold_is_bold = 1; + config->audible_bell = 1; + config->bell_is_urgent = 1; + + config->cursorcolor = cairo_pattern_create_rgb(0.0, 1.0, 0.0); + config->mousecursorcolor = cairo_pattern_create_rgb(1.0, 1.0, 1.0); + + config->fgdefault = cairo_pattern_create_rgb(0.827, 0.827, 0.827); + config->bgdefault = cairo_pattern_create_rgb(0.0, 0.0, 0.0); + + config->colors[0] = cairo_pattern_create_rgb(0.000, 0.000, 0.000); + config->colors[1] = cairo_pattern_create_rgb(0.804, 0.000, 0.000); + config->colors[2] = cairo_pattern_create_rgb(0.000, 0.804, 0.000); + config->colors[3] = cairo_pattern_create_rgb(0.804, 0.804, 0.000); + config->colors[4] = cairo_pattern_create_rgb(0.000, 0.000, 0.804); + config->colors[5] = cairo_pattern_create_rgb(0.804, 0.000, 0.804); + config->colors[6] = cairo_pattern_create_rgb(0.000, 0.804, 0.804); + config->colors[7] = cairo_pattern_create_rgb(0.898, 0.898, 0.898); + config->colors[8] = cairo_pattern_create_rgb(0.302, 0.302, 0.302); + config->colors[9] = cairo_pattern_create_rgb(1.000, 0.000, 0.000); + config->colors[10] = cairo_pattern_create_rgb(0.000, 1.000, 0.000); + config->colors[11] = cairo_pattern_create_rgb(1.000, 1.000, 0.000); + config->colors[12] = cairo_pattern_create_rgb(0.000, 0.000, 1.000); + config->colors[13] = cairo_pattern_create_rgb(1.000, 0.000, 1.000); + config->colors[14] = cairo_pattern_create_rgb(0.000, 1.000, 1.000); + config->colors[15] = cairo_pattern_create_rgb(1.000, 1.000, 1.000); + config->colors[16] = cairo_pattern_create_rgb(0.000, 0.000, 0.000); + config->colors[17] = cairo_pattern_create_rgb(0.000, 0.000, 0.373); + config->colors[18] = cairo_pattern_create_rgb(0.000, 0.000, 0.529); + config->colors[19] = cairo_pattern_create_rgb(0.000, 0.000, 0.686); + config->colors[20] = cairo_pattern_create_rgb(0.000, 0.000, 0.843); + config->colors[21] = cairo_pattern_create_rgb(0.000, 0.000, 1.000); + config->colors[22] = cairo_pattern_create_rgb(0.000, 0.373, 0.000); + config->colors[23] = cairo_pattern_create_rgb(0.000, 0.373, 0.373); + config->colors[24] = cairo_pattern_create_rgb(0.000, 0.373, 0.529); + config->colors[25] = cairo_pattern_create_rgb(0.000, 0.373, 0.686); + config->colors[26] = cairo_pattern_create_rgb(0.000, 0.373, 0.843); + config->colors[27] = cairo_pattern_create_rgb(0.000, 0.373, 1.000); + config->colors[28] = cairo_pattern_create_rgb(0.000, 0.529, 0.000); + config->colors[29] = cairo_pattern_create_rgb(0.000, 0.529, 0.373); + config->colors[30] = cairo_pattern_create_rgb(0.000, 0.529, 0.529); + config->colors[31] = cairo_pattern_create_rgb(0.000, 0.529, 0.686); + config->colors[32] = cairo_pattern_create_rgb(0.000, 0.529, 0.843); + config->colors[33] = cairo_pattern_create_rgb(0.000, 0.529, 1.000); + config->colors[34] = cairo_pattern_create_rgb(0.000, 0.686, 0.000); + config->colors[35] = cairo_pattern_create_rgb(0.000, 0.686, 0.373); + config->colors[36] = cairo_pattern_create_rgb(0.000, 0.686, 0.529); + config->colors[37] = cairo_pattern_create_rgb(0.000, 0.686, 0.686); + config->colors[38] = cairo_pattern_create_rgb(0.000, 0.686, 0.843); + config->colors[39] = cairo_pattern_create_rgb(0.000, 0.686, 1.000); + config->colors[40] = cairo_pattern_create_rgb(0.000, 0.843, 0.000); + config->colors[41] = cairo_pattern_create_rgb(0.000, 0.843, 0.373); + config->colors[42] = cairo_pattern_create_rgb(0.000, 0.843, 0.529); + config->colors[43] = cairo_pattern_create_rgb(0.000, 0.843, 0.686); + config->colors[44] = cairo_pattern_create_rgb(0.000, 0.843, 0.843); + config->colors[45] = cairo_pattern_create_rgb(0.000, 0.843, 1.000); + config->colors[46] = cairo_pattern_create_rgb(0.000, 1.000, 0.000); + config->colors[47] = cairo_pattern_create_rgb(0.000, 1.000, 0.373); + config->colors[48] = cairo_pattern_create_rgb(0.000, 1.000, 0.529); + config->colors[49] = cairo_pattern_create_rgb(0.000, 1.000, 0.686); + config->colors[50] = cairo_pattern_create_rgb(0.000, 1.000, 0.843); + config->colors[51] = cairo_pattern_create_rgb(0.000, 1.000, 1.000); + config->colors[52] = cairo_pattern_create_rgb(0.373, 0.000, 0.000); + config->colors[53] = cairo_pattern_create_rgb(0.373, 0.000, 0.373); + config->colors[54] = cairo_pattern_create_rgb(0.373, 0.000, 0.529); + config->colors[55] = cairo_pattern_create_rgb(0.373, 0.000, 0.686); + config->colors[56] = cairo_pattern_create_rgb(0.373, 0.000, 0.843); + config->colors[57] = cairo_pattern_create_rgb(0.373, 0.000, 1.000); + config->colors[58] = cairo_pattern_create_rgb(0.373, 0.373, 0.000); + config->colors[59] = cairo_pattern_create_rgb(0.373, 0.373, 0.373); + config->colors[60] = cairo_pattern_create_rgb(0.373, 0.373, 0.529); + config->colors[61] = cairo_pattern_create_rgb(0.373, 0.373, 0.686); + config->colors[62] = cairo_pattern_create_rgb(0.373, 0.373, 0.843); + config->colors[63] = cairo_pattern_create_rgb(0.373, 0.373, 1.000); + config->colors[64] = cairo_pattern_create_rgb(0.373, 0.529, 0.000); + config->colors[65] = cairo_pattern_create_rgb(0.373, 0.529, 0.373); + config->colors[66] = cairo_pattern_create_rgb(0.373, 0.529, 0.529); + config->colors[67] = cairo_pattern_create_rgb(0.373, 0.529, 0.686); + config->colors[68] = cairo_pattern_create_rgb(0.373, 0.529, 0.843); + config->colors[69] = cairo_pattern_create_rgb(0.373, 0.529, 1.000); + config->colors[70] = cairo_pattern_create_rgb(0.373, 0.686, 0.000); + config->colors[71] = cairo_pattern_create_rgb(0.373, 0.686, 0.373); + config->colors[72] = cairo_pattern_create_rgb(0.373, 0.686, 0.529); + config->colors[73] = cairo_pattern_create_rgb(0.373, 0.686, 0.686); + config->colors[74] = cairo_pattern_create_rgb(0.373, 0.686, 0.843); + config->colors[75] = cairo_pattern_create_rgb(0.373, 0.686, 1.000); + config->colors[76] = cairo_pattern_create_rgb(0.373, 0.843, 0.000); + config->colors[77] = cairo_pattern_create_rgb(0.373, 0.843, 0.373); + config->colors[78] = cairo_pattern_create_rgb(0.373, 0.843, 0.529); + config->colors[79] = cairo_pattern_create_rgb(0.373, 0.843, 0.686); + config->colors[80] = cairo_pattern_create_rgb(0.373, 0.843, 0.843); + config->colors[81] = cairo_pattern_create_rgb(0.373, 0.843, 1.000); + config->colors[82] = cairo_pattern_create_rgb(0.373, 1.000, 0.000); + config->colors[83] = cairo_pattern_create_rgb(0.373, 1.000, 0.373); + config->colors[84] = cairo_pattern_create_rgb(0.373, 1.000, 0.529); + config->colors[85] = cairo_pattern_create_rgb(0.373, 1.000, 0.686); + config->colors[86] = cairo_pattern_create_rgb(0.373, 1.000, 0.843); + config->colors[87] = cairo_pattern_create_rgb(0.373, 1.000, 1.000); + config->colors[88] = cairo_pattern_create_rgb(0.529, 0.000, 0.000); + config->colors[89] = cairo_pattern_create_rgb(0.529, 0.000, 0.373); + config->colors[90] = cairo_pattern_create_rgb(0.529, 0.000, 0.529); + config->colors[91] = cairo_pattern_create_rgb(0.529, 0.000, 0.686); + config->colors[92] = cairo_pattern_create_rgb(0.529, 0.000, 0.843); + config->colors[93] = cairo_pattern_create_rgb(0.529, 0.000, 1.000); + config->colors[94] = cairo_pattern_create_rgb(0.529, 0.373, 0.000); + config->colors[95] = cairo_pattern_create_rgb(0.529, 0.373, 0.373); + config->colors[96] = cairo_pattern_create_rgb(0.529, 0.373, 0.529); + config->colors[97] = cairo_pattern_create_rgb(0.529, 0.373, 0.686); + config->colors[98] = cairo_pattern_create_rgb(0.529, 0.373, 0.843); + config->colors[99] = cairo_pattern_create_rgb(0.529, 0.373, 1.000); + config->colors[100] = cairo_pattern_create_rgb(0.529, 0.529, 0.000); + config->colors[101] = cairo_pattern_create_rgb(0.529, 0.529, 0.373); + config->colors[102] = cairo_pattern_create_rgb(0.529, 0.529, 0.529); + config->colors[103] = cairo_pattern_create_rgb(0.529, 0.529, 0.686); + config->colors[104] = cairo_pattern_create_rgb(0.529, 0.529, 0.843); + config->colors[105] = cairo_pattern_create_rgb(0.529, 0.529, 1.000); + config->colors[106] = cairo_pattern_create_rgb(0.529, 0.686, 0.000); + config->colors[107] = cairo_pattern_create_rgb(0.529, 0.686, 0.373); + config->colors[108] = cairo_pattern_create_rgb(0.529, 0.686, 0.529); + config->colors[109] = cairo_pattern_create_rgb(0.529, 0.686, 0.686); + config->colors[110] = cairo_pattern_create_rgb(0.529, 0.686, 0.843); + config->colors[111] = cairo_pattern_create_rgb(0.529, 0.686, 1.000); + config->colors[112] = cairo_pattern_create_rgb(0.529, 0.843, 0.000); + config->colors[113] = cairo_pattern_create_rgb(0.529, 0.843, 0.373); + config->colors[114] = cairo_pattern_create_rgb(0.529, 0.843, 0.529); + config->colors[115] = cairo_pattern_create_rgb(0.529, 0.843, 0.686); + config->colors[116] = cairo_pattern_create_rgb(0.529, 0.843, 0.843); + config->colors[117] = cairo_pattern_create_rgb(0.529, 0.843, 1.000); + config->colors[118] = cairo_pattern_create_rgb(0.529, 1.000, 0.000); + config->colors[119] = cairo_pattern_create_rgb(0.529, 1.000, 0.373); + config->colors[120] = cairo_pattern_create_rgb(0.529, 1.000, 0.529); + config->colors[121] = cairo_pattern_create_rgb(0.529, 1.000, 0.686); + config->colors[122] = cairo_pattern_create_rgb(0.529, 1.000, 0.843); + config->colors[123] = cairo_pattern_create_rgb(0.529, 1.000, 1.000); + config->colors[124] = cairo_pattern_create_rgb(0.686, 0.000, 0.000); + config->colors[125] = cairo_pattern_create_rgb(0.686, 0.000, 0.373); + config->colors[126] = cairo_pattern_create_rgb(0.686, 0.000, 0.529); + config->colors[127] = cairo_pattern_create_rgb(0.686, 0.000, 0.686); + config->colors[128] = cairo_pattern_create_rgb(0.686, 0.000, 0.843); + config->colors[129] = cairo_pattern_create_rgb(0.686, 0.000, 1.000); + config->colors[130] = cairo_pattern_create_rgb(0.686, 0.373, 0.000); + config->colors[131] = cairo_pattern_create_rgb(0.686, 0.373, 0.373); + config->colors[132] = cairo_pattern_create_rgb(0.686, 0.373, 0.529); + config->colors[133] = cairo_pattern_create_rgb(0.686, 0.373, 0.686); + config->colors[134] = cairo_pattern_create_rgb(0.686, 0.373, 0.843); + config->colors[135] = cairo_pattern_create_rgb(0.686, 0.373, 1.000); + config->colors[136] = cairo_pattern_create_rgb(0.686, 0.529, 0.000); + config->colors[137] = cairo_pattern_create_rgb(0.686, 0.529, 0.373); + config->colors[138] = cairo_pattern_create_rgb(0.686, 0.529, 0.529); + config->colors[139] = cairo_pattern_create_rgb(0.686, 0.529, 0.686); + config->colors[140] = cairo_pattern_create_rgb(0.686, 0.529, 0.843); + config->colors[141] = cairo_pattern_create_rgb(0.686, 0.529, 1.000); + config->colors[142] = cairo_pattern_create_rgb(0.686, 0.686, 0.000); + config->colors[143] = cairo_pattern_create_rgb(0.686, 0.686, 0.373); + config->colors[144] = cairo_pattern_create_rgb(0.686, 0.686, 0.529); + config->colors[145] = cairo_pattern_create_rgb(0.686, 0.686, 0.686); + config->colors[146] = cairo_pattern_create_rgb(0.686, 0.686, 0.843); + config->colors[147] = cairo_pattern_create_rgb(0.686, 0.686, 1.000); + config->colors[148] = cairo_pattern_create_rgb(0.686, 0.843, 0.000); + config->colors[149] = cairo_pattern_create_rgb(0.686, 0.843, 0.373); + config->colors[150] = cairo_pattern_create_rgb(0.686, 0.843, 0.529); + config->colors[151] = cairo_pattern_create_rgb(0.686, 0.843, 0.686); + config->colors[152] = cairo_pattern_create_rgb(0.686, 0.843, 0.843); + config->colors[153] = cairo_pattern_create_rgb(0.686, 0.843, 1.000); + config->colors[154] = cairo_pattern_create_rgb(0.686, 1.000, 0.000); + config->colors[155] = cairo_pattern_create_rgb(0.686, 1.000, 0.373); + config->colors[156] = cairo_pattern_create_rgb(0.686, 1.000, 0.529); + config->colors[157] = cairo_pattern_create_rgb(0.686, 1.000, 0.686); + config->colors[158] = cairo_pattern_create_rgb(0.686, 1.000, 0.843); + config->colors[159] = cairo_pattern_create_rgb(0.686, 1.000, 1.000); + config->colors[160] = cairo_pattern_create_rgb(0.843, 0.000, 0.000); + config->colors[161] = cairo_pattern_create_rgb(0.843, 0.000, 0.373); + config->colors[162] = cairo_pattern_create_rgb(0.843, 0.000, 0.529); + config->colors[163] = cairo_pattern_create_rgb(0.843, 0.000, 0.686); + config->colors[164] = cairo_pattern_create_rgb(0.843, 0.000, 0.843); + config->colors[165] = cairo_pattern_create_rgb(0.843, 0.000, 1.000); + config->colors[166] = cairo_pattern_create_rgb(0.843, 0.373, 0.000); + config->colors[167] = cairo_pattern_create_rgb(0.843, 0.373, 0.373); + config->colors[168] = cairo_pattern_create_rgb(0.843, 0.373, 0.529); + config->colors[169] = cairo_pattern_create_rgb(0.843, 0.373, 0.686); + config->colors[170] = cairo_pattern_create_rgb(0.843, 0.373, 0.843); + config->colors[171] = cairo_pattern_create_rgb(0.843, 0.373, 1.000); + config->colors[172] = cairo_pattern_create_rgb(0.843, 0.529, 0.000); + config->colors[173] = cairo_pattern_create_rgb(0.843, 0.529, 0.373); + config->colors[174] = cairo_pattern_create_rgb(0.843, 0.529, 0.529); + config->colors[175] = cairo_pattern_create_rgb(0.843, 0.529, 0.686); + config->colors[176] = cairo_pattern_create_rgb(0.843, 0.529, 0.843); + config->colors[177] = cairo_pattern_create_rgb(0.843, 0.529, 1.000); + config->colors[178] = cairo_pattern_create_rgb(0.843, 0.686, 0.000); + config->colors[179] = cairo_pattern_create_rgb(0.843, 0.686, 0.373); + config->colors[180] = cairo_pattern_create_rgb(0.843, 0.686, 0.529); + config->colors[181] = cairo_pattern_create_rgb(0.843, 0.686, 0.686); + config->colors[182] = cairo_pattern_create_rgb(0.843, 0.686, 0.843); + config->colors[183] = cairo_pattern_create_rgb(0.843, 0.686, 1.000); + config->colors[184] = cairo_pattern_create_rgb(0.843, 0.843, 0.000); + config->colors[185] = cairo_pattern_create_rgb(0.843, 0.843, 0.373); + config->colors[186] = cairo_pattern_create_rgb(0.843, 0.843, 0.529); + config->colors[187] = cairo_pattern_create_rgb(0.843, 0.843, 0.686); + config->colors[188] = cairo_pattern_create_rgb(0.843, 0.843, 0.843); + config->colors[189] = cairo_pattern_create_rgb(0.843, 0.843, 1.000); + config->colors[190] = cairo_pattern_create_rgb(0.843, 1.000, 0.000); + config->colors[191] = cairo_pattern_create_rgb(0.843, 1.000, 0.373); + config->colors[192] = cairo_pattern_create_rgb(0.843, 1.000, 0.529); + config->colors[193] = cairo_pattern_create_rgb(0.843, 1.000, 0.686); + config->colors[194] = cairo_pattern_create_rgb(0.843, 1.000, 0.843); + config->colors[195] = cairo_pattern_create_rgb(0.843, 1.000, 1.000); + config->colors[196] = cairo_pattern_create_rgb(1.000, 0.000, 0.000); + config->colors[197] = cairo_pattern_create_rgb(1.000, 0.000, 0.373); + config->colors[198] = cairo_pattern_create_rgb(1.000, 0.000, 0.529); + config->colors[199] = cairo_pattern_create_rgb(1.000, 0.000, 0.686); + config->colors[200] = cairo_pattern_create_rgb(1.000, 0.000, 0.843); + config->colors[201] = cairo_pattern_create_rgb(1.000, 0.000, 1.000); + config->colors[202] = cairo_pattern_create_rgb(1.000, 0.373, 0.000); + config->colors[203] = cairo_pattern_create_rgb(1.000, 0.373, 0.373); + config->colors[204] = cairo_pattern_create_rgb(1.000, 0.373, 0.529); + config->colors[205] = cairo_pattern_create_rgb(1.000, 0.373, 0.686); + config->colors[206] = cairo_pattern_create_rgb(1.000, 0.373, 0.843); + config->colors[207] = cairo_pattern_create_rgb(1.000, 0.373, 1.000); + config->colors[208] = cairo_pattern_create_rgb(1.000, 0.529, 0.000); + config->colors[209] = cairo_pattern_create_rgb(1.000, 0.529, 0.373); + config->colors[210] = cairo_pattern_create_rgb(1.000, 0.529, 0.529); + config->colors[211] = cairo_pattern_create_rgb(1.000, 0.529, 0.686); + config->colors[212] = cairo_pattern_create_rgb(1.000, 0.529, 0.843); + config->colors[213] = cairo_pattern_create_rgb(1.000, 0.529, 1.000); + config->colors[214] = cairo_pattern_create_rgb(1.000, 0.686, 0.000); + config->colors[215] = cairo_pattern_create_rgb(1.000, 0.686, 0.373); + config->colors[216] = cairo_pattern_create_rgb(1.000, 0.686, 0.529); + config->colors[217] = cairo_pattern_create_rgb(1.000, 0.686, 0.686); + config->colors[218] = cairo_pattern_create_rgb(1.000, 0.686, 0.843); + config->colors[219] = cairo_pattern_create_rgb(1.000, 0.686, 1.000); + config->colors[220] = cairo_pattern_create_rgb(1.000, 0.843, 0.000); + config->colors[221] = cairo_pattern_create_rgb(1.000, 0.843, 0.373); + config->colors[222] = cairo_pattern_create_rgb(1.000, 0.843, 0.529); + config->colors[223] = cairo_pattern_create_rgb(1.000, 0.843, 0.686); + config->colors[224] = cairo_pattern_create_rgb(1.000, 0.843, 0.843); + config->colors[225] = cairo_pattern_create_rgb(1.000, 0.843, 1.000); + config->colors[226] = cairo_pattern_create_rgb(1.000, 1.000, 0.000); + config->colors[227] = cairo_pattern_create_rgb(1.000, 1.000, 0.373); + config->colors[228] = cairo_pattern_create_rgb(1.000, 1.000, 0.529); + config->colors[229] = cairo_pattern_create_rgb(1.000, 1.000, 0.686); + config->colors[230] = cairo_pattern_create_rgb(1.000, 1.000, 0.843); + config->colors[231] = cairo_pattern_create_rgb(1.000, 1.000, 1.000); + config->colors[232] = cairo_pattern_create_rgb(0.031, 0.031, 0.031); + config->colors[233] = cairo_pattern_create_rgb(0.071, 0.071, 0.071); + config->colors[234] = cairo_pattern_create_rgb(0.110, 0.110, 0.110); + config->colors[235] = cairo_pattern_create_rgb(0.149, 0.149, 0.149); + config->colors[236] = cairo_pattern_create_rgb(0.188, 0.188, 0.188); + config->colors[237] = cairo_pattern_create_rgb(0.227, 0.227, 0.227); + config->colors[238] = cairo_pattern_create_rgb(0.267, 0.267, 0.267); + config->colors[239] = cairo_pattern_create_rgb(0.306, 0.306, 0.306); + config->colors[240] = cairo_pattern_create_rgb(0.345, 0.345, 0.345); + config->colors[241] = cairo_pattern_create_rgb(0.376, 0.376, 0.376); + config->colors[242] = cairo_pattern_create_rgb(0.400, 0.400, 0.400); + config->colors[243] = cairo_pattern_create_rgb(0.463, 0.463, 0.463); + config->colors[244] = cairo_pattern_create_rgb(0.502, 0.502, 0.502); + config->colors[245] = cairo_pattern_create_rgb(0.541, 0.541, 0.541); + config->colors[246] = cairo_pattern_create_rgb(0.580, 0.580, 0.580); + config->colors[247] = cairo_pattern_create_rgb(0.620, 0.620, 0.620); + config->colors[248] = cairo_pattern_create_rgb(0.659, 0.659, 0.659); + config->colors[249] = cairo_pattern_create_rgb(0.698, 0.698, 0.698); + config->colors[250] = cairo_pattern_create_rgb(0.737, 0.737, 0.737); + config->colors[251] = cairo_pattern_create_rgb(0.776, 0.776, 0.776); + config->colors[252] = cairo_pattern_create_rgb(0.816, 0.816, 0.816); + config->colors[253] = cairo_pattern_create_rgb(0.855, 0.855, 0.855); + config->colors[254] = cairo_pattern_create_rgb(0.894, 0.894, 0.894); + config->colors[255] = cairo_pattern_create_rgb(0.933, 0.933, 0.933); + + config->default_rows = 24; + config->default_cols = 80; } static FILE *runes_config_get_config_file() @@ -423,52 +423,54 @@ static void runes_config_process_args(RunesTerm *t, int argc, char *argv[]) static void runes_config_set(RunesTerm *t, char *key, char *val) { + RunesConfig *config = &t->config; + if (!strcmp(key, "font")) { - free(t->font_name); - t->font_name = runes_config_parse_string(val); + free(config->font_name); + config->font_name = runes_config_parse_string(val); } else if (!strcmp(key, "bold_is_bright")) { - t->bold_is_bright = runes_config_parse_bool(val); + config->bold_is_bright = runes_config_parse_bool(val); } else if (!strcmp(key, "bold_is_bold")) { - t->bold_is_bold = runes_config_parse_bool(val); + config->bold_is_bold = runes_config_parse_bool(val); } else if (!strcmp(key, "audible_bell")) { - t->audible_bell = runes_config_parse_bool(val); + config->audible_bell = runes_config_parse_bool(val); } else if (!strcmp(key, "bell_is_urgent")) { - t->bell_is_urgent = runes_config_parse_bool(val); + config->bell_is_urgent = runes_config_parse_bool(val); } else if (!strcmp(key, "bgcolor")) { cairo_pattern_t *newcolor; newcolor = runes_config_parse_color(val); if (newcolor) { - cairo_pattern_destroy(t->bgdefault); - t->bgdefault = newcolor; + cairo_pattern_destroy(config->bgdefault); + config->bgdefault = newcolor; } } else if (!strcmp(key, "fgcolor")) { cairo_pattern_t *newcolor; newcolor = runes_config_parse_color(val); if (newcolor) { - cairo_pattern_destroy(t->fgdefault); - t->fgdefault = newcolor; + cairo_pattern_destroy(config->fgdefault); + config->fgdefault = newcolor; } } else if (!strcmp(key, "cursorcolor")) { cairo_pattern_t *newcolor; newcolor = runes_config_parse_color(val); if (newcolor) { - cairo_pattern_destroy(t->cursorcolor); - t->cursorcolor = newcolor; + cairo_pattern_destroy(config->cursorcolor); + config->cursorcolor = newcolor; } } else if (!strcmp(key, "mousecursorcolor")) { cairo_pattern_t *newcolor; newcolor = runes_config_parse_color(val); if (newcolor) { - cairo_pattern_destroy(t->mousecursorcolor); - t->mousecursorcolor = newcolor; + cairo_pattern_destroy(config->mousecursorcolor); + config->mousecursorcolor = newcolor; } } else if (!strncmp(key, "color", 5)) { @@ -482,18 +484,18 @@ static void runes_config_set(RunesTerm *t, char *key, char *val) } newcolor = runes_config_parse_color(val); if (newcolor) { - cairo_pattern_destroy(t->colors[i]); - t->colors[i] = newcolor; + cairo_pattern_destroy(config->colors[i]); + config->colors[i] = newcolor; } } else if (!strcmp(key, "rows")) { - t->default_rows = runes_config_parse_uint(val); + config->default_rows = runes_config_parse_uint(val); } else if (!strcmp(key, "cols")) { - t->default_cols = runes_config_parse_uint(val); + config->default_cols = runes_config_parse_uint(val); } else if (!strcmp(key, "command")) { - t->cmd = runes_config_parse_string(val); + config->cmd = runes_config_parse_string(val); } else { fprintf(stderr, "unknown option: '%s'\n", key); diff --git a/src/config.h b/src/config.h index 9789caa..3881eed 100644 --- a/src/config.h +++ b/src/config.h @@ -1,6 +1,26 @@ #ifndef _RUNES_CONFIG_H #define _RUNES_CONFIG_H +struct runes_config { + cairo_pattern_t *mousecursorcolor; + cairo_pattern_t *cursorcolor; + + cairo_pattern_t *fgdefault; + cairo_pattern_t *bgdefault; + cairo_pattern_t *colors[256]; + + int default_rows; + int default_cols; + + char *cmd; + char *font_name; + + char bell_is_urgent; + char bold_is_bright; + char bold_is_bold; + char audible_bell; +}; + void runes_config_init(RunesTerm *t, int argc, char *argv[]); void runes_config_cleanup(RunesTerm *t); diff --git a/src/display.c b/src/display.c index d1102f4..ad4253d 100644 --- a/src/display.c +++ b/src/display.c @@ -57,7 +57,7 @@ void runes_display_set_window_size(RunesTerm *t) PangoFontDescription *font_desc; attrs = pango_attr_list_new(); - font_desc = pango_font_description_from_string(t->font_name); + font_desc = pango_font_description_from_string(t->config.font_name); t->layout = pango_cairo_create_layout(t->cr); pango_layout_set_attributes(t->layout, attrs); @@ -73,7 +73,7 @@ void runes_display_set_window_size(RunesTerm *t) cairo_set_source_surface(t->cr, cairo_get_target(old_cr), 0.0, 0.0); } else { - cairo_set_source(t->cr, t->bgdefault); + cairo_set_source(t->cr, t->config.bgdefault); } cairo_paint(t->cr); @@ -112,7 +112,7 @@ void runes_display_draw_cursor(RunesTerm *t, cairo_t *cr) } cairo_save(cr); - cairo_set_source(cr, t->cursorcolor); + cairo_set_source(cr, t->config.cursorcolor); if (t->unfocused) { cairo_set_line_width(cr, 1); cairo_rectangle( @@ -130,7 +130,7 @@ void runes_display_draw_cursor(RunesTerm *t, cairo_t *cr) t->fontx, t->fonty); cairo_fill(cr); runes_display_draw_glyph( - t, cr, t->bgdefault, cell->attrs, + t, cr, t->config.bgdefault, cell->attrs, cell->contents, cell->len, row, col); } cairo_restore(cr); @@ -156,7 +156,7 @@ static void runes_display_recalculate_font_metrics(RunesTerm *t) context = pango_layout_get_context(t->layout); } else { - desc = pango_font_description_from_string(t->font_name); + desc = pango_font_description_from_string(t->config.font_name); context = pango_font_map_create_context( pango_cairo_font_map_get_default()); } @@ -184,10 +184,10 @@ static int runes_display_draw_cell(RunesTerm *t, int row, int col) switch (cell->attrs.bgcolor.type) { case RUNES_COLOR_DEFAULT: - bg = t->bgdefault; + bg = t->config.bgdefault; break; case RUNES_COLOR_IDX: - bg = t->colors[cell->attrs.bgcolor.idx]; + bg = t->config.colors[cell->attrs.bgcolor.idx]; break; case RUNES_COLOR_RGB: bg = cairo_pattern_create_rgb( @@ -200,15 +200,15 @@ static int runes_display_draw_cell(RunesTerm *t, int row, int col) switch (cell->attrs.fgcolor.type) { case RUNES_COLOR_DEFAULT: - fg = t->fgdefault; + fg = t->config.fgdefault; break; case RUNES_COLOR_IDX: { unsigned char idx = cell->attrs.fgcolor.idx; - if (t->bold_is_bright && cell->attrs.bold && idx < 8) { + if (t->config.bold_is_bright && cell->attrs.bold && idx < 8) { idx += 8; } - fg = t->colors[idx]; + fg = t->config.colors[idx]; break; } case RUNES_COLOR_RGB: @@ -222,8 +222,8 @@ static int runes_display_draw_cell(RunesTerm *t, int row, int col) if (cell->attrs.inverse) { if (cell->attrs.fgcolor.id == cell->attrs.bgcolor.id) { - fg = t->bgdefault; - bg = t->fgdefault; + fg = t->config.bgdefault; + bg = t->config.fgdefault; } else { cairo_pattern_t *tmp = fg; @@ -271,7 +271,7 @@ static void runes_display_draw_glyph( PangoAttrList *pango_attrs; pango_attrs = pango_layout_get_attributes(t->layout); - if (t->bold_is_bold) { + if (t->config.bold_is_bold) { pango_attr_list_change( pango_attrs, pango_attr_weight_new( attrs.bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL)); diff --git a/src/parser.c b/src/parser.c index b9978a0..bf94340 100644 --- a/src/parser.c +++ b/src/parser.c @@ -2363,7 +2363,7 @@ static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) static void runes_parser_handle_bel(RunesTerm *t) { - if (t->audible_bell) { + if (t->config.audible_bell) { runes_screen_audible_bell(t); } else { diff --git a/src/parser.l b/src/parser.l index f2682c8..7cecfac 100644 --- a/src/parser.l +++ b/src/parser.l @@ -233,7 +233,7 @@ static void runes_parser_handle_text(RunesTerm *t, char *text, size_t len); static void runes_parser_handle_bel(RunesTerm *t) { - if (t->audible_bell) { + if (t->config.audible_bell) { runes_screen_audible_bell(t); } else { diff --git a/src/pty-unix.c b/src/pty-unix.c index c969394..3332535 100644 --- a/src/pty-unix.c +++ b/src/pty-unix.c @@ -44,7 +44,7 @@ void runes_pty_backend_spawn_subprocess(RunesTerm *t) close(pty->slave); - cmd = t->cmd; + cmd = t->config.cmd; if (!cmd) { cmd = getenv("SHELL"); } diff --git a/src/runes.h b/src/runes.h index d4e8d9f..d30bbba 100644 --- a/src/runes.h +++ b/src/runes.h @@ -11,12 +11,14 @@ struct runes_term; struct runes_window; struct runes_pty; struct runes_screen; +struct runes_config; struct runes_loop_data; typedef struct runes_term RunesTerm; typedef struct runes_window RunesWindowBackend; typedef struct runes_pty RunesPtyBackend; typedef struct runes_screen RunesScreen; +typedef struct runes_config RunesConfig; typedef struct runes_loop_data RunesLoopData; struct runes_loop_data { @@ -28,9 +30,9 @@ struct runes_loop_data { #include "pty-unix.h" #include "screen.h" +#include "config.h" #include "term.h" #include "display.h" -#include "config.h" #define UNUSED(x) ((void)x) diff --git a/src/term.c b/src/term.c index 6ca3db4..bb3a529 100644 --- a/src/term.c +++ b/src/term.c @@ -1,7 +1,11 @@ +#include + #include "runes.h" void runes_term_init(RunesTerm *t, int argc, char *argv[]) { + memset((void *)t, 0, sizeof(*t)); + runes_config_init(t, argc, argv); runes_display_init(t); diff --git a/src/term.h b/src/term.h index 2af7bfb..5ab0a3a 100644 --- a/src/term.h +++ b/src/term.h @@ -5,6 +5,7 @@ struct runes_term { RunesWindowBackend w; RunesPtyBackend pty; RunesScreen scr; + RunesConfig config; cairo_t *cr; cairo_t *backend_cr; @@ -23,24 +24,6 @@ struct runes_term { char visual_bell_is_ringing; char unfocused; - - cairo_pattern_t *mousecursorcolor; - cairo_pattern_t *cursorcolor; - - cairo_pattern_t *fgdefault; - cairo_pattern_t *bgdefault; - cairo_pattern_t *colors[256]; - - int default_rows; - int default_cols; - - char *cmd; - char *font_name; - - char bell_is_urgent; - char bold_is_bright; - char bold_is_bold; - char audible_bell; }; void runes_term_init(RunesTerm *t, int argc, char *argv[]); diff --git a/src/window-xlib.c b/src/window-xlib.c index d46b415..4904f9c 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -132,10 +132,10 @@ void runes_window_backend_create_window(RunesTerm *t, int argc, char *argv[]) normal_hints.min_height = t->fonty + 4; normal_hints.width_inc = t->fontx; normal_hints.height_inc = t->fonty; - normal_hints.base_width = t->fontx * t->default_cols + 4; - normal_hints.base_height = t->fonty * t->default_rows + 4; + normal_hints.base_width = t->fontx * t->config.default_cols + 4; + normal_hints.base_height = t->fonty * t->config.default_rows + 4; - cairo_pattern_get_rgba(t->bgdefault, &bg_r, &bg_g, &bg_b, NULL); + cairo_pattern_get_rgba(t->config.bgdefault, &bg_r, &bg_g, &bg_b, NULL); bgcolor.red = bg_r * 65535; bgcolor.green = bg_g * 65535; bgcolor.blue = bg_b * 65535; @@ -185,7 +185,7 @@ void runes_window_backend_create_window(RunesTerm *t, int argc, char *argv[]) cursor = XCreateFontCursor(w->dpy, XC_xterm); cairo_pattern_get_rgba( - t->mousecursorcolor, &mouse_r, &mouse_g, &mouse_b, NULL); + t->config.mousecursorcolor, &mouse_r, &mouse_g, &mouse_b, NULL); cursor_fg.red = (unsigned short)(mouse_r * 65535); cursor_fg.green = (unsigned short)(mouse_g * 65535); cursor_fg.blue = (unsigned short)(mouse_b * 65535); @@ -453,7 +453,7 @@ static void runes_window_backend_flush(RunesTerm *t) static void runes_window_backend_visual_bell(RunesTerm *t) { - if (t->bell_is_urgent) { + if (t->config.bell_is_urgent) { runes_window_backend_set_urgent(t); } @@ -462,7 +462,7 @@ static void runes_window_backend_visual_bell(RunesTerm *t) uv_timer_t *timer_req; t->visual_bell_is_ringing = 1; - cairo_set_source(t->backend_cr, t->fgdefault); + cairo_set_source(t->backend_cr, t->config.fgdefault); cairo_paint(t->backend_cr); cairo_surface_flush(cairo_get_target(t->backend_cr)); XFlush(w->dpy); @@ -494,7 +494,7 @@ static void runes_window_backend_audible_bell(RunesTerm *t) { RunesWindowBackend *w = &t->w; - if (t->bell_is_urgent) { + if (t->config.bell_is_urgent) { runes_window_backend_set_urgent(t); } XBell(w->dpy, 0); -- cgit v1.2.3-54-g00ecf