ianyh / Amethyst

Automatic tiling window manager for macOS à la xmonad.
https://ianyh.com/amethyst/
MIT License
14.74k stars 487 forks source link

MacOS Ventura: Per-"stage" layouts with "Stage manager" #1258

Open lougreenwood opened 2 years ago

lougreenwood commented 2 years ago

Is your feature request related to a problem? Please describe.

MacOS Ventura introduces stage manager, at a glance it seems to work with Amethyst, however it would be much more powerful if the tiling layout was per "stage" (group of apps), so I could group together apps related to email on one "stage" and development on another.

Switching between these app groups would restore the tiled layout of those apps specific to the group

tim-hm commented 1 year ago

Because tiling applies to all windows in the space window area is calculated assuming all windows are displayed. However, when stage manager presents a stage/subset of those windows the tiling applied doesn't make sense.

Perhaps there is no intention of support stages and if so then maybe the documentation can be updated? Otherwise, I think @lougreenwood's suggestion above would make for a wonderful UX.

ianyh commented 1 year ago

There's intention, I just haven't really had time. Someone is welcome to make the contribution in the meantime.

tim-hm commented 1 year ago

Sorry wasn't trying to be inconsiderate and I totally appreciate how valuable your time is! Fantastic to hear that its planned 🙏

Muzosh commented 1 year ago

When this goes to development, I personally would prefer to just "apply tiling just on displayed windows" (i.e. those that are in currently open 'stage') as I think it might be more simple and faster, but much needed change. Currently I view it as a bug and this would fix this bug.

Let's assume I have 3 windows open with "Tall" layout. If I group two windows together in one stage and switch to the other stage, the third window with its own stage automatically takes 25% in right-bottom screen. I would assume, that if it's displayed alone (since other two are hidden in another stage), it would be displayed in fullscreen (the same way the "Tall" behaves when you have only one window opened).

Afterwards, some time later with no rush, a per-stage tilling management might be welcomed. I assume there might be some added layer of saved configuration, thus complicating development. Currently, I guess there needs to be information stored about which tiling layout is applied to which space. With this, we would need another layer of information about which tiling layout is applied to each stage on each space. I consider this as just a new feature, not a bug.

Currently, the OP's use case can be done with two spaces so I would prefer the development of this feature to go that "fast and simple" way first.

so I could group together apps related to email on one "stage" and development on another.

Muzosh commented 1 year ago

One thing I noticed: when the stage manager is on, the application/window can be "staged" by minimizing it (cmd+M, clicking on the yellow button, using the menu->Window->Minimize), suggesting that windows in currently NOT active stages are treated as minimized.

Maybe there can be some simple check to include tiling on a window, that is not currently minimized?

EDIT: I have tried to do a very brief research, this simple check might do the job? I will test it later. PR

ketozhang commented 1 year ago

For some reason I felt at ease with stage manager not needing global tiling of windows anymore. Having Amethyst more integrated with stage manager would definitely get me back to using it.

Mdbook commented 11 months ago

Would love for this to be implemented, are there any plans for it?

Muzosh commented 11 months ago

Unfortunately, my draft got stuck. I'm not a macOS developer and I had work stuff to do at that time. Figuring this out might require a knowledge of Amethyst architecture and Apple Developer API. Yabai is stuck as well is seems.

I welcomed anyone to take over.

al3xandru commented 7 months ago

I regularly try Stage Manager depending on different setups. As I'm used to having Amethyst take care of window positioning, every time I active Stage Manager I'm surprised, negatively.

I don't know if the macOS API offers enough information for Amethyst to work with StageManager. If possible, applying the layout to the windows in a given stage would be fantastic. So 💯