CLI tool
pop-os/cosmic-term avatar
pop-os/cosmic-term

cosmic-term: A Terminal Emulator That Renders Bidirectional Text and Ligatures on the GPU

COSMIC terminal emulator. cosmic-term provides bidirectional rendering and ligatures with a custom renderer based on cosmic-text.

593 stars203 forksRustGPL-3.0

At a glance

What is it?
cosmic-term is a Rust terminal emulator from the COSMIC desktop project. It wraps alacritty_terminal and adds a custom renderer for bidirectional text and ligatures, with a GPU path and a software fallback.
Who is it for?
Adopt cosmic-term if you are a COSMIC desktop user or a developer who needs a terminal that renders Arabic, Hebrew, or other bidirectional scripts correctly, and who values ligature support. Do not adopt it if you require a stable release with a long track record, because the repository shows no recent releases and the project is still in active development.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What cosmic-term solves and who it targets

Most terminal emulators handle text as a simple left-to-right stream. That breaks down when you paste or display Arabic, Hebrew, or other right-to-left scripts, and it also fails to show ligatures that many programmers expect in fonts like Fira Code. cosmic-term tackles both by using a custom renderer built on cosmic-text, which is a text shaping library from the same Pop!_OS project. The target user is a developer or system administrator on a COSMIC desktop, or anyone who wants a terminal that treats text shaping as a first-class concern. The README does not mention a specific audience, but the project name and its parent project make the intent clear.

The mechanism: alacritty_terminal plus cosmic-text

cosmic-term does not reimplement the terminal emulation logic. It uses alacritty_terminal, the library that powers the Alacritty terminal, for parsing escape sequences, managing the screen state, and handling the PTY. The custom part is the renderer. cosmic-text performs shaping, which includes bidirectional reordering and ligature substitution. The renderer then draws the shaped glyphs. This split means the terminal logic is battle-tested, while the rendering path is new. The README states this directly: it is built using alacritty_terminal that is provided by the alacritty project. That is a pragmatic choice, because reimplementing terminal emulation from scratch is a large and error-prone task.

Two rendering paths: wgpu and a software fallback

The renderer has two modes. The default, enabled by a feature called wgpu, uses GPU rendering with glyphon and wgpu. Glyphon is a text rendering library that integrates with wgpu. If that feature is disabled, or if wgpu fails to initialize at runtime, the code falls back to softbuffer and tiny-skia. Softbuffer is a software framebuffer library, and tiny-skia is a software rasterizer. That fallback is a defensive design. It means the terminal will still run on machines without a working GPU driver, though likely at a lower frame rate. The README does not give performance numbers, so you should assume the software path is slower, especially for large scrollback buffers or heavy output.

Getting it running: build features and color schemes

The README gives no installation instructions, so you must build from source. The project is written in Rust, so you would clone the repository and run cargo build --release. The wgpu feature is enabled by default, so a plain build includes GPU rendering. If you want the software-only path, you would disable default features, for example with cargo build --release --no-default-features. The README mentions a menu item for color schemes: View -> Color schemes... You can import custom schemes from there, and template files are available in the color-schemes folder in the repository. That is the only configuration detail documented. There is no mention of a config file for fonts or keybindings, which is a gap for a terminal emulator.

A genuine limitation: dependency on alacritty_terminal and cosmic-text

The architecture has a weakness. By depending on alacritty_terminal, cosmic-term inherits the terminal emulation behavior of Alacritty, including its limitations. For example, Alacritty does not support tabs or split panes natively, and cosmic-term likely does not either, though the README does not say. More importantly, cosmic-text is a young library. Bidirectional text shaping is complex, and the README does not claim full Unicode conformance. There may be edge cases in mixed-direction text or complex scripts that are not handled correctly. The README also does not mention any test suite or known issues. That is a warning sign for a tool that handles text rendering, where subtle bugs are common.

The alternative: Alacritty itself

The obvious alternative is Alacritty, the project that provides alacritty_terminal. Alacritty is a mature terminal emulator with a large user base and frequent releases. It uses its own renderer, which historically did not support ligatures or bidirectional text. That is the difference in approach: Alacritty prioritizes performance and simplicity, while cosmic-term adds a heavier rendering stack for better text shaping. If you do not need Arabic or ligatures, Alacritty is a safer choice because it has years of bug fixes and a stable release process. cosmic-term, by contrast, has no releases listed in the repository metadata, which means you are using a moving target.

Maintenance and license implications

The repository is archived: no, but the last push date is unknown, and no recent releases are listed. That makes maintenance cost hard to estimate. The README is short, which suggests the project is early in its lifecycle. You should expect to rebuild frequently as dependencies update. The license is GPL-3.0. That is a strong copyleft license. If you embed cosmic-term in a proprietary product, you would need to comply with the GPL, which may mean releasing your source code. This is not legal advice, but you should be aware that the license is more restrictive than MIT or Apache-2.0. The use of alacritty_terminal also means you inherit its license, which is Apache-2.0, but the overall project license is GPL-3.0, so that governs.

Editorial conclusion

Adopt cosmic-term if you are a COSMIC desktop user or a developer who needs a terminal that renders Arabic, Hebrew, or other bidirectional scripts correctly, and who values ligature support. Do not adopt it if you require a stable release with a long track record, because the repository shows no recent releases and the project is still in active development. Before adopting, verify that the wgpu feature works on your GPU and that the software fallback meets your performance needs, since the README states that fallback occurs when wgpu is not enabled or fails to initialize.

Official sources

  1. Official README
  2. Project repository
Community notes

Community notes