Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: Add support for Easy Window Drag #34

Open
da-rth opened this issue Sep 14, 2021 · 3 comments
Open

Feature request: Add support for Easy Window Drag #34

da-rth opened this issue Sep 14, 2021 · 3 comments
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@da-rth
Copy link

da-rth commented Sep 14, 2021

I found this AutoHotKey script which allows you to move and resize windows by holding down the Alt key + dragging the left/right mouse button, similar to that of the window moving/resizing functionality of bspwm.

The script works as expected, but it appears that komorebi does not detect the window resize events that are emitted when resizing windows via Alt+Drag. Would this type of Alt+Drag window moving/resizing functionality be possible with komorebi?

@LGUG2Z
Copy link
Owner

LGUG2Z commented Sep 14, 2021

I've had a look at the script but I'm still not quite able to visualize the behaviour that you have in mind and how it is different to the current current drag-edge-to-resize and move-to-swap functionality that komorebi has:

jw43pCSELI

Can you share a gif of the desired behaviour and one showing what happens instead when the script is run alongside komorebi?

@da-rth
Copy link
Author

da-rth commented Sep 15, 2021

@LGUG2Z I've attached a screenshot to further highlight the type of behaviour I have described above from a laptop I have running SwayWM:

15092021-154750

I currently don't have access to my Windows machine but will upload a recording as soon as I can.

Some differences between the recording you have provided and the one I have posted above are:

  1. In order to move windows around, you are selecting and dragging the window title bar. With the script, you can simply hold Alt+LMB anywhere above a window to move it around.

  2. In order to resize windows, you are going to the edge of a window and selecting/dragging the resize cursor. Whereas, this script allows you to resize the window by simply holding Alt+RMB anywhere above the window and dragging the mouse left, right, up or down to resize the window.

i3, sway, bspwm and several other window managers have this kind of window dragging/resizing functionality, it would be fantastic to have it in komorebi!

@LGUG2Z LGUG2Z added enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed labels Sep 15, 2021
@LGUG2Z
Copy link
Owner

LGUG2Z commented Sep 17, 2021

This would be pretty cool to have. This is quite a big feature and I don't think I will have the time to dedicate to it in the coming weeks/months.

The event emitted by the AHK script is this one, which is not currently mapped to a WindowManagerEvent: https://github.com/LGUG2Z/komorebi/blob/master/komorebi/src/winevent.rs#L125

I tried mapping it to MoveResizeEnd (https://github.com/LGUG2Z/komorebi/blob/master/komorebi/src/window_manager_event.rs#L113) to get the AHK script working, and while it does, kinda, it forces too many redraws which makes the system crawl to a halt.

This feature would definitely be better built into komorebi than triggered via an AHK script.

For anyone who would like to try working on this, I would suggest something like this as a starting point:

  • A komorebic command each for toggling easy resizing and easy moving mode, which could be bound to key presses up and down, which map to an enum which stores start and end cursor position in the WindowManager state
enum EasyResize {
    Disabled,
    Started(POINT),
    Finished(POINT),
}
  • When toggled off, the diff between the start and end points can be calculated to create a resize offset (or the window to swap with for EasyMove), and then applied to the window before triggering a workspace layout update

@LGUG2Z LGUG2Z pinned this issue Sep 17, 2021
@da-rth da-rth changed the title Add support for Easy Window Drag Feature request: Add support for Easy Window Drag Oct 29, 2021
@LGUG2Z LGUG2Z unpinned this issue Aug 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants