/usr/bin/slick-greeter-check-hidpi is in slick-greeter 1.1.4-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 43 44 45 46 47 48 49 50 51 | #!/usr/bin/python3
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk
import sys
import os
import syslog
HIDPI_LIMIT = 192
def get_window_scale():
window_scale = 1
try:
display = Gdk.Display.get_default()
screen = display.get_default_screen()
primary = screen.get_primary_monitor()
rect = screen.get_monitor_geometry(primary)
width_mm = screen.get_monitor_width_mm(primary)
height_mm = screen.get_monitor_height_mm(primary)
monitor_scale = screen.get_monitor_scale_factor(primary)
# Return 1 if the screen size isn't available (some TVs report their aspect ratio instead ... 16/9 or 16/10)
if ((width_mm == 160 and height_mm == 90) \
or (width_mm == 160 and height_mm == 100) \
or (width_mm == 16 and height_mm == 9) \
or (width_mm == 16 and height_mm == 10)):
return 1
if rect.height < 1500:
return 1
if width_mm > 0 and height_mm > 0:
witdh_inch = width_mm / 25.4
height_inch = height_mm / 25.4
dpi_x = rect.width * monitor_scale / witdh_inch
dpi_y = rect.height * monitor_scale / height_inch
if dpi_x > HIDPI_LIMIT and dpi_y > HIDPI_LIMIT:
window_scale = 2
except Exception as detail:
syslog.syslog("Error while detecting hidpi mode: %s" % detail)
return window_scale
if __name__ == '__main__':
window_scale = get_window_scale();
syslog.syslog("Window scale: %d" % window_scale)
print (window_scale)
sys.exit(0)
|