Контекст: у меня есть один большой монитор, рабочий стол и ноутбук. Я использую большой монитор и переключатель HDMI, когда я дома. Это дает синергию проблему в том, что он не распознает части экрана, если экран меняется. Вы должны перезапустить клиент синергии на ноутбуке, если это так, чтобы иметь возможность доступа ко всему экрану.
Как я могу автоматически возобновить синергию, используя скрипт, когда меняю экраны? Я знаю, как написать сценарий, но не знаю, откуда его запустить или есть ли такое место. Обратите внимание, что я имею в виду физические экраны, а не экраны синергии.
Принятие изменения в разрешении и заставляет ошибку и триггер выполнять Ваш сценарий, periodicalloy проверка разрешения и выполнять Ваш сценарий, если это изменяется, должен сделать задание:
#!/usr/bin/env python3
import subprocess
import time
command = "</path/to/script_to_run>"
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
res1 = get_res()
while True:
time.sleep(5)
res2 = get_res()
if res2 != res1:
subprocess.Popen(["/bin/bash", "-c", command])
res1 = res2
Это проверяет текущее разрешение каждые пять секунд и выполняет сценарий, как установлено в главном разделе, если существует изменение разрешения.
check_resolution.py
synergy
Тестовый прогон это путем выполнения его в окне терминала с командой:
python3 /path/to/check_resolution.py
, если все хорошо работает, добавьте его к своим приложениям запуска.
команда как приложение запуска, вероятно, нуждается в маленьком перерыве, чтобы удостовериться, что рабочий стол полностью загружается, когда сценарий запускается. Команда для добавления к Приложениям Запуска тогда была бы:
/bin/bash -c "sleep 15&&python3 /path/to/check_resolution.py
Добавляют к Приложениям Запуска: Тире> Приложения Запуска> Добавляют, добавляют команду.
<час>Только, чтобы быть завершенным:
, Если по некоторым причинам, Вы предпочли бы версию удара сценария:
#!/bin/bash
function get_res {
echo $(xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}')
}
res1=$(get_res)
while true; do
sleep 5
res2=$(get_res)
if [ "$res1" != "$res2" ]; then
<command_to_run>
fi
res1=$res2
done
использование является в значительной степени тем же кроме расширения языка:
check_resolution.sh
и команда для выполнения его:
/bin/bash /path/to/check_resolution.sh
и замена <command_to_run>
командой для перезапуска synergy
или путь к сценарию.