about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/preferences.c182
-rw-r--r--src/preferences.h23
-rw-r--r--src/status_bar.c40
-rw-r--r--src/title_bar.c12
-rw-r--r--src/ui.h33
-rw-r--r--src/windows.c162
6 files changed, 298 insertions, 154 deletions
diff --git a/src/preferences.c b/src/preferences.c
index e5e9653e..9bfacd88 100644
--- a/src/preferences.c
+++ b/src/preferences.c
@@ -65,18 +65,29 @@ static struct colour_string_t colours[] = {
 // colour preferences
 static struct colours_t {
         NCURSES_COLOR_T bkgnd;
-        NCURSES_COLOR_T text;
+        NCURSES_COLOR_T titlebar;
+        NCURSES_COLOR_T statusbar;
+        NCURSES_COLOR_T titlebartext;
+        NCURSES_COLOR_T titlebarbrackets;
+        NCURSES_COLOR_T statusbartext;
+        NCURSES_COLOR_T statusbarbrackets;
+        NCURSES_COLOR_T statusbaractive;
+        NCURSES_COLOR_T statusbarnew;
+        NCURSES_COLOR_T maintext;
+        NCURSES_COLOR_T splashtext;
         NCURSES_COLOR_T online;
         NCURSES_COLOR_T away;
-        NCURSES_COLOR_T chat;
-        NCURSES_COLOR_T dnd;
         NCURSES_COLOR_T xa;
+        NCURSES_COLOR_T dnd;
+        NCURSES_COLOR_T chat;
         NCURSES_COLOR_T offline;
-        NCURSES_COLOR_T err;
-        NCURSES_COLOR_T inc;
-        NCURSES_COLOR_T bar;
-        NCURSES_COLOR_T bar_draw;
-        NCURSES_COLOR_T bar_text;
+        NCURSES_COLOR_T typing;
+        NCURSES_COLOR_T gone;
+        NCURSES_COLOR_T error;
+        NCURSES_COLOR_T incoming;
+        NCURSES_COLOR_T roominfo;
+        NCURSES_COLOR_T me;
+        NCURSES_COLOR_T them;
 } colour_prefs;
 
 static NCURSES_COLOR_T _lookup_colour(const char * const colour);
@@ -171,41 +182,74 @@ _load_colours(void)
     gchar *bkgnd_val = g_key_file_get_string(prefs, "colours", "bkgnd", NULL);
     _set_colour(bkgnd_val, &colour_prefs.bkgnd, -1);
 
-    gchar *text_val = g_key_file_get_string(prefs, "colours", "text", NULL);
-    _set_colour(text_val, &colour_prefs.text, COLOR_WHITE);
+    gchar *titlebar_val = g_key_file_get_string(prefs, "colours", "titlebar", NULL);
+    _set_colour(titlebar_val, &colour_prefs.titlebar, COLOR_BLUE);
+
+    gchar *statusbar_val = g_key_file_get_string(prefs, "colours", "statusbar", NULL);
+    _set_colour(statusbar_val, &colour_prefs.statusbar, COLOR_BLUE);
+
+    gchar *titlebartext_val = g_key_file_get_string(prefs, "colours", "titlebartext", NULL);
+    _set_colour(titlebartext_val, &colour_prefs.titlebartext, COLOR_WHITE);
+
+    gchar *titlebarbrackets_val = g_key_file_get_string(prefs, "colours", "titlebarbrackets", NULL);
+    _set_colour(titlebarbrackets_val, &colour_prefs.titlebarbrackets, COLOR_CYAN);
+
+    gchar *statusbartext_val = g_key_file_get_string(prefs, "colours", "statusbartext", NULL);
+    _set_colour(statusbartext_val, &colour_prefs.statusbartext, COLOR_WHITE);
+
+    gchar *statusbarbrackets_val = g_key_file_get_string(prefs, "colours", "statusbarbrackets", NULL);
+    _set_colour(statusbarbrackets_val, &colour_prefs.statusbarbrackets, COLOR_CYAN);
+
+    gchar *statusbaractive_val = g_key_file_get_string(prefs, "colours", "statusbaractive", NULL);
+    _set_colour(statusbaractive_val, &colour_prefs.statusbaractive, COLOR_CYAN);
+
+    gchar *statusbarnew_val = g_key_file_get_string(prefs, "colours", "statusbarnew", NULL);
+    _set_colour(statusbarnew_val, &colour_prefs.statusbarnew, COLOR_WHITE);
+
+    gchar *maintext_val = g_key_file_get_string(prefs, "colours", "maintext", NULL);
+    _set_colour(maintext_val, &colour_prefs.maintext, COLOR_WHITE);
+
+    gchar *splashtext_val = g_key_file_get_string(prefs, "colours", "splashtext", NULL);
+    _set_colour(splashtext_val, &colour_prefs.splashtext, COLOR_CYAN);
 
     gchar *online_val = g_key_file_get_string(prefs, "colours", "online", NULL);
     _set_colour(online_val, &colour_prefs.online, COLOR_GREEN);
 
     gchar *away_val = g_key_file_get_string(prefs, "colours", "away", NULL);
-    _set_colour(away_val, &colour_prefs.away, COLOR_GREEN);
+    _set_colour(away_val, &colour_prefs.away, COLOR_CYAN);
 
     gchar *chat_val = g_key_file_get_string(prefs, "colours", "chat", NULL);
     _set_colour(chat_val, &colour_prefs.chat, COLOR_GREEN);
 
     gchar *dnd_val = g_key_file_get_string(prefs, "colours", "dnd", NULL);
-    _set_colour(dnd_val, &colour_prefs.dnd, COLOR_GREEN);
+    _set_colour(dnd_val, &colour_prefs.dnd, COLOR_RED);
 
     gchar *xa_val = g_key_file_get_string(prefs, "colours", "xa", NULL);
-    _set_colour(xa_val, &colour_prefs.xa, COLOR_GREEN);
+    _set_colour(xa_val, &colour_prefs.xa, COLOR_CYAN);
 
     gchar *offline_val = g_key_file_get_string(prefs, "colours", "offline", NULL);
-    _set_colour(offline_val, &colour_prefs.offline, COLOR_CYAN);
+    _set_colour(offline_val, &colour_prefs.offline, COLOR_RED);
+
+    gchar *typing_val = g_key_file_get_string(prefs, "colours", "typing", NULL);
+    _set_colour(typing_val, &colour_prefs.typing, COLOR_YELLOW);
+
+    gchar *gone_val = g_key_file_get_string(prefs, "colours", "gone", NULL);
+    _set_colour(gone_val, &colour_prefs.gone, COLOR_RED);
 
-    gchar *err_val = g_key_file_get_string(prefs, "colours", "err", NULL);
-    _set_colour(err_val, &colour_prefs.err, COLOR_RED);
+    gchar *error_val = g_key_file_get_string(prefs, "colours", "error", NULL);
+    _set_colour(error_val, &colour_prefs.error, COLOR_RED);
 
-    gchar *inc_val = g_key_file_get_string(prefs, "colours", "inc", NULL);
-    _set_colour(inc_val, &colour_prefs.inc, COLOR_YELLOW);
+    gchar *incoming_val = g_key_file_get_string(prefs, "colours", "incoming", NULL);
+    _set_colour(incoming_val, &colour_prefs.incoming, COLOR_YELLOW);
 
-    gchar *bar_val = g_key_file_get_string(prefs, "colours", "bar", NULL);
-    _set_colour(bar_val, &colour_prefs.bar, COLOR_BLUE);
+    gchar *roominfo_val = g_key_file_get_string(prefs, "colours", "roominfo", NULL);
+    _set_colour(roominfo_val, &colour_prefs.roominfo, COLOR_YELLOW);
 
-    gchar *bar_draw_val = g_key_file_get_string(prefs, "colours", "bar_draw", NULL);
-    _set_colour(bar_draw_val, &colour_prefs.bar_draw, COLOR_CYAN);
+    gchar *me_val = g_key_file_get_string(prefs, "colours", "me", NULL);
+    _set_colour(me_val, &colour_prefs.me, COLOR_YELLOW);
 
-    gchar *bar_text_val = g_key_file_get_string(prefs, "colours", "bar_text", NULL);
-    _set_colour(bar_text_val, &colour_prefs.bar_text, COLOR_WHITE);
+    gchar *them_val = g_key_file_get_string(prefs, "colours", "them", NULL);
+    _set_colour(them_val, &colour_prefs.them, COLOR_GREEN);
 }
 
 char *
@@ -475,9 +519,63 @@ prefs_get_bkgnd()
 }
 
 NCURSES_COLOR_T
-prefs_get_text()
+prefs_get_titlebar()
 {
-    return colour_prefs.text;
+    return colour_prefs.titlebar;
+}
+
+NCURSES_COLOR_T
+prefs_get_statusbar()
+{
+    return colour_prefs.statusbar;
+}
+
+NCURSES_COLOR_T
+prefs_get_titlebartext()
+{
+    return colour_prefs.titlebartext;
+}
+
+NCURSES_COLOR_T
+prefs_get_titlebarbrackets()
+{
+    return colour_prefs.titlebarbrackets;
+}
+
+NCURSES_COLOR_T
+prefs_get_statusbartext()
+{
+    return colour_prefs.statusbartext;
+}
+
+NCURSES_COLOR_T
+prefs_get_statusbarbrackets()
+{
+    return colour_prefs.statusbarbrackets;
+}
+
+NCURSES_COLOR_T
+prefs_get_statusbaractive()
+{
+    return colour_prefs.statusbaractive;
+}
+
+NCURSES_COLOR_T
+prefs_get_statusbarnew()
+{
+    return colour_prefs.statusbarnew;
+}
+
+NCURSES_COLOR_T
+prefs_get_maintext()
+{
+    return colour_prefs.maintext;
+}
+
+NCURSES_COLOR_T
+prefs_get_splashtext()
+{
+    return colour_prefs.splashtext;
 }
 
 NCURSES_COLOR_T
@@ -517,31 +615,43 @@ prefs_get_offline()
 }
 
 NCURSES_COLOR_T
-prefs_get_err()
+prefs_get_typing()
+{
+    return colour_prefs.typing;
+}
+
+NCURSES_COLOR_T
+prefs_get_gone()
+{
+    return colour_prefs.gone;
+}
+
+NCURSES_COLOR_T
+prefs_get_error()
 {
-    return colour_prefs.err;
+    return colour_prefs.error;
 }
 
 NCURSES_COLOR_T
-prefs_get_inc()
+prefs_get_incoming()
 {
-    return colour_prefs.inc;
+    return colour_prefs.incoming;
 }
 
 NCURSES_COLOR_T
-prefs_get_bar()
+prefs_get_roominfo()
 {
-    return colour_prefs.bar;
+    return colour_prefs.roominfo;
 }
 
 NCURSES_COLOR_T
-prefs_get_bar_draw()
+prefs_get_me()
 {
-    return colour_prefs.bar_draw;
+    return colour_prefs.me;
 }
 
 NCURSES_COLOR_T
-prefs_get_bar_text()
+prefs_get_them()
 {
-    return colour_prefs.bar_text;
+    return colour_prefs.them;
 }
diff --git a/src/preferences.h b/src/preferences.h
index d045f517..bb45ee07 100644
--- a/src/preferences.h
+++ b/src/preferences.h
@@ -78,17 +78,28 @@ gint prefs_get_priority(void);
 void prefs_add_login(const char *jid);
 
 NCURSES_COLOR_T prefs_get_bkgnd();
-NCURSES_COLOR_T prefs_get_text();
+NCURSES_COLOR_T prefs_get_titlebar();
+NCURSES_COLOR_T prefs_get_statusbar();
+NCURSES_COLOR_T prefs_get_titlebartext();
+NCURSES_COLOR_T prefs_get_titlebarbrackets();
+NCURSES_COLOR_T prefs_get_statusbartext();
+NCURSES_COLOR_T prefs_get_statusbarbrackets();
+NCURSES_COLOR_T prefs_get_statusbaractive();
+NCURSES_COLOR_T prefs_get_statusbarnew();
+NCURSES_COLOR_T prefs_get_maintext();
+NCURSES_COLOR_T prefs_get_splashtext();
 NCURSES_COLOR_T prefs_get_online();
 NCURSES_COLOR_T prefs_get_away();
 NCURSES_COLOR_T prefs_get_chat();
 NCURSES_COLOR_T prefs_get_dnd();
 NCURSES_COLOR_T prefs_get_xa();
 NCURSES_COLOR_T prefs_get_offline();
-NCURSES_COLOR_T prefs_get_err();
-NCURSES_COLOR_T prefs_get_inc();
-NCURSES_COLOR_T prefs_get_bar();
-NCURSES_COLOR_T prefs_get_bar_draw();
-NCURSES_COLOR_T prefs_get_bar_text();
+NCURSES_COLOR_T prefs_get_typing();
+NCURSES_COLOR_T prefs_get_gone();
+NCURSES_COLOR_T prefs_get_error();
+NCURSES_COLOR_T prefs_get_incoming();
+NCURSES_COLOR_T prefs_get_roominfo();
+NCURSES_COLOR_T prefs_get_me();
+NCURSES_COLOR_T prefs_get_them();
 
 #endif
diff --git a/src/status_bar.c b/src/status_bar.c
index ad042cd1..37a9bce4 100644
--- a/src/status_bar.c
+++ b/src/status_bar.c
@@ -56,10 +56,10 @@ create_status_bar(void)
     }
 
     status_bar = newwin(1, cols, rows-2, 0);
-    wbkgd(status_bar, COLOUR_BAR_DEF);
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wbkgd(status_bar, COLOUR_STATUS_TEXT);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, cols - 29, _active);
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     last_time = g_date_time_new_now_local();
 
@@ -95,11 +95,11 @@ status_bar_resize(void)
 
     mvwin(status_bar, rows-2, 0);
     wresize(status_bar, 1, cols);
-    wbkgd(status_bar, COLOUR_BAR_DEF);
+    wbkgd(status_bar, COLOUR_STATUS_TEXT);
     wclear(status_bar);
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, cols - 29, _active);
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     for(i = 0; i < 9; i++) {
         if (is_new[i])
@@ -142,12 +142,12 @@ status_bar_active(const int win)
 
     int cols = getmaxx(stdscr);
 
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_ACTIVE);
     if (win < 9)
         mvwprintw(status_bar, 0, cols - 29 + active_pos, "%d", win+1);
     else
         mvwprintw(status_bar, 0, cols - 29 + active_pos, "10");
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_ACTIVE);
 
     dirty = TRUE;
 }
@@ -162,13 +162,13 @@ status_bar_new(const int win)
 
     int cols = getmaxx(stdscr);
 
-    wattron(status_bar, COLOUR_BAR_TEXT);
+    wattron(status_bar, COLOUR_STATUS_NEW);
     wattron(status_bar, A_BLINK);
     if (win < 9)
         mvwprintw(status_bar, 0, cols - 29 + active_pos, "%d", win+1);
     else
         mvwprintw(status_bar, 0, cols - 29 + active_pos, "10");
-    wattroff(status_bar, COLOUR_BAR_TEXT);
+    wattroff(status_bar, COLOUR_STATUS_NEW);
     wattroff(status_bar, A_BLINK);
 
     dirty = TRUE;
@@ -197,9 +197,9 @@ status_bar_print_message(const char * const msg)
 
     int cols = getmaxx(stdscr);
 
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, cols - 29, _active);
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     int i;
     for(i = 0; i < 9; i++) {
@@ -230,9 +230,9 @@ status_bar_clear(void)
 
     int cols = getmaxx(stdscr);
 
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, cols - 29, _active);
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     dirty = TRUE;
 }
@@ -249,9 +249,9 @@ status_bar_clear_message(void)
 
     int cols = getmaxx(stdscr);
 
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, cols - 29, _active);
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     int i;
     for(i = 0; i < 9; i++) {
@@ -269,13 +269,13 @@ _status_bar_update_time(void)
 {
     gchar *date_fmt = g_date_time_format(last_time, "%H:%M");
 
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwaddch(status_bar, 0, 1, '[');
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
     mvwprintw(status_bar, 0, 2, date_fmt);
-    wattron(status_bar, COLOUR_BAR_DRAW);
+    wattron(status_bar, COLOUR_STATUS_BRACKET);
     mvwaddch(status_bar, 0, 7, ']');
-    wattroff(status_bar, COLOUR_BAR_DRAW);
+    wattroff(status_bar, COLOUR_STATUS_BRACKET);
 
     free(date_fmt);
 
diff --git a/src/title_bar.c b/src/title_bar.c
index 0bfed5ba..1ebe4f09 100644
--- a/src/title_bar.c
+++ b/src/title_bar.c
@@ -42,7 +42,7 @@ create_title_bar(void)
     int cols = getmaxx(stdscr);
 
     title_bar = newwin(1, cols, 0, 0);
-    wbkgd(title_bar, COLOUR_BAR_DEF);
+    wbkgd(title_bar, COLOUR_TITLE_TEXT);
     title_bar_title();
     title_bar_set_status(PRESENCE_OFFLINE);
     dirty = TRUE;
@@ -63,7 +63,7 @@ title_bar_resize(void)
     int cols = getmaxx(stdscr);
 
     wresize(title_bar, 1, cols);
-    wbkgd(title_bar, COLOUR_BAR_DEF);
+    wbkgd(title_bar, COLOUR_TITLE_TEXT);
     wclear(title_bar);
     _title_bar_draw_title();
     _title_bar_draw_status();
@@ -173,9 +173,9 @@ _title_bar_draw_status(void)
 {
     int cols = getmaxx(stdscr);
 
-    wattron(title_bar, COLOUR_BAR_DRAW);
+    wattron(title_bar, COLOUR_TITLE_BRACKET);
     mvwaddch(title_bar, 0, cols - 14, '[');
-    wattroff(title_bar, COLOUR_BAR_DRAW);
+    wattroff(title_bar, COLOUR_TITLE_BRACKET);
 
     if (current_status == PRESENCE_ONLINE) {
         mvwprintw(title_bar, 0, cols - 13, " ...online ");
@@ -191,9 +191,9 @@ _title_bar_draw_status(void)
         mvwprintw(title_bar, 0, cols - 13, " ..offline ");
     }
 
-    wattron(title_bar, COLOUR_BAR_DRAW);
+    wattron(title_bar, COLOUR_TITLE_BRACKET);
     mvwaddch(title_bar, 0, cols - 2, ']');
-    wattroff(title_bar, COLOUR_BAR_DRAW);
+    wattroff(title_bar, COLOUR_TITLE_BRACKET);
 
     dirty = TRUE;
 }
diff --git a/src/ui.h b/src/ui.h
index 68ee89d2..3e30fd1a 100644
--- a/src/ui.h
+++ b/src/ui.h
@@ -38,18 +38,27 @@
 
 #define INP_WIN_MAX 1000
 
-#define COLOUR_TEXT     COLOR_PAIR(1)
-#define COLOUR_ONLINE   COLOR_PAIR(2)
-#define COLOUR_BAR_TEXT COLOR_PAIR(3)
-#define COLOUR_BAR_DRAW COLOR_PAIR(4)
-#define COLOUR_OFFLINE  COLOR_PAIR(5)
-#define COLOUR_ERR      COLOR_PAIR(6)
-#define COLOUR_INC      COLOR_PAIR(7)
-#define COLOUR_BAR_DEF  COLOR_PAIR(8)
-#define COLOUR_AWAY     COLOR_PAIR(9)
-#define COLOUR_CHAT     COLOR_PAIR(10)
-#define COLOUR_DND      COLOR_PAIR(11)
-#define COLOUR_XA       COLOR_PAIR(12)
+#define COLOUR_TEXT             COLOR_PAIR(1)
+#define COLOUR_SPLASH           COLOR_PAIR(2)
+#define COLOUR_ERROR            COLOR_PAIR(3)
+#define COLOUR_INCOMING         COLOR_PAIR(4)
+#define COLOUR_TITLE_TEXT       COLOR_PAIR(10)
+#define COLOUR_TITLE_BRACKET    COLOR_PAIR(11)
+#define COLOUR_STATUS_TEXT      COLOR_PAIR(20)
+#define COLOUR_STATUS_BRACKET      COLOR_PAIR(21)
+#define COLOUR_STATUS_ACTIVE    COLOR_PAIR(22)
+#define COLOUR_STATUS_NEW       COLOR_PAIR(23)
+#define COLOUR_ME               COLOR_PAIR(30)
+#define COLOUR_THEM             COLOR_PAIR(31)
+#define COLOUR_ROOMINFO         COLOR_PAIR(40)
+#define COLOUR_ONLINE           COLOR_PAIR(50)
+#define COLOUR_OFFLINE          COLOR_PAIR(51)
+#define COLOUR_AWAY             COLOR_PAIR(52)
+#define COLOUR_CHAT             COLOR_PAIR(53)
+#define COLOUR_DND              COLOR_PAIR(54)
+#define COLOUR_XA               COLOR_PAIR(55)
+#define COLOUR_TYPING           COLOR_PAIR(60)
+#define COLOUR_GONE             COLOR_PAIR(61)
 
 typedef enum {
     WIN_UNUSED,
diff --git a/src/windows.c b/src/windows.c
index 1881f23a..80adeed7 100644
--- a/src/windows.c
+++ b/src/windows.c
@@ -112,20 +112,40 @@ gui_init(void)
         use_default_colors();
         start_color();
 
-        init_pair(1, prefs_get_text(), prefs_get_bkgnd());
-        init_pair(2, prefs_get_online(), prefs_get_bkgnd());
-        init_pair(3, prefs_get_text(), prefs_get_bar());
-        init_pair(4, prefs_get_bar_draw(), prefs_get_bar());
-        init_pair(5, prefs_get_offline(), prefs_get_bkgnd());
-        init_pair(6, prefs_get_err(), prefs_get_bkgnd());
-        init_pair(7, prefs_get_inc(), prefs_get_bkgnd());
-        init_pair(8, prefs_get_bar_text(), prefs_get_bar());
-
-        //statuses
-        init_pair(9, prefs_get_away(), prefs_get_bkgnd());
-        init_pair(10, prefs_get_chat(), prefs_get_bkgnd());
-        init_pair(11, prefs_get_dnd(), prefs_get_bkgnd());
-        init_pair(12, prefs_get_xa(), prefs_get_bkgnd());
+        // main text
+        init_pair(1, prefs_get_maintext(), prefs_get_bkgnd());
+        init_pair(2, prefs_get_splashtext(), prefs_get_bkgnd());
+        init_pair(3, prefs_get_error(), prefs_get_bkgnd());
+        init_pair(4, prefs_get_incoming(), prefs_get_bkgnd());
+
+        // title bar
+        init_pair(10, prefs_get_titlebartext(), prefs_get_titlebar());
+        init_pair(11, prefs_get_titlebarbrackets(), prefs_get_titlebar());
+
+        // status bar
+        init_pair(20, prefs_get_statusbartext(), prefs_get_statusbar());
+        init_pair(21, prefs_get_statusbarbrackets(), prefs_get_statusbar());
+        init_pair(22, prefs_get_statusbaractive(), prefs_get_statusbar());
+        init_pair(23, prefs_get_statusbarnew(), prefs_get_statusbar());
+
+        // chat
+        init_pair(30, prefs_get_me(), prefs_get_bkgnd());
+        init_pair(31, prefs_get_them(), prefs_get_bkgnd());
+
+        // room chat
+        init_pair(40, prefs_get_roominfo(), prefs_get_bkgnd());
+
+        // statuses
+        init_pair(50, prefs_get_online(), prefs_get_bkgnd());
+        init_pair(51, prefs_get_offline(), prefs_get_bkgnd());
+        init_pair(52, prefs_get_away(), prefs_get_bkgnd());
+        init_pair(53, prefs_get_chat(), prefs_get_bkgnd());
+        init_pair(54, prefs_get_dnd(), prefs_get_bkgnd());
+        init_pair(55, prefs_get_xa(), prefs_get_bkgnd());
+
+        // states
+        init_pair(60, prefs_get_typing(), prefs_get_bkgnd());
+        init_pair(61, prefs_get_gone(), prefs_get_bkgnd());
     }
 
     refresh();
@@ -406,11 +426,11 @@ win_show_incomming_msg(const char * const from, const char * const message,
         }
 
         if (strncmp(message, "/me ", 4) == 0) {
-            wattron(win, COLOUR_ONLINE);
+            wattron(win, COLOUR_THEM);
             wprintw(win, "*%s ", from);
             wprintw(win, message + 4);
             wprintw(win, "\n");
-            wattroff(win, COLOUR_ONLINE);
+            wattroff(win, COLOUR_THEM);
         } else {
             _win_show_user(win, from, 1);
             _win_show_message(win, message);
@@ -443,11 +463,11 @@ win_show_incomming_msg(const char * const from, const char * const message,
         }
 
         if (strncmp(message, "/me ", 4) == 0) {
-            wattron(win, COLOUR_ONLINE);
+            wattron(win, COLOUR_THEM);
             wprintw(win, "*%s ", from);
             wprintw(win, message + 4);
             wprintw(win, "\n");
-            wattroff(win, COLOUR_ONLINE);
+            wattroff(win, COLOUR_THEM);
         } else {
             _win_show_user(win, from, 1);
             _win_show_message(win, message);
@@ -497,11 +517,11 @@ win_show_gone(const char * const from)
     if (win_index < NUM_WINS) {
         win = _wins[win_index].win;
         _win_show_time(win);
-        wattron(win, COLOUR_AWAY);
+        wattron(win, COLOUR_GONE);
         wprintw(win, "*%s ", from);
         wprintw(win, "has left the conversation.");
         wprintw(win, "\n");
-        wattroff(win, COLOUR_AWAY);
+        wattroff(win, COLOUR_GONE);
         if (win_index == _curr_prof_win) {
             dirty = TRUE;
         }
@@ -531,9 +551,7 @@ win_show_system_msg(const char * const from, const char *message)
     win = _wins[win_index].win;
 
     _win_show_time(win);
-    wattron(win, COLOUR_ONLINE);
     wprintw(win, "*%s %s\n", bare_jid, message);
-    wattroff(win, COLOUR_ONLINE);
 
     // this is the current window
     if (win_index == _curr_prof_win) {
@@ -643,11 +661,11 @@ win_show_outgoing_msg(const char * const from, const char * const to,
 
     _win_show_time(win);
     if (strncmp(message, "/me ", 4) == 0) {
-        wattron(win, COLOUR_INC);
+        wattron(win, COLOUR_ME);
         wprintw(win, "*%s ", from);
         wprintw(win, message + 4);
         wprintw(win, "\n");
-        wattroff(win, COLOUR_INC);
+        wattroff(win, COLOUR_ME);
     } else {
         _win_show_user(win, from, 0);
         _win_show_message(win, message);
@@ -677,13 +695,13 @@ win_show_room_roster(const char * const room)
     GList *roster = room_get_roster(room);
 
     if ((roster == NULL) || (g_list_length(roster) == 0)) {
-        wattron(win, COLOUR_INC);
+        wattron(win, COLOUR_ROOMINFO);
         wprintw(win, "You are alone!\n");
-        wattroff(win, COLOUR_INC);
+        wattroff(win, COLOUR_ROOMINFO);
     } else {
-        wattron(win, COLOUR_INC);
+        wattron(win, COLOUR_ROOMINFO);
         wprintw(win, "Room occupants:\n");
-        wattroff(win, COLOUR_INC);
+        wattroff(win, COLOUR_ROOMINFO);
         wattron(win, COLOUR_ONLINE);
 
         while (roster != NULL) {
@@ -755,9 +773,9 @@ win_show_room_member_nick_change(const char * const room,
     WINDOW *win = _wins[win_index].win;
 
     _win_show_time(win);
-    wattron(win, COLOUR_ONLINE);
+    wattron(win, COLOUR_THEM);
     wprintw(win, "** %s is now known as %s\n", old_nick, nick);
-    wattroff(win, COLOUR_ONLINE);
+    wattroff(win, COLOUR_THEM);
 
     if (win_index == _curr_prof_win)
         dirty = TRUE;
@@ -770,9 +788,9 @@ win_show_room_nick_change(const char * const room, const char * const nick)
     WINDOW *win = _wins[win_index].win;
 
     _win_show_time(win);
-    wattron(win, COLOUR_ONLINE);
+    wattron(win, COLOUR_ME);
     wprintw(win, "** You are now known as %s\n", nick);
-    wattroff(win, COLOUR_ONLINE);
+    wattroff(win, COLOUR_ME);
 
     if (win_index == _curr_prof_win)
         dirty = TRUE;
@@ -814,11 +832,11 @@ win_show_room_message(const char * const room_jid, const char * const nick,
     _win_show_time(win);
     if (strcmp(nick, room_get_nick_for_room(room_jid)) != 0) {
         if (strncmp(message, "/me ", 4) == 0) {
-            wattron(win, COLOUR_ONLINE);
+            wattron(win, COLOUR_THEM);
             wprintw(win, "*%s ", nick);
             wprintw(win, message + 4);
             wprintw(win, "\n");
-            wattroff(win, COLOUR_ONLINE);
+            wattroff(win, COLOUR_THEM);
         } else {
             _win_show_user(win, nick, 1);
             _win_show_message(win, message);
@@ -826,11 +844,11 @@ win_show_room_message(const char * const room_jid, const char * const nick,
 
     } else {
         if (strncmp(message, "/me ", 4) == 0) {
-            wattron(win, COLOUR_INC);
+            wattron(win, COLOUR_ME);
             wprintw(win, "*%s ", nick);
             wprintw(win, message + 4);
             wprintw(win, "\n");
-            wattroff(win, COLOUR_INC);
+            wattroff(win, COLOUR_ME);
         } else {
             _win_show_user(win, nick, 0);
             _win_show_message(win, message);
@@ -877,9 +895,9 @@ win_show_room_subject(const char * const room_jid, const char * const subject)
     int win_index = _find_prof_win_index(room_jid);
     WINDOW *win = _wins[win_index].win;
 
-    wattron(win, COLOUR_INC);
+    wattron(win, COLOUR_ROOMINFO);
     wprintw(win, "Room subject: ");
-    wattroff(win, COLOUR_INC);
+    wattroff(win, COLOUR_ROOMINFO);
     wprintw(win, "%s\n", subject);
 
     // currently in groupchat window
@@ -899,9 +917,9 @@ win_show_room_broadcast(const char * const room_jid, const char * const message)
     int win_index = _find_prof_win_index(room_jid);
     WINDOW *win = _wins[win_index].win;
 
-    wattron(win, COLOUR_INC);
+    wattron(win, COLOUR_ROOMINFO);
     wprintw(win, "Room message: ");
-    wattroff(win, COLOUR_INC);
+    wattroff(win, COLOUR_ROOMINFO);
     wprintw(win, "%s\n", message);
 
     // currently in groupchat window
@@ -930,9 +948,9 @@ win_bad_show(const char * const msg)
 {
     WINDOW *win = _wins[_curr_prof_win].win;
     _win_show_time(win);
-    wattron(win, COLOUR_ERR);
+    wattron(win, COLOUR_ERROR);
     wprintw(win, "%s\n", msg);
-    wattroff(win, COLOUR_ERR);
+    wattroff(win, COLOUR_ERROR);
 
     dirty = TRUE;
 }
@@ -990,9 +1008,9 @@ win_disconnected(void)
         if (strcmp(_wins[i].from, "") != 0) {
             WINDOW *win = _wins[i].win;
             _win_show_time(win);
-            wattron(win, COLOUR_ERR);
+            wattron(win, COLOUR_ERROR);
             wprintw(win, "%s\n", "Lost connection.");
-            wattroff(win, COLOUR_ERR);
+            wattroff(win, COLOUR_ERROR);
 
             // if current win, set dirty
             if (i == _curr_prof_win) {
@@ -1208,9 +1226,9 @@ cons_bad_show(const char * const msg, ...)
     GString *fmt_msg = g_string_new(NULL);
     g_string_vprintf(fmt_msg, msg, arg);
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_ERR);
+    wattron(_cons_win, COLOUR_ERROR);
     wprintw(_cons_win, "%s\n", fmt_msg->str);
-    wattroff(_cons_win, COLOUR_ERR);
+    wattroff(_cons_win, COLOUR_ERROR);
     g_string_free(fmt_msg, TRUE);
     va_end(arg);
 
@@ -1379,13 +1397,9 @@ cons_check_version(gboolean not_available_msg)
         if (relase_valid) {
             if (_new_release(latest_release)) {
                 _win_show_time(_cons_win);
-                wattron(_cons_win, COLOUR_ONLINE);
                 wprintw(_cons_win, "A new version of Profanity is available: %s", latest_release);
-                wattroff(_cons_win, COLOUR_ONLINE);
                 _win_show_time(_cons_win);
-                wattron(_cons_win, COLOUR_ONLINE);
                 wprintw(_cons_win, "Check <http://www.profanity.im> for details.\n");
-                wattroff(_cons_win, COLOUR_ONLINE);
                 free(latest_release);
                 _win_show_time(_cons_win);
                 wprintw(_cons_win, "\n");
@@ -1432,39 +1446,39 @@ _cons_splash_logo(void)
     wprintw(_cons_win, "Welcome to\n");
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "                   ___            _           \n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "                  / __)          (_)_         \n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, " ____   ____ ___ | |__ ____ ____  _| |_ _   _ \n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "|  _ \\ / ___) _ \\|  __) _  |  _ \\| |  _) | | |\n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "| | | | |  | |_| | | ( ( | | | | | | |_| |_| |\n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "| ||_/|_|   \\___/|_|  \\_||_|_| |_|_|\\___)__  |\n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_OFFLINE);
+    wattron(_cons_win, COLOUR_SPLASH);
     wprintw(_cons_win, "|_|                                    (____/ \n");
-    wattroff(_cons_win, COLOUR_OFFLINE);
+    wattroff(_cons_win, COLOUR_SPLASH);
 
     _win_show_time(_cons_win);
     wprintw(_cons_win, "\n");
@@ -1541,14 +1555,14 @@ static void
 _win_show_user(WINDOW *win, const char * const user, const int colour)
 {
     if (colour)
-        wattron(win, COLOUR_ONLINE);
+        wattron(win, COLOUR_THEM);
     else
-        wattron(win, COLOUR_INC);
+        wattron(win, COLOUR_ME);
     wprintw(win, "%s: ", user);
     if (colour)
-        wattroff(win, COLOUR_ONLINE);
+        wattroff(win, COLOUR_THEM);
     else
-        wattroff(win, COLOUR_INC);
+        wattroff(win, COLOUR_ME);
 }
 
 static void
@@ -1560,9 +1574,9 @@ _win_show_message(WINDOW *win, const char * const message)
 static void
 _win_show_error_msg(WINDOW *win, const char * const message)
 {
-    wattron(win, COLOUR_ERR);
+    wattron(win, COLOUR_ERROR);
     wprintw(win, "%s\n", message);
-    wattroff(win, COLOUR_ERR);
+    wattroff(win, COLOUR_ERROR);
 }
 
 static void
@@ -1659,18 +1673,18 @@ static void
 _cons_show_typing(const char * const short_from)
 {
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_INC);
+    wattron(_cons_win, COLOUR_TYPING);
     wprintw(_cons_win, "!! %s is typing a message...\n", short_from);
-    wattroff(_cons_win, COLOUR_INC);
+    wattroff(_cons_win, COLOUR_TYPING);
 }
 
 static void
 _cons_show_incoming_message(const char * const short_from, const int win_index)
 {
     _win_show_time(_cons_win);
-    wattron(_cons_win, COLOUR_INC);
+    wattron(_cons_win, COLOUR_INCOMING);
     wprintw(_cons_win, "<< incoming from %s (%d)\n", short_from, win_index + 1);
-    wattroff(_cons_win, COLOUR_INC);
+    wattroff(_cons_win, COLOUR_INCOMING);
 }
 
 static void