I have this issue where Inkscape does not appear when my MacBook Pro is plugged to an external screen. I tried several windows management tools (like Spectable, or Stay) but these did not work for the XQuartz app.
It seems like the issue is that when I plug the external screen, it messes with the coordinate system of my Mac's screen, effectively shifting the origin of my screen by the resolution of the external screen.
In other words, from the point of view of XQuartz the origin of my Mac's screen changes from 0,0 to 2560,1440 (which is the resolution of my external screen).
This means that if Inkscape is somewhere near origin (0,0) but still associated with my Mac's main screen then it doesn't appear on the external screen nor in my main screen. It is basically in "limbo" between the 2 screens.
The solution is to move the Inkscape window to a new coordinate that takes into account the size of the external screen, and this is where
wmctrl comes in useful:
brew install wmctrl wmctrl -r Inkscape -e 0,2560,1440,1200,700
Of course you need to replace
2560,1440 with your own external screen's resolution and
1200,700 to suit your main screen resolution.
In order to make it more convenient I created 2 alias, to fix the coordinates for my Mac screen and for the external screen, respectively:
alias fixInkscape='wmctrl -r Inkscape -e 0,2560,1440,1200,700' alias fixInkscapeExt='wmctrl -r Inkscape -e 0,0,0,2560,1300'
Remember that each alias only works for the screen that Inkscape is associated with, you still need to drag-and-drop the window in order to switch screens.
wmctrl won't do it automatically, but it certainly helps in "fishing" it from limbo.
This worked for me when working with Inkscape:
- Close XQuartz (and Inkscape)
- Change the Mission Control Preferences (unselect Display have separate spaces)
- Log out
- Start Inkscape
- Change the Windows Inkscape preferences (Edit/ Preferences) to "Don't save Windows Geometry"
- Close Inkscape end XQuartz
- Reset the Mission Control Preferences (if you like)
- Log out and back in.
All the credits to:
I have two monitors and OSX Sierra and Inkscape 0.92.2.
There is a far simpler way.
Go to the System Preferences Display panel. Then untick 'Mirror Displays'. You should see the XQuartz window(s). Move them around a bit.
Then tab back to the System Preferences window - the Arrangement may be behind a monitor dialog, but you should be able to move the monitor dialogs out of the way and then un-enable 'Mirror Displays'.
Or if you tick the 'Show Mirroring options in the toolbar' option then you can reach the Display dialog from the toolbar.
If you really wanted to take your time for other occasions - you could set up a keyboard shortcut to toggle the 'Mirror Displays' on and off.
I have had this issue for a few years. In my case the problem arises when I use two external displays arranged one on the left of the other. If the menu bar is on the rightmost display (System Preferences/Displays/Arrangement -> menu bar is a white stripe on one of the displays, can be moved between them) then InkScape windows get lost (to see its location you can use Mission Control with keys Ctrl/Up-Arrow, it can be seen that a dialog or windows is far left on one of the displays).
Solution: move the menu bar to the leftmost display.
As mentioned by others, this issue may be caused by a totally different coordinate system of X11. When using XQuartz, I tried the following:
Open Mac System Preferences>Displays, click on Arrangement Tap. Relocate the external screen to the right of the main screen.
Problem solved! Change the settings back when you are done with XQuartz.
I met this problem before and it's very annoying. Finally, I realized that because the size and resolution of additional monitor are different from my Mac's. Those resulted in a 'non-existing' space between monitors. Sometimes windows would locate in that space and could not be moved. Luckily, I found we can remove the 'non-existing' space by changing settings on Mac. " System Preferences->Mission Control and uncheckDisplays have separate spaces." Then re-login MAC, the problem should be gone.