# uTab ## What ![Screenshot](https://fkfd.me/static/utab-0.3.0.png) 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. ## Why 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. ## How 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. ### Installation 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: ``` utab/ css/ index.css icons/ home.svg pencil.svg plus.svg config.yml index.html site.html sites.csv ``` 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. #### `config.yml` ```yaml columns: 8 rows: 4 engines: keyword: url: https://search.engine/?q={{query}} # example ddg: url: https://duckduckgo.com/?q={{query}} wk: 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. #### `sites.csv` | URL | Title | Favicon src | Visits | | ------------------ | -------------------- | ----------------------- | -------------------------------------------------- | | site URL, mandated | site title, optional | URL or base64, optional | integer, used to rank sites from highest to lowest | Example: ```csv https://en.wikipedia.org,English Wikipedia,https://en.wikipedia.org/static/favicon/wikipedia.ico,3 ``` #### `*.html` DST (Dead Simple Template) files[1]. Anything wrapped in `%` are injected with dynamic data, such as site headings. #### `icons/*.svg` Icons from [open-iconic](https://github.com/iconic/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 ``. ### Running 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`. ### Updating 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](https://xkcd.com/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 `` artifacts below the svg icons in the bottom. ![Two short purple lines each between two icons, each 4px wide](https://fkfd.me/static/utab-defect-link-artifact.png) ## Contributing 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](https://img.shields.io/badge/usable-technology-blue)](https://fkfd.me/ut/landing.html) 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.