ああ、Ubuntuとそのすべての機能が大好きですが、この「バグ」は私を長い間怒らせてきたので、ついにここで助けを求めることにしました。
すべての.php
を割り当てました nautilusでファイルをダブルクリックするたびにgeditで開くファイル。さて、振る舞いはおかしいです。
- geditを実行していません
- 開くファイルをダブルクリックします
- geditウィンドウが開き、ファイルが読み込まれます
- 開く別のファイルをダブルクリックします
現在、2つの可能な結果があります:
5A)ファイルが同じgeditウィンドウの新しいタブで開きます
5B)ファイルが新しいgeditウィンドウで開き、2つのgeditが実行されます。
AとBのどちらが発生するかは完全にランダムであるように思われ、無限に進み続けます。つまり、100個のファイルをダブルクリックすると、60個のgeditが作成される可能性があります。そのうちのいくつかには、1つのタブがあり、いくつかには2つのタブがあり、いくつかには3つのタブがあります…
これは非常に煩わしいので、これを修正していただければ幸いです。誰かがこの問題を解決しようとしたことがありますか?
これはUbuntu10.04、10.10、11.10で発生しました。私がこれまでにテストしたすべてのUbuntuバージョン。
ベストアンサー
理由…
gedit
新しいインスタンスを開くか、既存のインスタンスのタブで開くかを判断するための非常に興味深いアルゴリズムがあります。
ソースファイルgedit-app.c
にあります 関数static boolean is_in_viewport
で 、アルゴリズムは現在のgeditインスタンスが
- 同じ画面番号と表示名で
- 同じワークスペース内
- ビューポートのエッジの25%以上
すべてがtrueの場合、geditは同じインスタンスで新しいタブで開きます。それ以外の場合は、新しいウィンドウで開きます。
要約すると、動作を変更する唯一の現実的な方法は、アルゴリズムを変更することです…
方法…
以下は、geditを開く一貫した方法を取得するための簡単な方法です…常に新しいインスタンスを開きます。
基本的な開発ツールをインストールする
sudo apt-get install devscripts build-essential fakeroot
ソースを入手
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
変更を加える
gedit-app.cを開きます
gedit gedit/gedit-app.c
return FALSE;
を追加します 示されているように保存します。
これは、「ビューポートで実行されていないため、常に新しいインスタンスを開く」と言ってルーチンを常に終了することです。
return TRUE;
を使用する場合 これは、新しいタブのgeditの既存のインスタンスで常に開きます…
一意のパッケージ名を付けます
OK、リポジトリの更新によって変更されたパッケージが上書きされないように、パッケージに一意の名前を付ける必要があります
gedit debian/changelog
ここで+yourname
を追加します トップラインバージョンに移動し、ファイルを保存します。つまり
注–確実に–以下の変更されたパッケージをインストールした後、以下のリンクされた質問に従ってバージョンをロックしてください。
パッケージを作成する
sudo apt-get build-dep gedit
debuild -i -us -uc -b
コーヒーを飲みに行く…
cd ..
sudo dpkg -i gedit*.deb
リンクされた質問:
- 特定のパッケージの更新を防ぐ方法は?