Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inline "Auto Connect" menu item #38

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

halo
Copy link
Contributor

@halo halo commented Oct 27, 2024

Hi!

In order to make the menu a little bit more concise, I thought I'd turn these three lines per service:

before

Into just two per service:

after

This is also more consistent with the menu items above that have the format "Connect New York".

(I also think the domain name information could be improved, but I'm not sure yet how. It's only shown for the "Always Connect" menu items below but not for the "Connect" menu items above. Maybe it could be removed altogether or always shown, but that would be for another pull request.)

As for the capitalization of words, I tried to interpret the Apple Guidelines to the best of my abilities and by comparing it to other apps.

As always, thank you for your time! I tried to get the tab indentation right this time :)

Removes the dedicated "Always auto connect" menu item and replaces it with
"Always Connect Example". This is more consistent with the menu items
"Connect Example" and it also saves space.
@Timac
Copy link
Owner

Timac commented Oct 28, 2024

Thanks a lot for the pull request! For VPNStatus, I tried to keep a structure similar to the VPN menubar item from Apple:

  • first a list to quickly connect/disconnect to the VPN
  • then the settings for each VPN
    • VPN name
    • VPN options (info and Auto connect) vs configurations for Apple

Here is a screenshot of the VPN menubar from Apple:
screenshot

I'm curious why you're trying to reduce the number of lines per service. Do you have many VPNs?

@Timac
Copy link
Owner

Timac commented Oct 28, 2024

If you just want to reduce the number of lines, I could also imagine simply not showing the domain name information at all.

@halo
Copy link
Contributor Author

halo commented Oct 31, 2024

I tried to keep a structure similar to the VPN menubar item from Apple

Interesting! I'm not convinced that the menu is a good model. After all, we're trying to improve it :)

For example, I don't know what ✓ Default in the original does if there is only one configuration (I usually only have one). Clicking on it doesn't do anything. And replicating it with an "Always Connect" button is probably not the same kind of interaction as choosing between multiple configuration checkboxes per service.

And why duplicate the names of all services? My guess would be that it grew like that and nobody dared to change it later.

first a list to quickly connect/disconnect to the VPN

Well, I'm not sure this is intended behavior or a bug, but the Connect/Disconnect buttons in VPNStatus have no effect if I'm using auto-connect (disconnecting a service immediately auto-connects it again and connecting a second service briefly connects it and then disconnects both and then auto-connects the first again.). So, I would normally not need those menu items.

Do you have many VPNs?

I have around 7 IKEv2 services and 7 Wireguard configurations. That results in a dozen services which VPNStatus displays, which causes the entire screen height to be taken up by the menu and I have to scroll down to see the second half.

vpnstatus

The way to solve this is either through submenus (one per service, but then you'd have to click multiple times to achieve something) or by condensing the menu to the essentials (no duplication).

From your blog post introducing VPNStatus I can tell that it adds two things:

  • Include all services (not just some)
  • Auto-connect via polling

Those two in combination probably call for a different interaction design than the original menu (because the list is longer and now you have two different ways to connect: automatically and manually).

I could also imagine simply not showing the domain name information at all

I think I would be fine with that. But then I see no reason to have 2 lines per service in the lower auto-connect section but only one line per service in the upper section – unless you want to mimic the "visuals" of the native VPN menu, which maybe doesn't makes sense from an interaction point of view (given the features you add).

With my pull request I tried to solve my problem as much as possible while changing as little code as possible. But maybe this is a deeper issue :)

Thank you for your time.

@Timac
Copy link
Owner

Timac commented Oct 31, 2024

Thank a lot for your feedback. It seems we have different use cases: I primarily use the Connect menu items and occasionally the auto-connect feature, and I currently only have 2 VPNs.

In your case, the current menu structure is indeed more cumbersome. I agree that we could likely find a solution. Perhaps the best approach would be to add a preference in the settings to switch between the original behavior and an alternative menu structure. That would allow us to have a completely different structure that try to solve your use cases in the best possible way without affecting other users.

@halo
Copy link
Contributor Author

halo commented Nov 1, 2024

Here is how I'm thinking.

Manually connecting and disconnecting a service, is the same amount of "interaction work" as checking and unchecking an "always connect" checkbox (in other words, one click per service toggles its state).

The only semantic difference between the two is, when you turn off your computer:

  • If you connect manually, the connection will end when you close your laptop and not be resumed later.
  • If you use auto-connect, the connection will resume when you open your laptop (I'll ignore, for now, that auto-connect also helps with intermittent connectivity problems).

So, there could be a single preference setting "Always keep connected" that accounts for that behavioral difference and it would be enough with one menu item per service:

  • –––––––
  • Connect New York
  • Disconnect Sydney
  • Connect London
  • –––––––

When "Always keep connected" is set, it keeps the connection alive. If not, not.

However, having read your blog-post again, I really think the core feature of your app is auto-connection "at your fingertips". Because if someone just wants to manually connect or disconnect a service, the native menu will work fine for that.

Right? Or what is the unique selling point between the native menu and yours, if not auto-connection?

Let me brainstorm: Why not only have auto-connection mode? Most of the app surface becomes irrelevant when using manual mode (the pause buttons, the connect/disconnect buttons, the SSID feature). Except for the icon and the compactness of the menu items, I see no difference. But maybe I just don't see it 😅

(I'm generally reluctant to adding preferences and increasing the complexity of the app. I've gone down rabbit holes before, where I thought it should be simple, but it added much complexity. With your app, I believe it's a good use case to do only one thing and do that well, that is, "just let me choose which VPN to be connected and which not" as Apple doesn't give that to us.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants