Есть ли способ общаться с кем-то на рабочем столе?

36

Моя жена сидит за домашним рабочим столом alpha, на котором установлена ​​последняя версия Ubuntu. Я нахожусь в автобусе, использую ConnectBot на своем телефоне G1 и могу подключиться к SSH, alphaгде бы я ни был.

По сложным причинам я не могу использовать IM, электронную почту или телефон для связи с ней. (Например, я не хочу будить ребенка, мой IM-клиент сломан, мой почтовый сервер не работает.) Мой единственный вариант - alphaудаленно подключиться к ssh и попытаться каким-то образом заставить что-то появиться на экране. Она использует KDE; как я могу заставить что-то всплывать, чтобы привлечь ее внимание и дать ей понять, что я пытаюсь с ней общаться? Я думал, что возможно удаленно вызвать что-то (например, xmessage), чтобы появиться на ее экране, даже если мой сеанс SSH не имеет X-дисплея.

РЕДАКТИРОВАТЬ: Чтобы уточнить, мой телефон не работает какой-либо вкус X, поэтому X-Over-SSH не представляется возможным. Будет ли следующая работа?

$ export DISPLAY=:0
$ xmessage "test"
dirtside
источник
Отправить текстовое сообщение на телефон в беззвучном режиме ... или это только у меня?
Нива

Ответы:

27

Вы можете указать программе X, какой дисплей использовать с DISPLAYпеременной окружения, при условии, что вы знаете, какой дисплей отображается alphaв данный момент. Почти наверняка единственным отображением является :0, если вы не играли с ним вручную, поэтому если вы запустите:

$ export DISPLAY=:0

Тогда любые запущенные вами X-приложения будут отображаться на alphaмониторе. xmessageхороший выбор для отображения сообщений; есть также xdialog. Если вы libnotifyустановили, вы можете использовать notify-sendдля всплывающего сообщения в углу экрана:

пример

Михаил Мрозек
источник
Здесь xauthили xhostнужно?
Микель
@Mikel Я не уверен, как работает защита, когда X запускает другой пользователь; Я думаю это нормально. Я только когда-либо использовал xhostдля разрешения удаленных подключений, но он SSHing напрямую к машине
Майкл Мрозек
Это нормально, если вы можете войти в систему с той же учетной записью, в которую она вошла. В противном случае вам придется иметь дело с контролем доступа X.
user7440
10

Как показывает Майкл Мрозек , вы можете запускать X-приложения, которые отображаются на рабочем столе вашей жены. Все, что вам нужно сделать, это установить DISPLAYпеременную окружения на правильное значение (почти всегда :0) ... и получить авторизацию.

Это решение требует, чтобы у вас было разрешение на чтение файлов вашей жены. Для доступа к X-серверу требуется «cookie» аутентификации , который представляет собой пароль, который генерируется случайным образом при запуске X и сохраняется в файле. Файл часто ~/.Xauthority; если это не так, это должно быть указано в XAUTHORITYпеременной окружения. В Ubuntu с настройками по умолчанию (с использованием Gdm) сессионный куки-файл вашей жены находится не ~wife/.Xauthorityв файле с автоматически сгенерированным именем, а в его файле; см. переменную ssh DISPLAY . Смотрите также Как пользователь root может запустить графическую программу на рабочем столе другого пользователя? , Linux: wmctrl не может открыть дисплей, когда сеанс инициируется через ssh + screen .

Если у вашей жены открыт текстовый терминал, вы можете использовать его write в соответствии с предложением user7440, чтобы написать текст в свой терминал. Это требует, чтобы терминал принимал такие уведомления; Вы можете включить и выключить это с помощью mesg yили mesg n, и я не знаю, какое состояние по умолчанию на современных эмуляторах терминала.

Более сложный механизм, который writeесть talk. Протокол разговора является родоначальником программ чата; Вы можете общаться с кем-либо на машине, на которой запущен сервер разговоров и чей UDP-порт 517 или 518 (есть два варианта протокола) не фильтруется. Так что установите talkd Установите talkd http://bit.ly/software-small , такой клиент, как ytalk Install ytalk http://bit.ly/software-small , и ytalk wife. Также есть X-клиент, xtalk Install xtalk http://bit.ly/software-small . Насколько я знаю, разговор просто пропал с радара (все, кому небезразлично, пользуются одним из современных чат-протоколов), и нет системного компонента, который генерировал бы уведомление KDE о запросе на разговор.

Хотя вы говорите, что не можете запустить любой IM-клиент ... будет ли IM-клиент командной строки, работающий на вашей домашней машине, доступ к которому осуществляется через SSH, будет в порядке? Есть такие, например, уикенч Установить уинчат http://bit.ly/software-small . Вы по-прежнему зависите от какого-либо сервера, связывающего вас с вашей женой, но доступ к нему возможен только с вашего домашнего компьютера, а не с телефона.

Жиль "ТАК - прекрати быть злым"
источник
finchверсия командной строки для pidgin
LawrenceC
4

Если у нее открыто окно терминала (используйте «кто», чтобы узнать), вы можете написать в этот терминал, используя «запись». Это не будет работать с основным терминалом, поскольку KDE скрывает его, но любое окно терминала должно работать (если оно находится на текущем рабочем столе, а не свернуто, оно смотрит на это ...).

user7440
источник
3

Я не уверен на 100%, что настройка DISPLAY=:0.0будет работать. Я думаю, что вам нужен способ авторизации для подключения к X-серверу на компьютере вашей жены. Инструменты для этого есть xhostи xauth, но, кажется, они требуют, чтобы у вас уже был доступ к X-серверу, поэтому, предположительно, только ваша жена могла их запускать. (Курица и яйцо проблема.)

В противном случае вы можете запустить второй X-сервер, например, используя X :1, или, может быть, chvtможете помочь.

Например, что-то вроде

# X :1
# export DISPLAY=:1.0
# xmessage 'hello'

Кажется, работает в моей системе, если я запускаю его как root.

X :1 был запущен на vt7 в моей системе, так что вы также можете запустить

# chvt 7

чтобы быть уверенным, что этот дисплей X является видимым в данный момент.

Mikel
источник