dotfiles/bin/rice-font
Sarthak 7f41cf7a82 replace the old dotfiles with the sakura line rice
The bare $HOME repo is gone. This is now the rice: install.sh, rice-*
scripts in bin/, configs in home/ linked into $HOME, theme templates, st
and the particle wallpaper. Clone to ~/rice and run install.sh.
2026-09-14 19:44:44 +05:30

33 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# rice-font [family] - one monospace font for the whole rice: terminals, bar,
# menus, popups and notifications. Without an argument, pick from the
# installed Nerd Fonts. The choice is kept in ~/.config/rice/theme.override.toml,
# so it survives theme changes.
set -uo pipefail
override="${XDG_CONFIG_HOME:-$HOME/.config}/rice/theme.override.toml"
current=$(rice-theme get font 2>/dev/null)
mapfile -t fonts < <(fc-list :spacing=mono family | tr ',' '\n' | grep -i 'nerd font$' | grep -vi 'mono$\|propo$' | sort -u)
(( ${#fonts[@]} > 0 )) || { rice-notify send "Font" "No Nerd Fonts installed"; exit 1; }
if [[ -n ${1:-} ]]; then
font="$1"
else
active=""
for i in "${!fonts[@]}"; do [[ ${fonts[$i]} == "$current" ]] && active=$i; done
choice=$(printf '%s\n' "${fonts[@]}" |
rofi -dmenu -i -no-custom -format i -theme "$HOME/.config/rofi/menu.rasi" -p "Font" ${active:+-a "$active"}) || exit 0
font="${fonts[$choice]}"
fi
printf '%s\n' "${fonts[@]}" | grep -Fxq -- "$font" || { rice-notify send "Font" "\"$font\" is not an installed Nerd Font"; exit 1; }
mkdir -p "$(dirname "$override")"
touch "$override"
sed -i '/^font *=/d' "$override"
printf 'font = "%s"\n' "$font" >> "$override"
rice-theme reload
rice-hook font-set "$font"
rice-notify send "Font" "$font · open terminals pick it up when reopened"