Передается указатель на структуру MWMHints, а размер передается от структуры XWMHints.
Следствие ошибки выше -- переменная wmhints заполняется, но не используется. Согласно https://tronche.com/gui/x/icccm/sec-4.html#WM_HINTS, атрибуты заполнены таким образом, что у должен настроится режим No Input - The client never expects keyboard input. An example would be xload or another output-only client. В принципе, логичное пожелание для окна флагов.
Мало того, для задания свойства используется атом _WIN_HINTS, который требует лишь одно значение uint32_t. А передается ему туда совсем не то, что ожидается. Согласно статье http://www.dailytelefrag.ru/blog/read.php?id=67666, передача туда 0 должно отключить границу окна в GNOME окружении. На самом деле, для этого свойства используется только первое поле структуры MWMHints, а именно flags. Согласно статье по первой ссылке выше, допустимые значения там:
#define WIN_HINTS_SKIP_FOCUS (1<<0) /*"alt-tab" skips this win*/
#define WIN_HINTS_SKIP_WINLIST (1<<1) /*do not show in window list*/
#define WIN_HINTS_SKIP_TASKBAR (1<<2) /*do not show on taskbar*/
#define WIN_HINTS_GROUP_TRANSIENT (1<<3) /*Reserved - definition is unclear*/
#define WIN_HINTS_FOCUS_ON_CLICK (1<<4) /*app only accepts focus if clicked*/
Это значение устанавливается в 1L << 1, т.е. на самом деле окно получает атрибут WIN_HINTS_SKIP_WINLIST и становится неперечисляемым в списке окон. В принципе, это логично для окна флага, но точно ли это ожидалось сделать?
В итоге получается, что допустимы варианты 2 и 3 и какой из них должен быть правильным, непонятно. История Git-репозитория начинается с этой ошибки.
В данном коде сразу 3 ошибки в одной строчке кода, а именно, последней: https://github.com/AndrewCrewKuznetsov/xneur-devel/blob/362019ac27f388b319b654d33ec3b1799339bf72/xneur/lib/main/window.c#L81-L98
MWMHints
, а размер передается от структурыXWMHints
.wmhints
заполняется, но не используется. Согласно https://tronche.com/gui/x/icccm/sec-4.html#WM_HINTS, атрибуты заполнены таким образом, что у должен настроится режим No Input - The client never expects keyboard input. An example would be xload or another output-only client. В принципе, логичное пожелание для окна флагов._WIN_HINTS
, который требует лишь одно значениеuint32_t
. А передается ему туда совсем не то, что ожидается. Согласно статье http://www.dailytelefrag.ru/blog/read.php?id=67666, передача туда 0 должно отключить границу окна в GNOME окружении. На самом деле, для этого свойства используется только первое поле структурыMWMHints
, а именноflags
. Согласно статье по первой ссылке выше, допустимые значения там:Это значение устанавливается в
1L << 1
, т.е. на самом деле окно получает атрибутWIN_HINTS_SKIP_WINLIST
и становится неперечисляемым в списке окон. В принципе, это логично для окна флага, но точно ли это ожидалось сделать?В итоге получается, что допустимы варианты 2 и 3 и какой из них должен быть правильным, непонятно. История Git-репозитория начинается с этой ошибки.