DEV Community

Hironobu Sano
Hironobu Sano

Posted on • Originally published at zenn.dev

Living on the Linux Console — Part 1: bcon, a Modern Terminal for TTY

"GUI isn't an option." — Anonymous

Lately, I've been developing almost entirely with AI coding agents — Claude Code, Codex, Gemini CLI. Writing code, generating docs, running tests, managing GitHub and AWS, even searching the web — all from the terminal.

Then it hit me:

Wait... am I ever actually touching a GUI anymore? 🤪

That led to another thought:

Do I even need a window system (X11/Wayland) to live as a developer?

I know, I know — sounds crazy. But hear me out.

If tools like Claude Code and Ghostty exist... why can't I have that experience directly on the Linux console?

The problem is, the standard Linux TTY is pretty rough:

  • Text rendering is ugly
  • No true color or text decorations
  • No emoji, Nerd Fonts, or ligatures
  • No Kitty/Sixel graphics protocol
  • No clipboard support
  • No CJK input (IME)

Old tools like fbterm and kon existed, but nothing modern. Nothing that felt like Ghostty.

So I built it.

bcon running on Ubuntu Server
bcon running on Ubuntu Server — Claude Code on the left, yazi top-right, Neovim bottom-right

This is bcon — a GPU-accelerated terminal emulator that runs directly on the Linux console. No X11. No Wayland. Just TTY.

It supports tiling and tabs, so it feels like a tiling window manager — but running entirely in TTY.

Screenshot is from Ubuntu Server (no X/Wayland) running inside Parallels Desktop

Japanese input on bcon
Japanese IME input working on bcon via fcitx5

Japanese input works too 🐤

For setup details, check the repository. One practical tip: rather than replacing your main TTY, I recommend running bcon on tty2 only. Switch to it with Ctrl+Alt+F2, and return to your normal console with Ctrl+Alt+F1. Safe and easy to recover from.

Linux traditionally has 6 virtual consoles (tty1–tty6). X Window historically used tty7; modern Ubuntu+GDM typically uses tty1/2.

github.com/sanohiro/bcon


This is Part 1 of my series "Living on the Linux Console" — next up: a full headless browser for TTY.

Top comments (0)