Передача сигналов из гостя хосту

Есть гостевая система линуксовая. Как при нажатии, например, на ctrl+L передать сигнал на хост на винде, чтобы блокировка экрана произошла на хосте?

Надо чтобы блокировка была именно на уровне хоста, чтобы нельзя было получить доступ к компьютеру просто свернув виртуалку.


Ответы (1 шт):

Автор решения: eri

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

Подключаешься к dbus и ждешь сигнал org.gnome.ScreenSaver.ActiveChanged или org.freedesktop.ScreenSaver.ActiveChanged

Или системный сервис который слушет систеный service org.freedesktop.login1, path /org/freedesktop/login1/session/auto, interface org.freedesktop.login1.Session, signal Lock (но он пока не готов)

Дальше отправляешь текст в COM порт что сессия залоченна.

На хост системе подключаешься к виртуальному COM порту (хост-канал в идеале, но проще по TCP) и ждешь этого слова. По нему выполняешь блокировку экрана запустив команду.

Для простоты реализации гостевого агента можно отправить вывод dbus-monitor в ком порт.

dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Session',member='Lock'"\
  > /dev/ttyS1

Но на хосте всеравно прийдется программировать, чтоб распарсить сигнал.

→ Ссылка