webmacs is yet another browser for keyboard-based web navigation.
I started to wrote this as I was a fan user of conkeror, but unfortunately with Firefox quantum it is no longer working.
webmacs is based on qt webengine and written mainly in Python (version 3).
I started to use it as my main web browser both at work and home, so I believe yes. Though there are some corner cases and bugs and sometimes I have to fall back to some other browser (namely Firefox).
Use pip/virtualenv - be prepared to have a working c and c++ compiler with python development library. Note I only have tested on linux.
You will also need the PyQt5 library, as I believe it can’t be installed through pip. It’s easy to install using any package manager though.
Then you have to check out the repository (do not forget the recursive flag):
git clone --recursive https://github.com/parkouss/webmacs
To test it, or work on it, I recommend virtualenv:
virtualenv --system-site-packages -p python3 venv
# activate the virtualenv
source venv/bin/activate
# install webmacs in there
pip install -e <path_to_webmacs_sources>
# and now to run webmacs
python -m webmacs.main
Then you can create a system alias to run it:
sudo ln -s <path_to_venv>/bin/webmacs /usr/local/bin/webmacs
# now you can use the webmacs command on your system, given that
# /usr/local/bin is in your PATH.
webmacs quite mimics the conkeror way of browsing. Short list of the already supported features:
- navigate through hints (shortcut: f)
- go to url or webjump (shortcut: g)
- navigate backward (shortcut: B)
- navigate forward (shortcut: F)
- go to with a default browser webjump (shortcut s)
- switch buffer (shortcut C-x b)
- close current buffer (shortcut C-x k, shortcut q)
- open a new view (shortcuts C-x 3 to split right, C-x 2 to split bottom)
- switch view (shortcut C-x o)
- close view (shortcut C-x 0)
- maximize view (shortcut C-x 1)
- history access (shortcut h)
- ad blocking using easylist. Implemented in C for high performances.
- for go-to and history command, the prefix C-u opens the url in a new buffer.
- handle basic authentication
- handle basic certificates errors
- automatic save/restore of passwords
- a simple download-manager (go to webmacs://downloads)
- fuzzy matching an completion nearly everywhere (using Tab and Enter to validate)
- emacs like incremental search: starts with C-s or C-r
- emacs-like navigation key bindings in the page (shortcuts: C-n, C-p to move up and down a little, C-v, M-v to move the page up and down a bit more, M-> to scroll at the bottom and M-< to scroll at the top.
- emacs like navigation binding inside editable web content (C-f, C-b, M-f, M-b, C-n, C-p, …)
- as in emacs, C-g to get out of something.
- call command by name (shortcut M-x)
- command history within a session in minibuffer input (shortcut M-n, M-p)
- user configuration written in Python, giving lots of power to customize webmacs.
- copy link by hinting (shortcut c). Use the special number 0 to copy the current url.
- caret navigation. (shortcut C) to initialize caret navigation, then navigate using (C-f, C-b, M-f, M-b, C-n, C-p, …) or the arrow keys. It is possible to select some web content using C-Space to activate/deactivate the mark. Once there is a selection, M-w will copy it. It is also possible to navigate quickly using the incremental search, though this is working well with Qt >= 5.10.
- bookmarks (M to add a bookmark, m to open the bookmark list)
- zoom in and out, using + and -. = to reset the zoom.
- zoom (text only) using C-+, C– and C-=.
- edit text fields with an external editor (defaulting to emacsclient): C-x e
Documentation is available on readthedocs. Currently it is for user configuration only.
A lot!
- bugs fixes
- help discovery, like C-h in emacs
- more bindings
I can’t come up with more right now, but there are a lot more for sure.
Contributions are much welcome! Writing this browser is exciting and I love that, though I don’t have many time to spend on it, having a family life and a job; And anyway the more we are to work on it and use the tool, the better!