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:
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.
Key features:
- Systematic prefixes (for example,
hfor math,gfor Greek) make sequences learnable - Dual access patterns (iconic & mnemonic) for learning and to fit your workflow
- Automated validation ensures zero conflicts
- Omarchy-friendly by design — deliberately avoids emoji shortcut collisions
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.
This project is actively developed. Mappings may change, be added, or be removed until version 1.0 is released.
Symbol Categories
Quick Start
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.
git clone https://github.com/phil-bowens/xcompose-stem.git ~/.xcompose-stem
cd ~/.xcompose-stem && make install
See the installation guide for detailed instructions and platform-specific setup.
Documentation
- Symbol Reference - Browse and search all sequences
- README - Installation and usage
- Contributing Guide - How to contribute
- Developer Documentation - Architecture and design