From bb0834637c7620870d784180436c90492c89db9b Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Tue, 30 Jul 2019 00:18:05 +0200 Subject: X11: Support UTF8 in window titles It's possible that this does bad things if a UTF8 string is used on a system that does not support it (because XStoreName is still called), but I have no idea how likely this scenario is. Leaving it this way because it means the ASCII case will still work everywhere, and it's easy enough to avoid if this is a problem. --- pugl/detail/x11.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'pugl/detail/x11.c') diff --git a/pugl/detail/x11.c b/pugl/detail/x11.c index a076d6f..32f1393 100644 --- a/pugl/detail/x11.c +++ b/pugl/detail/x11.c @@ -75,8 +75,10 @@ puglCreateWindow(PuglView* view, const char* title) impl->screen = DefaultScreen(display); // Intern the various atoms we will need + impl->atoms.UTF8_STRING = XInternAtom(display, "UTF8_STRING", 0); impl->atoms.WM_PROTOCOLS = XInternAtom(display, "WM_PROTOCOLS", 0); impl->atoms.WM_DELETE_WINDOW = XInternAtom(display, "WM_DELETE_WINDOW", 0); + impl->atoms.NET_WM_NAME = XInternAtom(display, "_NET_WM_NAME", 0); impl->atoms.NET_WM_STATE = XInternAtom(display, "_NET_WM_STATE", 0); impl->atoms.NET_WM_STATE_DEMANDS_ATTENTION = XInternAtom(display, "_NET_WM_STATE_DEMANDS_ATTENTION", 0); @@ -132,6 +134,9 @@ puglCreateWindow(PuglView* view, const char* title) if (title) { XStoreName(display, win, title); + XChangeProperty(display, win, + impl->atoms.NET_WM_NAME, impl->atoms.UTF8_STRING, 8, + PropModeReplace, (const uint8_t*)title, strlen(title)); } if (!view->parent) { -- cgit v1.2.1