Use proper WM_Sx registration for i3 (#4843)

i3's WM ownership is registered with the X Atom WM_S_S0 (for screen0),
instead of the correct WM_S0.  The relevant xcb-util API didn't
change, this is simply a bug in i3 that has always been there:
https://gitlab.freedesktop.org/xorg/lib/libxcb-util/-/blob/0.4.0/src/atoms.c#L65
This commit is contained in:
Gergely Risko 2022-02-07 17:43:55 +01:00 committed by GitHub
parent 70288d7b68
commit bd5cbbb010
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 2 deletions

View File

@ -0,0 +1 @@
changed WM registration selection from WM_S_S<screen> to WM_S<screen>

View File

@ -696,11 +696,11 @@ int main(int argc, char *argv[]) {
/* Acquire the WM_Sn selection. */
{
/* Get the WM_Sn atom */
char *atom_name = xcb_atom_name_by_screen("WM_S", conn_screen);
char *atom_name = xcb_atom_name_by_screen("WM", conn_screen);
wm_sn_selection_owner = xcb_generate_id(conn);
if (atom_name == NULL) {
ELOG("xcb_atom_name_by_screen(\"WM_S\", %d) failed, exiting\n", conn_screen);
ELOG("xcb_atom_name_by_screen(\"WM\", %d) failed, exiting\n", conn_screen);
return 1;
}

View File

@ -0,0 +1,11 @@
#!perl
# vim:ts=4:sw=4:expandtab
#
# Tests whether our WM registration is done with the correct WM_S0 selection.
use i3test;
my $x = X11::XCB::Connection->new;
my $reply = $x->get_selection_owner($x->atom(name => 'WM_S0')->id);
ok($reply, "registration successful");
done_testing;