mirror of
https://github.com/tailscale/tailscale.git
synced 2025-01-09 17:43:40 +00:00
cmd/systray: add visual workarounds for gnome, mac, and windows
Updates #1708 Change-Id: Ia101a4a3005adb9118051b3416f5a64a4a45987d Signed-off-by: Will Norris <will@tailscale.com>
This commit is contained in:
parent
cb59943501
commit
10d4057a64
@ -41,6 +41,10 @@ var (
|
|||||||
// newMenuDelay is the amount of time to sleep after creating a new menu,
|
// newMenuDelay is the amount of time to sleep after creating a new menu,
|
||||||
// but before adding items to it. This works around a bug in some dbus implementations.
|
// but before adding items to it. This works around a bug in some dbus implementations.
|
||||||
newMenuDelay time.Duration
|
newMenuDelay time.Duration
|
||||||
|
|
||||||
|
// if true, treat all mullvad exit node countries as single-city.
|
||||||
|
// Instead of rendering a submenu with cities, just select the highest-priority peer.
|
||||||
|
hideMullvadCities bool
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -74,6 +78,12 @@ func init() {
|
|||||||
|
|
||||||
desktop := strings.ToLower(os.Getenv("XDG_CURRENT_DESKTOP"))
|
desktop := strings.ToLower(os.Getenv("XDG_CURRENT_DESKTOP"))
|
||||||
switch desktop {
|
switch desktop {
|
||||||
|
case "gnome":
|
||||||
|
// GNOME expands submenus downward in the main menu, rather than flyouts to the side.
|
||||||
|
// Either as a result of that or another limitation, there seems to be a maximum depth of submenus.
|
||||||
|
// Mullvad countries that have a city submenu are not being rendered, and so can't be selected.
|
||||||
|
// Handle this by simply treating all mullvad countries as single-city and select the best peer.
|
||||||
|
hideMullvadCities = true
|
||||||
case "kde":
|
case "kde":
|
||||||
// KDE doesn't need a delay, and actually won't render submenus
|
// KDE doesn't need a delay, and actually won't render submenus
|
||||||
// if we delay for more than about 400µs.
|
// if we delay for more than about 400µs.
|
||||||
@ -209,8 +219,13 @@ func (menu *Menu) rebuild(state state) {
|
|||||||
func profileTitle(profile ipn.LoginProfile) string {
|
func profileTitle(profile ipn.LoginProfile) string {
|
||||||
title := profile.Name
|
title := profile.Name
|
||||||
if profile.NetworkProfile.DomainName != "" {
|
if profile.NetworkProfile.DomainName != "" {
|
||||||
|
if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
|
||||||
|
// windows and mac don't support multi-line menu
|
||||||
|
title += " (" + profile.NetworkProfile.DomainName + ")"
|
||||||
|
} else {
|
||||||
title += "\n" + profile.NetworkProfile.DomainName
|
title += "\n" + profile.NetworkProfile.DomainName
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return title
|
return title
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,7 +509,7 @@ func (menu *Menu) rebuildExitNodeMenu(ctx context.Context) {
|
|||||||
countryMenu := mullvadMenu.AddSubMenuItemCheckbox(flag+" "+country.name, "", false)
|
countryMenu := mullvadMenu.AddSubMenuItemCheckbox(flag+" "+country.name, "", false)
|
||||||
|
|
||||||
// single-city country, no submenu
|
// single-city country, no submenu
|
||||||
if len(country.cities) == 1 {
|
if len(country.cities) == 1 || hideMullvadCities {
|
||||||
onClick(countryMenu, country.best.ID)
|
onClick(countryMenu, country.best.ID)
|
||||||
if status.ExitNodeStatus != nil {
|
if status.ExitNodeStatus != nil {
|
||||||
for _, city := range country.cities {
|
for _, city := range country.cities {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user