Bug 305758

Summary: Mouse action support for sending window to different activity
Product: [Plasma] kwin Reporter: Martin Flöser <mgraesslin>
Component: activitiesAssignee: Rick Stockton <rickstockton>
Status: RESOLVED INTENTIONAL    
Severity: wishlist CC: kde, rickstockton
Priority: NOR Keywords: junior-jobs
Version: 4.9.0   
Target Milestone: 4.11   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Martin Flöser 2012-08-25 11:45:45 UTC
Two new actions for (mostly) mouse wheel could be implemented:
1. Move Window to next activity
2. Move Window to previous activity

Accordingly keyboard actions could be implemented when the feature is available.
Comment 1 Rick Stockton 2013-01-03 00:37:04 UTC
Martin, should we just use the same old "WheelUp/WheelDown" for this, or maybe consider implementing Tilt support in KWin's KCM and events at the same time?

Or do both features, separate updates and bugs (this seems best to me).
Comment 2 Martin Flöser 2013-01-03 08:29:10 UTC
I have no idea what tilt support is, but what I wanted is just another value 
with the correct slot in useractions.cpp
Comment 3 Rick Stockton 2013-01-03 18:26:41 UTC
Martin, thanks for pointing me in the right direction!

Tilt-wheel support shall be a different Wishlist bug: Tilt-Wheel (X11 buttons #6 and #7, AKA "ScrollLeft" and "ScrollRight"), and support for BackButton and ForwardButton (X11 Buttons 8 and 9), is already available in Qt4.

But- it should be added in a manner which can easily extend to at least 16 buttons, plus the four directions of wheel scroll. The X11 "mouse" driver can support up to 31 buttons, and Qt5 defines them all -- but "mouse" is legacy, and the kernel evdev module seems capable of only 16 + 4. (Remember- wheel events are separated from the X11 "emulate as buttons" scheme in XCB, Wayland, and etc.).

I will work on this one first, of course. I have a LOT to learn about coding, and KDE design in general.
Comment 4 Martin Flöser 2013-05-21 07:18:37 UTC
I just tried to implement this feature and realized that mouse wheeling windows to another activity is semantically wrong. Therefore: WONTFIX.
Comment 5 Björn Balazs 2013-05-25 14:40:13 UTC
(In reply to comment #4)
> I just tried to implement this feature and realized that mouse wheeling
> windows to another activity is semantically wrong. Therefore: WONTFIX.

Martin, could you please explain, how this feature is wrong? I still think for people using activities and no vitrual desktops it would be quite a killer-feature... Thanks!
Comment 6 Martin Flöser 2013-05-25 16:20:05 UTC
On Saturday 25 May 2013 14:40:13 you wrote:
> > I just tried to implement this feature and realized that mouse wheeling
> > windows to another activity is semantically wrong. Therefore: WONTFIX.
> 
> Martin, could you please explain, how this feature is wrong? I still think
> for people using activities and no vitrual desktops it would be quite a
> killer-feature... Thanks!
Virtual Desktops are a next/previous thing and a window is exactly on one 
virtual desktop. Activities are considered that a window can be on more than 
one. And here comes the problem: what's the next activity if a window is on 
e.g. all activities or on more than one activity?
Comment 7 Rick Stockton 2013-05-25 21:44:14 UTC
Bjorn, can you explain to me (please) why a person would choose to run multiple Activites concurrently? Desktops I understand, and use as follows:

email is initially assigned to desktop 1
FF is initially assigned to desktop 2
Konversation is always on dekstop 6
Dolphin instances are initially assigned to Desktop 7 ... and so on.

But multiple Activities, on a Desktop device, I actually DON'T understand.
Comment 8 Björn Balazs 2013-05-28 13:23:37 UTC
(In reply to comment #7)
> Bjorn, can you explain to me (please) why a person would choose to run
> multiple Activites concurrently? Desktops I understand, and use as follows:
> 
> email is initially assigned to desktop 1
> FF is initially assigned to desktop 2
> Konversation is always on dekstop 6
> Dolphin instances are initially assigned to Desktop 7 ... and so on.
> 
> But multiple Activities, on a Desktop device, I actually DON'T understand.

That's easy: An activity saves a working environment, e.g. files, folders, webpages etc. you need for doing one task. When you interrupt this activity, you can simply start it at exactly the same point again later on. Additionally, you can do changes to e.g. powersettings. So one of my favourite activities is the media activity, which does not turn of my screen so fast.

But to be honest: you still have to be quite enthusiastic to use activities, as there is noone actually polishing them. I still hope for work coming back from plasma active to the desktop though :)
Comment 9 Björn Balazs 2013-05-28 13:32:06 UTC
(In reply to comment #6)

> Virtual Desktops are a next/previous thing and a window is exactly on one 
> virtual desktop. Activities are considered that a window can be on more than 
> one. And here comes the problem: what's the next activity if a window is on 
> e.g. all activities or on more than one activity?

Thanks, Martin! I actually think that it is a very rare case that the same window is used on different activities (currently it is possible though, I agree). So to solve the problems you mention, i could think of:

- When a window is on all activities, simply switch activities, when this action is done.
- When a window is on some activities, do not duplicate it, when it gets sent to a window where it already is, but if it gets (directly) sent to the next activity, simply leave the existing one where it is. To explain:

We have 4 activities: A, B, C, D
We have the same window on activity A and C

Now we move Window from A once - now the window is on B and C. We move it again once - now it is only on C. We move it again - now it is only on D.

Different situation: Window is on B and C and we move it reasonably fast twice. Now it is on C and D.

Perhaps we could discuss this in the Usability group as well - there might even be some better ideas?!?

I would still ove to see this - as far as I consider it - major improvement to activities!
Comment 10 Martin Flöser 2013-05-28 13:50:28 UTC
> Now we move Window from A once - now the window is on B and C. We move it
> again once - now it is only on C. We move it again - now it is only on D.
The problem is that if it moved once the window is gone. One would have to 
switch the activity then to move again. That's why it just doesn't fit to mouse 
wheel on window decoration.
Comment 11 Björn Balazs 2013-05-28 14:30:00 UTC
(In reply to comment #10)
> > Now we move Window from A once - now the window is on B and C. We move it
> > again once - now it is only on C. We move it again - now it is only on D.
> The problem is that if it moved once the window is gone. One would have to 
> switch the activity then to move again. That's why it just doesn't fit to
> mouse 
> wheel on window decoration.

Ah, ok. How about moving the window to next activity with mouse wheel and moving a copy of it, when using e.g. shift-mouse-wheel?
Comment 12 Martin Flöser 2013-05-28 17:29:19 UTC
> Ah, ok. How about moving the window to next activity with mouse wheel and
> moving a copy of it, when using e.g. shift-mouse-wheel?
We don't have "copies" of windows and we don't support modifiers for window 
decoration mouse actions. While it would be possible to add support for 
modifiers it would be rather complex. Thinking about it impossible in the KDE 
4.x timeline.
Comment 13 Rick Stockton 2013-05-28 19:20:02 UTC
I'm unsure about "clone" versus "move", and imagine that the feature needs both. Adding yet another "mouse shortcut" signature.) And I'm unsure about Application-level conflicts: Ctrl+Wheel Up/Wheel Down is widely used for zoom-in, zoom-out; is there perhaps a similar "UI Guideline" which already consumes Shift+ Wheel?

I agree with Martin's opinion regarding use of a Modifier Key within Kwin, it would be unique.

My own preference is to implement "Button + Modifier Key Support" together, with "held+clicked" and "held+double-clicked" mouse "Shortcuts and Actions" (footnote 1) at the same time. (And BTW, multiple "held buttons" would be possible.) I feel that this would be appropriate for a later (not first-out) Version of KF5-based Plasma and KWin. The entire UI of such "Mouse Shortcuts" settings module(s) would need  careful design, such that Applications (and not just KWin+Activites) can define them, re-define them, Signal such re-definitions, search for conflicts, ... and etc.

The biggest difference between modifiers alone and multiple held buttons (with or without modifiers) is a18n: a one handed person cannot handle keyboard AND mouse at the same time.
- - - - -
(1) "Shortcuts and Actions", of course, do not correspond to Qt Shortcuts and Actions - The Qt classes take only keyboard events (i.e., occurences of QKeySequence match). KWin currently inspects for a few mouse events explicitly - but a KF5-based design should provide for sharing among 'Application Level' mouse shortcuts as well.
Comment 14 Björn Balazs 2013-06-04 08:08:20 UTC
Thanks for clarification. Perhaps we can have a little chat about this issue during Akademy. I would really like to see activities become more usable and this whole issue is one important part of it - so finding a reasonable solution would be of great value.