mirror of
https://github.com/builtbybel/BloatyNosy.git
synced 2024-11-21 23:43:09 +01:00
Commit 2024.5.13
This commit is contained in:
parent
b12c13cca6
commit
62332cecef
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 |
@ -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';");
|
||||||
|
|
||||||
|
@ -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}`;");
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
6
src/Winpilot/MainForm.Designer.cs
generated
6
src/Winpilot/MainForm.Designer.cs
generated
@ -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;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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")]
|
||||||
|
101
src/Winpilot/Views/SettingsPageView.Designer.cs
generated
101
src/Winpilot/Views/SettingsPageView.Designer.cs
generated
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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>
|
60
src/Winpilot/Walks/Ads/FileExplorerAds.cs
Normal file
60
src/Winpilot/Walks/Ads/FileExplorerAds.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
56
src/Winpilot/Walks/Ads/FinishSetupAds.cs
Normal file
56
src/Winpilot/Walks/Ads/FinishSetupAds.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
61
src/Winpilot/Walks/Ads/LockScreenAds.cs
Normal file
61
src/Winpilot/Walks/Ads/LockScreenAds.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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()
|
||||||
{
|
{
|
64
src/Winpilot/Walks/Ads/SettingsAds.cs
Normal file
64
src/Winpilot/Walks/Ads/SettingsAds.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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()
|
60
src/Winpilot/Walks/Ads/TailoredExperiences.cs
Normal file
60
src/Winpilot/Walks/Ads/TailoredExperiences.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
57
src/Winpilot/Walks/Ads/TipsAndSuggestions.cs
Normal file
57
src/Winpilot/Walks/Ads/TipsAndSuggestions.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
56
src/Winpilot/Walks/Ads/WelcomeExperienceAds.cs
Normal file
56
src/Winpilot/Walks/Ads/WelcomeExperienceAds.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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">
|
||||||
|
@ -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 {
|
||||||
|
835
src/Winpilot/app-backend/UI_dark.css
Normal file
835
src/Winpilot/app-backend/UI_dark.css
Normal 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;
|
||||||
|
}
|
@ -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 it’s not a web wrapper, it doesn’t 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 it’s not a web wrapper, it doesn’t 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": "Spotify’s Desktop app is basically Chromium instance.",
|
"description": "Spotify’s 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"
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -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
|
||||||
|
BIN
src/Winpilot/app-backend/chatbotPaperclip.png
Normal file
BIN
src/Winpilot/app-backend/chatbotPaperclip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Binary file not shown.
Before Width: | Height: | Size: 124 KiB |
@ -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
@ -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."
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user