fenrir-runtime 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/App/App.axaml +8 -0
  2. package/App/App.axaml.cs +23 -0
  3. package/App/FenrirLinux.csproj +27 -0
  4. package/App/LICENSE +674 -0
  5. package/App/MainWindow.axaml +10 -0
  6. package/App/MainWindow.axaml.cs +16 -0
  7. package/App/Program.cs +19 -0
  8. package/App/README.md +24 -0
  9. package/App/Views/InstallationView.axaml +48 -0
  10. package/App/Views/InstallationView.axaml.cs +204 -0
  11. package/App/Views/PasswordView.axaml +34 -0
  12. package/App/Views/PasswordView.axaml.cs +62 -0
  13. package/App/Views/WelcomeView.axaml +63 -0
  14. package/App/Views/WelcomeView.axaml.cs +22 -0
  15. package/App/app.manifest +18 -0
  16. package/App/images/screenshot1.png +0 -0
  17. package/App/images/screenshot2.png +0 -0
  18. package/App/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache +1 -0
  19. package/App/obj/Debug/net9.0/Avalonia/original.dll +0 -0
  20. package/App/obj/Debug/net9.0/Avalonia/original.pdb +0 -0
  21. package/App/obj/Debug/net9.0/Avalonia/original.ref.dll +0 -0
  22. package/App/obj/Debug/net9.0/Avalonia/references +202 -0
  23. package/App/obj/Debug/net9.0/Avalonia/resources +0 -0
  24. package/App/obj/Debug/net9.0/FenrirLi.7B98506C.Up2Date +0 -0
  25. package/App/obj/Debug/net9.0/FenrirLinux.AssemblyInfo.cs +22 -0
  26. package/App/obj/Debug/net9.0/FenrirLinux.AssemblyInfoInputs.cache +1 -0
  27. package/App/obj/Debug/net9.0/FenrirLinux.GeneratedMSBuildEditorConfig.editorconfig +35 -0
  28. package/App/obj/Debug/net9.0/FenrirLinux.assets.cache +0 -0
  29. package/App/obj/Debug/net9.0/FenrirLinux.csproj.AssemblyReference.cache +0 -0
  30. package/App/obj/Debug/net9.0/FenrirLinux.csproj.CoreCompileInputs.cache +1 -0
  31. package/App/obj/Debug/net9.0/FenrirLinux.csproj.FileListAbsolute.txt +135 -0
  32. package/App/obj/Debug/net9.0/FenrirLinux.dll +0 -0
  33. package/App/obj/Debug/net9.0/FenrirLinux.genruntimeconfig.cache +1 -0
  34. package/App/obj/Debug/net9.0/FenrirLinux.pdb +0 -0
  35. package/App/obj/Debug/net9.0/apphost +0 -0
  36. package/App/obj/Debug/net9.0/ref/FenrirLinux.dll +0 -0
  37. package/App/obj/Debug/net9.0/refint/FenrirLinux.dll +0 -0
  38. package/App/obj/FenrirLinux.csproj.nuget.dgspec.json +115 -0
  39. package/App/obj/FenrirLinux.csproj.nuget.g.props +26 -0
  40. package/App/obj/FenrirLinux.csproj.nuget.g.targets +9 -0
  41. package/App/obj/Release/net9.0/linux-x64/Avalonia/Resources.Inputs.cache +1 -0
  42. package/App/obj/Release/net9.0/linux-x64/Avalonia/original.dll +0 -0
  43. package/App/obj/Release/net9.0/linux-x64/Avalonia/original.pdb +0 -0
  44. package/App/obj/Release/net9.0/linux-x64/Avalonia/original.ref.dll +0 -0
  45. package/App/obj/Release/net9.0/linux-x64/Avalonia/references +194 -0
  46. package/App/obj/Release/net9.0/linux-x64/Avalonia/resources +0 -0
  47. package/App/obj/Release/net9.0/linux-x64/FenrirLi.7B98506C.Up2Date +0 -0
  48. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.AssemblyInfo.cs +22 -0
  49. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.AssemblyInfoInputs.cache +1 -0
  50. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.GeneratedMSBuildEditorConfig.editorconfig +39 -0
  51. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.assets.cache +0 -0
  52. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.csproj.AssemblyReference.cache +0 -0
  53. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.csproj.CoreCompileInputs.cache +1 -0
  54. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.csproj.FileListAbsolute.txt +238 -0
  55. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.deps.json +1317 -0
  56. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.dll +0 -0
  57. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.genbundle.cache +1 -0
  58. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.genpublishdeps.cache +1 -0
  59. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.genruntimeconfig.cache +1 -0
  60. package/App/obj/Release/net9.0/linux-x64/FenrirLinux.pdb +0 -0
  61. package/App/obj/Release/net9.0/linux-x64/PublishOutputs.fac9e24064.txt +4 -0
  62. package/App/obj/Release/net9.0/linux-x64/apphost +0 -0
  63. package/App/obj/Release/net9.0/linux-x64/ref/FenrirLinux.dll +0 -0
  64. package/App/obj/Release/net9.0/linux-x64/refint/FenrirLinux.dll +0 -0
  65. package/App/obj/Release/net9.0/linux-x64/singlefilehost +0 -0
  66. package/App/obj/project.assets.json +2463 -0
  67. package/App/obj/project.nuget.cache +47 -0
  68. package/LICENSE +674 -0
  69. package/Makefile +16 -0
  70. package/README.md +89 -0
  71. package/dist/archiveSystem.js +219 -0
  72. package/dist/cli.js +188 -0
  73. package/dist/packageManager.js +98 -0
  74. package/dist/parser.js +24 -0
  75. package/dist/runtime.js +99 -0
  76. package/dist/transformer.js +120 -0
  77. package/example/fenrir+aperium/aperium.json +17 -0
  78. package/example/fenrir+aperium/aperium_modules/hello-world/index.js +4 -0
  79. package/example/fenrir+aperium/aperium_modules/hello-world/module.json +6 -0
  80. package/example/fenrir+aperium/app.fnr +19 -0
  81. package/example/fenrir+aperium/package-lock.json +890 -0
  82. package/example/fenrir+aperium/package.json +17 -0
  83. package/example/fenrir.json +10 -0
  84. package/example/main.fnr +18 -0
  85. package/example/package-lock.json +867 -0
  86. package/example/package.json +17 -0
  87. package/package.json +32 -0
  88. package/src/archiveSystem.ts +264 -0
  89. package/src/cli.ts +216 -0
  90. package/src/packageManager.ts +119 -0
  91. package/src/parser.ts +36 -0
  92. package/src/runtime.ts +111 -0
  93. package/src/transformer.ts +147 -0
  94. package/tsconfig.json +15 -0
@@ -0,0 +1,10 @@
1
+ <Window xmlns="https://github.com/avaloniaui"
2
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3
+ xmlns:views="clr-namespace:FenrirLinux.Views"
4
+ x:Class="FenrirLinux.MainWindow"
5
+ Title="Fenrir Runtime Setup Wizard"
6
+ Width="600" Height="400">
7
+ <Grid>
8
+ <views:WelcomeView />
9
+ </Grid>
10
+ </Window>
@@ -0,0 +1,16 @@
1
+ using Avalonia.Controls;
2
+
3
+ namespace FenrirLinux;
4
+
5
+ public partial class MainWindow : Window
6
+ {
7
+ public MainWindow()
8
+ {
9
+ InitializeComponent();
10
+ }
11
+
12
+ public void NavigateToView(UserControl view)
13
+ {
14
+ Content = view;
15
+ }
16
+ }
package/App/Program.cs ADDED
@@ -0,0 +1,19 @@
1
+ using Avalonia;
2
+ using Avalonia.ReactiveUI;
3
+ using System;
4
+
5
+ namespace FenrirLinux;
6
+
7
+ class Program
8
+ {
9
+ [STAThread]
10
+ public static void Main(string[] args) => BuildAvaloniaApp()
11
+ .StartWithClassicDesktopLifetime(args);
12
+
13
+ public static AppBuilder BuildAvaloniaApp()
14
+ => AppBuilder.Configure<App>()
15
+ .UsePlatformDetect()
16
+ .WithInterFont()
17
+ .LogToTrace()
18
+ .UseReactiveUI();
19
+ }
package/App/README.md ADDED
@@ -0,0 +1,24 @@
1
+ ---
2
+
3
+ ## Fenrir Runtime Setup Wizard (Linux)
4
+
5
+ This is the setup wizard for the **Fenrir Runtime**, an application designed to simplify the installation of the Fenrir Runtime environment on Linux distributions.
6
+
7
+ ### Purpose
8
+
9
+ This wizard's primary function is to **automate the installation process** for Fenrir. It handles several key steps that typically require manual terminal input:
10
+
11
+ 1. **SUDO Password Handling:** It securely collects the user's `sudo` password using a graphic interface (Avalonia UI).
12
+ 2. **Repository Cloning:** It automatically clones the Fenrir source code from the official Git repository to the user's home directory.
13
+ 3. **Build Process:** It executes the necessary compilation commands, including `npm run build` and `make`, using elevated (sudo) privileges to correctly install the runtime environment.
14
+ 4. **Status Logging:** It provides real-time logs and status updates on the installation progress to the user.
15
+
16
+ **The goal is to provide a fast, easy, and reliable way to install Fenrir without relying on command-line expertise.**
17
+
18
+ ## Download the Application
19
+ Due to Github's 25mb limit, I have to provide you with the download link via Mediafire.
20
+ [Install Fenrir Runtime Installer](https://www.mediafire.com/file/elsyvsm3unhrfnj/Fenrir.zip/file)
21
+
22
+ ## Images
23
+ <img src="images/screenshot1.png">
24
+ <img src="images/screenshot2.png">
@@ -0,0 +1,48 @@
1
+ <UserControl xmlns="https://github.com/avaloniaui"
2
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3
+ x:Class="FenrirLinux.Views.InstallationView"
4
+ Background="#1e1e1e">
5
+ <Grid RowDefinitions="Auto,Auto,*,Auto" Margin="20">
6
+ <TextBlock Text="Installation in progress..."
7
+ FontSize="24" FontWeight="Bold"
8
+ HorizontalAlignment="Center"
9
+ Foreground="White"
10
+ Margin="0,0,0,20"/>
11
+
12
+ <ProgressBar Name="ProgressBar"
13
+ Grid.Row="1"
14
+ IsIndeterminate="True"
15
+ Height="10"
16
+ Margin="0,0,0,10"
17
+ Foreground="#4285F4"/>
18
+
19
+ <TextBlock Name="StatusText"
20
+ Grid.Row="1"
21
+ Text="It's starting..."
22
+ HorizontalAlignment="Center"
23
+ Foreground="White"
24
+ Margin="0,20,0,0"/>
25
+
26
+ <ScrollViewer Grid.Row="2"
27
+ VerticalScrollBarVisibility="Auto"
28
+ Background="#2b2b2b"
29
+ Margin="0,10,0,10"
30
+ BorderBrush="#444" BorderThickness="1">
31
+ <TextBlock Name="LogOutput"
32
+ Foreground="White"
33
+ FontFamily="Courier New"
34
+ Margin="10"
35
+ TextWrapping="Wrap"/>
36
+ </ScrollViewer>
37
+
38
+ <Button Content="Close"
39
+ Name="CloseButton"
40
+ Grid.Row="3"
41
+ HorizontalAlignment="Center"
42
+ Margin="0,20,0,0"
43
+ IsEnabled="False"
44
+ Foreground="White"
45
+ Background="#4285F4"
46
+ Padding="20,10"/>
47
+ </Grid>
48
+ </UserControl>
@@ -0,0 +1,204 @@
1
+ using Avalonia.Controls;
2
+ using Avalonia.Interactivity;
3
+ using System;
4
+ using System.Diagnostics;
5
+ using System.IO;
6
+ using System.Threading.Tasks;
7
+
8
+ namespace FenrirLinux.Views;
9
+
10
+ public partial class InstallationView : UserControl
11
+ {
12
+ private bool _isInstallationStarted = false;
13
+ private string? _sudoPassword;
14
+
15
+ public InstallationView()
16
+ {
17
+ InitializeComponent();
18
+ var closeButton = this.FindControl<Button>("CloseButton");
19
+ if (closeButton != null)
20
+ {
21
+ closeButton.Click += OnCloseButtonClick;
22
+ }
23
+
24
+ this.Loaded += OnLoaded;
25
+ }
26
+
27
+ private async void OnLoaded(object? sender, RoutedEventArgs e)
28
+ {
29
+ if (!_isInstallationStarted)
30
+ {
31
+ _isInstallationStarted = true;
32
+ await StartInstallationAsync();
33
+ }
34
+ }
35
+
36
+ private async Task StartInstallationAsync()
37
+ {
38
+ Log("The setup wizard is starting...");
39
+
40
+ _sudoPassword = await GetSudoPasswordAsync();
41
+ if (string.IsNullOrEmpty(_sudoPassword))
42
+ {
43
+ Log("The sudo password was not entered or the operation was canceled. Installation has been stopped.");
44
+ UpdateStatus("Error: Installation Cancelled.");
45
+ return;
46
+ }
47
+
48
+ var packageManager = GetPackageManager();
49
+ if (string.IsNullOrEmpty(packageManager))
50
+ {
51
+ Log("An unsupported Linux distribution was detected.");
52
+ UpdateStatus("Error: Unsupported distribution.");
53
+ return;
54
+ }
55
+
56
+
57
+
58
+ UpdateStatus("Cloning Git repository...");
59
+ var homeDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
60
+ var repoUrl = "https://github.com/yigitkabak/Fenrir.git";
61
+ var projectPath = Path.Combine(homeDirectory, "Fenrir");
62
+
63
+ if (Directory.Exists(projectPath))
64
+ {
65
+ Log("The project folder already exists, so it is skipped.");
66
+ }
67
+ else
68
+ {
69
+ await RunCommandAsync($"git clone {repoUrl} {projectPath}");
70
+ }
71
+
72
+ UpdateStatus("Running npm commands...");
73
+ await RunSudoCommandAsync($"cd {projectPath} && npm run build");
74
+
75
+ UpdateStatus("Running make commands...");
76
+ await RunSudoCommandAsync($"cd {projectPath} && make");
77
+
78
+ UpdateStatus("Setup completed successfully!");
79
+ Log("Setup completed successfully!");
80
+
81
+ var progressBar = this.FindControl<ProgressBar>("ProgressBar");
82
+ if (progressBar != null)
83
+ {
84
+ progressBar.IsIndeterminate = false;
85
+ progressBar.Value = 100;
86
+ }
87
+
88
+ var closeButton = this.FindControl<Button>("CloseButton");
89
+ if (closeButton != null)
90
+ {
91
+ closeButton.IsEnabled = true;
92
+ }
93
+ }
94
+
95
+ private async Task<string?> GetSudoPasswordAsync()
96
+ {
97
+ var passwordView = new PasswordView();
98
+ var passwordWindow = new Window
99
+ {
100
+ Title = "Password Required",
101
+ Content = passwordView,
102
+ Width = 350,
103
+ Height = 200,
104
+ CanResize = false
105
+ };
106
+
107
+ var passwordTask = passwordView.GetPasswordAsync();
108
+
109
+ passwordWindow.Show();
110
+ var password = await passwordTask;
111
+ passwordWindow.Close();
112
+ return password;
113
+ }
114
+
115
+ private string? GetPackageManager()
116
+ {
117
+ if (File.Exists("/etc/debian_version")) return "apt";
118
+ if (File.Exists("/etc/fedora-release")) return "dnf";
119
+ if (File.Exists("/etc/redhat-release")) return "yum";
120
+ if (File.Exists("/etc/arch-release")) return "pacman -S";
121
+ return null;
122
+ }
123
+
124
+ private void UpdateStatus(string status)
125
+ {
126
+ var statusText = this.FindControl<TextBlock>("StatusText");
127
+ if (statusText != null)
128
+ {
129
+ statusText.Text = status;
130
+ }
131
+ }
132
+
133
+ private void Log(string message)
134
+ {
135
+ var logBox = this.FindControl<TextBlock>("LogOutput");
136
+ if (logBox != null)
137
+ {
138
+ logBox.Text += $"{message}\n";
139
+ ((ScrollViewer?)logBox.Parent)?.InvalidateVisual();
140
+ }
141
+ }
142
+
143
+ private async Task RunCommandAsync(string command)
144
+ {
145
+ Log($"Command is running: {command}");
146
+ await ExecuteProcessAsync("/bin/bash", $"-c \"{command}\"");
147
+ }
148
+
149
+ private async Task RunSudoCommandAsync(string command)
150
+ {
151
+ Log($"The sudo command is being executed.: {command}");
152
+
153
+ await ExecuteProcessAsync("/bin/bash", $"-c \"echo {_sudoPassword} | sudo -S bash -c \\\"{command}\\\"\"");
154
+ }
155
+
156
+ private async Task ExecuteProcessAsync(string fileName, string arguments)
157
+ {
158
+ var process = new Process
159
+ {
160
+ StartInfo = new ProcessStartInfo
161
+ {
162
+ FileName = fileName,
163
+ Arguments = arguments,
164
+ RedirectStandardOutput = true,
165
+ RedirectStandardError = true,
166
+ UseShellExecute = false,
167
+ CreateNoWindow = true
168
+ }
169
+ };
170
+
171
+ process.Start();
172
+
173
+ var outputReader = process.StandardOutput;
174
+ var errorReader = process.StandardError;
175
+
176
+ var outputTask = Task.Run(() =>
177
+ {
178
+ string? line;
179
+ while ((line = outputReader.ReadLine()) != null)
180
+ {
181
+ Avalonia.Threading.Dispatcher.UIThread.InvokeAsync(() => Log(line));
182
+ }
183
+ });
184
+
185
+ var errorTask = Task.Run(() =>
186
+ {
187
+ string? line;
188
+ while ((line = errorReader.ReadLine()) != null)
189
+ {
190
+ Avalonia.Threading.Dispatcher.UIThread.InvokeAsync(() => Log($"ERROR: {line}"));
191
+ }
192
+ });
193
+
194
+ await Task.WhenAll(outputTask, errorTask);
195
+ await process.WaitForExitAsync();
196
+ Log($"Command completed. Exit Code: {process.ExitCode}");
197
+ }
198
+
199
+ private void OnCloseButtonClick(object? sender, RoutedEventArgs e)
200
+ {
201
+ var window = (Window?)this.VisualRoot;
202
+ window?.Close();
203
+ }
204
+ }
@@ -0,0 +1,34 @@
1
+ <UserControl xmlns="https://github.com/avaloniaui"
2
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3
+ x:Class="FenrirLinux.Views.PasswordView"
4
+ Width="350" Height="200"
5
+ Background="#1e1e1e">
6
+ <Grid RowDefinitions="*,Auto,Auto,*" Margin="20">
7
+ <TextBlock Grid.Row="1"
8
+ Text="Enter your sudo password:"
9
+ FontSize="18"
10
+ FontWeight="Bold"
11
+ Foreground="White"
12
+ HorizontalAlignment="Center"
13
+ Margin="0,0,0,10"/>
14
+
15
+ <TextBox Name="PasswordTextBox"
16
+ Grid.Row="2"
17
+ Watermark="password"
18
+ PasswordChar="*"
19
+ Width="250"
20
+ HorizontalAlignment="Center"
21
+ Margin="0,0,0,20"/>
22
+
23
+ <StackPanel Grid.Row="3"
24
+ Orientation="Horizontal"
25
+ HorizontalAlignment="Center"
26
+ Margin="0,10,0,0">
27
+ <Button Content="Confirm"
28
+ Name="ConfirmButton"
29
+ Margin="0,0,10,0"/>
30
+ <Button Content="Cancel"
31
+ Name="CancelButton"/>
32
+ </StackPanel>
33
+ </Grid>
34
+ </UserControl>
@@ -0,0 +1,62 @@
1
+ using Avalonia.Controls;
2
+ using Avalonia.Input;
3
+ using Avalonia.Interactivity;
4
+ using System.Threading.Tasks;
5
+
6
+ namespace FenrirLinux.Views;
7
+
8
+ public partial class PasswordView : UserControl
9
+ {
10
+ private TaskCompletionSource<string?> _tcs = new TaskCompletionSource<string?>();
11
+
12
+ public PasswordView()
13
+ {
14
+ InitializeComponent();
15
+
16
+ var confirmButton = this.FindControl<Button>("ConfirmButton");
17
+ var cancelButton = this.FindControl<Button>("CancelButton");
18
+ var passwordTextBox = this.FindControl<TextBox>("PasswordTextBox");
19
+
20
+ confirmButton!.Click += OnConfirmClick;
21
+ cancelButton!.Click += OnCancelClick;
22
+
23
+ passwordTextBox!.KeyDown += OnPasswordTextBoxKeyDown;
24
+ }
25
+
26
+ public Task<string?> GetPasswordAsync()
27
+ {
28
+ return _tcs.Task;
29
+ }
30
+
31
+ private void OnPasswordTextBoxKeyDown(object? sender, KeyEventArgs e)
32
+ {
33
+ if (e.Key == Key.Enter)
34
+ {
35
+ OnConfirmClick(sender, e);
36
+ e.Handled = true;
37
+ }
38
+ }
39
+
40
+ private void OnConfirmClick(object? sender, RoutedEventArgs e)
41
+ {
42
+ var passwordBox = this.FindControl<TextBox>("PasswordTextBox");
43
+ try
44
+ {
45
+ _tcs.SetResult(passwordBox?.Text);
46
+ }
47
+ catch (System.InvalidOperationException)
48
+ {
49
+ }
50
+ }
51
+
52
+ private void OnCancelClick(object? sender, RoutedEventArgs e)
53
+ {
54
+ try
55
+ {
56
+ _tcs.SetResult(null);
57
+ }
58
+ catch (System.InvalidOperationException)
59
+ {
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,63 @@
1
+ <UserControl xmlns="https://github.com/avaloniaui"
2
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3
+ x:Class="FenrirLinux.Views.WelcomeView"
4
+ Background="#2E2E2E">
5
+
6
+ <UserControl.Styles>
7
+ <Style Selector="Button.accent">
8
+ <Setter Property="Background" Value="#3584E4" />
9
+ <Setter Property="Foreground" Value="White" />
10
+ <Setter Property="FontSize" Value="16" />
11
+ <Setter Property="FontWeight" Value="SemiBold" />
12
+ <Setter Property="Padding" Value="20,12" />
13
+ <Setter Property="CornerRadius" Value="20" />
14
+ <Setter Property="HorizontalAlignment" Value="Center" />
15
+ <Setter Property="BorderThickness" Value="0" />
16
+ <Setter Property="Cursor" Value="Hand" />
17
+ <Setter Property="Transitions">
18
+ <Transitions>
19
+ <BrushTransition Property="Background" Duration="0.2" Easing="CubicEaseOut"/>
20
+ </Transitions>
21
+ </Setter>
22
+ </Style>
23
+
24
+ <Style Selector="Button.accent:pointerover">
25
+ <Setter Property="Background" Value="#4A90E2" />
26
+ </Style>
27
+
28
+ <Style Selector="Button.accent:pressed">
29
+ <Setter Property="Background" Value="#2A73C8" />
30
+ </Style>
31
+ </UserControl.Styles>
32
+
33
+ <StackPanel HorizontalAlignment="Center"
34
+ VerticalAlignment="Center"
35
+ Spacing="25"
36
+ MaxWidth="500">
37
+
38
+ <PathIcon Data="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z"
39
+ Width="64"
40
+ Height="64"
41
+ Foreground="#3584E4"
42
+ HorizontalAlignment="Center"/>
43
+
44
+ <TextBlock Text="Welcome to the Setup Wizard"
45
+ FontSize="32"
46
+ FontWeight="Bold"
47
+ TextAlignment="Center"
48
+ Foreground="White"/>
49
+
50
+ <TextBlock Text="This wizard will help you install the Fenrir Runtime on your system quickly and easily."
51
+ TextWrapping="Wrap"
52
+ TextAlignment="Center"
53
+ FontSize="16"
54
+ Foreground="#CFCFCF"
55
+ Margin="10,0"/>
56
+
57
+ <Button Content="Start Setup"
58
+ Name="NextButton"
59
+ Classes="accent"
60
+ Margin="0,20,0,0"/>
61
+
62
+ </StackPanel>
63
+ </UserControl>
@@ -0,0 +1,22 @@
1
+ using Avalonia.Controls;
2
+ using Avalonia.Interactivity;
3
+
4
+ namespace FenrirLinux.Views;
5
+
6
+ public partial class WelcomeView : UserControl
7
+ {
8
+ public WelcomeView()
9
+ {
10
+ InitializeComponent();
11
+ this.FindControl<Button>("NextButton").Click += OnNextButtonClick;
12
+ }
13
+
14
+ private void OnNextButtonClick(object? sender, RoutedEventArgs e)
15
+ {
16
+ var mainWindow = (Window)this.VisualRoot;
17
+ if (mainWindow is MainWindow window)
18
+ {
19
+ window.NavigateToView(new InstallationView());
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
3
+ <!-- This manifest is used on Windows only.
4
+ Don't remove it as it might cause problems with window transparency and embedded controls.
5
+ For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
6
+ <assemblyIdentity version="1.0.0.0" name="FenrirLinux.Desktop"/>
7
+
8
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
9
+ <application>
10
+ <!-- A list of the Windows versions that this application has been tested on
11
+ and is designed to work with. Uncomment the appropriate elements
12
+ and Windows will automatically select the most compatible environment. -->
13
+
14
+ <!-- Windows 10 -->
15
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
16
+ </application>
17
+ </compatibility>
18
+ </assembly>
Binary file
Binary file
@@ -0,0 +1 @@
1
+ b72c61317eeb155711df0c897d354f3a706a798f74aef276044a6a2e20055d95