#!/bin/sh DISPLAY=${DISPLAY%.0} # Don't try to guess DPI. For a laptop, we don't want the same DPI as # for an external screen. Just hardcode stuff... case $(hostname),$(autorandr --current) in zoro,default) dpi=144 ;; guybrush,default) dpi=144 ;; neo,*) dpi=192 ;; *,*) dpi=96 ;; esac change() { # Build xsettingsd.local { cat ~/.config/awesome/xsettingsd echo Xft/DPI $(( $1*1024 )) echo Xft/RGBA \"$( [ $1 -gt 144 ] && echo none || echo rgb )\" echo Gdk/WindowScalingFactor $(( $1/96 )) echo Gdk/UnscaledDPI $(( $1*1024/($1/96) )) } > ~/.xsettingsd # Signal xsettingsd systemctl --user reload xsettingsd@$(systemd-escape -- "$DISPLAY").service # Also use xrdb for very old stuff (you know, LibreOffice) echo Xft.dpi: $dpi | xrdb -merge } change $dpi