mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-25 12:10:03 +00:00
Support for in ncurses
This commit is contained in:
parent
dbf3448031
commit
37e2bb471b
@ -540,7 +540,10 @@
|
||||
</command>
|
||||
<option>(color)</option>
|
||||
</term>
|
||||
<listitem>Change drawing color to color
|
||||
<listitem>Change drawing color to 'color' which is a name of
|
||||
a color or a hexcode preceded with # (for example #0A1B2C ).
|
||||
In ncurses the following colors are supported:
|
||||
red,green,yellow,blue,magenta,cyan,black,white.
|
||||
<para /></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
93
src/conky.c
93
src/conky.c
@ -1780,6 +1780,30 @@ static struct text_object *construct_text_object(const char *s,
|
||||
current_text_color = obj->data.l;
|
||||
}
|
||||
#endif /* X11 */
|
||||
#ifdef NCURSES
|
||||
if (output_methods & TO_NCURSES) {
|
||||
obj->data.l = COLOR_WHITE;
|
||||
if(arg) {
|
||||
if(strcasecmp(arg, "red") == 0) {
|
||||
obj->data.l = COLOR_RED;
|
||||
}else if(strcasecmp(arg, "green") == 0) {
|
||||
obj->data.l = COLOR_GREEN;
|
||||
}else if(strcasecmp(arg, "yellow") == 0) {
|
||||
obj->data.l = COLOR_YELLOW;
|
||||
}else if(strcasecmp(arg, "blue") == 0) {
|
||||
obj->data.l = COLOR_BLUE;
|
||||
}else if(strcasecmp(arg, "magenta") == 0) {
|
||||
obj->data.l = COLOR_MAGENTA;
|
||||
}else if(strcasecmp(arg, "cyan") == 0) {
|
||||
obj->data.l = COLOR_CYAN;
|
||||
}else if(strcasecmp(arg, "black") == 0) {
|
||||
obj->data.l = COLOR_BLACK;
|
||||
}
|
||||
}
|
||||
current_text_color = obj->data.l;
|
||||
init_pair(obj->data.l, obj->data.l, COLOR_BLACK);
|
||||
}
|
||||
#endif /* NCURSES */
|
||||
END OBJ(color0, 0)
|
||||
obj->data.l = color0;
|
||||
current_text_color = obj->data.l;
|
||||
@ -4098,9 +4122,11 @@ static void generate_text_internal(char *p, int p_max_size,
|
||||
new_graph(p, obj->a, obj->b, obj->c, obj->d, cur->loadavg[0],
|
||||
obj->e, 1, obj->char_a, obj->char_b);
|
||||
}
|
||||
#endif /* X11 */
|
||||
OBJ(color) {
|
||||
new_fg(p, obj->data.l);
|
||||
}
|
||||
#ifdef X11
|
||||
OBJ(color0) {
|
||||
new_fg(p, color0);
|
||||
}
|
||||
@ -6474,15 +6500,23 @@ static int text_size_updater(char *s, int special_index)
|
||||
last_font_height = font_height();
|
||||
return special_index;
|
||||
}
|
||||
#endif /* X11 */
|
||||
|
||||
static inline void set_foreground_color(long c)
|
||||
{
|
||||
if ((output_methods & TO_X) == 0)
|
||||
return;
|
||||
current_color = c;
|
||||
XSetForeground(display, window.gc, c);
|
||||
}
|
||||
#ifdef X11
|
||||
if (output_methods & TO_X) {
|
||||
current_color = c;
|
||||
XSetForeground(display, window.gc, c);
|
||||
}
|
||||
#endif /* X11 */
|
||||
#ifdef NCURSES
|
||||
if (output_methods & TO_NCURSES) {
|
||||
attron(COLOR_PAIR(c));
|
||||
}
|
||||
#endif /* NCURSES */
|
||||
return;
|
||||
}
|
||||
|
||||
static void draw_string(const char *s)
|
||||
{
|
||||
@ -6519,7 +6553,7 @@ static void draw_string(const char *s)
|
||||
}
|
||||
#ifdef NCURSES
|
||||
if ((output_methods & TO_NCURSES) && draw_mode == FG) {
|
||||
printw("%s\n", s_with_newlines);
|
||||
printw("%s", s_with_newlines);
|
||||
}
|
||||
#endif
|
||||
free(s_with_newlines);
|
||||
@ -6599,18 +6633,21 @@ static void draw_string(const char *s)
|
||||
memcpy(tmpstring1, s, text_buffer_size);
|
||||
}
|
||||
|
||||
#ifdef X11
|
||||
int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
{
|
||||
#ifdef X11
|
||||
int font_h = font_height();
|
||||
int cur_y_add = 0;
|
||||
#endif /* X11 */
|
||||
char *recurse = 0;
|
||||
char *p = s;
|
||||
int last_special_needed = -1;
|
||||
int orig_special_index = special_index;
|
||||
|
||||
#ifdef X11
|
||||
cur_x = text_start_x;
|
||||
cur_y += font_ascent();
|
||||
#endif /* X11 */
|
||||
|
||||
while (*p) {
|
||||
if (*p == SECRIT_MULTILINE_CHAR) {
|
||||
@ -6620,7 +6657,9 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
break;
|
||||
}
|
||||
if (*p == SPECIAL_CHAR || last_special_applied > -1) {
|
||||
#ifdef X11
|
||||
int w = 0;
|
||||
#endif /* X11 */
|
||||
|
||||
/* draw string before special, unless we're dealing multiline
|
||||
* specials */
|
||||
@ -6634,6 +6673,7 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
}
|
||||
/* draw special */
|
||||
switch (specials[special_index].type) {
|
||||
#ifdef X11
|
||||
case HORIZONTAL_LINE:
|
||||
{
|
||||
int h = specials[special_index].height;
|
||||
@ -6928,12 +6968,14 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
font_h = font_height();
|
||||
break;
|
||||
}
|
||||
#endif /* X11 */
|
||||
case FG:
|
||||
if (draw_mode == FG) {
|
||||
set_foreground_color(specials[special_index].arg);
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef X11
|
||||
case BG:
|
||||
if (draw_mode == BG) {
|
||||
set_foreground_color(specials[special_index].arg);
|
||||
@ -7015,9 +7057,12 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
last_special_needed = special_index;
|
||||
break;
|
||||
}
|
||||
#endif /* X11 */
|
||||
}
|
||||
|
||||
#ifdef X11
|
||||
cur_x += w;
|
||||
#endif /* X11 */
|
||||
|
||||
if (special_index != last_special_applied) {
|
||||
special_index++;
|
||||
@ -7029,31 +7074,40 @@ int draw_each_line_inner(char *s, int special_index, int last_special_applied)
|
||||
p++;
|
||||
}
|
||||
|
||||
#ifdef X11
|
||||
cur_y += cur_y_add;
|
||||
#endif /* X11 */
|
||||
draw_string(s);
|
||||
#ifdef NCURSES
|
||||
if (output_methods & TO_NCURSES) {
|
||||
printw("\n");
|
||||
}
|
||||
#endif /* NCURSES */
|
||||
#ifdef X11
|
||||
cur_y += font_descent();
|
||||
#endif /* X11 */
|
||||
if (recurse && *recurse) {
|
||||
special_index = draw_each_line_inner(recurse, special_index, last_special_needed);
|
||||
*(recurse - 1) = SECRIT_MULTILINE_CHAR;
|
||||
}
|
||||
return special_index;
|
||||
}
|
||||
#endif /* X11 */
|
||||
|
||||
static int draw_line(char *s, int special_index)
|
||||
{
|
||||
#ifdef X11
|
||||
if ((output_methods & TO_X) == 0) {
|
||||
#endif /* X11 */
|
||||
draw_string(s);
|
||||
//'special_index - special_index' instead of 0 otherwise gcc complains about not using special_index when build without X11
|
||||
return special_index - special_index;
|
||||
#ifdef X11
|
||||
if (output_methods & TO_X) {
|
||||
return draw_each_line_inner(s, special_index, -1);
|
||||
}
|
||||
|
||||
/* find specials and draw stuff */
|
||||
return draw_each_line_inner(s, special_index, -1);
|
||||
#endif /* X11 */
|
||||
#ifdef NCURSES
|
||||
if (output_methods & TO_NCURSES) {
|
||||
return draw_each_line_inner(s, special_index, -1);
|
||||
}
|
||||
#endif /* NCURSES */
|
||||
draw_string(s);
|
||||
//'special_index - special_index' instead of 0 otherwise gcc complains about not using special_index when build without X11
|
||||
return special_index - special_index;
|
||||
}
|
||||
|
||||
static void draw_text(void)
|
||||
@ -7088,6 +7142,10 @@ static void draw_text(void)
|
||||
}
|
||||
setup_fonts();
|
||||
#endif /* X11 */
|
||||
#ifdef NCURSES
|
||||
init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
|
||||
attron(COLOR_PAIR(COLOR_WHITE));
|
||||
#endif /* NCURSES */
|
||||
for_each_line(text_buffer, draw_line);
|
||||
#if defined(HAVE_LUA) && defined(X11)
|
||||
llua_draw_post_hook();
|
||||
@ -8496,6 +8554,7 @@ char load_config_file(const char *f)
|
||||
CONF("out_to_ncurses") {
|
||||
if(string_to_bool(value)) {
|
||||
initscr();
|
||||
start_color();
|
||||
output_methods |= TO_NCURSES;
|
||||
}
|
||||
}
|
||||
|
@ -351,15 +351,21 @@ void new_stippled_hr(char *buf, int a, int b)
|
||||
s->height = b;
|
||||
s->arg = a;
|
||||
}
|
||||
#endif /* X11 */
|
||||
|
||||
void new_fg(char *buf, long c)
|
||||
{
|
||||
if ((output_methods & TO_X) == 0)
|
||||
return;
|
||||
|
||||
new_special(buf, FG)->arg = c;
|
||||
#ifdef X11
|
||||
if (output_methods & TO_X)
|
||||
new_special(buf, FG)->arg = c;
|
||||
#endif /* X11 */
|
||||
#ifdef NCURSES
|
||||
if (output_methods & TO_NCURSES)
|
||||
new_special(buf, FG)->arg = c;
|
||||
#endif /* NCURSES */
|
||||
}
|
||||
|
||||
#ifdef X11
|
||||
void new_bg(char *buf, long c)
|
||||
{
|
||||
if ((output_methods & TO_X) == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user