Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision c063d96e697d575d95acdcf12a82fa94719306b0)
+++ uspace/srv/console/console.c	(revision ba6232bd2f369399badb59f84271dac603f8e975)
@@ -70,4 +70,5 @@
 	ipcarg_t cols;  /**< Framebuffer columns */
 	ipcarg_t rows;  /**< Framebuffer rows */
+	int color_cap;	/**< Color capabilities (FB_CCAP_xxx) */
 } fb_info;
 
@@ -171,4 +172,17 @@
 		break;
 	}
+}
+
+int ccap_fb_to_con(int ccap_fb, int *ccap_con)
+{
+	switch (ccap_fb) {
+	case FB_CCAP_NONE: *ccap_con = CONSOLE_CCAP_NONE; break;
+	case FB_CCAP_STYLE: *ccap_con = CONSOLE_CCAP_STYLE; break;
+	case FB_CCAP_INDEXED: *ccap_con = CONSOLE_CCAP_INDEXED; break;
+	case FB_CCAP_RGB: *ccap_con = CONSOLE_CCAP_RGB; break;
+	default: return EINVAL;
+	}
+
+	return EOK;
 }
 
@@ -527,4 +541,7 @@
 	ipcarg_t arg2;
 	ipcarg_t arg3;
+
+	int cons_ccap;
+	int rc;
 	
 	async_serialize_start();
@@ -589,4 +606,12 @@
 			arg2 = fb_info.rows;
 			break;
+		case CONSOLE_GET_COLOR_CAP:
+			rc = ccap_fb_to_con(fb_info.color_cap, &cons_ccap);
+			if (rc != EOK) {
+				ipc_answer_0(callid, rc);
+				continue;
+			}
+			arg1 = cons_ccap;
+			break;
 		case CONSOLE_SET_STYLE:
 			fb_pending_flush();
@@ -640,4 +665,6 @@
 static bool console_init(void)
 {
+	ipcarg_t color_cap;
+
 	/* Connect to keyboard driver */
 	kbd_phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_KEYBOARD, 0, 0);
@@ -675,4 +702,6 @@
 	async_req_0_0(fb_info.phone, FB_FLUSH);
 	async_req_0_2(fb_info.phone, FB_GET_CSIZE, &fb_info.cols, &fb_info.rows);
+	async_req_0_1(fb_info.phone, FB_GET_COLOR_CAP, &color_cap);
+	fb_info.color_cap = color_cap;
 	
 	/* Set up shared memory buffer. */
