aboutsummaryrefslogtreecommitdiffstats
path: root/window-xlib.c
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-11 18:01:48 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-11 18:01:48 -0400
commit209199a13926362899b6b6c6c490e7a2ae148d30 (patch)
treeef7de8f74974ced979e3d5732b9c850d42529c3d /window-xlib.c
parent9e611718e883b3d3fa273fa437fa0d3b9a65b30f (diff)
downloadrunes-209199a13926362899b6b6c6c490e7a2ae148d30.tar.gz
runes-209199a13926362899b6b6c6c490e7a2ae148d30.zip
support changing the window title
Diffstat (limited to 'window-xlib.c')
-rw-r--r--window-xlib.c52
1 files changed, 41 insertions, 11 deletions
diff --git a/window-xlib.c b/window-xlib.c
index 2f777a2..4593e44 100644
--- a/window-xlib.c
+++ b/window-xlib.c
@@ -21,7 +21,7 @@ static char *atom_names[RUNES_NUM_ATOMS] = {
static void runes_window_backend_get_next_event(uv_work_t *req);
static void runes_window_backend_process_event(uv_work_t *req, int status);
static void runes_window_backend_init_wm_properties(
- RunesWindowBackend *w, int argc, char *argv[]);
+ RunesTerm *t, int argc, char *argv[]);
static void runes_window_backend_init_loop(RunesTerm *t);
void runes_window_backend_init(RunesTerm *t, int argc, char *argv[])
@@ -67,7 +67,7 @@ void runes_window_backend_init(RunesTerm *t, int argc, char *argv[])
exit(1);
}
- runes_window_backend_init_wm_properties(w, argc, argv);
+ runes_window_backend_init_wm_properties(t, argc, argv);
runes_window_backend_init_loop(t);
}
@@ -101,6 +101,39 @@ void runes_window_backend_get_size(RunesTerm *t, int *xpixel, int *ypixel)
*ypixel = cairo_xlib_surface_get_height(surface);
}
+void runes_window_backend_set_icon_name(RunesTerm *t, char *name, size_t len)
+{
+ RunesWindowBackend *w;
+
+ w = &t->w;
+
+ XChangeProperty(
+ w->dpy, w->w, XA_WM_ICON_NAME,
+ w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
+ (unsigned char *)name, len);
+ XChangeProperty(
+ w->dpy, w->w, w->atoms[RUNES_ATOM_NET_WM_ICON_NAME],
+ w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
+ (unsigned char *)name, len);
+}
+
+void runes_window_backend_set_window_title(
+ RunesTerm *t, char *name, size_t len)
+{
+ RunesWindowBackend *w;
+
+ w = &t->w;
+
+ XChangeProperty(
+ w->dpy, w->w, XA_WM_NAME,
+ w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
+ (unsigned char *)name, len);
+ XChangeProperty(
+ w->dpy, w->w, w->atoms[RUNES_ATOM_NET_WM_NAME],
+ w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
+ (unsigned char *)name, len);
+}
+
void runes_window_backend_request_close(RunesTerm *t)
{
XEvent e;
@@ -213,13 +246,16 @@ static void runes_window_backend_process_event(uv_work_t *req, int status)
}
static void runes_window_backend_init_wm_properties(
- RunesWindowBackend *w, int argc, char *argv[])
+ RunesTerm *t, int argc, char *argv[])
{
+ RunesWindowBackend *w;
pid_t pid;
XClassHint class_hints = { "runes", "runes" };
XWMHints wm_hints;
XSizeHints normal_hints;
+ w = &t->w;
+
wm_hints.flags = InputHint | StateHint;
wm_hints.input = True;
wm_hints.initial_state = NormalState;
@@ -239,14 +275,8 @@ static void runes_window_backend_init_wm_properties(
w->dpy, w->w, w->atoms[RUNES_ATOM_NET_WM_PID],
XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1);
- XChangeProperty(
- w->dpy, w->w, w->atoms[RUNES_ATOM_NET_WM_ICON_NAME],
- w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
- (unsigned char *)"runes", 5);
- XChangeProperty(
- w->dpy, w->w, w->atoms[RUNES_ATOM_NET_WM_NAME],
- w->atoms[RUNES_ATOM_UTF8_STRING], 8, PropModeReplace,
- (unsigned char *)"runes", 5);
+ runes_window_backend_set_icon_name(t, "runes", 5);
+ runes_window_backend_set_window_title(t, "runes", 5);
}
static void runes_window_backend_init_loop(RunesTerm *t)