Ubuntu – Is it possible to re-arrange the search providers on the GNOME Shell Activities Overview display

11.10gnomesearch

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?

Best Answer

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']"

enter image description here

gsettings set org.gnome.shell disabled-open-search-providers "['wikipedia.xml', 'duckduckgo.xml', 'google.xml']"

enter image description here

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:

  1. Is it possible to customise the search engine buttons in GNOME Shell?
  2. Is it possible to remove or replace Google search in GNOME Shell's dash?
Related Question