2014-09-17 10:39:22 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
2015-07-23 21:42:32 +02:00
|
|
|
# Don't try to guess DPI. For a laptop, we don't want the same DPI as
|
|
|
|
# for an external screen. Just hardcode stuff...
|
2015-08-05 19:09:39 +02:00
|
|
|
case $(hostname),$(xrandr --current | \
|
|
|
|
sed -n 's/\([^ ]*\) connected .*[0-9][0-9]*x[0-9][0-9]*+[0-9][0-9]*+[0-9][0-9]* .*/\1/p' | \
|
|
|
|
sort | tr '\n' ':') in
|
2018-07-27 21:44:16 +02:00
|
|
|
zoro,eDP1:) dpi=144 ;;
|
|
|
|
zoro,eDP-1:) dpi=144 ;;
|
2016-03-30 10:10:31 +02:00
|
|
|
zoro,eDP-1:HDMI-2:) dpi=144 ;;
|
2018-07-27 21:44:16 +02:00
|
|
|
zoro,eDP-1:DP-1:) dpi=144 ;;
|
|
|
|
neo,HDMI-1:HDMI-2:) dpi=96 ;;
|
|
|
|
neo,*) dpi=192 ;;
|
|
|
|
*) dpi=96 ;;
|
2015-07-23 21:42:32 +02:00
|
|
|
esac
|
2015-07-23 13:23:09 +02:00
|
|
|
|
2019-05-28 09:23:21 +02:00
|
|
|
# Get xsettingsd PID
|
2014-09-17 10:39:22 +02:00
|
|
|
pid=$(xprop -name xsettingsd _NET_WM_PID 2> /dev/null | awk '{print $NF}')
|
2019-05-28 09:23:21 +02:00
|
|
|
|
|
|
|
change() {
|
|
|
|
# Build xsettingsd.local
|
|
|
|
{
|
|
|
|
cat ~/.config/awesome/xsettingsd
|
|
|
|
echo Xft/DPI $(( $1*1024 ))
|
2019-05-28 11:55:01 +02:00
|
|
|
echo Xft/RGBA \"$( [ $1 -gt 144 ] && echo none || echo rgb )\"
|
2019-05-28 09:23:21 +02:00
|
|
|
echo Gdk/WindowScalingFactor $(( $1/96 ))
|
|
|
|
echo Gdk/UnscaledDPI $(( $1*1024/($1/96) ))
|
|
|
|
} > ~/.xsettingsd
|
|
|
|
|
|
|
|
# Signal xsettingsd
|
|
|
|
if [ x"$pid" = x ]; then
|
|
|
|
xsettingsd -c ~/.xsettingsd &
|
|
|
|
else
|
|
|
|
kill -HUP $pid
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
if [ x"$pid" != x ]; then
|
|
|
|
# Change a first time to a DPI that will trigger a scale factor
|
|
|
|
# change (notably, Firefox needs that).
|
|
|
|
change $(( $dpi * 2 ))
|
|
|
|
sleep 1
|
2014-09-17 10:39:22 +02:00
|
|
|
fi
|
2019-05-28 09:23:21 +02:00
|
|
|
change $dpi
|
2014-11-05 13:40:31 +01:00
|
|
|
|
|
|
|
# Also use xrdb for very old stuff (you know, LibreOffice)
|
|
|
|
echo Xft.dpi: $dpi | xrdb -merge
|