суббота, 4 августа 2012 г.

Делаем поиск приложений в GNOME Shell немного быстрее

Поиск в GNOME Shell сделан таким образом, что по одному запросу выдаются сразу результаты всех типов: приложения, настройки, контакты, документы и др., даже если они нам не нужны. И это, естественно, отрицательно сказывается на скорости поиска. Благо разработчики GNOME заботятся о пользователях и их можно отключить. О том, как это сделать написано под катом.
Сделаю небольшое отступление по поводу терминологии. В GNOME Shell за каждый тип искомых данных отвечает отдельный "поставщик поиска" (англ. search provider). В Unity примерно тоже самое названо линзами.

Вариант первый

Он самый простой надежны, но и самый "неправильный". Заключается в удалении кода GNOME Shell, который отвечает за соответствующий типы.
Дефолтные поставщики поиска определены в файле "/usr/share/gnome-shell/js/ui/overview.js":
// Default search providers
// Wanda comes obviously first
this.addSearchProvider(new Wanda.WandaSearchProvider());
this.addSearchProvider(new AppDisplay.AppSearchProvider());
this.addSearchProvider(new AppDisplay.SettingsSearchProvider());
this.addSearchProvider(new PlaceDisplay.PlaceSearchProvider());
this.addSearchProvider(new ContactDisplay.ContactSearchProvider());
Дополнительные же поставщики определяются в отдельных файлах каталога "/usr/share/gnome-shell/search-providers/".
Закомментировав строки и(или) удалив файлы, относящиеся к ненужным поставщикам мы избавимся от них.
Способ плох тем, что каталог "/usr" традиционно считается "территорией пакетного менеджера" и лезть туда пользователю не стоит. К тому же ручное изменение файлов GNOME Shell может повлечь за собой проблемы при обновлении.

Вариант второй

Заключается в использовании расширений для GNOME Shell, которые отключают ненужных нам поставщиков. Такие расширения есть на extensions.gnome.org, но я написал свое. Оно отключает поиск всех типов кроме приложений и настроек. Скачать его можно на GitHub. Для установки нужно распаковать архив в директорию "~/.local/share/gnome-shell/extensions/". Возможно еще придется включить его, например, воспользовавшись утилитой Gnome Tweak Tool.
Код расширения тривиален и при желании разобраться в нем не составит большого труда. Работает оно пока только с GNOME 3.4, с выходом 3.6 я его обязательно обновлю.

Заключение

Таким нехитрым образом, пожертвовав ненужной нам функциональностью, мы получили заметно более шустрый поиск по приложениям.