From 5297dc3baf386084e9b3791415aca12a261d2d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claus=20Lensb=C3=B8l?= Date: Fri, 8 Aug 2025 16:12:11 -0400 Subject: [PATCH] cmd/tailscale/cli: move systray configuration to tailscale configure (#16817) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates #1708 Signed-off-by: Claus Lensbøl --- cmd/tailscale/cli/configure.go | 1 + cmd/tailscale/cli/configure_linux-all.go | 8 ++++ cmd/tailscale/cli/configure_linux.go | 51 ++++++++++++++++++++++++ cmd/tailscale/cli/systray.go | 25 +----------- 4 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 cmd/tailscale/cli/configure_linux-all.go create mode 100644 cmd/tailscale/cli/configure_linux.go diff --git a/cmd/tailscale/cli/configure.go b/cmd/tailscale/cli/configure.go index da6278ce2..0354a1944 100644 --- a/cmd/tailscale/cli/configure.go +++ b/cmd/tailscale/cli/configure.go @@ -32,6 +32,7 @@ services on the host to use Tailscale in more ways. ccall(maybeSysExtCmd), ccall(maybeVPNConfigCmd), ccall(maybeJetKVMConfigureCmd), + ccall(maybeSystrayCmd), ), } } diff --git a/cmd/tailscale/cli/configure_linux-all.go b/cmd/tailscale/cli/configure_linux-all.go new file mode 100644 index 000000000..e645e9654 --- /dev/null +++ b/cmd/tailscale/cli/configure_linux-all.go @@ -0,0 +1,8 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +package cli + +import "github.com/peterbourgon/ff/v3/ffcli" + +var maybeSystrayCmd func() *ffcli.Command // non-nil only on Linux, see configure_linux.go diff --git a/cmd/tailscale/cli/configure_linux.go b/cmd/tailscale/cli/configure_linux.go new file mode 100644 index 000000000..4bbde8721 --- /dev/null +++ b/cmd/tailscale/cli/configure_linux.go @@ -0,0 +1,51 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +//go:build linux && !ts_omit_systray + +package cli + +import ( + "context" + "flag" + "fmt" + + "github.com/peterbourgon/ff/v3/ffcli" + "tailscale.com/client/systray" +) + +func init() { + maybeSystrayCmd = systrayConfigCmd +} + +var systrayArgs struct { + initSystem string + installStartup bool +} + +func systrayConfigCmd() *ffcli.Command { + return &ffcli.Command{ + Name: "systray", + ShortUsage: "tailscale configure systray [options]", + ShortHelp: "[ALPHA] Manage the systray client for Linux", + LongHelp: "[ALPHA] The systray set of commands provides a way to configure the systray application on Linux.", + Exec: configureSystray, + FlagSet: (func() *flag.FlagSet { + fs := newFlagSet("systray") + fs.StringVar(&systrayArgs.initSystem, "enable-startup", "", + "Install startup script for init system. Currently supported systems are [systemd].") + return fs + })(), + } +} + +func configureSystray(_ context.Context, _ []string) error { + if systrayArgs.initSystem != "" { + if err := systray.InstallStartupScript(systrayArgs.initSystem); err != nil { + fmt.Printf("%s\n\n", err.Error()) + return flag.ErrHelp + } + return nil + } + return flag.ErrHelp +} diff --git a/cmd/tailscale/cli/systray.go b/cmd/tailscale/cli/systray.go index c0296ae26..827e8a9a4 100644 --- a/cmd/tailscale/cli/systray.go +++ b/cmd/tailscale/cli/systray.go @@ -7,41 +7,20 @@ package cli import ( "context" - "flag" - "fmt" "github.com/peterbourgon/ff/v3/ffcli" "tailscale.com/client/systray" ) -var systrayArgs struct { - initSystem string - installStartup bool -} - var systrayCmd = &ffcli.Command{ Name: "systray", ShortUsage: "tailscale systray", ShortHelp: "Run a systray application to manage Tailscale", - LongHelp: `Run a systray application to manage Tailscale. -To have the application run on startup, use the --enable-startup flag.`, - Exec: runSystray, - FlagSet: (func() *flag.FlagSet { - fs := newFlagSet("systray") - fs.StringVar(&systrayArgs.initSystem, "enable-startup", "", - "Install startup script for init system. Currently supported systems are [systemd].") - return fs - })(), + LongHelp: "Run a systray application to manage Tailscale.", + Exec: runSystray, } func runSystray(ctx context.Context, _ []string) error { - if systrayArgs.initSystem != "" { - if err := systray.InstallStartupScript(systrayArgs.initSystem); err != nil { - fmt.Printf("%s\n\n", err.Error()) - return flag.ErrHelp - } - return nil - } new(systray.Menu).Run(&localClient) return nil }