10

На моей основной машине у меня открыт рабочий стол Ubuntu и вошел в систему. Затем я также подключаюсь к этой машине с удаленного компьютера, используя X2go, который создает новый X-сеанс. У меня есть файл libreoffice, открытый на исходной сессии. Я хочу сохранить этот файл и закрыть его - но с удаленного компьютера! (В обоих сеансах зарегистрирован один и тот же пользователь; я могу sudo, если это необходимо)

Я пытался использовать xdotool search но это не удается найти окно. Есть ли способ сделать то, что я хочу от этого второго сеанса? Я могу видеть процесс с помощью ps -A Я даже вижу открытый файл с помощью lsof ! Как я могу сделать «сохранить и закрыть» на нем?

2 ответа2

9

Предполагая конфигурацию по умолчанию, xdpyinfo для "original" будет отображать «:0.0», например

xdpyinfo | grep name

Если ваша переменная окружения DISPLAY для "x2go" равна ":1.0", то так и должно быть.

Из терминала на "x2go" попробуйте найти идентификатор окна:

DISPLAY=:0.0 xwininfo -root -tree | grep Writer

Возможно, что управление доступом настроено так, что оно не будет работать, но я думаю, что это должно произойти, если вы используете один и тот же ИД пользователя на одном хосте (т.е. доступ к ~/.Xauthority). Проверьте вывод "xauth list", если нет доступа.

Если это работает, то используйте ваш любимый инструмент для управления им. Добавьте «-int» в xwininfo выше, чтобы напечатать windowid в десятичном формате, если ваш инструмент требует этого, xdotool не делает:

export DISPLAY=:0.0
xdotool windowactivate 0x15a18918
xdotool windowfocus 0x15a18918
xdotool key "ctrl+s"
xdotool key "ctrl+q"

или вам может повезти с ними вместо "ctrl+s"/"ctrl+q"

xdotool key "meta+f" "s"
xdotool key "meta+f" "c"
xdotool key "meta+f" "x"

Вам может потребоваться «alt +» вместо «meta +», у меня есть нестандартные отображения meta/alt/super. у меня работает meta, протестировано с помощью Xnest. Я предполагаю неизменное английское расположение меню и ускорители.

Возможно, у вас есть всплывающее окно, и в этом случае стоит попробовать:

xdotool key "Escape"

несколько раз, затем повторите попытку сохранения и закрытия. Помните, что xdotool суетливо относится к точному регистру "ключевых" имен.

Вы должны быть в состоянии попробовать все это, запустив libreoffice на x2go, а НЕ изменив свой DISPLAY. Вы должны сохранить команды в файле сценария оболочки, чтобы изменения фокуса не мешали вам.

lsof должен показывать, что файл больше не открывается, если он работал :-)

1

Похоже, есть пара возможных требований. очевидно, что хост должен быть в файле xhosts (он был помечен как ответ) и экспортировано соответствующее значение DISPLAY. Этот пост должен помочь вам сделать это так, как вы хотите, позволяя xdotool найти удаленное окно x11.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .