mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-06 04:29:34 +02:00
omarchy-font-set already updates ~/.config/fontconfig/fonts.conf, which
is what fc-match, Qt, and every other XDG app reads from. Storing the
same family in shell.json gives the same value two homes that can drift
apart, and stops the bar from picking up font changes without a shell
restart.
- omarchy-font-set stops writing bar.fontFamily to shell.json and stops
poking ~/.config/waybar/style.css. fontconfig + terminals + hyprlock
+ swayosd are still updated as before.
- omarchy-font-current reads fc-match monospace -f '%{family}' and
takes the first comma-separated entry; the old jq-on-shell.json
path is gone.
- Bar / SettingsPanel / NDropdown.qml default fontFamily to
"monospace" and stop reading config.fontFamily. Qt resolves the
family through fontconfig at paint time, so omarchy-font-set updates
the bar live with no reload.
- shell-defaults.json drops bar.fontFamily.
User-visible effect: pick a Nerd Font, the bar follows it. Pick a font
without glyphs and you get tofu — same failure mode the terminals and
hyprlock already had.
57 lines
1.8 KiB
Bash
Executable File
57 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Set the system monospace font
|
|
# omarchy:args=<font-name>
|
|
# omarchy:examples=omarchy font list | omarchy font set "CaskaydiaMono Nerd Font"
|
|
|
|
font_name="$1"
|
|
|
|
if [[ -n $font_name ]]; then
|
|
if fc-list | grep -iq "$font_name"; then
|
|
if [[ -f ~/.config/alacritty/alacritty.toml ]]; then
|
|
sed -i "s/family = \".*\"/family = \"$font_name\"/g" ~/.config/alacritty/alacritty.toml
|
|
fi
|
|
|
|
if [[ -f ~/.config/kitty/kitty.conf ]]; then
|
|
sed -i "s/^font_family .*/font_family $font_name/g" ~/.config/kitty/kitty.conf
|
|
pkill -USR1 kitty
|
|
fi
|
|
|
|
if [[ -f ~/.config/ghostty/config ]]; then
|
|
sed -i "s/font-family = \".*\"/font-family = \"$font_name\"/g" ~/.config/ghostty/config
|
|
pkill -SIGUSR2 ghostty
|
|
fi
|
|
|
|
if [[ -f ~/.config/foot/foot.ini ]]; then
|
|
sed -i "s/^font=.*/font=$font_name:size=9/g" ~/.config/foot/foot.ini
|
|
fi
|
|
|
|
sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf
|
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
|
|
|
# fontconfig is the canonical source of truth — the omarchy shell, Qt
|
|
# apps, and anything else that resolves "monospace" all read from here.
|
|
xmlstarlet ed -L \
|
|
-u '//match[@target="pattern"][test/string="monospace"]/edit[@name="family"]/string' \
|
|
-v "$font_name" \
|
|
~/.config/fontconfig/fonts.conf
|
|
|
|
omarchy-restart-swayosd
|
|
|
|
if pgrep -x ghostty; then
|
|
notify-send -a omarchy-action -u low " You must restart Ghostty to see font change"
|
|
fi
|
|
|
|
if pgrep -x foot; then
|
|
notify-send -a omarchy-action -u low " You must restart Foot to see font change"
|
|
fi
|
|
|
|
omarchy-hook font-set "$font_name"
|
|
else
|
|
echo "Font '$font_name' not found."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Usage: omarchy-font-set <font-name>"
|
|
fi
|