-
Notifications
You must be signed in to change notification settings - Fork 1
/
interface.go
80 lines (64 loc) · 1.5 KB
/
interface.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright (c) 2018, Mark "Happy-Ferret" Bauermeister
//
// This software may be modified and distributed under the terms
// of the BSD license. See the LICENSE file for details.
package workspace
import (
"github.com/BurntSushi/xgbutil"
"github.com/BurntSushi/xgbutil/xrect"
"github.com/BurntSushi/xgbutil/xwindow"
"github.com/Anima-OS/Wonderland/layout"
)
type Workspacer interface {
String() string
LayoutName() string
Geom() xrect.Rect
HeadGeom() xrect.Rect
IsActive() bool
IsVisible() bool
Add(c Client)
Remove(c Client)
IconifyToggle(c Client)
Layout(c Client) layout.Layout
}
type Sticky struct {
X *xgbutil.XUtil
floater layout.Floater
}
func (wrks *Workspaces) NewSticky() *Sticky {
return &Sticky{wrks.X, layout.NewFloating()}
}
func (wrk *Sticky) String() string {
return "Sticky"
}
func (wrk *Sticky) LayoutName() string {
return wrk.floater.Name()
}
func (wrk *Sticky) Geom() xrect.Rect {
return xwindow.RootGeometry(wrk.X)
}
func (wrk *Sticky) HeadGeom() xrect.Rect {
return xwindow.RootGeometry(wrk.X)
}
func (wrk *Sticky) IsActive() bool {
return true
}
func (wrk *Sticky) IsVisible() bool {
return true
}
func (wrk *Sticky) Add(c Client) {}
func (wrk *Sticky) Remove(c Client) {}
func (wrk *Sticky) IconifyToggle(c Client) {
if c.Iconified() {
c.LoadState("before-iconify")
c.IconifiedSet(false)
c.Map()
} else {
c.SaveState("before-iconify")
c.IconifiedSet(true)
c.Unmap()
}
}
func (wrk *Sticky) Layout(c Client) layout.Layout {
return wrk.floater
}