Is it possible to re-arrange the search providers on the GNOME Shell Activities Overview display?
I have added additional search providers (e.g., AskUbuntu, Wolfram, YouTube) in the /usr/share/gnome-shell/search_providers
directory. These work great. However, the order in which they appear on the Activities Overview is not logical.
Is it possible to change the order in which search providers are displayed?
Bonus: How do I make one the default?
11.10
There is a key that is referred to in the gnome-shell search code that allows you to specify which search providers should not be displayed...
By changing the logic you can change that to be a search order list - for example
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']"
how to
First make a backup copy of the search script:
sudo cp /usr/share/gnome-shell/js/ui/search.js /usr/share/gnome-shell/js/ui/search.js.backup
Now edit the search script:
gksudo gedit /usr/share/gnome-shell/js/ui/search.js
Look for the function containing the following code (it probably starts on line 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);
}
}));
}
Change this function to be:
_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])
}
}));
}
Press Alt+F2, type 'r' and press enter. This should restart Gnome-shell). Alternatively, logout and login.
credit
Linked Questions:
- Is it possible to customise the search engine buttons in GNOME Shell?
- Is it possible to remove or replace Google search in GNOME Shell's dash?
To preserve the meaning of the gsettings variable, another possibility would be to modify search.js
to order search providers files by name:
FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
files.sort (function (first, second) {
return first.get_name () <= second.get_name ()? -1: 1
});
Then you would rename the files in /usr/share/gnome-shell/search_providers
like
01_google.xml
02_wikipedia.xml
...
Carlo.
I found that it arranges them in time order. The search provider which was added latest is first. So if you want to bring Google first just move it somewhere, refresh (Alt+F2 and R), recopy it to the folder and refresh again.