Firefox hidden feature — places in bookmarks

Mon, 19 September, 2016 (1100 Words)

Je réalise que j'utilise Firefox depuis bien plus de 10 ans maintenant (on doit être à minimum 15 ans en fait…). Et je me souviens d'un temps où je souhaitais rendre mes bookmarks (marque-pages 👼) dynamique. Après tout ils existent de base dans Firefox (e.g. Most visited), il doit donc être possible d'en faire soit même.

Il fut un temps où c'était facile à mettre en place — ouvrir la gestion des marques pages, chercher quelque chose et cliquer sur le bouton save pour sauvegarder cette recherche en tant de bookmark dynamique.

Note: comme j'avais grave lutté à l'époque, et que j'ai encore lutté cette fois ci, cet article va me servir de pense-bête pour le futur.

Places

C'est le petit nom que possède cette fonctionnalité dans le cœur de Firefox. C'est un nom relativement commun, du coup ça n'aide pas trop la recherche d'information… Le meilleur endroit pour se documenter reste alors le Mozilla Developer Network

Et ce qu'on peut lire sur cette page c'est :

Places is the bookmarks and history management system introduced in Firefox 3. It offers increased flexibility and complex querying to make handling the places the user goes easier and more convenient. It also includes new features including favicon storage and the ability to annotate pages with arbitrary information.

C'est donc un mécanisme interne qui permet d'annoter des pages (bookmarks, history, …) et surtout un requêtage plus complexe et flexible que le système précédent. On peut noter également que c'est arrivé en version 3, et qu'à la date du jour, la version courante de Firefox est la 48. En espérant donc que ce soit toujours le système en place (spoiler alert: ça a l'air d'être le cas).

firefox-place-awesomebar-example.png

Figure 1: An example of places usage in the awesome bar

Les petits encarts en noir ci-dessus sont un exemple de ces places. Ici il s'agit des tags qui ont étés apposer sur les bookmarks ; on voit d'ailleurs que ce sont des bookmarks puisqu'ils ont une petite étoile à côté du joli petit favicon. Firefox a pris les termes que j'ai écrit dans la barre d'url et à faire une recherche dans les places suivant différents critères (l'url, les tags pour les bookmarks, …).

Places dans les bookmarks

L'idée est d'utiliser cette fonctionnalité pour faire des bookmarks dynamique. Pour poser un peu de contexte, j'utilise surtout la bookmark toolbar pour accéder à des pages dont j'ai besoin (au hasard, le webmail du boulot, une page précise d'issues sur github, des pages de guide/référence/manuel sur des outils que j'utilise…) et également en mode read that later.

firefox-place-bookmark-toolbar.png

Figure 2: Ma bookmark toolbar

Par exemple, dans mon dossier inbox, il y a plusieurs sous-dossiers (en fait des dossiers dynamique, mais j'y reviendrais plus tard), genre docker, nix, golang, java, etc. Tout ce qui traîne dans inbox est à lire ou à trier (inbox se réfère un peu à ce que l'on peut voir avec GTD). Chaque sous dossier était une sorte de filtre par projet, langage ou /whatever/…

Nous allons donc ruser un peu et utiliser les places dans nos bookmarks pour en faire des dossiers dynamique, à l'instar de Most Visited. Pour se faire, il faut déjà trouver un peu de documentation sur l'utilisation de ces fameuses places au sein de bookmarks — et ça pèche un peu… Toujours sur le Mozilla Developer Network, une page un peu caché nous révèle quelques informations : Places query URIs.

You can use a place URI as a bookmark. For example, if you right-click on the toolbar and choose "New Bookmark," you can enter a place URI there to create a new query on your toolbar that, when clicked, will reveal a popup containing the results of the query.

Victoire \o/, il suffit de créer un bookmark avec comme URI une place:… URI et c'est gagné. Ainsi, un bookmark avec comme URI place:terms=nixos me retournera un dossier dynamique qui contiens tous les liens (history, bookmarks, …) qui contiennent le mot nixos — en gros l'équivalent de ce que nous aurions si nous tapions nixos dans la awesomebar.

Si l'on regarde d'un peu plus près Places query URIs, il y a une longue liste de paramètres possible. Il y en a pour presque tous les goûts : le temps (utile pour afficher l'historique, mais pas trop), les visites, le type de place (bookmark, history, …), le domaine de l'élément, le dossier dans lequel il se trouve, l'URI, les tags… j'en passe et des meilleurs.

Si par exemple, je souhaite n'afficher que les pages visités aujourd'hui, triés par nombre de visites et limités à 10 résultats, je peux mettre comme URI :

place:queryType=0&sort=8&maxResults=10&beginTimeRef=1&beginTime=0

Et on obtiens ça :

firefox-place-most-visited-today.png

Mais revenons à nos moutons, moi ce que je souhaite, c'est faire des dossiers dynamique par tag, i.e. les tags que l'on peut setter lorsqu'on ajoute un bookmark. Et ça tombe bien, un des paramètres s'appelle tag et fait exactement ça. Je souhaite également pouvoir faire des ET sur mes tags — par exemple, dans mon dossier inbox/nixos je veux tous les bookmarks qui sont taggués inbox et nixos. Et c'est simple, il suffit de lui donner les deux.

place:tag=inbox&tag=nixos

Rétrospective

Voilà, vous avez maintenant tout ce qu'il faut pour faire des dossiers dynamiques dans vos bookmarks Firefox et vous organiser au mieux ( ou pas). Quelques points à noter :

  • L'icône du dossier dynamique — ou même la fonctionnalité à proprement parler= n'apparaît pas de suite. Il faut parfois redémarrez Firefox pour profiter du nouveau dossier dynamique.
  • Une fois que le bookmark est vu comme un dossier dynamique, il n'est plus possible d'éditer l'URI. Si vous voulez en changer un, il faut tout bonnement le recréer.
  • Bien que ce soit une fonctionnalité que je trouve géniale, il y a peu de presse sur le sujet et à mon grand étonnement, aucun plugin pour gérer ça plus proprement. Est-ce le signe qu'un jour ce ne sera plus supporter, je n'en ai aucune idée.
  • Un point très positif si vous utilisez Firefox Sync : ça marche bien (pas vraiment étonnant en fait), ces dossiers se synchronise comme le reste et seront donc à disponible quelque soit l'appareil sur lequel vous utilisez firefox \o/.