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

Revamped user interface for Windows #13036

Open
AliveDevil opened this issue Apr 1, 2022 · 10 comments · May be fixed by #15199
Open

Revamped user interface for Windows #13036

AliveDevil opened this issue Apr 1, 2022 · 10 comments · May be fixed by #15199
Assignees
Labels
Milestone

Comments

@AliveDevil
Copy link
Contributor

AliveDevil commented Apr 1, 2022

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:

  • High DPI scaling
    • ObjectListView, which hasn't been updated in ages for recent high dpi scenarios (missing development resources to improve the situation here)
    • Custom Control-Renderers, menus, labels, etc. - mixed signals from Microsoft how to really provide High DPI support for Windows Forms.
      There is a plethora of combinations of High DPI scenarios which need to be tested.
    • What High DPI Scenarios should be supported? 100%, 125%, 150%, 200%, 250%, 500%. Custom 359%?
  • Dark Mode
    • Limitation of Windows Forms. There is no way of supporting this easily or reasonable1
    • Classic Win32 desktop apps don't support this either (which WinForms is based on)

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

  • High DPI scaling, (native)
  • Dark Mode, (native)
  • Quick Look-feature
  • Tabbed-interface
    • Discuss: Dragging between windows/out of tab-groups supported?
  • Quick-navigation left sidebar, detail (list) view in content
  • Multiple windows support
  • Replace Sparkle Updater with MSIX Auto Update feature

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:

  • Upgrade to .NET 6 (LTS)
    • Base Dependency Requirement: IKVM runs on .NET Framework 4.x only. Requires patching for .NET 6 support
  • For our current supported platforms XCopy-deployment would be appreciated3
    • still provide EXE/MSI installers? Migrate to MSIX entirely resolves the issue here

Issues, with workarounds:

  • IKVM is not working on .NET 6: Revamped user interface for Windows #13036 (comment)
    This would allow us to buy more time, and make the backend/glue more resilient
    As this is Windows-specific, I don't see an issue with mixing Framework and Core here.
    • log4j: With the glue code and interop-layer between frontend/backend, we can eliminate this issue

Blocking issues:

  • MSIX Auto Update is currently out of service // Internal prototypes support auto-update (through various means)

The ms-appinstaller scheme(protocol) has been disabled. This means App Installer will not be able to install an app directly from a web server and it will need to be downloaded first.

  • IKVM is not working on .NET 6
  • There are issues with IKVMc on .NET 6 with log4j4, rendering it unusable
  • Windows App SDK 1.1 isn't released yet Released.

With a new user interface following will apply:

  • No support for any Windows Client operating system older than build 17763 (version 1809/October 2018 Update)
    • Dropping Windows 7 (EOL 2020), 8 (EOL 2016), 8.1 (mainstream EOL 2018) entirely
  • No support for any Windows Server operating system older than Windows Server 2019
    • Dropping support for Windows Server 2008R2 (EOL 2020), 2012 (mainstream EOL 2018), 2012R2 (mainstream EOL 2018), 2016 (mainstream EOL 2022)
  • No bundled support for Bonjour (install separately?)

Footnotes

  1. https://github.com/dotnet/winforms/discussions/4668

  2. https://github.com/dotnet/wpf/issues?q=is%3Aissue+Dark+Mode

  3. https://portal.productboard.com/winappsdk/1-windows-app-sdk/c/42-self-contained-xcopy-deployment-support

  4. https://github.com/ikvm-revived/ikvm/issues/45

@AliveDevil
Copy link
Contributor Author

AliveDevil commented Mar 13, 2023

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
Copy link
Contributor

dkocher commented Apr 11, 2023

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

@jaimedelano
Copy link

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

@AliveDevil
Copy link
Contributor Author

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
Copy link
Contributor

dkocher commented Apr 24, 2023

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 dkocher changed the title User Interface Improvements Revamped user interface for Windows Sep 8, 2023
@dkocher
Copy link
Contributor

dkocher commented Sep 8, 2023

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

@thefunkyjoint
Copy link

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
Copy link

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

@BMurri
Copy link

BMurri commented Oct 11, 2024

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
Copy link
Contributor Author

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.

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

Successfully merging a pull request may close this issue.

6 participants