Geany:そのワークスペースでファイルを開くと、各ワークスペースの新しいインスタンスを開く

Geany:そのワークスペースでファイルを開くと、各ワークスペースの新しいインスタンスを開く

私はLinux Mint 13でMate 1.2.0を使用しています。私が使用する2つのテキストエディタはGeditとGeany(v0.25)です。私は構文の強調やその他のインタフェース機能を好むので、すべてのコーディングにGeanyを使用します。

しかし、私を迷惑にする一つのことは、次のような行動です。

  • Geanyのワークスペース1でファイルを開きます。
  • ワークスペース2に移動
  • ファイルをダブルクリックして開きます(Geanyから)。
  • デスクトップをワークスペース1に戻し、Geanyでファイルを開きます。

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

できるプログラムメニューから別のGeanyインスタンスを起動し、それを別のワークスペースに移動しますが、動作は変わりません。これにより、以下が表示されます。

  • Geanyのワークスペース1でファイルを開きます。
  • ワークスペース2に移動
  • [プログラム]メニューから新しいGeanyインスタンスを起動します(現在、ワークスペースごとに1つのインスタンスがあります)。
  • ファイルをダブルクリックして開きます(Geanyから)。
  • デスクトップをワークスペース1に戻し、最初のGeanyインスタンスでファイルを開きます。

したがって、これは常に「デフォルト」Geanyでファイルを開いてからその中のワークスペースに切り替えるのと同じです。

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

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

設定にはオプションが表示されません。どんな提案にも感謝します!ありがとう

答え1

この配置を使用してGeanyを開きます。これにより、各ワークスペースに固有の別々のソケットが開きます。

たとえば、Thunarは他のアプリケーションで開くを使用し、このバッチファイルを指します。

#!/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

答え2

端末に行き、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

コメントには長すぎて回答として投稿します。私はOlivierの答えを正しく理解するのに苦労しました。 。

以下を含むバッチファイルを作成します。

#!/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(1つが存在しない、または機能していない場合/権限がない場合は別のものを試してください)に進み、次のものを含む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あえて見つかりませんでした。ファイルを保存すると、バッチファイルが接続プログラムダイアログボックスに表示されます。 (該当する形式のファイルプロパティに移動し、[接続プログラム]タブに移動してwgeanyをデフォルトのアプリケーションに設定し、そのファイル形式(.txtなど)のデフォルトのアプリケーションとして設定できます。


また、この問題を解決するのに役立つMaxWilliamsにも感謝します。

答え4

FileとOpenを使用すると、Geanyは現在の「デフォルト」インスタンス(つまり、最初のインスタンスではなく現在使用中のGeanyインスタンス)でファイルを開きます。

関連情報