Hi, I’ve been updating EVEMon lately, and I don’t really come to the forums that much, but I just saw this thread and a number of you are still having issues with 4.0.20 – please update to 4.1.3, which contains the needed fixes for your issues.
Is there a convenient way to install and run EveMon on a Mac or in Linux?
(If there’s no convenient way, I would also accept an “inconvenient” way if the instructions are clear enough!)
Windows 10 VM in KVM or VirtualBox or something in a seamless integration mode.
EveMon isn’t runable on Wine Mono currently. .net is a failure of not being runable everywhere, the very thing .Net was sold as and EveMon developers (EveMon always keeps getting abandoned by developers who fork it) only care about Windows which doesn’t help either. Opening non Windows bugs on it just gets blackholed.
A Go port with Qt or wxWidget bindings would be nice.
Write once, compile everywhere always beats compile once, run everywhere.
One of the root causes is the usage of HttpListener, which is dependent on HTTP.sys, which wine doesn’t implement fully. There have been some ideas for how to approach removing HttpListener, but its a fairly large amount of effort, which is why it hasn’t been tackled. PRs to fix linux support are welcome.
Ideally I’d like to make EVEMon run outside of wine using .net natively, but there are only so many hours in a day, and I like to play the game too
That’s the problem, Microsoft promised compile once run everywhere and only supported the Windows runtime for anything useful and their renewed focus on .net core for Linux is basiclly for Azure so I wouldn’t expect any fancy desktop support there either, just basic server support. As for Java, that’s being killed pretty well by Oracle themselves (Android moved to Kotlin more).
It doesn’t (shouldn’t) need Wine, just a Mono runtime to run (Wine installs Mono).
Battling to get .Net stuff working on Linux is not a priority for me as Linux developer when now we have better offerings that work cross platform better. If you want to be stuck in Windowsland, then sure .Net is great, to go further than that, it’s a problem.
I would prefer to cleanroom this in something like Go and Qt if I was to have it native, I prefer write once compile everywhere. Sure it’s a bigger effort, but in the long game, it’s worth it. And to boot, you will gain far better concurreny scaling and implementation via goroutines (based on C.A.R Hoare’s CSP). It also just got Parametric Polymorphism (generics) added in release 1.18.
To eliminate the HttpListener problem, CCP would need to offer an alternative to OAuth2 redirect flows, they could adopt GNAP (alongside OAuth2) or alternatively allow an API key or device authorization mode perhaps for OAuth2 (that uses HTTP polling rather than redirect listening).
There is a managed version of HttpListener, but that requires .net 6.0. There has been some work done on this front, but there is still quite a bit to do, especially with regards to some of the older libaries used for various features.
Yes, that would be the relevant wine issue.
As I said, the HttpListener problem can also be dealt with by using a something written in fully managed code instead of requiring a call to the native http.sys library. One in theory could use a TcpListener instead, but there then needs to be some boilerplate written to parse the HTTP stuff involved.
Porting to another language and ui toolkit is not something thats going to happen overnight simply by virtue of the amount of stuff that would need to be ported. I’d prefer to focus the conversation around what we can do to make things work on linux in the near term rather than something extremely long term like porting.
This would require the SSO api to support that, which I don’t believe it does. This is the ESI documentation on how to do SSO for native applications – OAuth 2.0 for Mobile or Desktop Applications | esi-docs. Pyfa (written in python) also uses this same flow with a listener to receive the authorization – the difference is python’s http code does not require windows native code to run
An alternative option could be to write up a little proxy server in a language such as Go that you could talk to from EveMon, and let the proxy server proxy the OAuth2 redirect via a socket. That would be simplier and quicker than reimplementing a full HttpListener. You just launch the proxy when doing a character SSO then shut it down after completion. That way you can use the existing OAuth2 application grant flow.
I would seriously consider option 2 as a stop gap before the migration to .Net 6+ and other larger gutting (UI framework for example). That way you will have it up and running on Linux and Mac. You could do that proxy either for all platforms or just for Linux and Mac as experimental. It looks like a major refactoring of the app is necessary anyway for future proofing. This proxy solution would still continue to work with a .Net 6 migration so it can last longer if need be.
While I understand you may not like .NET, the reality of the situation is that it is what EVEMon is built upon, and constantly complaining about it is not constructive. You also are also welcome to help contribute with pull requests to improve Linux support.
I am aware of the 4.6.1 deprecation, and it is one of the reasons why I have been working on .net 6 support. As a stopgap, EVEMon will likely be upgraded next week to 4.6.2 which remains in support.
“.Net Framework is dead.” and " The end of .Net Framework is near (thankfully)." are not constructive comments when discussing a nearly decade old tool written on that platform, nor is bringing up Go.
If you want to help, make pull requests – There is plenty of stuff to do.
Pretty sure a small Go proxy listener can be up in a day. It will forward the OAuth2 response to the EveMon (my suggestion for option 2). You can do it in any language, not just Go, it would get Http.sys out of the picture and it working on Linux / MacOS in no time.
You even claim MAUI is “proper Linux support” when Microsoft state VERY clearly they have no intention to support Linux on MAUI.
Not sure how you see “proper Linux support” from all that. I certinally would be interested to read about it because everybody else is using Avalonia or Uno to get Linux support on .Net.
WinForms is a continual headache for running natively on multiple platforms, which is why MAUI came up in that discussion at all. I’m happy to be wrong about it though, but a new UI toolkit would be needed, which is not really something I am interested in tackling in the near term. Let’s take the technical discussions to github – its a better platform for this sort of stuff.