I Just Wanted Emacs to Look Nice – Using 24-Bit Color in Terminals

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • sixel-tmux

    sixel-tmux is a fork of tmux, with just one goal: having the most reliable support of graphics

  • Your approach looks very sound!

    A fork of terminfo may be needed if the description of modern terminal capabilities can't be added -- or if old and deprecated attributes repurposed for that job (like in your padding example): if you're automating the correction/creation of terminfos in ~/, IMHO, it may be better to piggyback on tic as much as possible.

    Anyway, to backport modern terminal descriptions to legacy programs, creating correct binary terminfos in ~/.terminfo seems the best practice. You can also invent new TERM. When I wanted to have italics etc about everywhere, personally that's just what I did for sixel-tmux: https://github.com/csdvrx/sixel-tmux/?tab=readme-ov-file#ste... : just declare a new $TERM you know to be right, and use that in the apps that let you use a little logic in their configuration file

    I do that in my .vimrc:

       " If Vim doesn't know the escape codes to switch to italic

  • CuteVim

    Sensible defaults for Vim

  • BTW you should package your emacs config file with the emacs APE to do a cuteemacs, to carry your config files and everything in a portable binary: https://github.com/csdvrx/CuteVim

    Another idea: have you considered that the "program that would be run by .bashrc" to generate the "unambiguous 24-bit color capabilities" could set environment variables to communicate them? Like, if you can't stuff them in terminfo, stuff them in environment variables! Env var work well on Windows, and the configuration files of terminal programs could just use these when available to override.

    It's be like adding friends to your proposed TERMVERSION: TERMSETF24 etc

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • alacritty

    A cross-platform, OpenGL terminal emulator.

  • IME, this is like the golden age of terminal apps in general and macOS-compatible ones in particular. There are several really good terminals for macOS:

    [iTerm2 app](https://iterm2.com/)

    [Kitty terminal](https://sw.kovidgoyal.net/kitty/)

    [WezTerm terminal](https://wezfurlong.org/wezterm/index.html)

    [Alacritty](https://github.com/alacritty/alacritty)

    My daily driver is WezTerm…

    - Runs on Linux, macOS, Windows 10 and FreeBSD

    - [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](https://wezfurlong.org/wezterm/multiplexing.html)

    - [Ligatures](https://github.com/tonsky/FiraCode#fira-code-monospaced-font...), Color Emoji and font fallback, with true color and [dynamic color schemes](https://wezfurlong.org/wezterm/config/appearance.html#colors).

    - [Hyperlinks](https://wezfurlong.org/wezterm/hyperlinks.html)

    - [Searchable Scrollback](https://wezfurlong.org/wezterm/scrollback.html) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode)

    - xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!)

    - SGR style mouse reporting (works in vim and tmux)

    - Render underline, double-underline, italic, bold, strikethrough (most other terminal emulators do not support as many render attributes)

    - Configuration via a [configuration file](https://wezfurlong.org/wezterm/config/files.html) with hot reloading

    - Multiple Windows (Hotkey: `Super-N`)

    - Splits/Panes (Split horizontally/vertically: `Ctrl-Shift-Alt-%` and `Ctrl-Shift-Alt-"`, move between panes: `Ctrl-Shift-ArrowKey`)

    - Tabs (Hotkey: `Super-T`, next/prev: `Super-Shift-[` and `Super-Shift-]`, go-to: `Super-[1-9]`)

    - [SSH client with native tabs](https://wezfurlong.org/wezterm/ssh.html)

    - [Connect to serial ports for embedded/Arduino work](https://wezfurlong.org/wezterm/serial.html)

    - Connect to a local multiplexer server over unix domain sockets

    - Connect to a remote multiplexer using SSH or TLS over TCP/IP

    - iTerm2 compatible image protocol support, and built-in [imgcat command](https://wezfurlong.org/wezterm/imgcat.html)

    - Kitty graphics support

    - Sixel graphics support (experimental: starting in `20200620-160318-e00b076c`)

  • kitty

    Cross-platform, fast, feature-rich, GPU based terminal

  • IME, this is like the golden age of terminal apps in general and macOS-compatible ones in particular. There are several really good terminals for macOS:

    [iTerm2 app](https://iterm2.com/)

    [Kitty terminal](https://sw.kovidgoyal.net/kitty/)

    [WezTerm terminal](https://wezfurlong.org/wezterm/index.html)

    [Alacritty](https://github.com/alacritty/alacritty)

    My daily driver is WezTerm…

    - Runs on Linux, macOS, Windows 10 and FreeBSD

    - [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](https://wezfurlong.org/wezterm/multiplexing.html)

    - [Ligatures](https://github.com/tonsky/FiraCode#fira-code-monospaced-font...), Color Emoji and font fallback, with true color and [dynamic color schemes](https://wezfurlong.org/wezterm/config/appearance.html#colors).

    - [Hyperlinks](https://wezfurlong.org/wezterm/hyperlinks.html)

    - [Searchable Scrollback](https://wezfurlong.org/wezterm/scrollback.html) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode)

    - xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!)

    - SGR style mouse reporting (works in vim and tmux)

    - Render underline, double-underline, italic, bold, strikethrough (most other terminal emulators do not support as many render attributes)

    - Configuration via a [configuration file](https://wezfurlong.org/wezterm/config/files.html) with hot reloading

    - Multiple Windows (Hotkey: `Super-N`)

    - Splits/Panes (Split horizontally/vertically: `Ctrl-Shift-Alt-%` and `Ctrl-Shift-Alt-"`, move between panes: `Ctrl-Shift-ArrowKey`)

    - Tabs (Hotkey: `Super-T`, next/prev: `Super-Shift-[` and `Super-Shift-]`, go-to: `Super-[1-9]`)

    - [SSH client with native tabs](https://wezfurlong.org/wezterm/ssh.html)

    - [Connect to serial ports for embedded/Arduino work](https://wezfurlong.org/wezterm/serial.html)

    - Connect to a local multiplexer server over unix domain sockets

    - Connect to a remote multiplexer using SSH or TLS over TCP/IP

    - iTerm2 compatible image protocol support, and built-in [imgcat command](https://wezfurlong.org/wezterm/imgcat.html)

    - Kitty graphics support

    - Sixel graphics support (experimental: starting in `20200620-160318-e00b076c`)

  • FiraCode

    Free monospaced font with programming ligatures

  • IME, this is like the golden age of terminal apps in general and macOS-compatible ones in particular. There are several really good terminals for macOS:

    [iTerm2 app](https://iterm2.com/)

    [Kitty terminal](https://sw.kovidgoyal.net/kitty/)

    [WezTerm terminal](https://wezfurlong.org/wezterm/index.html)

    [Alacritty](https://github.com/alacritty/alacritty)

    My daily driver is WezTerm…

    - Runs on Linux, macOS, Windows 10 and FreeBSD

    - [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](https://wezfurlong.org/wezterm/multiplexing.html)

    - [Ligatures](https://github.com/tonsky/FiraCode#fira-code-monospaced-font...), Color Emoji and font fallback, with true color and [dynamic color schemes](https://wezfurlong.org/wezterm/config/appearance.html#colors).

    - [Hyperlinks](https://wezfurlong.org/wezterm/hyperlinks.html)

    - [Searchable Scrollback](https://wezfurlong.org/wezterm/scrollback.html) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode)

    - xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!)

    - SGR style mouse reporting (works in vim and tmux)

    - Render underline, double-underline, italic, bold, strikethrough (most other terminal emulators do not support as many render attributes)

    - Configuration via a [configuration file](https://wezfurlong.org/wezterm/config/files.html) with hot reloading

    - Multiple Windows (Hotkey: `Super-N`)

    - Splits/Panes (Split horizontally/vertically: `Ctrl-Shift-Alt-%` and `Ctrl-Shift-Alt-"`, move between panes: `Ctrl-Shift-ArrowKey`)

    - Tabs (Hotkey: `Super-T`, next/prev: `Super-Shift-[` and `Super-Shift-]`, go-to: `Super-[1-9]`)

    - [SSH client with native tabs](https://wezfurlong.org/wezterm/ssh.html)

    - [Connect to serial ports for embedded/Arduino work](https://wezfurlong.org/wezterm/serial.html)

    - Connect to a local multiplexer server over unix domain sockets

    - Connect to a remote multiplexer using SSH or TLS over TCP/IP

    - iTerm2 compatible image protocol support, and built-in [imgcat command](https://wezfurlong.org/wezterm/imgcat.html)

    - Kitty graphics support

    - Sixel graphics support (experimental: starting in `20200620-160318-e00b076c`)

  • iTerm2

    iTerm2 is a terminal emulator for Mac OS X that does amazing things.

  • IME, this is like the golden age of terminal apps in general and macOS-compatible ones in particular. There are several really good terminals for macOS:

    [iTerm2 app](https://iterm2.com/)

    [Kitty terminal](https://sw.kovidgoyal.net/kitty/)

    [WezTerm terminal](https://wezfurlong.org/wezterm/index.html)

    [Alacritty](https://github.com/alacritty/alacritty)

    My daily driver is WezTerm…

    - Runs on Linux, macOS, Windows 10 and FreeBSD

    - [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](https://wezfurlong.org/wezterm/multiplexing.html)

    - [Ligatures](https://github.com/tonsky/FiraCode#fira-code-monospaced-font...), Color Emoji and font fallback, with true color and [dynamic color schemes](https://wezfurlong.org/wezterm/config/appearance.html#colors).

    - [Hyperlinks](https://wezfurlong.org/wezterm/hyperlinks.html)

    - [Searchable Scrollback](https://wezfurlong.org/wezterm/scrollback.html) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode)

    - xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!)

    - SGR style mouse reporting (works in vim and tmux)

    - Render underline, double-underline, italic, bold, strikethrough (most other terminal emulators do not support as many render attributes)

    - Configuration via a [configuration file](https://wezfurlong.org/wezterm/config/files.html) with hot reloading

    - Multiple Windows (Hotkey: `Super-N`)

    - Splits/Panes (Split horizontally/vertically: `Ctrl-Shift-Alt-%` and `Ctrl-Shift-Alt-"`, move between panes: `Ctrl-Shift-ArrowKey`)

    - Tabs (Hotkey: `Super-T`, next/prev: `Super-Shift-[` and `Super-Shift-]`, go-to: `Super-[1-9]`)

    - [SSH client with native tabs](https://wezfurlong.org/wezterm/ssh.html)

    - [Connect to serial ports for embedded/Arduino work](https://wezfurlong.org/wezterm/serial.html)

    - Connect to a local multiplexer server over unix domain sockets

    - Connect to a remote multiplexer using SSH or TLS over TCP/IP

    - iTerm2 compatible image protocol support, and built-in [imgcat command](https://wezfurlong.org/wezterm/imgcat.html)

    - Kitty graphics support

    - Sixel graphics support (experimental: starting in `20200620-160318-e00b076c`)

  • nixpkgs

    Nix Packages collection & NixOS

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts