1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00
dotfiles/scripts/dpi
Joe Groocock a6f162b7e2
scripts/dpi: Add more xsettings configuration from xrdb
Read some standard xsettings values out of xrdb and set them in
xsettingsd. Use bash instead of sh to allow for `set -o pipefail`.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-08-01 19:18:15 +00:00

52 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -eu
# Based on https://github.com/vincentbernat/awesome-configuration/blob/master/bin/xsettingsd-setup
CONF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
xrdbget() {
set -o pipefail
xrdb -query | grep -i -m1 "$1" | sed 's/^.*:\s//g' || echo "$2"
}
dpi=$1
if [ -z "$1" ]; then
>&2 printf "Usage\n\t%s: <dpi>" "$(basename "$0")"
exit 1
fi
# Update picom and xorg
sed -i "s/strength =.*$/strength = $(( dpi*8/96 ));/" "$CONF_DIR/picom/picom.conf" &
xrandr --dpi "$dpi" &
scale=$(( dpi/96 ))
cursor=$(( dpi/6 ))
# Build xsettingsd.conf
mkdir -p "$CONF_DIR/xsettingsd"
{
cat "$CONF_DIR/xsettingsd.local" 2>/dev/null || true
echo "Xcursor/size $cursor"
echo "Gtk/CursorThemeSize $cursor"
echo "Gtk/CursorThemeName \"$(xrdbget Xcursor.theme Adwaita)\""
echo "Xft/HintStyle \"$(xrdbget Xft.hintstyle hintfull)\""
echo "Xft/Hinting \"$(xrdbget Xft.hinting -1)\""
echo "Xft/RGBA \"$(xrdbget Xft.rgba rgb)\""
echo "Xft/DPI $(( dpi*1024 ))"
echo "Gdk/WindowScalingFactor $scale"
echo "Gdk/UnscaledDPI $(( dpi*1024/scale ))"
} > "$CONF_DIR/xsettingsd/xsettingsd.conf"
{
echo "Xft.dpi: $dpi"
echo "Xcursor.size: $cursor"
} | xrdb -merge &
systemctl --user reload-or-restart xsettingsd &
wait
systemctl --user reload \
i3 \
polybar@i3bar