Geditでは、複数のGeditウィンドウを開いてからファイルを開くと、Geditは最後にアクティブなウィンドウでファイルを開くことを選択します。私はこの振る舞いが好きです、私はそれが直感的だと思います。
私がGeditよりも好むGeanyでは、使用するインスタンスのルールは「最も古いもの」のようです。さらに悪いことに、そのインスタンスが別のデスクトップで開かれている場合、そのインスタンスは現在のデスクトップにも移動します。これにより、複数のGeanyウィンドウを操作できなくなり、非常に煩わしくなります。
Geanyの最近アクティブな(つまり「見た」)インスタンスでGeanyにファイルを開かせる方法を知っている人はいますか?最新バージョン(0.21)を使用しています。
Geany 1.22を使用すると、やりたいことにかなり近い回避策があるかもしれません。
http://www.geany.org/manual/current/#command-line-options のマニュアルによると、
--socket-file
geanyインスタンスと通信するためのソケットファイルを指定します。
以下をスクリプトに入れると、ワークスペースごとにインスタンスが取得されます。
#!/bin/bash
geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}') ${1+"$@"}
(コマンドライン引数をgeanyに渡します)。
これはおそらくリカードの反応についてのコメントだったはずですが、私はそれを別の反応として提示します。元のスクリプト(ソケットオプションなし)がすでに実行されているときに使用すると、彼のソリューションによってコンピューター(Ubuntu 14.04を使用)が応答しなくなることに気付きました。その場合は、スクリプトを終了させておくとよいと思いました。スクリプトにgeany
という名前を付ける場合は、/usr/bin
の前のディレクトリ、またはPATHの元の場所に配置します。
#!/bin/bash
for pid in $(pgrep "geany")
do
cmd=$(ps -p $pid -o cmd)
if [[ "$cmd" = *"/usr/bin/geany"* ]] && [[ "$cmd" != *"socket"* ]] ; then
echo original geany already running
exit
fi
done
/usr/bin/geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}') ${1+"$@"}
残念ながら、この動作を構成する方法はありません。数ヶ月前、私はこれについて何人かのGeanyプラグイン開発者に尋ねました、そしてこれを変える唯一の方法はあなた自身でコードを書いて彼らにパッチを送ることであるようです。