; Module/File: Monitor_GetGeometries.pb ; Function: Get geometries and workareas of connected monitors and screen - Linux < gtk3.22 ; Author: Omi ; Date: Sep. 03, 2016 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" gdk_screen_get_monitor_plug_name(*screen.GdkScreen, monitor_num) gdk_screen_get_monitor_workarea(*screen.GdkScreen, monitor_num, *dest.GdkRectangle) EndImport ; Object constants #MainWin = 0 #But0 = 0 Global.i gEvent, gQuit Global.i gI Global.GdkRectangle gRect1, gRect2 If OpenWindow(#MainWin, 300, 200, 300, 100, "Debug geometries of monitors", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(#But0, 5, 5, 290, 26, "Get geometries of monitors") Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget If EventGadget() = #But0 Debug "Screensize: " + Str(gdk_screen_get_width_(gdk_screen_get_default_())) + "x" + Str(gdk_screen_get_height_(gdk_screen_get_default_())) For gI= 0 To gdk_screen_get_n_monitors_(gdk_screen_get_default_())- 1 gdk_screen_get_monitor_geometry_(gdk_screen_get_default_(), gI, @gRect1); whole desktop area gdk_screen_get_monitor_workarea(gdk_screen_get_default_(), gI, @gRect2); usable desktop area (w/o toolbar etc.) If gRect1 Debug "Monitor " + Str(gI) + " (" + PeekS(gdk_screen_get_monitor_plug_name(gdk_screen_get_default_(), gI), -1, #PB_UTF8) + "): geometrie= " + Str(gRect1\x) + ", " + Str(gRect1\y) + ", " + Str(gRect1\width) + ", " + Str(gRect1\height) + ", workarea= " + Str(gRect2\x) + ", " + Str(gRect2\y) + ", " + Str(gRect2\width) + ", " + Str(gRect2\height) EndIf Next gI EndIf EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.46 LTS (Linux - x86) ; CursorPosition = 15 ; EnableUnicode ; EnableXP