suckless
Code: st 5,500 lines / xterm 111,306 lines (20× larger)
RAM: st 28.3 MB RSS / xterm 22.0 MB RSS (xterm uses 22% less)
20× more code, 22% less memory.
#suckless #xterm #linux #st #slackware
Back then, the articles tested st 0.6/0.7 (Debian/Fedora) and 0.8.1 upstream, a fair snapshot of the time.
I went through the upstream st git history from 2018 → 2025 and mapped many of the issues discussed (Unicode/wide glyphs, input crashes, paste & tmux integration, redraw/latency, escape sequences) to the actual fixes that landed over the years.
No single “big patch”, just steady maintenance:
wide-glyph correctness, crash-class input fixes, bracketed paste terminfo, latency tuning, and modern escape/color handling.
I wrote a short technical note with links to the relevant commits:
https://4c6e.xyz/code_notes.html
(post: Revisiting ST after the 2018 LWN analysis)
I’ve been using st + tmux daily on Slackware and it’s been solid: minimal, fast, predictable — exactly what I want on X11.
#st #suckless #unix #tmux #x11 #slackware
I removed my external monitor and keyboard.
Not to be minimalist, but to reduce context switching.
I kept the mouse because speed still matters.
Working sometimes from my parents house made it clear that relying on an external monitor was fragile, so I forced myself to work only with the laptop.
The same thing happened with software.
Vim slowly became nvi.
Alacritty became xterm, then st.
I didn’t look for lighter tools, but for ones I could trust and reason about. Less abstraction, fewer surprises.
Today I use two identical laptops -- one for work, one personal -- same setup, side by side, one mouse for each.
The environment disappears, and the work stays.
#suckless #st #nvi #xterm
Super+Space opens a small menu script that launches apps and system actions (WiFi, reboot, shutdown),
all keyboard-driven via sxhkd.
No panel, no mouse menus, WM-agnostic.
#!/bin/sh
ROOT=doas
# Open a terminal (st) with the given title and command
# example: st -t terminal_title -e command
term() {
st -t "$1" -e "${@:2}"
}
choice=$(printf "%s\n" \
"Browser" \
"Terminal" \
"IRC" \
"Mail" \
"PDF" \
"Editor" \
"Files" \
"Mixer" \
"WiFi" \
"Bluetooth" \
"Reboot" \
"Shutdown" |
dmenu -i -l 12 -p "Menu" \
-fn "Iosevka Term-11" \
-nb '#000000' -nf '#ffffff' \
-sb '#005f87' -sf '#ffffff')
case "$choice" in
Browser) firefox ;;
Terminal) term st tmux ;;
IRC) term senpai senpai ;;
Mail) term mutt mutt ;;
PDF) pdf-open.sh ;;
Editor) geany ;;
Files) term fff fff ;;
Mixer) term alsamixer alsamixer ;;
WiFi) term wifitui "$ROOT" wifitui ;;
Bluetooth) blueman-manager ;;
Reboot) "$ROOT" /sbin/reboot ;;
Shutdown) "$ROOT" /sbin/poweroff ;;
esac
#dwm #dmenu #sxhkd #x11 #linux #suckless
It’s about removing waste and keeping only what’s functional.
The character comes from use, not decoration.
A few moments of the same idea, different contexts:
https://www.reddit.com/r/thinkpad/s/hnxOCFXRhy
https://www.reddit.com/r/thinkpad/s/6IgxcCreKy
https://www.reddit.com/r/Minimal_Setups/s/buTWerlfHi
#suckless #linux #thinkpad #minimalism
My Alpine install is complete.
Surprising absolutely no one that has known me for a while, I am running dwm.
What an amazing distro. I think I am probably going to move to Alpine full-time.
#alpinelinux #suckless #dwm #blackmetal #altarofplagues #nowplaying
The codebase is surprisingly readable and well-organized... unlike larger projects where you get lost in abstraction layers, mtm's simplicity makes it an excellent study resource for learning C.
You can actually understand the entire program flow in a reasonable amount of time.
Bonus: there's already a SlackBuild available, so Slackware users can integrate it seamlessly into their system without manual compilation headaches.
If you want tmux functionality without tmux complexity, check it out.
https://slackbuilds.org/repository/15.0/system/mtm/
#suckless #terminal #slackware #C
Less than a month after 6.7, suckless pushed a security fix and bumped
the version. That's pretty rare for dwm.
If you noticed Telegram's image previews shaking in 6.7, that's why
a wrong return value check broke atom property reading entirely.
Patch: https://git.suckless.org/dwm/commit/a9aa0d8ffbb548b0b1f9f755557aef2482c0f820.html
Six lines changed.
Update your build.
#dwm #suckless #security #linux
https://r1w1s1.srht.site/dwm.html
Feedback welcome.
#dwm #suckless #linux #archlabs
sxhkd handles the keys.
the WM handles the windows.
dmenu handles the launching.
swap any one. the others don't notice.
┌─────────────────────────────────────────┐
│ sxhkd (global, WM-agnostic) │
│ ├─ super+space → menu │
│ ├─ super+p → dmenu_run │
│ ├─ super+l → slock │
│ └─ media keys → volume / brightness │
└─────────────────────────────────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ dwm │ │ progman │
│ (config.h) │ │ (progman.ini)│
└──────────────┘ └──────────────┘
#suckless #unix #dwm #slackware
essentially the cleaned-up 1985 ex/vi 3.7 code, brought
forward by Gunnar Ritter and Carsten Kunze: small, simple,
and very readable — about 25k LOC for the editor itself,
versus 38k for nvi. The memory footprint is lower too,
around 3MB RSS against nvi's 6MB in typical use, and it
feels snappy in daily use.
The limits are by design rather than oversight. Fixed
temp-file blocks and a line-pointer table capped at
LBLKS=900 in the default build give you about 230k lines,
or roughly 30MB of text. Beyond that, you get the classic
"Tmp file too large" — and that's fine, because a screen
editor isn't the right tool for huge files anyway.
Trade-offs worth knowing: no set ruler, single-level
undo, and a hard ceiling on file size. nvi is more
practical for daily work, especially if you live in YAML
where column awareness matters. But heirloom is closer to
the original, and the codebase is genuinely beautiful.
Worth a look.
For anyone curious about the details, I keep a longer note
on heirloom-ex-vi here:
https://repo.or.cz/code-notes.git/blob_plain/HEAD:/notes/Exploring_Heirloom_ex_vi.txt.
Updated today with the LARGEF rebuild instructions for
files beyond the default ceiling.
#vi #unix #suckless #nvi