Перераспределение окон между мониторами после выхода из спящего режима

    У вас 2-3 монитора, на одном браузер и редактор кода, на втором мануал, на третьем почта, вы рассортировали окна как нужно. Далее пошли налить чашечку кофе, монитор выключился, вы пришли, подергали мышкой и вдруг все окна оказались на одном главном мониторе, всё в кучу, вы снова раскидываете окна и ситуация каждый раз повторяется.

    Данная тема обсуждается на многих ресурсах, в том числе и на форуме Microsoft, но решение и четкое описание проблемы найти сложно.

    Такой проблемы могут не наблюдать обладатели мониторов без двухсторонней связи или с выключенным по умолчанию DDC/CI (на предыдущем DELL такого не было, там в меню выключено было). Если у вас только один монитор, то окна тоже не перестраиваются.

    Когда-то раньше многие пользователи жаловались на такую проблему в Windows, при которой после отключения монитора окна оставались за пределом видимости, ну и, видимо, разработчики решили поправить этот момент, если монитора нет, то окна перекидываются на тот, что включен.

    При подключении монитора по DisplayPort, когда он уходит в спящий режим — система думает что его нет, все окошки перекидываются при пробуждении на другой монитор, а когда этот основной монитор определяется через доли секунды — все окошки на него улетают. Неприятное явление.

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

    Некоторые люди даже на форуме майкрософт просят сделать такую настройку, при которой после отключения монитора окна останутся на нем, либо перекинутся на другой дисплей.

    Решений тут много, если монитор поддерживает отключение DDC, то можно так и сделать.
    Можно контакт перерубить, но это тоже какое-то жестокое решение.

    У меня не было возможности посмотреть как это на видеокартах Nvidia, но на AMD достаточно просто выключить в службах «AMD External Events Utility», для Nvidia отключается служба «NVIDIA Update Service Deamon».

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

    И еще такой момент, у меня второй монитор китайским шнурком подключен DVI-HDMI, и он всегда раньше именно так себя и проявлял, на втором мониторе у меня запущен код и что-то по работе, а на основном 34 дюймовом я смотрю фильмы, когда усаживаюсь на диван то совсем не хочу чтобы второй монитор меня отвлекал, выключаю его и окна не перестраиваются, видимо, на этом шнурке не реализован тот самый DDC/CI.

    Просьба не судить строго и было бы полезным, если бы вы добавили свои варианты решения подобных проблем.

    Спасибо за внимание, надеюсь кому-то это будет полезным.

    UPD: Когда окна не собираются на один монитор, а остались на выключенном — можно нажать WIN+P и вместо «расширить» выбрать «только экран компьютера» или «только второй монитор».

    Можно еще через Alt+TAB выбрать окно, а дальше через WIN+стрелочка (вправо/влево) сдвинуть его на монитор, зависит от расположения мониторов в настройках.
    Поделиться публикацией

    Комментарии 41

      0
      Было бы здорово дополнить пост еще и способом возврата окон на основной монитор. Ну, например, мы выключили сервис, теперь окна не возвращаются на первый монитор, как их туда насильно пихнуть?
        0
        Сделать приложение активным выбрав его в панели задач, и хоткеем Win+Space+[cursor arrow] переместить на нужный экран.
        0
        Ох, если бы только на Windows. У меня такая же проблема на Ubuntu 18… с двумя мониторами. HDMI + DisplayPort, самое обидное то, что при выходе из спящего режима DisplayPort монитор не всегда просыпается и приходится руками выключать и включать на кнопку.
          0
          Данный скрипт переносит окно Brackets на правый экран, а окно копирования Nautilus в правый угол и фокусирует его.

          При желании поправить под себя и закинуть в автозагрузку.

          Можно управлять окнами как хочется и забыть про перенос ручками.
          activate_nautilus_files_window
          #!/bin/bash
          
          # kill previous instances
          for pid in $(pidof -x activate_nautilus_files_window); do
              if [ $pid != $$ ]; then
                  kill -9 $pid
              fi 
          done
          
          # continuous loop
          while :
          do
          	wid=$(xdotool search --onlyvisible --name 'Действия над файлами' getwindowpid);
          	if [[ -n "$wid" ]]; then
          
          		xdotool search --onlyvisible --name 'Действия над файлами' windowmove 4000 2000 windowraise #windowactivate
          
          	fi
          
          	# maximize and move to left screen Brackets
          	wid=$(xdotool search --onlyvisible --class 'Brackets' getwindowpid);
          	left=$(xdotool search --onlyvisible --class 'Brackets' getwindowgeometry | grep Pos | cut  -d' ' -f4| cut -d',' -f1)
          	if [[ -n "$wid" && $left < 1920 ]]; then
          
          		xdotool search --onlyvisible --classname 'Brackets'    windowfocus    windowmove 1920 y    windowsize 100% 100%
          
          	fi
          
          #	sleep 0.5
          	sleep 1
          done
          


            0
            xrandr — to control displays
            wmctrl — to move windows around displays
            bash — to make a wrappers (laptop vs. laptop+display[1-N] )
              0

              А это не на XFCE такая проблема? А то я сталкивался несколько лет назад.

              0
              Есть такая штука как Actual Window Manager, а еще есть Actual Multiple Monitors. То ли одна, то ли обе из них умеют закреплять, на каком мониторе и в каких его местах с точностью до пикселя должно появляться нужное окно. Не говоря о сотнях других настроек.
                0
                А не подскажите, есть какая-то кастомизация может виртуальных рабочих столов вин10? После мака очень хочется чтобы на каждом мониторе они отдельно переключались и чтобы были хоткеи переключения, чтобы сразу с 1го на 4й перепрыгнуть, а не листать последовательно…
                  0
                  Использую Actual Multiple Monitors.
                  Подтверждаю.
                  Еще использую это приложение чтоб нарезать 4к на 48" скрине на кусочки и каждое приложение размещать в своем кусочке.
                    0
                    Тоже уже давно использую Actual Multiple Monitors. Не представляю, как без нее можно жить с несколькими мониторами.
                    0
                    В некоторых window-manager'ах есть опция для окон 'move to other monitor', 'move all windows to this monitor'.
                      +2
                      Просьба не судить строго и было бы полезным, если бы вы добавили свои варианты решения подобных проблем.

                      С удивлением узнал что есть такая проблема…
                      Дома 3 монитора, на работе 2, все по DP подключены — никогда не убегали окна ни при выключении монитора ни от спячки…
                        0
                        А если один монитор кнопочкой выключить — окна там и остаются?
                        У меня до этого было 2 монитора DELL U2717DA по DP, дак вот, они не сбивались, но я там в меню видел параметр DDC/CI disabled, думал что же это такое, но не включал его.
                        А сейчас монитор LG с FreeSync, утилитой которая с компа может крутить настройки монитора, чтобы в меню не ползать, ну и все эти преимущества заставили производителя железно включить двухсторонний обмен данными.
                          0
                          В том-то и дело что да.
                          Иногда это вызывает проблемы, когда монитор выключен, а я ищу где нужное окно находится — приходится включать, чтоб окно вытащить :)

                          Хотя… Кнопочка не решает, но решает обесточивание… Комп на упсе сидит, а телевизор нет — если свет в квартире отрубается, то фильм с телика на монитор вылазит…
                          но телевизор по HDMI подключен…
                          Надо будет именно с мониторами проверить :)
                            0
                            проверил — при обесточивании дополнительного монитора окно все-таки перелезает на основное.
                            Все же при выключении кнопочкой комп продолжает видеть что что-то подключено и окна не трогает…
                            0
                            Dell по DP — по кнопочк, окно остается, по питанию (выдернуть из розетки) переползает не основной. DDC/CI enabled.
                              0
                              Проверил опцию DDC/CI disabled на своём основном Dell — не помогает, при выключении питания монитора кнопкой, окна перескакивают на второй монитор.
                                0
                                Может дело во втором мониторе? Они перестраиваются при любом изменении конфигурации экранов, типа размер расширенного экрана скачет. Я тут смотрю для hdmi, dvi и dp продаются переходники HotPlugKiller.
                                  0
                                  Второй у меня подключен по HDMI и с ним проблем нет. В связке с предыдущим монитором проблемы тоже не было, а как заменил на Dell, подключенный через DP — вылезло.
                                    0
                                    А у меня наоборот на DELL не было по DP, а вот на LG появилось по тому же порту… Вероятно, особенности каждого монитора уникальны.
                              0

                              Видеокарта AMD? Они правильно проигнорировали идиотское требование стандарта Display port сообщать компьютеру об отключении монитора при его уходе в спящий режим.


                              Nvidia не так давно выпустила утилиту для обновления прошивок видеокарт, которая решает и эту проблему. https://www.nvidia.com/object/nv-uefi-update-x64.html

                                0
                                Что-то не помогло мне это обновление. При отключении кнопки питания монитора, всё перескакивает на другой монитор.
                                  0
                                  Это работает только для мониторов уходящих в режим сна. Для физически отключенных мониторов (кнопка питания или отключенный видеокабель) решения вроде бы нет.
                              0
                              особенно раздражает, когда по тимвьюверу подключаешься к ноуту, и просыпается встроенный HD монитор а не 4К, на котором все открыто. В итоге Виндовс переносит все окна на него, но оставляет огромные контролы, и панели инструментов.
                                0

                                Один 4К монитор по DP — после выключения-включения кнопкой окна сбиваются в левый верхний угол. Intel Core-i-7, 8550U и UHD 620. Привык уже к таким штукам, чего ожидать ещё от Microsoft.
                                И Chrome тоже никак не открывает https сайты, меняю настройки, работает, а потом опять за своё. И ещё около 30% процессорного времени тратит. Пока Edge использую, но и в нем все не так, не сохраняет страницы, например. Microsoft. спрашивать — себе дороже, скажут перезагрузить или в этом роде. :)

                                  0
                                  Там есть еще одна проблема такая, когда при инициализации монитора сперва думает что у него вот такое разрешение, а потом читает EDID и ставит большое, можете погуглить, но там либо в реестре снести из ветки конфигураций мониторы, перегрузить и потом вписать правильное разрешение, либо еще в тех же Nvidia Settings можно экспортировать EDID и указать чтобы явно из файла грузило, а не из монитора. Ну иногда просто установка драйвера на монитор помогает, чтобы не было универсальный pnp монитор.
                                0
                                Далее пошли налить чашечку кофе, монитор выключился, ...
                                Монитор выключается не сам по себе — сигнал с кабеля снимает ОС (условно говоря, там наверняка более сложный обмен сообщениями), а уже потом монитор это видит и уходит в спячку. Соответственно, возвращение сигнала на кабель с последующим включением монитора полностью контролируется ОС, осталось только делать это правильно )
                                Имхо, тут вообще не надо городить решение, требующее действий от пользователя, вся проблема в том, что ОС решает перенести окна до того как монитор успевает включиться. Всего-то надо после подачи сигнала на кабель подождать секунду-другую — если окажется что монитора на нем уже нет, тогда и переносить окна.
                                  0
                                  Ну первые упоминания таких проблем еще с семерки тянутся, ничего не делать и ждать пока они это решат на уровне ОС нет возможности, работать нужно сейчас, поэтому приходится всякие костыли использовать…
                                    +1
                                    Сообщать об отключении монитора при его переходе в спящий режим — это требование стандарта display port (идиотское). АМД давно забила на это требование. Nvidia — недавно: www.nvidia.com/object/nv-uefi-update-x64.html
                                      0
                                      Т.е. я могу запросить у производителя обновление видеобиоса с такими фиксами? У меня AMD, когда то мне по запросу для фастбута присылали обнову…
                                  +3

                                  Перенос окон между мониторами в Windows 10: Win+Shift + стрелка влево/вправо
                                  , а дальше через WIN+стрелочка (вправо/влево) сдвинуть его на монитор — это у меня перенос окна в размере экрана монитора влево или вправо.

                                    0
                                    спасибо! не знал о таком удобстве.
                                      0
                                      Если у вас ide типа PyCharm приходится отключать. Там на эту комбинацию возврат, и не переназначается вроде.
                                      0
                                      У меня такая штука была на Маке в прошлом году — пропадали окна при отключении внешнего монитора, пофиксилось каким-то из апдейтов
                                        0
                                        У меня несколько иная проблема, окна никуда не перескакивают, но 1 раз из примерно 5 монитор подключенный по DP просто не включается. Либо его физически отключаешь и включаешь, либо перезагружаешься. Иначе остаётся один. Под виндой ловлю такое постоянно, под Linux пока не замечал, но и пользуюсь этой ОС значительно реже.
                                          0
                                          Расскажите какое преимущество нескольких физ. мониторов перед виртуальными.
                                            +1
                                            Когда нужно, например, видеть сразу два окна.
                                            1. Пишу отчет о проделанной работе — на первом окне браузер, на втором почтовик, я сразу там скрины делаю, сюда вставляю.
                                            2. Смотришь на характеристики товара или сразу трех и одновременно печатаешь ответ клиенту.
                                            3. Можно отдельным окном вытащить рядом консоль разработчика браузера, обновлять, тыкать по кнопочкам аяксовым и сразу видеть что там куда отправляется.
                                            4. Кто видео монтирует, тем тоже удобно тут во всю ширину и высоту видеть кусочки фрагментов, а на втором мониторе сам результат.

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

                                            Но я лично совмещаю и то и другое, на первом рабочем столе например редактор и браузер, а на втором аська и стратегия браузерная…
                                            0
                                            Это поведение настраивается на линуксе. Я бы от майкрософт потребовал исправление в течении 45 дней или возврат средств за ОС. Но я конечно с мелкомягкими-ушлёпками не работаю, на федоре лучше работается.
                                              0
                                              Не вижу у себя службу NVIDIA Update Service Deamon. Что-то другое используется вместо неё? То, что нашёл: NVIDIA Display Container LS, NVIDIA LocalSystem Container, NVIDIA NetworkService Container, NVIDIA Telemetry Container.

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                              Самое читаемое