Bug 317146

Summary: Add a GUI check box control and respective help for kwinrc showDesktopIsMinimizeAll
Product: [Plasma] kwin Reporter: Woodsman <darrella>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED NOT A BUG    
Severity: wishlist    
Priority: NOR    
Version: 4.10.1   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Woodsman 2013-03-21 18:50:14 UTC
There is no GUI control for kwinrc [Windows] showDesktopIsMinimizeAll.

The default value is false, which means the ShowDesktop widget acts as a simple toggle. That is, using the widget minimizes all windows and a second usage restores all windows to the previous state. This probably is how users expect the widget to work.

Confusion arises when krunner is started while showDesktopIsMinimizeAll=false because all minimized windows abruptly restore to their original state. Many users expect that when all windows are minimized that they remain minimized even when starting a new app window.

Setting showDesktopIsMinimizeAll=true modifies the ShowDesktop widget behavior in that using the ShowDesktop widget still toggles the state of open windows, but starting a new app such as krunner does not change the minimized state of all windows.

Reproducible: Always

Steps to Reproduce:
1. Toggle the ShowDesktop widget to minimize all windows.
2. Start krunner.
3. Verify all window states are restored.
4. Edit kwinrc to change the value of showDesktopIsMinimizeAll
5. Restart kwin (qdbus org.kde.kwin /KWin reconfigure)
6. Toggle the ShowDesktop widget to minimize all windows.
7. Start krunner.
8. Verify all window states remain minimized.

Actual Results:  
Windows don't remain minimized.

Expected Results:  
Windows should remain minimized.

This is a handy feature that only some people enjoy because there is no GUI control to discover this modified behavior. Some people probably don't care one way or another while others  welcome this option. In the normal KDE spirit, users should choose. The configuration option already exists, only adding a GUI control and respective help is requested.
Comment 1 Thomas Lübking 2013-03-21 18:58:41 UTC
> Confusion arises when krunner is started while showDesktopIsMinimizeAll=false because all minimized windows abruptly restore to their original state.

Afaics that's no longer true
Last time i checked, krunner was a dock, thus does not impact the state, thus does not cause a launch.
Comment 2 Woodsman 2013-03-21 20:27:22 UTC
> Last time i checked, krunner was a dock, thus does not impact the state, thus does not cause a launch.

Hmm. I run krunner floating and I can replicate the behavior here. That is what led me to start searching the web for relief as this behavior always frustrated me in KDE3 too. :) Anyway, I discovered the showDesktopIsMinimizeAll trick, but could not find a respective GUI control. I don't know the best place in system Settings to add a check box.
Comment 3 Thomas Lübking 2013-03-21 20:37:45 UTC
open konsole, trigger the runner window, and in konsole call
"xwininfo -wm"
the cursor will turn into a cross, click the runner window.

What does it say about "Window Type"?
Comment 4 Woodsman 2013-03-21 20:42:44 UTC
> What does it say about "Window Type"?

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x2000163 "Run Command"

  Window manager hints:
      Client accepts input or input focus: Yes
      Initial state is Normal State
      Displayed on desktop 0
      Window type:
          Normal
      Process id: 3428 on host textbox
Comment 5 Thomas Lübking 2013-03-21 21:14:13 UTC
Strange.

xwininfo: Window id: 0x280062d "Run Command"

  Window manager hints:
      Client accepts input or input focus: Yes
      Initial state is Normal State
      Displayed on all desktops
      Window type:
          Dock
      Window state:
          Above
          Stays On Top
          Skip Taskbar
      Process id: 4566 on host karnak

I got to check whether i eventually somehwhen "fixed" that in bespin ;-)

In the meantime you can force it to be a dock via the rules in case you want to preserve the regular "show desktop" behavior AND have krunner not break it.
Comment 6 Woodsman 2013-03-21 22:17:03 UTC
Okay, but actually I prefer krunner to float in the middle of my screen. :)
Comment 7 Thomas Lübking 2013-03-21 22:34:00 UTC
That's not related to the Window Type.
Docks can be anywhere and don't have to strut either.

It's just that
a) kwin will not actively pass the the input focus (no matter how often you click them, the dock has to obtain it itself)
b) kwin will not decorate the dock not allow you to move or resize it (the dock has to call for that actively ;-)
c) docks have a certain layer above regular windows
Comment 8 Martin Flöser 2013-03-22 07:09:35 UTC
(In reply to comment #5)
> I got to check whether i eventually somehwhen "fixed" that in bespin ;-)
it's a dock for me, too. I guess it is related to the floating mode, which kind of makes sense to have that not as a dock.

Overall that kind of renders the request invalid. There's probably a very good reason why there is not a GUI option for it (after all it was added in KDE 3 times and back then KDE devs loved to add as many options to the GUI as possible). I personally do not see a reason for exposing that option.
Comment 9 Thomas Lübking 2013-03-22 14:40:56 UTC
I assume it wasn't exported since it's been a kludge in the first place (see lubos comment, doesn't sound like he thought this was a good idea)

If one wants a shortcut / dbus interface / whatever to minimize all windows, one should add that.

The setting as to demands of the OP only covers a "bug" in krunner which lost family assignment with the desktop (or "don't care about me" window state) and should be god damn just fixed in krunner (re-assign to plasma-desktop clientgroup <- see ;-) or turn it into a dock) because you'd hit the very same issue with each and every other WM that do not have a strange "ShowDesktopIsMinimizAll" kludge.

I propose to instead remove that option altogether and instead really provide some basic WM functions in that regard (ie. extend the dbus interface next to "unclutterDesktop" and "cascadeDesktop" with "minimizeAll", "maximizeAll" and "tileDesktop" and whatnot similar trivial arrangements) - or move that all into scripting ;-)

(@Martin: can scripts extend the dbus interface or should we maybe have some "runScript" interface)

However: "remove nonsense and add (and expose to GUI) things that do what they actually suggest instead and FIX bugs, not mitigate them by adding nonsense"

/rant =)
Comment 10 Martin Flöser 2013-03-22 14:48:43 UTC
> (@Martin: can scripts extend the dbus interface
not yet, but it's something I wanted to add. I find it a very interesting idea 
and could see quite some interesting use cases for it (e.g. Plasma Active 
interacting more closely with KWin).
Comment 11 Woodsman 2013-03-22 17:35:49 UTC
Although this request was for a GUI control, the conversation raised another point.

Users expect the ShowDesktop widget to act like a toggle. First use minimizes all apps and the second usage restores all apps to their previous state. So far so good.

Users don't expect that after minimizing all apps that opening any other app that is not open to restore existing apps to their previous state, acting like the second usage of the ShowDesktop widget. Users minimized all apps for a reason --- to get them out of the way to do something else. Like krunner, KDE3 did that. Frustrating. :)
Comment 12 Thomas Lübking 2013-03-22 17:49:57 UTC
(In reply to comment #11)
> Users expect the ShowDesktop widget to act like a toggle.
Yes.

> First use minimizes all apps
No. It's called "ShowDesktop" - not "MinimizeAll" - that's an implementation detail.

> Users don't expect that after minimizing all apps that opening any other app
> that is not open to restore existing apps to their previous state
The reason is that the desktop showing state was broken, thus the state is withdrawn, thus the former state restored (+the new window is oc. still there)

What you seek is actually called "Virtual Desktop" - a concept known to all X11 WMs since decades.
KWin supports 20 of them.

> Like krunner, KDE3 did that.
The reason here is very simple: the runner in KDE three was part of the kdesktop application (or explicitly moved into that group) and desktop related windows of course do not break the "show desktop" state.

Whether the current behavior of krunner is intended or not, i don't know.
But it could easily be changed.

Just working around that from kwin by sth. that effectively breaks the meaning of a feature is actually just the wrong kind of solution to it.