func (c *Client) unmanage() { wm.X.Grab() defer wm.X.Ungrab() go func() { c.frames.destroy() c.prompts.destroy() }() logger.Message.Printf("Unmanaging client: %s", c) c.frame.Unmap() c.win.Detach() icccm.WmStateSet(wm.X, c.Id(), &icccm.WmState{State: icccm.StateWithdrawn}) focus.Remove(c) wm.FocusFallback() stack.Remove(c) c.workspace.Remove(c) wm.RemoveClient(c) c.attnStop() xproto.ChangeSaveSetChecked( wm.X.Conn(), xproto.SetModeDelete, c.Id()).Check() if c.hadStruts { wm.Heads.ApplyStruts(wm.Clients) } }
func (c *Client) unmanage() { wm.X.Grab() defer wm.X.Ungrab() go func() { c.frames.destroy() c.prompts.destroy() }() logger.Message.Printf("Unmanaging client: %s", c) infoWorkspace := c.workspace.String() infoClass := c.Class().Class infoInstance := c.Class().Instance infoName := c.Name() c.frame.Unmap() c.win.Detach() icccm.WmStateSet(wm.X, c.Id(), &icccm.WmState{State: icccm.StateWithdrawn}) focus.Remove(c) wm.FocusFallback() stack.Remove(c) c.workspace.Remove(c) wm.RemoveClient(c) c.attnStop() xproto.ChangeSaveSetChecked( wm.X.Conn(), xproto.SetModeDelete, c.Id()).Check() if c.hadStruts { wm.Heads.ApplyStruts(wm.Clients) } event.Notify(event.UnmanagedClient{ Id: c.Id(), Name: infoName, Workspace: infoWorkspace, Class: infoClass, Instance: infoInstance, }) }