Minimalistic New Tab daemon for Web browsers
Make site title configurable via class="site-title"
c1480c76 — Frederick Yin 3 years ago
Add "link artifacts" to known defects
77810c62 — Frederick Yin 3 years ago
Increase font size in input text bars



You can also use your local clone with git send-email.




uTab ([UuΜµ]{TAB|Tab|tab}, pronounced you-tab, mu-tab, or microtab) is a New Tab daemon that runs on localhost to satisy your desire for cross-browser consistency of New Tabs. To enable it, read on.


I hopped from Firefox to Falkon (KDE's browser) a while ago. It doesn't offer many choices as to a new tab. The default home page is not useful, and the speed dial is buggy and slow. I miss the "Top Sites" in Firefox, which manifests your most frequently visited sites in a 8*4 matrix. So I made this.


Reluctant to squat on precious four-letter PyPI namespace, I did not upload utab to it, lest someone should foster a much better clone. Anyways, using this version of utab doesn't involve significantly more work than doing pip install.


Assuming python == python3.6 or higher:

  1. Fetch source: git clone https://git.sr.ht/~fkfd/utab
  2. Install: cd utab && python setup.py install (will install deps. append --user if desired.)

#Configs and Data

These are in your user data dir. For Linux, this is typically ~user/.local/share/utab/.

What is in the dir? On default, these:


After due consideration, I picked whichever file format I considered most efficient to write, by machine and by hand. Let's explain some of the files.

columns: 8
rows: 4
    url: https://search.engine/?q={{query}}
  # example
    url: https://duckduckgo.com/?q={{query}}
    url: https://en.wikipedia.org/wiki/{{query}}
default_engine: keyword
  • column/row: Ezpz. Layout for your grid.
  • engines/default_engine: An index of your search engines plus a default pointer. To use, type /keyword query into the search bar, e.g. /wk HTTP will search for HTTP on English Wikipedia.
URL Title Favicon src Visits
site URL, mandated site title, optional URL or base64, optional integer, used to rank sites from highest to lowest


https://en.wikipedia.org,English Wikipedia,https://en.wikipedia.org/static/favicon/wikipedia.ico,3

DST (Dead Simple Template) files[1]. Anything wrapped in % are injected with dynamic data, such as site headings.


Icons from open-iconic. MIT License.

To change color, open them in a text editor (inkscape et al. will spew metadata all over the file). Modify fill:#ffffff to any other color in the style attribute of <path>.


To run it inside the command line, run python -m utab. It will start running as a daemon, on port 64366. To start it on startup, consider putting it in .profile or something. Then head to your web browser and switch the home page to http://localhost:64366.


  1. Make sure your working tree isn't polluted. Try applying git stash or moving your changes to another branch. In extreme cases, consult xkcd #1597.
  2. Pull source: git pull
  3. Install new version: python setup.py install
  4. Your configs and data will remain untouched if they exist in your data dir. If you wish, you can copy some of them from utab/data/ and overwrite the old ones. Alternatively, do a backup for your sites.csv, completely overwrite, then move that back in.

#Known Defects

  • The grid doesn't align if there is an odd-numbered amount of cells on the last row when your grid width is even, and vice versa. Instead, they are centered.
  • When you set title of a site too long, it will break into multiple lines and the cell will misalign (shift upward).
  • The favicons are cached, or they are not. In the latter case, additional traffic cost may be induced.
  • The CSS I wrote is the best exemplification of "it works on my machine".
  • There are small <a> artifacts below the svg icons in the bottom.

Two short purple lines each between two icons, each 4px wide


There are three ways to contribute. One is bug reports in the provided scope. If so, contact fkfd at macaw dot me. Another is feature requests. If I'm interested, I may spin up a mailing list and we collaborate. Then there's forking. This is the preferred method if you are to introduce a lot of changes. Configurability is limited by design in my version of utab, to make codebase lightweight. Fork this project and do whatever 0BSD allows (i.e. anything). Thank you.

#Usable Technology Certificate

UT badge

This is a piece of Usable Technology. It supports the philosophy that fewer restrictions should be imposed on individual developers, thereby maximizing the community value. It doesn't spoil anyone's fun, because 99% of the time it's another innocent person rather than an evil corp.

License: 0BSD
Copyright: nope
Forks: welcome; features intentionally lacking to encourage them. If you have a fork, contact me so I can add it here.

[1] Don't bother looking it up. There ain't such a thing.