monitor
This commit is contained in:
parent
e277164b2a
commit
99f43d3408
|
@ -1,6 +1,7 @@
|
|||
package bsp
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"tuxpa.in/t/wm/src/bsp/cfg"
|
||||
|
@ -19,39 +20,66 @@ type Desktop struct {
|
|||
Name string
|
||||
Monitor *Monitor
|
||||
|
||||
Cfg *cfg.Modifier[Config]
|
||||
Cfg *cfg.Modifier[*Config]
|
||||
}
|
||||
|
||||
type Monitor struct {
|
||||
Name string
|
||||
|
||||
Cfg *cfg.Modifier[Config]
|
||||
Cfg *cfg.Modifier[*Config]
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
Name string
|
||||
|
||||
Cfg *cfg.Modifier[Config]
|
||||
Cfg *cfg.Modifier[*Config]
|
||||
}
|
||||
|
||||
func (w *WM) Mutate(fn func() error) {
|
||||
func (w *WM) Mutate(fn func() error) error {
|
||||
w.mu.Lock()
|
||||
defer w.mu.Unlock()
|
||||
if fn != nil {
|
||||
fn()
|
||||
return fn()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *WM) View(fn func() error) {
|
||||
func (w *WM) View(fn func() error) error {
|
||||
w.mu.RLock()
|
||||
defer w.mu.RUnlock()
|
||||
if fn != nil {
|
||||
fn()
|
||||
return fn()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *WM) AddDesktop(name string) {
|
||||
|
||||
func (w *WM) AddMonitor(name string) error {
|
||||
return w.Mutate(func() error {
|
||||
w.Monitors = append(w.Monitors, &Monitor{
|
||||
Name: name,
|
||||
Cfg: cfg.NewModifier(&Config{}),
|
||||
})
|
||||
return nil
|
||||
})
|
||||
}
|
||||
func (w *WM) AddDesktop(name string, monitorName string) error {
|
||||
return w.Mutate(func() error {
|
||||
var monitor *Monitor
|
||||
for _, v := range w.Monitors {
|
||||
if v.Name == monitorName {
|
||||
monitor = v
|
||||
}
|
||||
}
|
||||
if monitor == nil {
|
||||
return fmt.Errorf("invalid descriptor found in '%s'", monitor)
|
||||
}
|
||||
w.Desktops = append(w.Desktops, &Desktop{
|
||||
Name: name,
|
||||
Cfg: cfg.NewModifier(&Config{}),
|
||||
Monitor: monitor,
|
||||
})
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func NewWM() *WM {
|
||||
|
|
Loading…
Reference in New Issue