using System; using System.Globalization; using System.Linq; using System.Threading; using Avalonia; namespace Semi.Avalonia.Demo.Drm; class Program { // Initialization code. Don't use any Avalonia, third-party APIs or any // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. [STAThread] public static int Main(string[] args) { var builder = BuildAvaloniaApp(); double GetScaling() { var idx = Array.IndexOf(args, "--scaling"); if (idx != 0 && args.Length > idx + 1 && double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling)) return scaling; return 1; } if (args.Contains("--drm")) { SilenceConsole(); return builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: GetScaling()); } return builder.StartWithClassicDesktopLifetime(args); } // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UsePlatformDetect() .LogToTrace(); private static void SilenceConsole() { new Thread(() => { Console.CursorVisible = false; while (true) Console.ReadKey(true); }) { IsBackground = true }.Start(); } }