web-dev-qa-db-ja.com

複数のgeanyウィンドウを開いた状態でファイルを開いたときのGeanyの迷惑な動作

Geditでは、複数のGeditウィンドウを開いてからファイルを開くと、Geditは最後にアクティブなウィンドウでファイルを開くことを選択します。私はこの振る舞いが好きです、私はそれが直感的だと思います。

私がGeditよりも好むGeanyでは、使用するインスタンスのルールは「最も古いもの」のようです。さらに悪いことに、そのインスタンスが別のデスクトップで開かれている場合、そのインスタンスは現在のデスクトップにも移動します。これにより、複数のGeanyウィンドウを操作できなくなり、非常に煩わしくなります。

Geanyの最近アクティブな(つまり「見た」)インスタンスでGeanyにファイルを開かせる方法を知っている人はいますか?最新バージョン(0.21)を使用しています。

1
Max Williams

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に渡します)。

3
Rikard

これはおそらくリカードの反応についてのコメントだったはずですが、私はそれを別の反応として提示します。元のスクリプト(ソケットオプションなし)がすでに実行されているときに使用すると、彼のソリューションによってコンピューター(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+"$@"}
0
Dominic108

残念ながら、この動作を構成する方法はありません。数ヶ月前、私はこれについて何人かのGeanyプラグイン開発者に尋ねました、そしてこれを変える唯一の方法はあなた自身でコードを書いて彼らにパッチを送ることであるようです。

0
user107012