/minichrome

A minimal web browser built for tiling window managers

Primary LanguagePureScript

Minichrome

Minichrome is a minimalistic web browser, built especially with tiling window managers in mind. It explicitly does not have a tabbed UI and avoids most UI chrome in favor of keyboard shortcuts.

screenshot

Why Minichrome?

I used to be an avid user of browsers like surf and uzbl. However, these browsers are built on top of webkit, and have fallen behind modern Chrome in a few ways, most especially the developer tooling.

Minichrome is built on Electron, and thus tracks fairly close to the latest Blink rendering engine, and always has up-to-date Chrome dev tools.

In order to stay as light as possible on resources, Minichrome is built as a client-server architecture. The server exposes an HTTP interface and owns all browser windows, and the client provides a simple CLI wrapper over the HTTP calls to create and manipulate windows. This means you'll only have one instance of Electron running for all your Minichrome windows, rather than one instance of Electron per window. It also means you can script pretty much anything around Minichrome by using the client interface, and could even build software that remotely interfaces with minichrome via the HTTP interface.

Note that individual frames render in their own process, so you still will have process isolation between websites.

Installing

There is an AUR package for arch linux users, available here.

We welcome contributions--please help us by contributing packaging files for other distributions!

For other users, you can download and install from the latest release tarball.

You can also build from source:

cd <source directory>
yarn package

Minichrome assets will be built to the build/minichrome-{platform} directory.

CLI

To run the server, simply run

minichrome

To open a new window, when a minichrome server is running, run:

minichrome browse "http://xkcd.com"

You can run minichrome help for help on how you can send commands to windows.

Keybindings

Minichrome uses vim-style keybindings:

  • h - scroll left
  • l - scroll right
  • j - scroll down
  • k - scroll up
  • C-u - big scroll up
  • C-d - big scroll down
  • G - scroll to the bottom of the page
  • g g - scroll to the top of the page
  • C-+ - zoom in
  • C-- - zoom out
  • C-0 - reset zoom
  • C-o - go back
  • C-i - go forward
  • C-r - refresh page
  • C-R - hard refresh page (refresh ignoring cache)
  • y y - yank the current URL into the clipboard
  • Escape - leave insert mode or clear the current search
  • : - enter ex mode
  • / - start a search
  • n - go to the next search result
  • N - go to the previous search result
  • i - select the first insertable element and switch to insert mode

Configuring

Coming soon!

Status

This project is undergoing heavy development, and we welcome contributions! Especially helpful are:

  • Bug reports / bugfix PRs
  • Feature requests / feature PRs
  • Packaging implementations for other platforms