Lubuntu 18.04には、bashシェルで実行される多くのバックグラウンドGUI操作があります。その中には、バックグラウンドで実行されるevinceプロセスがあります。
$ jobs | grep evince
[29] Running evince CurrentDBs.pdf &
私はそのウィンドウをデスクトップの前面(現在のbashシェルを実行しているlxterminalウィンドウの前面)に移動したかったのですが、そうではありませんfg 29
でした。
なぜそんなことですか?シェルのジョブ制御がデスクトップ環境(またはX Window System)でどのウィンドウが前にあるのか、それとも関係がないのですか?
バックグラウンドGUIタスクをデスクトップフロントエンドに移動するには? プロセスが Wine で Windows プログラムを実行している場合でも、xdotool を使用して指定されたプロセス ID のウィンドウを前方にインポートできますか?
ありがとうございます。
答え1
はい、xdotoolは動作します
すべての証拠ウィンドウを前方にインポートする方法は次のとおりです。
xdotool search --onlyvisible --class evince windowactivate %@
Wineプログラムで使用できない理由はありません。もちろん、それらを呼ぶには正しい名前を見つける必要があります。このコマンドがxprop
役に立ちます。
答え2
evince
サブシェルのバックグラウンドで実行されます(実行プロセスの後に続くアンパサンドに注意してください)。ただし、GUIアプリケーションなので、ウィンドウを閉じるボタンを押すとサブシェルプロセス全体が終了するため、ウィンドウを表示できるはずです。サブシェルバックグラウンドプロセスが存在している間にウィンドウが表示されない場合は、evince
おそらくバグがあることを意味します。 2つの可能性があります。
- 隠されたウィンドウをどこかで見つけます(2番目のデスクトップまたはまたはを押し
Alt+Tab
てウィンドウを切り替えますAlt+Shift+Tab
)。 - プロセスを手動で終了する
kill
か、サブシェルを呼び出すシェルを閉じてサブシェルにevince
送信します。SIGHUP