<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Colas.Nahaboo.net - legacy</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/legacy/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/legacy/atom.xml</id>
    <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>
    <entry xml:lang="en">
        <title>Colas Nahaboo X mouse wheel scroll page</title>
        <published>1997-12-30T00: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/colas-nahaboo-x-mouse-wheel-scroll-page/"/>
        <id>https://colas.nahaboo.net/blog/colas-nahaboo-x-mouse-wheel-scroll-page/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/colas-nahaboo-x-mouse-wheel-scroll-page/">&lt;p&gt;On December 30, 1997, I started this page to help developers manage the — then new — mouse wheel. My goal was to encourage a standard scrolling direction for the X Window System on Unix and Linux.&lt;&#x2F;p&gt;
&lt;p&gt;It quickly became the most-viewed page on my personal site, and even across all INRIA-hosted websites at the time. However, as mouse wheels became mainstream, the page lost its relevance. I let it quietly disappear in 2018 when I upgraded my site.&lt;&#x2F;p&gt;
&lt;p&gt;Seeing that this remains one of my most accessed URLs even in 2026, I decided to create this legacy page at the same legacy URL. It allows people to easily find the historical version on the Web Archive, specifically the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150906210929&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;mouse-wheel-scroll&#x2F;&quot;&gt;latest version of 2015-09-06&lt;&#x2F;a&gt;, from which is the screenshot:&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;20150906210929&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;mouse-wheel-scroll&#x2F;&#x27; title=&#x27;web archive version&#x27;&gt;&lt;img src=&#x27;CNXMWSP-Screenshot.png&#x27;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
