This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Rethinking "Showing Desktop" feature

1

Votes
1
0
Tags: None
(comma "," separated)
luebking
Karma
0

Rethinking "Showing Desktop" feature

Wed Nov 06, 2013 10:32 pm
On the feature:

_NET_SHOWING_DESKTOP

_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.


There's no particular mention on the actual implementation, theoretically it could be done by raising the Desktop layer, but the usual implementation is to minimize all windows. That does NOT mean the feature as shortcut to minimize all windows - it's an implementation detail.

The feature itself is pretty much undoubted but there's ben re-occurring concerns on behavior on breaking the "showing desktop" state.

Background:
When a window gets shown (whether the user unminizes a client or opens a new one by shortcut or some window spawns a dialog etc.) the state is considered broken (assumed ratio: there's a new window and obviously the desktop is not showing)

Initially (this means around KDE 3.1), when the state was broken by the new window, the other windows remained minimized, what caused bug/wish #60480 to restore the windows minimized to show the desktop.
A very important concern in this regard would be that not all minimized windows may be accessible through the taskbar (inb4: not a concern to me, no ;-)

So this changed to restore all minimized windows when breaking the state, except when explicitly unminimizing a present window (assumed ratio: the user deliberately chose ONE window and did not just reset the showing desktop state) what caused bug #67406 and ultimately
SVN commit 546547 by ("not me" ;-)

For people who don't see the difference between "show desktop"
and "minimize all" add config option ShowDesktopIsMinimizeAll
in group Windows in kwinrc.


The question about what is correct or should be default etc. here is quite flamewar prone (there're *far* more than those two bugs - but please stay away from commenting to any)

The current default behavior of KWin matches that of WindowMaker but OpenBox and Metacity (and likely compiz and mutter as metacity heirs as well) behave like ShowDesktopIsMinimizeAll
Neither fvwm, icewm, lwm, pekwm, pawm and not even E17 (though this is special, i'll come back to it later) implement _NET_SHOWING_DESKTOP


The major reason to implicitly restore all windows seems obvious:
If you've a dozen windows opened and show the desktop (to see a plasmoid or whatever) and the state gets broken it is quite a PITA to restore all windows by hand. Beyond that, you may not even be able to unminimize certain windows if you rely on a taskbar.

I'm am not really sure about the reason to NOT implicitly restore windows, but assume that users "abuse" the Show Desktop feature to "tidy up" before starting a new application - iow "abuse" show desktop for what actually virtual desktops are meant.

Now, on what could be thought to change the behavior (make no mistake: this implies "For Plasma Workspaces 2", ie. KDE5)


a) Do not break the showing desktop state when a new window shows up.
====================================================================
a1) Show the new window, but keep others hidden and the "Show Desktop" state intact
E17 acts like this - there's an action for the DE which however is not tied to the NETWM standard.

a2) Since the "Show Desktop" state is intact, there obviously must be no window hiding the desktop - thus the new window is NOT shown.

---

b) Leave "Show Desktop" as it is, remove the secret
ShowDesktopIsMinimizeAll option and add a public kwin shortcut to
==================================================================
b1) minimize all windows (ie. they're gone)
b2) un/stash windows (ie. kinda clone the E17 feature: all visible windows are hidden and exactly those windows are resored on the second invocation)

---

c) Offer different behavior of showing desktop as GUI config.

d) Act not, everything remains as it is.

------------- ============== --------------

Notes:
------
(b) is actually combinable with (a,c,d) and can even be provided for KDE 4.11 as 3rd party script.

(a2) to me actually seems like the cleanest implementation of a "Show Desktop" feature. If the user decided to "Show the Desktop" there should be no intervention by the system until the user explcitly exits this mode.

The secret "ShowDesktopIsMinimizeAll" option is not KDE typical but the "my personal pet" kind of setting.
This said: i personally agree with svn commit message 546547 and believe it's complete nonsense and traps users into abusing one feature (showing the desktop) for another (use virtual desktops) - minimizing or stashing all windows may be a valid *additional* feature but it's obviously not the same as showing the desktop - if you want to minimize all windows (forever) you do rather not primarily want to show the desktop.
airdrik
Registered Member
Posts
1854
Karma
5
OS
a1 seems similar to the behavior (in certain cases) when using Show Widget Dashboard (which I use frequently as a Show Desktop alternative, but I'm not tied to that - I just want to temporarily interact with something on the desktop and for the desktop to go away when I'm done): that is certain actions which launch new windows will do so without dismissing the widget dashboard which then has to be explicitly dismissed (though at least in that case the widget dashboard is transparent and you can see and switch between the other windows). I suspect people will be reluctant to go with that option as when you switch to interacting with (freshly launched) windows people would expect the desktop to go back to the background.

a2 seems like a nice feature from a technical standpoint as you have to explicitly dismiss the desktop when you are done, and on occasion it may be welcome to be able to launch multiple windows from the desktop before switching to them. I suspect that most people would be confused about where the window that they just launched went and why wasn't immediately available.

I do agree with b that the secret ShowDesktopIsMinimizeAll should go away, and instead have separate actions for Showing the Desktop and for Minimizing all windows (per b1). Show Desktop would be changed to not minimize all windows but instead bring the desktop to the foreground for interaction, and return to the background when dismissed (either explicitly, or implicitly when some action results in a new window launched).

I suppose we should propose this question as what behavior do people expect of the Show Desktop feature: Is the Showing Desktop state seen more as a temporary "I'm looking at something on the desktop so that I can perform some action and then I expect to go back to interacting with other windows (which may include some window which launched while in the Show Desktop state)" (a behavior similar to your b2 - the Showing Desktop state goes away once the user switches to another window); or is the Showing Desktop state seen more as a semi-permanent "I'm interacting with the desktop and while some actions may launch windows, I don't want anything to interfere with my interactions with the desktop until I say I'm done" (a behavior similar to your a2)?

In both cases, I suspect people expect everything to return to the state prior to showing the desktop except for any window(s) launched (which should have focus). I also suspect that people will lean more towards the prior show-desktop-is-temporary opinion.

I also suspect that a lot of people assume that Show Desktop is an alternative name for the Minimize All action and would be mildly miffed if this association were removed. For these people, I suppose there is also the question of what state do people expect after an action launches a new window and/or when the desktop is dismissed (i.e. when Show Desktop/Minimize All is "undone")? They probably expect b2 most of the time, or a variation of a1 when launching a new window - that is only the new window is shown.


airdrik, proud to be a member of KDE forums since 2008-Dec.


Bookmarks



Who is online

Registered users: Baidu [Spider], Bing [Bot], Google [Bot], Yahoo [Bot]