Index: uspace/lib/ui/src/wdecor.c
===================================================================
--- uspace/lib/ui/src/wdecor.c	(revision b769ca098d928f48269bb338ea242585b13783e8)
+++ uspace/lib/ui/src/wdecor.c	(revision 08fcaf2e9fc8c8f800c122f335594e981d2a53bd)
@@ -45,20 +45,25 @@
 #include <ui/paint.h>
 #include <ui/pbutton.h>
+#include <ui/resource.h>
 #include <ui/ui.h>
 #include <ui/wdecor.h>
+#include "../private/pbutton.h"
 #include "../private/resource.h"
 #include "../private/wdecor.h"
 
 static void ui_wdecor_btn_min_clicked(ui_pbutton_t *, void *);
-static errno_t ui_wdecor_btn_min_paint(ui_pbutton_t *, void *,
+static errno_t ui_wdecor_btn_min_decor_paint(ui_pbutton_t *, void *,
     gfx_coord2_t *);
+static errno_t ui_wdecor_btn_min_paint_text(ui_pbutton_t *, void *);
 
 static void ui_wdecor_btn_max_clicked(ui_pbutton_t *, void *);
-static errno_t ui_wdecor_btn_max_paint(ui_pbutton_t *, void *,
+static errno_t ui_wdecor_btn_max_decor_paint(ui_pbutton_t *, void *,
     gfx_coord2_t *);
+static errno_t ui_wdecor_btn_max_paint_text(ui_pbutton_t *, void *);
 
 static void ui_wdecor_btn_close_clicked(ui_pbutton_t *, void *);
-static errno_t ui_wdecor_btn_close_paint(ui_pbutton_t *, void *,
+static errno_t ui_wdecor_btn_close_decor_paint(ui_pbutton_t *, void *,
     gfx_coord2_t *);
+static errno_t ui_wdecor_btn_close_paint_text(ui_pbutton_t *, void *);
 
 static ui_pbutton_cb_t ui_wdecor_btn_min_cb = {
@@ -67,5 +72,9 @@
 
 static ui_pbutton_ops_t ui_wdecor_btn_min_ops = {
-	.decor_paint = ui_wdecor_btn_min_paint
+	.decor_paint = ui_wdecor_btn_min_decor_paint
+};
+
+static ui_pbutton_ops_t ui_wdecor_btn_min_ops_text = {
+	.paint = ui_wdecor_btn_min_paint_text
 };
 
@@ -75,5 +84,9 @@
 
 static ui_pbutton_ops_t ui_wdecor_btn_max_ops = {
-	.decor_paint = ui_wdecor_btn_max_paint
+	.decor_paint = ui_wdecor_btn_max_decor_paint
+};
+
+static ui_pbutton_ops_t ui_wdecor_btn_max_ops_text = {
+	.paint = ui_wdecor_btn_max_paint_text
 };
 
@@ -83,5 +96,9 @@
 
 static ui_pbutton_ops_t ui_wdecor_btn_close_ops = {
-	.decor_paint = ui_wdecor_btn_close_paint
+	.decor_paint = ui_wdecor_btn_close_decor_paint
+};
+
+static ui_pbutton_ops_t ui_wdecor_btn_close_ops_text = {
+	.paint = ui_wdecor_btn_close_paint_text
 };
 
@@ -153,5 +170,8 @@
 {
 	ui_wdecor_t *wdecor;
+	bool textmode;
 	errno_t rc;
+
+	textmode = ui_resource_is_textmode(resource);
 
 	wdecor = calloc(1, sizeof(ui_wdecor_t));
@@ -175,6 +195,7 @@
 		    (void *)wdecor);
 
-		ui_pbutton_set_ops(wdecor->btn_min, &ui_wdecor_btn_min_ops,
-		    (void *)wdecor);
+		ui_pbutton_set_ops(wdecor->btn_min, textmode ?
+		    &ui_wdecor_btn_min_ops_text :
+		    &ui_wdecor_btn_min_ops, (void *)wdecor);
 	}
 
@@ -189,6 +210,7 @@
 		    (void *)wdecor);
 
-		ui_pbutton_set_ops(wdecor->btn_max, &ui_wdecor_btn_max_ops,
-		    (void *)wdecor);
+		ui_pbutton_set_ops(wdecor->btn_max, textmode ?
+		    &ui_wdecor_btn_max_ops_text :
+		    &ui_wdecor_btn_max_ops, (void *)wdecor);
 	}
 
@@ -203,6 +225,7 @@
 		    (void *)wdecor);
 
-		ui_pbutton_set_ops(wdecor->btn_close, &ui_wdecor_btn_close_ops,
-		    (void *)wdecor);
+		ui_pbutton_set_ops(wdecor->btn_close, textmode ?
+		    &ui_wdecor_btn_close_ops_text :
+		    &ui_wdecor_btn_close_ops, (void *)wdecor);
 	}
 
@@ -369,4 +392,6 @@
 	rc = gfx_set_color(wdecor->res->gc, wdecor->sysmenu_hdl_active ?
 	    wdecor->res->btn_shadow_color : wdecor->res->btn_face_color);
+	if (rc != EOK)
+		return rc;
 
 	gfx_text_fmt_init(&fmt);
@@ -1207,5 +1232,5 @@
  * @param pos Center position
  */
-static errno_t ui_wdecor_btn_min_paint(ui_pbutton_t *pbutton,
+static errno_t ui_wdecor_btn_min_decor_paint(ui_pbutton_t *pbutton,
     void *arg, gfx_coord2_t *pos)
 {
@@ -1217,4 +1242,30 @@
 
 	return rc;
+}
+
+/** Paint minimize button in text mode.
+ *
+ * @param pbutton Push button
+ * @param arg Argument (ui_wdecor_t *)
+ */
+static errno_t ui_wdecor_btn_min_paint_text(ui_pbutton_t *pbutton, void *arg)
+{
+	ui_wdecor_t *wdecor = (ui_wdecor_t *)arg;
+	errno_t rc;
+	gfx_text_fmt_t fmt;
+
+	gfx_text_fmt_init(&fmt);
+	fmt.font = wdecor->res->font;
+	fmt.color = (pbutton->held && pbutton->inside) ?
+	    wdecor->res->wnd_sel_text_color :
+	    wdecor->res->tbar_act_text_color;
+	fmt.halign = gfx_halign_left;
+	fmt.valign = gfx_valign_top;
+
+	rc = gfx_puttext(&pbutton->rect.p0, &fmt, "[\u2193]");
+	if (rc != EOK)
+		return rc;
+
+	return gfx_update(wdecor->res->gc);
 }
 
@@ -1225,5 +1276,5 @@
  * @param pos Center position
  */
-static errno_t ui_wdecor_btn_max_paint(ui_pbutton_t *pbutton,
+static errno_t ui_wdecor_btn_max_decor_paint(ui_pbutton_t *pbutton,
     void *arg, gfx_coord2_t *pos)
 {
@@ -1231,13 +1282,34 @@
 	errno_t rc;
 
-	if (wdecor->maximized) {
-		rc = ui_paint_unmaxicon(wdecor->res, pos, wdecor_unmax_w,
-		    wdecor_unmax_h, wdecor_unmax_dw, wdecor_unmax_dh);
-	} else {
-		rc = ui_paint_maxicon(wdecor->res, pos, wdecor_max_w,
-		    wdecor_max_h);
-	}
+	rc = ui_paint_maxicon(wdecor->res, pos, wdecor_min_w,
+	    wdecor_min_h);
 
 	return rc;
+}
+
+/** Paint maximize button in text mode.
+ *
+ * @param pbutton Push button
+ * @param arg Argument (ui_wdecor_t *)
+ */
+static errno_t ui_wdecor_btn_max_paint_text(ui_pbutton_t *pbutton, void *arg)
+{
+	ui_wdecor_t *wdecor = (ui_wdecor_t *)arg;
+	errno_t rc;
+	gfx_text_fmt_t fmt;
+
+	gfx_text_fmt_init(&fmt);
+	fmt.font = wdecor->res->font;
+	fmt.color = (pbutton->held && pbutton->inside) ?
+	    wdecor->res->wnd_sel_text_color :
+	    wdecor->res->tbar_act_text_color;
+	fmt.halign = gfx_halign_left;
+	fmt.valign = gfx_valign_top;
+
+	rc = gfx_puttext(&pbutton->rect.p0, &fmt, "[\u2191]");
+	if (rc != EOK)
+		return rc;
+
+	return gfx_update(wdecor->res->gc);
 }
 
@@ -1261,5 +1333,5 @@
  * @param pos Center position
  */
-static errno_t ui_wdecor_btn_close_paint(ui_pbutton_t *pbutton,
+static errno_t ui_wdecor_btn_close_decor_paint(ui_pbutton_t *pbutton,
     void *arg, gfx_coord2_t *pos)
 {
@@ -1278,4 +1350,30 @@
 }
 
+/** Paint close button in text mode.
+ *
+ * @param pbutton Push button
+ * @param arg Argument (ui_wdecor_t *)
+ */
+static errno_t ui_wdecor_btn_close_paint_text(ui_pbutton_t *pbutton, void *arg)
+{
+	ui_wdecor_t *wdecor = (ui_wdecor_t *)arg;
+	errno_t rc;
+	gfx_text_fmt_t fmt;
+
+	gfx_text_fmt_init(&fmt);
+	fmt.font = wdecor->res->font;
+	fmt.color = (pbutton->held && pbutton->inside) ?
+	    wdecor->res->wnd_sel_text_color :
+	    wdecor->res->tbar_act_text_color;
+	fmt.halign = gfx_halign_left;
+	fmt.valign = gfx_valign_top;
+
+	rc = gfx_puttext(&pbutton->rect.p0, &fmt, "[\u25a0]");
+	if (rc != EOK)
+		return rc;
+
+	return gfx_update(wdecor->res->gc);
+}
+
 /** @}
  */
