Icons and styles use xyz.holanet.Nasin config

This commit is contained in:
2024-08-23 01:10:54 -04:00
parent a69c726482
commit f512deb96e
4 changed files with 106 additions and 37 deletions

View File

@@ -1,10 +1,10 @@
//go:build unix && (!darwin)
package registrar
import "os"
import "log"
import "git.tebibyte.media/tomo/tomo"
import "git.tebibyte.media/tomo/backend/x"
import "git.tebibyte.media/tomo/tomo/event"
import "git.tebibyte.media/sashakoshka/goparse"
import "git.tebibyte.media/tomo/nasin/internal/icons/xdg"
import "git.tebibyte.media/tomo/nasin/internal/styles/tss"
@@ -14,6 +14,8 @@ import "git.tebibyte.media/tomo/nasin/internal/faces/fallback"
type Registrar struct {
backend *x.Backend
iconSetCookie event.Cookie
styleCookie event.Cookie
}
func (this *Registrar) SetBackend () (tomo.Backend, error) {
@@ -24,38 +26,50 @@ func (this *Registrar) SetBackend () (tomo.Backend, error) {
return backend, nil
}
func (this *Registrar) SetTheme () error {
styleSheetName := os.Getenv("TOMO_STYLE_SHEET")
if styleSheetName != "" {
styl, _, err := tss.LoadFile(styleSheetName)
func (this *Registrar) SetStyle (name string) error {
if this.styleCookie != nil {
this.styleCookie.Close()
this.styleCookie = nil
}
if name != "" {
styl, cookie, err := tss.LoadFile(name)
if err == nil {
this.backend.SetStyle(styl)
this.styleCookie = cookie
return nil
} else {
log.Printf (
"nasin: could not load style sheet '%s'\n%v",
styleSheetName, parse.Format(err))
name, parse.Format(err))
}
}
styl, _ := fallbackStyle.New()
styl, cookie := fallbackStyle.New()
this.styleCookie = cookie
this.backend.SetStyle(styl)
return nil
}
func (this *Registrar) SetIconSet () error {
iconSet := fallbackIcons.New()
iconSetName := os.Getenv("TOMO_XDG_ICON_THEME")
if iconSetName != "" {
xdgIconSet, err := xdgIcons.FindThemeWarn(iconSetName, iconSet)
func (this *Registrar) SetIconSet (name string) error {
if this.iconSetCookie != nil {
this.iconSetCookie.Close()
this.iconSetCookie = nil
}
iconSet, cookie := fallbackIcons.New()
if name != "" {
xdgIconSet, xdgCookie, err := xdgIcons.FindThemeWarn(name, iconSet)
cookie = event.MultiCookie(cookie, xdgCookie)
if err == nil {
iconSet = xdgIconSet
} else {
log.Printf("nasin: could not load icon theme '%s': %v", iconSetName, err)
log.Printf("nasin: could not load icon theme '%s': %v", name, err)
}
}
this.backend.SetIconSet(iconSet)
this.iconSetCookie = cookie
return nil
}