Monorepo for Aesthetic.Computer
aesthetic.computer
1using Microsoft.UI.Xaml;
2using Microsoft.UI.Xaml.Input;
3using System;
4using Windows.Gaming.Input;
5using Windows.System;
6
7namespace AestheticComputer;
8
9public sealed partial class MainWindow : Window
10{
11 private Gamepad? _gamepad;
12
13 public MainWindow()
14 {
15 this.InitializeComponent();
16
17 // Make window fullscreen on Xbox
18 var appWindow = this.AppWindow;
19 appWindow.SetPresenter(Microsoft.UI.Windowing.AppWindowPresenterKind.FullScreen);
20
21 // Initialize WebView2
22 InitializeWebView();
23
24 // Setup gamepad handling
25 SetupGamepad();
26 }
27
28 private async void InitializeWebView()
29 {
30 try
31 {
32 await webView.EnsureCoreWebView2Async();
33
34 // Configure WebView2 for optimal Xbox experience
35 var settings = webView.CoreWebView2.Settings;
36 settings.IsZoomControlEnabled = false;
37 settings.AreDefaultContextMenusEnabled = false;
38 settings.IsStatusBarEnabled = false;
39 settings.AreBrowserAcceleratorKeysEnabled = false;
40
41 // Inject Xbox-specific info
42 await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(@"
43 window.isXboxApp = true;
44 window.isDeviceMode = true;
45 console.log('🎮 Aesthetic Computer Xbox App');
46 ");
47
48 // Handle navigation errors
49 webView.CoreWebView2.NavigationCompleted += (sender, args) =>
50 {
51 if (!args.IsSuccess)
52 {
53 // Show offline message or retry
54 webView.CoreWebView2.NavigateToString(@"
55 <html>
56 <body style='background:#6600FF;color:white;font-family:sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;'>
57 <div style='text-align:center;'>
58 <h1>📡 Connecting...</h1>
59 <p>Please check your internet connection</p>
60 <button onclick='location.reload()' style='padding:20px 40px;font-size:24px;cursor:pointer;'>Retry</button>
61 </div>
62 </body>
63 </html>
64 ");
65 }
66 };
67 }
68 catch (Exception ex)
69 {
70 System.Diagnostics.Debug.WriteLine($"WebView2 init failed: {ex.Message}");
71 }
72 }
73
74 private void SetupGamepad()
75 {
76 // Watch for gamepad connections
77 Gamepad.GamepadAdded += (sender, gamepad) =>
78 {
79 _gamepad = gamepad;
80 };
81
82 Gamepad.GamepadRemoved += (sender, gamepad) =>
83 {
84 if (_gamepad == gamepad)
85 _gamepad = null;
86 };
87
88 // Check for already connected gamepads
89 if (Gamepad.Gamepads.Count > 0)
90 {
91 _gamepad = Gamepad.Gamepads[0];
92 }
93 }
94
95 // Handle keyboard/gamepad navigation
96 private void OnKeyDown(object sender, KeyRoutedEventArgs e)
97 {
98 // Map Xbox controller buttons to web events
99 switch (e.Key)
100 {
101 case VirtualKey.GamepadMenu:
102 case VirtualKey.Escape:
103 // Could show an overlay menu
104 break;
105 case VirtualKey.GamepadView:
106 // Toggle fullscreen or info
107 break;
108 }
109 }
110}