tengis: Keywords-Based Bookmarks Manager

Table of Contents


Tengis is a small application written in Python/Qt that implements a query system (and eventually management) for bookmarks that is not based on a tree hierarchy. Tengis is a bookmarks search and view, and eventually bookmarks manager as well. The main premise behind its novel approach is that bookmarks don't have to be organized in a tree, rather are assigned a set of keywords, that is used internally to build a graph.


The main advantages and reasons for this approach are:

  • the user doesn't have to find a single location in his bookmarks tree to add a new bookmark. Rather, he simply associates a short set of keywords;
  • searches are carried out by navigating between the neighboring keywords in the keyword graph (v.s. navigating up and down menus, but there is no notion of up and down);
  • searches for recalling bookmarks or keywords are carried out by typing a regular expression. This is integrated by insert a new "search" keyword node in the graph.

Furthermore, other advantages that are not related to our approach:

  • the user can typically add a personal comment on the description related to a bookmark;
  • the file format for bookmarks that we use is extremely simple and different revisions will merge nicely if you use CVS to manage your bookmarks.

Integration with browser is done simply using the webbrowser Python module and by cut-n-paste (selecting a bookmark puts it in the clipboard).

I wrote this implementation in a fit of rage after writing down an idea for the design I really wanted to have (design document: Self-Organizing Graph-Based Search Method). This implementation is pretty much the same as what is described in the design document, except for the cool UI, which I probably won't ever have time to implement.


Implementation Notes

If you want, you can maintain the input bookmarks file by hand. The format is extremely simple, 3 lines per bookmark, separated by at least one blank line:

A Description line.
list, of simple, keywords, that can, contain, spaces

If you "paste" using the second mouse button, the new bookmark dialog will appear, and the new bookmark will be added to the end of the bookmarks file automatically. At this point you cannot get rid of a bookmark (other than editing the simple bookmarks file by hand).

Other Notes:

  • If the search results in a single match, the URL is put automatically in the clipboard (no need to click);
  • Pressing the "escape" key will dismiss the application quickly. This is how I use it: I invoke it through my window manager, and when I'm done with my lookup I get rid of it.



This package uses the distutils package. Unpack and install with:

python setup.py install


This software depends on the following:

  • python 2.2 or later;
  • qt-3 or later;
  • PyQt Python bindings for your version of Qt.

Copyright and License

Copyright (C) 2001-2004 Martin Blais. All Rights Reserved.

This code is distributed under the GNU General Public License;


Martin Blais <blais@furius.ca>


I acquired a screenshot of the back and forward mozilla buttons from the theme Orbit 3+1 because that's what I had closest to acquire from in the two hours I spent to write the original prototype. I never bothered putting something else.