summaryrefslogtreecommitdiff
path: root/.local/bin/get-dpi
blob: b9979bdb2b96c0cb9aec6b09779d5e8d05bb4600 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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