web-dev-qa-db-ja.com

Geany:ワークスペースでファイルを開くときに、ワークスペースごとに新しいインスタンスを開きます

Linux Mint13でMate1.2.0を使用しています。使用する2つのテキストエディターはGeditとGeany(v0.25)です。シンタックスハイライトやその他のインターフェイス機能を好むため、すべてのコーディングにGeanyを使用しています。

しかし、私を悩ませているのは、この動作です。

  • ワークスペースのGeanyでファイルを開く1
  • ワークスペース2に移動
  • ファイルをダブルクリックして開きます(Geanyで)
  • デスクトップは再びワークスペース1に切り替わり、Geanyでファイルを開きます。

Geditでこれを行うと、そのワークスペースでGeditの新しいインスタンスが開きます。これは、ワークスペースごとに異なるプロジェクトを開いている私のスタイルにぴったりです。

I canプログラムメニューからGeanyの別のインスタンスを起動し、1つを別のワークスペースに移動しますが、動作は変わりません。次のように表示されます。

  • ワークスペース1のGeanyでファイルを開く
  • ワークスペース2に移動
  • プログラムメニューからGeanyの新しいインスタンスを開始します(これで、ワークスペースごとに1つあります)
  • ファイルをダブルクリックして開きます(Geanyで)
  • デスクトップは再びワークスペース1に切り替わり、Geanyの最初のインスタンスでファイルを開きます。

つまり、常に「プライマリ」Geanyでファイルを開き、たまたまそこにあるワークスペースに切り替えるようなものです。

この動作を変更する方法はありますか?私はそれがそのようになりたいです:

  • ファイルを開くとき:このワークスペースで実行されているGeanyはありますか?
    • はい:そのGeanyでファイルを開きます
    • いいえ:このワークスペースで新しいGeanyを開き、その中でファイルを開きます。

これに関連するオプションが設定に表示されません。アドバイスをいただければ幸いです。ありがとう

6
Max Williams

ターミナルに移動してgeany -hと入力すると、使用可能なすべてのオプションが表示されます。それらの中で-i, --new-instance Don't open files in a running instance, force opening a new instanceはまさにあなたが必要とするものです。

方法

  1. クリックしているものを見つけます。

  2. 任意のテキストエディターで開くか、実行しているコマンドを変更する方法を見つけます。 (たとえば、トレイのランチャーの場合は注意が必要です)。

  3. コマンドをgeany -some_optionsのようなものからgeany -some_options -iに変更します

-

完了しました。

3
Ufos

コメントするには長すぎたので、代わりに回答として投稿します。私はオリヴィエの答えをうまく機能させるのに苦労したので、他の人も問題を抱えている場合に備えて、彼の答えにもっと詳細な指示を含めると思いました(すべてのクレジットは彼にあり、私の代わりに/と同様に彼に賛成します)。

を含むバッチファイルを作成する

#!/bin/sh

socket=`xprop -root _NET_CURRENT_DESKTOP`
socket=${socket##* }

if [ "$socket" ]
then
    if [ "$DISPLAY" ]
    then
        socket="${DISPLAY%.*}-$socket"
        socket=${socket#*:}
    else
        socket="NODISPLAY-$socket"
    fi
    exec geany --socket-file "/tmp/geany_socket_$socket" "$@"
else
    exec geany "$@"
fi

バッチファイルをPATHに含まれるディレクトリに配置します( https://stackoverflow.com/questions/14650070/how-to-execute-bash-script-from-any-location を参照)。バッチファイルにwgeanyという名前を付けると仮定します。それ以外の場合は、次の手順で名前を付けたものに置き換えます。

次に、これをテキストファイルを開くためのデフォルトプログラムとして設定します。残念ながら、それはリストに含まれておらず、少なくとも私のバージョンでは、残念ながらカスタムピックを行うことはできません。

これを解決するには、~/.local/share/applicationsまたは/usr/share/applications(一方が存在しない/機能しない/権限がない場合はもう一方を試してください)に移動し、wgeanyという名前のテキストファイルを作成します。 .desktopを含む:

[Desktop Entry]
Name=wgeany
Comment=wgeany
Exec=wgeany %f
Type=Application
StartupNotify=false
Terminal=false
Categories=TextTools;
Name[en_US]=wgeany

また、正しいgeanyアイコン(Icon=path/icon.png)を指す行を含めることもできますが、わざわざ見つけることはしませんでした。ファイルを保存すると、バッチファイルが[プログラムから開く]ダイアログに表示されます。 (ファイルタイプ(.txtなど)のプロパティに移動し、[アプリケーションから開く]タブに移動して、wgeanyをデフォルトとして設定することで、ファイルタイプ(.txtなど)のデフォルトアプリケーションに設定できます。


これを解決してくれたMaxWilliamsにも感謝します。

1
Kvothe

「ファイル」と「開く」を使用すると、Geanyは現在の「プライマリ」インスタンス、つまり最初のインスタンスではなく現在使用しているGeanyインスタンスでファイルを開きます。

0
kpb

geany.org は彼を次のように文書化します:

次のコマンドを使用して、現在のワークスペースでGeanyを実行します。

geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}')

これで、システム全体のgeany.desktopファイル(たとえば/ usr/share/applications /から)をローカルアプリケーションディレクトリ(おそらく〜/ .local/applications /)にコピーすると、両方のGUIでローカルファイルが優先されるように見えます。メニュー(WhiskerおよびXubuntuアプリケーションメニューを試しました)およびファイルマネージャー(thunarおよびspacefmを試しました)。

したがって、上記の--socket-fileオプションをローカルのgeany.desktopに追加して、ワークスペースごとに1つのgeanyインスタンスを作成するか、他の回答で提案されている-iオプションを追加して、呼び出しごとに1つのgeanyインスタンスを作成できます。

コマンドラインからgeanyを起動するときは、もちろん、選択したオプションを追加したり、エイリアスに含めたりして、同じ動作をさせることができます。

0
db-inf