From c5e02c07b5e0f4f2b752d59fb17a9f3619590217 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Fri, 23 Aug 2024 14:48:52 +0300 Subject: [PATCH] Added wayland monitor resolution support --- go.mod | 1 + go.sum | 2 ++ utils.go | 21 ++++++++------------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 185d2e6..45298f0 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( ) require ( + github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/jackmordaunt/pcidb v1.0.1 // indirect github.com/jackmordaunt/wmi v1.2.4 // indirect diff --git a/go.sum b/go.sum index 5610274..6117293 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc h1:7D+Bh06CRPCJO3gr2F7h1sriovOZ8BMhca2Rg85c2nk= github.com/BurntSushi/xgb v0.0.0-20210121224620-deaf085860bc/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/jackmordaunt/ghw v1.0.4 h1:as+COFuPuXaNQC3WqzoHS/E2JYWZU7gN8ompNTUxNxs= diff --git a/utils.go b/utils.go index 6981a8f..6f7203b 100644 --- a/utils.go +++ b/utils.go @@ -3,8 +3,7 @@ package main import ( "bufio" "fmt" - "github.com/BurntSushi/xgb" - "github.com/BurntSushi/xgb/xinerama" + "github.com/go-gl/glfw/v3.3/glfw" "github.com/jackmordaunt/ghw" "github.com/mitchellh/go-ps" "github.com/moby/sys/mountinfo" @@ -295,20 +294,16 @@ func GetDisplayProtocol() string { func getMonitorResolution() []string { var monitors []string - if GetDisplayProtocol() == "X11" { - conn, err := xgb.NewConn() + if GetDisplayProtocol() != "" { + err := glfw.Init() if err != nil { - return nil + panic(err) } - err = xinerama.Init(conn) - if err != nil { - return nil - } - reply, _ := xinerama.QueryScreens(conn).Reply() - conn.Close() - for _, screen := range reply.ScreenInfo { - monitors = append(monitors, strconv.Itoa(int(screen.Width))+"x"+strconv.Itoa(int(screen.Height))) + for _, monitor := range glfw.GetMonitors() { + mode := monitor.GetVideoMode() + monitors = append(monitors, fmt.Sprintf("%dx%d %dHz", mode.Width, mode.Height, mode.RefreshRate)) } + defer glfw.Terminate() } return monitors }