linuxmint / muffin

The window management library for the Cinnamon desktop (libmuffin) and its sample WM binary (muffin)
GNU General Public License v2.0
196 stars 91 forks source link

Window that gives 'dock' hint to WM is not treated as a dock #377

Open ghost opened 5 years ago

ghost commented 5 years ago
 * muffin version (muffin --version or 'dpkg --list | grep libmuffin0' for Mint/Ubuntu): 3.8.2
 * Distribution - (Mint 17.2, Arch, Fedora 25, etc...): Mint 19
 * Graphics hardware *and* driver used: Intel UHD Graphics 620; 3.0 Mesa 18.0.5
 * 32 or 64 bit: 64

Issue

The program Rainlendar draws a window on the desktop. The program's developer tells me that the program tells the WM that the window is a dock; the developer tells me also, I think, that this should suffice to stop the window being hidden by pressing super-D`. However, it does not.

Steps to reproduce

Install and run Rainlendar. Do super-D. See the window disappear.

Expected behaviour

The window should persist through super-d.

Other information

Were I able unproblematically to use the Rainlendar panel icon to restore the window, then the problem would be less bad. I can use that icon, but it is much too small - see Cinnamon #7435.

mtwebster commented 5 years ago

Is there some setting to make it use the dock hint? It doesn't appear to be reporting itself as such:

xprop output for rainlendar Lite 2.14.2:

XKLAVIER_STATE(INTEGER) = 0, -467430656
_GTK_EDGE_CONSTRAINTS(CARDINAL) = 170
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_NET_WM_DESKTOP(CARDINAL) = 4294967295
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_STICKY
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        window id # of group leader: 0x7800001
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x21, 0x0, 0x0, 0x0
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 125829421
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x780012c
WM_CLIENT_LEADER(WINDOW): window id # 0x7800001
_NET_WM_PID(CARDINAL) = 3481
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "mint19-laptop"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 0, 0
        program specified minimum size: 330 by 310
        program specified maximum size: 330 by 310
        window gravity: Static
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "rainlendar2", "Rainlendar2"
WM_ICON_NAME(STRING) = "rainlendar2"
_NET_WM_ICON_NAME(UTF8_STRING) = "rainlendar2"
WM_NAME(STRING) = "rainlendar2"
_NET_WM_NAME(UTF8_STRING) = "rainlendar2"

output from another program that utilizes the dock hint:

XKLAVIER_STATE(INTEGER) = 0, -467430656
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
_GTK_EDGE_CONSTRAINTS(CARDINAL) = 170
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_NET_WM_STRUT(CARDINAL) = 0, 0, 0, 62
_NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 3839
_NET_WM_DESKTOP(CARDINAL) = 4294967295
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_STICKY
WM_HINTS(WM_HINTS):
        Client accepts input or input focus: False
        Initial state is Normal State.
        window id # of group leader: 0x7e00001
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 132120614
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x7e00025
WM_CLIENT_LEADER(WINDOW): window id # 0x7e00001
_NET_WM_PID(CARDINAL) = 3514
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "mint19-laptop"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 0, 0
        program specified minimum size: 3840 by 190
        program specified maximum size: 3840 by 190
        window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "Docky", "Docky"
WM_ICON_NAME(STRING) = "Docky"
_NET_WM_ICON_NAME(UTF8_STRING) = "Docky"
WM_NAME(STRING) = "Docky"
_NET_WM_NAME(UTF8_STRING) = "Docky"

The second program has:

_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK```

whereas rainlendar reports as a "normal" window.

ghost commented 5 years ago

Thank you. It seems I should report the above to the developer - yes? I am not in a position to judge such matters myself. (Yet, might I note here also the following? When the famous Conky - even in its bleeding-edge version - is set to what it calls 'dock' mode, icons can overlap its window?)

mtwebster commented 5 years ago

I think so - muffin definitely respects the dock hint, but it's not in that program. I'd look at the source but it doesn't appear available.

Conky by default calls itself a "Desktop" window. Nemo-desktop ignores conky (there's an exception list to add/remove) when deciding whether or not something is already considered 'managing the desktop' - but there is no awareness either way beyond that, for preventing overlap. They simply draw over each other.

ghost commented 5 years ago

Good stuff. I've reported the information about Rainlendar to Rainlendar's author (by private e-mail).

Conky: given the wonderfulness and prevalence of Conky, could things be better? Having the icon for a download, or a new file link, appear more or less slapbang atop my Conky is not, shall we say, a good look.