summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-11-29 13:29:20 -0500
committerJune McEnroe <june@causal.agency>2018-11-29 13:29:20 -0500
commit5881a97c33c2a02b038a504a9027b8843029ac6c (patch)
treea2383c864752672bf04095ba98456caff165716d
parentHandle no such nick error (diff)
downloadcatgirl-5881a97c33c2a02b038a504a9027b8843029ac6c.tar.gz
catgirl-5881a97c33c2a02b038a504a9027b8843029ac6c.zip
Show unread count in term title
Also render status line with just spaces. Looks much cleaner this way.
-rw-r--r--ui.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/ui.c b/ui.c
index 430420e..fecd637 100644
--- a/ui.c
+++ b/ui.c
@@ -221,24 +221,34 @@ static struct {
 	struct View *tags[TagsLen];
 } views;
 
+static void uiTitle(const struct View *view) {
+	int unread;
+	char *str;
+	int len = asprintf(
+		&str, "%s%n (%d)", view->tag.name, &unread, view->unread
+	);
+	if (len < 0) err(EX_OSERR, "asprintf");
+	if (!view->unread) str[unread] = '\0';
+	termTitle(str);
+	free(str);
+}
+
 static void uiStatus(void) {
 	wmove(ui.status, 0, 0);
 	int num = 0;
 	for (const struct View *view = views.head; view; view = view->next, ++num) {
 		if (!view->unread && view != ui.view) continue;
+		if (view == ui.view) uiTitle(view);
 		int unread;
 		wchar_t *str;
 		int len = aswprintf(
-			&str, L"%c %d:%s%n(\3%02d%d\3) ",
+			&str, L"%c %d %s %n(\3%02d%d\3) ",
 			(view == ui.view ? IRCReverse : IRCReset),
 			num, view->tag.name,
 			&unread, (view->hot ? IRCYellow : IRCDefault), view->unread
 		);
 		if (len < 0) err(EX_OSERR, "aswprintf");
-		if (!view->unread) {
-			str[unread + 0] = L' ';
-			str[unread + 1] = L'\0';
-		}
+		if (!view->unread) str[unread] = L'\0';
 		addWrap(ui.status, str);
 		free(str);
 	}
@@ -307,7 +317,6 @@ static void viewUnmark(struct View *view) {
 }
 
 static void uiView(struct View *view) {
-	termTitle(view->tag.name);
 	touchwin(view->log);
 	if (ui.view) ui.view->mark = true;
 	viewUnmark(view);