Very useful when you use virtual desktops. See T11520 for more information.
This reverts commit d72e96802b3c48ce69d8072cf30038d6ad552d0c.
romangg | |
ngraham | |
davidedmundson |
KWin | |
Plasma | |
VDG |
Very useful when you use virtual desktops. See T11520 for more information.
This reverts commit d72e96802b3c48ce69d8072cf30038d6ad552d0c.
Have 2 or more virtual desktops and use the new shortcut.
Lint OK |
No Unit Test Coverage |
Buildable 17327 | |
Build 17345: arc lint + arc unit |
I'm in favor of adding new shortcuts but I want to see a full usability concept on how they are meant to work together with existing ones and how the user interaction is supposed to look. Just copying patterns from other systems is not sufficient.
For example I have set my VD switching keys to Meta + WASD (and move window to VD to Shift + Meta +WASD) because that way I can switch without taking my right hand from the mouse. That's only my personal preference and comes from me using it very often. But similar thought including an usage analysis must be put into an overall concept when changing or setting new default keys. Because you should do it only once.
+1 for setting default shortcuts for this.
In general, apps don't use the Meta key for their shortcuts, while the shell does. As far as I know this is not a formal standard, but rather a de-facto one. I think it would benefit us to formally settle on this ourselves, or else we'll have the same conversation every time someone proposes adding a new global shortcut.
My take on this:
One issue I experienced while assigning "Switch to VD above/below/left/right" and "Switch to next/previous VD" myself is that the 4 arrow keys are incredibly valuable for desktop environments that use a 2D VD model, that is, environments where you can switch between two axes, up/down and left/right. In addition, arrow keys are close both in semantic and physical manner, which makes them perfect for 2D navigation with windows and VDs. The issue here is that if you set "Switch to next/previous VD" to arrow keys, "Switch to VD above/below/left/right" can't make use of arrow keys.
Windows, OSX, i3 and GNOME all use a 1D model for virtual desktops. I believe keyboard shortcuts should be assigned in accordance to the model the desktop environment uses; that can of course have exceptions, for instance, for the sake of familiarity (which is the case) though I'm not fond of using just familiarity as a reason for this sort of change.
This sort of combo (Ctrl+Meta+arrow) makes sense, but if you set it for Next/Previous, you'd be missing the opportunity of setting the entirety of the four arrow keys to a set of four close functionalities, namely Switch to VD above/below/left/right, and would require setting the combo Ctrl+Meta+up/down to something else which has 2 similar functionalities instead of four. The problem with this is that there isn't a pair of keys on the keyboard that would work well with Next/Previous aside from Left/Right. PageUp and PageDown, for instance, would typically be expected to descend immediately below and above like in GNOME, not e.g. switching diagonally if the user has 4 VDs or more.
What can be done in order for this to make sense in Plasma's context is also set Switch One Desktop Up and Switch One Desktop Down since, analogously, Next/Previous and left/right usually intersect, but that is rather clunky. What if the user has 6 VDs arranged like 1, 2, 3 on the upper side and 4, 5, 6 on the lower side, and want to switch from 6 to 4 using Switch One Desktop Right? It might also be more intuitive to set up/down/left/right instead of up/down/Previous/Next, especially if the user prefers to use a vertical VD layout (users coming from GNOME might like this), in which case using the left and right keys make no sense for transitioning between desktops.
A rebuttal to my criticism of up/down/left/right being more intuitive is that intuitiveness can also be broken for the "better option", like GNOME devs usually affirm. For instance, they have Meta+Left/Right for snapping windows, but Meta+Up/Down for maximizing/restore, which breaks the intuitiveness of snap up/down/left/right because snapping a window up or down is either niche or is not the best arrangement of windows if your screen monitor isn't huge, and because maximize/restore are way more used functionalities.
Anyway, this is one of those keyboard shortcut changes that must be taken as a whole instead of in small parts. Could decision-making on this be postponed at least a week? I was going to more accurately address these things with my posts on GNOME soon. This requires discussion first.
EDIT: corrected dimension numbers
That's an excellent point, @thiagosueto, and one I hadn't considered.
Maybe we could use the PageUp/PageDown keys with some combination of modifiers for next/previous virtual desktop?
WASD is something that only gamers know. IMO it's not an appropriate default for regular users.
We don't need to copy other systems all the time. We can establish our own patterns when it makes sense.
And as long as we do that in a holistic way, i.e. not through singular patches without overall plan changing one default at a time.
That wasd pattern is not used in Plasma but in games is not a counterargument but only shows:
Also I don't like overloading the arrow keys with functionality such that you need to remember unrelated modifier keys for when does it what.
If Microsoft does it they are free to do it, but it's still bad.
I agree. I fear it might be too niche, but on the other hand, this might make Plasma more interesting for gamers.
And as long as we do that in a holistic way, i.e. not through singular patches without overall plan changing one default at a time.
Yes, this sort of keyboard shortcut must be decided on a later date, me thinks.
My bad though: I mentioned it makes sense, but this statement is empty without justification. I was envisioning something like:
This should be discussed and counterpoints should be made though. For instance:
Also I don't like overloading the arrow keys with functionality such that you need to remember unrelated modifier keys for when does it what.
This is my fear as well.
We don't need to slavishly copy other platforms, that's true. But we should also be wary of deviating too far from the familiar. Both can be a failure mode, depending on the circumstance.
I can see the appeal of Meta+WASD. It's a very efficient single-hand keyboard shortcut combo that cleverly re-uses a directional metaphor popularized by video games. It feels "unique" and if it gets implemented and gains popularity, the kinds of people who read tech blogs and try Linux distros for fun will remark, "hey, that's kind of clever."
But like all trade-offs between efficiency and accessibility, you need to strike a balance appropriate to your audience. Cleverness that's lost on or inaccessible to your users isn't actually clever at all. There's a reason why most default settings are kind of dumb and not tuned for maximum efficiency: because they're more approachable and discoverable.
Now, we're talking about virtual desktop switching keyboard shortcuts. Ordinary users don't use virtual desktops and don't use many keyboard shortcuts outside of cut/copy/paste. So our audience is already far above average technically. So we should ask: what keyboard shortcut is this audience most likely to 1) discover and 2) appreciate?
Being a clever single-handed combo, Meta+WASD actually seems quite easy to appreciate for me, so we have #2 already. However the trick is discovering it in the first case (#1). The only visible UI by which you can discover this shortcut is in the Global Shortcuts KCM which has awful usability and in general people don't trawl through it to find shortcuts. So it should be discoverable through trial and error. The question is, will people discover Meta+WASD through trial and error?
To my knowledge no other keyboard shortcut uses this pattern (using the WASD keys as a substitute for the arrow keys), so it's not going to be on the top of people's minds. By contrast the arrow keys are used on all other platforms, with some combination of modifier keys. Speaking personally, if I was trying to discover a platform's virtual desktop keyboard shortcuts, I would do the following:
Anyway, I'm not formally objecting, because having a global shortcut (practically any global shortcut) is good. But I also know that once we set one of these, people get mad if we change it again, so we should try to avoid the "implement it and see if it works, and change it if it doesn't" dance that we can get away with for some other things.
One thing of note that is set by default on both XFCE and GNOME is Ctrl+Alt+arrows for moving between workspaces: in GNOME Ctrl+Alt+Up/Down switches between workspaces vertically and XFCE uses Ctrl+Alt+Up/Down/Left/Right to switch between workspaces both vertically and horizontally. Since we're switching to Meta as default for system/shell/desktop shortcuts, could Ctrl+Alt+arrows be set as an alternative (as Plasma allows for two keyboard shortcuts for the same action through the GUI)?
Purely as an observation this will break any user that has:
https://github.com/lingtjien/Grid-Tiling-Kwin
It's not part of KDE by default, but then nor is having more than one virtual desktop.
Hmm, Ctrl+Alt+Arrows can also break things like Konsole (https://cgit.kde.org/konsole.git/tree/src/ViewManager.cpp#n237) and Meta is more appropriate for desktop/window management shortcuts, so less likely to break other applications that are not desktop add-ons.
If I'm understanding the documentation at https://github.com/lingtjien/Grid-Tiling-Kwin, that script doesn't actually set Meta+Ctrl+arrows as shortcuts, it just recommends that the user does it.
Right, that's exactly why we should use Meta for this, and use Meta for global shortcuts more generally. I really think the shortcuts proposed in this patch are just fine and we should move forward. No other alternative shortcut proposed here works:
IMO we should consider going forward with this otherwise we'll get stuck in the weeds forever trying to come up with something
Meta+Ctrl+arrow = switch to VD (because it changes where you start managing windows)
If thiago is doing the big shortcuts overhaul and says to do this, lets do it.
Also I don't like overloading the arrow keys with functionality such that you need to remember unrelated modifier keys for when does it what.
The alternative is remembering which keys are spatial, which would be a bigger problem.
If thiago is doing the big shortcuts overhaul and says to do this, lets do it.
He didn't say this. He said it needs to be discussed more and that he is also worried about overloading the arrow keys.
I am still against this change:
My goal is to bolster the usefulness and acceptance of VD-centric workflows long-term. For that switching between VDs and moving windows between VDs needs to be convenient and fast. Currently this is not the case since it is only possible via an (often very small) applet in the task manager and through a context menu on window decorations. Sensible shortcuts could improve this situation but for these I expect them to be usable via one hand and with the opposite hand of the mouse hand (normally this means they are accessed with the left hand) so user can leave his mouse hand on the mouse. If in the end the combination is Meta+WASD or something else does not matter to me. These are the restrictions I put upon a solution to be found.
This is a perfect-is-the-enemy-of-the-good situation. If we hold out for something perfect, we'll never have anything at all here for the next 5 years, and everyone knows it. This is a pain point, we have a chance to fix it easily, I say let's fix it and move on with life.
This just changes a singular aspect of overall window and VD management and associated shortcuts. The change of keys combinations need to be planed, agreed on and then done together. We did not come to a resolution overall.
See the task thread. There is a plan, this is the only option that won't cause conflict elsewhere. I wouldn't have approved otherwise.
Unfamiliar users accidentally pressing the wrong combination might end up in a state they do not expect and don't know how to recover from directly (for example moving a window to another VD).
Plasma only has one VD by default. This no-ops by default.
The shortcuts here need both hands. A workflow with quick switching of windows between different VDs is not possible.
So then they won't press it by accident? Also it's spatial, which means arrow keys work best. That's a pretty established pattern.
Sorry for being late to respond.
My two main concerns are whether the modifier keys are suitable *and* that we stay consistent on them.
What we have seen so far:
In general, apps don't use the Meta key for their shortcuts, while the shell does.
I verified that the first part of this is not true. Other DEs and distro implementations such as Xubuntu use the rule Meta+(first letter of application functionality).
Also I don't like overloading the arrow keys with functionality such that you need to remember unrelated modifier keys for when does it what.
This seems to be unavoidable from what I've seen. So far, GNOME, XFCE and MATE did not manage to make things consistent in this regard, each appealing to some complex alternative just so as to compensate the lack of keys available for the huge amount of functionality. GNOME includes an alternative to Meta+arrows by using Ctrl+Alt+PgUp/Down, XFCE tried to do the opposite of Plasma, using Ctrl+Alt+arrows/PgUp-PgDown for system shortcuts and Meta for applications in addition to an extensive use of F# keys, MATE by using Ctrl+Alt to the max and simply not assigning other keyboard shortcuts, and Cinnamon simply sacrificed as much keyboard shortcuts as possible.
The main issue I see here is that we will likely end up having a four-key keycombo eventually, which I disapprove of but is not the end of the world.
Unfamiliar users accidentally pressing the wrong combination might end up in a state they do not expect and don't know how to recover from directly
This may be partially avoidable with the progressive increase in the number of keys. Assuming we have Meta+Ctrl for switching between workspaces and Meta+Ctrl+Shift for moving a window between workspaces, it would be more difficult (although marginally due to the proximity between Ctrl and Shift) for the user to press Meta+Ctrl+Shift than it is to press Meta+Ctrl. Generally speaking, the reason people use two-key keycombos is so that people don't accidentally activate functionality with a single touch. Three-key keycombos are inherently harder to press accidentally than only two keys. In this case, while the distance between Ctrl and Shift is problematic, the distance between Ctrl and Meta are not.
The shortcuts here need both hands. A workflow with quick switching of windows between different VDs is not possible.
for these I expect them to be usable via one hand and with the opposite hand of the mouse hand (normally this means they are accessed with the left hand)
Using two hands is desirable if we consider RSI, it reduces strain by letting both hands share the workload.
I see this as a balance between being practical/efficient and being healthy, so I weigh both typing with one hand and typing with both as being on the same level, as long as the keyboard shortcut isn't an abomination like Meta+Ctrl+Tab or Ctrl+Alt+Tab. That said, all DEs I checked so far use at least two hands to navigate and move windows between workspaces, so this requirement is a bit off the charts.
The only consistent way to switch between workspaces with one hand are Meta+WASD and Meta+1-4, and I don't think they're practical or needed.
I'd say we go with Meta+Ctrl+arrows for this one.
Yea, but independent of what other desktops do we should make sure Meta in the future is a window-manager/shell-exclusive key. Apps are not allowed to use it in any form. If we want to ensure that we need to stick to it. On the other side apps are allowed to use any combination of Alt, Ctrl, Shift with some well defined exceptions (for example Alt + Tab).
Also I don't like overloading the arrow keys with functionality such that you need to remember unrelated modifier keys for when does it what.
This seems to be unavoidable from what I've seen. So far, GNOME, XFCE and MATE did not manage to make things consistent in this regard, each appealing to some complex alternative just so as to compensate the lack of keys available for the huge amount of functionality. GNOME includes an alternative to Meta+arrows by using Ctrl+Alt+PgUp/Down...
Having as defaults several alternatives I want to get rid of completely. If one can't decide on proposing a single shortcut one should not set any. I'm open for discussion though. Are there good examples where it's definitely necessary to have several alternatives defined?
XFCE tried to do the opposite of Plasma, using Ctrl+Alt+arrows/PgUp-PgDown for system shortcuts and Meta for applications in addition to an extensive use of F# keys, MATE by using Ctrl+Alt to the max and simply not assigning other keyboard shortcuts, and Cinnamon simply sacrificed as much keyboard shortcuts as possible.
The main issue I see here is that we will likely end up having a four-key keycombo eventually, which I disapprove of but is not the end of the world.
- Meta+WASD is niche
That's fine. We have power, we can un-niche it.
- Meta+WASD requires unbinding Meta+D
Which should have not bound in the first place. But yea, that's now a valid counter-argument.
- Meta+arrows for switching between DEs would require unbinding window snapping
- Meta+Alt+arrows requires unbinding switch focus, whose functionality I personally like
- Meta+Ctrl+Shift+arrows is a four-key keycombo, so should be used for the most niche navigation purposes
- Ctrl+Alt+arrows can interfere with Konsole, which is a core KDE application
Unfamiliar users accidentally pressing the wrong combination might end up in a state they do not expect and don't know how to recover from directly
This may be partially avoidable with the progressive increase in the number of keys. Assuming we have Meta+Ctrl for switching between workspaces and Meta+Ctrl+Shift for moving a window between workspaces, it would be more difficult (although marginally due to the proximity between Ctrl and Shift) for the user to press Meta+Ctrl+Shift than it is to press Meta+Ctrl. Generally speaking, the reason people use two-key keycombos is so that people don't accidentally activate functionality with a single touch. Three-key keycombos are inherently harder to press accidentally than only two keys. In this case, while the distance between Ctrl and Shift is problematic, the distance between Ctrl and Meta are not.
True, my argument was not very convincing.
The shortcuts here need both hands. A workflow with quick switching of windows between different VDs is not possible.
for these I expect them to be usable via one hand and with the opposite hand of the mouse hand (normally this means they are accessed with the left hand)Using two hands is desirable if we consider RSI, it reduces strain by letting both hands share the workload.
I see this as a balance between being practical/efficient and being healthy, so I weigh both typing with one hand and typing with both as being on the same level, as long as the keyboard shortcut isn't an abomination like Meta+Ctrl+Tab or Ctrl+Alt+Tab. That said, all DEs I checked so far use at least two hands to navigate and move windows between workspaces, so this requirement is a bit off the charts.
On the other side this argument does not convince me. Neither in regard to health aspects nor what other DEs do. Regarding first aspect common actions are never done via both hands besides typing itself. For example look at Alt+Tab and CTRL+X/C/V. I also don't think it's a good idea in general to try to "heal" the user's potential RSI by defining two-hands shortcuts. Every user is lazy (like he should be) and will try to find a way to minimize moves either by finding ways around the artificial obstacles or by not using the shortcut at all. Instead we should make user interaction maximal convenient and the user will adapt his working style for better health on his own.
The only consistent way to switch between workspaces with one hand are Meta+WASD and Meta+1-4, and I don't think they're practical or needed.
I'd say we go with Meta+Ctrl+arrows for this one.
I did read all your blog posts analyzing other DEs in comparision to Plasma and I really appreciated them. But that was a view of the status quo and while it is absolutely important to be knowledgeable about that status quo/prior art I don't only want to look at that, but at where we want to head next. VDs have an interesting future in my opinion and I want to push their usefulness and ubiquity not only on the desktop but also on mobile and other devices. So how can VDs be interpreted on mobile/embedded devices, how in VR/AR? What new interaction patterns do we need here? On the other side Activities never really took over. On Wayland Activites are even still not supported because no dev feels they are important enough. So how can we push their perceived importance or should they be abandoned? How should Activites and VDs relate in the future?
These all seem to be rather big questions in comparison to simply setting a single default shortcut and I can understand that not everybody follows me on that. But to me these shortcut do not feel to go into the right - into a new - direction. They do not feel innovative at all. But that's where I want to move our discussion about VDs and Activites.
The fact that the proposed shortcuts are not innovative is precisely the point. Shortcuts do not need to be innovative. They need to be consistent, logical discoverable, and ergonomic. What's proposed in this patch is:
I don't have a dog in this fight: I don't use multiple virtual desktops and I don't care what the shortcut is personally, and I must admit that I do like the cleverness of the proposed Meta+WASD shortcuts, being familiar with that pattern from video games and having only a left Meta key on my keyboard.
However I believe the above analysis clearly points to a winner, and it's the shortcuts that this patch implements.
Just a remark: WASD is very keyboard layout dependent. For AZERTY keyboards (as used in France for instance) this is completely broken, and something any gamer has to always change manually (to ZQSD) if not already done automatically by the game (which may games do)
Arrows on the other hand are much less layout dependent.
Problem I see with Meta + WASD is that this doesn't take into account other keyboard layout (e.g my French keyboard layout).
Edit: I missed the comment from Hugo :/
@ognarb: this was just pointed out by @hpereiradacosta as well. But you both are right that this is a technical issue one has to take into account. But I don't think it is much more than that. Still it complicates using such "letter-patterns" of course.
Meta+Control+Arrows aren't my favorite either; my preference would be to go back in time and put a Meta key on the right side of all PC keyboards (like Mac keyboards have) so that Meta+Arrow shortcuts are all reachable with a single hand, but sometimes you need to deal with an imperfect reality and admit when something that's better than nothing is doable and the ideal thing isn't.
@romangg since you seem to like Meta+WASD a lot, I think you should re-bind whatever defaults get set to this yourself. That's why keyboard shortcuts are re-bindable, after all. The people we should care least about satisfying with the defaults are the people most opinionated and able to change them (e.g. ourselves).
Can we please move on with this shortcut then as it's the better default for most people?
I know it's the holiday season and we're all short on KDE time, but it rubs me the wrong way to revert a change pending further discussion only to then abandon the discussion. I feel that all the arguments against the Meta+Control+Arrow shortcuts have been refuted over and over again, and no alternative has been proposed that's considered superior.
I propose moving forward with this patch in its current form if no new arguments emerge by December 28th.
There are no arguments to be refuted. I made a strategic decision to not go forward with these direct shortcut copies from Windows. And instead encourage more thought being put into innovative concepts in the future.
I am sorry for the strain that puts onto OP but we have at the moment a tendency in KWin (and in my opinion overall Plasma) to go for the least exceptional solution and instead just aim for already elsewhere established, crowd-pleasing, convenient ones. While I support this attitude in most circumstances, especially for a software product being in a late phase of its life-cycle, we need to push the boundaries as well in few limited areas. I identified VDs/Activities as such an area.
A counter-argument to this: Meta+Ctrl is not a common standard in Windows as it is inconsistent, whereas in Plasma it could be more consistent. See: https://support.microsoft.com/en-us/help/12445/windows-keyboard-shortcuts
If we assume that the arrow keys being overloaded with meaning according to the modifier used is the least problematic solution possible, this would mean Meta+Ctrl can have proper/optimal/decent usage on Plasma which it cannot in Windows, despite the fact Windows had it first, and so it does not function as a mere copy. While individually the keyboard shortcut would be taken from Windows, the resulting set of navigation keyboard shortcuts in its entirety would not be a copy, it would be original.
That is: if the logic behind using Meta+Ctrl is
(we want a consistent set of navigation keyboard shortcuts) -> (we use Meta+Ctrl for moving between VDs) = (it is the better choice, hence we use it)
then it cannot be
(Windows 10 uses Meta+Ctrl for moving between VDs) -> (we use Meta+Ctrl for moving between VDs) = (we use it just because, and then we work around that)
Hence why my earlier proposal explicitly included the whole set for navigation (Meta, Meta+Alt, Meta+Ctrl, Meta+Shift) and why I recently made a table on T11520 for choosing the whole set based on Meta.
Independetly of the modifier keys Meta + or Alt + Ctrl + , why don't we assign both ASWD and the arrow keys ←↑↓→ to move between the VDs?
There's probably a global alternative for a reason and I don't see any other action to be assigned to one of those in the near future. That way both parties would be happy.
If a user requires one of those hotkeys for a different action, it can still be changed individually.
Personally I'd prefer Alt+Ctrl as the Meta+Ctrl keys are very close together and not very comfortable to press at once.
Roman, I greatly respect and admire your technical skills, but I can't condone the attitude you're taking here. You aren't the KWin maintainer. This is a community process, and you do not get veto power. You don't get to "make strategic decisions" when you aren't the maintainer--especially when nobody likes your decision. That's not being a leader, it's being a bully.
Nobody likes your Meta+WASD idea and you have not proposed any alternatives, yet you are blocking this change (with authority you seem to believe you have, but in fact do not have) out of hope that something better will organically appear with more discussion.
But that isn't likely to happen, because KWin is not the kind of open and friendly project where innovation is possible. The attitude you've taken in the discussion for this patch is an example of why KWin is seen as a conservative, change-averse, and user-hostile project. The my-way-or-the-highway attitude actively discourages innovation and creativity, and instead contributes to people dreading submitting KWin patches due to foreknowledge of what a grueling, exhausting experience it will be. Those with the courage to try at all will go for the (perceived) least controversial change to avoid conflict rather than proposing anything bold, sweeping, or innovative.
If you want more innovation in KWin, then help make KWin a more friendly and welcoming project by being open to other people's ideas and proposals, accepting when the majority disagrees with you, and acknowledging that you won't always get your way. KWin is a KDE project; it belongs to all of us. We can't lose sight of that.
If you don't like this change, then propose something better and gain people's support for it. If you can't do that, then maybe it's time to listen to other people and accept the imperfect but acceptable change in this patch. It's not my favorite solution either, but I think it's better than nothing, and nobody has come up with anything better so far. IMO it's better then waiting for a perfect alternative that isn't likely to materialize.
I don't know if it is the proper place to add feedback, but setting Ctrl+Meta+Arrows for switching virtual desktops is the first thing I do on a fresh Plasma installation, and I know many many people alike (from YouTube!!), but I never remember anyone to be against of that; Also I think that Ctrl+Meta (rather Alt) is the correct way to go, because it is a Plasma Shell global action; Using both GNOME and Windows 10, I'd say that even naturally my hand goes to Ctrl+Super, plus considering that people are using both Windows and Linux is a plus; anyway +1 to the original proposal
@romangg, in T11520, @thiagosueto has proposed exactly the kind of comprehensive overview of all shortcuts that you requested. And Meta+Ctrl+arrows is what's currently listed for moving between virtual desktops. Since I know you're interested in looking at the keyboard shortcuts throughout KWin and Plasma from a 10,000 foot view, maybe you'd like to look at the overall plan in T11520 and see if it makes sense to you?
No response in a week, so I assume the plan there must be acceptable. Time to land this so it makes it in time for Plasma 5.18.
I had already stated my opinion numerous times here in lengthy explanations and said that I don't want to continue this discussion. And my opinion has not changed. I am working on other stuff as well as you might know and don't have time for these immensely frustrating and pointless opinion battles just because KWin is a headless project with multi-stakeholders having all kinds of say into what it should maybe be or not be.
Some people might think that this is the right modus operandi for KWin development. I think it's not and I will decide in the next few weeks what I will do as a consequence of that.