Open andruska opened 5 months ago
This is asserting that you're actually getting a single reply for a single-value property. It's supposed to error if you receive multiple replies. In this case, the window manager should never return two values.
How did you run into this?
I can always reproduce it when the reply is cached. I mean (slot-value connection 'reply-plist)
gives something other than nil
.
If you try to call it out asynchronously first.
(xcb:+request connection
make-instance 'xcb:ewmh:get-_NET_ACTIVE_WINDOW
:window root)))
(xcb:flush connection)
and then to try unmarshal this reply.
This returns 1 for me:
(slot-value
(car (xcb:+request+reply exwm--connection
(make-instance 'xcb:ewmh:get-_NET_ACTIVE_WINDOW :window exwm--root)))
'value-len)
Again, what window manager?
Most often (eq value-len 2)
and xelb
assert error happens when manually evaluating the code by C-x C-e
or C-j
in the scratch buffer.
While as a standalone code,(eq value-len 1)
mostly works. It feels like the code can't make a final decision.
When I check xprop in terminal, it nevertheless always shows me 2 values:
# xprop -root -notype | grep _NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW: window id # 0x480000b, 0x0
Seems to me that asserting to value-len could be a compatible solution.
Emacs 29.2 xfwm4 4.18.0-2
Hm. XFCE seems to differ from i3 and EXWM. It's recording a timestamp:
Looking at the reference XCB library, XFWM4 looks incorrect:
https://cgit.freedesktop.org/xcb/util-wm/tree/ewmh/ewmh.c.m4
Can you report a bug here and see what they say? This looks like an old bug and I'm guessing that XELB is just a bit pickier than most tools.
Error message:
Debugger entered--Lisp error: (cl-assertion-failed ((= 1 (length value)) nil))
Some debugging: