Homebrew, Qt-Webkit based web browser, focused on keyboard navigation and privacy and security while browsing.
- Python 3 (tested on 3.4)
- PyQt4, including Qt, QtGui, QtCore, QtWebKit, QtSql, QtNetwork as Python bindings, as well as sqlite3 support on the native QtSql
- tldextract (https://pypi.python.org/pypi/tldextract)
- colorama (https://pypi.python.org/pypi/colorama)
- PyYAML (https://pypi.python.org/pypi/PyYAML)
- a proxy cache (like squid or polipo)
pip install eilat-web-browser after installing PyQt4.
A proxy cache (e.g. squid) is strongly recommended. The default install creates
options.yaml inside the directory
~/.eilat containing blank
entries for proxy's host and port after the first
eilat startup; once a
proxy is ready and running, please set host and port to enable proxy,
- Small and rather readable layer over WebKit
- Keyboard navigation, minimal UI widgets
- Reports every network request
- No persistent disk cache, yet; external proxy works very well
- Does not have a fully featured bookmarks management.
- Has no means to make downloads. Copies the download URL to clipboard and leaves the actual download to external means.
All Key Bindings
Anywhere except the address bar
The reason being, creating a new tab when a popup is active is a delicate matter, and maybe a rare case, better to be avoided.
^yextracting the url from a redirector in the clipboard
^wclose current tab
^PgDownmove to next tab
^PgUpmove to previous tab
On the web area
ecopy the contents of the address bar to clipboard
ginit a search in page text
^lfocus the address bar
ure-open last closed tab
yadd tab, navigating to an url in the clipboard
^mdump DOM to file
F2remove fixed elements
Shift F2un-fix fixed elements
Alt ←go back in history (this tab only)
Alt →go forward in history
Shift hjklmove between links
Shift iforget currently focused link;et spatial navigation
Ctrl ↑zoom in
Ctrl ↓zoom out
mmove to next tab
nmove to previous tab
csends left mouse click
Modal state manipulation
inext navigation will be on new tab
snext navigation request will be saved to clipboard; no actual navigation will occur
^<space>toggle show/hide status bar
Ztoggle display of traffic
ztoggle display of debug information
On the address bar
<escape>focus the webkit
On the search frame
<escape>hide the search frame
eilat, that will be installed as a script and is probably on the path by
now. This starts an empty browser. On the bottom is an address bar. Write a
partial URL, as, for example,
Enter also works).
The domain will be identified, the address completed, and the browser will
Ctrl+Space. This enables the status bar.
Hovering over a link makes the href appear in the bar.
Ctrl+Space to disable the status bar again.
Ctrl+t. A new tab will appear. Select this: http://sidigital.co/
from wherever you're reading. Go back to the browser, press
ensure the web area is active) and press
y. This will navigate
to the address stored on the primary clipboard. The animation will not run yet:
j to scroll the page down,
k to scroll up. Press
F2 to hide the fixed header.
Shift+F2 will instead freeze the header in place
and prevent it from following the scroll.
for this tab only. Press
F5 to reload. The animation starts since
scripting is active. You can even keep pressing
q to pause and resume
Ctrl+t to create another new tab. Press
n (with the web view
active, instead of the address bar or search frame - press
Escape first otherwise),
Ctrl+PgDn to navigate between the tabs. All newly created
tabs should have white background on the address bar, meaning that scripting is
Go back to xkcd. Press
g. A text entry should appear just over the address bar.
r letter by letter to find the string "Permanent".
Once a tab has opened its first URL it has a set instance, marked by a prefix
that can be seen next to the address bar. If there's no prefix, the tab is a
'general' tab, that will respect the
blacklist sqlite table contents, by
default containing references to facebook, twitter and google. This means, a
'general' tab can't open any resources coming from any of those sites.
On the other side, a tab that first opened facebook, twitter or google URLS has
G prefix next to the address bar. That tab will only be able
to open URLs from that source. The procedure to follow a link from e.g. facebook
to a non-fb site is a bit convoluted due to facebook creating a redirect.
First, either save (yes... save) the link with
right click menu + save (that
will produce a transient message) or transient-navigate with
Shift+hjlk and press
Return - just navigate after pressing
s), and the link
will be saved to the clipboard. But that will not be the real link - it will be
To navigate to a new tab (therefore without an active instance yet) using that
redirector stored on the clipboard, press
Ctrl+y instead of
y. That will
extract the real URL without navigating to facebook first, and then navigate directly.
If using vim, edit source code with https://github.com/hynek/vim-python-pep8-indent/
Use pylint on all source
.py files aiming for 100%; a reference
pylintrc is provided.