From e0ceb4025917b23c0fe2d047f53600460d8eb4e8 Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Thu, 23 Jul 2015 13:23:09 +0200 Subject: [PATCH] xsettings: use xrandr to compute appropriate DPI --- bin/xsettingsd-setup | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/bin/xsettingsd-setup b/bin/xsettingsd-setup index 8b34f0f..8519584 100755 --- a/bin/xsettingsd-setup +++ b/bin/xsettingsd-setup @@ -1,12 +1,20 @@ #!/bin/sh +# Compute DPI. We extract the value from xrandr output. The screen +# size is correctly reported (while the X server is lying to respect +# the provided DPI). We round to the nearest quarter of 96 DPI (96, +# 120, 144, 168, 192...). +eval $(xrandr --current | sed -n 's/.* connected primary \([0-9]*\)x.* \([0-9]*\)mm x .*/wd=\1\nwm=\2/p') +if [ -n "$wd" -a -n "$wm" ]; then + dpi=$(echo "$wd/($wm*0.03937)" | bc) + dpi=$(printf "%.0f" $(echo "scale=1;$dpi*4/96" | bc)) + dpi=$((dpi*96/4)) +else + dpi=96 +fi + # Build xsettingsd.local cp ~/.config/awesome/xsettingsd ~/.config/awesome/xsettingsd.local -if [ -f ~/.config/awesome/xsettingsd.dpi ]; then - dpi=$(cat ~/.config/awesome/xsettingsd.dpi) -else - dpi=$(xdpyinfo | awk '$1 ~ /resolution:/ { print $2 }' | sed 's/x.*//') -fi echo Xft/DPI $(( $dpi * 1024 )) >> ~/.config/awesome/xsettingsd.local # Signal xsettingsd