From b1c253648679eb314f0c4f60664c52028816dbdb Mon Sep 17 00:00:00 2001 From: Leonmmcoset Date: Thu, 5 Feb 2026 20:26:36 +0800 Subject: [PATCH] alias --- CMLeonOS.csproj | 5 + Wallpapers/wallpaper.bmp | Bin 0 -> 3981366 bytes shell/CommandList.cs | 6 + shell/Commands/Help/Help.cs | 3 + shell/Commands/TestGuiCommand.cs | 83 +++++++++---- shell/Commands/Utility/AliasCommand.cs | 158 +++++++++++++++++++++++++ shell/Shell.cs | 103 +++++++++++++++- 7 files changed, 336 insertions(+), 22 deletions(-) create mode 100644 Wallpapers/wallpaper.bmp create mode 100644 shell/Commands/Utility/AliasCommand.cs diff --git a/CMLeonOS.csproj b/CMLeonOS.csproj index 9fbd48c..1f48f88 100644 --- a/CMLeonOS.csproj +++ b/CMLeonOS.csproj @@ -27,8 +27,13 @@ true None 1 + 800x600x32 + + + + all diff --git a/Wallpapers/wallpaper.bmp b/Wallpapers/wallpaper.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6458b672a5270959369e4d2c59ab2260b5d89af4 GIT binary patch literal 3981366 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 zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Rja6UpsUx00000Fv#C}5<3ea0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 TV8DO@0|pEjFkrxd0Rz`Sk_cI! literal 0 HcmV?d00001 diff --git a/shell/CommandList.cs b/shell/CommandList.cs index 0d6dea6..d70dd1d 100644 --- a/shell/CommandList.cs +++ b/shell/CommandList.cs @@ -187,6 +187,12 @@ namespace CMLeonOS.shell case "testgui": shell.ProcessTestGui(); break; + case "alias": + shell.ProcessAlias(args); + break; + case "unalias": + shell.ProcessUnalias(args); + break; default: shell.ShowError($"Unknown command: {command}"); break; diff --git a/shell/Commands/Help/Help.cs b/shell/Commands/Help/Help.cs index 00313fa..22af828 100644 --- a/shell/Commands/Help/Help.cs +++ b/shell/Commands/Help/Help.cs @@ -66,6 +66,9 @@ namespace CMLeonOS.Commands " whoami - Show current username", " base64 encrypt - Encode text to Base64", " base64 decrypt - Decode Base64 to text", + " alias - Create command alias", + " alias - List all aliases", + " unalias - Remove command alias", " lua - Execute Lua script", " version - Show OS version", " about - Show about information", diff --git a/shell/Commands/TestGuiCommand.cs b/shell/Commands/TestGuiCommand.cs index 65f2be9..6fff355 100644 --- a/shell/Commands/TestGuiCommand.cs +++ b/shell/Commands/TestGuiCommand.cs @@ -1,43 +1,84 @@ using System; +using System.Collections.Generic; +using System.Text; using Sys = Cosmos.System; +using System.Drawing; using Cosmos.System.Graphics; +using Microsoft.VisualBasic; +using Cosmos.System.Graphics.Fonts; +using Cosmos.System; +using Cosmos.HAL; +using Cosmos.System.FileSystem.VFS; +using Cosmos.System.FileSystem; +using System.IO; namespace CMLeonOS.Commands { public static class TestGuiCommand { + public static Canvas Screen; + public static Bitmap Wallpaper; + public static Mode display; + + public static void DrawCursor() + { + if ((int)MouseManager.X >= 0 && (int)MouseManager.Y >= 0 && (int)MouseManager.X < Screen.Mode.Width && (int)MouseManager.Y < Screen.Mode.Height) + { + MouseManager.ScreenWidth = Screen.Mode.Width; + MouseManager.ScreenHeight = Screen.Mode.Height; + Screen.DrawFilledCircle(Color.FromArgb(75, 255, 255, 255), (int)MouseManager.X, (int)MouseManager.Y, 10); + } + } + + public static void DrawBackground() + { + Screen.Clear(Color.Indigo); + } + public static void RunTestGui() { - Canvas canvas; - - Console.WriteLine("Cosmos booted successfully. Let's go in Graphical Mode"); - - canvas = FullScreenCanvas.GetFullScreenCanvas(new Mode(640, 480, ColorDepth.ColorDepth32)); - - canvas.Clear(global::System.Drawing.Color.FromArgb(0, 0, 255)); - try { - canvas.DrawPoint(global::System.Drawing.Color.FromArgb(255, 0, 0), 69, 69); + display = new Mode(1024, 768, ColorDepth.ColorDepth24); + Screen = FullScreenCanvas.GetFullScreenCanvas(display); - canvas.DrawLine(global::System.Drawing.Color.FromArgb(173, 255, 47), 250, 100, 400, 100); + try + { + if (File.Exists(@"0:\system\wallpaper.bmp")) + { + Wallpaper = new Bitmap(File.ReadAllBytes(@"0:\system\wallpaper.bmp")); + } + else + { + Wallpaper = null; + } + } + catch + { + Wallpaper = null; + } - canvas.DrawLine(global::System.Drawing.Color.FromArgb(205, 92, 92), 350, 150, 350, 250); + global::System.Console.WriteLine("Starting graphical mode..."); + global::System.Console.WriteLine("Press ESC to return to shell."); - canvas.DrawLine(global::System.Drawing.Color.FromArgb(245, 245, 220), 250, 150, 400, 250); + while (true) + { + Screen.Clear(); + DrawBackground(); + Screen.DrawString(DateTime.Now.ToString("H:mm") + ", Screen:" + Screen.Mode.Width + "x" + Screen.Mode.Height, PCScreenFont.Default, Color.White, 15, 10); + DrawCursor(); + Screen.Display(); - canvas.DrawRectangle(global::System.Drawing.Color.FromArgb(219, 112, 147), 350, 350, 80, 60); - - canvas.DrawRectangle(global::System.Drawing.Color.FromArgb(50, 205, 50), 450, 450, 80, 60); - - canvas.Display(); - - Console.WriteLine("Press any key to return to shell..."); - Console.ReadKey(true); + var key = global::System.Console.ReadKey(true); + if (key.Key == ConsoleKey.Escape) + { + break; + } + } } catch (Exception e) { - Console.WriteLine("Exception occurred: " + e.Message); + global::System.Console.WriteLine("Exception occurred: " + e.Message); } } } diff --git a/shell/Commands/Utility/AliasCommand.cs b/shell/Commands/Utility/AliasCommand.cs new file mode 100644 index 0000000..2a1e87b --- /dev/null +++ b/shell/Commands/Utility/AliasCommand.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace CMLeonOS.Commands +{ + public static class AliasCommand + { + private static string aliasFilePath = @"0:\system\alias.dat"; + private static Dictionary aliases = new Dictionary(); + + public static void LoadAliases() + { + aliases.Clear(); + + try + { + if (File.Exists(aliasFilePath)) + { + string[] lines = File.ReadAllLines(aliasFilePath); + foreach (string line in lines) + { + if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("#")) + { + int separatorIndex = line.IndexOf('='); + if (separatorIndex > 0) + { + string name = line.Substring(0, separatorIndex).Trim(); + string value = line.Substring(separatorIndex + 1).Trim(); + aliases[name] = value; + } + } + } + } + } + catch (Exception e) + { + Console.WriteLine($"Error loading aliases: {e.Message}"); + } + } + + public static void SaveAliases() + { + try + { + Directory.CreateDirectory(Path.GetDirectoryName(aliasFilePath)); + + using (StreamWriter writer = new StreamWriter(aliasFilePath)) + { + writer.WriteLine("# CMLeonOS Alias Configuration"); + writer.WriteLine("# Format: alias_name=command"); + writer.WriteLine(); + + var keys = new List(aliases.Keys); + + for (int i = 0; i < keys.Count - 1; i++) + { + for (int j = i + 1; j < keys.Count; j++) + { + if (string.Compare(keys[i], keys[j]) > 0) + { + string temp = keys[i]; + keys[i] = keys[j]; + keys[j] = temp; + } + } + } + + foreach (string key in keys) + { + writer.WriteLine($"{key}={aliases[key]}"); + } + } + } + catch (Exception e) + { + Console.WriteLine($"Error saving aliases: {e.Message}"); + } + } + + public static void AddAlias(string name, string command) + { + if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(command)) + { + Console.WriteLine("Error: Alias name and command cannot be empty"); + return; + } + + aliases[name] = command; + SaveAliases(); + Console.WriteLine($"Alias '{name}' added successfully"); + } + + public static void RemoveAlias(string name) + { + if (aliases.Remove(name)) + { + SaveAliases(); + Console.WriteLine($"Alias '{name}' removed successfully"); + } + else + { + Console.WriteLine($"Error: Alias '{name}' not found"); + } + } + + public static void ListAliases() + { + if (aliases.Count == 0) + { + Console.WriteLine("No aliases defined"); + return; + } + + Console.WriteLine("Defined aliases:"); + var keys = new List(aliases.Keys); + + for (int i = 0; i < keys.Count - 1; i++) + { + for (int j = i + 1; j < keys.Count; j++) + { + if (string.Compare(keys[i], keys[j]) > 0) + { + string temp = keys[i]; + keys[i] = keys[j]; + keys[j] = temp; + } + } + } + + foreach (string key in keys) + { + Console.WriteLine($" {key} => {aliases[key]}"); + } + } + + public static string GetAlias(string name) + { + if (aliases.TryGetValue(name, out string value)) + { + return value; + } + return null; + } + + public static bool AliasExists(string name) + { + return aliases.ContainsKey(name); + } + + public static void ClearAliases() + { + aliases.Clear(); + SaveAliases(); + Console.WriteLine("All aliases cleared"); + } + } +} diff --git a/shell/Shell.cs b/shell/Shell.cs index 5e3924a..26f1a1d 100644 --- a/shell/Shell.cs +++ b/shell/Shell.cs @@ -57,6 +57,8 @@ namespace CMLeonOS fileSystem = new FileSystem(); fixMode = Kernel.FixMode; envManager = EnvironmentVariableManager.Instance; + + Commands.AliasCommand.LoadAliases(); } public void Run() @@ -110,7 +112,28 @@ namespace CMLeonOS private void ProcessCommand(string command, string args) { - shell.CommandList.ProcessCommand(this, command, args); + string expandedCommand = command; + string expandedArgs = args; + + string aliasValue = Commands.AliasCommand.GetAlias(command); + if (aliasValue != null) + { + var aliasParts = aliasValue.Split(new char[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); + if (aliasParts.Length > 0) + { + expandedCommand = aliasParts[0]; + if (aliasParts.Length > 1) + { + expandedArgs = aliasParts[1] + (string.IsNullOrEmpty(args) ? "" : " " + args); + } + else + { + expandedArgs = args; + } + } + } + + shell.CommandList.ProcessCommand(this, expandedCommand, expandedArgs); } public void ProcessEcho(string args) @@ -1221,6 +1244,84 @@ namespace CMLeonOS Commands.TestGuiCommand.RunTestGui(); } + public void ProcessAlias(string args) + { + if (string.IsNullOrWhiteSpace(args)) + { + Commands.AliasCommand.ListAliases(); + } + else + { + string name = ""; + string command = ""; + + int i = 0; + while (i < args.Length && char.IsWhiteSpace(args[i])) + { + i++; + } + + int nameStart = i; + while (i < args.Length && !char.IsWhiteSpace(args[i])) + { + i++; + } + name = args.Substring(nameStart, i - nameStart).Trim(); + + while (i < args.Length && char.IsWhiteSpace(args[i])) + { + i++; + } + + if (i < args.Length && (args[i] == '\'' || args[i] == '"')) + { + char quoteChar = args[i]; + i++; + int commandStart = i; + while (i < args.Length && args[i] != quoteChar) + { + i++; + } + if (i < args.Length) + { + command = args.Substring(commandStart, i - commandStart); + } + else + { + command = args.Substring(commandStart); + } + } + else + { + command = args.Substring(i).Trim(); + } + + if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(command)) + { + ShowError("Usage: alias "); + ShowError("Example: alias ll 'ls -l'"); + ShowError("Example: alias home \"cd /home\""); + ShowError("Example: alias cls clear"); + return; + } + + Commands.AliasCommand.AddAlias(name, command); + } + } + + public void ProcessUnalias(string args) + { + if (string.IsNullOrWhiteSpace(args)) + { + ShowError("Usage: unalias "); + ShowError("Example: unalias ll"); + return; + } + + string name = args.Trim(); + Commands.AliasCommand.RemoveAlias(name); + } + public void SetDnsServer(string args) { if (string.IsNullOrWhiteSpace(args))