src | ||
term | ||
.gitignore | ||
.rustfmt.toml | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE.md | ||
README.md |
Wez's Terminal
A terminal emulator implemented in Rust.
Quickstart
- Install
rustup
to get therust
compiler installed on your system. https://www.rust-lang.org/en-US/install.html - Build in release mode:
cargo build --release
- Run it via either
cargo run --release
ortarget/release/wezterm
You will need a collection of support libraries; I built this incrementally so far so I don't have a complete list. Please open an issue if you work through and discover the full and proper list of packages for ubuntu:
- xcb and xcb-util development packages
- fontconfig
- harfbuzz
- freetype
What?
Here's what I'm shooting for:
- A terminal escape sequence parser
- A model of a terminal screen + scrollback that is OS independent
- Textual and GUI rendering of the model
- A differential protocol for the model
This would manifest as a common core that could run as both a textual terminal multiplexer and a gui terminal emulator, where the GUI part could automatically provide a native UI around the remotely multiplexed terminal session.
Status / Features
These are in the done/doing soon category:
- Runs on Linux with XCB
- Scrollback (use mouse wheel and Shift Page{Up|Down})
- True Color support
- Color Emoji and font fallback (Note: currently assumes you have the Operator font!)
- Paste selection via Shift-Insert
- xterm style selection of text with mouse
- Configuration file to specify fonts and colors
- Render underline, italic, bold, strikethrough
- Command line argument parsing / launching of user shell (currently runs only
zsh
!)
There's a good number of terminal escape sequences that are not yet implemented and that will get fleshed out as the applications I use uncover them. Similarly for key mappings.
Things that I'd like to see happen and that have no immediate priority (contributions to get closer to these are welcomed!)
- Runs on macOS
- Tabs
- Textual renderer. Think
tmux
orscreen
. - Runs on Windows