I tried that six months ago, for 90 minutes, and gave up.
Now I remembered the advice of Mr. Bassi (that thread was closed recently due to the 14 days limit) and tried again. And it works!
# https://discourse.gnome.org/t/get-screen-width-and-height/7245/8
import gintro/[gtk4, gdk4, gobject, gio]
proc printData(widget: Button; window: ApplicationWindow) =
let surface: gdk4.Surface = window.getSurface
let display: gdk4.Display = surface.getDisplay
let monitor: gdk4.Monitor = display.getMonitorAtSurface(surface)
echo monitor.getWidthmm
echo monitor.getHeightmm
let geometry: gdk4.Rectangle = monitor.getGeometry
echo geometry
echo monitor.getScaleFactor
echo surface.getScaleFactor
proc activate(app: gtk4.Application) =
let window = newApplicationWindow(app)
let button = newButton("Print Data")
button.connect("clicked", printData, window)
window.setChild(button)
window.show
proc main =
let app = newApplication("org.gtk.example")
app.connect("activate", activate)
let status = app.run
quit(status)
main()
600
340
(x: 0, y: 0, width: 3840, height: 2160)
1
1