Skip to content

Instantly share code, notes, and snippets.

@Francesco149
Created October 18, 2015 14:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Francesco149/1d7a623583ba7292cc00 to your computer and use it in GitHub Desktop.
Save Francesco149/1d7a623583ba7292cc00 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"github.com/BurntSushi/xgb"
"github.com/BurntSushi/xgb/xproto"
"github.com/BurntSushi/xgb/xinerama"
)
func main() {
X, err := xgb.NewConn()
if err != nil {
log.Fatal(err)
}
defer X.Close()
// xinerama
for {
err = xinerama.Init(X)
if err != nil {
fmt.Println(err)
break
}
reply, err := xinerama.QueryScreens(X).Reply()
if err != nil {
fmt.Println(err)
break
}
if reply.Number >= 2 {
// multiple xinerama heads
fmt.Println("Using", reply.Number, "xinerama heads")
for i, screen := range reply.ScreenInfo {
fmt.Printf("%d\tX: %d\tY: %d\tWidth: %d\tHeight: %d\n",
i, screen.XOrg, screen.YOrg, screen.Width, screen.Height)
}
return
}
break
}
// xproto
setupInfo := xproto.Setup(X)
if setupInfo == nil {
log.Fatal("Failed to retrieve X setup info.")
}
// no multiple xinerama heads,
fmt.Println("Using", len(setupInfo.Roots), "screens")
for _, s := range setupInfo.Roots {
fmt.Println(s.WidthInPixels, s.HeightInPixels)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment