Как отобразить имя окна XCB в представлении alt-tab в Gnome? - PullRequest
0 голосов
/ 15 января 2020

У меня есть простое окно XCB. Когда я запускаю свое приложение и alt-tab , в списке окон Gnome мое приложение отображается как «неизвестное». Строка заголовка окна показывает правильный заголовок.

Вот как я могу установить его заголовок:

xcb_change_property(WindowGlobal::connection,
                    XCB_PROP_MODE_REPLACE,
                    WindowGlobal::window,
                    XCB_ATOM_WM_NAME,
                    XCB_ATOM_STRING,
                    8,
                    strlen (title),
                    title );

Вот большая часть моего кода создания окна:

int visualID = screen->root_visual;

xcb_colormap_t colormap = xcb_generate_id( connection );
WindowGlobal::window = xcb_generate_id( connection );

WindowGlobal::windowWidth = width == 0 ? screen->width_in_pixels : width;
WindowGlobal::windowHeight = height == 0 ? screen->height_in_pixels : height;

xcb_create_colormap( connection, XCB_COLORMAP_ALLOC_NONE, colormap, screen->root, visualID );

const uint32_t eventmask = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_KEY_RELEASE |
                           XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION;
const uint32_t valuelist[] = { eventmask, colormap, 0 };
const uint32_t valuemask = XCB_CW_EVENT_MASK | XCB_CW_COLORMAP;

xcb_create_window(
                  connection,
                  XCB_COPY_FROM_PARENT,
                  WindowGlobal::window,
                  screen->root,
                  0, 0,
                  WindowGlobal::windowWidth, WindowGlobal::windowHeight,
                  0,
                  XCB_WINDOW_CLASS_INPUT_OUTPUT,
                  visualID,
                  valuemask,
                  valuelist
                  );

xcb_map_window( connection, WindowGlobal::window );

xcb_size_hints_t hints = {};

xcb_icccm_size_hints_set_min_size( &hints, WindowGlobal::windowWidth, WindowGlobal::windowHeight );
xcb_icccm_size_hints_set_max_size( &hints, WindowGlobal::windowWidth, WindowGlobal::windowHeight );

xcb_icccm_set_wm_size_hints( WindowGlobal::connection, WindowGlobal::window, XCB_ATOM_WM_NORMAL_HINTS, &hints );

xcb_atom_t protocols[] =
{
    WindowGlobal::wm_delete_window
};
xcb_icccm_set_wm_protocols( WindowGlobal::connection, WindowGlobal::window,
                            WindowGlobal::wm_protocols, 1, protocols );

Как сделать Я делаю XCB, чтобы установить текст, который отображается в списке окон Gnome?

...