using System; using System.Diagnostics; using System.Linq; using System.Threading; using Avalonia; using Avalonia.Controls; using Avalonia.LinuxFramebuffer.Output; using Avalonia.Skia; using Avalonia.ReactiveUI; namespace ControlCatalog.NetCore { static class Program { static int Main(string[] args) { Thread.CurrentThread.TrySetApartmentState(ApartmentState.STA); if (args.Contains("--wait-for-attach")) { Console.WriteLine("Attach debugger and use 'Set next statement'"); while (true) { Thread.Sleep(100); if (Debugger.IsAttached) break; } } var builder = BuildAvaloniaApp(); if (args.Contains("--fbdev")) { SilenceConsole(); return builder.StartLinuxFbDev(args); } else if (args.Contains("--drm")) { SilenceConsole(); return builder.StartLinuxDrm(args); } else return builder.StartWithClassicDesktopLifetime(args); } /// /// This method is needed for IDE previewer infrastructure /// public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UsePlatformDetect() .With(new X11PlatformOptions {EnableMultiTouch = true}) .With(new Win32PlatformOptions { EnableMultitouch = true, AllowEglInitialization = true }) .UseSkia() .UseReactiveUI(); static void SilenceConsole() { new Thread(() => { Console.CursorVisible = false; while (true) Console.ReadKey(true); }) {IsBackground = true}.Start(); } } }