Open emacksnotes opened 5 years ago
Thanks for bringing this up.
I think this feature had not been considered before. I'd say the default implementation should simply hide current workspace frame, so that the desktop is displayed, but we should let users customize it to do different actions, such as your suggested buffer-expose
.
EXWM hints (i.e., falsely claims) that it supports 'Show Desktop' [...]
Actually we don't, and it may be the exact reason the dialog poped up. You may checkout exwm--init-icccm-ewmh
where xcb:Atom:_NET_SHOWING_DESKTOP
is commented out along with other unsupported EWMH hints.
I'm not sure what this feature should be like on EXWM as we don't have a 'desktop'. Perhaps the closest thing is to kill all Emacs windows and make a default buffer (perhaps the *scratch*
buffer) displayed in the sole window, but I don't think users will find it useful.
[...] the 'Show Desktop' feature of EXWM can take inspiration from what
buffer-expose
[...]
'Expose' is another unrelated feature I'm afraid. It seems not defined by any X11 protocol.
[...] I'd say the default implementation should simply hide current workspace frame, so that the desktop is displayed, [...]
Then users may find it hard to bring back that frame though.
EXWM hints (i.e., falsely claims) that it supports 'Show Desktop' [...]
Actually we don't, and it may be the exact reason the dialog poped up. You may checkout
exwm--init-icccm-ewmh
wherexcb:Atom:_NET_SHOWING_DESKTOP
is commented out along with other unsupported EWMH hints.
I read the specifications /NOT/ as a hint of /CAPABILITY/, but as hint of /DISPLAY STATE/. I don't know if the implication is that /all/ window manager /must/ support the SHOWING DESKTOP, even if the support amounts to nodding the head and saying yes, yes.
_NET_SHOWING_DESKTOP desktop, CARDINAL/32
Some Window Managers have a "showing the desktop" mode in which windows are hidden, and the desktop background is displayed and focused. If a Window Manager supports the _NET_SHOWING_DESKTOP hint, it MUST set it to a value of 1 when the Window Manager is in "showing the desktop" mode, and a value of zero if the Window Manager is not in this mode.
If a Pager wants to enter or leave the mode, it MUST send a _NET_SHOWING_DESKTOP client message to the root window requesting the change:
_NET_SHOWING_DESKTOP message_type = _NET_SHOWING_DESKTOP format = 32 data.l[0] = boolean 0 or 1 other data.l[] elements = 0
The Window Manager may choose to ignore this client message.
Btw, what do you call the blue blackground I see in the screenshot below? Isn't that a desktop? Or is it something else.
Can the root frame be iconified? If it is iconified, can I de-iconify it with `Show Desktop' icon on the panel? Based on cursory reading of some forum messages, it looks like the 'Show Desktop' icon is rendered as depressed or raised according as how the Window Manager responds to the "SHOWING DESKTOP" query.
(/I really don't know what I am talking about here/)
Btw, what do you call the blue blackground I see in the screenshot below? Isn't that a desktop? Or is it something else.
Yes, that's the desktop.
Then users may find it hard to bring back that frame though.
This functionality is usually invoked by clicking a button on the taskbar. This button can be used to toggle back to showing the not-desktop. I think it is the brown folder-like icon on the lower left image of https://github.com/ch11ng/exwm/issues/609#issuecomment-520333405.
I read the specifications /NOT/ as a hint of /CAPABILITY/, but as hint of /DISPLAY STATE/.
I mean it's excluded in the list of _NET_SUPPORTED
.
Btw, what do you call the blue blackground I see in the screenshot below? Isn't that a desktop? Or is it something else.
Desktop is actually an X window with some special properties set. By default EXWM has no desktop but it's possible to create one with some external application.
Then users may find it hard to bring back that frame though.
This functionality is usually invoked by clicking a button on the taskbar. This button can be used to toggle back to showing the not-desktop. I think it is the brown folder-like icon on the lower left image of #609 (comment).
I see. So we need an external GUI application to toggle this and it's preferably a pager. I still find it not very useful to iconify workspace frames though; users can hardly do anything in this state.
'Show Desktop' support may be? [GNOME Flashback + GNOME Panel]
I run EXWM Gnome Flashback Session with GNOME Panel on. (See https://github.com/ch11ng/exwm/issues/606)
Factory settings of GNOME Panel, has a 'Show Desktop' Icon in the bottom panel. When I click on it, I see the following message
See the screenshot below for what I see when I click on the 'Show Desktop' Icon.
My gut feeling is that ....
EXWM hints (i.e., falsely claims) that it supports 'Show Desktop' while failing to provide a handler for it. If this is the case, and if 'Show Desktop' is indeed not supported, then EXWM shouldn't make any false claims. This way GNOME Panel wouldn't even bother about activating 'Show Desktop' icon.
What should 'Show Desktop' do?
If 'Show Desktop' feature hasn't surfaced before, this issue could be taken as a placeholder for discussing what this feature means in Emacs/EXWM context. IMHO, the 'Show Desktop' feature of EXWM can take inspiration from what
buffer-expose
: Visual buffer switching using a window grid does. See screenshot for whatbuffer-expose
does.