Как получить окна, которые были перемещены за пределы экрана

50

У меня иногда возникает эта проблема с настройкой двух экранов, особенно когда я много жонглирую.

Иногда мне кажется, что я могу полностью переместить окно за пределы экрана (я не совсем уверен, как) и не могу его вернуть. Если я делаю «скрыть все» в меню приложения (обычно это Mail.app, поэтому давайте придерживаться этого в качестве примера), все исчезает, и Mail, кажется, думает, что у него есть окно «Входящие» в меню Windows, но там ничего не видно Закрытие и перезапуск приложения, похоже, не помогают (поскольку приложение помнит, где ранее находилось мое окно), и все, что я в итоге делаю, это выключаю Mac, отключаю второй монитор и перезапускаю его, снова открываю приложение, и это Кажется, убедить Mac переосмыслить положение главного окна, и все хорошо. Я могу перезапустить второй монитор и т. Д.

Есть ли способ лучше? Есть ли какой-нибудь способ вернуть окна обратно на определенный монитор или использовать утилиту для перемещения «открытых» / запущенных окон? Я действительно делаю что-то не так ? :-)

Кстати, я не использую пробелы - так что я уверен, что это не странная проблема с пробелами. :-)

robsoft
источник

Ответы:

44

Chealion ответил на это в SuperUser .

Я не буду копировать и вставлять его ответ здесь, поскольку он получил кредит не меня.

Но в основном то, что вы могли бы сделать, это (цитируется ответом Чилиона):

Второй способ упорядочить Windows, чтобы вы могли видеть их (если по какой-то причине они остаются за кадром), - перейти в приложение, которое владеет рассматриваемым окном, удерживая нажатой клавишу «Option» и выбрать «Arrange in Front» из Окно меню. Затем все окна этого приложения будут расположены каскадом в верхнем левом углу экрана.

Studer
источник
О, великолепно - спасибо! Я проголосовал за его ответ и дал вам некоторую оценку за то, что указал мне на правильное место. Там есть несколько хороших предложений, и я почти не могу дождаться, когда проблема возникнет снова. :-)
robsoft
3
Это решение не работает в Yosemite, вы можете получить доступ к меню «Окно» только с дисплея, на котором включено окно в Yosemite.
ShemSeger
5
Пункт меню не отображается для XQuartz
Mead
1
Apple, кажется, удалил эту функцию с MacOS 10.13.5. Это почти так же, как возможность получать окна, которые были перемещены за пределы экрана, считается ошибкой, а не фактом, что они могут быть перемещены за пределы экрана.
Сбросить счет
Нет такого пункта меню в macOS Catalina
clearlight
15

Для полноты:

Исходя из моего ответа на вопрос о неисправности сервера 7237 :

Когда монитор отключен (включая адаптер, если это применимо - если оставить адаптер, OS X думает, что монитор все еще подключен), все окна должны переместиться на главный экран. Иногда некоторые окна (например, Firefox) сохраняют свое положение в самом дальнем правом углу экрана, оставляя достаточно места, чтобы захватить строку заголовка и переместить ее туда, куда вы хотите.

Один из способов перед тем, как отключить внешний монитор (или перед тем, как отключить ключ), - это открыть панель «Настройки отображения» в «Системных настройках» и нажать кнопку «Собрать Windows». Предполагается, что каждое окно будет отображаться на главном экране, и эта опция не появится, если у вас не подключен второй монитор.

Второй способ упорядочить Windows, чтобы вы могли видеть их (если по какой-то причине они остаются за кадром), - перейти в приложение, которое владеет рассматриваемым окном, удерживая нажатой клавишу «Option» и выбрать «Arrange in Front» из Окно меню. Затем все окна этого приложения будут расположены каскадом в верхнем левом углу экрана.

Наконец, есть несколько доступных сценариев AppleScripts (например, этот на Snipplr ), которые также будут захватывать каждое окно за пределами экрана и перемещать его на экране для вас.

Существует также отличное условно-бесплатное приложение под названием Stay , которое поможет вам автоматизировать многое из этого, в то время как есть MarcoPolo, который сделает гораздо больше, чем просто замечает, что монитор отключен, и позволяет запускать сценарии (на случай, если вы захотите сделать больше, чем просто переставить окна).

Chealion
источник
11

Я подумал, что должен дать ответ на этот вопрос, который описывает решения специально для XQuartz. Многие из решений здесь не работают для XQuartz. Из этого билета: https://xquartz.macosforge.org/trac/ticket/796 , я нашел два решения, которые работают, и я считаю, что было бы полезно изложить их здесь.

  1. Если вы можете легко отключить / подключить монитор, отключите его от монитора, чтобы ваше окно появилось в месте, к которому вы можете получить доступ. Затем, с помощью мыши, нажмите на окно и удерживайте кнопку мыши, как будто вы собираетесь ее перетащить. Не отпуская мышку или окно, подключите монитор. Окно XQuartz должно оставаться там, где находится ваша мышь.

  2. Этот пакет ShiftIt очень хорошо работает для получения окон, которые исчезли за пределами экрана: https://github.com/fikovnik/ShiftIt/downloads. Могут быть и другие подобные пакеты, но этот является чистым и эффективным.

Надеюсь, это поможет кому-то!

nukeguy
источник
Shiftlt работает почти с XQuartz. Это фактически перецентрирует главное окно (например) Inkscape, но не вторичное окно (диалог свойств). Хороший инструмент, чтобы знать, однако. +1
lauhub
6

У меня два экрана и загрузка Inkscape обычно ставит его куда-то недоступно. Я могу увидеть это с помощью «показать все окна», но если я выберу его оттуда, он снова исчезает. Решение, которое я нашел, пришло из этого комментария списка рассылки .

При отключении второго экрана я вижу Inkscape. Но даже после небольшого перемещения, если я подключаю другой экран обратно, он снова исчезает с края. Решение:

  1. Отключите второй экран
  2. Используйте мышь, чтобы ухватиться за строку заголовка окна (нажмите и удерживайте)
  3. Удерживая заголовок, снова подключите монитор
tremby
источник
Я добавлю, что при выполнении этой задачи я получаю много взглядов от других сотрудников офиса.
Тремби
4

Я нашел действительно легкое решение для этого.

Это случилось со мной в Powerpoint. Я пошел в меню Powerpoint в верхней части экрана. Нажмите «Окно», а затем - «Увеличить окно». Готово

DBranx
источник
Это единственный ответ, который работал для 10.11.5 (кодовое имя El Capitan).
pzulw
Альтернативно, Window> Zoom просто работал для меня (Zoom in Window не было опцией).
Томас МакКейб
3

Что-то, что я попробовал, и это сработало для меня, переключает разрешение на более низкое и затем возвращает его обратно. И это просто волшебным образом помещает приложение в центр. Приветствия.

Искусство
источник
3

Я нашел это приложение: WindowWrangler

Это позволяет использовать сочетания клавиш для перемещения окна.

К сожалению, он не работает для единственного нужного мне окна: Inkscape в среде XQuartz.

lauhub
источник
2
Вы нашли какое-нибудь решение для xquartz?
gebirgsbärbel
Решение, которое я нашел, состояло в том, чтобы подключить внешний монитор: в этом случае окно изменилось так, как я мог его переместить. Я перемещаю его так, чтобы после отключения экрана верхняя панель окна была «доступна».
Lauhub
@ gebirgsbärbel Смотрите ответ, который я только что опубликовал ниже. Я думаю, что вы можете найти это полезным.
nukeguy
@ gebirgsbärbel См. [новый ответ] ( apple.stackexchange.com/a/238975/31154 ), который я опубликовал ниже, с помощью xdotoolутилиты, которая, наконец, решила все мои проблемы
lauhub
3

Для конкретной проблемы X11 / XQuartz вот решение, которое я нашел.

Предпосылка

Во-первых, вам понадобится xdotool . Можно установить его используяbrew install xdotool

Основы

Вы можете переместить окно влево, используя следующий скрипт:

xdotool getactivewindow windowmove --relative -- -100 -44

-44 - это значение, которое я считаю суммой высоты строки заголовка и высоты строки меню. Если не установить здесь, окно будет опускаться вместо сохранения позиции y.

Для правильного движения:

xdotool getactivewindow windowmove --relative -- 100 -44

Чтобы двигаться вверх:

xdotool getactivewindow windowmove --relative -- x -100

Чтобы двигаться вниз:

xdotool getactivewindow windowmove --relative -- x 100

Итак, теперь вы можете переместить выбранное в данный момент окно (к которому вы можете получить доступ, используя Expose, нажав на него, если оно находится за пределами экрана).

Выставить вид

Затем вы можете открыть терминал и повторять команды, пока не появится окно.

Доступ к нему через ярлык

Чтобы заставить ваше окно двигаться с помощью сочетания клавиш, вы можете использовать объяснение, приведенное здесь

Я на самом деле добавил эти ярлыки, используя BetterTouchTool.

  1. BetterTouchPreferences> Клавиатура
  2. Добавить новый ярлык
  3. Выберите текстовое поле сочетания клавиш и нажмите (например) shift+ ^+ cmd+
  4. Выберите « Предопределенное действие триггера» : « Управление другими приложениями»> «Выполнить команду терминала».
  5. Введите команду для (например) правого перемещения с полным путем к xdotool (вы можете получить ее с помощью which xdotoolкоманды)

    /usr/local/bin/xdotool getactivewindow windowmove --relative -- 100 -44

  6. Нажмите кнопку Сохранить.

Повторите то же самое для других направлений и наслаждайтесь!

lauhub
источник
У Финка нет xdotool
Мей
2

Кроме того, для полноты картины я натолкнулся на следующее: « Оставайтесь приложением для Mac, хотя я еще не пробовал и не купил его».

С их сайта:

Stay может хранить набор окон для каждой комбинации дисплеев, которые вы используете на своем компьютере. Например, если у вас есть ноутбук, который иногда подключен к внешнему монитору, вы можете хранить два набора окон в программе Stay; один с подключенным внешним монитором и один без. Сделав это, вы сможете убедиться, что ваши окна всегда находятся там, где вы хотите их видеть, оставаясь с окнами восстановления, когда вы подключаете или отключаете внешний монитор. Пребывание может даже быть настроено на автоматическое восстановление окон, когда дисплеи подключены и отключены.

robsoft
источник
2

У меня есть решение, которое сработало для меня, и я пробирался по форумам и перепробовал все, что мог.

В конце концов я нашел способ. Установите приложение под названием BetterTouchTool. Это позволяет вам создавать ярлыки для выполнения различных полезных действий на экране и т. Д. Затем установите ярлык для конкретного приложения (намного проще, чем кажется) и сделайте его простым. Я установил его так, чтобы «смахивание двумя пальцами» приводило к действию «Развернуть окно». Это прикрепило отсутствующее приложение к экрану моего ноутбука и от экрана фантомного монитора, на котором оно было прикреплено.

Задача решена.

Вот изображение того, как выглядел BetterTouchTool, когда я установил ярлык:

Ярлык BetterTouchTool

сельдь
источник
Я также исправляю проблему, используя BetterTouchTool.
Эудженио
2

У меня была такая же проблема в Mavericks, мне удалось решить эту проблему, выполнив следующие действия:

  1. Наведите указатель на край окна, которое переместилось за пределы экрана, например, на край справа.
  2. Когда вы увидите значок изменения размера (в моем случае значок горизонтального изменения размера), нажмите и удерживайте.
  3. Удерживая нажатой кнопку мыши, перетащите окно. Вуаля!
Адольфо Абегг
источник
Это работает только в том случае, если окно находится напротив края другого окна
Mei
2

Мой друг написал бесплатный инструмент для возврата окон, если вы хотите проверить это, перейдите сюда: http://bring-em-back.com

Габиз Ра
источник
2

В Эль-Капитане простые ответы здесь не работали для меня или не были доступны в качестве вариантов. То, что работало, состояло в том, чтобы щелкнуть правой кнопкой мыши приложение в Dock (в моем случае Chrome) и выбрать «Параметры»> «Присвоить рабочему столу на дисплее» 1. При этом все окна были перенесены на мой текущий рабочий стол.

ggutenberg
источник
1

Кажется, это чаще всего случается со мной, когда дополнительный дисплей находится «над» (в Системных настройках -> Дисплей -> Расположение). Когда возникает проблема, если я перемещаю внешний дисплей «вправо», то снова появляются окна X11.

Т Мартин
источник
1

В Йосемити, если бы работал на меня

  1. открыть Системные настройки
  2. открыть дисплей <разрешение
  3. выберите «Масштаб»
  4. временно изменить настройку на что-либо другое

Для меня этого было достаточно, чтобы заставить приложение вернуться на экран.

plfrick
источник
1

Немного странно, что окно (Терминал в моем случае) потеряно в расположении. Я попытался увеличить масштаб, вывести все на передний план, но ничего не получалось.

Наконец, Window → Merge All Windows сделали свое дело.

Сиддик Коона
источник
0

Вы можете создать простое приложение для этого в редакторе AppleScript. Введите следующий текст и сохраните его как приложение. Если вы поместите его в папку «Приложения», к нему будет легко получить доступ через SpotLight. Я назвал мои окна сбора.

property processesToIgnore : {}
tell application "Finder"
    set _b to bounds of window of desktop
    set screen_width to item 3 of _b
    set screen_height to item 4 of _b
end tell
tell application "System Events"
    set allProcesses to application processes
    set _results to ""
    repeat with i from 1 to count allProcesses
        set doIt to 1
        repeat with z from 1 to count processesToIgnore
            if process i = process (item z of processesToIgnore) then
                set doIt to 0
            end if
        end repeat
        if doIt = 1 then
            tell process i
                repeat with x from 1 to (count windows)
                    set winPos to position of window x
                    set _x to item 1 of winPos
                    set _y to item 2 of winPos
                    if (_x < 0 or _y < 0 or _x > screen_width or _y > screen_height) then
                        set position of window x to {0, 22}
                    end if
                end repeat
            end tell
        end if
    end repeat
end tell
jeremyjjbrown
источник
1
Для полноты картины вам нужно объяснить, как обойти «Редактору сценариев запрещен вспомогательный доступ» (Yosemite)
jcollum
0

Другое решение для XQuartz:

brew install wmctrl
wmctrl -i -r $(wmctrl -G -l | grep -i inkscape | cut -d' ' -f1 ) -e 0,0,0,100,100

Замените «inkscape» тем, что вы хотите.

Яфарт Агарвал
источник
0

Вот простой ответ, который занимает 15 секунд и является постоянным решением.

https://groups.google.com/forum/#!topic/eggbotuser/48RbZ2Pey5A

Эта проблема появляется, если у вас есть несколько дисплеев. Документ открыт, его просто слева, за пределами экрана всех дисплеев. Вы не можете исправить это с помощью Applescript: XQuartz не реализует стандартные глаголы сценариев для получения и установки положения окон. Он также не реализует стандартные эквиваленты оконного менеджера X11.

Причиной проблемы является конфликт между настройкой предпочтений в Inkscape и настройкой предпочтений в Mavericks.

Стандартная настройка для Mavericks в Системных настройках> Управление полетом - [x] Дисплеи имеют отдельные пробелы

Стандартная настройка Inkscape в строке меню «Файл»> «Настройки Inkscape»> «Windows» (•) позволяет сохранять и восстанавливать геометрию окна для каждого документа.

Если вы измените настройку OS X (требует выхода из системы и повторного входа в систему) или измените настройку Inkscape на (•) Не сохранять геометрию окна (что вы не можете сделать, если вы не можете заставить Inkscape показать вам окно) Inkscape работает как положено.

Итак, если вы хотите, чтобы Mavericks работал с несколькими дисплеями на вашем Mac, временно вернитесь к старому способу, измените предпочтения Inkscape, а затем верните Mavericks обратно в строку меню на каждом экране.

Джеффри Хаятт
источник
0

Под пунктом меню приложения «Окно» выберите «Упорядочить все». Это работает для Microsoft PowerPoint для Mac, это может не работать для всех.

user220250
источник
0

У меня похожая проблема на моем Mac при открытии MS Powerpoint, так как она не отображается на экране. Самый простой способ - перейти в строку меню Powerpoint в верхней части экрана Mac и нажать «Окно», затем под этим «Arrange All». Отсутствующие / скрытые окна PowerPoint покажут

Мисс Г Дакума
источник
0

Самое простое решение этой проблемы, которое я нашел, - щелкнуть правой кнопкой мыши соответствующий значок на панели задач и выбрать «Скрыть». Затем вы можете сделать то же самое и выбрать «Показать», а затем пропавшее окно появится снова.

Baylaw
источник