Как подключиться к существующему сеансу X без разблокировки физического дисплея?

16

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

Я пробовал vino (vino-server & vinagre в качестве клиента), но они открывают новый пустой сеанс X, поэтому он не дает мне доступ к запущенным приложениям.

Я также попробовал x11vnc, но он выглядит, чтобы разблокировать физический экран и оставить его разблокированным (!), Когда клиент завершит работу, поэтому у нас есть проблема с безопасностью ...

На обоих концах работает Ubuntu 12.04 с графическим интерфейсом по умолчанию, поэтому никакое конкретное решение GNOME не будет работать (апплеты и т. Д.).

Идеальное решение должно дать мне доступ ко всем программам, запущенным как на мониторах, так и на нескольких «виртуальных рабочих столах». Что может потребовать захвата специальных клавиш, таких как Crtl + [число] и Alt-TAB.

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

РЕДАКТИРОВАТЬ: x1vnc, а не "x11server", конечно ...

SFP
источник
Частичное решение я нашел здесь: karlrunge.com/x11vnc/faq.html#faq-gone-lock
sfp
Частичное решение я нашел на странице x11vnc Author, но я не уверен, что оно работает с ЖК-дисплеем. Как это устроено? В режиме выключения DPMS есть программа для настройки параметров блока blockdpy (стандартно для ЭЛТ-мониторов; выключено - энергосбережение), которая просматривает несколько раз в секунду, если она изменилась. Если это так - он выполняет команду типа «включить заставку». Поэтому экран должен быть черным или заблокированным (также для удаленного пользователя vnc).
sfp
Обратите внимание, что вы можете частично решить проблему разблокировки экрана, просто запустив его, DISPLAY=:0 gnome-screensaver-command -lкогда закончите. Экран все еще будет разблокирован на время вашей сессии.
Майкл Миор

Ответы:

10

Насколько я знаю, невозможно пересылать уже существующие окна через SSH.

Я бы предложил пойти на x11vnc. Возможно, вам придется установить его в первую очередь. Эта команда должна включить одноразовый VNC-сервер без пароля, который будет использовать ваш текущий рабочий стол (первым пришел, первым обслужен):

x11vnc -noxdamage -display :0 -safer -nopw -once -xrandr

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

Это очень удобно, потому что вы можете запустить его с SSH-сессии из другого места, просто когда вам это нужно.

Хорхе Суарес де Лис
источник
Я пробовал x11vnc, только опечатка при подготовке вопроса. Исправленный. Во всяком случае ... Я не вижу, как эти опции спасают меня от экрана разблокировки.
sfp
2

Вы должны взглянуть на x2go и просто подключиться к «Connection to Local Desktop» вместо того, чтобы указывать оконный менеджер или среду рабочего стола.

Он использует SSH, поэтому после установки и запуска сервера на рабочей станции вы сможете подключиться к нему с помощью x2goclient, если вы уже можете подключиться к нему по SSH.

Vreality
источник
Нет, это разблокирует локальный рабочий стол.
Роберт Поллак
1

Вы должны взглянуть на X11RDP .

Это действительно отличное обновление Xrdp, кроме того, вы можете настроить поведение по мере необходимости. У меня были те же проблемы, что и у вас, и я установил x11rdp и отредактировал файл xrdp.conf, чтобы разрешить вход в предыдущую сессию ... В любом случае, проверьте сайт и попробуйте версию 7. Парень из Kevin Cave - гений, и теперь он делает некоторые обновления, чтобы вы могли установить x11rdp как пакеты Debian.

Maythux
источник