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.
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.
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
-
Ask what fontconfig actually resolved, not what your terminal shows:
omarchy font current. It runsfc-match monospaceand prints the first family. On a healthy 4.x install with no override that isJetBrainsMono Nerd Font. -
Re-apply your font.
omarchy font listshows what is installed, thenomarchy font set "JetBrainsMono Nerd Font"(or your own choice, in quotes). This is the step that fixes most post-update font trouble, becauseomarchy-font-setdoes not patch your fontconfig file, it overwrites~/.config/fontconfig/fonts.confin full. Any leftover from Omarchy 3 is gone afterwards. It also rewrites the Alacritty, Kitty, Ghostty and Foot configs and restarts the Omarchy shell. -
If you get
Font '<name>' not found., the family really is not installed. Check withfc-list | grep -i <name>. The Quattro upgrader removesttf-jetbrains-monoandttf-jetbrains-mono-nerdbefore the main package transaction and installsttf-jetbrains-mono-nerd-basicinstead, 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 letfc-listbe the judge. Pick a family thatomarchy font listshows, 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. -
Rebuild the font cache and restart the clients:
fc-cache -f, thenomarchy restart shell. Add-r(fc-cache -f -r) if you want the old cache files discarded rather than updated. -
Close and reopen Ghostty, Foot and your browser.
omarchy-font-setsignals 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 inomarchy-font-setis 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. -
If bold or italic text in Kitty still uses the old font, open
~/.config/kitty/kitty.confand look forbold_fontanditalic_fontlines.omarchy font setonly rewritesfont_family, so an explicitbold_fontfrom an earlier choice survives (issue #9167). Set them toautoor to your new family. -
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 runfc-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, thenfc-cache -fand 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.confwidens 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-listfilters onfc-list :spacing=100, so dual-width fonts are excluded from the picker even thoughomarchy font setwill 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-fileincludes after the file that names them, so the theme include at the top of~/.config/ghostty/configwins over anything you write below it. In discussion #3555 a commenter left that line alone and added a secondconfig-fileinclude 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
assignrule 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 packaged50-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.
Related
- The manual chapter is Fonts, and text size across the whole desktop is one knob,
omarchy display text size. - Where did Waybar go covers the rest of the bar changes in Quattro.
- Theme not applied to GTK4 apps for GTK styling that survived the update but looks wrong.
- Fractional scaling blurry or huge apps if the problem is size rather than shape.
- Upgrading 3 to 4 for what the Quattro upgrader does to the rest of your config.
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.
| Issue | State | Comments | Opened |
|---|---|---|---|
| #4554 Upgrade issues on older CPU | closed | 27 | 2026-02-08 |
| #849 Add display-tui for monitor setup | closed | 6 | 2025-08-16 |
| #2800 google-chrome flickers | open | 23 | 2025-10-24 |
| #1394 Waybar spacing issues · fixed by #1411 | closed | 17 | 2025-09-01 |
| #4236 Omarchy update ruined them all | closed | 15 | 2026-01-12 |
| #7 Add theme installer · fixed by #150 | closed | 7 | 2025-06-27 |
| #3476 Some websites render the font a bit strangely. | closed | 15 | 2025-11-20 |
| #4158 Hibernation is not working | closed | 14 | 2026-01-08 |
| #4577 VSCode package outdated · fixed by #4581 | closed | 13 | 2026-02-11 |
| #2781 Wi-Fi disconnects after opening the menu | closed | 12 | 2025-10-23 |
Accepted answers upstream
- ghostty font size change not taking effect · answered by d1rewolf
- Omarchy Menu search should include items from sub-menus · answered by gmarziou
- ghostty falls back to default font after upgrade to 3.4.0 · answered by hrzlgnm
- Hyper-V install script · answered by jordankoehn
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.
- issueIssue #11002: Last-resort fontconfig rule only covers Arabic, so other non-Latin scripts render as tofu boxes in Chromium/Electron · ganjeez · 2026-09-09
- issueIssue #8928: Last-resort Noto Naskh Arabic rule renders Latin digits in GTK apps as serif · anakinrpi · 2026-08-29
- issueIssue #8404: omarchy font set redirects every family whose name contains mono, not just generic monospace · DanielSRojo · 2026-08-26
- issueIssue #10117: omarchy-upgrade-to-quattro: retired user configs are backed up but never removed; the abort is reported as success · Sean-Mulcahy · 2026-09-04
- issueIssue #7698: Font picker excludes FC_DUAL monospace fonts (spacing=90) · silouanwright · 2026-08-21
- issueIssue #8608: Bar icons render at ~half size with Iosevka Nerd Font Mono · Sojournn · 2026-08-27
- issueIssue #9167: omarchy font set leaves bold_font/italic_font stale in kitty.conf · ekollof · 2026-08-30
- issueIssue #7183: omarchy-font-set: terminal restart notifications never fire · WhiskeyTuesday · 2026-08-16
- prPR #7370: Fire the restart-terminal toast after a font change · 686f6c61 · 2026-08-18
- discussionDiscussion #4818: ghostty falls back to default font after upgrade to 3.4.0 · hrzlgnm · 2026-02-28
- discussionDiscussion #3555: ghostty font size change not taking effect · sepulworld · 2025-11-22
- commitMigration 1788848726: Retire the stock user icon font missed by the Quattro upgrade · 2026-09-08
- manualOmarchy manual: Fonts