So I've done a bunch of application development in windows in C# and Java, and while Java stuff is pretty similar in Linux with Swing I'm not as confident in C# there (not too familiar with Mono), but I also want to diversify a bit too. Any recommendations?
If u wanna go with c# then use something like gtk# or cross platform gui lib like Avalonia
JetBrains Rider is probably the best C# IDE for Linux, and MS ported .NET server stuff a while ago.
I’m not sure about C# GUI toolkits on Linux. WPF isn’t there, and I’m not sure how mature Maui is on Linux.
Yeah outside of Java I'm wondering if I might have to start learning some OpenGL/Vulkan stuff for graphics.
If it makes sense for your software, please consider giving it a web interface and turning it into a localhost-only web-service.
Good separation between business logic and UI without effort, cross-platform UI in any language, possibility to turn it into a web-accessible service in the future, great choice of UI frameworks and battle-tested components if you decide to go for a web framework and language.
As an example of a successful software that followed this approach: Synchthing. All versions run a local web service in the background. The Desktop version just opens a browser on the index page. The Android version is a native app that calls the exposed REST API on localhost, bypassing the web UI.
As an example of a much more complex software, albeit not FOSS: EasyEDA. It's a web software, but it also comes as a desktop app (which I never tried) which I assume is not much more than a frame for the web view.
My recommendation: write the UI with React on Vite in TypeScript, and write the business logic in your general purpose language of choice (mine would usually be C#).