Почему gedit постоянно открывает новые экземпляры при открытии файлов из nautilus?

О, как я люблю Ubuntu и все его возможности, но эта «ошибка» так долго злила меня, и я наконец решил попросить о помощи здесь.

Я назначил все .php файлы для открытия с помощью gedit всякий раз, когда я дважды щелкаю по ним в nautilus. Сейчас поведение странное.

  1. У меня нет запущенного gedit
  2. Я дважды щелкаю открываемый файл
  3. Открывается окно gedit, и файл загружается
  4. Я дважды щелкаю по другому файлу

Теперь есть 2 возможных результата:

5A) Файл открывается в том же окне gedit в новой вкладке

5B) Файл открывается в новом окне gedit, в результате чего запускается 2 gedits.

1111 То, случается ли А или В, кажется совершенно случайным и продолжается бесконечно. Это означает, что я дважды щелкну по 100 файлам, и у меня может получиться 60 гедитов, некоторые из которых будут иметь 1 вкладку, некоторые - 2 вкладки, некоторые - 3 вкладки ...

Это очень раздражает, и исправление было бы очень ценно. Кто-нибудь когда-нибудь пытался решить эту проблему?

Это произошло в Ubuntu 10.04, 10.10 и 11.10. Все версии Ubuntu, которые я когда-либо тестировал.

32
задан 13 June 2012 в 18:36

5 ответов

Этого не происходит случайным образом

По умолчанию Gedit не сделан открыть много экземпляров, но один каждый дисплей. Если u откроются в дисплее, где еще не Gedit, откроется, файлы в ведьме Gedit существует теперь в том дисплее от ведьмы, открытый файл.

Таким образом, можно сделать 1-й экземпляр gedit, чтобы быть на Всех рабочих областях, таким образом, он следует активным дисплеем. Или работа над каждой рабочей областью с каждым проектом и каждый с его собственным открыл Gedit's. В сочетаниях клавиш можно сделать новый ярлык для переключения окна, находящегося на всех рабочих областях.

ИЛИ его возможные, чтобы заставить его всегда открыться в новом экземпляре с помощью команды ярлыка в Открывают With.. gedit --new-window

Таким образом, можно попробовать в php свойствах, открытых со сбросом, и поместить новое открытие только с Gedit

использование gedit --help-all ull видят другую опцию открытия с gedit.

И можно также попытаться удалить gedit со всеми конфигурационными файлами и установить его чистое использование sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit

ОБНОВЛЕНИЕ: Я смог воспроизвести - когда движущееся окно немного от экрана, затем открывающего некоторый файл, открывается в новом окне. Это так или иначе думает что в другом Дисплее.

2
ответ дан 13 June 2012 в 18:36

Почему ...

gedit имеет довольно интересный алгоритм, чтобы определить, открывает ли он новый экземпляр или открывает ли он на вкладке в существующем экземпляре.

Расположенный в исходном файле gedit-app.c в функции static boolean is_in_viewport, алгоритм проверяет, является ли текущий экземпляр gedit

  1. с тем же номером экрана и отображаемым именем
  2. в том же рабочем пространстве
  3. больше 25% ребер порта просмотра

Если все верно, то 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

enter image description here

добавьте return FALSE;, как показано, и сохраните.

Для этого всегда нужно выйти из процедуры, говоря «я не работаю в окне просмотра и поэтому всегда открываю новый экземпляр»

Если вы используете return TRUE;, это будет всегда открывать в существующем экземпляре gedit в новой вкладке ...

присвоить ему уникальное имя пакета

ОК, нам нужно дать пакету уникальное имя, чтобы обновления хранилища не могли перезаписать ваш измененный пакет

gedit debian/changelog

Теперь добавьте +yourname в верхнюю версию и сохраните файл, т.е.

Примечание - чтобы быть абсолютно уверенным - после установки модифицированного пакета ниже заблокируйте версию согласно связанному вопросу ниже.

enter image description here

собрать пакет

sudo apt-get build-dep gedit
debuild -i -us -uc -b

Перейти на кофе ...

cd ..
sudo dpkg -i gedit*.deb

Связанный вопрос:

  1. Как предотвратить обновление определенного пакета?
0
ответ дан 13 June 2012 в 18:36

Я хотел, чтобы все файлы открывались только в одном окне Gedit. Я не нашел эту информацию где-то еще, но со следующими изменениями мне удалось открыть все текстовые файлы только в одном окне в виде новых вкладок, независимо от того, как я их открываю (через панель запуска, через nautilus, через Gnome DO). [ 1110]

  1. Получить номер дисплея: введите echo $DISPLAY в командной строке. например вы получаете :0 в качестве вашего номера дисплея.

  2. Откройте /usr/share/applications/gedit.desktop в качестве суперпользователя с помощью текстового редактора.

  3. Измените строку, сказав:

    Exec=gedit %U
    

    на

    Exec=gedit --display=:0 %U
    

    где :0 - номер вашего дисплея.

0
ответ дан 13 June 2012 в 18:36

Это начало происходить со мной. Я не мог найти соответствующий файл conf, и даже попытался очистить + очистить. Наконец-то нашел, что это было. Окно Gedit открывалось так, что казалось, что оно было развернуто, но это не так. Я нажал кнопку максимизации в окне, и это решило проблему! Обратите внимание, что окно не изменило размер, только углы перешли от круглого к квадратному. Похоже, что это должно быть ошибкой в ​​алгоритме @fossfreedom, описанном выше.

Примечание. Когда вы закрываете окно, состояние максимизации / минимизации должно быть сохранено в каком-либо пользовательском конфигурационном файле. Это состояние сохраняется после очистки + очистки, и оно также не входит в конф. Gedit для каждого пользователя.

0
ответ дан 13 June 2012 в 18:36

Просто разверните окно gedit на весь экран, и все откроется на разных вкладках. Работал у меня в Ubuntu 18.

1
ответ дан 15 March 2020 в 02:47

Другие вопросы по тегам:

Похожие вопросы: