diff --git a/client/cmd/login.go b/client/cmd/login.go index 14c973d91..065f8553a 100644 --- a/client/cmd/login.go +++ b/client/cmd/login.go @@ -219,5 +219,15 @@ func openURL(cmd *cobra.Command, verificationURIComplete, userCode string) { // isLinuxRunningDesktop checks if a Linux OS is running desktop environment func isLinuxRunningDesktop() bool { - return os.Getenv("DESKTOP_SESSION") != "" || os.Getenv("XDG_CURRENT_DESKTOP") != "" + if os.Getenv("DESKTOP_SESSION") != "" { + return true + } + + for _, env := range os.Environ() { + if strings.HasPrefix(env, "XDG_") { + return true + } + } + + return false } diff --git a/client/cmd/login_test.go b/client/cmd/login_test.go index 6bb7eff4f..45f342b9d 100644 --- a/client/cmd/login_test.go +++ b/client/cmd/login_test.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "runtime" "strings" "testing" @@ -51,3 +52,16 @@ func TestLogin(t *testing.T) { t.Errorf("expected non empty Private key, got empty") } } + +func TestIsLinuxRunningDesktop(t *testing.T) { + if runtime.GOOS != "linux" { + t.Skip("skipping test on non-linux platform") + } + + t.Setenv("XDG_FOO", "BAR") + + isDesktop := isLinuxRunningDesktop() + if !isDesktop { + t.Errorf("expected desktop environment, got false") + } +}