iterate-ch / cyberduck

Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
https://cyberduck.io/
GNU General Public License v3.0
3.39k stars 296 forks source link

Revamped user interface for Windows #13036

Open AliveDevil opened 2 years ago

AliveDevil commented 2 years ago

Please take part in our interface redesign polls

Cyberduck interface is currently implemented with Windows Forms UI stack on .NET Framework 4.x. This imposes limitations regarding past and future improvements in Windows operating systems since 8.0.

Features not available, due to external or internal influence:

These features should be supported with a user interface rewrite on Windows, based on feedback, feature alignment with macOS and Windows Explorer experience:

Possible candidates: WPF, UWP, WinUI/Windows App SDK

WPF Native High DPI, implementation of quick look, tabs, etc. easily accomplished. Dark Mode is out of reach entirely, as there is no reason to rewrite all control styles just to get a dark mode, which has to support accent colors as well.^2

UWP: Deprecated.

WinUI Specifically WinUI3 with Windows App SDK: High DPI Scaling, Dark Mode, (possibly) Quick Look, tabs, quick navigation Not supported until Windows App SDK 1.1: Local toast notifications, multiple Windows

WPF XAML Islands with UWP/WinUI sounds just as bad as it is.

In order to implement these features, following things need to be completed before this can be implemented:

Issues, with workarounds:

Blocking issues:

With a new user interface following will apply:

AliveDevil commented 1 year ago

Food for thoughts:

There is the WinRT-interop layer, that is supported by both, .NET Core (through CsWinRT) and .NET Framework (native), we could provide a WinRT-interop library that glues a .NET Core (WinUI) frontend to a .NET Framework backend.

Thus eliminating the blocking dependency on .NET Core support for IKVM.

// Reason for glue-code: If I assume, that .NET Core works, how I think it works, it may work without this WinRT-layer, when hosting .NET Framework inside .NET Core. As I didn't check, what would happen if we're mixing Framework and Core in the same process.

dkocher commented 1 year ago

We have a poll regarding a new layout in #14507.

jaimedelano commented 1 year ago

Add image/video thumbnails, large icons, grid layout, etc

AliveDevil commented 1 year ago

Thumbnails won't be possible, unless you want to preemptively download every single file from any remote, generate the thumbnail, and trash the downloaded file.

dkocher commented 1 year ago

Thumbnails won't be possible, unless you want to preemptively download every single file from any remote, generate the thumbnail, and trash the downloaded file.

Relates to #13401.

dkocher commented 1 year ago

🎉 The new UX prototype from @janwaelti98 can be found in janwaelti98/UXForCyberduck

thefunkyjoint commented 9 months ago

I've been a Cyberduck user for years, but after moving to a Windows machine and having to deal with the absent of dark mode, today it's time to say goodbye to another app that has dark mode. Thank you .

PeterTucker commented 5 months ago

@thefunkyjoint Which SFTP client did you find that supports dark mode?

BMurri commented 1 month ago

WinForms is getting dark mode in .NET 9 (it's in with several bugs in 9-rc1 out now). It would require moving from Framework to net 10 in late 2025 to get a robust version of it, though.

WPF is also getting in-box support for dark mode in .NET 9, with likely fewer bugs than WinForms, although 3rd parties have provided reasonably robust dark mode solutions for WPF for the better part of the last decade, several of which work in Framework also. Microsoft will not likely backport either of those fixes to Framework, though.

AliveDevil commented 1 month ago

I'm impressed Microsoft cares about these, nice find 👍 @BMurri

We are already moving core components to .NET 8, and decided to move away from WinForms/WPF to WinUI 3 once the .NET 8 code here has stabilized. The changes necessary to get Cyberduck WinForms code to anything .NET Core is not trivial, and several third party components have not maintainer anymore.