ft – Fearless Terminal

A suckless st fork with tabs, splits, and Lua config.

Uses Xft for font rendering. No OpenGL overhead, no GPU wake-ups for text. Single process, efficient, hackable.

// 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+TNew tab
Ctrl+Shift+WClose tab
Ctrl+Shift+←/→Switch tabs
Ctrl+Shift+LRename tab
Ctrl+Shift+NNew window

Panes

Ctrl+Shift+RSplit vertical
Ctrl+Shift+DSplit horizontal
Ctrl+Shift+QClose pane
Ctrl+H/J/K/LNavigate panes

Other

Ctrl+Shift+C/VCopy / Paste
Ctrl++/-/0Zoom in / out / reset
Shift+PageUp/DownScroll
Ctrl+Shift+ZToggle logging
Ctrl+Shift+F5Reload 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

codeberg.org/lylid/ft

MIT/X License