-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Description
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.