A fork of the great rxvt-unicode (urxvt) plus a few extras. Still lean, X11 only.
It includes everything what makes urxvt great: low CPU usage, low latency, fast output, daemon mode, etc. On top of it, adds:
- Native tabs — tab bar with mouse support, fully managed in C (no Perl)
- Split panes — horizontal/vertical pane splitting
- Minimap — scrollback overview panel with viewport indicator
- Prompt markers — tracks shell prompt positions for navigation with keyboard shortcuts
- True 24-bit color — full RGB888 support beyond the standard 256-color cube
- Native searchable scrollback — incremental search bar implemented in C
- Sixel image support — inline image rendering via DCS sixel sequences
- Native URL detection and click-to-open — no Perl extension required
- Improved input handling — key encoding closer to xterm for better TUI/Vim/tmux compatibility
- Drag-and-drop — XDND protocol support for dropping files/text into the terminal
- Settings pane — graphical settings panel accessible at runtime
- Right-click context menu — context-sensitive actions on selected text
- Auto copy selection — copies text to clipboard on selection (xterm-style, configurable)
- Shift+Enter — sends line feed (
\n) separately from Enter (\r), useful in some TUI applications
It's also synced with these changes from the upstream repo:
- Wide glyph rendering (
ENABLE_WIDE_GLYPHS) - Improved 24-bit to 256 color mapping
- SGR mouse mode (1006), extended mouse reporting (1015), DECRQM (mode query)
- Bracketed paste mode
- Background image support with compositing
- Include the perl stuff from urxvt by default (you must enable it via
--enable-perl) - Use 150MB of RAM just to show you a prompt, like other new terminals
- Touch your precious GPU at any moment
- Bundle stuff like a "Markdown editor" just because
- Require you to launch a daemon on boot so it can start fast
Because a terminal should not consume RAM like a browser tab does, period. I want mine to open up in less than a second. And urxvt delivers exactly that.
Plus, being light on resources and not requiring a GPU means you can use it anywhere, even in your old laptop from yesteryear.
You can't, sorry.
But I hear that foot is pretty lightweight and minimal. ;)
Such wow, right? It's because I am using a bitmap (aka 'pixel') font.
That one in particular is Terminus. You can see more of them here.
Good question. I don't provide binary packages at the moment, but you can build it in a second or two.
First, install dependencies. These are
- libxmu-dev
- libxpm-dev
- libxft-dev (for xft fonts and/or full transparency)
- libxrender-dev
- libstartup-notification0-dev
For Ubuntu/Debian, this command does it:
sudo apt install libxpm-dev libxft-dev libxrender-dev libxmu-dev libstartup-notification0-dev
Then, clone the repo and initialize submodules:
git clone https://github.com/tomas/exoterm
cd exoterm
git submodule init
git submodule update
Configure and build:
./configure
make
sudo make install
Run ./configure -h to see all options. See README.configure for details. A few quick examples:
./configure --disable-24-bit-color (if you prefer 256 color)
./configure --disable-xft (if you don't need XFT and can do without full transparency)
./configure --enable-perl (if you want support for perl extensions)
Note: make sure to run make clean before make after changing compile options.
Exoterm provides a GUI for changing (most of) the available options. In the same
spirit as urxvt, Exoterm reads the values from ~/.Xdefaults. You can use either
Exoterm or Urxvt as a prefix for each option.
If you edit the .Xdefaults file, make sure to run xrdb ~/.Xdefaults so new values
are read.
Here's an example configuration:
! main
Exoterm.loginShell: true
Exoterm.geometry: 100x25
Exoterm.foreground: #fff
Exoterm.cursorColor: #ff6600
! font (Terminus 8x16)
Exoterm.font: -xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso10646-1
Exoterm.boldFont: -xos4-terminus-bold-r-normal--16-160-72-72-c-80-iso10646-1
! 80% opaque black background with a 10% opaque tint of cyan
URxvt.blackOpacity: 80
URxvt.background: #0ff
URxvt.bgOpacity: 10
! borders
Exoterm.internalBorder: 10
Exoterm.externalBorder: 0
Exoterm.borderLess: false
! scrollback
Exoterm.saveLines: 10000
Exoterm.jumpScroll: true
Exoterm.skipScroll: true
Exoterm.scrollBar: false
Exoterm.scrollTtyOutput: false
Exoterm.scrollWithBuffer: true
Exoterm.scrollTtyKeypress: true
Example using a Dracula-based palette:
Exoterm.color0: #000000
Exoterm.color8: #4D4D4D
Exoterm.color1: #FF5555
Exoterm.color9: #FF798C
Exoterm.color2: #50FAB2
Exoterm.color10: #5AF78E
Exoterm.color3: #F1FA8C
Exoterm.color11: #F4F99D
Exoterm.color4: #BD93F9
Exoterm.color12: #CAA9FA
Exoterm.color5: #FF79C6
Exoterm.color13: #FF9AF4
Exoterm.color6: #8BE9FD
Exoterm.color14: #9AEDFE
Exoterm.color7: #BFBFBF
Exoterm.color15: #E6E6E6
wget https://github.com/powerline/fonts/raw/master/Terminus/PCF/ter-powerline-x16b.pcf.gz
wget https://github.com/powerline/fonts/raw/master/Terminus/PCF/ter-powerline-x16n.pcf.gz
fonts_dir=/usr/share/fonts/X11/misc
sudo cp ter-powerline-x16b.pcf.gz ter-powerline-x16n.pcf.gz $fonts_dir
sudo mkfontdir $fonts_dir
xset +fp $fonts_dir
Make sure $fonts_dir is listed in the FontPath section of /etc/X11/xorg.conf.
<Group>
<Class>Exoterm</Class>
<Option>noborder</Option>
<Option>notitle</Option>
</Group>
To the rxvt and unicode-rxvt developers, of course. I'm just a humble servant.
GPLv3, as the original source.
