<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Colas.Nahaboo.net - browser</title>
    <subtitle>Colas Nahaboo personal site, with discussions about programming code, web and computing topics, surfing and SUPing, and various musings.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://colas.nahaboo.net/tags/browser/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://colas.nahaboo.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-25T00:00:00+00:00</updated>
    <id>https://colas.nahaboo.net/tags/browser/atom.xml</id>
    <entry xml:lang="en">
        <title>Save these Firefox tabs for later</title>
        <published>2026-04-13T00:00:00+00:00</published>
        <updated>2026-04-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/code/save-these-firefox-tabs-for-later/"/>
        <id>https://colas.nahaboo.net/code/save-these-firefox-tabs-for-later/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/code/save-these-firefox-tabs-for-later/">&lt;p&gt;I often look for some concept out of curiority, and end up with tens of browser tabs opened on the subject, and realize that I have no time now to pursue this rabbit into his hole, end up with tons of Firefox windows with tens of tabs gathering dust (and eating RAM) on my desktop. Up to now I just created Foswiki pages or Trello tasks as reminders to tackle these projects later on, but it required enough manual work to often postpone doing it and either losing the info or be swamped in thousands of tabs. And saving them as Firefox bookmarks was cumbersome and required lots of manual management.&lt;&#x2F;p&gt;
&lt;p&gt;What I decided to do is a simple way to save all these tabs offline, and be able to re-open the window simply. I bundle them into what I call &lt;strong&gt;.ffst files&lt;&#x2F;strong&gt; (for FireFox Saved Tabs), simple text files of one url per line, into a &lt;code&gt;~&#x2F;firefox-savedtabs&#x2F;&lt;&#x2F;code&gt; directory.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Saving a set of tabs&lt;&#x2F;strong&gt;:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Select the tabs (click on the first one, shift-click on the last one)&lt;&#x2F;li&gt;
&lt;li&gt;Open the right-mouse-button menu on a tab, and select &lt;code&gt;Copy URLs&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Create a new file (e.g: &lt;code&gt;some-name.ffst&lt;&#x2F;code&gt;) in the &lt;code&gt;~&#x2F;firefox-savedtabs&#x2F;&lt;&#x2F;code&gt; directory with your favorite editor,&lt;&#x2F;li&gt;
&lt;li&gt;Paste the tabs into it,&lt;&#x2F;li&gt;
&lt;li&gt;Save.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Restoring the tabs into a new window:&lt;&#x2F;strong&gt; either by:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;running the script below &lt;code&gt;firefox-savedtabs-restore&lt;&#x2F;code&gt; without arguments, and choosing which file to restore.&lt;&#x2F;li&gt;
&lt;li&gt;running the script with the ffst file as argument:&lt;br &#x2F;&gt;
&lt;code&gt;firefox-savedtabs-restore some-name.ffst&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Browsing the directory  &lt;code&gt;~&#x2F;firefox-savedtabs&#x2F;&lt;&#x2F;code&gt; in a file explorer window, and choosing to open the .ffst file with &lt;code&gt;Firefox SavedTabs restore&lt;&#x2F;code&gt; once you have created the &lt;code&gt;~&#x2F;.local&#x2F;share&#x2F;applications&#x2F;firefox-savedtabs.desktop&lt;&#x2F;code&gt; file below&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I can thus just mention the .ffstr file in my various &quot;todo&quot; places (TODO lists, TODO files, pinboard, wikis, trello, ...)&lt;&#x2F;p&gt;
&lt;p&gt;Note that you can adapt this to any browser, and choose whatever directory name and file extension you want.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Updating&lt;&#x2F;strong&gt; the tabs is just re-copying the urls and re-pasting in the file.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-two-scripts-are&quot;&gt;The two scripts are:&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-two-scripts-are&quot; aria-label=&quot;Anchor link for: the-two-scripts-are&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;usr-local-bin-firefox-savedtabs-restore&quot;&gt;&#x2F;usr&#x2F;local&#x2F;bin&#x2F;firefox-savedtabs-restore&lt;a class=&quot;zola-anchor&quot; href=&quot;#usr-local-bin-firefox-savedtabs-restore&quot; aria-label=&quot;Anchor link for: usr-local-bin-firefox-savedtabs-restore&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Note that you can modify in it the &lt;code&gt;restore&lt;&#x2F;code&gt; function to use with another browser.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #4C4F69; background-color: #EFF1F5;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #EA76CB;font-style: italic;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;# shellcheck disable=SC1090,SC2155,SC2046 # source files, declare&amp;amp;assign&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;# restore saved tabs bundles (text files of urls, one per line)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&#x2F;firefox-savedtabs&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;restore&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;(){&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;    mapfile&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; -t urls&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E64553;font-style: italic;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;    firefox&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; --new-window &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;${urls&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt;    exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE640B;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span&gt; $#&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE640B;&quot;&gt; 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;    # Without args, list the saves, most recent first, and prompt to restore&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt;    echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;In ~&#x2F;.firefox-savedtabs&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt;    cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt; exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE640B;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    select&lt;&#x2F;span&gt;&lt;span&gt; i in &lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; . -type f -name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt; \*&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;.ffst&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;                    -printf &amp;#39;%TY-%Tm-%Td.%THh%TM:%TS %h&#x2F;%f\n&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;                   sed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; -e &amp;#39;s| [.]&#x2F;|_|&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt; sort&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;                   sed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; -re &amp;#39;s&#x2F;:[0-9]{2}[.][0-9]*&#x2F;&#x2F;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;);&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;        restore&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;${i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;#*&lt;&#x2F;span&gt;&lt;span&gt;_}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    done&lt;&#x2F;span&gt;&lt;span&gt;            &lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;    # with a file name or path, restore the window&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #E64553;font-style: italic;&quot;&gt;$1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;        restore&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    elif&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; !&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; ]] &amp;amp;&amp;amp; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt; -e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;font-style: italic;&quot;&gt;        restore&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    else&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt;        echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; &amp;quot;***Error: file not found: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #EA76CB;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt; in &lt;&#x2F;span&gt;&lt;span&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #40A02B;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D20F39;font-style: italic;&quot;&gt;        exit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #FE640B;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #8839EF;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;local-share-applications-firefox-savedtabs-desktop&quot;&gt;~&#x2F;.local&#x2F;share&#x2F;applications&#x2F;firefox-savedtabs.desktop&lt;a class=&quot;zola-anchor&quot; href=&quot;#local-share-applications-firefox-savedtabs-desktop&quot; aria-label=&quot;Anchor link for: local-share-applications-firefox-savedtabs-desktop&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #4C4F69; background-color: #EFF1F5;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DF8E1D;&quot;&gt;Desktop Entry&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;&quot;&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;&quot;&gt;Name&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;Firefox SavedTabs restore&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;# update-desktop-database ~&#x2F;.local&#x2F;share&#x2F;applications&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;&quot;&gt;Exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;usr&#x2F;local&#x2F;bin&#x2F;firefox-savedtabs-restore %u&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;&quot;&gt;Type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;Application&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;&quot;&gt;Terminal&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;false&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #1E66F5;&quot;&gt;MimeType&lt;&#x2F;span&gt;&lt;span style=&quot;color: #179299;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;x-scheme-handler&#x2F;x-firefox-savedtabs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #7C7F93;font-style: italic;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Browser-history</title>
        <published>2008-03-21T00:00:00+00:00</published>
        <updated>2026-04-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/browser-history/"/>
        <id>https://colas.nahaboo.net/blog/browser-history/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/browser-history/">&lt;p&gt;Browser-history started on February 15, 1996, out of a desire to overcome a Netscape bug: at the time, there was no global history. [Nowadays, in 2026, all browsers have one, of course.] Back then, if you closed a window, its entire history was lost.&lt;&#x2F;p&gt;
&lt;p&gt;For people visiting many sites, the ability to track where they had been meant they didn&#x27;t have to clutter their bookmarks file. If you weren&#x27;t sure a site was worth saving, you didn&#x27;t have to bookmark it; if you needed it later, you could just browse your history files.&lt;&#x2F;p&gt;
&lt;p&gt;Later, it occurred to me that this could also be a valuable add-on for people developing experimental browsers [a lot at the time], sparing them from having to build the functionality themselves.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history was a small, efficient daemon written in C. Real user services could be built on top of its log files to provide more advanced features, such as graphical representations, advanced search, or collective histories. While it could be seen as a &quot;quick-and-dirty hack&quot; compared to the general solution of using a personal proxy for housekeeping, it was easy to use and it worked.&lt;&#x2F;p&gt;
&lt;p&gt;I created this legacy page to help people find the archived version of the project, specifically the  &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20080321182348&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;browser-history&#x2F;&quot;&gt;latest version of 2000-07-20&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;The code&lt;&#x2F;strong&gt; archive itself is &lt;a href=&quot;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;blog&#x2F;browser-history&#x2F;browser-history-2.8.tgz&quot;&gt;browser-history-2.8.tgz&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Here is a screenshot of the page:&lt;&#x2F;p&gt;
&lt;p&gt;Enjoy!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&#x27;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20080321182348&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;browser-history&#x2F;&#x27; title=&#x27;web archive version&#x27;&gt;&lt;img src=&#x27;screenshot-page.png&#x27;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-manual-page&quot;&gt;The manual page&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-manual-page&quot; aria-label=&quot;Anchor link for: the-manual-page&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;name&quot;&gt;NAME&lt;a class=&quot;zola-anchor&quot; href=&quot;#name&quot; aria-label=&quot;Anchor link for: name&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;browser-history - external history of web browsers, such as netscape&lt;&#x2F;p&gt;
&lt;h3 id=&quot;synopsis&quot;&gt;SYNOPSIS&lt;a class=&quot;zola-anchor&quot; href=&quot;#synopsis&quot; aria-label=&quot;Anchor link for: synopsis&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;browser-history&lt;&#x2F;strong&gt; [ &lt;strong&gt;options&lt;&#x2F;strong&gt; ]&lt;&#x2F;p&gt;
&lt;h3 id=&quot;description&quot;&gt;DESCRIPTION&lt;a class=&quot;zola-anchor&quot; href=&quot;#description&quot; aria-label=&quot;Anchor link for: description&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Browser-History&lt;&#x2F;em&gt; is a client-side X daemon maintaining a
browser-independent global history of all the web sites you visited .Its
usage is very simple, just put the following line in your .xinitrc or
your X start-up script:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;browser-history &amp;amp;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;And open the file &lt;strong&gt;~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;strong&gt; and bookmark
it.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history came from the will to overcome a Netscape bug: there was
no global history, and if you close a window, its whole history is lost.
For people browsing lots of sites, having a possibility to track back
where one has been before means that you dont have to put everything in
your bookmarks file. If you are not sure if a site may be worth
remebering, don&#x27;t add it in your bookmarks. If you need it later, just
browse your history files.&lt;&#x2F;p&gt;
&lt;p&gt;Later, it came to our minds that this also could be a valuable add-on to
people writing experimental browsers, so they dont have to add this
functionality to their browser itself.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history is a small and efficient daemon. Real user services
could be built on top of the log files it maintains for more
possibilities (graphical representation, advanced search options,
collective histories). It can be seen as a quick-and-dirty hack wrt to
the general solution of using a personal proxy to provide this history
and housekeeping facilities. But in the meantime, it is easy to use and
it works.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;implementation&quot;&gt;IMPLEMENTATION&lt;a class=&quot;zola-anchor&quot; href=&quot;#implementation&quot; aria-label=&quot;Anchor link for: implementation&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Browser-History&lt;&#x2F;em&gt; spies your web browser and logs
in &lt;code&gt;~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;code&gt; all the URLs you went through. You
can then browse the log under Netscape or other browsers via the URL:
&lt;strong&gt;file:~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;strong&gt; (replace the ~ by your home
directory). It tracks automagically all already present browser windows,
and all new ones created in the future. This program has no user
interface. It just appens information to a log file in html format so
you can browse it through a web browser. If more that one hour has
passed since last entry, it draws an horizontal lines, and adds H1
headers to delimit new days. Each week (sunday mornings), it archives
the week history, compresses it by gzip (that you must have in your
path), and starts a new history with links to the older ones. To make
room you can just remove the obsolete history files. You can search
files for string XXX in shell via:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;zgrep XXX ~&#x2F;.browser-history&#x2F;*&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This version (2.6) works with Netscape, Arena and Amaya.&lt;&#x2F;p&gt;
&lt;p&gt;URLs can be excluded from logging by putting them, one per line in the
file &lt;strong&gt;~&#x2F;.browser-history&#x2F;history-log.exclude&lt;&#x2F;strong&gt; , then, if an URL begins
with a line from this file, it is not logged. In this file, empty lines
or lines beginning by # are comments This file is read once at startup,
and re-read when receiving the signal 1. e.g:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;# We exclude local files file: # Exclude search engines...
http:&#x2F;&#x2F;home.netscape.com http:&#x2F;&#x2F;guide.infoseek.com&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;When browser-history is run, it looks if another one is running, and by
default it kills the previous one if it is an older version. Otherwise,
it the new one is the same version number or older, it just aborts.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;options&quot;&gt;OPTIONS&lt;a class=&quot;zola-anchor&quot; href=&quot;#options&quot; aria-label=&quot;Anchor link for: options&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;All options can be given by their first letter: you can specify either
-verbose or -v, but you cannot group options, e.g. you must say &lt;strong&gt;-v
-k&lt;&#x2F;strong&gt; , but not &lt;strong&gt;-vk&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-display&lt;&#x2F;strong&gt; &lt;em&gt;display_name&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
Specifies X display, otherwise contents of $DISPLAY is used&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-verbose&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
outputs information on what it is doing. useful for debug.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-Version&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
prints version number and exit.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-logdir&lt;&#x2F;strong&gt; &lt;em&gt;directory&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
which directory to store files into? defaults to ~&#x2F;.browser-history&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-gzip&lt;&#x2F;strong&gt; &lt;em&gt;gzip_filename&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
the complete path to the &lt;strong&gt;gzip&lt;&#x2F;strong&gt; compressor. Defaults to &quot;gzip&quot;. E.g:&lt;&#x2F;p&gt;
&lt;p&gt;-gzip &#x2F;usr&#x2F;gnu&#x2F;bin&#x2F;gzip&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-seconds&lt;&#x2F;strong&gt; &lt;em&gt;delay&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
if two entries are made are more than &lt;em&gt;delay&lt;&#x2F;em&gt; seconds apart, an
horizontal rule will separate them, else just a simple line break.
Defaults to one hour (3600).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-replace&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, aborts.
Default is to replace it only if the version is older than ours.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-noreplace&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, aborts.
Default is to replace it only if the version is older than ours.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-kill&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, kills it,
then terminates immediately in all cases..TP &lt;strong&gt;-DontGrab&lt;&#x2F;strong&gt; Never Grab
the X Server, which might cause deadlocks while debugging, when
browser-history or gdb tries to print on the grabbed xterm or emacs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;log-file-format&quot;&gt;LOG FILE FORMAT&lt;a class=&quot;zola-anchor&quot; href=&quot;#log-file-format&quot; aria-label=&quot;Anchor link for: log-file-format&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;A log file can have some decorative HTML to represent days, but each
entry has the form: (on a single line since version 2.4)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #4C4F69; background-color: #EFF1F5;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;separator&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;b&amp;gt;name&amp;lt;&#x2F;b&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;a href=&amp;quot;URL&amp;quot;&amp;gt;URL&amp;lt;&#x2F;a&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    YYYY&#x2F;MM&#x2F;DD-HH:MN:SS &amp;lt;small&amp;gt;windowid&amp;lt;&#x2F;small&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;blockquote&gt;
&lt;p&gt;where the following items are:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;separator: either &lt;hr&gt; or &lt;br&gt;
name: the name of the document (window title)
URL: its URL
YYYY&#x2F;MM&#x2F;DD-HH:MN:SS: year, month number, day number, hour,
minutes, seconds. (2-digit numbers)
windowid: the X window ID of the browser window, in hexadecimal&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;&#x2F;strong&gt; Before version 2.4, the 4 sub-parts were separated by newlines,
but since 2.4, they are only blank-separated to ease searching for URL
in log files via &quot;grep&quot;. &lt;strong&gt;Note&lt;&#x2F;strong&gt; Before version 2.5, the year was
stored in 2 digits. Now it is stored in 4 (or more :-) digits, to fix
this Y2K bug&lt;&#x2F;p&gt;
&lt;h3 id=&quot;home&quot;&gt;HOME&lt;a class=&quot;zola-anchor&quot; href=&quot;#home&quot; aria-label=&quot;Anchor link for: home&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The latest version of &lt;strong&gt;browser-history&lt;&#x2F;strong&gt; can be found at:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ftp:&#x2F;&#x2F;koala.inria.fr&#x2F;pub&#x2F;browser-history&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;and its WWW home page, with full technical documentation is at:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;http:&#x2F;&#x2F;koala.ilog.fr&#x2F;colas&#x2F;browser-history&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;author&quot;&gt;AUTHOR&lt;a class=&quot;zola-anchor&quot; href=&quot;#author&quot; aria-label=&quot;Anchor link for: author&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Colas Nahaboo, &lt;strong&gt;http:&#x2F;&#x2F;koala.ilog.fr&#x2F;colas&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;copyright&quot;&gt;COPYRIGHT&lt;a class=&quot;zola-anchor&quot; href=&quot;#copyright&quot; aria-label=&quot;Anchor link for: copyright&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;browser-history&lt;&#x2F;em&gt; bears the same license as the X Window System: you can
do everything with this code (selling it, modifying it), except suing me
or using my name in your advertisements, or expecting any kind of
support or guarantee.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
