// Features
Multiple tabs
Split panes (H/V)
Vim-style navigation
Lua runtime config
Ctrl+Click URLs
Session logging
OSC52 clipboard
10000 line scrollback
// Build
# dependencies (Debian/Ubuntu)
sudo apt install libx11-dev libxft-dev libfontconfig-dev lua5.4-dev
# build
make clean && make
sudo make install
// Keyboard Shortcuts
Tabs
| Ctrl+Shift+T | New tab |
| Ctrl+Shift+W | Close tab |
| Ctrl+Shift+←/→ | Switch tabs |
| Ctrl+Shift+L | Rename tab |
| Ctrl+Shift+N | New window |
Panes
| Ctrl+Shift+R | Split vertical |
| Ctrl+Shift+D | Split horizontal |
| Ctrl+Shift+Q | Close pane |
| Ctrl+H/J/K/L | Navigate panes |
Other
| Ctrl+Shift+C/V | Copy / Paste |
| Ctrl++/-/0 | Zoom in / out / reset |
| Shift+PageUp/Down | Scroll |
| Ctrl+Shift+Z | Toggle logging |
| Ctrl+Shift+F5 | Reload config |
// Lua Configuration
Create ~/.config/ft/config.lua:
-- font
st.set_font("IBM Plex Mono:pixelsize=14:antialias=true")
-- window icon
st.set_icon("🖥")
-- enable logging
st.set_logging(true)
-- file handlers (Ctrl+Click)
st.set_file_handler("pdf", "app", "okular %s")
st.set_file_handler("*", "terminal", "nvim %s")
Reload with Ctrl+Shift+F5 – no restart needed.
// Session Logging
Built-in logging that works. External logging via script or tee
breaks OSC52, splits, signals. ft logs after the PTY.
PTY → Terminal → screen
↓
logfile
Files saved to ~/.ft/logs/
// Source
MIT/X License