Skip to content

Conversation

snaggen
Copy link
Contributor

@snaggen snaggen commented Oct 2, 2025

Hi

I have been maintaining this "password manger" feature in my own branch, but it would be good for things like i18n and general discoverability to get it merged.

Last time it was said that a password management feature is not in line with the product and that users can use the regular password manager (like seahorse) instead. To this, I would like to point out that it is not really much of a manager, that is not the feature. The feature is to provide quick and easy access to insert passwords for ssh, vpn and similar. The passwords are already stored in your keyring, so this just provides quick access to them. Much like the auto-fill feature in iOS and android.

So, the workflow for the user to start a cmdline based vpn will be:

  1. start vpn
  2. Ctrl+Alt+p
  3. Look at a short list of passwords and click on it.

Instead of:

  1. start vpn
  2. Open Seahorse
  3. Search through a large list of passwords and open the correct one
  4. Copy the password
  5. Switch to the terminal again and paste

If you work with many VPNs or other tasks tasks that requires a lot of passwords, this feature will make your life a lot easier.

The downside to include this is mainly more code to maintain. But since I have been maintaining it in it's own branch, I have structured it to be easy to maintain so that should not be a very big problem.

@jackpot51
Copy link
Member

Thanks, it looks better but for portability, it should be behind a feature gate.

@snaggen
Copy link
Contributor Author

snaggen commented Oct 2, 2025

I will add a feature gate

@jackpot51
Copy link
Member

You could consider making a Message enum in the password_manager.rs file and then embedding it in a Password message at the higher level. That would make it more modular.

@jackpot51
Copy link
Member

Then, something like this would be all that is needed in the update function, and any added messages would not all need feature gates.

Message::PasswordManager(password_manager_message) => {
    self.password_manager.update(password_manager_message);
}

@snaggen
Copy link
Contributor Author

snaggen commented Oct 2, 2025

Then, something like this would be all that is needed in the update function, and any added messages would not all need feature gates.

Message::PasswordManager(password_manager_message) => {
    self.password_manager.update(password_manager_message);
}

This didn't really work, since we need access to the pane_model to get the terminal to paste to it. But it still got a lot better, since it is now all in one block

)),
)
.push(
widget::button::text("-")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use the icon button used for deleting profiles.

@jackpot51
Copy link
Member

The delete button is the last thing I saw, but UX may have other changes.

@maria-komarova
Copy link

Quick mockup - but the pattern is very similar to what we have in Profiles.
ContextDrawer-passwords

@snaggen
Copy link
Contributor Author

snaggen commented Oct 3, 2025

Thanks for the mockup! I wil try to implement this during the weekend

@snaggen snaggen force-pushed the password_manager branch 3 times, most recently from 57ca52e to 486d88f Compare October 5, 2025 11:40
@snaggen
Copy link
Contributor Author

snaggen commented Oct 5, 2025

I have rewritten the UI to resemble the mocup. A minor difference is that I used a secured text box for the password, and that have a show/hide password icon instead of the copy icon.
I have also moved most of the messages to be handled within the password manager code, so there are less things in main.rs

@snaggen
Copy link
Contributor Author

snaggen commented Oct 5, 2025

I also changed the title from "Manage Passwords" to just "Passwords" since the main use of the page is to access and paste passwords, the management is still possible but that is not what it is mainly used for.

@jackpot51
Copy link
Member

Thanks, I will review on Monday

@snaggen
Copy link
Contributor Author

snaggen commented Oct 5, 2025

One thing that I'm not really happy with is the Length::Fixed(290.0) .... if I replace the button with text, then Length::Fill works as expected, but if I use a button (which I need since the user must be able to click it to auto fill the password) then Length::Fill will cause the button to push all the other element of the visible area of the row.

Not sure why a text widget and a button widget behaves differently here.

So, for now a Fixed since of 290 is the only way I could get it to render properly.

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.

3 participants