env/utils/scripts/x-dpi-facesizes.sh
Lucas 9f0e7a0c12 Xdefaults, xinitrc: dynamically calculate font size
Recent changes in OpenBSD made my laptops share different (althought
correctly calculated) DPIs. Add an script and rework X resources loading
so:

 1. load ~/.Xdefaults into xrdb for baseline
 2. run the script to compute a DPI and xterm's faceSize so it respects
    some values previously defined in this repo

As an upside, now XTerm.VT100.faceSize can be queried, so use that in
hlwm theme.
2022-05-17 03:14:19 +00:00

54 lines
1.3 KiB
Bash

#!/bin/sh
# env
# Written in 2022 by Lucas
# CC0 1.0 Universal/Public domain - No rights reserved
#
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any
# warranty. You should have received a copy of the CC0 Public Domain
# Dedication along with this software. If not, see
# <http://creativecommons.org/publicdomain/zero/1.0/>.
FACESIZES="10.5 6.0 8.0 9.0 10.5 12.0 18.0"
BASEDPI=96
targetdpi=96
if command -v xdpyinfo >/dev/null 2>&1; then
targetdpi=$(xdpyinfo | grep '^ resolution:' | {
min=
while read -r line; do
set -- $line
dpi_x=${2%%x*}
dpi_y=${2##*x}
dpi_sum=$(( $dpi_x + $dpi_y ))
if [ -z "$min" ]; then
min=$dpi_sum
else
min=$(( $dpi_sum < $min ? $dpi_sum : $dpi ))
fi
done
if [ -z "$min" ]; then
echo 96
else
echo "$min / 2" | bc -l
fi
})
fi
for facesize in $FACESIZES; do
echo "$BASEDPI * $facesize / $targetdpi"
done | bc -l | {
i=0
printf "Xft.dpi:\t%.1f\n" "$targetdpi"
while read -r v; do
if [ $i -eq 0 ]; then
printf "XTerm.VT100.faceSize:\t%.1f\n" "$v"
else
printf "XTerm.VT100.faceSize%d:\t%.1f\n" $i "$v"
fi
i=$(($i + 1))
done
} | xrdb -merge