func main() { X, _ := xgbutil.NewConn() active, err := ewmh.ActiveWindowGet(X) wmName, err := icccm.WmNameGet(X, active) showTest("WM_NAME get", wmName, err) err = icccm.WmNameSet(X, active, "hooblah") wmName, _ = icccm.WmNameGet(X, active) showTest("WM_NAME set", wmName, err) wmNormHints, err := icccm.WmNormalHintsGet(X, active) showTest("WM_NORMAL_HINTS get", wmNormHints, err) wmNormHints.Width += 5 err = icccm.WmNormalHintsSet(X, active, wmNormHints) showTest("WM_NORMAL_HINTS set", wmNormHints, err) wmHints, err := icccm.WmHintsGet(X, active) showTest("WM_HINTS get", wmHints, err) wmHints.InitialState = icccm.StateNormal err = icccm.WmHintsSet(X, active, wmHints) showTest("WM_NORMAL_HINTS set", wmHints, err) wmClass, err := icccm.WmClassGet(X, active) showTest("WM_CLASS get", wmClass, err) wmClass.Instance = "hoopdy hoop" err = icccm.WmClassSet(X, active, wmClass) showTest("WM_CLASS set", wmClass, err) wmTrans, err := icccm.WmTransientForGet(X, active) showTest("WM_TRANSIENT_FOR get", wmTrans, err) wmProts, err := icccm.WmProtocolsGet(X, active) showTest("WM_PROTOCOLS get", wmProts, err) wmClient, err := icccm.WmClientMachineGet(X, active) showTest("WM_CLIENT_MACHINE get", wmClient, err) err = icccm.WmClientMachineSet(X, active, "Leopard") wmClient, _ = icccm.WmClientMachineGet(X, active) showTest("WM_CLIENT_MACHINE set", wmClient, err) wmState, err := icccm.WmStateGet(X, active) showTest("WM_STATE get", wmState, err) wmState.Icon = xproto.Window(8365538) wmState.State = icccm.StateNormal err = icccm.WmStateSet(X, active, wmState) wmState, _ = icccm.WmStateGet(X, active) showTest("WM_STATE set", wmState, err) }
func (c *Client) refreshName() { var newName string defer func() { if newName != c.name { c.name = newName c.frames.full.UpdateTitle() c.prompts.updateName() ewmh.WmVisibleNameSet(wm.X, c.Id(), c.name) event.Notify(event.ChangedClientName{c.Id()}) } }() newName, _ = ewmh.WmNameGet(wm.X, c.Id()) if len(newName) > 0 { return } newName, _ = icccm.WmNameGet(wm.X, c.Id()) if len(newName) > 0 { return } newName = "Unnamed Window" }
func (c *client) refreshName() { c.name, _ = ewmh.WmVisibleNameGet(c.X, c.Id()) if len(c.name) > 0 { return } c.name, _ = ewmh.WmNameGet(c.X, c.Id()) if len(c.name) > 0 { return } c.name, _ = icccm.WmNameGet(c.X, c.Id()) if len(c.name) > 0 { return } c.name = "Unnamed Window" }
func main() { // Connect to the X server using the DISPLAY environment variable. X, err := xgbutil.NewConn() if err != nil { log.Fatal(err) } // Get a list of all client ids. clientids, err := ewmh.ClientListGet(X) if err != nil { log.Fatal(err) } // Iterate through each client, find its name and find its size. for _, clientid := range clientids { name, err := ewmh.WmNameGet(X, clientid) // If there was a problem getting _NET_WM_NAME or if its empty, // try the old-school version. if err != nil || len(name) == 0 { name, err = icccm.WmNameGet(X, clientid) // If we still can't find anything, give up. if err != nil || len(name) == 0 { name = "N/A" } } // Now find the geometry, including decorations, of the client window. // Note that DecorGeometry actually traverses the window tree by // issuing QueryTree requests until a top-level window (i.e., its // parent is the root window) is found. The geometry of *that* window // is then returned. dgeom, err := xwindow.New(X, clientid).DecorGeometry() if err != nil { log.Printf("Could not get geometry for %s (0x%X) because: %s", name, clientid, err) continue } fmt.Printf("%s (0x%x)\n", name, clientid) fmt.Printf("\tGeometry: %s\n", dgeom) } }
func (c *Client) refreshName() { defer func() { c.frames.full.UpdateTitle() c.prompts.updateName() }() c.name, _ = ewmh.WmNameGet(wm.X, c.Id()) if len(c.name) > 0 { return } c.name, _ = icccm.WmNameGet(wm.X, c.Id()) if len(c.name) > 0 { return } c.name = "Unnamed Window" ewmh.WmVisibleNameSet(wm.X, c.Id(), c.name) }
func getActiveApp(X *xgbutil.XUtil) (app App) { active, err := ewmh.ActiveWindowGet(X) if err != nil { log.Fatal(err) } app.PID, err = ewmh.WmPidGet(X, active) if err != nil { log.Println("Couldn't get PID of window (0x%x)", active) } app.Name, err = ewmh.WmNameGet(X, active) if err != nil || len(app.Name) == 0 { app.Name, err = icccm.WmNameGet(X, active) // If we still can't find anything, give up. if err != nil || len(app.Name) == 0 { app.Name = "N/A" } } return }