xwayland: set the surface title when running rootful

Set a meaningful title for the xdg_surface, it's nicer when running
rootful.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Olivier Fourdan 2022-04-28 15:51:55 +02:00
parent d0466e842a
commit 7a517f3967
3 changed files with 29 additions and 0 deletions

View File

@ -987,6 +987,7 @@ static void
maybe_toggle_fake_grab(struct xwl_seat *xwl_seat, uint32_t key) maybe_toggle_fake_grab(struct xwl_seat *xwl_seat, uint32_t key)
{ {
struct xwl_screen *xwl_screen = xwl_seat->xwl_screen; struct xwl_screen *xwl_screen = xwl_seat->xwl_screen;
struct xwl_window *xwl_window;
XkbStateRec state_rec; XkbStateRec state_rec;
uint32_t xkb_state; uint32_t xkb_state;
@ -1008,6 +1009,10 @@ maybe_toggle_fake_grab(struct xwl_seat *xwl_seat, uint32_t key)
maybe_fake_grab_devices(xwl_seat); maybe_fake_grab_devices(xwl_seat);
else else
maybe_fake_ungrab_devices(xwl_seat); maybe_fake_ungrab_devices(xwl_seat);
xwl_window = xwl_window_get(xwl_screen->screen->root);
if (xwl_window)
xwl_window_rootful_update_title(xwl_window);
} }
} }

View File

@ -469,6 +469,26 @@ xwl_window_set_fullscreen(struct xwl_window *xwl_window)
return TRUE; return TRUE;
} }
void
xwl_window_rootful_update_title(struct xwl_window *xwl_window)
{
struct xwl_screen *xwl_screen = xwl_window->xwl_screen;
char title[128];
const char *grab_message = "";
if (xwl_screen->host_grab) {
if (xwl_screen->has_grab)
grab_message = " - ([ctrl]+[shift] releases mouse and keyboard)";
else
grab_message = " - ([ctrl]+[shift] grabs mouse and keyboard)";
}
snprintf(title, sizeof(title), "Xwayland on :%s%s", display, grab_message);
if (xwl_window->xdg_toplevel)
xdg_toplevel_set_title(xwl_window->xdg_toplevel, title);
}
static void static void
xdg_surface_handle_configure(void *data, xdg_surface_handle_configure(void *data,
struct xdg_surface *xdg_surface, struct xdg_surface *xdg_surface,
@ -547,6 +567,8 @@ xwl_create_root_surface(struct xwl_window *xwl_window)
xdg_surface_add_listener(xwl_window->xdg_surface, xdg_surface_add_listener(xwl_window->xdg_surface,
&xdg_surface_listener, xwl_window); &xdg_surface_listener, xwl_window);
xwl_window_rootful_update_title(xwl_window);
wl_surface_commit(xwl_window->surface); wl_surface_commit(xwl_window->surface);
region = wl_compositor_create_region(xwl_screen->compositor); region = wl_compositor_create_region(xwl_screen->compositor);

View File

@ -68,8 +68,10 @@ void xwl_window_update_property(struct xwl_window *xwl_window,
Bool xwl_window_has_viewport_enabled(struct xwl_window *xwl_window); Bool xwl_window_has_viewport_enabled(struct xwl_window *xwl_window);
Bool xwl_window_is_toplevel(WindowPtr window); Bool xwl_window_is_toplevel(WindowPtr window);
void xwl_window_check_resolution_change_emulation(struct xwl_window *xwl_window); void xwl_window_check_resolution_change_emulation(struct xwl_window *xwl_window);
void xwl_window_rootful_update_title(struct xwl_window *xwl_window);
void xwl_window_set_window_pixmap(WindowPtr window, PixmapPtr pixmap); void xwl_window_set_window_pixmap(WindowPtr window, PixmapPtr pixmap);
Bool xwl_realize_window(WindowPtr window); Bool xwl_realize_window(WindowPtr window);
Bool xwl_unrealize_window(WindowPtr window); Bool xwl_unrealize_window(WindowPtr window);
Bool xwl_change_window_attributes(WindowPtr window, unsigned long mask); Bool xwl_change_window_attributes(WindowPtr window, unsigned long mask);