マウスパッドGUIを開くシェルスクリプトで同時実行を停止することはできません。 Windows

マウスパッドGUIを開くシェルスクリプトで同時実行を停止することはできません。 Windows
#!/bin/sh
...several lines of commands...
mousepad file.txt
zenity --info
...several more lines of commands...
exit

予想される動作:私はスクリプトにコマンドを発行します(この場合はキーボードショートカットを介して)。 ㅏマウスパッドこれで私のウィンドウが開きます。Xfce4デスクトップ、ディスプレイコンテンツファイル.txt。テキスト操作を実行してから手動で閉じます。マウスパッド窓。、注文したジェニティ期待どおりにウィンドウが表示されます。手動で閉じて、スクリプトの次の手順を実行します。

開いている他のスクリプトがない場合、このスクリプトは正しく機能します。マウスパッドどこでもWindows。しかし、もし私がすでに持っている1つ以上マウスパッドそのスクリプトにコマンドを発行すると、ウィンドウが開きます(キーボードのキーボードショートカットを介して)。今何が起こっているのかは次のとおりです。

このコマンドで説明されているようにスクリプトを実行した後に予想される結果は次のとおりです。マウスパッドウィンドウ(内容を表示するウィンドウ)ファイル.txt)開いている、とともにこれジェニティウィンドウ(この場合ジェニティ窓が開く今後これマウスパッドウィンドウは私が手動で閉じました。)これは歓迎されていない行動です。

実行時にテーマスクリプトが正しく機能します。Debian ウィズ(使用システムV)。ただし、最近のアップグレード以降Debian の提示(使用システム)私は変化し、歓迎されない行動を見始めました。言ったのか分からないけどシステムこれをプレイしてみてください...

私はwaitコマンドや行mousepadの後に追加することを含む多くのことを試しました&&。また、トラッピングも試みました。私には何も効果がありません。

これが起こる原因は何であり、どのように解決しますか?

ティア!

答え1

説明するのは、プログラムがサーバーの種類を実行して新しいインスタンスが既存のインスタンスに接続したときに発生する現象です。すでに実行されている場合は、mousapad既存のインスタンスに接続してすぐに終了します。すぐに終了するので、スクリプトが続行されるので、これを見ることができますzenity

修正は簡単です。この機能を無効にするオプションがあります。

$ mousepad -h
Usage:
  mousepad [OPTION…] [FILES...]

Help Options:
  -h, --help               Show help options
  --help-all               Show all help options
  --help-gtk               Show GTK+ Options

Application Options:
  --disable-server         Do not register with the D-BUS session message bus
  -q, --quit               Quit a running Mousepad instance
  -v, --version            Print version information and exit
  --display=DISPLAY        X display to use

このオプションは、--disable-server単にスクリプトを次のように変更します。

#!/bin/sh
...several lines of commands...
mousepad --disable-server file.txt
zenity --info
...several more lines of commands...
exit

関連情報