/
border.go
111 lines (99 loc) · 2.77 KB
/
border.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package clients
import (
"github.com/BurntSushi/xgb"
"github.com/BurntSushi/xgb/xproto"
)
type Bordr interface {
BorderWidth() uint
SetBorderWidth(uint)
Draw(Client, bool, bool)
Color(bool, bool) uint32
}
type bordr struct {
borderWidth uint
}
func newBordr() Bordr {
return &bordr{}
}
func (b *bordr) BorderWidth() uint {
return b.borderWidth
}
func (b *bordr) SetBorderWidth(as uint) {
b.borderWidth = as
}
func (b *bordr) Draw(c Client, focusedWindow, focusedMonitor bool) {
if b.borderWidth > 0 {
//void window_draw_border(client_t *n, bool focused_window, bool focused_monitor);
}
}
func (b *bordr) Color(focusedWindow, focusedMonitor bool) uint32 {
/*
//uint32_t get_border_color(client_t *c, bool focused_window, bool focused_monitor);
if c != nil {
var pxl uint32
if focusedMonitor && focusedWindow {
//if c.locked {
// get_color(focused_locked_border_color, c->window, &pxl);
//} else if c.sticky {
// get_color(focused_sticky_border_color, c->window, &pxl);
//} else if c.private {
// get_color(focused_private_border_color, c->window, &pxl);
//} else {
// get_color(focused_border_color, c->window, &pxl);
//}
} else if focusedWindow {
//if c.urgent {
// get_color(urgent_border_color, c->window, &pxl);
//} else if c.locked {
// get_color(active_locked_border_color, c->window, &pxl);
//} else if c.sticky {
// get_color(active_sticky_border_color, c->window, &pxl);
//} else if c.private {
// get_color(active_private_border_color, c->window, &pxl);
//} else {
// get_color(active_border_color, c->window, &pxl);
//}
} else {
//if c.urgent {
// get_color(urgent_border_color, c->window, &pxl);
//} else if c.locked {
// get_color(normal_locked_border_color, c->window, &pxl);
//} else if c.sticky {
// get_color(normal_sticky_border_color, c->window, &pxl);
//} else if c.private {
// get_color(normal_private_border_color, c->window, &pxl);
//} else {
// get_color(normal_border_color, c->window, &pxl);
//}
}
return pxl
*/
return 0
}
func getColor(c *xgb.Conn, win xproto.Window, color string, pxl uint32) bool {
/*
reply := xproto.GetWindowAttributes(win, win, nil)
if reply != nil {
cm := reply.Colormap
if strings.Index(color, "#") == 0 {
var red, green, blue uint
if n, err := fmt.Sscanf(color, "%02x%02x%02x", &red, &green, &blue); n == 3 && err == nil {
red *= 0x101
green *= 0x101
blue *= 0x101
if r := xproto.AllocColorUnchecked(c, cm, red, green, blue); r != nil {
*pxl = r.Pixel
return true
}
}
} else {
if r := xproto.AllocNamedColorUnchecked(c, cm, uint16(len(color)), color); r != nil {
*pxl = r.Pixel
return true
}
}
}
pxl = 0
*/
return false
}