#!/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: " "$(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