aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2019-06-21 18:00:13 +0200
committerGerd Hoffmann <kraxel@redhat.com>2019-06-21 18:00:13 +0200
commite59072948b6b98844e1cb690b0605e142b0dd8bc (patch)
tree1ef1a1ab0ef43408af5b1c652991d6a3f6dbc77b
parente1b4ad5d68692d93cb9099594c8e6c3991c23571 (diff)
downloadvconsole-e59072948b6b98844e1cb690b0605e142b0dd8bc.tar.gz
dark mode
-rw-r--r--connect.c2
-rw-r--r--domain.c5
-rw-r--r--vconsole.c21
-rw-r--r--vconsole.h1
4 files changed, 26 insertions, 3 deletions
diff --git a/connect.c b/connect.c
index 5af71ed..d165535 100644
--- a/connect.c
+++ b/connect.c
@@ -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);
diff --git a/domain.c b/domain.c
index c5ead3b..3a1faad 100644
--- a/domain.c
+++ b/domain.c
@@ -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;
}
diff --git a/vconsole.c b/vconsole.c
index 28e187a..e8c0088 100644
--- a/vconsole.c
+++ b/vconsole.c
@@ -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);
diff --git a/vconsole.h b/vconsole.h
index e01f372..17fabb2 100644
--- a/vconsole.h
+++ b/vconsole.h
@@ -70,6 +70,7 @@ struct vconsole_window {
char *tty_fg;
char *tty_bg;
gboolean vm_logging;
+ gboolean darkmode;
};
extern int debug;