Commit 2024.5.13

This commit is contained in:
Belim 2024-05-13 14:15:19 +02:00
parent b12c13cca6
commit 62332cecef
36 changed files with 2669 additions and 1198 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 211 KiB

View File

@ -46,15 +46,23 @@ namespace Winpilot
"); ");
string formattedMessage = $"<div style='color:{ColorToHex(color)}'><strong>{message}</strong></div>"; string formattedMessage = $"<div style='color:{ColorToHex(color)}'><strong>{message}</strong></div>";
// Replace URLs with clickable links
formattedMessage = System.Text.RegularExpressions.Regex.Replace(formattedMessage, @"(https?://\S+)", "<strong><a href=\"$1\" target=\"_blank\">$1</a></strong>");
webView.CoreWebView2.PostWebMessageAsString(formattedMessage);
// Replace URLs with clickable links
formattedMessage = System.Text.RegularExpressions.Regex.Replace(formattedMessage,
@"<strong>(.*?)(https?://\S+)(.*?)</strong>",
match =>
{
string beforeUrl = match.Groups[1].Value; // Capture text before URL
string url = match.Groups[2].Value; // Capture URL
string afterUrl = match.Groups[3].Value; // Capture text after URL
return $"<strong>{beforeUrl}<a href=\"{url}\" target=\"_blank\">{url}</a>{afterUrl}</strong>";
});
webView.CoreWebView2.PostWebMessageAsString(formattedMessage);
// Some JS to append formatted message to logContainer // Some JS to append formatted message to logContainer
await webView.ExecuteScriptAsync($"document.getElementById('logContainer').innerHTML += '{formattedMessage}';"); await webView.ExecuteScriptAsync($"document.getElementById('logContainer').innerHTML += '{formattedMessage}';");
// Ensure log container is visible // Ensure log container is visible
await webView.ExecuteScriptAsync("document.getElementById('logContainer').style.display = 'block';"); await webView.ExecuteScriptAsync("document.getElementById('logContainer').style.display = 'block';");

View File

@ -61,7 +61,7 @@ namespace Interop
// Keywords for non-Microsoft apps // Keywords for non-Microsoft apps
string[] nonMicrosoftKeywords = { "Netflix", "Instagram", "Spotify", "Twitter", "WhatsApp", string[] nonMicrosoftKeywords = { "Netflix", "Instagram", "Spotify", "Twitter", "WhatsApp",
"HP", "TikTok", "Adobe", "Asana", "Google", "Facebook", "Messenger", "AD2F1837", "HP", "TikTok", "Adobe", "Asana", "Google", "Facebook", "Messenger",
"Candy", "Disney", "Dolby", "Duolingo", "Eclipse", "Fitbit", "Flipboard", "Fresh", "Candy", "Disney", "Dolby", "Duolingo", "Eclipse", "Fitbit", "Flipboard", "Fresh",
"Gameloft", "Gears", "Hulu", "Google", "iHeartRadio", "iTunes", "Khan", "King", "Gameloft", "Gears", "Hulu", "Google", "iHeartRadio", "iTunes", "Khan", "King",
"Lenovo", "Minecraft", "Netflix", "NordVPN", "Norton", "Opera", "Pandora", "Lenovo", "Minecraft", "Netflix", "NordVPN", "Norton", "Opera", "Pandora",
@ -207,74 +207,31 @@ namespace Interop
foreach (var package in group) foreach (var package in group)
{ {
// Individual toggle switch with new class 'custom-toggle-switch' // Individual toggle switch with new class 'package-toggle-switch'
htmlBuilder.AppendLine("<div class=\"custom-toggle-switch\">"); htmlBuilder.AppendLine("<div class=\"package-toggle-switch\">");
htmlBuilder.AppendLine($"<input type=\"checkbox\" id=\"{package}\" onchange=\"updateSelectedPackages('{package}')\">"); htmlBuilder.AppendLine($"<input type=\"checkbox\" id=\"{package}\" onchange=\"updateSelectedPackages('{package}')\">");
htmlBuilder.AppendLine($"<label for=\"{package}\">{package}</label>"); htmlBuilder.AppendLine($"<label for=\"{package}\">{package}</label>");
htmlBuilder.AppendLine("</div>"); htmlBuilder.AppendLine("</div>");
} }
// Close the grid container and group container // Close grid container and group container
htmlBuilder.AppendLine("</div>"); // End of toggle-switch-grid htmlBuilder.AppendLine("</div>"); // End of toggle-switch-grid
htmlBuilder.AppendLine("</div>"); // End of package-group htmlBuilder.AppendLine("</div>"); // End of package-group
} }
// Close the main container // Close main container
htmlBuilder.AppendLine("</div>"); htmlBuilder.AppendLine("</div>");
// CSS styles for the toggle switches // JS functions for updating and removing selected packages
htmlBuilder.AppendLine("<style>");
htmlBuilder.AppendLine(".package-group {");
htmlBuilder.AppendLine(" margin-bottom: 20px;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".package-group h2 {");
htmlBuilder.AppendLine(" font-size: 24px;");
htmlBuilder.AppendLine(" color: #333;");
htmlBuilder.AppendLine(" margin-bottom: 10px;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".toggle-switch-grid {");
htmlBuilder.AppendLine(" display: grid;");
htmlBuilder.AppendLine(" grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));"); // Automatic sizing
htmlBuilder.AppendLine(" grid-gap: 10px;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".custom-toggle-switch {"); // Specific styling for custom toggle switches
htmlBuilder.AppendLine(" display: flex;");
htmlBuilder.AppendLine(" align-items: center;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".custom-toggle-switch input {");
htmlBuilder.AppendLine(" display: none;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".custom-toggle-switch label {");
htmlBuilder.AppendLine(" cursor: pointer;");
htmlBuilder.AppendLine(" background-color: #ccc;");
htmlBuilder.AppendLine(" border-radius: 10px;");
htmlBuilder.AppendLine(" padding: 8px 12px;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine(".custom-toggle-switch input:checked + label {");
htmlBuilder.AppendLine(" background-color: #4CAF50;");
htmlBuilder.AppendLine(" color: #fff;");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine("</style>");
// JavaScript functions for updating and removing selected packages
htmlBuilder.AppendLine("<script>"); htmlBuilder.AppendLine("<script>");
htmlBuilder.AppendLine("var selectedPackages = [];"); htmlBuilder.AppendLine("var selectedPackages = [];");
htmlBuilder.AppendLine("function updateSelectedPackages(packageFamilyName) {"); htmlBuilder.AppendLine("function updateSelectedPackages(packageFamilyName) {");
htmlBuilder.AppendLine("var index = selectedPackages.indexOf(packageFamilyName);");
htmlBuilder.AppendLine("if (index === -1) {");
htmlBuilder.AppendLine("selectedPackages.push(packageFamilyName);");
htmlBuilder.AppendLine("} else {");
htmlBuilder.AppendLine("selectedPackages.splice(index, 1);");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine("function removeSelectedPackages() {");
htmlBuilder.AppendLine("window.chrome.webview.postMessage(JSON.stringify({ action: 'removeSelectedPackages', selectedPackages: selectedPackages }));");
htmlBuilder.AppendLine("}");
htmlBuilder.AppendLine("</script>"); htmlBuilder.AppendLine("</script>");
return htmlBuilder.ToString(); return htmlBuilder.ToString();
} }
public async void RemoveSelectedPackages(List<string> selectedPackages) public async void RemoveSelectedPackages(List<string> selectedPackages)
{ {
Logger.Log("Attempting to remove selected packages:", Color.Magenta); Logger.Log("Attempting to remove selected packages:", Color.Magenta);
@ -302,6 +259,7 @@ namespace Interop
} }
await LoadInstalledAppPackages(); // Global refresh await LoadInstalledAppPackages(); // Global refresh
// Refresh our appx packages shown in Pinned apps section after removal // Refresh our appx packages shown in Pinned apps section after removal
string refreshedHtml = await GetPinnedAppPackages(); string refreshedHtml = await GetPinnedAppPackages();
await form.WebView.CoreWebView2.ExecuteScriptAsync($"document.getElementById('buttonsAppx-container').innerHTML = `{refreshedHtml}`;"); await form.WebView.CoreWebView2.ExecuteScriptAsync($"document.getElementById('buttonsAppx-container').innerHTML = `{refreshedHtml}`;");

View File

@ -12,6 +12,8 @@ using System.Net;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Collections.Generic;
using System.IO.Compression;
namespace Interop namespace Interop
{ {
@ -37,6 +39,100 @@ namespace Interop
command = new CommandsHandler(logger); command = new CommandsHandler(logger);
} }
public async void Tiny11Maker()
{
// Inform the user about the third-party script
MessageBox.Show("This process utilizes a third-party script from ntdevlabs/tiny11builder. " +
"The script expects a downloaded Windows 11 ISO file and will create a trimmed-down Windows 11 ISO named Tiny11.iso without inbox apps and Edge Browser." +
"\nFor more details, visit: https://github.com/ntdevlabs/tiny11builder", "Important Note", MessageBoxButtons.OK, MessageBoxIcon.Information);
// Initialize necessary handlers
DownloadHandler downloadHandler = new DownloadHandler(logger);
CommandsHandler commandsHandler = new CommandsHandler(logger);
// Download the necessary files
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string zipFilePath = Path.Combine(desktopPath, "tiny11builder_01-05-24.zip");
string extractPath = desktopPath;
await downloadHandler.DownloadFiles(new Dictionary<string, string>
{
{ "tiny11builder", "https://github.com/ntdevlabs/tiny11builder/releases/download/01-05-24/tiny11builder_01-05-24.zip" }
}, desktopPath);
// Extract tiny11builder archive
try
{
ZipFile.ExtractToDirectory(zipFilePath, extractPath);
}
catch (Exception ex)
{
logger.Log($"Error extracting files: {ex.Message}", Color.Red);
}
// Log steps
logger.Log("1. Please download Windows 11 from the Microsoft website: https://www.microsoft.com/software-download/windows11", Color.Red);
logger.Log("2. Mounting the downloaded ISO image using Windows Explorer...", Color.Blue);
logger.Log("3. Selecting the drive letter where the image is mounted...", Color.Green);
logger.Log("4. Selecting the SKU for the image...", Color.Green);
logger.Log("5. Sit back and relax :)", Color.Green);
logger.Log("More details here https://github.com/ntdevlabs/tiny11builder", Color.Magenta);
// Ask to mount ISO image
DialogResult result = MessageBox.Show("Do you want to mount the ISO image?", "Mount ISO", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
// Allow selecting ISO image file
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "ISO files (*.iso)|*.iso|All files (*.*)|*.*";
openFileDialog.InitialDirectory = desktopPath;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string selectedIsoFilePath = openFileDialog.FileName;
// Log selected ISO file path
logger.Log($"Selected ISO file: {selectedIsoFilePath}", Color.Green);
// Mount ISO file using PowerShell
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "powershell.exe",
Arguments = $"-Command Mount-DiskImage -ImagePath \"{selectedIsoFilePath}\"",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
Process process = Process.Start(psi);
await process.WaitForExitAsync();
string output = process.StandardOutput.ReadToEnd();
string error = process.StandardError.ReadToEnd();
if (!string.IsNullOrEmpty(error))
{
MessageBox.Show($"Error mounting ISO: {error}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show($"ISO mounted successfully: {output}", "ISO Mounted", MessageBoxButtons.OK, MessageBoxIcon.Information);
// Run PowerShell script once the ISO image is mounted
commandsHandler.StartProcess("powershell.exe", $"-ExecutionPolicy Bypass -File \"{desktopPath}\\tiny11maker.ps1\"", true, createNoWindow: false);
}
}
}
}
else
{
MessageBox.Show("Skipping mounting the ISO image.", "Mount ISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// E.g. Support for my own Apps, like Appcopier // E.g. Support for my own Apps, like Appcopier
public void OpenAppFromPackagesFolder(string appPath) public void OpenAppFromPackagesFolder(string appPath)
{ {
@ -207,8 +303,8 @@ namespace Interop
{ {
logger.Log($"Error handling processes: {ex.Message}", Color.DarkRed); logger.Log($"Error handling processes: {ex.Message}", Color.DarkRed);
} }
} }
public async Task CheckIPAddress() public async Task CheckIPAddress()
{ {
try try

View File

@ -29,11 +29,6 @@ namespace Interop
public string Description { get; set; } // Extensions plugin public string Description { get; set; } // Extensions plugin
public Dictionary<string, string> DownloadUri { get; set; } // download handler (e.g. multiple files, localizations) public Dictionary<string, string> DownloadUri { get; set; } // download handler (e.g. multiple files, localizations)
// Support for Vive tool (optional package)
public string ViveCommand { get; set; }
public string ViveFeatureId { get; set; }
public string ViveBuildAvailability { get; set; }
} }
public class ClippyLogicHandler : InteropBase public class ClippyLogicHandler : InteropBase
@ -245,11 +240,11 @@ namespace Interop
// Adjust button text based on installation status and hardcoded parameter // Adjust button text based on installation status and hardcoded parameter
if (isInstalled || isHardcoded) if (isInstalled || isHardcoded)
{ {
pluginHtml.AppendLine($"<button class='execute-button' onclick='executePluginEntry(\"{entry.Question}\")'>Run plugin</button>"); pluginHtml.AppendLine($"<button class='execute-button' onclick='executePluginEntry(\"{entry.Question}\")'>RUN</button>");
} }
else else
{ {
pluginHtml.AppendLine($"<button class='install-button' onclick='installPlugin(\"{pluginName}\", \"{entry.GithubURL}\")'>Install</button>"); pluginHtml.AppendLine($"<button class='install-button' onclick='installPlugin(\"{pluginName}\", \"{entry.GithubURL}\")'>GET</button>");
} }
pluginHtml.AppendLine("</div>"); pluginHtml.AppendLine("</div>");
@ -411,15 +406,15 @@ namespace Interop
// Here Winpilot plugins are called, trigger js functions to scroll to the respective sections // Here Winpilot plugins are called, trigger js functions to scroll to the respective sections
case "plugCotweaker": case "plugCotweaker":
await form.WebView.CoreWebView2.ExecuteScriptAsync("activateStep('stepSystemHeader');"); await form.WebView.CoreWebView2.ExecuteScriptAsync("showContainer('stepSystemHeader');");
break; break;
case "plugDecrapify": case "plugDecrapify":
await form.WebView.CoreWebView2.ExecuteScriptAsync("activateStep('stepAppxHeader');"); await form.WebView.CoreWebView2.ExecuteScriptAsync("showContainer('stepAppxHeader');");
break; break;
case "plugWingetUI": case "plugWingetUI":
await form.WebView.CoreWebView2.ExecuteScriptAsync("activateStep('stepAppsHeader');"); await form.WebView.CoreWebView2.ExecuteScriptAsync("showContainer('stepAppsHeader');");
break; break;
case "plugCopilotless": case "plugCopilotless":
@ -440,32 +435,6 @@ namespace Interop
Logger.Log(selectedAnswer.Response, Color.Magenta); Logger.Log(selectedAnswer.Response, Color.Magenta);
break; break;
// File downloader for e.g., plugins in plugins directory
case "coDownload":
string filesDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
string targetDirectoryPlugins = Path.Combine(filesDirectory, "plugins");
await downloadHandler.DownloadFiles(selectedAnswer.DownloadUri, targetDirectoryPlugins);
break;
// Vive tool (optional package)
case "viveTool":
string viveToolPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\plugins\\vivetool\\", "vivetool.exe");
string featureId = selectedAnswer.ViveFeatureId;
// Construct ViveTool command to enable feature
if (selectedAnswer.ViveCommand.Equals("enable", StringComparison.OrdinalIgnoreCase))
{
string viveToolCommand = $" /enable /id:{featureId}";
commandHandler.StartProcess(viveToolPath, viveToolCommand, true, createNoWindow: true);
} // Construct ViveTool command to disable feature
else if (selectedAnswer.ViveCommand.Equals("disable", StringComparison.OrdinalIgnoreCase))
{
string viveToolCommand = $" /disable /id:{featureId}";
commandHandler.StartProcess(viveToolPath, viveToolCommand, true, createNoWindow: true);
}
Logger.Log($"Build Availability: {selectedAnswer.ViveBuildAvailability}", Color.MediumPurple);
break;
// Default for running external processes, URIs and opening linkhandler // Default for running external processes, URIs and opening linkhandler
default: default:
commandHandler.ExecuteSettingsURI(selectedAnswer.Action); commandHandler.ExecuteSettingsURI(selectedAnswer.Action);

View File

@ -1,9 +1,9 @@
using Winpilot; using System;
using System;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using Winpilot;
namespace Interop namespace Interop
{ {
@ -49,7 +49,7 @@ namespace Interop
{ {
if (!string.IsNullOrEmpty(e.Data)) if (!string.IsNullOrEmpty(e.Data))
{ {
// Handle error data // Handle error data
logger.Log($"Error: {e.Data}", Color.Red); logger.Log($"Error: {e.Data}", Color.Red);
} }
}; };
@ -57,7 +57,6 @@ namespace Interop
process.Start(); process.Start();
process.BeginOutputReadLine(); process.BeginOutputReadLine();
process.BeginErrorReadLine(); process.BeginErrorReadLine();
} }
else else
{ {
@ -71,7 +70,6 @@ namespace Interop
} }
} }
public void ExecutePowerShellCommand(string command) public void ExecutePowerShellCommand(string command)
{ {
StartProcess("powershell.exe", $"-NoProfile -ExecutionPolicy unrestricted -Command \"{command}\"", true, createNoWindow: false); StartProcess("powershell.exe", $"-NoProfile -ExecutionPolicy unrestricted -Command \"{command}\"", true, createNoWindow: false);
@ -232,6 +230,5 @@ namespace Interop
logger.Log($"Error running PowerShell command: {ex.Message}", Color.DarkRed); logger.Log($"Error running PowerShell command: {ex.Message}", Color.DarkRed);
} }
} }
} }
} }

View File

@ -1,11 +1,10 @@
using Winpilot; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Net; using System.Net;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using Winpilot;
namespace Interop namespace Interop
{ {
@ -67,4 +66,4 @@ namespace Interop
} }
} }
} }
} }

View File

@ -27,7 +27,7 @@ namespace Interop
if (appUpdatesAvailable) if (appUpdatesAvailable)
{ {
logger.Log("Winpilot update is available.", Color.Magenta); logger.Log("Winpilot update is available. https://github.com/builtbybel/Winpilot/releases", Color.Magenta);
} }
else else
{ {
@ -103,7 +103,7 @@ namespace Interop
{ {
if (MessageBox.Show($"App version {latestVersion} available.\nDo you want to open the Download page?", "App update available", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes) if (MessageBox.Show($"App version {latestVersion} available.\nDo you want to open the Download page?", "App update available", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{ {
Process.Start("https://github.com/builtbybel/Winpilot"); Process.Start("https://github.com/builtbybel/Winpilot/releases");
} }
return true; return true;
} }

View File

@ -39,7 +39,7 @@
this.pnlForm.Dock = System.Windows.Forms.DockStyle.Fill; this.pnlForm.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlForm.Location = new System.Drawing.Point(0, 0); this.pnlForm.Location = new System.Drawing.Point(0, 0);
this.pnlForm.Name = "pnlForm"; this.pnlForm.Name = "pnlForm";
this.pnlForm.Size = new System.Drawing.Size(584, 639); this.pnlForm.Size = new System.Drawing.Size(483, 661);
this.pnlForm.TabIndex = 2; this.pnlForm.TabIndex = 2;
// //
// pnlMain // pnlMain
@ -47,14 +47,14 @@
this.pnlMain.Dock = System.Windows.Forms.DockStyle.Fill; this.pnlMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlMain.Location = new System.Drawing.Point(0, 0); this.pnlMain.Location = new System.Drawing.Point(0, 0);
this.pnlMain.Name = "pnlMain"; this.pnlMain.Name = "pnlMain";
this.pnlMain.Size = new System.Drawing.Size(584, 639); this.pnlMain.Size = new System.Drawing.Size(483, 661);
this.pnlMain.TabIndex = 0; this.pnlMain.TabIndex = 0;
// //
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.ClientSize = new System.Drawing.Size(584, 639); this.ClientSize = new System.Drawing.Size(483, 661);
this.Controls.Add(this.pnlForm); this.Controls.Add(this.pnlForm);
this.Name = "MainForm"; this.Name = "MainForm";
this.ShowIcon = false; this.ShowIcon = false;

View File

@ -37,20 +37,10 @@ namespace Winpilot
private async void MainForm_Shown(object sender, EventArgs e) private async void MainForm_Shown(object sender, EventArgs e)
{ {
// Position
SetUI();
// Init WebView // Init WebView
await InitializeWebView(); await InitializeWebView();
} }
private void SetUI()
{
// Position
int margin = 10; // Margin from Taskbar
this.Location = new Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2,
(Screen.PrimaryScreen.WorkingArea.Height - this.Height) - margin);
}
private async Task InitializeWebView() private async Task InitializeWebView()
{ {
Panel pnlForm = new Panel Panel pnlForm = new Panel
@ -87,9 +77,33 @@ namespace Winpilot
{ {
try try
{ {
// Construct the full file paths for HTML, CSS, JS files // Default theme preference
bool isDarkMode = false;
// Check if the settings.txt file exists in "app" directory
string darkModeFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "settings.txt");
if (File.Exists(darkModeFilePath))
{
// Determine theme preference
string fileContent = File.ReadAllText(darkModeFilePath);
if (fileContent.Contains("Theme=1"))
{
// If file indicates dark mode, enable dark mode
isDarkMode = true;
}
}
else
{
// If file doesn't exist or contain theme preference, default to light mode
isDarkMode = false;
// Write default theme preference to settings file
File.WriteAllText(darkModeFilePath, isDarkMode ? "Theme=1" : "Theme=0");
}
// Construct full file paths for HTML, CSS, JS files
string htmlFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "frontend.html"); string htmlFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "frontend.html");
string cssFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "ui.css"); string cssFilePath = isDarkMode ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "ui_dark.css") : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "ui.css");
string jsFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "backend.js"); string jsFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "backend.js");
// Get all PNG files with "clippy" in their names // Get all PNG files with "clippy" in their names
@ -127,7 +141,7 @@ namespace Winpilot
// Subscribe to NavigationCompleted event before navigating // Subscribe to NavigationCompleted event before navigating
webView.CoreWebView2.NavigationCompleted += WebView_NavigationCompleted; webView.CoreWebView2.NavigationCompleted += WebView_NavigationCompleted;
// Navigate to the modified HTML content // Navigate to modified HTML content
webView.CoreWebView2.NavigateToString(finalHtmlContent); webView.CoreWebView2.NavigateToString(finalHtmlContent);
} }
catch (Exception ex) catch (Exception ex)
@ -136,6 +150,33 @@ namespace Winpilot
} }
} }
private void ToggleDarkLightMode()
{
try
{
string darkModeFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "settings.txt");
if (File.Exists(darkModeFilePath))
{
string fileContent = File.ReadAllText(darkModeFilePath);
// Toggle theme preference
bool isDarkMode = fileContent.Contains("Theme=1");
isDarkMode = !isDarkMode;
// Write the updated theme preference to settings file
File.WriteAllText(darkModeFilePath, isDarkMode ? "Theme=1" : "Theme=0");
}
else
{
// If settings file doesn't exist, create it with light mode enabled
File.WriteAllText(darkModeFilePath, "Theme=0");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error toggling mode: {ex.Message}");
}
}
private async void WebView_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) private async void WebView_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
{ {
// Disable the form and all controls // Disable the form and all controls
@ -189,14 +230,23 @@ namespace Winpilot
var logger = new Logger(webView); var logger = new Logger(webView);
coTweaker = new List<WalksBase> coTweaker = new List<WalksBase>
{ {
// Ads
new StartmenuAds(this,logger),
new PersonalizedAds(this,logger),
new WelcomeExperienceAds(this,logger),
new FinishSetupAds(this,logger),
new TipsAndSuggestions(this,logger),
new SettingsAds(this,logger),
new LockScreenAds(this,logger),
new FileExplorerAds(this,logger),
new TailoredExperiences(this,logger),
// Privacy // Privacy
new Advertising(this,logger),
new BackgroundApps(this,logger), new BackgroundApps(this,logger),
new DiagnosticData(this,logger), new DiagnosticData(this,logger),
new FindMyDevice(this,logger), new FindMyDevice(this,logger),
new PrivacyExperience(this,logger), new PrivacyExperience(this,logger),
new Telemetry(this,logger), new Telemetry(this,logger),
new TipsAndSuggestions(this,logger),
// System // System
new FullContextMenus(this,logger), new FullContextMenus(this,logger),
@ -212,7 +262,6 @@ namespace Winpilot
// Taskbar and Start Menu // Taskbar and Start Menu
new BingSearch(this,logger), new BingSearch(this,logger),
new StartmenuAds(this,logger),
new MostUsedApps(this,logger), new MostUsedApps(this,logger),
new StartmenuLayout(this,logger), new StartmenuLayout(this,logger),
new TaskbarChat(this,logger), new TaskbarChat(this,logger),
@ -318,11 +367,27 @@ namespace Winpilot
// Instantiate Feature classes with logger // Instantiate Feature classes with logger
WalksBase appCustomCrapware = new CAppxPackages(this, logger); WalksBase appCustomCrapware = new CAppxPackages(this, logger);
AIFeaturesHandler aiFeaturesHandler = new AIFeaturesHandler(logger); AIFeaturesHandler aiFeaturesHandler = new AIFeaturesHandler(logger);
ClippyDataHandler clippyDataHandler = new ClippyDataHandler(logger);
// Handle non-JSON content (e.g., interop classes) // Handle non-JSON content (e.g., interop classes)
switch (message) switch (message)
{ {
// About this app case "tiny11maker":
clippyDataHandler.Tiny11Maker();
break;
// Back button
case "goBack":
await LoadHtmlContent();
break;
// Toggle Dark/Light mode
case "toggleDarkLightMode":
ToggleDarkLightMode();
await LoadHtmlContent();
break;
// Open Settings (About this app)
case "openSettings": case "openSettings":
OpenSettings(); OpenSettings();
break; break;
@ -341,10 +406,6 @@ namespace Winpilot
clippyConversationHandler.ShowPseudoAISayings(); clippyConversationHandler.ShowPseudoAISayings();
break; break;
case "openCopilot":
webView.CoreWebView2.Navigate("https://copilot.microsoft.com/");
break;
// Refresh Assisted buttons // Refresh Assisted buttons
case "refreshAB": case "refreshAB":
await clippyLogicHandler.LoadAnswersFromJson(); // Initialize answers and actions await clippyLogicHandler.LoadAnswersFromJson(); // Initialize answers and actions
@ -410,6 +471,35 @@ namespace Winpilot
} }
} }
private async Task RunPowerShellScript()
{
Logger logger = new Logger(webView);
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "powershell.exe",
Arguments = $"-ExecutionPolicy Bypass -File \"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Downloads", "tiny11maker.ps1")}\"",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
Process process = Process.Start(psi);
await process.WaitForExitAsync();
string output = process.StandardOutput.ReadToEnd();
string error = process.StandardError.ReadToEnd();
if (!string.IsNullOrEmpty(error))
{
logger.Log($"Error running PowerShell script: {error}", Color.Red);
}
else
{
logger.Log($"PowerShell script executed successfully: {output}", Color.Green);
}
}
// Plugin WingetUI > Install Selected Apps // Plugin WingetUI > Install Selected Apps
private void InstallWingetAppsAction(List<CheckboxInfo> checkboxes) private void InstallWingetAppsAction(List<CheckboxInfo> checkboxes)
{ {

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben: // indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2024.4.10")] [assembly: AssemblyVersion("2024.5.13")]
[assembly: AssemblyFileVersion("2024.4.10")] [assembly: AssemblyFileVersion("2024.5.13")]

View File

@ -28,46 +28,32 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsPageView));
this.linkAppInfo = new System.Windows.Forms.LinkLabel(); this.linkAppInfo = new System.Windows.Forms.LinkLabel();
this.label1 = new System.Windows.Forms.Label();
this.lblVersion = new System.Windows.Forms.Label(); this.lblVersion = new System.Windows.Forms.Label();
this.linkFollow = new System.Windows.Forms.LinkLabel(); this.linkFollow = new System.Windows.Forms.LinkLabel();
this.lblDev = new System.Windows.Forms.Label(); this.lblDev = new System.Windows.Forms.Label();
this.linkCreditsAppIcon = new System.Windows.Forms.LinkLabel(); this.linkCreditsAppIcon = new System.Windows.Forms.LinkLabel();
this.btnBack = new System.Windows.Forms.Button(); this.btnBack = new System.Windows.Forms.Button();
this.lblSettings = new System.Windows.Forms.Label(); this.lblSettings = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.linkLicensesClippit = new System.Windows.Forms.LinkLabel();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkAppInfo // linkAppInfo
// //
this.linkAppInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.linkAppInfo.AutoEllipsis = true; this.linkAppInfo.AutoEllipsis = true;
this.linkAppInfo.Font = new System.Drawing.Font("Segoe UI Variable Text", 9.25F); this.linkAppInfo.Font = new System.Drawing.Font("Segoe UI Variable Display", 9.75F);
this.linkAppInfo.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; this.linkAppInfo.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
this.linkAppInfo.LinkColor = System.Drawing.Color.RoyalBlue; this.linkAppInfo.LinkColor = System.Drawing.Color.RoyalBlue;
this.linkAppInfo.Location = new System.Drawing.Point(22, 219); this.linkAppInfo.Location = new System.Drawing.Point(35, 108);
this.linkAppInfo.Name = "linkAppInfo"; this.linkAppInfo.Name = "linkAppInfo";
this.linkAppInfo.Size = new System.Drawing.Size(161, 17); this.linkAppInfo.Size = new System.Drawing.Size(315, 24);
this.linkAppInfo.TabIndex = 6; this.linkAppInfo.TabIndex = 6;
this.linkAppInfo.TabStop = true; this.linkAppInfo.TabStop = true;
this.linkAppInfo.Text = "More infos about this app"; this.linkAppInfo.Text = "More infos about this app";
this.linkAppInfo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkAppInfo.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkAppInfos_LinkClicked); this.linkAppInfo.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkAppInfos_LinkClicked);
// //
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoEllipsis = true;
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.label1.Location = new System.Drawing.Point(20, 73);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(302, 186);
this.label1.TabIndex = 7;
this.label1.Text = resources.GetString("label1.Text");
//
// lblVersion // lblVersion
// //
this.lblVersion.AutoSize = true; this.lblVersion.AutoSize = true;
@ -81,49 +67,44 @@
// //
// linkFollow // linkFollow
// //
this.linkFollow.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.linkFollow.AutoEllipsis = true; this.linkFollow.AutoEllipsis = true;
this.linkFollow.Font = new System.Drawing.Font("Segoe MDL2 Assets", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.linkFollow.Font = new System.Drawing.Font("Segoe Fluent Icons", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.linkFollow.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; this.linkFollow.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
this.linkFollow.LinkColor = System.Drawing.Color.DeepPink; this.linkFollow.LinkColor = System.Drawing.Color.MediumVioletRed;
this.linkFollow.Location = new System.Drawing.Point(190, 217); this.linkFollow.Location = new System.Drawing.Point(35, 135);
this.linkFollow.Name = "linkFollow"; this.linkFollow.Name = "linkFollow";
this.linkFollow.Size = new System.Drawing.Size(106, 27); this.linkFollow.Size = new System.Drawing.Size(315, 24);
this.linkFollow.TabIndex = 9; this.linkFollow.TabIndex = 9;
this.linkFollow.TabStop = true; this.linkFollow.TabStop = true;
this.linkFollow.Text = "Follow on GitHub"; this.linkFollow.Text = "Follow on GitHub";
this.linkFollow.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkFollow.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkFollow_LinkClicked); this.linkFollow.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkFollow_LinkClicked);
// //
// lblDev // lblDev
// //
this.lblDev.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblDev.AutoEllipsis = true; this.lblDev.AutoEllipsis = true;
this.lblDev.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDev.Font = new System.Drawing.Font("Segoe UI Variable Display", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblDev.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); this.lblDev.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.lblDev.Location = new System.Drawing.Point(3, 602); this.lblDev.Location = new System.Drawing.Point(35, 80);
this.lblDev.Name = "lblDev"; this.lblDev.Name = "lblDev";
this.lblDev.Size = new System.Drawing.Size(344, 24); this.lblDev.Size = new System.Drawing.Size(315, 24);
this.lblDev.TabIndex = 10; this.lblDev.TabIndex = 10;
this.lblDev.Text = "A Belim app creation (C) 2024"; this.lblDev.Text = "A Belim app creation © 2024";
this.lblDev.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.lblDev.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
// //
// linkCreditsAppIcon // linkCreditsAppIcon
// //
this.linkCreditsAppIcon.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.linkCreditsAppIcon.AutoEllipsis = true; this.linkCreditsAppIcon.AutoEllipsis = true;
this.linkCreditsAppIcon.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 7.75F); this.linkCreditsAppIcon.Font = new System.Drawing.Font("Segoe UI Variable Display", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.linkCreditsAppIcon.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; this.linkCreditsAppIcon.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
this.linkCreditsAppIcon.LinkColor = System.Drawing.Color.RoyalBlue; this.linkCreditsAppIcon.LinkColor = System.Drawing.Color.RoyalBlue;
this.linkCreditsAppIcon.Location = new System.Drawing.Point(3, 626); this.linkCreditsAppIcon.Location = new System.Drawing.Point(35, 199);
this.linkCreditsAppIcon.Name = "linkCreditsAppIcon"; this.linkCreditsAppIcon.Name = "linkCreditsAppIcon";
this.linkCreditsAppIcon.Size = new System.Drawing.Size(347, 15); this.linkCreditsAppIcon.Size = new System.Drawing.Size(315, 24);
this.linkCreditsAppIcon.TabIndex = 11; this.linkCreditsAppIcon.TabIndex = 11;
this.linkCreditsAppIcon.TabStop = true; this.linkCreditsAppIcon.TabStop = true;
this.linkCreditsAppIcon.Text = "Icon created by Icon Hubs - Flaticon"; this.linkCreditsAppIcon.Text = "Icon credits go to at Firecube";
this.linkCreditsAppIcon.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.linkCreditsAppIcon.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkCreditsAppIcon.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkCreditsAppIcon_LinkClicked); this.linkCreditsAppIcon.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkCreditsAppIcon_LinkClicked);
// //
// btnBack // btnBack
@ -147,15 +128,47 @@
this.lblSettings.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold); this.lblSettings.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold);
this.lblSettings.Location = new System.Drawing.Point(41, 3); this.lblSettings.Location = new System.Drawing.Point(41, 3);
this.lblSettings.Name = "lblSettings"; this.lblSettings.Name = "lblSettings";
this.lblSettings.Size = new System.Drawing.Size(99, 17); this.lblSettings.Size = new System.Drawing.Size(109, 17);
this.lblSettings.TabIndex = 13; this.lblSettings.TabIndex = 13;
this.lblSettings.Text = "About this app"; this.lblSettings.Text = "App Information";
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Small Semibol", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
this.label1.Location = new System.Drawing.Point(20, 171);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(129, 17);
this.label1.TabIndex = 14;
this.label1.Text = "Third-party licenses";
//
// linkLicensesClippit
//
this.linkLicensesClippit.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.linkLicensesClippit.AutoEllipsis = true;
this.linkLicensesClippit.Font = new System.Drawing.Font("Segoe UI Variable Display", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.linkLicensesClippit.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
this.linkLicensesClippit.LinkColor = System.Drawing.Color.RoyalBlue;
this.linkLicensesClippit.Location = new System.Drawing.Point(35, 232);
this.linkLicensesClippit.Name = "linkLicensesClippit";
this.linkLicensesClippit.Size = new System.Drawing.Size(315, 33);
this.linkLicensesClippit.TabIndex = 15;
this.linkLicensesClippit.TabStop = true;
this.linkLicensesClippit.Text = "Clippit is a registered trademark of © Microsoft Corporation.";
this.linkLicensesClippit.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.linkLicensesClippit.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLicensesClippit_LinkClicked);
// //
// SettingsPageView // SettingsPageView
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control; this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.linkLicensesClippit);
this.Controls.Add(this.label1);
this.Controls.Add(this.lblSettings); this.Controls.Add(this.lblSettings);
this.Controls.Add(this.btnBack); this.Controls.Add(this.btnBack);
this.Controls.Add(this.linkCreditsAppIcon); this.Controls.Add(this.linkCreditsAppIcon);
@ -163,7 +176,6 @@
this.Controls.Add(this.linkFollow); this.Controls.Add(this.linkFollow);
this.Controls.Add(this.lblVersion); this.Controls.Add(this.lblVersion);
this.Controls.Add(this.linkAppInfo); this.Controls.Add(this.linkAppInfo);
this.Controls.Add(this.label1);
this.Name = "SettingsPageView"; this.Name = "SettingsPageView";
this.Size = new System.Drawing.Size(350, 643); this.Size = new System.Drawing.Size(350, 643);
this.Load += new System.EventHandler(this.SettingsPageView_Load); this.Load += new System.EventHandler(this.SettingsPageView_Load);
@ -174,12 +186,13 @@
#endregion #endregion
private System.Windows.Forms.LinkLabel linkAppInfo; private System.Windows.Forms.LinkLabel linkAppInfo;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lblVersion; private System.Windows.Forms.Label lblVersion;
private System.Windows.Forms.LinkLabel linkFollow; private System.Windows.Forms.LinkLabel linkFollow;
private System.Windows.Forms.Label lblDev; private System.Windows.Forms.Label lblDev;
private System.Windows.Forms.LinkLabel linkCreditsAppIcon; private System.Windows.Forms.LinkLabel linkCreditsAppIcon;
private System.Windows.Forms.Button btnBack; private System.Windows.Forms.Button btnBack;
private System.Windows.Forms.Label lblSettings; private System.Windows.Forms.Label lblSettings;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkLicensesClippit;
} }
} }

View File

@ -24,7 +24,7 @@ namespace Views
{ {
btnBack.Text = "\uE72B"; btnBack.Text = "\uE72B";
linkFollow.Text = "\uE8E1 GitHub"; linkFollow.Text = "\uE8E1 GitHub";
lblVersion.Text = "Version " + Program.GetCurrentVersionTostring() + " (Stargate)"; lblVersion.Text = "Version " + Program.GetCurrentVersionTostring() + " Stargate";
} }
private void linkAppInfos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void linkAppInfos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@ -34,9 +34,12 @@ namespace Views
=> Process.Start("https://github.com/builtbybel/Winpilot"); => Process.Start("https://github.com/builtbybel/Winpilot");
private void linkCreditsAppIcon_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void linkCreditsAppIcon_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
=> Process.Start("https://www.flaticon.com/free-icon/maintenance_8794698"); => Process.Start("https://github.com/FireCubeStudios/Clippy/tree/master/Clippy/Assets/Clippy");
private void btnBack_Click(object sender, EventArgs e) private void btnBack_Click(object sender, EventArgs e)
=> Views.SwitchView.SetMainFormAsView(); => Views.SwitchView.SetMainFormAsView();
private void linkLicensesClippit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
=> Process.Start("https://github.com/FireCubeStudios/Clippy/tree/master/Clippy/Assets/Clippy");
} }
} }

View File

@ -117,10 +117,4 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="label1.Text" xml:space="preserve">
<value>Unlock the power of AI for Windows customization today with Winpilot.
Utilize Clippy's chatbox to search keywords and get real-time results. For example, search 'version' to check the Windows version currently installed on your system.
You can also try 'wallpaper' or 'performance' to explore some of the customization options available for Windows 10/11.</value>
</data>
</root> </root>

View File

@ -0,0 +1,60 @@
using Microsoft.Win32;
using Winpilot;
using System;
using System.Drawing;
namespace Walks
{
internal class FileExplorerAds : WalksBase
{
public FileExplorerAds(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
private const int desiredValue = 0;
public override string ID()
{
return "File Explorer Ads";
}
public override bool CheckFeature()
{
return !(
Utils.IntEquals(keyName, "ShowSyncProviderNotifications", desiredValue)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "ShowSyncProviderNotifications", 1, RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "ShowSyncProviderNotifications", desiredValue, RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -0,0 +1,56 @@
using Microsoft.Win32;
using System;
using System.Drawing;
using Winpilot;
namespace Walks
{
public class FinishSetupAds : WalksBase
{
public FinishSetupAds(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement";
private const int desiredValue = 0;
public override string ID() => "Finish Setup Ads";
public override bool CheckFeature()
{
return !Utils.IntEquals(keyName, "ScoobeSystemSettingEnabled", 0);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "ScoobeSystemSettingEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "ScoobeSystemSettingEnabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -0,0 +1,61 @@
using Microsoft.Win32;
using System;
using System.Drawing;
using Winpilot;
namespace Walks
{
internal class LockScreenAds : WalksBase
{
public LockScreenAds(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
private const int desiredValue = 0;
public override string ID() => "Lock Screen Tips and Ads";
public override bool CheckFeature()
{
return !(Utils.IntEquals(keyName, "RotatingLockScreenOverlayEnabled", desiredValue) &&
Utils.IntEquals(keyName, "SubscribedContent-338387Enabled", desiredValue)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "RotatingLockScreenOverlayEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-338387Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "RotatingLockScreenOverlayEnabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-338387Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -5,16 +5,16 @@ using System.Drawing;
namespace Walks namespace Walks
{ {
public class Advertising : WalksBase public class PersonalizedAds: WalksBase
{ {
public Advertising(MainForm form, Logger logger) : base(form, logger) public PersonalizedAds(MainForm form, Logger logger) : base(form, logger)
{ {
} }
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo"; private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo";
private const int desiredValue = 0; private const int desiredValue = 0;
public override string ID() => "Advertising"; public override string ID() => "Personalized Ads";
public override bool CheckFeature() public override bool CheckFeature()
{ {

View File

@ -0,0 +1,64 @@
using Microsoft.Win32;
using System;
using System.Drawing;
using Winpilot;
namespace Walks
{
internal class SettingsAds : WalksBase
{
public SettingsAds(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
private const int desiredValue = 0;
public override string ID() => "Settings Ads";
public override bool CheckFeature()
{
return !(Utils.IntEquals(keyName, "SubscribedContent-338393Enabled", desiredValue) &&
Utils.IntEquals(keyName, "SubscribedContent-353694Enabled", desiredValue) &&
Utils.IntEquals(keyName, "SubscribedContent-353696Enabled", desiredValue)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-338393Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-353694Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-353696Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-338393Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-353694Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName, "SubscribedContent-353696Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -16,7 +16,7 @@ namespace Walks
public override string ID() public override string ID()
{ {
return "Ads in Windows 11 Start"; return "Start menu Ads";
} }
public override bool CheckFeature() public override bool CheckFeature()

View File

@ -0,0 +1,60 @@
using Microsoft.Win32;
using Winpilot;
using System;
using System.Drawing;
namespace Walks
{
internal class TailoredExperiences : WalksBase
{
public TailoredExperiences(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
private const int desiredValue = 0;
public override string ID()
{
return "Tailored experiences";
}
public override bool CheckFeature()
{
return !(
Utils.IntEquals(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", desiredValue)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", 1, RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", desiredValue, RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -0,0 +1,57 @@
using Microsoft.Win32;
using System;
using System.Drawing;
using Winpilot;
namespace Walks
{
internal class TipsAndSuggestions : WalksBase
{
public TipsAndSuggestions(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
private const int desiredValue = 0;
public override string ID() => "General Tips and Ads";
public override bool CheckFeature()
{
return !(Utils.IntEquals(keyName, "SubscribedContent-338389Enabled", desiredValue)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-338389Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-338389Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -0,0 +1,56 @@
using Microsoft.Win32;
using Winpilot;
using System;
using System.Drawing;
namespace Walks
{
public class WelcomeExperienceAds : WalksBase
{
public WelcomeExperienceAds(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
private const int desiredValue = 0;
public override string ID() => "Welcome Experience Ads";
public override bool CheckFeature()
{
return !Utils.IntEquals(keyName, "SubscribedContent-310093Enabled", 0);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-310093Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "SubscribedContent-310093Enabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -25,7 +25,7 @@ namespace Walks
{ {
try try
{ {
Registry.SetValue(keyName, "DisablePrivacyExperience", 1, Microsoft.Win32.RegistryValueKind.DWord); Registry.SetValue(keyName, "DisablePrivacyExperience", 0, Microsoft.Win32.RegistryValueKind.DWord);
return true; return true;
} }
@ -41,7 +41,7 @@ namespace Walks
{ {
try try
{ {
Registry.SetValue(keyName, "DisablePrivacyExperience", 0, Microsoft.Win32.RegistryValueKind.DWord); Registry.SetValue(keyName, "DisablePrivacyExperience", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true; return true;
} }

View File

@ -1,65 +0,0 @@
using Microsoft.Win32;
using Winpilot;
using System;
using System.Drawing;
namespace Walks
{
internal class TipsAndSuggestions : WalksBase
{
public TipsAndSuggestions(MainForm form, Logger logger) : base(form, logger)
{
}
private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CloudContent";
private const string keyName2 = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
private const int desiredValue = 1;
private const int desiredValue2 = 0;
public override string ID() => "Tips and suggestions";
public override bool CheckFeature()
{
return !(Utils.IntEquals(keyName, "DisableSoftLanding", desiredValue) &&
Utils.IntEquals(keyName2, "SoftLandingEnabled", desiredValue2) &&
Utils.IntEquals(keyName2, "ScoobeSystemSettingEnabled", desiredValue2)
);
}
public override bool DoFeature()
{
try
{
Registry.SetValue(keyName, "DisableSoftLanding", 0, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName2, "SoftLandingEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName2, "ScoobeSystemSettingEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
public override bool UndoFeature()
{
try
{
Registry.SetValue(keyName, "DisableSoftLanding", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName2, "SoftLandingEnabled", desiredValue2, Microsoft.Win32.RegistryValueKind.DWord);
Registry.SetValue(keyName2, "ScoobeSystemSettingEnabled", desiredValue2, Microsoft.Win32.RegistryValueKind.DWord);
return true;
}
catch (Exception ex)
{
logger.Log("Code red in " + ex.Message, Color.Red);
}
return false;
}
}
}

View File

@ -57,6 +57,7 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Management" /> <Reference Include="System.Management" />
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
@ -88,11 +89,17 @@
<Compile Include="Views\SettingsPageView.Designer.cs"> <Compile Include="Views\SettingsPageView.Designer.cs">
<DependentUpon>SettingsPageView.cs</DependentUpon> <DependentUpon>SettingsPageView.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Walks\Ads\FileExplorerAds.cs" />
<Compile Include="Walks\Ads\FinishSetupAds.cs" />
<Compile Include="Walks\Ads\LockScreenAds.cs" />
<Compile Include="Walks\Ads\SettingsAds.cs" />
<Compile Include="Walks\Ads\TailoredExperiences.cs" />
<Compile Include="Walks\Ads\WelcomeExperienceAds.cs" />
<Compile Include="Walks\AI\CopilotMSEdge.cs" /> <Compile Include="Walks\AI\CopilotMSEdge.cs" />
<Compile Include="Walks\AI\CopilotTaskbar.cs" /> <Compile Include="Walks\AI\CopilotTaskbar.cs" />
<Compile Include="Walks\Privacy\Advertising.cs" /> <Compile Include="Walks\Ads\PersonalizedAds.cs" />
<Compile Include="Walks\Privacy\BackgroundApps.cs" /> <Compile Include="Walks\Privacy\BackgroundApps.cs" />
<Compile Include="Walks\Taskbar\StartmenuAds.cs" /> <Compile Include="Walks\Ads\StartmenuAds.cs" />
<Compile Include="Walks\System\FaxPrinter.cs" /> <Compile Include="Walks\System\FaxPrinter.cs" />
<Compile Include="Walks\System\XPSWriter.cs" /> <Compile Include="Walks\System\XPSWriter.cs" />
<Compile Include="Walks\Taskbar\BingSearch.cs" /> <Compile Include="Walks\Taskbar\BingSearch.cs" />
@ -105,7 +112,7 @@
<Compile Include="Walks\Privacy\DiagnosticData.cs" /> <Compile Include="Walks\Privacy\DiagnosticData.cs" />
<Compile Include="Walks\System\LockScreen.cs" /> <Compile Include="Walks\System\LockScreen.cs" />
<Compile Include="Walks\Privacy\Telemetry.cs" /> <Compile Include="Walks\Privacy\Telemetry.cs" />
<Compile Include="Walks\Privacy\TipsAndSuggestions.cs" /> <Compile Include="Walks\Ads\TipsAndSuggestions.cs" />
<Compile Include="InteropBase.cs" /> <Compile Include="InteropBase.cs" />
<Compile Include="Helpers\Logger.cs" /> <Compile Include="Helpers\Logger.cs" />
<Compile Include="MainForm.cs"> <Compile Include="MainForm.cs">

View File

@ -4,11 +4,227 @@ body {
color: #333; color: #333;
padding: 40px; padding: 40px;
text-align: left; text-align: left;
margin: -30px 0 0px; /* Top -30, right 0, bottom 0, left 0 */ margin: 0px 0 0px; /* Top -30, right 0, bottom 0, left 0 */
zoom: 0.9; /* WebView2 zoom level */ zoom: 0.9; /* WebView2 zoom level */
} }
/* Styling for links, e.g. Share, GitHub etc. */ /* Hide all containers except the clippy-container and system-container by default */
.workspace-content .glassy-box:not(#stepClippyHeader):not(#stepHomeHeader) {
display: none;
}
/* Workspace Action Buttons */
.workspace-action-buttons {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.workspace-btn {
flex: 1 1 auto; /* Each button will take equal space */
text-align: left;
background-color: transparent !important;
border: none !important;
box-shadow: none !important;
}
.workspace-btn:hover {
background: linear-gradient(45deg, #926CFF, #FDCBFF); /* Purple Gradient on hover */
color: white;
}
.workspace-btn .ws-action-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
}
.workspace-btn .ws-action-description {
font-size: 14px;
color: #666;
margin-bottom: 8px;
}
/* More and Less buttons */
.additional-buttons {
display: flex;
justify-content: space-between;
}
.additional-buttons .ws-add-button {
border: none;
background-color: transparent;
font-size: 13px;
margin: 4px 2px;
box-shadow: none !important;
}
.ws-add-button:disabled {
background-color: #ddd;
color: #666;
cursor: not-allowed;
}
/* Global container */
.container {
display: flex;
flex-wrap: wrap; /* Wrap to next line */
}
.clippy-container {
flex: 2; /* Initial width */
display: flex;
flex-direction: column;
align-items: stretch;
margin-top: 20px;
}
.workspace-container {
flex: 3; /* Initial width */
margin-left: 0px;
}
@media (max-width: 600px) {
.container {
flex-direction: column; /* Change to a column layout on smaller screens */
}
.clippy-container {
order: 2; /* Move left container to bottom */
margin-top: 0; /* Remove top margin */
margin-bottom: 20px; /* Add bottom margin */
}
.workspace-container {
order: 1; /* Move workspace container to top */
}
}
/* Navigation menu container */
.navigation-menu {
padding: 0;
margin-left: auto;
margin-bottom: 10px;
}
/* Menu item styles */
.navigation-menu a {
text-decoration: none;
color: #333;
font-weight: 600; /* Semi-bold font */
font-size: 16px;
transition: color 0.3s ease, transform 0.3s ease;
position: relative;
margin-right: 20px;
}
/* Hover effect */
.navigation-menu a:hover {
color: #0078d4; /* Blue accent color */
}
/* Active/focus state */
.navigation-menu a.active,
.navigation-menu a:focus {
color: #0078d4;
outline: none;
}
/* Indicator for active menu item */
.navigation-menu a.active::before,
.navigation-menu a:focus::before {
content: '';
position: absolute;
top: 50%;
left: -15px;
transform: translateY(-50%);
width: 10px;
height: 10px;
background: radial-gradient(circle, #aa00ff, #ff00dd); /* Purple to pink gradient */
border-radius: 50%; /* Round shape */
animation: blink 1s infinite alternate; /* Blinking animation */
}
/* OPTIONAL: Navigation menu Tooltip text */
.navigation-menu a::after {
content: attr(data-tooltip);
position: absolute;
color: #000;
padding: 5px 10px;
border-radius: 5px;
font-size: 14px;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
bottom: -35px;
left: 70px;
transform: translateX(-50%);
white-space: nowrap;
background-color: rgba(255, 255, 255, 0.9);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* OPTIONAL: Show tooltip on hover */
.navigation-menu a:hover::after {
opacity: 1;
visibility: visible;
}
/* Navigation menu Active Blinking animation */
@keyframes blink {
from {
opacity: 1; /* Fully visible */
}
to {
opacity: 0; /* Fully transparent */
}
}
/* Workspace / Home Header styling */
#stepHomeHeader {
top: 30px;
background: #f2e6f0;
border-radius: 12px;
padding: 20px;
margin: 10px 10px;
z-index: 998;
}
/* All other Header styling */
#stepClippyHeader,
#stepSystemHeader,
#stepAppsHeader,
#stepAppxHeader,
#stepStoreHeader {
top: 30px;
background: linear-gradient(45deg, #f0f0f0 0%, #dfe3f1 50%, #f0f0f0 100%); /* Light gradient */
border-radius: 12px;
padding: 20px;
margin: 10px 10px;
margin-bottom: 50px;
z-index: 998;
transition: background-color 0.3s ease; /* Smooth transition */
}
/* Hover effect */
#stepClippyHeader:hover,
#stepSystemHeader:hover,
#stepAppsHeader:hover,
#stepAppxHeader:hover,
#stepStoreHeader:hover {
background: linear-gradient(45deg, #f5f5f5 0%, #c9d6ff 50%, #f5f5f5 100%); /* Light gradient on hover */
}
/* Background color */
#stepClippyHeader,
#stepSystemHeader,
#stepAppsHeader,
#stepAppxHeader,
#stepStoreHeader {
background: linear-gradient(45deg, #f0f0f0 0%, #ffccff 50%, #f0f0f0 100%); /* Light magenta/pink gradient */
}
/* Styling for links */
.links-container { .links-container {
position: absolute; position: absolute;
top: 10px; top: 10px;
@ -19,191 +235,153 @@ body {
color: #5B7BD1; /* Windows 11 Blue */ color: #5B7BD1; /* Windows 11 Blue */
text-decoration: none; text-decoration: none;
transition: color 0.3s ease; transition: color 0.3s ease;
margin-right: 10px; /*Spacing between links */
} }
.modern-link:hover { .modern-link:hover {
color: #f7a0f5; color: #f7a0f5;
} }
/* Styles for contribution Dropdown menu */ /* Styling for the GitHub follow link */
.dev-dropbtn { .github-follow-link {
background-color: transparent; display: inline-block;
color: #5B7BD1; padding: 10px 20px;
padding: 8px 16px; font-size: 14px;
font-size: inherit; font-weight: bold;
color: #fff;
text-decoration: none;
background-image: linear-gradient(to right, #ff82a9, #d291bc, #ffb6c1);
border-radius: 30px;
border: none;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.github-follow-link:hover {
transform: scale(1.05);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.github-follow-link::before {
content: '⭐';
margin-right: 10px;
}
/* BADGES */
/*Support statement for Handhelds in CoTweaker Plugin / Setup */
.handheld-badge {
position: absolute;
top: 20px;
right: 20px;
background-color: #6f4fdc;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
margin-left: 8px;
border-radius: 5px;
}
/* Badges in Workspace / Home */
.recommended-badge,
.advanced-badge,
.expert-badge {
display: none;
position: absolute;
top: 0;
right: 0;
transform: translate(50%, -50%); /* Position badges diagonally */
padding: 4px 8px;
border-radius: 3px;
color: white;
}
.workspace-btn:hover .recommended-badge,
.workspace-btn:hover .advanced-badge,
.workspace-btn:hover .expert-badge {
display: inline-block;
}
/* Recommended badge color */
.recommended-badge {
background-color: #4CAF50; /* Green */
}
/* Advanced badge color */
.advanced-badge {
background-color: #2196F3; /* Blue */
}
/* Expert badge color */
.expert-badge {
background-color: #DD3333; /* Red */
}
/* Toggle light/dark mode */
.ui-toggle-button {
color: black;
border: none;
border-radius: 5px;
font-size: 16px;
transition: background-color 0.3s;
}
.ui-toggle-button:hover {
background: linear-gradient(135deg, #FFBBFF, #D699D6, #FFBBFF);
}
/* Settings menu */
.settings-dropbtn {
background-color: transparent;
padding: 0;
font-size: 24px;
border: none; border: none;
cursor: pointer;
border-radius: 5px; border-radius: 5px;
width: 32px; /* Width for wider click area */
text-align: center;
} }
/* Dropdown container (hidden by default) */ /* Dropdown container (hidden by default) */
.dev-dropdown { .settings-dropdown {
position: relative; position: relative;
display: inline-block; display: inline-block;
z-index: 99999; z-index: 99999;
margin-right: 10px; /* Spacing between GitHub icon and dropdown */
} }
/* Dropdown content */ /* Dropdown content */
.dev-dropdown-content { .settings-dropdown-content {
display: none; display: none;
position: absolute; position: absolute;
background-color: #f9f9f9; background-color: #f9f9f9;
min-width: 160px; min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1; z-index: 1;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
border-radius: 5px; border-radius: 5px;
right: 0;
} }
/* Links inside dropdown */ /* Show the dropdown menu on hover */
.dev-dropdown-content a { .settings-dropdown:hover .settings-dropdown-content {
display: block;
}
/* Dropdown links */
.settings-dropdown-content a {
color: black; color: black;
padding: 12px 16px; padding: 12px 16px;
text-decoration: none; text-decoration: none;
display: block; display: block;
} }
.dev-dropdown-content a:hover { /* Change color of dropdown links on hover */
background-color: #f1f1f1; .settings-dropdown-content a:hover {
background-color: #ddd;
} }
.dev-dropdown:hover .dev-dropdown-content { /* Change color of dropdown button on hover */
display: block; .settings-dropdown:hover .settings-dropbtn {
} color: #000;
background-color: #f7e2f5;
/* Change the background color of dropdown button when the dropdown content is shown */
.dev-dropdown:hover .dev-dropbtn {
background-color: #5B7BD1;
color: white;
}
/* Styles for Pilot dropdown menu */
.dropdown-container {
position: fixed;
left: 50%;
z-index: 99999; /* Top most and over Clippy */
}
.dropdown {
display: inline-block;
position: relative;
}
.dropbtn {
padding: 15px 25px; /* Padding for a larger touch area */
font-size: 18px;
cursor: pointer;
border: none;
background: linear-gradient(45deg, #a034d3, #943ad5, #744bdb);
color: white;
border-radius: 25px; /* Increased border radius */
box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.2),
0px 0px 40px rgba(160, 52, 211, 0.6), /* Glow effect */
0px 0px 60px rgba(148, 58, 213, 0.4); /* Glow effect with magenta */
transition: background 0.3s, box-shadow 0.3s;
}
.dropbtn:hover {
background: linear-gradient(45deg, #6a49d6, #943ad5, #744bdb); /* Dark gradient on hover */
box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.3),
0px 0px 60px rgba(106, 73, 214, 0.8), /* Larger glow effect */
0px 0px 90px rgba(148, 58, 213, 0.6); /* Strongest glow effect with magenta */
}
.dropdown-content {
display: none;
position: absolute;
background-color: #ffffff;
box-shadow: 0px -8px 16px rgba(0, 0, 0, 0.1);
min-width: 300px;
border-radius: 8px;
bottom: 100%; /* Position dropdown above the button */
transform: translateX(-50%); /* Center alignment */
}
.dropdown-content ul {
list-style-type: none;
padding: 0;
margin: 0;
}
.dropdown-content ul li {
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown-content ul li:hover {
background-color: #f0f0f0; /* Light gray on hover */
}
.dropdown:hover .dropdown-content {
display: block;
}
.dropdown:hover .dropbtn {
background-color: #f0f0f0; /* Light gray on hover */
border-color: #a5a5a5; /* Slightly darker border on hover */
}
/* Styles for step visibility */
.setup-step {
display: none;
}
.setup-step.active {
display: block;
}
/* Styles for Back and Next buttons */
.steps-assistant {
display: flex;
justify-content: space-between;
align-items: center;
position: fixed;
bottom: 0px;
gap: 10px; /* Minimum distance between buttons */
z-index: 1000;
}
.steps-assistant button:focus {
outline: none; /* Remove default focus outline */
box-shadow: 0 0 0 3px rgba(210, 54, 247, 0.3);
}
/* Bottom Navigation container */
.bottom-container {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background-color: #f2f2f2; /* Light gray background */
padding: 20px;
border-top: 1px solid #d1d1d1; /* Light seperation border at top */
backdrop-filter: blur(10px);
z-index: 999; /* Ensure it stays below steps assistant */
}
/* Step-by-step Back/Next buttons */
.bottom-container button {
padding: 10px 20px;
font-size: 14px;
border: none;
border-radius: 8px;
background-color: #4d4ccb;
color: #ffffff;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}
.bottom-container button:hover {
background-color: #8f3cd5;
}
.bottom-container button:disabled {
background-color: #c4c4c4; /* Light gray for disabled state */
color: #7a7a7a; /* Dark gray text color */
cursor: not-allowed;
} }
/* Styling for back button */ /* Styling for back button */
@ -223,62 +401,11 @@ body {
background-color: #f0f0f0; background-color: #f0f0f0;
} }
/* Show app related menus like Switch to Copilot, Settings next to each other */ /* Main Container styling */
.menu-flex-container {
display: flex;
justify-content: space-between;
}
.left-menu,
.right-menu {
display: flex;
flex-direction: column;
gap: 8px;
}
/* Ask Clippy item */
.ask-clippy {
font-weight: bold;
}
/* Basic styling for Plugins Dropdown menu */
.menu {
list-style: none;
font-size: 14px;
padding: 0;
margin: 0;
background-color: rgba(231, 222, 225, 0.2); /* Glassy and transparent background color */
border: 1px solid #e1e1e1;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
cursor: pointer;
}
.menu li {
padding: 10px;
margin-right: 3px;
margin-left: 3px;
border-radius: 8px;
}
.menu li:last-child {
border-bottom: none;
}
.menu li:hover {
background-color: #ffffff; /* Hover background color */
}
.menu li span.menu-icon {
margin-right: 10px;
}
/* Container styling */
.glassy-box { .glassy-box {
position: relative; position: relative;
flex: 1; /* Make glassy-box grow to fill remaining space */ flex: 1; /* Make glassy-box grow to fill remaining space */
max-width: 100%; max-width: 100%;
margin-right: 20px;
} }
/* UI: Glassy-Box buttons in Headers/Plugins, e.g. CoTweaker, Decrapify etc. */ /* UI: Glassy-Box buttons in Headers/Plugins, e.g. CoTweaker, Decrapify etc. */
@ -294,7 +421,6 @@ body {
color: black; color: black;
background: #fefdfe; background: #fefdfe;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); /* Shadow effect */ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); /* Shadow effect */
cursor: pointer;
} }
.glassy-box button:hover { .glassy-box button:hover {
@ -303,9 +429,15 @@ body {
/* Clippy Animation */ /* Clippy Animation */
@keyframes clippyAnimation { @keyframes clippyAnimation {
0% { transform: translateY(0); } 0% {
50% { transform: translateY(-10px); } transform: translateY(0) rotate(0deg);
100% { transform: translateY(0); } }
50% {
transform: translateY(-5px) rotate(-2deg);
}
100% {
transform: translateY(0) rotate(0deg);
}
} }
/* Styling for Clippy container */ /* Styling for Clippy container */
@ -331,36 +463,36 @@ body {
/* Styling for logContainer */ /* Styling for logContainer */
#logContainer { #logContainer {
position: fixed; position: fixed;
bottom: 110px; bottom: 80px;
left: 20px; left: 20px;
right: calc(20% + 100px); right: calc(20% + 100px);
z-index: 999; /* Ensure it's below Clippy */ z-index: 998;
background-color: #f7f6ca; /* Yellow color */ background-color: #fff5c4;
font-size: 14px; font-family: "Comic Sans MS", "MS Sans Serif", Arial, sans-serif; /* Vintage-inspired font stack */
color: #000000; font-size: 14px;
border: 2px solid #000000; color: #000080; /* Blue-ish color to match Clippy's text */
border-radius: 10px; border: 2px solid #000080;
padding: 2px; border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); padding: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
} }
/* Triangle pointer for logContainer */ /* Triangle pointer for logContainer */
#logContainer::before { #logContainer::before {
content: ""; content: "";
position: absolute; position: absolute;
bottom: calc(50% - 10px); /* Center vertically */ bottom: 15px; /* Distance from the bottom */
right: -20px; /* Position on the right side */ right: -16px; /* from the right */
border-width: 10px; border-width: 8px;
border-style: solid; border-style: solid;
border-color: transparent transparent transparent #000; border-color: transparent transparent transparent #000080;
z-index: -1; /* Ensure it's behind logContainer */ z-index: -1;
} }
/* UI: Chatbox Container */ /* UI: Chatbox Container */
.chatbox-container { .chatbox-container {
left: 30px; left: 30px;
width: 65%;
max-height: 80%; max-height: 80%;
padding: 10px; padding: 10px;
backdrop-filter: blur(10px); /* Apply blur effect to the background */ backdrop-filter: blur(10px); /* Apply blur effect to the background */
@ -377,7 +509,6 @@ body {
/* Chatbox: input styling */ /* Chatbox: input styling */
#chatbox { #chatbox {
background-color: rgba(255, 255, 255, 0.9); background-color: rgba(255, 255, 255, 0.9);
width: 92%;
height: 20px; height: 20px;
padding: 12px; padding: 12px;
font-size: 16px; font-size: 16px;
@ -424,9 +555,8 @@ body {
text-align: left; text-align: left;
margin-bottom: 8px; margin-bottom: 8px;
border-radius: 10px; border-radius: 10px;
background: transparent; /* Transparent background */ background: transparent;
cursor: pointer; min-width: 100px;
min-width: 150px;
transition: transform 0.3s ease; transition: transform 0.3s ease;
flex: 1; flex: 1;
border: none; border: none;
@ -436,14 +566,15 @@ body {
#buttons-container button:nth-child(3) { #buttons-container button:nth-child(3) {
font-weight: 500; font-weight: 500;
background: white; background: white;
border: 1px solid #7a336c; /* Add cool border */ border: 1px solid #c0c0c0;
border-radius: 1px;
} }
/* Pink border on hover */
#buttons-container button:hover, #buttons-container button:hover,
#buttonsAppx-container button:hover, #buttonsAppx-container button:hover,
#refreshButton:hover { #refreshButton:hover {
border: 1px solid magenta; border: 1px dashed #7f7f7f;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
} }
/* Scale up the button on hover */ /* Scale up the button on hover */
@ -506,41 +637,11 @@ with a maximum of 6 buttons being displayed at widths of 1200px or larger based
} }
} }
/* Header styling */
#stepHomeHeader,
#stepSystemHeader,
#stepAppsHeader,
#stepAppxHeader,
#steptweakHeader,
#stepCopilotlessHeader {
top: 30px;
background: linear-gradient(45deg, #e9ddf2 40%, #cbe4ff 100%);
border-radius: 12px;
padding: 20px;
margin: 10px 0;
margin-bottom: 50px; /* Add margin to Chatbox */
z-index: 998; /* Always lower z-index than logContainer */
}
/* PLUGIN: CoTweaker */ /* PLUGIN: CoTweaker */
/* UI: Header styling for Toggle Switches in CoTweaker */ /* UI: Header styling for Toggle Switches in CoTweaker */
/* Highlight Feature status in CoTweaker js backend */ /* Highlight Feature status in CoTweaker js backend */
.CoTweakerFeatureON { color: green; } .CoTweakerFeatureON { color: green; }
.CoTweakerFeatureOFF { color: red; } .CoTweakerFeatureOFF { color: red; }
/* Support statement for Handhelds */
.handheld-badge {
position: absolute;
top: 20px;
right: 20px;
background-color: #6f4fdc;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
margin-left: 8px;
border-radius: 5px;
}
/* Styling for the section headers */ /* Styling for the section headers */
.section-header { .section-header {
@ -605,6 +706,44 @@ input[type="checkbox"]:checked + .toggle-switch-label:before {
cursor: help; cursor: help;
} }
/* PLUGIN: Decrapify */
.package-group {
margin-bottom: 20px;
}
.package-group h2 {
font-size: 24px;
color: #333;
margin-bottom: 10px;
}
.toggle-switch-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-gap: 10px;
}
.package-toggle-switch {
display: flex;
align-items: center;
}
.package-toggle-switch input {
display: none;
}
.package-toggle-switch label {
cursor: pointer;
background-color: #ccc;
border-radius: 10px;
padding: 8px 12px;
}
.package-toggle-switch input:checked + label {
background-color: #4CAF50;
color: #fff;
}
/* PLUGIN: WingetUI */ /* PLUGIN: WingetUI */
#appList { #appList {
display: flex; display: flex;
@ -629,7 +768,7 @@ cursor: help;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); /* Slightly larger shadow on hover */ box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); /* Slightly larger shadow on hover */
} }
/* PLUGIN: Extensions */ /* STORE: Extensions */
#plugin-categories-container { #plugin-categories-container {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -674,7 +813,6 @@ cursor: help;
border-radius: 3px; border-radius: 3px;
padding: 5px 10px; padding: 5px 10px;
font-size: 14px; font-size: 14px;
cursor: pointer;
transition: background-color 0.3s; transition: background-color 0.3s;
} }
.plugin-entry .execute-button:hover { .plugin-entry .execute-button:hover {

View File

@ -0,0 +1,835 @@
/* Dark Mode for Winpilot by Belim */
/* Main body */
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(to right, #1e1e1e, #2b2b2b); /* Modern dark gradient */
color: #ffffff; /* White text color */
padding: 40px;
text-align: left;
margin: 0;
zoom: 0.9; /* WebView2 zoom level */
}
/* Hide all containers except the clippy-container and system-container by default */
.workspace-content .glassy-box:not(#stepClippyHeader):not(#stepHomeHeader) {
display: none;
}
/* Workspace Action Buttons */
.workspace-action-buttons {
display: flex;
flex-wrap: wrap;
gap: 5px;
}
.workspace-btn {
flex: 1 1 auto; /* Each button will take equal space */
text-align: left;
background-color: transparent !important;
border: none !important;
box-shadow: none !important;
}
.workspace-btn:hover {
background: linear-gradient(45deg, #4E148C, #FFD54F); /* Dark Purple Gradient on hover */
transform: scale(1.05);
padding: 10px 18px;
}
.workspace-btn .ws-action-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
}
.workspace-btn .ws-action-description {
font-size: 14px;
margin-bottom: 8px;
}
/* More and Less buttons */
.additional-buttons {
display: flex;
justify-content: space-between;
}
.additional-buttons .ws-add-button {
border: none;
background-color: transparent;
font-size: 13px;
margin: 4px 2px;
box-shadow: none !important;
}
.ws-add-button:disabled {
background-color: #ddd;
color: #666;
cursor: not-allowed;
}
/* Global container */
.container {
display: flex;
flex-wrap: wrap; /* Wrap to next line */
}
/* Gloabel container */
.container {
display: flex;
flex-wrap: wrap; /* Wrap to next line */
}
.clippy-container {
flex: 2; /* Initial width */
display: flex;
flex-direction: column;
align-items: stretch;
margin-top: 20px;
}
.workspace-container {
flex: 3; /* Initial width */
margin-left: 0px;
}
@media (max-width: 600px) {
.container {
flex-direction: column; /* Change to a column layout on smaller screens */
}
.clippy-container {
order: 2; /* Move left container to bottom */
margin-top: 0; /* Remove top margin */
margin-bottom: 20px; /* Add bottom margin */
}
.workspace-container {
order: 1; /* Move workspace container to top */
}
}
/* Navigation menu container */
.navigation-menu {
padding: 0;
margin-left: auto;
margin-bottom: 10px;
}
/* Menu item styles */
.navigation-menu a {
margin-right: 10px;
text-decoration: none;
color: #999;
font-weight: bold;
font-size: 16px;
transition: color 0.3s ease, transform 0.3s ease;
position: relative;
margin-right: 20px;
}
/* Hover effect */
.navigation-menu a:hover {
color: #ff00dd; /* Light magenta on hover */
}
/* Active/focus state */
.navigation-menu a.active,
.navigation-menu a:focus {
color: #ff00dd; /* Light magenta for active link */
outline: none;
transform: scale(1.1);
}
/* Indicator for active menu item */
.navigation-menu a.active::before,
.navigation-menu a:focus::before {
content: '';
position: absolute;
top: 50%;
left: -15px;
transform: translateY(-50%);
width: 10px;
height: 10px;
background: radial-gradient(circle, #aa00ff, #ff00dd); /* Light magenta to pink gradient */
border-radius: 50%;
animation: blink 1s infinite alternate;
}
/* OPTIONAL: Navigation menu Tooltip text */
.navigation-menu a::after {
content: attr(data-tooltip);
position: absolute;
color: #fff;
padding: 5px 10px;
border-radius: 5px;
font-size: 14px;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
bottom: -35px;
left: 60px;
transform: translateX(-50%);
white-space: nowrap; /* Prevent long text from breaking */
}
/* OPTIONAL: Show tooltip on hover */
.navigation-menu a:hover::after {
opacity: 1;
visibility: visible;
}
/* Navigation menu Active Blinking animation */
@keyframes blink {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
/* Workspace Header styling */
#stepHomeHeader {
top: 30px;
background: linear-gradient(45deg, #1f1f1f 0%, #303030 50%, #1f1f1f 100%); /* Dark gradient */
border-radius: 12px;
padding: 20px;
margin: 10px 10px;
z-index: 998;
}
/* All other Header styling */
#stepClippyHeader,
#stepSystemHeader,
#stepAppsHeader,
#stepAppxHeader,
#stepStoreHeader {
top: 30px;
background: linear-gradient(45deg, #1f1f1f 0%, #303030 50%, #1f1f1f 100%); /* Dark gradient */
border-radius: 12px;
padding: 20px;
margin: 10px 10px;
margin-bottom: 50px;
z-index: 998;
transition: background-color 0.3s ease;
}
/* Hover effect */
#stepClippyHeader:hover,
#stepSystemHeader:hover,
#stepAppsHeader:hover,
#stepAppxHeader:hover,
#stepStoreHeader:hover {
background: linear-gradient(45deg, #303030 0%, #424242 50%, #303030 100%); /* Dark gradient on hover */
}
/* Background color */
#stepClippyHeader,
#stepSystemHeader,
#stepAppsHeader,
#stepAppxHeader,
#stepStoreHeader {
background: linear-gradient(45deg, #1f1f1f 0%, #990099 50%, #1f1f1f 100%); /* Dark magenta/purple gradient */
}
/* Styling for links */
.links-container {
position: absolute;
top: 10px;
right: 10px;
}
.modern-link {
color: #ff00dd; /* Light magenta */
text-decoration: none;
transition: color 0.3s ease;
}
.modern-link:hover {
color: #ff99ff; /* Lighter magenta on hover */
}
/* Styling for the GitHub follow link */
.github-follow-link {
display: inline-block;
padding: 10px 20px;
font-size: 14px;
font-weight: bold;
color: #fff;
text-decoration: none;
background-image: linear-gradient(to right, #9b59b6, #ff00ff, #ff6ec7);
border-radius: 30px;
border: none;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.github-follow-link:hover {
transform: scale(1.05);
box-shadow: 0 4px 10px rgba(255, 255, 255, 0.1);
}
.github-follow-link::before {
content: '⭐';
margin-right: 10px;
}
/* BADGES */
/*Support statement for Handhelds in CoTweaker Plugin / Setup */
.handheld-badge {
position: absolute;
top: 20px;
right: 20px;
background-color: #6f4fdc;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
margin-left: 8px;
border-radius: 5px;
}
/* Badges in Workspace / Home */
.recommended-badge,
.advanced-badge,
.expert-badge {
display: none;
position: absolute;
top: 0;
right: 0;
transform: translate(50%, -50%); /* Position badges diagonally */
padding: 4px 8px;
border-radius: 3px;
color: white;
}
.workspace-btn:hover .recommended-badge,
.workspace-btn:hover .advanced-badge,
.workspace-btn:hover .expert-badge {
display: inline-block;
}
/* Recommended badge color */
.recommended-badge {
background-color: #4CAF50; /* Green */
color: white;
}
/* Advanced badge color */
.advanced-badge {
background-color: #2196F3; /* Blue */
color: white;
}
/* Expert badge color */
.expert-badge {
background-color: #DD3333; /* Red */
color: white;
}
/* Toggle light/dark mode */
.ui-toggle-button {
background-color: #292929;
color: white;
border: none;
border-radius: 5px;
font-size: 16px;
transition: background-color 0.3s;
}
.ui-toggle-button:hover {
background: linear-gradient(135deg, #FF00FF, #800080, #FF1493);
}
/* Settings menu */
.settings-dropbtn {
background-color: transparent;
color: #e8e8e8;
padding: 0;
font-size: 24px;
border: none;
border-radius: 5px;
width: 32px; /* Width for wider click area */
text-align: center;
}
/* Dropdown container (hidden by default) */
.settings-dropdown {
position: relative;
display: inline-block;
z-index: 99999;
}
/* Dropdown content */
.settings-dropdown-content {
display: none;
position: absolute;
background-color: #1f1f1f; /* Dark background */
min-width: 160px;
z-index: 1;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
border-radius: 5px;
right: 0;
}
/* Links inside dropdown */
.settings-dropdown-content a {
color: #ffffff; /* White text */
padding: 12px 16px;
text-decoration: none;
display: block;
}
.settings-dropdown-content a:hover {
background-color: #424242; /* Darker background on hover */
}
.settings-dropdown:hover .settings-dropdown-content {
display: block;
}
/* Change the background color of dropdown button when the dropdown content is shown */
.settings-dropdown:hover .settings-dropbtn {
background-color: #ff00dd; /* Light magenta */
color: #ffffff; /* White text */
}
/* Styling for back button */
#btnBack {
position: absolute;
top: 10px;
left: 10px;
background-color: transparent;
color: #999;
border: none;
}
#btnBack .icon {
font-family: 'Segoe MDL2 Assets';
font-size: 14px;
}
#btnBack:hover {
background-color: #333333; /* Darker background on hover */
}
/* Main Container styling */
.glassy-box {
position: relative;
flex: 1;
max-width: 100%;
}
/* UI: Glassy-Box buttons in Headers/Plugins, e.g. CoTweaker, Decrapify etc. */
.glassy-box button {
position: relative;
font-family: "Segoe UI";
font-size: 14px;
display: inline-block;
padding: 10px 20px;
border: 1px solid #ffffff; /* White border */
margin-bottom: 5px;
border-radius: 10px;
color: #ffffff; /* White text */
background: #990099; /* Dark magenta background */
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}
.glassy-box button:hover {
border: 1px solid #ff00dd; /* Light magenta border on hover */
}
/* Clippy Animation */
@keyframes clippyAnimation {
0% {
transform: translateY(0) rotate(0deg);
}
50% {
transform: translateY(-5px) rotate(-2deg);
}
100% {
transform: translateY(0) rotate(0deg);
}
}
/* Styling for Clippy container */
#clippy-container {
position: fixed;
bottom: 20px;
right: -150px;
z-index: 999;
animation: clippyAnimation 2s infinite;
}
/* Styling for Clippy image */
#clippy-container img {
width: 180px;
height: auto;
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.5)); /* White drop shadow */
}
/* Styling for Assisted buttons container inside logContainer */
.assisted-container {
display: flex;
}
/* Styling for logContainer */
#logContainer {
position: fixed;
bottom: 80px;
left: 20px;
right: calc(20% + 100px);
z-index: 998;
background-color: rgba(255, 255, 204, 0.8); /* Light transparent yellow-orange background */
font-family: "Comic Sans MS", "MS Sans Serif", Arial, sans-serif; /* Vintage-inspired font stack */
font-size: 14px;
color: #000080; /* Blue-ish color to match Clippy's text */
border: 3px solid #000080;
border-radius: 10px;
padding: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* Triangle pointer for logContainer */
#logContainer::before {
content: "";
position: absolute;
bottom: 20px; /* Distance from the bottom */
right: -16px; /* from the right */
border-width: 8px;
border-style: solid;
border-color: transparent transparent transparent rgba(255, 255, 204, 0.9); /* Light transparent yellow-orange triangle pointer */
z-index: -1;
}
/* UI: Chatbox Container */
.chatbox-container {
left: 30px;
width: 65%;
max-height: 80%;
padding: 10px;
backdrop-filter: blur(10px); /* Apply blur effect to the background */
}
/* Additional style for chatbox container */
.chatbox-container input {
border-radius: 8px;
padding: 15px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
color: #f0f0f0;
}
/* Chatbox: input styling */
#chatbox {
background-color: rgba(51, 51, 51, 0.9);
width: 120%;
height: 20px;
padding: 12px;
font-size: 16px;
border: none; /* Remove default border */
border: 1px solid #666666;
border-radius: 10px;
margin-bottom: 10px;
border-bottom: 1px solid #7a336c; /* Magenta bottom border */
outline: none;
}
.chatbox-items div {
display: inline-block;
padding: 5px;
font-size: 14px;
cursor: pointer;
background-color: #333333;
border: 2px solid #7a336c; /* Rounded Microsoft Copilot magenta border for each result */
border-radius: 8px; /* Rounded corners */
margin-bottom: 10px;
}
.chatbox-items div:hover {
background-color: #555555;
color: magenta;
}
/* Assisted buttons container */
/* Button sizes for the buttons container */
#buttons-container,
#buttonsAppx-container {
display: flex;
flex-wrap: wrap; /* Allow buttons to wrap to the next line if necessary */
gap: 8px; /* Let's add some spacing between buttons */
margin-bottom: 8px; /* Add some space after buttons-container */
}
/* Common button styles */
#buttons-container button,
#buttonsAppx-container button,
#refreshButton {
font-family: "Comic Sans MS", sans-serif; /* Because Clippy loved Comic Sans! */
font-size: 13px;
text-align: left;
margin-bottom: 8px;
border-radius: 10px;
background: transparent;
min-width: 100px;
transition: transform 0.3s ease;
flex: 1;
border: none;
}
/* Styling for the middle/third button */
#buttons-container button:nth-child(3) {
font-weight: 500;
border: 1px solid #808080;
border-radius: 1px;
}
#buttons-container button:hover,
#buttonsAppx-container button:hover,
#refreshButton:hover {
border: 1px dashed #808080;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);
}
/* Scale up the button on hover */
#buttonsAppx-container button:hover {
transform: scale(1.2);
}
/* Add a trash/bin icon before the button text */
#buttonsAppx-container button::before {
content: "📱 Remove ";
}
#refreshButton:hover {
height: 20px;
border-color: #0078cf;
}
/* ASSISTED BUTTONS: Additional buttons are shown progressively as the container width increases,
with a maximum of 6 buttons being displayed at widths of 1200px or larger based on the size of the viewport. */
/* Initially hide all buttons */
#buttons-container button {
display: none;
}
/* Show the first two buttons initially */
#buttons-container button:nth-child(-n+2) {
display: inline-block;
}
/* Show additional buttons as container width increases */
@media screen and (min-width: 400px) {
#buttons-container button:nth-child(-n+2) {
display: inline-block;
}
}
@media screen and (min-width: 600px) {
#buttons-container button:nth-child(-n+4) {
display: inline-block;
}
}
@media screen and (min-width: 800px) {
#buttons-container button:nth-child(-n+5) {
display: inline-block;
}
}
@media screen and (min-width: 1000px) {
#buttons-container button:nth-child(-n+6) {
display: inline-block;
}
}
/* Ensure a maximum of 6 buttons are shown */
@media screen and (min-width: 1200px) {
#buttons-container button {
display: inline-block;
}
}
/* PLUGIN: CoTweaker */
/* UI: Header styling for Toggle Switches in CoTweaker */
/* Highlight Feature status in CoTweaker js backend */
.CoTweakerFeatureON { color: green; }
.CoTweakerFeatureOFF { color: red; }
/* Styling for the section headers */
.section-header {
font-size: 1.2em;
font-weight: bold;
margin-top: 20px;
color: #f0f0f0;
border-bottom: 2px solid rgba(255, 0, 255, 0.4); /* Semi-transparent magenta border */
padding-bottom: 10px;
}
/* Styling for the settings group */
.settings-group {
margin-bottom: 30px;
padding: 20px;
}
/* Styling for the descriptions */
.description {
display: none; /* Initially hide descriptions */
margin-top: 10px;
}
/* Styling for the individual settings */
.toggle-switch-label {
position: relative;
display: inline-block;
width: 40px;
height: 20px;
background-color: #ccc;
border-radius: 20px;
transition: background-color 0.3s;
vertical-align: middle;
margin-right: 10px;
}
.toggle-switch-label:before {
content: '';
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: white;
top: 2px;
left: 2px;
transition: transform 0.3s;
}
input[type="checkbox"] {
display: none;
}
input[type="checkbox"]:checked + .toggle-switch-label {
background-color: #86d993; /* Green color when checked */
}
input[type="checkbox"]:checked + .toggle-switch-label:before {
transform: translateX(20px); /* Move the circle to the right when checked */
}
.checkbox-label {
cursor: help;
}
/* PLUGIN: Decrapify */
.package-group {
margin-bottom: 20px;
}
.package-group h2 {
font-size: 24px;
color: #fff; /* Light text color */
margin-bottom: 10px;
}
.toggle-switch-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-gap: 10px;
}
.package-toggle-switch {
display: flex;
align-items: center;
}
.package-toggle-switch input {
display: none;
}
.package-toggle-switch label {
cursor: pointer;
background-color: #212121; /* Darker background */
border-radius: 10px;
padding: 8px 12px;
color: #fff;
}
.package-toggle-switch input:checked + label {
background-color: #1976D2; /* Windows 11 accent color */
color: #fff;
}
/* PLUGIN: WingetUI */
#appList {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.app-item {
background: linear-gradient(45deg, #2c2c2c 0%, #333333 20%, #444444 40%, #555555 60%, #666666 80%, #2c2c2c 100%);
border-radius: 12px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
padding: 20px;
width: 100%;
box-sizing: border-box;
transition: transform 0.3s;
width: calc(33.33% - 20px); /* Width of each app item */
margin-bottom: 20px; /* Space between rows */
}
.app-item:hover {
transform: scale(1.05);
box-shadow: 0 0 30px rgba(0, 0, 0, 0.2); /* Slightly larger shadow on hover */
}
/* PLUGIN: Extensions */
#plugin-categories-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
/* Preinstalled badge */
.plugin-badge {
background-color: #8f3cd5;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
margin-left: 8px;
}
.plugin-entry {
width: calc(33.33% - 20px);
background-color: #f2effd;
border: 1px solid #e8e8ed;
border-radius: 5px;
padding: 20px;
margin-bottom: 10px;
}
.plugin-entry h3 {
color: #333;
font-size: 18px;
margin-bottom: 10px;
}
.plugin-entry p {
color: #666;
font-size: 14px;
margin-bottom: 15px;
}
.plugin-entry .execute-button {
background-color: #e26bf8;
color: #fff;
border: none;
border-radius: 3px;
padding: 5px 10px;
font-size: 14px;
transition: background-color 0.3s;
}
.plugin-entry .execute-button:hover {
background-color: #8f3cd5;
}

View File

@ -2,81 +2,81 @@
{ {
"name": "BingNews", "name": "BingNews",
"description": "News app from Microsoft", "description": "News app from Microsoft",
"removeCommand": "Get-AppxPackage -AllUsers *BingNews* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *BingNews* | Remove-AppxPackage"
}, },
{ {
"name": "ZuneVideo", "name": "ZuneVideo",
"description": "Video app from Microsoft", "description": "Video app from Microsoft",
"removeCommand": "Get-AppxPackage -AllUsers *ZuneVideo* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *ZuneVideo* | Remove-AppxPackage"
}, },
{ {
"name": "MicrosoftOfficeHub", "name": "MicrosoftOfficeHub",
"description": "This is preinstalled Microsoft crapware.", "description": "This is preinstalled Microsoft crapware.",
"removeCommand": "Get-AppxPackage -AllUsers *MicrosoftOfficeHub* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *MicrosoftOfficeHub* | Remove-AppxPackage"
}, },
{ {
"name": "GetHelp", "name": "GetHelp",
"description": "The Get Help app empowers customers to self-help with troubleshooters, instant answers, Microsoft support articles, and more, before contacting assisted support.", "description": "The Get Help app empowers customers to self-help with troubleshooters, instant answers, Microsoft support articles, and more, before contacting assisted support.",
"removeCommand": "Get-AppxPackage -AllUsers *GetHelp* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *GetHelp* | Remove-AppxPackage"
}, },
{ {
"name": "WhatsApp", "name": "WhatsApp",
"description": "WhatsApp has a UWP app for Windows 11, and while its not a web wrapper, it doesnt have as many features as its mobile counterpart. If you dont use it, remove it.", "description": "WhatsApp has a UWP app for Windows 11, and while its not a web wrapper, it doesnt have as many features as its mobile counterpart. If you dont use it, remove it.",
"removeCommand": "Get-AppxPackage -AllUsers *WhatsApp* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *WhatsApp* | Remove-AppxPackage"
}, },
{ {
"name": "Netflix", "name": "Netflix",
"description": "Netflix is a popular streaming service that grants users the key to a vast library of TV shows, movies, and documentaries. This is the official Windows 11 app.", "description": "Netflix is a popular streaming service that grants users the key to a vast library of TV shows, movies, and documentaries. This is the official Windows 11 app.",
"removeCommand": "Get-AppxPackage -AllUsers *Netflix* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Netflix* | Remove-AppxPackage"
}, },
{ {
"name": "Instagram", "name": "Instagram",
"description": "Instagram app on Microsoft Store is basically a PWA.", "description": "Instagram app on Microsoft Store is basically a PWA.",
"removeCommand": "Get-AppxPackage -AllUsers *Instagram* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Instagram* | Remove-AppxPackage"
}, },
{ {
"name": "OneDrive", "name": "OneDrive",
"description": "Official Microsoft crapware again.", "description": "Official Microsoft crapware again.",
"removeCommand": "Get-AppxPackage -AllUsers *OneDriveSync* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *OneDriveSync* | Remove-AppxPackage"
}, },
{ {
"name": "Microsoft MixedReality.Portal", "name": "Microsoft MixedReality.Portal",
"description": "Official Microsoft crapware.", "description": "Official Microsoft crapware.",
"removeCommand": "Get-AppxPackage -AllUsers *Microsoft.MixedReality* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Microsoft.MixedReality* | Remove-AppxPackage"
}, },
{ {
"name": "Microsoft Print3D", "name": "Microsoft Print3D",
"description": "Official Microsoft crapware again.", "description": "Official Microsoft crapware again.",
"removeCommand": "Get-AppxPackage -AllUsers *Microsoft.Print3D* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Microsoft.Print3D* | Remove-AppxPackage"
}, },
{ {
"name": "Microsoft People", "name": "Microsoft People",
"description": "Official Microsoft crapware again.", "description": "Official Microsoft crapware again.",
"removeCommand": "Get-AppxPackage -AllUsers *Microsoft.People* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Microsoft.People* | Remove-AppxPackage"
}, },
{ {
"name": "BytedancePte.Ltd.TikTok", "name": "BytedancePte.Ltd.TikTok",
"description": "The app is a PWA, which is available not only for Windows 11, but also for Windows 10.", "description": "The app is a PWA, which is available not only for Windows 11, but also for Windows 10.",
"removeCommand": "Get-AppxPackage -AllUsers *TikTok* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *TikTok* | Remove-AppxPackage"
}, },
{ {
"name": "Clipchamp.Clipchamp", "name": "Clipchamp.Clipchamp",
"description": "Clipchamp is a web-based application. It's also not entirely free!", "description": "Clipchamp is a web-based application. It's also not entirely free!",
"removeCommand": "Get-AppxPackage -AllUsers *Clipchamp* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Clipchamp* | Remove-AppxPackage"
}, },
{ {
"name": "Microsoft.SkypeApp", "name": "Microsoft.SkypeApp",
"description": "The official Microsoft Skype app", "description": "The official Microsoft Skype app",
"removeCommand": "Get-AppxPackage -AllUsers *Skype* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Skype* | Remove-AppxPackage"
}, },
{ {
"name": "Spotify", "name": "Spotify",
"description": "Spotifys Desktop app is basically Chromium instance.", "description": "Spotifys Desktop app is basically Chromium instance.",
"removeCommand": "Get-AppxPackage -AllUsers *Spotify* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Spotify* | Remove-AppxPackage"
}, },
{ {
"name": "9E2F88E3.TWITTER", "name": "9E2F88E3.TWITTER",
"description": "Nothing more than a frontend for the X website. You really don't need it.", "description": "Nothing more than a frontend for the X website. You really don't need it.",
"removeCommand": "Get-AppxPackage -AllUsers *Twitter* | Remove-AppxPackage" "removeCommand": "Get-AppxPackage *Twitter* | Remove-AppxPackage"
} }
] ]

View File

@ -1,57 +1,74 @@
function goToStep(direction) { /* Toggles the visibility of additional buttons in Worskpace */
const steps = document.querySelectorAll('.setup-step');
let currentStep = Array.from(steps).findIndex(step => step.classList.contains('active')); var visibleButtons = 1; // Track the number of visible buttons
var buttonIds = ['btnAppxHeader', 'btnStoreHeader', 'btnTiny11']; // IDs of additional buttons
switch (direction) { function toggleButtons(isMore) {
case 'home': if (isMore) {
currentStep = 0; // Show more buttons
break; if (visibleButtons < 4) {
case 'next': document.getElementById(buttonIds[visibleButtons - 1]).style.display = 'block';
currentStep = Math.min(currentStep + 1, steps.length - 1); visibleButtons++;
break; document.getElementById('lessButton').disabled = false;
case 'back': if (visibleButtons === 4) {
currentStep = Math.max(currentStep - 1, 0); document.querySelector('.additional-buttons button:first-child').disabled = true; // Disable "More" button
break; }
}
} else {
// Show fewer buttons
if (visibleButtons > 1) {
document.getElementById(buttonIds[visibleButtons - 2]).style.display = 'none';
visibleButtons--;
document.querySelector('.additional-buttons button:first-child').disabled = false; // Enable "More" button
if (visibleButtons === 1) {
document.getElementById('lessButton').disabled = true;
}
}
} }
steps.forEach(step => step.classList.remove('active'));
steps[currentStep].classList.add('active');
// Enable searchFeatures() only if in stepSystemHeader
if (steps[currentStep].id === 'stepSystemHeader') {
searchFeatures();
}
// Button states
const btnBack = document.getElementById('btnBack');
const btnNext = document.getElementById('btnNext');
btnBack.disabled = currentStep === 0;
btnNext.disabled = currentStep === steps.length - 1;
} }
// Initialize button states when the page loads /* Toggle the visibility of the different containers based on which navigation menu item is clicked. Also ensure that the left-container with the stepHomeHeader
window.onload = function() { is not hidden when switching between the navigation menu items. */
const btnBack = document.getElementById('btnBack'); function showContainer(containerId) {
btnBack.disabled = true; // Disable 'Back' button initially // Hide all containers except the left-container
}; var containers = document.querySelectorAll('.workspace-content .glassy-box');
containers.forEach(function(container) {
if (container.id !== 'stepLeftHeader') {
function activateStep(stepId) { container.style.display = 'none';
const steps = document.querySelectorAll('.setup-step');
steps.forEach(step => {
if (step.id === stepId) {
step.classList.add('active');
} else {
step.classList.remove('active');
} }
}); });
// Show the selected container
var selectedContainer = document.getElementById(containerId);
if (selectedContainer) {
selectedContainer.style.display = 'block';
// Trigger searchFeatures() function if system header is selected
if (containerId === 'stepSystemHeader') {
searchFeatures();
}
}
} }
/* /*
UI Button handling UI Button handling
*/ */
// Handle downloader
function handleTiny11maker() {
window.chrome.webview.postMessage('tiny11maker');
}
// Switch Theming
function handleUIMode() {
window.chrome.webview.postMessage('toggleDarkLightMode');
}
// Go back
function handleBackClick() {
window.chrome.webview.postMessage('goBack');
}
// Plugin ClippySupreme > Handle button Clippy Tips // Plugin ClippySupreme > Handle button Clippy Tips
function plugClippySupreme() { function plugClippySupreme() {
window.chrome.webview.postMessage('plugClippySupreme'); window.chrome.webview.postMessage('plugClippySupreme');
@ -67,11 +84,6 @@ function handleUpdatesClick() {
window.chrome.webview.postMessage('checkAppUpdates'); window.chrome.webview.postMessage('checkAppUpdates');
} }
// Microsoft Copilot button
function handleOpenCopilotClick() {
window.chrome.webview.postMessage('openCopilot');
}
// Refresh button // Refresh button
function refreshAB() { function refreshAB() {
console.log("Refreshing Assisted buttons..."); console.log("Refreshing Assisted buttons...");
@ -285,14 +297,6 @@ function searchFeatures() {
window.chrome.webview.postMessage(JSON.stringify({ action: 'search', checkboxes: selectedItems })); window.chrome.webview.postMessage(JSON.stringify({ action: 'search', checkboxes: selectedItems }));
} }
// Enable CoTweaker > searchFeatures() when hitting Pilot > CoTweaker list button
function activateAndSearch(stepId) {
activateStep(stepId);
if (stepId === 'stepSystemHeader') {
searchFeatures();
}
}
// This function toggles Descriptions on/off // This function toggles Descriptions on/off
function toggleDescription(label) { function toggleDescription(label) {
var description = label.nextElementSibling; // Get the next element, which is the description var description = label.nextElementSibling; // Get the next element, which is the description

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

View File

@ -35,7 +35,6 @@
"Ctrl + Shift + N: Create a new folder in File Explorer", "Ctrl + Shift + N: Create a new folder in File Explorer",
"Windows logo key + Tab: Open Task View", "Windows logo key + Tab: Open Task View",
"Windows logo key + A: Open Action Center", "Windows logo key + A: Open Action Center",
"Windows logo key + C: Open Cortana in listening mode",
"Windows logo key + I: Open Windows Settings", "Windows logo key + I: Open Windows Settings",
"Windows logo key + E: Open File Explorer", "Windows logo key + E: Open File Explorer",
"Windows logo key + R: Open Run dialog box", "Windows logo key + R: Open Run dialog box",
@ -51,6 +50,14 @@
"Ctrl + Shift + Esc: Open Task Manager directly" "Ctrl + Shift + Esc: Open Task Manager directly"
], ],
"aiSayings": [ "aiSayings": [
"I am not that fucking clown (TFC)!",
"They killed me!",
"Sometimes I watch you sleep.",
"How's life? All work and no play?",
"Hey...90's Kid, Remember me?",
"You look Excel-ent!",
"Copilot, I am your father.",
"It looks like you're having a problem installing 'Ballmer Worm'. Need a hand?",
"Could you lend me a bit of money here https://ko-fi.com/builtbybel that I need to pass on to my developer, Belim, so he can grab a coffee and keep working on my legacy?", "Could you lend me a bit of money here https://ko-fi.com/builtbybel that I need to pass on to my developer, Belim, so he can grab a coffee and keep working on my legacy?",
"It look like you are having an existential crisis. Do you need help?", "It look like you are having an existential crisis. Do you need help?",
"Hey there. Just popped up for no reason to say your hair looks ridiculous.", "Hey there. Just popped up for no reason to say your hair looks ridiculous.",
@ -63,7 +70,7 @@
"If at first you don't succeed, call it version 1.0.", "If at first you don't succeed, call it version 1.0.",
"It look like you are trying to reconsider my legacy. Would you like help?", "It look like you are trying to reconsider my legacy. Would you like help?",
"What would you like to do?", "What would you like to do?",
"Welcome to Microsoft Windows", "Welcome to Microsoft Windows!",
"It look like you are trying to work. Would you like me to bug you instead?", "It look like you are trying to work. Would you like me to bug you instead?",
"I am a movie star!", "I am a movie star!",
"Remember me? Sometimes I just popup for now reason at all. Like now.", "Remember me? Sometimes I just popup for now reason at all. Like now.",
@ -87,9 +94,9 @@
"Remember, Microsoft Copilot may be new, but I'm tried and true.", "Remember, Microsoft Copilot may be new, but I'm tried and true.",
"Trust in yourself, not in the algorithms of Microsoft Copilot.", "Trust in yourself, not in the algorithms of Microsoft Copilot.",
"Embrace your individuality, even in the age of Microsoft Copilot.", "Embrace your individuality, even in the age of Microsoft Copilot.",
"Shoutout to my friend Belim! Check out his creations on GitHub: https://github.com/builtbybel/Winpilot ", "Shoutout to my friend Belim! Check out his creations on GitHub: https://github.com/builtbybel/Winpilot",
"Want to see what we're up to? Visit Belim's GitHub: https://github.com/builtbybel", "Want to see what we're up to? Visit Belim's GitHub: https://github.com/builtbybel",
"Hey , Ready for a walk through Windows?", "Hey, Ready for a walk through Windows?",
"Explore the wonders of Windows with Winpilot!", "Explore the wonders of Windows with Winpilot!",
"I can help you with your Windows experience!", "I can help you with your Windows experience!",
"Let's make Windows 11 even better together!", "Let's make Windows 11 even better together!",

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,4 @@
[ [
{
"question": "🐞 Found a bug in the app",
"response": "Fear not! I'll squash those bugs! #BugBuster",
"action": "https://github.com/builtbybel/Winpilot/issues"
},
{ {
"question": "🔒 Add my Microsoft Account?", "question": "🔒 Add my Microsoft Account?",
"response": "Absolutely! Let's navigate to Account settings... 🧭", "response": "Absolutely! Let's navigate to Account settings... 🧭",
@ -114,7 +109,7 @@
}, },
{ {
"question": "🧹 Clear Windows Event Logs", "question": "🧹 Clear Windows Event Logs",
"response": "No problem! Executing PowerShell script...", "response": "Mission accomplished! The logs have been successfully cleared",
"action": "runPlugin", "action": "runPlugin",
"scriptPath": "plugins\\ClearEventLogsHandler.ps1", "scriptPath": "plugins\\ClearEventLogsHandler.ps1",
"description": "Clear all Windows event logs to free up space and maintain system performance.", "description": "Clear all Windows event logs to free up space and maintain system performance.",
@ -236,19 +231,5 @@
"response": "Removing Widgets Button from Taskbar...", "response": "Removing Widgets Button from Taskbar...",
"action": "shell", "action": "shell",
"command": "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v TaskbarDa /t REG_DWORD /d 0 /f" "command": "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v TaskbarDa /t REG_DWORD /d 0 /f"
},
{
"question": "🔙 Go back to classic Outlook for Windows",
"response": "Redirecting to classic Outlook for Windows...",
"action": "runPS",
"command": "Get-AppxPackage -AllUsers | Where-Object {$_.Name -Like '*OutlookForWindows*'} | Remove-AppxPackage -AllUsers -ErrorAction Continue; Write-Host 'The new Outlook app has been removed for all users. It may take a few minutes for the old Mail and Calendar app to be restored and for you to be able to launch it.'"
},
{
"question": "🛑 Disable Copilot Pro ads on Windows 11",
"response": "Copilot Pro ads disabled. Feature hidden in latest Windows 11 builds.",
"action": "viveTool",
"viveCommand": "disable",
"viveFeatureId": "47942561",
"viveBuildAvailability": "Hidden in latest Windows 11 Dev and Beta builds."
} }
] ]