aboutsummaryrefslogtreecommitdiff
path: root/prototypes
diff options
context:
space:
mode:
Diffstat (limited to 'prototypes')
-rw-r--r--prototypes/xgb-monitors.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/prototypes/xgb-monitors.go b/prototypes/xgb-monitors.go
new file mode 100644
index 0000000..5ce5af9
--- /dev/null
+++ b/prototypes/xgb-monitors.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "github.com/BurntSushi/xgb"
+ "github.com/BurntSushi/xgb/xproto"
+ "log"
+
+ // Needs a patched local version with xcb-proto 1.12 and this fix:
+ // -size := xgb.Pad((8 + (24 + xgb.Pad((int(NOutput) * 4)))))
+ // +size := xgb.Pad((8 + (24 + xgb.Pad((int(Monitorinfo.NOutput) * 4)))))
+ "github.com/BurntSushi/xgb/randr"
+)
+
+func main() {
+ X, err := xgb.NewConn()
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ if err := randr.Init(X); err != nil {
+ log.Fatalln(err)
+ }
+
+ setup := xproto.Setup(X)
+ screen := setup.DefaultScreen(X)
+
+ ms, err := randr.GetMonitors(X, screen.Root, true /* GetActive */).Reply()
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ for _, m := range ms.Monitors {
+ reply, err := xproto.GetAtomName(X, m.Name).Reply()
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ log.Printf("Monitor %s %+v\n", reply.Name, m)
+ }
+}