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.
This commit is contained in:
Lucas 2022-05-17 03:14:19 +00:00
parent e6a6fadfb3
commit 9f0e7a0c12
4 changed files with 69 additions and 17 deletions

View File

@ -38,20 +38,13 @@ XTerm.VT100.scrollKey: true
!XTerm.VT100.wideFont: -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0 !XTerm.VT100.wideFont: -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0
XTerm.VT100.faceName: monospace XTerm.VT100.faceName: monospace
!XTerm.VT100.faceNameDoublesize: M+ 1m !XTerm.VT100.faceNameDoublesize: M+ 1m
!XTerm.VT100.faceSize: 10.5 XTerm.VT100.faceSize: 10.5
!XTerm.VT100.faceSize1: 6.0 XTerm.VT100.faceSize1: 6.0
!XTerm.VT100.faceSize2: 8.0 XTerm.VT100.faceSize2: 8.0
!XTerm.VT100.faceSize3: 9.0 XTerm.VT100.faceSize3: 9.0
!XTerm.VT100.faceSize4: 10.5 XTerm.VT100.faceSize4: 10.5
!XTerm.VT100.faceSize5: 12.0 XTerm.VT100.faceSize5: 12.0
!XTerm.VT100.faceSize6: 18.0 XTerm.VT100.faceSize6: 18.0
XTerm.VT100.faceSize: 8.0
XTerm.VT100.faceSize1: 4.0
XTerm.VT100.faceSize2: 6.0
XTerm.VT100.faceSize3: 7.0
XTerm.VT100.faceSize4: 8.0
XTerm.VT100.faceSize5: 10.0
XTerm.VT100.faceSize6: 12.0
XTerm.VT100.color0: #000000 XTerm.VT100.color0: #000000
XTerm.VT100.color1: #872011 XTerm.VT100.color1: #872011

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# env # env
# Written in 2019,2021 by Lucas # Written in 2019,2021-2022 by Lucas
# CC0 1.0 Universal/Public domain - No rights reserved # CC0 1.0 Universal/Public domain - No rights reserved
# #
# To the extent possible under law, the author(s) have dedicated all # To the extent possible under law, the author(s) have dedicated all
@ -21,9 +21,13 @@ xset r rate 300 75
xset b off xset b off
xrdb -load ~/.Xdefaults
if [ -r ~/.Xresources ]; then if [ -r ~/.Xresources ]; then
xrdb -merge ~/.Xresources xrdb -merge ~/.Xresources
fi fi
if [ -r ~/code/lucas/env/utils/scripts/x-dpi-facesizes.sh ]; then
sh ~/code/lucas/env/utils/scripts/x-dpi-facesizes.sh
fi
: ${logdir:=~/local/var/log} : ${logdir:=~/local/var/log}
exec herbstluftwm -l >"$logdir/hlwm.out" 2>"$logdir/hlwm.err" exec herbstluftwm -l >"$logdir/hlwm.out" 2>"$logdir/hlwm.err"

View File

@ -0,0 +1,53 @@
#!/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

View File

@ -29,7 +29,9 @@
: ${hlwm_foreground="#fff8f0"} : ${hlwm_foreground="#fff8f0"}
: ${hlwm_font="-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1"} : ${hlwm_font="-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1"}
#: ${hlwm_face="monospace:size=10.5"}
: ${hlwm_face="monospace:size=8.0"} _hlwm_faceSize=$(xrdb -get XTerm.VT100.faceSize)
: ${hlwm_face="monospace:size=${_hlwm_faceSize:-10.5}"}
unset _hlwm_faceSize
: ${hlwm_font_height=17} : ${hlwm_font_height=17}