XCompose-STEM

Easy Unicode Symbols on Linux for STEM Professionals

The Problem

Linux has excellent Unicode support, but typing math symbols is a mess. It might seem that your options are:

  • Copy/paste from editors or Google (tedious, breaks flow)
  • Use Character Map apps (slow, can't remember where anything is)
  • Install LATEX and render everything (overkill for a quick email)
  • Memorize Unicode codepoints (lol no)

Fortunately, most modern distributions of Linux ship with XCompose, a subsystem of X11 that allows you to define a Compose key, which we'll represent by the symbol.

When activated, this key lets you type Unicode (or any other!) symbols by pressing additional key combinations. Think of it like a shift key for symbols:

Shift 1 becomes !
g a becomes α

Same concept, different symbols.

Most Linux desktop environments support assigning a Compose key, though you'll likely have to set one up first (see Quick Start below).

Even after assigning , chances are you'll still need to configure key sequences. Some systems have defaults, but they aren't well documented. There are also other configs from other users out there in the wild that you can check out.

Still, I encountered some issues:

  • As I pointed out, most Linux distros don't have the greatest defaults
  • Custom projects have huge symbol sets which are impossible to memorize
  • Many have no conflict validation — sequences that shadow each other
  • None are Omarchy-aware — they collide with built-in emoji shortcuts that I want to preserve
  • The result is the typical kitchen-sink approach — everything for everyone, usable by no one

My Solution

What's already out there didn't quite fit my needs, so I put together XCompose-STEM a curated, validated XCompose configuration focused on STEM symbols. The idea is to reduce the problem set to hundreds of sequences instead of thousands. Easier to search, easier to memorize. Now I can type symbols directly and easily in any Linux application without needing a LATEX renderer.

h 8 becomes
h i t becomes

Key features:

I also put together some tools to help with the design of the key sequences, validation of config, and generate helpful documentation like the Symbol Reference.

⚠️ Work in Progress
This project is actively developed. Mappings may change, be added, or be removed until version 1.0 is released.

Symbol Categories

Mathematical Symbols
∫ ∂ ∇ ∞ ≈ ≠ ≤ ≥ ± × ÷ √ ∑ ∏ ⊕ ⊗
Calculus, algebra, and mathematical operators
Greek Letters
α β γ δ ε ζ η θ λ μ π ρ σ τ φ ψ ω Γ Δ Θ Λ Π Σ Φ Ψ Ω
Complete lowercase and uppercase Greek alphabet
Arrows
→ ← ↑ ↓ ↔ ⇒ ⇐ ⇔ ↦ ⟶ ⟹ ⇀ ↼ ⟲ ⟳
All directions, double arrows, and mathematical arrows
Set Theory & Logic
∈ ∉ ⊂ ⊃ ⊆ ⊇ ∪ ∩ ∅ ∧ ∨ ¬ ∀ ∃ ⊤ ⊥ ⊢ ⊨
Set membership, logical operators, and quantifiers
Subscripts & Superscripts
x₀ x₁ x₂ x₃ xₙ | x⁰ x¹ x² x³ xⁿ
Numeric subscripts and superscripts for notation
Special Symbols
° ′ ″ ‴ ℏ Å ‰ † ‡ § ¶ © ® ™
Degrees, primes, scientific notation, and typography

Quick Start

0
Assign a Compose key

You'll need to look up how to do this on your distro.

Note: It's already CAPS on Omarchy, if you're interested in trying something new.

1
Clone the repository
git clone https://github.com/phil-bowens/xcompose-stem.git ~/.xcompose-stem
2
Run the installer
cd ~/.xcompose-stem && make install
3
Start typing symbols
g a becomes α
h 8 becomes
- > becomes

See the installation guide for detailed instructions and platform-specific setup.

Documentation