Paint terminal cursor hollow when focus is lost.
diff --git a/terminal.c b/terminal.c
index 71c8803..2b1d06b 100644
--- a/terminal.c
+++ b/terminal.c
@@ -67,6 +67,7 @@
 	int state;
 	int margin;
 	int fullscreen;
+	int focused;
 };
 
 static char *
@@ -131,6 +132,7 @@
 	cairo_t *cr;
 	cairo_font_extents_t extents;
 	int i, top_margin, side_margin;
+	double d;
 
 	window_get_child_rectangle(terminal->window, &rectangle);
 
@@ -158,13 +160,20 @@
 		cairo_show_text(cr, terminal_get_row(terminal, i));
 	}
 
-	cairo_move_to(cr, side_margin + terminal->column * extents.max_x_advance,
-		      top_margin + terminal->row * extents.height);
-	cairo_rel_line_to(cr, extents.max_x_advance, 0);
-	cairo_rel_line_to(cr, 0, extents.height);
-	cairo_rel_line_to(cr, -extents.max_x_advance, 0);
+	d = terminal->focused ? 0 : 0.5;
+
+	cairo_set_line_width(cr, 1);
+	cairo_move_to(cr, side_margin + terminal->column * extents.max_x_advance + d,
+		      top_margin + terminal->row * extents.height + d);
+	cairo_rel_line_to(cr, extents.max_x_advance - 2 * d, 0);
+	cairo_rel_line_to(cr, 0, extents.height - 2 * d);
+	cairo_rel_line_to(cr, -extents.max_x_advance + 2 * d, 0);
 	cairo_close_path(cr);
-	cairo_fill(cr);
+
+	if (terminal->focused)
+		cairo_fill(cr);
+	else
+		cairo_stroke(cr);
 
 	cairo_destroy(cr);
 
@@ -449,6 +458,16 @@
 	}
 }
 
+static void
+keyboard_focus_handler(struct window *window,
+		       struct wl_input_device *device, void *data)
+{
+	struct terminal *terminal = data;
+
+	terminal->focused = (device != NULL);
+	terminal_schedule_redraw(terminal);
+}
+
 static struct terminal *
 terminal_create(struct display *display, int fullscreen)
 {
@@ -474,6 +493,8 @@
 				   &compositor_listener, terminal);
 
 	window_set_key_handler(terminal->window, key_handler, terminal);
+	window_set_keyboard_focus_handler(terminal->window,
+					  keyboard_focus_handler, terminal);
 
 	terminal_draw(terminal);