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

Move full screen app ("space") to another monitor? #16

Closed
borekb opened this issue Oct 2, 2019 · 3 comments
Closed

Move full screen app ("space") to another monitor? #16

borekb opened this issue Oct 2, 2019 · 3 comments
Labels
wontdo This will not be worked on

Comments

@borekb
Copy link

borekb commented Oct 2, 2019

Spectacle works with normal windows, not with apps in full-screen mode ("Spaces" in Mission Control's terminology I believe). Rectangle is the same but I was wondering whether it would be possible to use the same "Next Display" / "Previous Display" command for full-screen apps as well?

@rxhanson rxhanson added the wontdo This will not be worked on label Oct 2, 2019
@rxhanson
Copy link
Owner

rxhanson commented Oct 2, 2019

In short, that may be possible but not in a way that would be elegant enough that I would want to include it in Rectangle.

Apple never released a public API for Spaces, so any direct interaction with Spaces uses private APIs that are actually a bit shaky. There were a lot of Spectacle users that wanted the ability to just move any window (not fullscreen) to another Space in Spectacle, and while that capability looks like it's in other apps like SizeUp and Amethyst, it's just fragile enough that I don't have a desire to touch it. Additionally, using the private API adds enough complexity to the app to where I feel it's better off without it.

So, let's take a look at doing this without the private API. A way to move fullscreen to another display would be to un-fullscreen the window (by programmatically executing ctrl-cmd-F), then perform the move, then re-fullscreen the window. That would most likely require some delays built in to allow each of those actions to take place, and I would imagine it would feel pretty choppy to a user.

Thanks for posting the idea, but since I have no plans to implement it I'm going to close it out. If anyone has a more elegant solution or pull request for the idea, I would definitely be inclined to revisit.

@rxhanson rxhanson closed this as completed Oct 2, 2019
@borekb
Copy link
Author

borekb commented Oct 2, 2019

Thanks for the explanation. I'd just like to point out that in my case, I don't want to move any window to any space, "just" to move a full-screen app to another monitor. But maybe it doesn't make it any less fragile, I don't know.

(The reason why I'm asking for this is that I run some apps in both full-screen and "just maximized" modes interchangeably, and often don't immediately realize which window is in which mode. So I press my shortcut for "Next Display" and it doesn't work, which annoys me a bit 😄.)

@rxhanson
Copy link
Owner

rxhanson commented Oct 2, 2019

Right - I understand the annoyance there.

I failed to mention that the fullscreen app essentially would be behaving as a Space, and that would still require interaction with the private Spaces API in order to smoothly do this, and it seems like it would actually be more complicated than the non-fullscreen scenario.

As an example, say you have a full screen window (space) on display 1. To move this to display 2, it's effectively removing the space from display 1 and creating a new fullscreen space on display 2 from this removed space. I don't think the API contains a call to just "move this space to another display".

If anyone wants to implement something that does this - even if it's not related to Rectangle, I'd be happy to point them to the resources I looked at to determine this.

Maybe someday Apple will expose a public API for spaces, which would be awesome and make them a ton more useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontdo This will not be worked on
Projects
None yet
Development

No branches or pull requests

2 participants