summaryrefslogtreecommitdiff
path: root/.local/bin/get-dpi
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/get-dpi')
-rwxr-xr-x.local/bin/get-dpi42
1 files changed, 42 insertions, 0 deletions
diff --git a/.local/bin/get-dpi b/.local/bin/get-dpi
new file mode 100755
index 0000000..b9979bd
--- /dev/null
+++ b/.local/bin/get-dpi
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+# Copyright 2019 Luke Shumaker
+
+sanitize() {
+ printf '%g\n' "$@"
+}
+
+calc() {
+ sanitize "$(bc <<<"scale=6; $1")"
+}
+
+# GDK
+dpi=$(calc "$(sanitize "${GDK_SCALE:-1}") * 96")
+echo environment GDK-widget ${dpi}x${dpi}
+
+dpi=$(calc "$(sanitize "${GDK_DPI_SCALE:-1}") * 96")
+echo environment GDK-text ${dpi}x${dpi}
+
+# Xft
+dpi=$(xrdb -query|sed -n 's/^Xft\.dpi:\s*//p')
+[[ -n "$dpi" ]] || dpi=96x96
+xdpi=$(sanitize "${dpi%%x*}")
+ydpi=$(sanitize "${dpi#*x}")
+echo X11-resources Xft ${xdpi}x${ydpi}
+
+# RandR
+(
+ export LC_ALL=C
+ xrandr | sed -rn -e 's@(.*) connected( .*)? ([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+)( .*)? ([0-9]+)mm x ([0-9]+)mm( .*)?@\1 \3 \4 \8 \9@p' -e 's@^ ([0-9]+)x([0-9]+)i? .*\*.*@ \1 \2@p' | sed '/^\S/{ N; s/\n//; }'
+ # 1 2 3 4 5 6 7 8 9 10 1 2
+ # `-outputName | `-fb_xpx `-fb_ypx `-fb_xoff `-fb_yoff `- hw_xmm `- hw_ymm | `-hw_xpx `-hw_ypx
+ # `-discard `- discard `- discard
+) | while read -r output fb_xpx fb_ypx hw_xmm hw_ymm hw_xpx hw_ypx; do
+ hw_xdpi=$(calc "($hw_xpx*25.4)/$hw_xmm")
+ hw_ydpi=$(calc "($hw_ypx*25.4)/$hw_ymm")
+
+ fb_xdpi=$(calc "($fb_xpx*25.4)/$hw_xmm")
+ fb_ydpi=$(calc "($fb_ypx*25.4)/$hw_ymm")
+
+ echo X11-RandR-hw $output ${hw_xdpi}x${hw_ydpi}
+ echo X11-RandR-fb $output ${fb_xdpi}x${fb_ydpi}
+done