Move Kitty defaults to the system config and restrict remote control
(cherry picked from commit f04366de79)
(cherry picked from commit 6dfbfa146b91bf310f2ff7147953afddef73de9a)
85 lines
2.4 KiB
Bash
Executable File
85 lines
2.4 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"
|
|
|
|
usage() {
|
|
echo "Usage: omarchy-font-set <font-name>"
|
|
}
|
|
|
|
font_name="${1:-}"
|
|
|
|
case "$font_name" in
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
"")
|
|
usage >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if ! fc-list | grep -Fqi -- "$font_name"; then
|
|
echo "Font '$font_name' not found."
|
|
exit 1
|
|
fi
|
|
|
|
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 ]] || omarchy-cmd-present kitty; then
|
|
mkdir -p ~/.config/kitty
|
|
if grep -qE '^[[:space:]]*font_family[[:space:]]+' ~/.config/kitty/kitty.conf 2>/dev/null; then
|
|
kitty_font_name=$(printf '%s' "$font_name" | sed 's/[\\&/]/\\&/g')
|
|
sed --follow-symlinks -i -E "s/^[[:space:]]*font_family[[:space:]]+.*/font_family $kitty_font_name/" ~/.config/kitty/kitty.conf
|
|
else
|
|
printf '\nfont_family %s\n' "$font_name" >>~/.config/kitty/kitty.conf
|
|
fi
|
|
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
|
|
|
|
# fontconfig is the canonical source of truth — the omarchy shell, Qt apps,
|
|
# and anything resolving "monospace" all read from here. This file is loaded
|
|
# after the package-owned default, and prepend_first puts the chosen family at
|
|
# the head of the list so it wins over the family that default prefers.
|
|
fontconfig_file="$HOME/.config/fontconfig/fonts.conf"
|
|
mkdir -p "$(dirname "$fontconfig_file")"
|
|
cat >"$fontconfig_file" <<XML
|
|
<?xml version="1.0"?>
|
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
<fontconfig>
|
|
<match target="pattern">
|
|
<test name="family" qual="any">
|
|
<string>monospace</string>
|
|
</test>
|
|
<edit name="family" mode="prepend_first" binding="strong">
|
|
<string>$font_name</string>
|
|
</edit>
|
|
</match>
|
|
</fontconfig>
|
|
XML
|
|
|
|
omarchy-restart-shell
|
|
|
|
if pgrep -x ghostty; then
|
|
omarchy-notification-send -g "You must restart Ghostty to see font change"
|
|
fi
|
|
|
|
if pgrep -x foot; then
|
|
omarchy-notification-send -g "You must restart Foot to see font change"
|
|
fi
|
|
|
|
omarchy-hook font-set "$font_name"
|