Add -reload-theme CLI flag to re-apply the current theme file (#860)

* Add -reload-theme CLI flag to re-apply theme via IPC

Sends a reload-theme IPC message to a running instance, causing it to
call fyne.CurrentApp().Settings().SetTheme(m.theme). Follows the same
callback pattern as -show (OnReactivate) and quit (OnExit).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* actually re-read theme file

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Drew Weymouth
2026-02-17 16:56:51 -08:00
committed by GitHub
co-authored by Claude Sonnet 4.6
parent 497c61e724
commit e21908cd24
8 changed files with 39 additions and 9 deletions
+1
View File
@@ -26,6 +26,7 @@ const (
VolumePath = "/volume" // ?v=<vol>
VolumeAdjustPath = "/volume/adjust" // ?pct=<+/- percentage>
ShowPath = "/window/show"
ReloadThemePath = "/window/reload-theme"
QuitPath = "/window/quit"
RateCurrentTrackPath = "/current_track/rate" // ?r=<rating 0-5>
)
+5
View File
@@ -128,6 +128,11 @@ func (c *Client) Show() error {
return err
}
func (c *Client) ReloadTheme() error {
_, err := c.sendRequest(ReloadThemePath)
return err
}
func (c *Client) Quit() error {
_, err := c.sendRequest(QuitPath)
return err
+10 -8
View File
@@ -41,16 +41,17 @@ type ServerManager interface {
}
type serverImpl struct {
server *http.Server
pbHandler PlaybackHandler
rateFn func(int)
sm ServerManager
showFn func()
quitFn func()
server *http.Server
pbHandler PlaybackHandler
rateFn func(int)
sm ServerManager
showFn func()
quitFn func()
reloadThemeFn func()
}
func NewServer(pbHandler PlaybackHandler, rateFn func(int), sm ServerManager, showFn, quitFn func()) IPCServer {
s := &serverImpl{pbHandler: pbHandler, rateFn: rateFn, sm: sm, showFn: showFn, quitFn: quitFn}
func NewServer(pbHandler PlaybackHandler, rateFn func(int), sm ServerManager, showFn, quitFn, reloadThemeFn func()) IPCServer {
s := &serverImpl{pbHandler: pbHandler, rateFn: rateFn, sm: sm, showFn: showFn, quitFn: quitFn, reloadThemeFn: reloadThemeFn}
s.server = &http.Server{
Handler: s.createHandler(),
}
@@ -77,6 +78,7 @@ func (s *serverImpl) createHandler() http.Handler {
m.HandleFunc(ShowPath, s.makeSimpleEndpointHandler(func() {
s.showFn()
}))
m.HandleFunc(ReloadThemePath, s.makeSimpleEndpointHandler(s.reloadThemeFn))
m.HandleFunc(QuitPath, s.makeSimpleEndpointHandler(func() {
s.quitFn()
}))