Qutebrowser : quelques astuces

Depuis quelques jours, à la faveur d'un toot de @KazukyAkayashi@meow.zarchbox.fr, je fais mumuse avec le navigateur Qutebrowser qui présente la particularité d'être entièrement pilotable au clavier, et d'être réputé léger. Je n'ai réalisé à aucune mesure objective, mais le chargement des pages semblent plus rapide qu'avec #Firefox. L'utilisation au clavier, à la Vim, ne présente pas de difficulté pour moi qui utilise déjà Vimium C sur Firefox.

Ce billet ne pas à fournir une introduction, ou un guide de prise en main, de #Qutebrowser (on trouve largement ce qu'il faut sur le Web, en commençant par le site officiel), mais plutôt à mettre en évidence quelques fonctionnalités, réglages ou astuces qui me semblent particulièrement utiles.

Générer et utiliser config.py

Une des façons d'effectuer ses réglages est de créer un fichier config.py, situé sous $HOME/.config/qutebrowser. Mais inutile de partir de zéro : la commande :config-write-py va en générer un, en se basant sur les réglages actuels.

Pour prendre en compte les modifications apportées à ce fichier, nul besoin de relancer son navigateur : l'exécution de la commande :config-source fera l'affaire.

Charger automatiquement ses préférences

Certains réglages se faisant “à la volée”, comme par exemple l'acceptation ou le refus des notifications émises par un site Web, sont stockés par Qutebrower dans le fichier $HOME/.config/qutebrowser/autoconfig.yml. Or, par défaut, ces réglages ne sont pas chargés au lancement du logiciel.

Pour corriger cela, il suffit de modifier config.py et de décommenter (ou créer) la ligne config.load_autoconfig().

Enchaîner les commandes avec ;;

On peut facilement enchaîner les commandes avec ;;. C'est une possibilité que j'utilise pour reproduire le comportement des onglets épinglés sous Firefox : avec ce dernier, les onglets épinglés sont automatiquement déplacés sur la gauche, alors qu'ils demeurent en place avec Qutebrowser. Pour obtenir le comportement voulu (en l'occurrence, à l'aide des touches gp), ça donne ça :

config.bind('gp', 'tab-pin ;; tab-move')

Des bookmarklets sans javascript

S'il est possible d'utiliser le code javascript original des bookmaklets en “bindant” la commande jseval suivi du code en question, il peut être parfois beaucoup plus simples d'utiliser les commandes natives de Qutebrowser. Par exemple, le bookmarklet de Shaarli peut être traduit ainsi :

config.bind(',t', ':open -t https://<url_de_mon_shaarli>/?post={url}&title={title}&description={primary}')

L'usage de {primary} permet, comme avec le bookmarklet, de pré-remplir le champ “description” du formulaire Shaarli avec le texte sélection.

L'utilisation d'une telle commande native en lieu et place du code javascript possède un avantage : ce dernier s'appuie sur la fonction javascript window.open qui oblige à passer le réglage content.javascript.can_open_tabs_automatically à true. On peut donc au contraire la laisser à false et surfer ainsi plus tranquillement…

Basculer rapidement entre 2 onglets

Il m'arrive souvent de devoir basculer rapidement entre deux onglets. La commande qui permet cela ne m'a pas sauté aux yeux, et j'ai dû fouiller sur le Github de Qutebrowser pour trouver la réponse. Celle-ci est en fait très simple : il faut utiliser la commande :tab-focus avec l'argument last.

Ainsi, avec config.bind('e', 'tab-focus last'), des appuis successifs sur e permettent des va-et-viens entre deux onglets.

Alterner true/false

Revenons-en aux réglages. Pour alterner entre les valeurs true et false, il faut utiliser la commande config-cycle. C'est ce qui est utilisé par la combinaison des touches tSh pour alterner entre l'activation et la désactivation du javascript pour un domaine donné : config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload

Personnaliser ses règles de filtrages anti-pub

Une astuce trouvée sur le Wiki d'Archlinux pour personnaliser ses règles de filtrages. On peut ajouter une série de règles dans son config.py à l'aide de c.content.host_blocking.lists.append(), en renseignant une source locale ou distante. Voici ce que j'utilise :

c.content.host_blocking.lists.append("https://sebsauvage.net/hosts/hosts")
c.content.host_blocking.lists.append("file://" + str(config.configdir) + "/blockedHosts")

La première ligne permet d'utiliser la liste de blocage DNS proposée par @sebsauvage@framapiaf.org ; la seconde d'utiliser un fichier personnel nommé blockedHosts et situé dans $HOME/.config/qutebrowser.

Ne pas oublier d'exécuter :adblock-update de temps en temps !

Accéder à la page des onglets ouverts

La commande :buffer permet de lister les onglets ouverts et de se rendre sur l'onglet de son choix. Mais, si elle est exécutée sans argument, alors elle ouvre une nouvelle page listant l'ensemble des dits onglets. Ce peut être pratique pour effectuer une recherche à l'aide de / par exemple, ou pour sauvegardre cette liste.

Accéder à la page de tous ses “bindings”

De la même façon, la commande :bind, qui permet d'attribuer une commande à une touche (ou une combinaison de touches) ouvre une page listant l'ensemble des “bindings” actuels si elle est exécutée sans argument.

Des mots-clefs par moteur de recherche

Renseigner c.url.searchengines permet de lancer une recherche sur le moteur de son choix à l'aide de la commande :open suivi d'u simple mot-clef. Voici un extrait de ce que j'utilise :

c.url.searchengines = {
        'DEFAULT': 'https://www.startpage.com/do/dsearch?query={}',
        'def': 'https://cnrtl.fr/definition/{}',
        'news': 'https://news.google.com/search?q={}',
        'syn': 'https://cnrtl.fr/synonymie/{}',
        'w': 'https://fr.wikipedia.org/w/index.php?search={}'
        }

Ceci n'est pas une conclusion

Y'aurait certaintement plein d'autres choses à écrire. Je découvre (ou plutôt redécouvre, puisque je l'avais déjà testé voici plusieurs années) ce navigateur vraiment très agréable à utiliser, et avec lequel j'ai bien envie de faire un bout de chemin.

#logicielLibre

@jln@mastodon.zaclys.com