Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Also, can I develop and use C# applications on Linux without feeling like a second-class citizen?

I don't have much experience with C# development and basically none with .NET, but so far my experience has been a clear No.

The elephant in the room is the IDE. Visual Studio is the C# IDE and doesn't exist on Linux. There's MonoDevelop, which is now also owned by Microsoft and seems to share some components with Visual Studio, but it's still not nearly as powerful of an IDE. It feels more like a clunky text editor with a button that will make your program run.

Next thing is that I don't think, you can really develop GUIs on Linux. There seems to be some integration with GTK in MonoDevelop, but I sort of doubt that this works well, and my experience in Visual Studio has been that you practically cannot develop GUIs in C# without using Visual Studio, as so much of the design process is directly integrated into that. Also, developing a GUI application on Linux that will run on Windows, I don't think is possible at all, though I haven't spent much time researching that.

Last point that I have is sort of just a dumb bug, but it felt the most like I'm a second-class citizen. MonoDevelop does not currently support executing console applications on an external console on Linux when you install it via Flatpak (which is their primary distribution method).

But that by itself is not even the problem, it works fine with the internal console and I can live with that. The problem is that there's a checkbox to enable running on an external console and that checkbox is enabled by default. You cannot run console applications on MonoDevelop out of the box, solely because of this.

And console applications seem to be the main-thing that MonoDevelop is good for, so you'd think they would test that and ensure that it works, but apparently not. And really, just disabling this checkbox by default would fix the issue.

What makes this issue worse:

1. The error message is entirely cryptic, it says "Debugger operation failed - Cannot start process because a file name has not been provided.". Thankfully, the internet coughs something up quickly when you copy-paste that into a search engine, but at least I personally first thought I had forgot to give it a file name somewhere and tried to find that.

2. This isn't just one flag in the global settings that you have to flip once and you're done. Instead it's a per project setting, so you have to flip it every time that you start a new project and it's not particularly easy to find either.

3. This has been a known issue for a while (or at least, I hope that they know about it).



> the IDE

https://code.visualstudio.com/Download

> I don't think, you can really develop GUIs on Linux.

I can. E.g. recently I’ve picked GLES + NanoVG for the lower level of the stack, and implemented the upper levels (controls, touch input, transitions, etc.) in C#.

There’re higher-level approaches, including a couple of cross-platform ones (Gtk#, Avalonia, electron-based), I’ve picked lower-level stack because I needed to replace the whole Debian desktop including its desktop manager.


Or, if you’re willing to pay for something closer to VS:

https://www.jetbrains.com/rider/


That's interesting. Is the code/result public in any way?


The project’s proprietary, but it was straightforward.

I’ve created a C++ *.so library that uses DRM/KMS to initialize GLES on top of hardware GPU, and exposes NanoVG’s C API. Then in C# [DllImport], and actual GUI implementation. For touch input I just read /dev/input/event0 using FileStream API.

I’ve spent about a week implementing that thing, so it’s not that hard to do.

The main downside is the lack of ClearType. On the lower level FreeType library supports that, but NanoVG doesn’t.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: