Суть проблемы, если коротко, в том, что подключая внешний монитор к ноутбуку в том случае, если он логически расширяет экран влево (находится левее основного экрана), то все открытые окна с экрана ноутбука перемещается на вновь подключенный экран.
Вообще, проблема актуальна не только для ноутбука, но частое подключение и отключение мониторов более присуще именно ноутбукам.
Решения проблемы не существует на данный момент. Ну… или я его не нашёл. Но буквально сегодня разыскал занимательный хак, как вернуть окна, если они прыгнули на левый (в прямом и переносном смысле) монитор:
Под катом сохраню копию, на всякий случай. Вообще, как грубое решение в лоб работает. Повесил на горячую клавишу Super+P
.
#!/bin/bash
RULEFILE="$HOME/.config/kwinrulesrc"
cp $RULEFILE $RULEFILE.bak
KGROUPNUM=$(kreadconfig5 --file $RULEFILE --group "General" --key count)
let KGROUPNUM++
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key Description 'Moves Windows to Screen'
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key screen 0
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key screenrule 2
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key types 505
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key wmclass '^((?!lattedock).)*$'
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key wmclasscomplete 'false'
kwriteconfig5 --file $RULEFILE --group "${KGROUPNUM}" --key wmclassmatch 3
kwriteconfig5 --file $RULEFILE --group "General" --key count ${KGROUPNUM}
sleep 3
qdbus org.kde.KWin /KWin reconfigure
sleep 6
mv $RULEFILE.bak $RULEFILE
sleep 1
qdbus org.kde.KWin /KWin reconfigure