Unofficial community reference. Not affiliated with 37signals or the Omacom Foundation. Download Omarchy only from omarchy.org.
omarchylinux.org Unofficial field manual

Fonts wrong or missing after an Omarchy update

Wrong monospace font, tofu boxes, or broken emoji after an Omarchy 4 update. Reset fontconfig with omarchy font set, rebuild the font cache, fix leftovers.

Workaround available Applies to Omarchy 4.0.0 and later Last verified 2026-09-16 on 4.0.4
Short answer

Run `omarchy font set "JetBrainsMono Nerd Font"`. That overwrites ~/.config/fontconfig/fonts.conf in full, which replaces any stale Omarchy 3 copy the Quattro upgrade left behind, then updates every terminal config and restarts the shell. Follow with `fc-cache -f` and restart Ghostty, Foot, and your browser by hand, because none of them pick up the change in place.

On this page
  1. The fix
  2. Verify it worked
  3. Why it happens
  4. If that did not work
  5. Related

Fonts break after an Omarchy update in three distinct ways, and they have different causes. Either the monospace font is not the one you picked, or some characters render as empty boxes, or the icon glyphs in the bar and the terminal prompt look wrong. All of this was checked against the v4.0.0 through v4.0.4 trees, with v3.8.4 as the 3.x reference.

Start with omarchy-version. Everything below is for 4.0.0 and later. If you are still on 3.8.4 or earlier, see the note at the end.

The fix

  1. Ask what fontconfig actually resolved, not what your terminal shows: omarchy font current. It runs fc-match monospace and prints the first family. On a healthy 4.x install with no override that is JetBrainsMono Nerd Font.

  2. Re-apply your font. omarchy font list shows what is installed, then omarchy font set "JetBrainsMono Nerd Font" (or your own choice, in quotes). This is the step that fixes most post-update font trouble, because omarchy-font-set does not patch your fontconfig file, it overwrites ~/.config/fontconfig/fonts.conf in full. Any leftover from Omarchy 3 is gone afterwards. It also rewrites the Alacritty, Kitty, Ghostty and Foot configs and restarts the Omarchy shell.

  3. If you get Font '<name>' not found., the family really is not installed. Check with fc-list | grep -i <name>. The Quattro upgrader removes ttf-jetbrains-mono and ttf-jetbrains-mono-nerd before the main package transaction and installs ttf-jetbrains-mono-nerd-basic instead, so a family name that only the full package provided will not resolve any more. Which names the basic package drops is not documented anywhere I could find, so let fc-list be the judge. Pick a family that omarchy font list shows, or install a fresh one from Install > Style > Font in the Omarchy menu (Super + Space), which installs the package and switches to it in one go.

  4. Rebuild the font cache and restart the clients: fc-cache -f, then omarchy restart shell. Add -r (fc-cache -f -r) if you want the old cache files discarded rather than updated.

  5. Close and reopen Ghostty, Foot and your browser. omarchy-font-set signals Kitty to reload and Alacritty watches its own config, so those two follow along; Ghostty and Foot do not. Omarchy is supposed to warn you about this with a toast, but the notification call in omarchy-font-set is malformed and the message is never delivered. That was reported in issue #7183 and PR #7370 is still open as of 4.0.4, so treat the manual restart as required.

  6. If bold or italic text in Kitty still uses the old font, open ~/.config/kitty/kitty.conf and look for bold_font and italic_font lines. omarchy font set only rewrites font_family, so an explicit bold_font from an earlier choice survives (issue #9167). Set them to auto or to your new family.

  7. If the Omarchy icon glyphs in the bar look wrong or out of date, check for a leftover user copy of the icon font: ls -l ~/.local/share/fonts/omarchy.ttf. Migration 1788848726, which shipped in v4.0.3, removes that file, but only when its checksum matches the stock one, and it refuses to touch symlinks or a font you replaced yourself. If the file is still there and you did not put it there, move it aside and run fc-cache -f.

Verify it worked

omarchy font current
fc-match monospace
fc-match sans-serif
fc-match serif

On a stock 4.0.x install those return your chosen monospace family, Liberation Sans and Liberation Serif. The two Liberation answers come from the package-owned 50-omarchy.conf, not from anything in your home directory, so seeing them is a good sign that the package default is in charge again.

Then look at the desktop. The bar icons should be crisp and evenly sized, emoji should render as emoji rather than boxes, and any CJK or other non-Latin text you use should render as glyphs rather than boxes.

Why it happens

Quattro moved the font defaults out of your home directory. On 3.8.4 the whole configuration was one user file, ~/.config/fontconfig/fonts.conf, and omarchy-font-set edited the monospace entry inside it with xmlstarlet. On 4.x the defaults are package-owned, shipped as 50-omarchy.conf and loaded from /etc/fonts/conf.d, and the user file only carries your override.

The upgrade handles that move by hash. It backs up each retired config file, then compares the backup against a list of checksums for every default Omarchy has ever shipped. A file that matches is deleted so the packaged one takes over. A file that does not match is copied back, on the assumption that you customized it deliberately. Five stock hashes for fontconfig/fonts.conf are on that list. If you ever changed your font on 3.x, your copy matches none of them, so it is restored and stays active alongside the new packaged file. Issue #10117 documents an upgrade where the removal pass never ran at all, leaving fontconfig/fonts.conf and an orphaned omarchy.ttf in ~/.config behind while the upgrade still showed its completion screen.

The other half is the new fallback rules. 50-omarchy.conf pins the three generic families with a strong assign, which cuts the alias chains that noto-fonts appends later in the load order. It then appends a single Arabic face to every pattern as a catch-all, because Chromium and Electron look up each missing character separately and never carry a language tag that the targeted rules could match. Both choices have visible side effects that are open as of 4.0.4.

If that did not work

  • Empty boxes for Tamil, Devanagari, Thai and other non-Latin scripts in Chromium, Chrome, Brave or Electron apps. The last-resort fallback only names an Arabic face, so every other script has nothing to fall back to. Issue #11002 has the analysis and a verified workaround: a file in /etc/fonts/conf.d/ with a number above 50 that appends the Noto family for your script, then fc-cache -f and a full browser restart.
  • Digits rendering in a serif or calligraphic face in GTK4 apps such as Files. Same last-resort rule, opposite failure. Issue #8928 has a user-level override that drops the Arabic face when it is the effective fallback.
  • An app asks for a specific font and gets the one you set globally. Any family whose name contains “mono” is affected, because fontconfig’s own 48-guessfamily.conf widens such patterns before the Omarchy rule sees them. Issue #8404 has the full load order and the evidence.
  • Your font is installed but missing from Style > Font. omarchy-font-list filters on fc-list :spacing=100, so dual-width fonts are excluded from the picker even though omarchy font set will accept them by name. Issue #7698.
  • Bar icons much smaller than before. The “Nerd Font Mono” variants draw their icon glyphs at about half the em box, and the bar sizes each icon by font pixel size rather than by the ink it paints, so the icon shrinks. Issue #8608 has measurements per codepoint for Iosevka, and a commenter hit the same thing with CaskaydiaMono Nerd Font Mono. The fix that worked for both was choosing the same family without the trailing “Mono” in its name. PR #8830, which sizes icons by their painted bounds, is still open as of 4.0.4.
  • Ghostty ignores a font size you set by hand. Ghostty processes config-file includes after the file that names them, so the theme include at the top of ~/.config/ghostty/config wins over anything you write below it. In discussion #3555 a commenter left that line alone and added a second config-file include as the very last line, pointing at a personal file that holds the font settings. Another noted that Ghostty needs a config reload (right-click, Config, Reload Configuration) before a size change shows.
  • You are still on 3.x. Discussion #4818 describes the 3.4.0 version of this problem, where an update reset Ghostty to the default font. The workaround was the same in spirit: pick your font again in Style > Font. A commenter there traced it to the strong assign rule in the 3.x user file, and the 4.0.0 release notes list a fix for that binding. None of the fontconfig detail above applies to 3.x, which has no packaged 50-omarchy.conf.

If the update that broke your fonts also broke other things, the aborted-upgrade case in issue #10117 is worth ruling out before you spend time on fontconfig.

Upstream threads about this error

147 issues on the Omarchy tracker match this error cluster. Newest fixes often appear as comments on the most-discussed threads.

IssueStateCommentsOpened
#4554 Upgrade issues on older CPUclosed272026-02-08
#849 Add display-tui for monitor setupclosed62025-08-16
#2800 google-chrome flickersopen232025-10-24
#1394 Waybar spacing issues · fixed by #1411 closed172025-09-01
#4236 Omarchy update ruined them allclosed152026-01-12
#7 Add theme installer · fixed by #150 closed72025-06-27
#3476 Some websites render the font a bit strangely.closed152025-11-20
#4158 Hibernation is not workingclosed142026-01-08
#4577 VSCode package outdated · fixed by #4581 closed132026-02-11
#2781 Wi-Fi disconnects after opening the menuclosed122025-10-23

Accepted answers upstream

Questions people ask

Did Omarchy 4 change the default font?
The family is the same, JetBrainsMono Nerd Font, but the package is not. Omarchy 3.8.4 installed ttf-jetbrains-mono-nerd; 4.0.0 switched to the lighter ttf-jetbrains-mono-nerd-basic to save about 200MB, and the Quattro upgrader removes the old package. If a family name you used on 3.x no longer shows up in fc-list after the upgrade, the package swap is the likely reason.
Where does Omarchy set the system font now?
In two places. The package-owned default lives at /usr/share/fontconfig/conf.avail/50-omarchy.conf and is loaded from /etc/fonts/conf.d. Your own choice lives in ~/.config/fontconfig/fonts.conf, which omarchy font set rewrites in full every time you run it. On 3.x there was no package-owned file; ~/.config/fontconfig/fonts.conf was the only one.
Why did my terminal font change but nothing else, or the other way round?
omarchy font set writes fontconfig and each terminal config separately. Fontconfig covers the Omarchy shell, Qt and anything asking for monospace. Alacritty, Kitty, Ghostty and Foot each get their own line edited. If one of those files was customized in a way the edit does not match, that terminal keeps the old font while everything else moves.
Do I need to reboot after changing fonts?
No. Restart the shell with omarchy restart shell, restart Ghostty and Foot by hand, and restart your browser. Chromium and Electron read the fontconfig chain at process start, so an open window keeps the old fallback until you close every process.

Sources and credit

Fixes on this page were worked out by ganjeez (Traced Chromium tofu boxes to 50-omarchy.conf truncating the Noto alias chain, and published a working /etc/fonts/conf.d workaround), DanielSRojo (Showed with fc-conflist why a named font can resolve to the font set by omarchy font set), anakinrpi (Found that the last-resort Arabic rule captures Latin digits in GTK apps), Sean-Mulcahy (Documented that a Quattro upgrade can leave the old ~/.config/fontconfig/fonts.conf active while still reporting success), Sojournn (Measured Nerd Font glyph boxes to explain why bar icons shrink with some fonts). Text here is our own paraphrase; follow the links for the original threads.

Unofficial. Verify against the official manual for your version. Improve this page Markdown version Sources