diff --git a/doc.go b/doc.go new file mode 100644 index 0000000..cf2bbeb --- /dev/null +++ b/doc.go @@ -0,0 +1,57 @@ +/* +Package swayipc can be used to control sway, swayfx and possibly +i3wmwindow managers via a unix domain socket. + +swaywm's interprocess communication (or ipc) is the interface sway, +swayfx and i3wm use to receive commands from client applications such +as sway-msg. It also features a publish/subscribe mechanism for +notifying interested parties of window manager events. + +swayipc is a go module for controlling the window manager. This project +is intended to be useful for general scripting, and for applications +that interact with the window manager like status line generators, +notification daemons, and window pagers. It is primarily designed to +work with sway and swayfx, but may also work with i3wm, although I +haven't tested it on i3wm. + +The module uses the i3-IPC proctocol as outlined in sway-ipc(7). + +Example usage: + +In this example we retrieve the current focused window: + + package main + + import ( + "fmt" + "log" + + "github.com/tlinden/swayipc" + ) + + func main() { + ipc := swayipc.NewSwayIPC() + + err := ipc.Connect() + if err != nil { + log.Fatal(err) + } + defer ipc.Close() + + tree, err := ipc.GetTree() + if err != nil { + log.Fatal(err) + } + + focused := tree.FindFocused() + + if focused != nil { + fmt.Printf("focused node: %s\n id: %d\n Geometry: %dx%d\n", + focused.Name, focused.Id, focused.Geometry.Width, + focused.Geometry.Height) + } + } + +Also take a look into the **_examples** folder for more examples. +*/ +package swayipc diff --git a/i3ipc.go b/swayipc.go similarity index 100% rename from i3ipc.go rename to swayipc.go