Спосіб командного рядка надіслати натискання клавіш у вікно, відкрите на іншій X-сесії


11

На моєму головному апараті у мене відкритий робочий стіл Ubuntu та вхід у систему. Потім я також входжу в цю машину з віддаленого комп'ютера, використовуючи X2go, який створює нову X-сесію. У мене на початковому сеансі відкритий файл вільного доступу . Я хочу зберегти цей файл і закрити його - але з віддаленої машини! (На обох сеансах увійшли однакові користувачі; я можу судо, якщо потрібно)

Я намагався використовувати, xdotool searchале це не вдається знайти вікно. Чи є спосіб зробити те, що я хочу від цього другого сеансу? Я бачу процес, з якого ps -A навіть бачу відкритий файл lsof! Як я можу зробити "зберегти і закрити" на ньому?


2
Ви можете просто вбити процес - якщо у вас немає серйозних незбережених змін, це було б просто. Якщо це зробити, ви все одно намагаєтеся відновити документ наступного разу, коли ви його відкриєте.
Уейн Вернер

Це правда @wayne, це, ймовірно, автопокриття ... Дякую за пропозицію. Не впевнений, чи хотів би я скористатися цим шансом, хоча! Немає способу надсилати натискання клавіш (чи будь-які інші прямі повідомлення)? Це звучить так просто.
Санджай Манохар

Я впевнений, що є способи - я просто їх не знаю. Деякі складні з них передбачають встановлення простого клієнта VNC та налаштування DISPLAY=:0(або будь-якого відображення вашого іншого облікового запису), а потім запустіть сервер і перейдіть на нього від клієнта. Але це може бути надмірним. У LibreOffice, можливо, є протокол повідомлень - я не страшенно знайомий з ним, оскільки використовую документи Google або звичайні текстові файли у Vim (включаючи LaTex) ...
Wayne Werner

використовуйте VNC, щоб отримати доступ до головного вікна з іншого місця
Олів'є Дулак

1
xdotool працює на поточному сеансі значення $ DISPLAY. Ви можете ssh будь-яку машину або vncserver, а потім запустіть xdotool на ньому. Наприклад, якщо ви запустите vncserver на порту 5901, він використовує: 1 екран за умовою. Отже, запустіть, DISPLAY:1тоді запустіть будь-яку програму X (xeyes для тестування) і запуститься під VNC. Те ж стосується віддалених vncservers. SSH в машину, то простий запуск експорту DISPLAY: 1 перед використанням.
м3нда

Відповіді:


9

Якщо припустити конфігурацію за замовчуванням, xdpyinfo на "оригіналі" буде відображати "0,0", наприклад,

xdpyinfo | grep name

Якщо ваша змінна середовище DISPLAY на "x2go" становить ": 1.0", то так має бути.

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

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

Можливо, контроль доступу налаштований так, що він не працюватиме, але я думаю, що він повинен бути, якщо ви однаковий userid на тому ж хості (тобто доступ до ~ / .Xauthority). Перевірте висновок "xauth list", якщо немає доступу.

Якщо він працює, то використовуйте улюблений інструмент для управління ним. Додайте "-int" до xwininfo вище, щоб надрукувати вікно в десятковій формі, якщо ваш інструмент цього вимагає, 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 +", у мене є нестандартні відображення мета / alt / super. мета працює для мене, перевірена за допомогою Xnest. Я припускаю, що зміна англійського меню та прискорювачів не змінюється.

Можливо, на вашому шляху є спливаюче вікно, і в цьому випадку варто спробувати:

xdotool key "Escape"

кілька разів, потім повторіть спробу зберегти і закрити. Пам'ятайте, що xdotool суєтливо ставиться до точного випадку "ключових" імен.

Ви маєте змогу спробувати все це, запустивши libreoffice на x2go, а не змінюючи DISPLAY. Ви повинні зберегти команди у файл скрипту оболонки, щоб зміни фокусу не зіпсували вас.

lsof повинен показати файл більше не відкритий, якщо він працював :-)


Дякую за підказку xdotool key "Escape"щодо імен, але не пробували довгих імен: D
m3nda

1

Схоже, є кілька можливих вимог. мабуть, хост повинен бути у файлі xhosts (він був позначений як відповідь) та експортується відповідне значення DISPLAY. Ця публікація тут повинна допомогти вам зробити це так, як ви хотіли, дозволяючи xdotool знаходити віддалене вікно x11 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.