diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-11 18:01:48 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-11 18:01:48 -0400 |
commit | 209199a13926362899b6b6c6c490e7a2ae148d30 (patch) | |
tree | ef7de8f74974ced979e3d5732b9c850d42529c3d /window-xlib.c | |
parent | 9e611718e883b3d3fa273fa437fa0d3b9a65b30f (diff) | |
download | runes-209199a13926362899b6b6c6c490e7a2ae148d30.tar.gz runes-209199a13926362899b6b6c6c490e7a2ae148d30.zip |
support changing the window title
Diffstat (limited to 'window-xlib.c')
-rw-r--r-- | window-xlib.c | 52 |
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) |