nasin/internal/registrar/registrar_unix.go

69 lines
1.8 KiB
Go
Raw Normal View History

//go:build unix && (!darwin)
2024-05-06 21:25:25 -06:00
package registrar
2024-04-29 14:21:53 -06:00
import "os"
import "log"
2024-04-29 14:21:53 -06:00
import "git.tebibyte.media/tomo/tomo"
2024-06-11 22:19:12 -06:00
import "git.tebibyte.media/tomo/backend/x"
2024-07-29 13:13:02 -06:00
import "git.tebibyte.media/sashakoshka/goparse"
2024-06-11 22:19:12 -06:00
import "git.tebibyte.media/tomo/nasin/internal/icons/xdg"
2024-08-12 15:12:43 -06:00
import "git.tebibyte.media/tomo/nasin/internal/styles/tss"
2024-06-11 22:19:12 -06:00
import "git.tebibyte.media/tomo/nasin/internal/icons/fallback"
2024-08-12 15:12:43 -06:00
import "git.tebibyte.media/tomo/nasin/internal/styles/fallback"
2024-08-11 08:42:22 -06:00
import "git.tebibyte.media/tomo/nasin/internal/faces/fallback"
2024-04-29 14:21:53 -06:00
2024-08-11 08:36:29 -06:00
type Registrar struct {
backend *x.Backend
}
func (this *Registrar) SetBackend () (tomo.Backend, error) {
backend, err := x.New()
if err != nil { return nil, err }
this.backend = backend.(*x.Backend)
tomo.SetBackend(backend)
return backend, nil
2024-06-11 22:27:34 -06:00
}
2024-08-11 08:36:29 -06:00
func (this *Registrar) SetTheme () error {
styleSheetName := os.Getenv("TOMO_STYLE_SHEET")
if styleSheetName != "" {
styl, _, err := tss.LoadFile(styleSheetName)
if err == nil {
2024-08-11 08:36:29 -06:00
this.backend.SetStyle(styl)
2024-07-29 13:13:02 -06:00
return nil
} else {
2024-07-29 13:13:02 -06:00
log.Printf (
"nasin: could not load style sheet '%s'\n%v",
styleSheetName, parse.Format(err))
}
}
styl, _ := fallbackStyle.New()
2024-08-11 08:36:29 -06:00
this.backend.SetStyle(styl)
return nil
}
2024-08-11 08:36:29 -06:00
func (this *Registrar) SetIconSet () error {
iconSet := fallbackIcons.New()
iconSetName := os.Getenv("TOMO_XDG_ICON_THEME")
if iconSetName != "" {
xdgIconSet, err := xdgIcons.FindThemeWarn(iconSetName, iconSet)
if err == nil {
iconSet = xdgIconSet
} else {
log.Printf("nasin: could not load icon theme '%s': %v", iconSetName, err)
}
}
2024-08-11 08:36:29 -06:00
this.backend.SetIconSet(iconSet)
return nil
2024-04-29 14:21:53 -06:00
}
2024-08-11 08:42:22 -06:00
func (this *Registrar) SetFaceSet () error {
// TODO replace this with something that uses findfont, and caches and
// refcounts the faces
faceSet := fallbackFaces.New()
this.backend.SetFaceSet(faceSet)
return nil
}