docs: reflow README.md

This commit is contained in:
CJ van den Berg 2026-02-02 12:13:27 +01:00
parent 377b8ba6b3
commit 1317de3f72
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -8,13 +8,14 @@ and is my daily driver for almost everything.
# Features # Features
- **Lightning Fast** TUI with ≤6ms frame times, **low latency** input handling - **Lightning Fast** TUI with ≤6ms frame times, **low latency** input
and smooth **animated scrolling** handling and smooth **animated scrolling**
- Intuitive UI with **tabs**, **scrollbars** and **palettes** with full - Intuitive UI with **tabs**, **scrollbars** and **palettes** with full
**mouse** support for all UI elements **mouse** support for all UI elements
- Support for more than **70 programming languages**, **zero - Support for more than **70 programming languages**, **zero
configuration** needed, via **tree-sitter** powered syntax highlighting configuration** needed, via **tree-sitter** powered syntax highlighting
- **Language Server Protocol** pre configured support for most language servers - **Language Server Protocol** pre configured support for most language
servers
- Powerful **multi-cursor** editing and integrated **clipboard history** - Powerful **multi-cursor** editing and integrated **clipboard history**
- Powerful configurable keybinding system that supports **modal** and - Powerful configurable keybinding system that supports **modal** and
**non-modal** editing styles **non-modal** editing styles
@ -27,26 +28,29 @@ and is my daily driver for almost everything.
- Hybrid rope/piece-table buffer system, edit **very large files** with - Hybrid rope/piece-table buffer system, edit **very large files** with
**thousands of cursors** **thousands of cursors**
- Infinite **undo** (at least until you run out of ram) - Infinite **undo** (at least until you run out of ram)
- Full **unicode** support, including support for the kitty text sizing protocol - Full **unicode** support, including support for the kitty text sizing
protocol
- Plenty of **themes** included and support for vscode themes via the - Plenty of **themes** included and support for vscode themes via the
flow-themes project flow-themes project
- Runs on **Linux, FreeBSD, MacOS, Windows and Android** (under termux) with - Runs on **Linux, FreeBSD, MacOS, Windows and Android** (under termux)
easy **cross-compilation** to all supported targets with easy **cross-compilation** to all supported targets
# Requirements # Requirements
- A modern terminal with **24bit color** and, ideally, **kitty keyboard - A modern terminal with **24bit color** and, ideally, **kitty keyboard
protocol** support. **Kitty**, **Foot** and **Ghostty** are the recommended protocol** support. **Kitty**, **Foot** and **Ghostty** are the
terminals at this time. **Zellij** also works well. Most other terminals will recommended terminals at this time. **Zellij** also works well. Most
work, but likely with reduced functionality. other terminals will work, but likely with reduced functionality.
- **NerdFont** support. Either via terminal font fallback or a patched font. - **NerdFont** support. Either via terminal font fallback or a patched
font.
- A **UTF-8** locale - A **UTF-8** locale
# Roadmap # Roadmap
See our [devlog](https://flow-control.dev/devlog/2025/) for on-going updates from the development team. See our [devlog](https://flow-control.dev/devlog/2025/) for on-going
updates from the development team.
## In Development ## In Development
@ -63,8 +67,8 @@ See our [devlog](https://flow-control.dev/devlog/2025/) for on-going updates fro
# Download / Install # Download / Install
There is an [installation guide](https://flow-control.dev/installation) on the There is an [installation guide](https://flow-control.dev/installation) on
main website, and source, release and nightly build binary the main website, and source, release and nightly build binary
[downloads](https://flow-control.dev/downloads). [downloads](https://flow-control.dev/downloads).
Or check your favorite local system package repository. Or check your favorite local system package repository.
@ -82,9 +86,9 @@ Flow builds with zig 0.15.2 at this time. Build with:
zig build -Doptimize=ReleaseSafe zig build -Doptimize=ReleaseSafe
``` ```
Zig will by default build a binary optimized for your specific CPU. If you get Zig will by default build a binary optimized for your specific CPU. If you
illegal instruction errors add `-Dcpu=baseline` to the build command to produce get illegal instruction errors add `-Dcpu=baseline` to the build command to
a binary with generic CPU support. produce a binary with generic CPU support.
Thanks to Zig you may also cross-compile from any host to pretty much any Thanks to Zig you may also cross-compile from any host to pretty much any
@ -105,8 +109,8 @@ The output binary is:
zig-out/bin/flow zig-out/bin/flow
``` ```
It is statically built (by default) and contains all the required tree-sitter parsers It is statically built (by default) and contains all the required
and queries. No additional runtime files are required. tree-sitter parsers and queries. No additional runtime files are required.
# Running Flow Control # Running Flow Control
@ -125,8 +129,9 @@ Or if you prefer, let zig install it in your home directory:
zig build -Doptimize=ReleaseSafe --prefix ~/.local zig build -Doptimize=ReleaseSafe --prefix ~/.local
``` ```
Flow Control is a single statically linked binary. No further runtime files are Flow Control is a single statically linked binary. No further runtime files
required. You may install it on another system by simply copying the binary. are required. You may install it on another system by simply copying the
binary.
```shell ```shell
scp zig-out/bin/flow root@otherhost:/usr/local/bin scp zig-out/bin/flow root@otherhost:/usr/local/bin
@ -138,8 +143,9 @@ Files to load may be specifed on the command line:
flow fileA.zig fileB.zig flow fileA.zig fileB.zig
``` ```
The last file will be opened and the previous files will be placed in reverse The last file will be opened and the previous files will be placed in
order at the top of the recent files list. Switch to recent files with Ctrl-e. reverse order at the top of the recent files list. Switch to recent files
with Ctrl-e.
Common target line specifiers are supported too: Common target line specifiers are supported too:
@ -171,13 +177,13 @@ See `flow --help` for the full list of command line options.
A basic user manual is available inside flow. You can open it with the A basic user manual is available inside flow. You can open it with the
`Open help` command (F1). `Open help` command (F1).
It is also available in the website [documentation](https://flow-control.dev/docs/) It is also available in the website
section. [documentation](https://flow-control.dev/docs/) section.
## Development Resources ## Development Resources
Additional [developer](https://flow-control.dev/docs/#resources) resources can Additional [developer](https://flow-control.dev/docs/#resources) resources
be found on the Flow Control website at. can be found on the Flow Control website at.
There is also an AI generated developer guide at There is also an AI generated developer guide at
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow). [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/neurocyte/flow).
@ -186,23 +192,23 @@ Accuracy may vary. Check details against the referenced source code.
# Configuration # Configuration
Configuration is mostly dynamically maintained with various commands in the UI. Configuration is mostly dynamically maintained with various commands in the
It is stored under the standard user configuration path. Usually UI. It is stored under the standard user configuration path. Usually
`~/.config/flow` on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere magical `~/.config/flow` on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere
on MacOS. magical on MacOS.
There are commands to open the various configuration files, so you don't have to There are commands to open the various configuration files, so you don't
manually find them. Look for commands starting with `Edit` in the command have to manually find them. Look for commands starting with `Edit` in the
palette. command palette.
File types may be configured with the `Edit file type configuration` command. File types may be configured with the `Edit file type configuration`
You can also create a new file type by adding a new `.conf` file to the command. You can also create a new file type by adding a new `.conf` file
`file_type` directory. Have a look at an existing file type to see what options to the `file_type` directory. Have a look at an existing file type to see
are available. what options are available.
Logs, traces and per-project most recently used file lists are stored in the Logs, traces and per-project most recently used file lists are stored in
standard user application state directory. Usually `~/.local/state/flow` on the standard user application state directory. Usually
Linux and %APPDATA%\Roaming\flow on Windows. `~/.local/state/flow` on Linux and %APPDATA%\Roaming\flow on Windows.
# Key bindings and commands # Key bindings and commands
@ -213,16 +219,16 @@ Press `ctrl+shift+p` or `alt+x` to show the command palette.
Press `ctrl+F2` to see a full list of all current keybindings and commands. Press `ctrl+F2` to see a full list of all current keybindings and commands.
Run the `Edit keybindings` command to save the current keybinding mode to a Run the `Edit keybindings` command to save the current keybinding mode to a
file and open it for editing. Save your customized keybinds under a new name file and open it for editing. Save your customized keybinds under a new
in the same directory to create an entirely new keybinding mode. Keybinding name in the same directory to create an entirely new keybinding mode.
changes will take effect on restart. Keybinding changes will take effect on restart.
# Terminal configuration # Terminal configuration
Kitty, Ghostty and most other terminals have default keybindings that conflict Kitty, Ghostty and most other terminals have default keybindings that
with common editor commands. I highly recommend rebinding them to keys that are conflict with common editor commands. I highly recommend rebinding them to
not generally used anywhere else. keys that are not generally used anywhere else.
For Kitty rebinding `kitty_mod` is usually enough: For Kitty rebinding `kitty_mod` is usually enough:
``` ```