Я добавил дополнительные поисковые системы (например, AskUbuntu, Wolfram, YouTube) в каталог /usr/share/gnome-shell/search_providers
. Это прекрасно работает. Однако порядок, в котором они появляются в Обзор деятельности , не логичен.
Можно ли изменить порядок, в котором отображаются поисковые службы?
Бонус: как сделать один из них по умолчанию?
Существует ключ, который упомянут в коде поиска оболочки гнома, который позволяет Вам указывать, какие поисковые поставщики не должны быть отображены...
Путем изменения логики можно изменить это, чтобы быть поисковым списком заказов - например,
gsettings set org.gnome.shell disabled-open-search-providers "['duckduckgo.xml', 'google.xml', 'wikipedia.xml']"
gsettings set org.gnome.shell disabled-open-search-providers "['wikipedia.xml', 'duckduckgo.xml', 'google.xml']"
как к
Сначала сделайте резервную копию поискового сценария:
sudo cp /usr/share/gnome-shell/js/ui/search.js /usr/share/gnome-shell/js/ui/search.js.backup
Теперь отредактируйте поисковый сценарий:
gksudo gedit /usr/share/gnome-shell/js/ui/search.js
Ищите функцию, содержащую следующий код (это, вероятно, запускается на строке 325):
_refresh: function() {
this._providers = [];
let names = global.settings.get_strv(DISABLED_OPEN_SEARCH_PROVIDERS_KEY);
let file = Gio.file_new_for_path(global.datadir + '/search_providers');
FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
for (let i = 0; i < files.length; i++) {
let enabled = true;
let name = files[i].get_name();
for (let k = 0; k < names.length; k++)
if (names[k] == name)
enabled = false;
if (enabled)
this._addProvider(name);
}
}));
}
Измените эту функцию, чтобы быть:
_refresh: function() {
this._providers = [];
let names = global.settings.get_strv(DISABLED_OPEN_SEARCH_PROVIDERS_KEY);
let file = Gio.file_new_for_path(global.datadir + '/search_providers');
FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
for (let i = 0; i < names.length; i++) {
for (let k = 0; k < files.length; k++)
if (names[i] == files[k].get_name())
this._addProvider(names[i])
}
}));
}
Нажмите Alt+F2, тип 'r' и нажмите Enter. Это должно перезапустить оболочку Gnome). С другой стороны, выход из системы и вход в систему.
Связанные вопросы:
Чтобы сохранить значение переменной gsettings, другой возможностью было бы изменить search.js
, чтобы упорядочить файлы поставщиков поиска по имени:
FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
files.sort (function (first, second) {
return first.get_name () <= second.get_name ()? -1: 1
});
Затем вы переименовали бы файлы в /usr/share/gnome-shell/search_providers
как [ 115]
01_google.xml
02_wikipedia.xml
...
Карло.
Альтернативный метод: Gnome Shell, похоже, предпочитает поисковую систему, связанную с последним отредактированным файлом .xml
; для создания пользовательского расположения достаточно открыть файлы, сохранить их и перезапустить оболочку. Если вам нужен, например, заказ: Google, Wikipedia, DuckDuckGo, то сначала следует сохранить DuckDuckGo, затем Wikipedia, а затем Google.
Я обнаружил, что он упорядочивает их по времени. Поставщик поиска, который был добавлен последним, является первым. Поэтому, если вы хотите сначала привести Google, просто переместите его куда-нибудь, обновите ( Alt kbd> + F2 kbd> и R), скопируйте его в папку и обновите снова.