8 8 w w w
Yb db dP .d88b 88b. 8.dP w w8ww w8ww .d88b 8d8b.
YbdPYbdP 8.dP' 8 8 88b 8 8 8 8.dP' 8P Y8
YP YP `Y88P 88P' 8 Yb 8 Y8P Y8P `Y88P 8 8
==================================================
Webkitten is a command-driven web browser built on WebKit and inspired by
luakit (https://mason-larobina.github.io/luakit) and Vim
(http://www.vim.org).
-- [CONTENTS] ---
Goals...................................................................[GOALS]
Layout.................................................................[LAYOUT]
Components.........................................................[COMPONENTS]
Default Commands.....................................................[COMMANDS]
Common Configuration Options....................................[CONFIGURATION]
-- [GOALS] --
* Human-readable configuration
* SQLite bookmark storage
* Scriptable interface
* Private browsing modes
* WebKit content blocking (https://webkit.org/blog/3476)
* Command autocompletion
* Customizable keybindings
* User scripts and CSS support
* Split pane support
-- [LAYOUT] --
The webkitten window has three components:
* Buffer pane: Main content pane, containing a swappable web view
* Command Bar: Allows typing commands, displays ephemeral status info
┌────────────────────────────────────────────────────────────────┐
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ Buffers: Buffer[Web View] │
│ │
│ │
│ │
│ │
│ │
├────────────────────────────────────────────────────────────────┤
│ Command Bar │
└────────────────────────────────────────────────────────────────┘
-- [COMPONENTS] --
Application:
Runtime representation. Has windows and configuration
Tasks:
* Start/Stop new instance of app, provided a configuration file path
* Reload configuration
* Open a new window
* Execute text as command
Buffer:
Web view container with an index
Tasks:
* Load/Reload URI
Command:
Alters app state. Resolved from text.
Tasks:
* Run
* Provide completions
Command Bar:
Command text entry. Has history
Tasks:
* Set/Clear text
* Set (colored) ephemeral text
Widget Behavior:
* Change contents on keypress up/down from history
* Activate on return
Command Parser:
Creates a command. Has search paths
Tasks:
* Find and create command for text
Configuration:
All application preferences. Has load path
Tasks:
* Get value of string/int/array
* Reload from path
History:
List of textual items
Tasks:
* Push/Pop/Clear
* Change strategy (Save all/none/last n)
* Get item at index
Window:
UI entry point. Has command bar, address bar, and buffers
Tasks:
* Add/Remove buffer
* Switch buffer
* Close
Widget Behavior:
* Focus command bar on command shortcut
* Focus command bar in find mode on find shortcut
Web View:
Web renderer widget
Tasks:
* Go back/forward
* Refresh
* Open URI
* Find (next instance of) text
┌──────────────────┐ executed by
│ Application │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
└──────────────────┘ │
│ ┌──────────────────┐
┌────────────────────┼───────────────────┐ │ Command │
│ ┼ │ └──────────────────┘
┼ ┌┼┐ ┼ │
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │
│ Configuration │ │ Window │ │ Command Parser │─────────┘
└─────────────────┘ └──────────────────┘ └─────────────────┘ creates
│
│───────────────────┐
┼ ┼
┌──────────────────┐ ┌─────────────────┐
│ Buffer Container │ │ Command Bar │
└──────────────────┘ └─────────────────┘
┼ │
┌┼┐ ┼
┌──────────────────┐ ┌─────────────────┐
│ Buffer │ │ History │
└──────────────────┘ └─────────────────┘
│
┼
┌──────────────────┐
│ Web View │
└──────────────────┘
-- [COMMANDS] --
* `go URI`: Open URI
* `forward [NUMBER]`: Move web view forward in history. NUMBER default is 1.
* `back [NUMBER]`: Move web view back in history. NUMBER default is 1.
* `openwindow [PRIVATE]`: Open a new window. PRIVATE default is config value.
* `config edit`: Edit configuration file in $VISUAL, if set.
* `config reload`: Reload configuration from file
* `buffers`: List all buffers
* `buffer NUMBER`: switch to buffer with NUMBER index
* `bookmark save NAME`: Create bookmark to current page
* `bookmark open NAME`: Open bookmark with name
* `clearhistory`: Clear browsing history
-- [CONFIGURATION] --
* alias.KEYS: Full name of command to execute when command KEYS is activated
* command.NAME.enable: Boolean to disable a command named NAME
* keybindings.CHORD: Key CHORD to trigger a command (optionally with arguments)
* plugin.NAME.enable: Boolean to allow plugin such as Java or Silverlight
* window.open-private: Boolean to open new windows in private mode
* window.start-pages: URIs to open with each new window