From 3a4038dad9bf6b66d1c77e79b6b87afeed95a1a6 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Sun, 11 Aug 2024 10:36:29 -0400 Subject: [PATCH] Update registrar --- application.go | 29 ++++++++++++++-------------- internal/registrar/registrar_unix.go | 23 ++++++++++++++-------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/application.go b/application.go index bcfad91..f20cbf9 100644 --- a/application.go +++ b/application.go @@ -128,8 +128,9 @@ func (role ApplicationRole) Icon () tomo.Icon { } } -// RunApplication is like tomo.Run, but runs an application. If something fails -// to initialize, an error is written to the standard logger. +// RunApplication is like tomo.Run, but runs an application. It automatically +// sets up a backend. If something fails to initialize, an error is written to +// the standard logger. func RunApplication (application Application) { // TODO: see #4 @@ -138,20 +139,20 @@ func RunApplication (application Application) { } flag.Parse() - err := registrar.RegisterBackend() + reg := new(registrar.Registrar) + backend, err := reg.SetBackend() if err != nil { log.Fatalln("nasin: could not register backend:", err) } - err = tomo.Run(func () { - err := registrar.SetTheme() - if err != nil { log.Fatalln("nasin: could not set theme:", err) } - err = registrar.SetIconSet() - if err != nil { log.Fatalln("nasin: could not set icon set:", err) } - err = application.Init() - if err != nil { log.Fatalln("nasin: could not run application:", err) } + err = reg.SetTheme() + if err != nil { log.Fatalln("nasin: could not set theme:", err) } + err = reg.SetIconSet() + if err != nil { log.Fatalln("nasin: could not set icon set:", err) } + err = application.Init() + if err != nil { log.Fatalln("nasin: could not run application:", err) } - // open URLs - args := flag.Args() - applicationOpenUrls(application, args...) - }) + // open URLs + args := flag.Args() + applicationOpenUrls(application, args...) + err = backend.Run() if err != nil { log.Fatalln("nasin: could not run application:", err) } } diff --git a/internal/registrar/registrar_unix.go b/internal/registrar/registrar_unix.go index e46d282..661bd00 100644 --- a/internal/registrar/registrar_unix.go +++ b/internal/registrar/registrar_unix.go @@ -11,19 +11,26 @@ import "git.tebibyte.media/tomo/nasin/internal/style/tss" import "git.tebibyte.media/tomo/nasin/internal/icons/fallback" import "git.tebibyte.media/tomo/nasin/internal/style/fallback" -func RegisterBackend () error { - tomo.Register(1, x.New) - return nil +type Registrar struct { + backend *x.Backend } -func SetTheme () error { +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 +} + +func (this *Registrar) SetTheme () error { // TODO eventually get rid of this when we make a file format for // storing visual styles styleSheetName := os.Getenv("TOMO_STYLE_SHEET") if styleSheetName != "" { styl, _, err := tss.LoadFile(styleSheetName) if err == nil { - tomo.SetStyle(styl) + this.backend.SetStyle(styl) return nil } else { log.Printf ( @@ -33,11 +40,11 @@ func SetTheme () error { } styl, _ := fallbackStyle.New() - tomo.SetStyle(styl) + this.backend.SetStyle(styl) return nil } -func SetIconSet () error { +func (this *Registrar) SetIconSet () error { iconSet := fallbackIcons.New() iconSetName := os.Getenv("TOMO_XDG_ICON_THEME") if iconSetName != "" { @@ -49,6 +56,6 @@ func SetIconSet () error { } } - tomo.SetIconSet(iconSet) + this.backend.SetIconSet(iconSet) return nil }