[OC] Pywal in C! Hellwal version 1.0.9 :)
Hi! I wanted to share new mode on my C pywal-like color-palette generator:)
``--comfort-mode`` looks like above ↑
Rice:
- WM: Sway
- Bar: Waybar
- Term: Foot
- Colors: Hellwal
- Thing in the terminal: cbirds by clainstone
- Firefox with hellwal theme
- Editor nvim with hellwal-vim
Also I create a website where you can see example outputs of some wallpapers if you are interested:)
hellwal website
hellwal github
67 points · 7 comments
I built a 2D/3D bird flock renderer for the terminal in C99, no libraries
Hi !
I'm the creator of cbirds, a 2D/3D bird flock simulator that runs in the terminal, written in C99 and inspired by Craig Reynolds' Boids. The video shows four Kitty panes: 3D on top, 2D below.
I started the 2D version in September 2025, mostly out of curiosity. I wanted to see whether a real time simulation could run inside a terminal using the Kitty graphics protocol. The idea came from antirez's C64 terminal emulator (antirez/c64-kitty) and a lecture on multi agent systems at Politecnico di Milano.
How it's drawn:
- The bird is one PNG compiled into the binary. At startup it's rotated into 60 headings, squashed into 3 wing positions and tinted into every shade of the colour ramp, about 1,500 small images in a fifth of a second.
- In Kitty and Ghostty they're uploaded once, and a frame is then one short command per bird. Other terminals get the same images sampled down into braille, sextants or blocks.
- In 3D a bird is drawn at one of five sizes, so a nearer bird is bigger and brighter, and the camera orbits the roost once every two minutes. Each bird heeds its 7 nearest neighbours, as starlings were measured doing (Ballerini et al., PNAS 2008).
I really dislike relying on third party libraries, so the PNG, GIF and DEFLATE code is written from scratch, with no zlib, libpng or ncurses. I did get quite a bit of help from coding agents. The custom GIF encoder let them look at the simulation and check whether their changes worked.
clainstone/cbirds
46 points · 2 comments
Pipe any text into cbirds and the letters fly as a flock
I'm the creator of Cbirds, a bird flock simulator for the terminal, written in C99 with no dependencies. The clip is its text mode: any text piped into it becomes the flock. It reads the escape sequences, so colours, bold and layout come out as the command printed them, the letters fly, and after about twenty seconds each one lands back on its own cell. It was recorded in Ghostty inside tmux, and text mode works the same in Kitty.
The part I'd show this sub is the sprite mode, `cbirds --render kitty`: real bird sprites over Kitty's graphics protocol. Every sprite is drawn once at 60 rotations, encoded as PNG and uploaded at startup. After that a frame is only placement commands inside a synchronized update, so the terminal does the compositing. It's made for Kitty and Ghostty: other terminals answer to the protocol and then draw too few birds, the wrong ones or none.
cbirds --render kitty --hawks 2 --color ice
cbirds --render kitty --3d --color prism
fastfetch | cbirds
I started it in September 2025 out of curiosity, after seeing antirez's C64 terminal emulator. I did get quite a bit of help from coding agents along the way.
Source: clainstone/cbirds
Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
66 points · 7 comments
Made the text in my tmux panes fly as a flock of birds (Ghostty)
I'm the creator of Cbirds, a bird flock simulator for the terminal, written in C99 with no dependencies. In the video each tmux pane in Ghostty is running cbirds on some text: two of its own source files and fastfetch. A wave lifts the letters, they fly as a flock, and after about twenty seconds every letter lands back on the cell it left, in its own colours.
fastfetch | cbirds
git log --oneline --graph --color=always | cbirds
Text mode works inside tmux and in any terminal. Outside tmux, Ghostty also gets the sprite mode, `cbirds --render kitty`: real bird sprites over the Kitty graphics protocol, and Ghostty is one of the two terminals where it works properly, together with Kitty.
Other things to try: `cbirds --render kitty --3d` for a 3D murmuration, `--hawks 2` for hawks hunting the flock, and `cbirds --link` in two windows side by side, so the birds fly from one into the other. Press `h` for the sliders.
I started it in September 2025 out of curiosity, after seeing antirez's C64 terminal emulator. I did get quite a bit of help from coding agents along the way.
Source: clainstone/cbirds
Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
64 points · 4 comments
Real-time 3D starling murmuration, simulated and rendered inside a terminal (C99, no dependencies)
I'm the creator of Cbirds, a bird flock simulator that runs in the terminal, written in C99 with no dependencies and inspired by Craig Reynolds' Boids algorithm. This is its 3D mode, running in Ghostty on macOS.
How the 3D flock works: each bird only listens to its nearest neighbours, seven by default as real starlings do, instead of everyone within a radius. On top of Reynolds' three rules (alignment, cohesion, separation) there is a pull toward a roost that keeps the flock in view, and a slow drift in the air over the roost. The bands, the splits and the folds in the video all come out of those rules. The camera goes once round the flock every two minutes, and nearer birds are drawn bigger and brighter.
Everything is simulated and drawn on the CPU and sent to the terminal as images through the Kitty graphics protocol. The panel in the corner shows what a frame costs: in this clip about 15 ms to simulate, draw and send, about 54 KB to the terminal, at 59 fps. The sliders tune the simulation while it runs.
I started the 2D version in September 2025, mostly out of curiosity, after seeing antirez's C64 terminal emulator (antirez/c64-kitty) and a lecture by Pier Luca Lanzi on multi agent systems at Politecnico di Milano. I did get quite a bit of help from coding agents along the way. One useful thing I ended up building was a custom GIF encoder, so the agents could visually inspect the simulation and check whether their changes worked.
It also has hawks that chase the flock, multiple flocks that merge or avoid each other, text piped in that takes flight (`cat file.txt | cbirds`), Braille rendering for any terminal, and birds that fly between terminal windows.
Source: clainstone/cbirds
Command: `cbirds --render kitty --3d --color prism`
Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
42 points · 5 comments
cbirds - Hejno ptáků ve vašem terminálu: boids Craiga Reynoldse v Braillově písmu v libovolném terminálu a jako sprity v Kitty a Ghostty
cbirds - Hejno ptáků ve vašem terminálu: boids Craiga Reynoldse v Braillově písmu v libovolném terminálu a jako sprity v Kitty a Ghostty clainstone/cbirds
103 views
Make 3D birds fly in your terminal. Now in v1.7.
Don't get hypnotized.
cbirds --3d
clainstone/cbirds t.co
9 likes · 384 views
Cbirds: A flock of birds in your terminal
clainstone/cbirds
Cbirds: A flock of birds in your terminal | Discussion
1 like
Mentions
[OC] Pywal in C! Hellwal version 1.0.9 :) Hi! I wanted to share new mode on my C pywal-like color-palette generator:) ``--comfort-mode`` looks like above ↑ Rice: - WM: Sway - Bar: Waybar - Term: Foot - Colors: Hellwal - Thing in the terminal: cbirds by clainstone - Firefox with hellwal theme - Editor nvim with hellwal-vim Also I create a website where you can see example outputs of some wallpapers if you are interested:) hellwal website hellwal github
I built a 2D/3D bird flock renderer for the terminal in C99, no libraries Hi ! I'm the creator of cbirds, a 2D/3D bird flock simulator that runs in the terminal, written in C99 and inspired by Craig Reynolds' Boids. The video shows four Kitty panes: 3D on top, 2D below. I started the 2D version in September 2025, mostly out of curiosity. I wanted to see whether a real time simulation could run inside a terminal using the Kitty graphics protocol. The idea came from antirez's C64 terminal emulator (antirez/c64-kitty) and a lecture on multi agent systems at Politecnico di Milano. How it's drawn: - The bird is one PNG compiled into the binary. At startup it's rotated into 60 headings, squashed into 3 wing positions and tinted into every shade of the colour ramp, about 1,500 small images in a fifth of a second. - In Kitty and Ghostty they're uploaded once, and a frame is then one short command per bird. Other terminals get the same images sampled down into braille, sextants or blocks. - In 3D a bird is drawn at one of five sizes, so a nearer bird is bigger and brighter, and the camera orbits the roost once every two minutes. Each bird heeds its 7 nearest neighbours, as starlings were measured doing (Ballerini et al., PNAS 2008). I really dislike relying on third party libraries, so the PNG, GIF and DEFLATE code is written from scratch, with no zlib, libpng or ncurses. I did get quite a bit of help from coding agents. The custom GIF encoder let them look at the simulation and check whether their changes worked. clainstone/cbirds
Pipe any text into cbirds and the letters fly as a flock I'm the creator of Cbirds, a bird flock simulator for the terminal, written in C99 with no dependencies. The clip is its text mode: any text piped into it becomes the flock. It reads the escape sequences, so colours, bold and layout come out as the command printed them, the letters fly, and after about twenty seconds each one lands back on its own cell. It was recorded in Ghostty inside tmux, and text mode works the same in Kitty. The part I'd show this sub is the sprite mode, `cbirds --render kitty`: real bird sprites over Kitty's graphics protocol. Every sprite is drawn once at 60 rotations, encoded as PNG and uploaded at startup. After that a frame is only placement commands inside a synchronized update, so the terminal does the compositing. It's made for Kitty and Ghostty: other terminals answer to the protocol and then draw too few birds, the wrong ones or none. cbirds --render kitty --hawks 2 --color ice cbirds --render kitty --3d --color prism fastfetch | cbirds I started it in September 2025 out of curiosity, after seeing antirez's C64 terminal emulator. I did get quite a bit of help from coding agents along the way. Source: clainstone/cbirds Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
Made the text in my tmux panes fly as a flock of birds (Ghostty) I'm the creator of Cbirds, a bird flock simulator for the terminal, written in C99 with no dependencies. In the video each tmux pane in Ghostty is running cbirds on some text: two of its own source files and fastfetch. A wave lifts the letters, they fly as a flock, and after about twenty seconds every letter lands back on the cell it left, in its own colours. fastfetch | cbirds git log --oneline --graph --color=always | cbirds Text mode works inside tmux and in any terminal. Outside tmux, Ghostty also gets the sprite mode, `cbirds --render kitty`: real bird sprites over the Kitty graphics protocol, and Ghostty is one of the two terminals where it works properly, together with Kitty. Other things to try: `cbirds --render kitty --3d` for a 3D murmuration, `--hawks 2` for hawks hunting the flock, and `cbirds --link` in two windows side by side, so the birds fly from one into the other. Press `h` for the sliders. I started it in September 2025 out of curiosity, after seeing antirez's C64 terminal emulator. I did get quite a bit of help from coding agents along the way. Source: clainstone/cbirds Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
Real-time 3D starling murmuration, simulated and rendered inside a terminal (C99, no dependencies) I'm the creator of Cbirds, a bird flock simulator that runs in the terminal, written in C99 with no dependencies and inspired by Craig Reynolds' Boids algorithm. This is its 3D mode, running in Ghostty on macOS. How the 3D flock works: each bird only listens to its nearest neighbours, seven by default as real starlings do, instead of everyone within a radius. On top of Reynolds' three rules (alignment, cohesion, separation) there is a pull toward a roost that keeps the flock in view, and a slow drift in the air over the roost. The bands, the splits and the folds in the video all come out of those rules. The camera goes once round the flock every two minutes, and nearer birds are drawn bigger and brighter. Everything is simulated and drawn on the CPU and sent to the terminal as images through the Kitty graphics protocol. The panel in the corner shows what a frame costs: in this clip about 15 ms to simulate, draw and send, about 54 KB to the terminal, at 59 fps. The sliders tune the simulation while it runs. I started the 2D version in September 2025, mostly out of curiosity, after seeing antirez's C64 terminal emulator (antirez/c64-kitty) and a lecture by Pier Luca Lanzi on multi agent systems at Politecnico di Milano. I did get quite a bit of help from coding agents along the way. One useful thing I ended up building was a custom GIF encoder, so the agents could visually inspect the simulation and check whether their changes worked. It also has hawks that chase the flock, multiple flocks that merge or avoid each other, text piped in that takes flight (`cat file.txt | cbirds`), Braille rendering for any terminal, and birds that fly between terminal windows. Source: clainstone/cbirds Command: `cbirds --render kitty --3d --color prism` Install: `brew install clainstone/tap/cbirds` (also MacPorts, apt and Nix)
cbirds - Hejno ptáků ve vašem terminálu: boids Craiga Reynoldse v Braillově písmu v libovolném terminálu a jako sprity v Kitty a Ghostty
cbirds - Hejno ptáků ve vašem terminálu: boids Craiga Reynoldse v Braillově písmu v libovolném terminálu a jako sprity v Kitty a Ghostty clainstone/cbirds
Make 3D birds fly in your terminal. Now in v1.7. Don't get hypnotized. cbirds --3d clainstone/cbirds t.co
Cbirds: A flock of birds in your terminal clainstone/cbirds
Cbirds: A flock of birds in your terminal | Discussion