I looked all over and couldn't find any way to do it in Linux using cross-desktop/SDL, so I'm settling for this solution:
AppDomain.CurrentDomain.ProcessExit += OnCloseButton;
And then the OnCloseButton event says: " Save on exit? "
So, at least you can save as you exit, but unfortunately you can't cancel the close. I suppose I could make it borderless and add a fake X close and some fake window resize controls to simulate how it should be, but this should be good enough. ;p
(I'm not sure if being able to get the correct handle from SDL would help either since I tried getting it from the process and the Form.FromHandle still results in a null - probably cuz it's not using Form to create a window in Linux SDL)