https://github.com/i3/go-i3
Package i3 provides a convenient interface to the i3 window manager
https://github.com/i3/go-i3
Last synced: about 1 year ago
JSON representation
Package i3 provides a convenient interface to the i3 window manager
- Host: GitHub
- URL: https://github.com/i3/go-i3
- Owner: i3
- License: other
- Created: 2017-09-29T06:43:56.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2025-03-22T10:00:23.000Z (about 1 year ago)
- Last Synced: 2025-04-10T02:18:53.862Z (about 1 year ago)
- Language: Go
- Homepage:
- Size: 85 KB
- Stars: 130
- Watchers: 9
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://goreportcard.com/report/go.i3wm.org/i3)
[](https://godoc.org/go.i3wm.org/i3)
Package i3 provides a convenient interface to the i3 window manager via [its IPC
interface](https://i3wm.org/docs/ipc.html).
See [its documentation](https://godoc.org/go.i3wm.org/i3) for more details.
## Start using it
In [module mode](https://github.com/golang/go/wiki/Modules), use import path
`go.i3wm.org/i3/v4`.
In non-module mode, use import path `go.i3wm.org/i3`.
## Advantages over other i3 IPC packages
Here comes a grab bag of features to which we paid attention. At the time of
writing, most other i3 IPC packages lack at least a good number of these
features:
* Retries are transparently handled: programs using this package will recover
automatically from in-place i3 restarts. Additionally, programs can be started
from xsession or user sessions before i3 is even running.
* Version checks are transparently handled: if your program uses features which
are not supported by the running i3 version, helpful error messages will be
returned at run time.
* Comprehensive: the entire documented IPC interface of the latest stable i3
version is covered by this package. Tagged releases match i3’s major and minor
version.
* Consistent and familiar: once familiar with the i3 IPC protocol’s features,
you should have no trouble matching the documentation to API and vice-versa.
* Good test coverage (hard to display in a badge, as our multi-process setup
breaks `go test`’s `-coverprofile` flag).
* Implemented in pure Go, without resorting to the `unsafe` package.
* Works on little and big endian architectures.
## Scope
i3’s entire documented IPC interface is available in this package.
In addition, helper functions which are useful for a broad range of programs
(and only those!) are provided, e.g. Node’s FindChild and FindFocused.
Packages which introduce higher-level abstractions should feel free to use this
package as a building block.
## Assumptions
* The `i3(1)` binary must be in `$PATH` so that the IPC socket path can be retrieved.
* For transparent version checks to work, the running i3 version must be ≥ 4.3 (released 2012-09-19).
## Testing
Be sure to include the target i3 version (the most recent stable release) in
`$PATH` and use `go test` as usual:
```shell
PATH=~/i3/build/i3:$PATH go test -v go.i3wm.org/i3
```