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

[Discussion] Transition to WPF #2962

Closed
database64128 opened this issue Sep 19, 2020 · 4 comments
Closed

[Discussion] Transition to WPF #2962

database64128 opened this issue Sep 19, 2020 · 4 comments

Comments

@database64128
Copy link
Contributor

As mentioned in #2959, I'm planning a series of attempts that aims to modernize shadowsocks-windows by rewriting most UI components using WPF and following standard MVVM patterns, and eventually make it a highly-maintainable WPF MVVM project.

To establish a transition and make it as smooth and efficient as possible, I'd like to discuss a few details with the maintainers and the community. Feel free to reply with your ideas/suggestions. Any feedback is welcome and appreciated! 😊

1. A shift of focus to v5/master

The v5/master branch needs for love. The migration to .NET Core 3.1 should be accelerated. New features should target the branch. Pre-release versions from the branch should be released to increase the testing coverage.

2. A unified MainWindow

I propose to implement a MainWindow as the new main interface of shadowsocks-windows that unifies the experience of SIP008 online configuration, server editing, and server sharing.

Our current implementation involves multiple windows and forms. The user experience feels fragmented and disconnected. It requires multiple clicks to do a simple task. The new server management interface divides servers into groups. Any group can be associated with an SIP008 online configuration URL for updates. The user may select one or multiple servers to export as ss:// links or QR codes. A new import process is also implemented in the new interface to allow the selection of a target group.

3. WPF theming

I propose to use MaterialDesignInXAML/MaterialDesignInXamlToolkit as the default WPF theme in new interfaces. It has the following benefits:

  • Dark mode: a must-have in 2020. The interface can follow system color mode, or let the user decide to use light mode or dark mode.
  • A modern look: The default theme of WPF looks outdated and ugly. For this reason, most WPF apps use custom themes. Material Design is widely used in many web and mobile apps. Using material design themes aligns with most users' aesthetics of user interfaces, with significantly less resource consumption compared to those implemented in Electron apps.
  • Built-in controls: DialogHost provides an easy-to-use interface for dialogs. Snackbar allows the presentation of simple notifications in a not so annoying way.
@ghost ghost pinned this issue Sep 19, 2020
@ghost ghost added the need discussion label Sep 19, 2020
@Stzx
Copy link
Collaborator

Stzx commented Sep 19, 2020

Yes, I try to use WPF as a new UI implementation shadowsocks/Shadowsocks-Net#11.

Another thing worth paying attention to is WinUI3.

@celeron533
Copy link
Contributor

And could also take a look on another drafted project
https://github.com/shadowsocks/Shadowsocks-Net

@DuckSoft

This comment has been minimized.

@DuckSoft

This comment has been minimized.

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

No branches or pull requests

4 participants