62 lines
2.3 KiB
Plaintext
62 lines
2.3 KiB
Plaintext
xgbutil is a utility library designed to work with the X Go Binding. This
|
|
project's main goal is to make various X related tasks easier. For example,
|
|
binding keys, using the EWMH or ICCCM specs with the window manager,
|
|
moving/resizing windows, assigning function callbacks to particular events,
|
|
drawing images to a window, etc.
|
|
|
|
xgbutil attempts to be thread safe, but it has not been completely tested in
|
|
this regard. In general, the X event loop implemented in the xevent package is
|
|
sequential. The idea is to be sequential by default, and let the user spawn
|
|
concurrent code at their discretion. (i.e., the complexity of making the main
|
|
event loop generally concurrent is vast.)
|
|
|
|
You may sleep safely at night by assuming that XGB is thread safe, though.
|
|
|
|
To start using xgbutil, you should have at least a passing familiarity with X.
|
|
Your first stop should be the examples directory.
|
|
|
|
Installation
|
|
============
|
|
go get github.com/jezek/xgbutil
|
|
|
|
Dependencies
|
|
============
|
|
XGB is the main dependency. Use of the xgraphics packages requires graphics-go
|
|
and freetype-go.
|
|
|
|
XGB project URL: https://github.com/jezek/xgb
|
|
graphics-go project URL: https://github.com/BurntSushi/graphics-go
|
|
freetype-go project URL: https://github.com/BurntSushi/freetype-go
|
|
|
|
Quick Example
|
|
=============
|
|
go get github.com/jezek/xgbutil/_examples/window-name-sizes
|
|
"$GOPATH"/bin/window-name-sizes
|
|
|
|
The output will be a list of names of all top-level windows and their geometry
|
|
including window manager decorations. (Assuming your window manager supports
|
|
some basic EWMH properties.)
|
|
|
|
Documentation
|
|
=============
|
|
https://godoc.org/github.com/jezek/xgbutil
|
|
|
|
Examples
|
|
========
|
|
There are several examples in the examples directory covering common use cases.
|
|
They are heavily documented and should run out of the box.
|
|
|
|
Python
|
|
======
|
|
An older project of mine (BurntSushi), xpybutil, served as inspiration for xgbutil. If you
|
|
want to use Python, xpybutil should help quite a bit. Please note though, that
|
|
at this point, xgbutil provides a lot more functionality and is much better
|
|
documented.
|
|
|
|
xpybutil project URL: https://github.com/BurntSushi/xpybutil
|
|
|
|
jezek's Fork
|
|
============
|
|
Why I've forked the xgbutil repository from BurntSushi's github is discussed in [issue #2](https://github.com/jezek/xgb/issues/2).
|
|
I've also changed the LICENSE to GNU GPL v3 to meet the requirements for pkg.go.dev
|