Skip to content
forked from parkouss/webmacs

webmacs - keyboard driven (emacs key bindings) browser

License

Notifications You must be signed in to change notification settings

plafrance/webmacs

 
 

Repository files navigation

webmacs

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).

Can I use it on a day to day use ?

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).

Installation

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.

Features

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

Documentation is available on readthedocs. Currently it is for user configuration only.

Desired features

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

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!

About

webmacs - keyboard driven (emacs key bindings) browser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 54.9%
  • Python 43.1%
  • Other 2.0%