diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-06-21 18:00:13 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-06-21 18:00:13 +0200 |
commit | e59072948b6b98844e1cb690b0605e142b0dd8bc (patch) | |
tree | 1ef1a1ab0ef43408af5b1c652991d6a3f6dbc77b | |
parent | e1b4ad5d68692d93cb9099594c8e6c3991c23571 (diff) | |
download | vconsole-e59072948b6b98844e1cb690b0605e142b0dd8bc.tar.gz |
dark mode
-rw-r--r-- | connect.c | 2 | ||||
-rw-r--r-- | domain.c | 5 | ||||
-rw-r--r-- | vconsole.c | 21 | ||||
-rw-r--r-- | vconsole.h | 1 |
4 files changed, 26 insertions, 3 deletions
@@ -156,7 +156,7 @@ struct vconsole_connect *connect_init(struct vconsole_window *win, NAME_COL, name, TYPE_COL, type, URI_COL, uri, - FOREGROUND_COL, "black", + FOREGROUND_COL, win->darkmode ? "white" : "black", WEIGHT_COL, PANGO_WEIGHT_NORMAL, -1); @@ -326,6 +326,7 @@ static int domain_update_info(struct vconsole_domain *dom, virDomainPtr d) static void domain_update_tree_store(struct vconsole_domain *dom, GtkTreeIter *guest) { + bool darkmode = dom->conn->win->darkmode; const char *foreground; char load[16], mem[16]; PangoWeight weight; @@ -333,11 +334,11 @@ static void domain_update_tree_store(struct vconsole_domain *dom, switch (dom->info.state) { case VIR_DOMAIN_RUNNING: - foreground = "darkgreen"; + foreground = darkmode ? "lightgreen" : "darkgreen"; weight = PANGO_WEIGHT_BOLD; break; default: - foreground = "black"; + foreground = darkmode ? "white" : "black"; weight = PANGO_WEIGHT_NORMAL; break; } @@ -1080,6 +1080,26 @@ static gboolean vconsole_update(gpointer data) return TRUE; } +static void vconsole_check_darkmode(struct vconsole_window *win) +{ + GtkStyle *style; + gint fg, bg; + + style = gtk_widget_get_style(GTK_WIDGET(win->tree)); + fg = (style->text[GTK_STATE_NORMAL].red * 3 + + style->text[GTK_STATE_NORMAL].green * 6 + + style->text[GTK_STATE_NORMAL].blue); + bg = (style->bg[GTK_STATE_NORMAL].red * 3 + + style->bg[GTK_STATE_NORMAL].green * 6 + + style->bg[GTK_STATE_NORMAL].blue); + if (fg > bg) + win->darkmode = true; +#if 0 + fprintf(stderr, "%s: fg %d, bg %d, darkmode %s\n", + __func__, fg, bg, win->darkmode ? "yes" : "no"); +#endif +} + /* ------------------------------------------------------------------ */ static void usage(FILE *fp) @@ -1142,6 +1162,7 @@ main(int argc, char *argv[]) vconsole_tab_list_create(win); gtk_widget_show_all(win->toplevel); gtk_widget_grab_focus(win->notebook); + vconsole_check_darkmode(win); if (uri) connect_init(win, uri); @@ -70,6 +70,7 @@ struct vconsole_window { char *tty_fg; char *tty_bg; gboolean vm_logging; + gboolean darkmode; }; extern int debug; |