Чи така поведінка вже можлива?
Все можливо в Linux. Вам знадобляться основні знання про Xserver , деякий час та система для перевірки, оскільки ви возитесь зі своїм X і вам, звичайно, потрібен браузер, якщо вам потрібна допомога :-)
На мою думку, є три можливі рішення:
Мультимоніторні установки використовують Xinerama . Найпростіше рішення, про яке я можу придумати, - це додати третій віртуальний екран до своєї конфігурації та просто перемістити вікна туди за допомогою xdotool. У цьому рішенні є деякі недоліки, але це не вимагає зусиль переміщення вікон між різними Xservers, що взагалі неможливо.
Оскільки неможливо переміщувати вікна між різними Xservers , для цього нам потрібен такий проксі, як xmove або Xpra . Я думаю, що тоді Windows живе в окремому сеансі Xfvb, щоб приховати вікна. Ви можете приєднати та відключити до сеансу.
Незалежно від того, яким методом ви користуєтесь, вам потрібна подія, коли монітор вимкнеться з розетки. Подія має спрацьовувати, коли екран відключається, а також при повторному підключенні. Ви можете демонструвати сценарій, щоб спостерігати за подією.
Я б вважав за краще рішення з використанням Xpra з різних причин. Я можу дати вам лише деякі підказки, як це зробити. Рішення не є завершеними, але слід розпочати.
Рішення Xinerama
Налаштування
Настройка Xinerama має бути розширена, щоб мати статичну конфігурацію: Див. Https://help.ubuntu.com/community/XineramaHowTo
див. також підроблений третій екран та Xdummy
отримати уражені вікна
Ми можемо використовувати xdotool для пошуку вікон. Після цього ми можемо перевірити їх положення та перемістити їх. Я припускаю два монітора з 1920x1080
конфігурацією. Далі буде переміщено всі вікна праворуч на лівий екран xinerama.
while read xwindowid; do
eval $(xdotool getwindowgeometry --shell "$xwindowid")
if (( X > 1920 && X <= (1920 * 2))); then
xdotool windowmove --relative $WINDOW -1920 y
fi
done <<< "$(xdotool search --screen 0 '.*')"
Тепер ви можете перемістити всі вікна з екрана ноутбука (screen0) на третій (віртуальний) екран, якщо монітор підключений. Одночасно ви можете перемістити будь-яке вікно, яке зберігається на третьому екрані, на перший екран.
Рішення XPRA
Для того, щоб використовувати Xpra для переміщення вікон, усіма вікнами слід керуватися Xpra раніше. Потрібно запустити весь робочий стіл за допомогою Xpra при запуску системи. Два рази один - ваш основний робочий стіл, де ви працюєте, а інший - це головним чином віртуальний робочий стіл.
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
Тепер ви можете мати Windows для відключеного екрана, який працює в окремому сеансі xpra, і приєднувати / відключати від нього, коли монітор перемикається.
xpra attach :99
xpra detatch :99
Також є розширене розширення оболонки gnome, яке може бути корисним, якщо ви хочете вручну перемістити вікно від прихованого :99
до нормального :0
між запущеними дисплеями xpra.
Подія
Ви можете спостерігати за відключенням / підключенням певного дисплея
можливо, слідкуйте за зміненими розмірами вашої xinerama, використовуючи xwininfo, щоб вона була незалежною від відключеного монітора, якщо ви хочете, тобто розширити налаштування на 3 монітори та відключити довільний пристрій. Зауважте, що це буде працювати лише для рішення xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0