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
the file 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,
then restart eilat
.
- 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.
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.
^t
add tab^T
with javascript on
^q
close window
^t
add tab^y
extracting the url from a redirector in the clipboard^T
with javascript on
^w
close current tab
^PgDown
move to next tab^PgUp
move to previous tab
^j
sends Return^h
sends Backspace
e
copy the contents of the address bar to clipboardg
init a search in page text^l
focus the address bar
u
re-open last closed taby
add tab, navigating to an url in the clipboard
^m
dump DOM to filef
unembed framesF2
remove fixed elementsShift F2
un-fix fixed elements
F5
,r
reload pageAlt ←
go back in history (this tab only)Alt →
go forward in history
hjkl
move pageShift hjkl
move between linksShift i
forget currently focused link;et spatial navigationCtrl ↑
zoom inCtrl ↓
zoom out
m
move to next tabn
move to previous tab
c
sends left mouse click
i
next navigation will be on new tabio
on new tab, with javascript on
s
next navigation request will be saved to clipboard; no actual navigation will occur
^<space>
toggle show/hide status barq
toggle enable/disable javascriptZ
toggle display of trafficz
toggle display of debug information
^i
next completion^p
previous completion
<escape>
focus the webkit
<escape>
hide the search frame
Run 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, xkcd.com
. Press Ctrl+j
(Enter
also works).
The domain will be identified, the address completed, and the browser will
navigate to http://xkcd.com
.
Press Ctrl+Space
. This enables the status bar.
Hovering over a link makes the href appear in the bar.
Press Ctrl+Space
to disable the status bar again.
Press Ctrl+t
. A new tab will appear. Select this: http://sidigital.co/
from wherever you're reading. Go back to the browser, press Escape
(to
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:
javascript is disabled. Press 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.
Press q
. The address bar should have turned blue: javascript is enabled now,
for this tab only. Press r
or F5
to reload. The animation starts since
scripting is active. You can even keep pressing q
to pause and resume
the animation.
Press Ctrl+t
to create another new tab. Press m
, n
(with the web view
active, instead of the address bar or search frame - press Escape
first otherwise),
or Ctrl+PgUp
, Ctrl+PgDn
to navigate between the tabs. All newly created
tabs should have white background on the address bar, meaning that scripting is
disabled there.
Go back to xkcd. Press g
. A text entry should appear just over the address bar.
Write p
, e
, 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
the FB
, TW
or 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
s
then ^j
(or 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
a redirector.
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.