web-dev-qa-db-ja.com

別のXセッションで開いているウィンドウにキーストロークを送信するコマンドラインの方法

メインマシンで、Ubuntuデスクトップを開いてログオンしています。次に、新しいXセッションを作成するX2goを使用して、リモートコンピューターからこのマシンにログインします。 libreofficeファイルがある元のセッションで開く。このファイルを保存して閉じたいのですが、リモートマシンからです! (両方のセッションで同じユーザーがログインしています。必要に応じてSudoを実行できます)

xdotool searchを使用してみましたが、ウィンドウが見つかりません。この2番目のセッションでやりたいことを行う方法はありますか? ps -Aでプロセスを確認できますlsofで開いているファイルを確認することもできます!どうすれば「保存して閉じる」ことができますか?

11
Sanjay Manohar

デフォルトの構成を想定すると、「オリジナル」のxdpyinfoは「:0.0」の表示を示します。

xdpyinfo | grep name

「x2go」のDISPLAY環境変数が「:1.0」の場合、そうである必要があります。

「x2go」の端末からwindow-idを見つけてみてください。

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

アクセス制御が機能しないように設定されている可能性がありますが、同じホストの同じユーザーID(つまり、〜/ .Xauthorityへのアクセス)であれば、そうする必要があると思います。アクセスがない場合は、「xauth list」の出力を確認してください。

機能する場合は、お気に入りのツールを使用して制御します。上記のxwininfoに "-int"を追加して、ウィンドウIDを10進数で出力します(ツールで必要な場合)。

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"

「meta +」の代わりに「alt +」が必要な場合があります。私には非標準のmeta/alt/superマッピングがあります。 Xnestを使用してテストしたメタは私のために動作します。私は変更されていない英語のメニューレイアウトとアクセラレータを想定しています。

途中でポップアップが発生する可能性があります。その場合は試してみる価値があります。

xdotool key "Escape"

数回、保存して閉じます。 xdotoolは、「キー」名の正確な大文字と小文字の区別について面倒です。

X2goでlibreofficeを起動し、DISPLAYを変更しないことで、これらすべてを試すことができるはずです。フォーカスの変更で混乱しないように、コマンドをシェルスクリプトファイルに保存する必要があります。

lsofは、正常に機能した場合、開いていないファイルを表示するはずです:-)

9
mr.spuratic

考えられる要件がいくつかあるようです。明らかに、ホストはxhostsファイル(回答としてマークされていました)にあり、適切なDISPLAY値がエクスポートされている必要があります。この投稿は、 xdotoolがリモートx11ウィンドウを見つける を許可することで、希望どおりに実行するのに役立ちます。

1
Joshua K