From aa3b030a26ed9c17b56618acd0a001db5cf50150 Mon Sep 17 00:00:00 2001 From: E1int <110526002+E1int@users.noreply.github.com> Date: Wed, 30 Jul 2025 21:42:39 +0200 Subject: [PATCH 1/2] Add CLI flag to start app minimized --- backend/app.go | 2 ++ backend/cmdlineoptions.go | 23 ++++++++++++++--------- main.go | 6 +++++- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/backend/app.go b/backend/app.go index b63bf38..51def8a 100644 --- a/backend/app.go +++ b/backend/app.go @@ -537,6 +537,8 @@ func (a *App) checkFlagsAndSendIPCMsg(cli *ipc.Client) error { return cli.SeekBackOrPrevious() case *FlagNext: return cli.SeekNext() + case *FlagShow: + return cli.Show() case VolumeCLIArg >= 0: return cli.SetVolume(VolumeCLIArg) case VolumePctCLIArg != 0: diff --git a/backend/cmdlineoptions.go b/backend/cmdlineoptions.go index 9f022b1..c7252ed 100644 --- a/backend/cmdlineoptions.go +++ b/backend/cmdlineoptions.go @@ -12,13 +12,15 @@ var ( SeekByCLIArg float64 = 0 VolumePctCLIArg float64 = 0 - FlagPlay = flag.Bool("play", false, "unpause or begin playback") - FlagPause = flag.Bool("pause", false, "pause playback") - FlagPlayPause = flag.Bool("play-pause", false, "toggle play/pause state") - FlagPrevious = flag.Bool("previous", false, "seek to previous track or beginning of current") - FlagNext = flag.Bool("next", false, "seek to next track") - FlagVersion = flag.Bool("version", false, "print app version and exit") - FlagHelp = flag.Bool("help", false, "print command line options and exit") + FlagPlay = flag.Bool("play", false, "unpause or begin playback") + FlagPause = flag.Bool("pause", false, "pause playback") + FlagPlayPause = flag.Bool("play-pause", false, "toggle play/pause state") + FlagPrevious = flag.Bool("previous", false, "seek to previous track or beginning of current") + FlagNext = flag.Bool("next", false, "seek to next track") + FlagStartMinimized = flag.Bool("start-minimized", false, "start app minimized") + FlagShow = flag.Bool("show", false, "show minimized app") + FlagVersion = flag.Bool("version", false, "print app version and exit") + FlagHelp = flag.Bool("help", false, "print command line options and exit") ) func init() { @@ -50,8 +52,11 @@ func init() { func HaveCommandLineOptions() bool { visitedAny := false - flag.Visit(func(*flag.Flag) { - visitedAny = true + flag.Visit(func(f *flag.Flag) { + // We skip `start-minimized` because it should't send an IPC message. + if f.Name != "start-minimized" { + visitedAny = true + } }) return visitedAny } diff --git a/main.go b/main.go index e5ec0f5..1dc6302 100644 --- a/main.go +++ b/main.go @@ -103,7 +103,11 @@ func main() { }) fyneApp.Lifecycle().SetOnEnteredForeground(windowStartupTasks) - mainWindow.ShowAndRun() + if *backend.FlagStartMinimized { + fyneApp.Run() + } else { + mainWindow.ShowAndRun() + } log.Println("Running shutdown tasks...") myApp.Shutdown() From c832d13099b206e844e575cea739b2d23eb6c213 Mon Sep 17 00:00:00 2001 From: E1int <110526002+E1int@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:44:18 +0200 Subject: [PATCH 2/2] Handle server connection in minimized start --- backend/app.go | 2 +- main.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/app.go b/backend/app.go index 51def8a..ec7cca6 100644 --- a/backend/app.go +++ b/backend/app.go @@ -429,7 +429,7 @@ func (a *App) SetupWindowsSMTC(hwnd uintptr) { }) } -func (a *App) LoginToDefaultServer(string) error { +func (a *App) LoginToDefaultServer() error { serverCfg := a.ServerManager.GetDefaultServer() if serverCfg == nil { return ErrNoServers diff --git a/main.go b/main.go index 1dc6302..25e8563 100644 --- a/main.go +++ b/main.go @@ -87,7 +87,7 @@ func main() { defaultServer := myApp.ServerManager.GetDefaultServer() if defaultServer == nil { mainWindow.Controller.PromptForFirstServer() - } else { + } else if !*backend.FlagStartMinimized { // If the minimized start flag was passed, the connection is already established. mainWindow.Controller.DoConnectToServerWorkflow(defaultServer) } @@ -104,6 +104,10 @@ func main() { fyneApp.Lifecycle().SetOnEnteredForeground(windowStartupTasks) if *backend.FlagStartMinimized { + if err = myApp.LoginToDefaultServer(); err != nil { + log.Fatalf("failed to connect to server: %v", err.Error()) + return + } fyneApp.Run() } else { mainWindow.ShowAndRun()