J'ai ajouté des fournisseurs de recherche supplémentaires (par exemple, AskUbuntu, Wolfram, YouTube) dans le répertoire /usr/share/gnome-Shell/search_providers
. Ceux-ci fonctionnent très bien. Cependant, l'ordre dans lequel ils apparaissent sur le aperçu des activités n'est pas logique.
Est-il possible de changer l'ordre d'affichage des moteurs de recherche?
Bonus: Comment puis-je en faire un par défaut?
Il existe une clé à laquelle le code de recherche gnome-Shell fait référence, qui vous permet de spécifier quels fournisseurs de recherche doivent et non être affichés ...
En changeant la logique, vous pouvez changer cela en liste d’ordre de recherche - par exemple
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']"
comment
Commencez par créer une copie de sauvegarde du script de recherche:
Sudo cp /usr/share/gnome-Shell/js/ui/search.js /usr/share/gnome-Shell/js/ui/search.js.backup
Maintenant, éditez le script de recherche:
gksudo gedit /usr/share/gnome-Shell/js/ui/search.js
Recherchez la fonction contenant le code suivant (elle commence probablement à la ligne 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);
}
}));
}
Changer cette fonction pour être:
_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])
}
}));
}
Appuyez sur Alt + F2, tapez 'r' et appuyez sur enter. Cela devrait redémarrer Gnome-Shell). Vous pouvez également vous déconnecter et vous connecter.
Questions liées:
Pour préserver le sens de la variable gsettings, une autre possibilité serait de modifier search.js
pour classer les fichiers des fournisseurs de recherche par nom:
FileUtils.listDirAsync(file, Lang.bind(this, function(files) {
files.sort (function (first, second) {
return first.get_name () <= second.get_name ()? -1: 1
});
Ensuite, vous renommeriez les fichiers dans /usr/share/gnome-Shell/search_providers
comme
01_google.xml
02_wikipedia.xml
...
Carlo.
J'ai trouvé qu'il les arrange dans l'ordre chronologique. Le moteur de recherche ajouté en dernier est le premier. Donc, si vous voulez amener Google d'abord, déplacez-le quelque part, actualisez-le (Alt+F2 et R), recopiez-le dans le dossier et actualisez-le à nouveau.
Méthode alternative: Gnome Shell semble préférer le moteur de recherche lié au fichier .xml
le plus récemment édité; pour créer un arrangement personnalisé, il vous suffira d'ouvrir les fichiers, de les enregistrer et de redémarrer le shell. Si votre ordre souhaité est, par exemple: Google, Wikipedia, DuckDuckGo - alors DuckDuckGo devrait être celui que vous avez enregistré en premier, suivi de Wikipédia, puis de Google.