本文整理匯總了Golang中github.com/BurntSushi/xgbutil.NewConn函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewConn函數的具體用法?Golang NewConn怎麽用?Golang NewConn使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了NewConn函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: main
func main() {
logger := log.NewLogger("dde-daemon/desktop-toggle")
logger.BeginTracing()
defer logger.EndTracing()
X, err := xgbutil.NewConn()
if err != nil {
logger.Error("New xgbutil connection failed: ", err)
panic(err)
}
if ret, err := ewmh.ShowingDesktopGet(X); err == nil {
// !!! NOT using ewmh.ShowingDesktopReq
// because ewmh.ShowingDesktopReq passes a uint argument,
// and int is used on xevent.NewClientMessage.
logger.Info("Show Desktop Status: ", ret)
var showInt int
if ret {
showInt = 0
} else {
showInt = 1
}
ewmh.ClientEvent(X, X.RootWin(), "_NET_SHOWING_DESKTOP", showInt)
}
X.Sync()
}
示例2: showAll
func showAll() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
for i := 0; i < len(testImages); i++ {
fname := testImages[i]
fmt.Printf("%d Working on %s\n", i, fname)
file, err := os.Open(testDir + fname)
if err != nil {
continue
}
defer file.Close()
var img image.Image
// Decode the image.
// using true forces bmp decoder, otherwise whatever is registered for ext is used
// result slightly different if non-bmps fed to it
if true {
img, err = bmp.Decode(file)
} else {
img, _, err = image.Decode(file)
}
if err != nil {
continue
}
ximg := xgraphics.NewConvert(X, img)
ximg.XShowExtra(fname, true)
time.Sleep(1 * time.Second)
}
xevent.Main(X)
time.Sleep(4 * time.Second)
xevent.Quit(X)
}
示例3: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
// Use the "NewDrawable" constructor to create an xgraphics.Image value
// from a drawable. (Usually this is done with pixmaps, but drawables
// can also be windows.)
ximg, err := xgraphics.NewDrawable(X, xproto.Drawable(X.RootWin()))
if err != nil {
log.Fatal(err)
}
// Shows the screenshot in a window.
ximg.XShowExtra("Screenshot", true)
// If you'd like to save it as a png, use:
// err = ximg.SavePng("screenshot.png")
// if err != nil {
// log.Fatal(err)
// }
xevent.Main(X)
}
示例4: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatalln(err)
}
// The message box uses the keybind module, so we must initialize it.
keybind.Initialize(X)
// Creating a new message prompt is as simple as supply an X connection,
// a theme and a configuration. We use built in defaults here.
msgPrompt := prompt.NewMessage(X,
prompt.DefaultMessageTheme, prompt.DefaultMessageConfig)
// Show maps the message prompt window.
// If a duration is specified, the window does NOT acquire focus and
// automatically disappears after the specified time.
// If a duration is not specified (i.e., '0'), then the window is mapped,
// and acquires focus. It does not disappear until it loses focus or when
// the user hits the "confirm" or "cancel" keys (usually "enter" and
// "escape").
timeout := 2 * time.Second // or "0" for no timeout.
msgPrompt.Show(xwindow.RootGeometry(X), "Hello, world!", timeout, hidden)
xevent.Main(X)
}
示例5: run
func run() error {
Xu, err := xgbutil.NewConn()
if err != nil {
return err
}
defer Xu.Conn().Close()
keybind.Initialize(Xu)
if err := randr.Init(Xu.Conn()); err != nil {
return err
}
audio, err := newAudio(Xu)
if err != nil {
return err
}
defer audio.Close()
brightness, err := newBrightness(Xu)
if err != nil {
return err
}
defer brightness.Close()
xevent.Main(Xu)
return nil
}
示例6: main
func main() {
// If we just need the keybindings, print them and be done.
if flagKeybindings {
for _, keyb := range keybinds {
fmt.Printf("%-10s %s\n", keyb.key, keyb.desc)
}
fmt.Printf("%-10s %s\n", "mouse",
"Left mouse button will pan the image.")
os.Exit(0)
}
// Run the CPU profile if we're instructed to.
if len(flagProfile) > 0 {
f, err := os.Create(flagProfile)
if err != nil {
errLg.Fatal(err)
}
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
// Whoops!
if flag.NArg() == 0 {
fmt.Fprint(os.Stderr, "\n")
errLg.Print("No images specified.\n\n")
usage()
}
// Connect to X and quit if we fail.
X, err := xgbutil.NewConn()
if err != nil {
errLg.Fatal(err)
}
// Create the X window before starting anything so that the user knows
// something is going on.
window := newWindow(X)
// Decode all images (in parallel).
names, imgs := decodeImages(findFiles(flag.Args()))
// Die now if we don't have any images!
if len(imgs) == 0 {
errLg.Fatal("No images specified could be shown. Quitting...")
}
// Auto-size the window if appropriate.
if flagAutoResize {
window.Resize(imgs[0].Bounds().Dx(), imgs[0].Bounds().Dy())
}
// Create the canvas and start the image goroutines.
chans := canvas(X, window, names, len(imgs))
for i, img := range imgs {
go newImage(X, names[i], img, i, chans.imgLoadChans[i], chans.imgChan)
}
// Start the main X event loop.
xevent.Main(X)
}
示例7: NewImage
// NewImage returns a new image canvas
// that draws to the given image. The
// minimum point of the given image
// should probably be 0,0.
func NewImage(img draw.Image, name string) (*Canvas, error) {
w := float64(img.Bounds().Max.X - img.Bounds().Min.X)
h := float64(img.Bounds().Max.Y - img.Bounds().Min.Y)
X, err := xgbutil.NewConn()
if err != nil {
return nil, err
}
keybind.Initialize(X)
ximg := xgraphics.New(X, image.Rect(0, 0, int(w), int(h)))
err = ximg.CreatePixmap()
if err != nil {
return nil, err
}
painter := NewPainter(ximg)
gc := draw2d.NewGraphicContextWithPainter(ximg, painter)
gc.SetDPI(dpi)
gc.Scale(1, -1)
gc.Translate(0, -h)
wid := ximg.XShowExtra(name, true)
go func() {
xevent.Main(X)
}()
c := &Canvas{
Canvas: vgimg.NewWith(vgimg.UseImageWithContext(img, gc)),
x: X,
ximg: ximg,
wid: wid,
}
vg.Initialize(c)
return c, nil
}
示例8: GetClients
//GetClients get windows list
func GetClients() []Client {
clients := []Client{}
var err error
X, err = xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
wids, err := ewmh.ClientListGet(X)
if err != nil {
log.Fatal(err)
}
a, _ := ewmh.ActiveWindowGet(X)
for _, wid := range wids {
name, err := ewmh.WmNameGet(X, wid)
if name == "Shadow" {
SHADOW = wid
continue
}
if err != nil { // not a fatal error
log.Println(err)
name = ""
}
desk, _ := ewmh.WmDesktopGet(X, wid)
class, _ := icccm.WmClassGet(X, wid)
clients = append(clients, Client{
wid, name, desk, wid == a, class.Class,
})
}
return clients
}
示例9: showOne
func showOne(testNum int) {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
fname := testImages[testNum]
fmt.Printf("Working on %s\n", fname)
file, err := os.Open(testDir + fname)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// Decode the image.
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
ximg := xgraphics.NewConvert(X, img)
ximg.XShowExtra(fname, true)
xevent.Main(X)
time.Sleep(4 * time.Second)
xevent.Quit(X)
}
示例10: NewDisplay
func NewDisplay(width, height, border, heading int, name string) (*Display, error) {
d := new(Display)
d.w = float64(width)
d.h = float64(height)
d.bord = float64(border)
d.head = float64(heading)
X, err := xgbutil.NewConn()
if err != nil {
return nil, err
}
keybind.Initialize(X)
d.ximg = xgraphics.New(X, image.Rect(
0,
0,
border*2+width,
border*2+heading+height))
err = d.ximg.CreatePixmap()
if err != nil {
return nil, err
}
painter := NewXimgPainter(d.ximg)
d.gc = draw2d.NewGraphicContextWithPainter(d.ximg, painter)
d.gc.Save()
d.gc.SetStrokeColor(color.White)
d.gc.SetFillColor(color.White)
d.gc.Clear()
d.wid = d.ximg.XShowExtra(name, true)
d.x = X
go func() {
xevent.Main(X)
}()
return d, nil
}
示例11: main
func main() {
X, _ = xgbutil.NewConn()
go newGradientWindow(200, 200)
go newGradientWindow(400, 400)
xevent.Main(X)
}
示例12: initPlatform
func initPlatform() {
var err error
X, err = xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
testWin = egl.NativeWindowType(uintptr(openWin(X).Id))
}
示例13: newFullScreenWorkaround
func newFullScreenWorkaround() *fullScreenWorkaround {
XU, _ := xgbutil.NewConn()
ACTIVE_WINDOW, _ := xprop.Atm(XU, "_NET_ACTIVE_WINDOW")
w := &fullScreenWorkaround{
XU, []string{"libflash", "chrome", "mplayer", "operaplugin", "soffice", "wpp", "evince", "vlc", "totem"}, ACTIVE_WINDOW, false,
}
return w
}
示例14: main
func main() {
X, err := xgbutil.NewConn()
if err != nil {
log.Fatal(err)
}
// Load some font. You may need to change the path depending upon your
// system configuration.
fontReader, err := os.Open(fontPath)
if err != nil {
log.Fatal(err)
}
// Now parse the font.
font, err := xgraphics.ParseFont(fontReader)
if err != nil {
log.Fatal(err)
}
// Create some canvas.
ximg := xgraphics.New(X, image.Rect(0, 0, canvasWidth, canvasHeight))
ximg.For(func(x, y int) xgraphics.BGRA {
return bg
})
// Now write the text.
_, _, err = ximg.Text(10, 10, fg, size, font, msg)
if err != nil {
log.Fatal(err)
}
// Compute extents of first line of text.
_, firsth := xgraphics.Extents(font, size, msg)
// Now show the image in its own window.
win := ximg.XShowExtra("Drawing text using xgraphics", true)
// Now draw some more text below the above and demonstrate how to update
// only the region we've updated.
_, _, err = ximg.Text(10, 10+firsth, fg, size, font, "Some more text.")
if err != nil {
log.Fatal(err)
}
// Now compute extents of the second line of text, so we know which region
// to update.
secw, sech := xgraphics.Extents(font, size, "Some more text.")
// Now repaint on the region that we drew text on. Then update the screen.
bounds := image.Rect(10, 10+firsth, 10+secw, 10+firsth+sech)
ximg.SubImage(bounds).XDraw()
ximg.XPaint(win.Id)
// All we really need to do is block, which could be achieved using
// 'select{}'. Invoking the main event loop however, will emit error
// message if anything went seriously wrong above.
xevent.Main(X)
}
示例15: getPrimaryScreenBestResolution
func getPrimaryScreenBestResolution() (w uint16, h uint16) {
// if connect to x failed, just return 1024x768
w, h = 1024, 768
XU, err := xgbutil.NewConn()
if err != nil {
return
}
err = randr.Init(XU.Conn())
if err != nil {
return
}
_, err = randr.QueryVersion(XU.Conn(), 1, 4).Reply()
if err != nil {
return
}
Root := xproto.Setup(XU.Conn()).DefaultScreen(XU.Conn()).Root
resources, err := randr.GetScreenResources(XU.Conn(), Root).Reply()
if err != nil {
return
}
bestModes := make([]uint32, 0)
for _, output := range resources.Outputs {
reply, err := randr.GetOutputInfo(XU.Conn(), output, 0).Reply()
if err == nil && reply.NumModes > 1 {
bestModes = append(bestModes, uint32(reply.Modes[0]))
}
}
w, h = 0, 0
for _, m := range resources.Modes {
for _, id := range bestModes {
if id == m.Id {
bw, bh := m.Width, m.Height
if w == 0 || h == 0 {
w, h = bw, bh
} else if uint32(bw)*uint32(bh) < uint32(w)*uint32(h) {
w, h = bw, bh
}
}
}
}
if w == 0 || h == 0 {
// get resource failed, use root window's geometry
rootRect := xwindow.RootGeometry(XU)
w, h = uint16(rootRect.Width()), uint16(rootRect.Height())
}
if w == 0 || h == 0 {
w, h = 1024, 768 // default value
}
logger.Debugf("primary screen's best resolution is %dx%d", w, h)
return
}