I think you might be overthinking what’s required
In the project for Windows, you have a Program.cs. This is your entry point. Inside that, there is likely a line that reads something along the lines of…
Game game = new Game();
Or whatever the Game class in your project got renamed to. Step 1 is to just create a new, empty Linux project. This will also have a Program.cs in it. Delete the Game class that’s in the new project and reference the Windows project. Try instantiating and running that from the Linux Program.cs.
Unless they did anything crazy, that might actually work. You’ll have to test. If it doesn’t, and it turns out some code was used on Windows that isn’t compatible with Windows, you’ll have to find some means of solving that.
(ie, the approaches I mentioned above)
This is based on my work with Android/Windows. I don’t have access to a Linux machine, but I’d imagine it’s pretty much the same, just a bit easier. On Android, you don’t have a mouse, so I had to write an input class implementation, as well as something to handle Android File IO and Screen Resolutions. It’s also not that hard to do, so even if you have to do some OS specific implementation, it’s pretty straight forward! It just might require a bit of refactoring if you decide you really want a Linux port.