diff --git a/src/Compositor.hpp b/src/Compositor.hpp index 5d75b199..8042aaaa 100644 --- a/src/Compositor.hpp +++ b/src/Compositor.hpp @@ -233,4 +233,7 @@ inline std::map HYPRATOMS = {HYPRATOM("_NET_WM_WINDOW_T HYPRATOM("_NET_WM_WINDOW_TYPE_POPUP_MENU"), HYPRATOM("_NET_WM_WINDOW_TYPE_TOOLTIP"), HYPRATOM("_NET_WM_WINDOW_TYPE_NOTIFICATION"), - HYPRATOM("_KDE_NET_WM_WINDOW_TYPE_OVERRIDE")}; + HYPRATOM("_KDE_NET_WM_WINDOW_TYPE_OVERRIDE"), + HYPRATOM("_NET_SUPPORTING_WM_CHECK"), + HYPRATOM("_NET_WM_NAME"), + HYPRATOM("UTF8_STRING")}; diff --git a/src/events/Misc.cpp b/src/events/Misc.cpp index 0ee95ac3..64f2f29d 100644 --- a/src/events/Misc.cpp +++ b/src/events/Misc.cpp @@ -63,6 +63,8 @@ void Events::listener_readyXWayland(wl_listener* listener, void* data) { } ATOM.second = reply->atom; + + free(reply); } wlr_xwayland_set_seat(g_pXWaylandManager->m_sWLRXWayland, g_pCompositor->m_sSeat.seat); @@ -73,6 +75,19 @@ void Events::listener_readyXWayland(wl_listener* listener, void* data) { XCURSOR->images[0]->height, XCURSOR->images[0]->hotspot_x, XCURSOR->images[0]->hotspot_y); } + const auto ROOT = xcb_setup_roots_iterator(xcb_get_setup(XCBCONNECTION)).data->root; + auto cookie = xcb_get_property(XCBCONNECTION, 0, ROOT, HYPRATOMS["_NET_SUPPORTING_WM_CHECK"], XCB_ATOM_ANY, 0, 2048); + auto reply = xcb_get_property_reply(XCBCONNECTION, cookie, nullptr); + + const auto XWMWINDOW = *(xcb_window_t*)xcb_get_property_value(reply); + const char* name = "Hyprland"; + + xcb_change_property(wlr_xwayland_get_xwm_connection(g_pXWaylandManager->m_sWLRXWayland), XCB_PROP_MODE_REPLACE, XWMWINDOW, HYPRATOMS["_NET_WM_NAME"], HYPRATOMS["UTF8_STRING"], + 8, // format + strlen(name), name); + + free(reply); + xcb_disconnect(XCBCONNECTION); #endif }