diff --git a/.gitignore b/.gitignore index 215d85ed..4d77e17c 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ Microsoft.PowerShell.ConsoleHost.dll microwin.log True test.ps1 +winutil.ps1 diff --git a/Compile.ps1 b/Compile.ps1 index 330c226a..2f568499 100644 --- a/Compile.ps1 +++ b/Compile.ps1 @@ -55,6 +55,9 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach- $sync.configs.$($psitem.BaseName) = $json | convertfrom-json Write-output "`$sync.configs.$($psitem.BaseName) = '$json' `| convertfrom-json" | Out-File ./$scriptname -Append -Encoding ascii } +Get-ChildItem .\config | Where-Object {$PSItem.Extension -eq ".cfg"} | ForEach-Object { + Write-output "`$sync.configs.$($psitem.BaseName) = '$(Get-Content $PSItem.FullName)'" | Out-File ./$scriptname -Append -Encoding ascii +} $xaml = (Get-Content .\xaml\inputXML.xaml).replace("'","''") diff --git a/README.md b/README.md index 60c4fec2..a921ad79 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Winutil must be run in Admin mode because it performs system-wide tweaks. To ach 1. **Right-Click Method:** - Right-click on the start menu. - - Choose "PowerShell As Admin" (for Windows 10) or "Windows Terminal As Admin" (for Windows 11). + - Choose "Windows PowerShell (Admin)" (for Windows 10) or "Terminal (Admin)" (for Windows 11). 2. **Search and Launch Method:** - Press the Windows key. diff --git a/config/applications.json b/config/applications.json index c65f1906..65a3e10d 100644 --- a/config/applications.json +++ b/config/applications.json @@ -31,6 +31,14 @@ "link": "https://www.advanced-ip-scanner.com/", "winget": "Famatech.AdvancedIPScanner" }, + "WPFInstallaffine": { + "category": "Document", + "choco": "na", + "content": "AFFiNE", + "description": "AFFiNE is an open source alternative to Notion. Write, draw, plan all at once. Selfhost it to sync across devices.", + "link": "https://affine.pro/", + "winget": "AFFiNE.stable" + }, "WPFInstallaimp": { "category": "Multimedia Tools", "choco": "aimp", @@ -95,14 +103,6 @@ "link": "https://www.audacityteam.org/", "winget": "Audacity.Audacity" }, - "WPFInstallauthy": { - "category": "Utilities", - "choco": "authy-desktop", - "content": "Authy", - "description": "Simple and cross-platform 2FA app", - "link": "https://authy.com/", - "winget": "Twilio.Authy" - }, "WPFInstallautoruns": { "category": "Microsoft Tools", "choco": "autoruns", @@ -111,6 +111,14 @@ "link": "https://learn.microsoft.com/en-us/sysinternals/downloads/autoruns", "winget": "Microsoft.Sysinternals.Autoruns" }, + "WPFInstallrdcman": { + "category": "Microsoft Tools", + "choco": "rdcman", + "content": "RDCMan", + "description": "RDCMan manages multiple remote desktop connections. It is useful for managing server labs where you need regular access to each machine such as automated checkin systems and data centers.", + "link": "https://learn.microsoft.com/en-us/sysinternals/downloads/rdcman", + "winget": "Microsoft.Sysinternals.RDCMan" + }, "WPFInstallautohotkey": { "category": "Utilities", "choco": "autohotkey", @@ -255,6 +263,14 @@ "link": "https://github.com/Hibbiki/chromium-win64", "winget": "Hibbiki.Chromium" }, + "WPFInstallarc": { + "category": "Browsers", + "choco": "na", + "content": "Arc", + "description": "Arc is a Chromium based browser, known for it's clean and modern design.", + "link": "https://arc.net/", + "winget": "TheBrowserCompany.Arc" + }, "WPFInstallclementine": { "category": "Multimedia Tools", "choco": "clementine", @@ -295,6 +311,14 @@ "link": "https://copyq.readthedocs.io/", "winget": "hluk.CopyQ" }, + "WPFInstallditto": { + "category": "Utilities", + "choco": "ditto", + "content": "Ditto (Clipboard Manager)", + "description": "Ditto is an extension to the Windows Clipboard. You copy something to the Clipboard and Ditto takes what you copied and stores it in a database to retrieve at a later time.", + "link": "https://github.com/sabrogden/Ditto", + "winget": "Ditto.Ditto" + }, "WPFInstallcpuz": { "category": "Utilities", "choco": "cpu-z", @@ -382,6 +406,14 @@ "description": "Discord is a popular communication platform with voice, video, and text chat, designed for gamers but used by a wide range of communities.", "link": "https://discord.com/", "winget": "Discord.Discord" + }, + "WPFInstallditto": { + "category": "Utilities", + "choco": "ditto", + "content": "Ditto", + "description": "Ditto is an extension to the standard windows clipboard.", + "link": "https://ditto-cp.sourceforge.io/", + "winget": "Ditto.Ditto" }, "WPFInstalldockerdesktop": { "category": "Development", @@ -553,11 +585,19 @@ }, "WPFInstallfileconverter": { "category": "Utilities", - "choco": "files", + "choco": "file-converter", "content": "File-Converter", "description": "File Converter is a very simple tool which allows you to convert and compress one or several file(s) using the context menu in windows explorer.", "link": "https://file-converter.io/", "winget": "AdrienAllard.FileConverter" + }, + "WPFInstallfiles": { + "category": "Utilities", + "choco": "files", + "content": "Files", + "description": "Alternative file explorer.", + "link": "https://github.com/files-community/Files", + "winget": "na" }, "WPFInstallfirealpaca": { "category": "Multimedia Tools", @@ -727,6 +767,14 @@ "link": "https://desktop.github.com/", "winget": "Git.Git;GitHub.GitHubDesktop" }, + "WPFInstallgitkrakenclient": { + "category": "Development", + "choco": "gitkraken", + "content": "GitKraken Client", + "description": "GitKraken Client is a powerful visual Git client from Axosoft that works with ALL git repositories on any hosting environment.", + "link": "https://www.gitkraken.com/git-client", + "winget": "Axosoft.GitKraken" + }, "WPFInstallglaryutilities": { "category": "Utilities", "choco": "glaryutilities-free", @@ -735,6 +783,14 @@ "link": "https://www.glarysoft.com/glary-utilities/", "winget": "Glarysoft.GlaryUtilities" }, + "WPFInstallgodotengine": { + "category": "Development", + "choco": "godot", + "content": "Godot Engine", + "description": "Godot Engine is a free, open-source 2D and 3D game engine with a focus on usability and flexibility.", + "link": "https://godotengine.org/", + "winget": "GodotEngine.GodotEngine" + }, "WPFInstallgog": { "category": "Games", "choco": "goggalaxy", @@ -988,7 +1044,7 @@ "choco": "jellyfin-media-player", "content": "Jellyfin Media Player", "description": "Jellyfin Media Player is a client application for the Jellyfin media server, providing access to your media library.", - "link": "https://github.com/jellyfin/jellyfin-media-playerf", + "link": "https://github.com/jellyfin/jellyfin-media-player", "winget": "Jellyfin.JellyfinMediaPlayer" }, "WPFInstalljellyfinserver": { @@ -1162,8 +1218,8 @@ "WPFInstallmatrix": { "category": "Communications", "choco": "element-desktop", - "content": "Matrix", - "description": "Matrix is an open network for secure, decentralized communication with features like chat, VoIP, and collaboration tools.", + "content": "Element", + "description": "Element is a client for Matrix—an open network for secure, decentralized communication.", "link": "https://element.io/", "winget": "Element.Element" }, @@ -1215,6 +1271,14 @@ "link": "https://mremoteng.org/", "winget": "mRemoteNG.mRemoteNG" }, + "WPFInstallmsedgeredirect": { + "category": "Utilities", + "choco": "msedgeredirect", + "content": "MSEdgeRedirect", + "description": "A Tool to Redirect News, Search, Widgets, Weather, and More to Your Default Browser.", + "link": "https://github.com/rcmaehl/MSEdgeRedirect", + "winget": "rcmaehl.MSEdgeRedirect" + }, "WPFInstallmsiafterburner": { "category": "Utilities", "choco": "msiafterburner", @@ -1223,6 +1287,46 @@ "link": "https://www.msi.com/Landing/afterburner", "winget": "Guru3D.Afterburner" }, + "WPFInstallBorderlessGaming": { + "category": "Utilities", + "choco": "na", + "content": "Borderless Gaming", + "description": "Play your favorite games in a borderless window; no more time consuming alt-tabs.", + "link": "https://github.com/Codeusa/Borderless-Gaming", + "winget": "Codeusa.BorderlessGaming" + }, + "WPFInstallEqualizerAPO": { + "category": "Multimedia Tools", + "choco": "equalizerapo", + "content": "Equalizer APO", + "description": "Equalizer APO is a parametric / graphic equalizer for Windows.", + "link": "https://sourceforge.net/projects/equalizerapo", + "winget": "na" + }, + "WPFInstallFreeFileSync": { + "category": "Utilities", + "choco": "freefilesync", + "content": "FreeFileSync", + "description": "Synchronize Files and Folders", + "link": "https://freefilesync.org", + "winget": "na" + }, + "WPFInstallCompactGUI": { + "category": "Utilities", + "choco": "compactgui", + "content": "Compact GUI", + "description": "Transparently compress active games and programs using Windows 10/11 APIs", + "link": "https://github.com/IridiumIO/CompactGUI", + "winget": "IridiumIO.CompactGUI" + }, + "WPFInstallExifCleaner": { + "category": "Utilities", + "choco": "na", + "content": "ExifCleaner", + "description": "Desktop app to clean metadata from images, videos, PDFs, and other files.", + "link": "https://github.com/szTheory/exifcleaner", + "winget": "szTheory.exifcleaner" + }, "WPFInstallmullvadbrowser": { "category": "Browsers", "choco": "na", @@ -1247,6 +1351,14 @@ "link": "https://getmusicbee.com/", "winget": "MusicBee.MusicBee" }, + "WPFInstallmp3tag": { + "category": "Multimedia Tools", + "choco": "mp3tag", + "content": "Mp3tag (Metadata Audio Editor)", + "description": "Mp3tag is a powerful and yet easy-to-use tool to edit metadata of common audio formats.", + "link": "https://www.mp3tag.de/en/", + "winget": "Mp3tag.Mp3tag" + }, "WPFInstallnanazip": { "category": "Utilities", "choco": "nanazip", @@ -1255,6 +1367,14 @@ "link": "https://github.com/M2Team/NanaZip", "winget": "M2Team.NanaZip" }, + "WPFInstallnetbird": { + "category": "Pro Tools", + "choco": "netbird", + "content": "NetBird", + "description": "NetBird is a Open Source alternative comparable to TailScale that can be connected to a selfhosted Server.", + "link": "https://netbird.io/", + "winget": "netbird" + }, "WPFInstallnaps2": { "category": "Document", "choco": "naps2", @@ -1615,6 +1735,14 @@ "link": "https://bitsum.com/", "winget": "BitSum.ProcessLasso" }, + "WPFInstallspotify": { + "category": "Multimedia Tools", + "choco": "spotify", + "content": "Spotify", + "description": "Spotify is a digital music service that gives you access to millions of songs, podcasts, and videos from artists all over the world.", + "link": "https://www.spotify.com/", + "winget": "Spotify.Spotify" + }, "WPFInstallprocessmonitor": { "category": "Microsoft Tools", "choco": "procexp", @@ -1742,6 +1870,14 @@ "description": "Rust is a programming language designed for safety and performance, particularly focused on systems programming.", "link": "https://www.rust-lang.org/", "winget": "Rustlang.Rust.MSVC" + }, + "WPFInstallsagethumbs": { + "category": "Utilities", + "choco": "sagethumbs", + "content": "SageThumbs", + "description": "Provides support for thumbnails in Explorer with more formats.", + "link": "https://sagethumbs.en.lo4d.com/windows", + "winget": "CherubicSoftware.SageThumbs" }, "WPFInstallsamsungmagician": { "category": "Utilities", @@ -1862,6 +1998,14 @@ "description": "A tool application that lets you understand how folders and files are structured on your disks", "link": "http://www.uderzo.it/main_products/space_sniffer/", "winget": "UderzoSoftware.SpaceSniffer" + }, + "WPFInstallspotube": { + "category": "Multimedia Tools", + "choco": "spotube", + "content": "Spotube", + "description": "Open source Spotify client that doesn't require Premium nor uses Electron! Available for both desktop & mobile! ", + "link": "https://github.com/KRTirtho/spotube", + "winget": "KRTirtho.Spotube" }, "WPFInstallstarship": { "category": "Development", @@ -1871,14 +2015,6 @@ "link": "https://starship.rs/", "winget": "starship" }, - "WPFInstallstartallback": { - "category": "Utilities", - "choco": "na", - "content": "StartAllBack", - "description": "StartAllBack is a Tool that can be used to edit the Windows appearance by your liking (Taskbar, Start Menu, File Explorer, Control Panel, Context Menu ...)", - "link": "https://www.startallback.com/", - "winget": "startallback" - }, "WPFInstallsteam": { "category": "Games", "choco": "steam-client", @@ -2071,6 +2207,14 @@ "link": "https://www.thunderbird.net/", "winget": "Mozilla.Thunderbird" }, + "WPFInstallbetterbird": { + "category": "Communications", + "choco": "betterbird", + "content": "Betterbird", + "description": "Betterbird is a fork of Mozilla Thunderbird with additional features and bugfixes.", + "link": "https://www.betterbird.eu/", + "winget": "Betterbird.Betterbird" + }, "WPFInstalltidal": { "category": "Multimedia Tools", "choco": "na", @@ -2167,14 +2311,6 @@ "link": "https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads", "winget": "Microsoft.VCRedist.2015+.x64" }, - "WPFInstallvencord": { - "category": "Communications", - "choco": "na", - "content": "Vencord", - "description": "Vencord is a modification for Discord that adds plugins, custom styles, and more!", - "link": "https://vencord.dev/", - "winget": "Vendicated.Vencord" - }, "WPFInstallventoy": { "category": "Pro Tools", "choco": "ventoy", @@ -2221,7 +2357,7 @@ "content": "Vivaldi", "description": "Vivaldi is a highly customizable web browser with a focus on user personalization and productivity features.", "link": "https://vivaldi.com/", - "winget": "VivaldiTechnologies.Vivaldi" + "winget": "Vivaldi.Vivaldi" }, "WPFInstallvlc": { "category": "Multimedia Tools", @@ -2236,7 +2372,7 @@ "choco": "voicemeeter", "content": "Voicemeeter (Audio)", "description": "Voicemeeter is a virtual audio mixer that allows you to manage and enhance audio streams on your computer. It is commonly used for audio recording and streaming purposes.", - "link": "https://www.vb-audio.com/Voicemeeter/", + "link": "https://voicemeeter.com/", "winget": "VB-Audio.Voicemeeter" }, "WPFInstallvrdesktopstreamer": { @@ -2271,6 +2407,14 @@ "link": "https://www.waterfox.net/", "winget": "Waterfox.Waterfox" }, + "WPFInstallwazuh": { + "category": "Utilities", + "choco": "wazuh-agent", + "content": "Wazuh.", + "description": "Wazuh is an open-source security monitoring platform that offers intrusion detection, compliance checks, and log analysis.", + "link": "https://wazuh.com/", + "winget": "Wazuh.WazuhAgent" + }, "WPFInstallwezterm": { "category": "Development", "choco": "wezterm", @@ -2279,14 +2423,6 @@ "link": "https://wezfurlong.org/wezterm/index.html", "winget": "wez.wezterm" }, - "WPFInstallwhatsapp": { - "category": "Communications", - "choco": "whatsapp", - "content": "Whatsapp", - "description": "WhatsApp Desktop is a desktop version of the popular messaging app, allowing users to send and receive messages, share files, and connect with contacts from their computer.", - "link": "https://www.whatsapp.com/", - "winget": "WhatsApp.WhatsApp" - }, "WPFInstallwindirstat": { "category": "Utilities", "choco": "windirstat", @@ -2519,6 +2655,14 @@ "link": "https://docs.conda.io/projects/miniconda", "winget": "Anaconda.Miniconda3" }, + "WPFInstallpixi": { + "category": "Development", + "choco": "pixi", + "content": "Pixi", + "description": "Pixi is a fast software package manager built on top of the existing conda ecosystem. Spins up development environments quickly on Windows, macOS and Linux. Pixi supports Python, R, C/C++, Rust, Ruby, and many other languages.", + "link": "https://pixi.sh", + "winget": "prefix-dev.pixi" + }, "WPFInstalltemurin": { "category": "Development", "choco": "temurin", @@ -2590,5 +2734,69 @@ "description": "get things from one computer to another, safely", "link": "https://github.com/magic-wormhole/magic-wormhole", "winget": "magic-wormhole.magic-wormhole" + }, + "WPFInstallqgis": { + "category": "Multimedia Tools", + "choco": "qgis", + "content": "QGIS", + "description": "QGIS (Quantum GIS) is an open-source Geographic Information System (GIS) software that enables users to create, edit, visualize, analyze, and publish geospatial information on Windows, Mac, and Linux platforms.", + "link": "https://qgis.org/en/site/", + "winget": "OSGeo.QGIS" + }, + "WPFInstallsmplayer": { + "category": "Multimedia Tools", + "choco": "smplayer", + "content": "SMPlayer", + "description": "SMPlayer is a free media player for Windows and Linux with built-in codecs that can play virtually all video and audio formats.", + "link": "https://www.smplayer.info", + "winget": "SMPlayer.SMPlayer" + }, + "WPFInstallglazewm": { + "category": "Utilities", + "choco": "na", + "content": "GlazeWM", + "description": "GlazeWM is a tiling window manager for Windows inspired by i3 and Polybar", + "link": "https://github.com/glzr-io/glazewm", + "winget": "glzr-io.glazewm" + }, + "WPFInstallfancontrol": { + "category": "Utilities", + "choco": "na", + "content": "FanControl", + "description": "Fan Control is a free and open-source software that allows the user to control his CPU, GPU and case fans using temperatures.", + "link": "https://getfancontrol.com/", + "winget": "Rem0o.FanControl" + }, + "WPFInstallfnm": { + "category": "Development", + "choco": "fnm", + "content": "Fast Node Manager", + "description": "Fast Node Manager (fnm) allows you to switch your Node version by using the Terminal", + "link": "https://github.com/Schniz/fnm", + "winget": "Schniz.fnm" + }, + "WPFInstallWindhawk": { + "category": "Utilities", + "choco": "windhawk", + "content": "Windhawk", + "description": "The customization marketplace for Windows programs", + "link": "https://windhawk.net", + "winget": "RamenSoftware.Windhawk" + }, + "WPFInstallForceAutoHDR": { + "category": "Utilities", + "choco": "na", + "content": "GUI That Forces Auto HDR In Unsupported Games", + "description": "ForceAutoHDR simplifies the process of adding games to the AutoHDR list in the Windows Registry", + "link": "https://github.com/7gxycn08/ForceAutoHDR", + "winget": "ForceAutoHDR.7gxycn08" + }, + "WPFInstallnditools": { + "category": "Multimedia Tools", + "choco": "na", + "content": "NDI Tools", + "description":"NDI, or Network Device Interface, is a video connectivity standard that enables multimedia systems to identify and communicate with one another over IP and to encode, transmit, and receive high-quality, low latency, frame-accurate video and audio, and exchange metadata in real-time.", + "link": "https://ndi.video/", + "winget": "NDI.NDITools" } } diff --git a/config/ooshutup10_factory.cfg b/config/ooshutup10_factory.cfg index aba3cbe0..1ae2ecab 100644 --- a/config/ooshutup10_factory.cfg +++ b/config/ooshutup10_factory.cfg @@ -159,22 +159,6 @@ E005 - E013 - E014 - E006 - -F002 - -F014 - -F015 - -F016 - -F001 - -F003 - -F004 - -F005 - -F007 - -F008 - -F009 - -F006 - -F010 - -F011 - -F012 - -F013 - Y001 - Y002 - Y003 - @@ -224,7 +208,6 @@ S014 - K001 - K002 - K005 - -M025 - M003 - M015 - M016 - diff --git a/config/ooshutup10_recommended.cfg b/config/ooshutup10_recommended.cfg index 0993f4d9..0149c649 100644 --- a/config/ooshutup10_recommended.cfg +++ b/config/ooshutup10_recommended.cfg @@ -34,8 +34,8 @@ P067 + P070 + P069 + P009 - -P010 - -P015 - +P010 + +P015 + P068 - P016 - A001 + @@ -49,7 +49,7 @@ P036 + P025 + P033 + P023 + -P056 - +P056 + P057 - P012 - P034 - @@ -102,7 +102,7 @@ P077 - P078 - P079 - P080 - -P024 - +P024 + S001 + S002 + S003 + @@ -159,22 +159,6 @@ E005 - E013 - E014 - E006 - -F002 + -F014 + -F015 + -F016 + -F001 + -F003 + -F004 + -F005 + -F007 + -F008 + -F009 + -F006 - -F010 - -F011 - -F012 - -F013 - Y001 + Y002 + Y003 + @@ -210,12 +194,12 @@ W004 - W005 - W010 - W009 - -P017 - +P017 + W006 - W008 - M006 + M011 - -M010 - +M010 + O003 - O001 - S012 - @@ -224,15 +208,14 @@ S014 - K001 + K002 + K005 + -M025 + M003 - -M015 - +M015 + M016 - M017 - -M018 - +M018 + M019 - -M020 - -M021 - +M020 + +M021 + M022 + M001 + M004 + diff --git a/config/preset.json b/config/preset.json index 807f76a3..cabe8037 100644 --- a/config/preset.json +++ b/config/preset.json @@ -1,5 +1,5 @@ { - "desktop": [ + "Standard": [ "WPFTweaksAH", "WPFTweaksDVR", "WPFTweaksHiber", @@ -9,21 +9,14 @@ "WPFTweaksServices", "WPFTweaksStorage", "WPFTweaksTele", - "WPFTweaksWifi" - ], - "laptop": [ - "WPFTweaksAH", - "WPFTweaksDVR", - "WPFTweaksHome", - "WPFTweaksLoc", - "WPFTweaksOO", - "WPFTweaksServices", - "WPFTweaksStorage", - "WPFTweaksTele", "WPFTweaksWifi", - "WPFMiscTweaksLapPower" + "WPFTweaksDiskCleanup", + "WPFTweaksDeleteTempFiles", + "WPFTweaksEndTaskOnTaskbar", + "WPFTweaksRestorePoint", + "WPFTweaksTeredo" ], - "minimal": [ + "Minimal": [ "WPFTweaksHome", "WPFTweaksOO", "WPFTweaksServices", diff --git a/config/themes.json b/config/themes.json index fb23ca95..f61c09ef 100644 --- a/config/themes.json +++ b/config/themes.json @@ -23,6 +23,7 @@ "ButtonBackgroundMouseoverColor": "#C2C2C2", "ButtonBackgroundSelectedColor": "#F0F0F0", "ButtonForegroundColor": "#000000", + "ToggleButtonOnColor": "#2e77ff", "ButtonBorderThickness": "1", "ButtonMargin": "1", "ButtonCornerRadius": "2", @@ -53,6 +54,7 @@ "ButtonBackgroundMouseoverColor": "#A55A64", "ButtonBackgroundSelectedColor": "#FF5733", "ButtonForegroundColor": "#9CCC65", + "ToggleButtonOnColor": "#2e77ff", "ButtonBorderThickness": "1", "ButtonMargin": "1", "ButtonCornerRadius": "2", @@ -83,6 +85,7 @@ "ButtonBackgroundMouseoverColor": "#FF5733", "ButtonBackgroundSelectedColor": "#FF5733", "ButtonForegroundColor": "#9CCC65", + "ToggleButtonOnColor": "#2e77ff", "ButtonBorderThickness": "1", "ButtonMargin": "1", "ButtonCornerRadius": "2", diff --git a/config/tweaks.json b/config/tweaks.json index d1de827d..775f0f1b 100644 --- a/config/tweaks.json +++ b/config/tweaks.json @@ -34,7 +34,7 @@ "Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation.", "category": "Essential Tweaks", "panel": "1", - "Order": "a011_", + "Order": "a005_", "registry": [ { "Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power", @@ -58,12 +58,59 @@ "powercfg.exe /hibernate on" ] }, + "WPFToggleTweaksLaptopHybernation": { + "Content": "Set Hibernation as default (good for laptops)", + "Description": "Most modern laptops have connected stadby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399", + "category": "Essential Tweaks", + "panel": "1", + "Order": "a014_", + "registry": [ + { + "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerSettings\\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0", + "OriginalValue": "1", + "Name": "Attributes", + "Value": "2", + "Type": "DWord" + }, + { + "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\\94ac6d29-73ce-41a6-809f-6363ba21b47e", + "OriginalValue": "0", + "Name": "Attributes ", + "Value": "2", + "Type": "DWord" + } + ], + "InvokeScript": [ + " + Write-Host \"Turn on Hibernation\" + Start-Process -FilePath powercfg -ArgumentList \"/hibernate on\" -NoNewWindow -Wait + + # Set hibernation as the default action + Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-ac 60\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-dc 60\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 10\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-dc 1\" -NoNewWindow -Wait + " + ], + "UndoScript": [ + " + Write-Host \"Turn off Hibernation\" + Start-Process -FilePath powercfg -ArgumentList \"/hibernate off\" -NoNewWindow -Wait + + # Set standby to detault values + Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-ac 15\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-dc 15\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 15\" -NoNewWindow -Wait + Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-dc 15\" -NoNewWindow -Wait + " + ] + }, "WPFTweaksHome": { "Content": "Disable Homegroup", "Description": "Disables HomeGroup - HomeGroup is a password-protected home networking service that lets you share your stuff with other PCs that are currently running and connected to your network.", "category": "Essential Tweaks", "panel": "1", - "Order": "a009_", + "Order": "a005_", "service": [ { "Name": "HomeGroupListener", @@ -82,7 +129,7 @@ "Description": "Disables Location Tracking...DUH!", "category": "Essential Tweaks", "panel": "1", - "Order": "a008_", + "Order": "a005_", "registry": [ { "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location", @@ -1872,27 +1919,6 @@ "Value": "1", "Type": "DWord" }, - { - "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games", - "OriginalValue": "1", - "Name": "GPU Priority", - "Value": "8", - "Type": "DWord" - }, - { - "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games", - "OriginalValue": "1", - "Name": "Priority", - "Value": "6", - "Type": "DWord" - }, - { - "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games", - "OriginalValue": "High", - "Name": "Scheduling Category", - "Value": "High", - "Type": "String" - }, { "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement", "OriginalValue": "1", @@ -1942,7 +1968,7 @@ "Description": "Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location.", "category": "Essential Tweaks", "panel": "1", - "Order": "a004_", + "Order": "a005_", "registry": [ { "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting", @@ -1965,7 +1991,7 @@ "Description": "Essential for computers that are dual booting. Fixes the time sync with Linux Systems.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a022_", + "Order": "a027_", "registry": [ { "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation", @@ -1981,7 +2007,7 @@ "Description": "Sets the system preferences to performance. You can do this manually with sysdm.cpl as well.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a021_", + "Order": "a027_", "registry": [ { "Path": "HKCU:\\Control Panel\\Desktop", @@ -2087,7 +2113,7 @@ "Description": "USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a025_", + "Order": "a028_", "appx": [ "Microsoft.Microsoft3DViewer", "Microsoft.AppConnector", @@ -2262,7 +2288,7 @@ "Description": "Enables option to end task when right clicking a program in the taskbar", "category": "Essential Tweaks", "panel": "1", - "Order": "a002_", + "Order": "a006_", "InvokeScript": [ " Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\" -Name \"TaskbarEndTask\" -Type \"DWord\" -Value \"1\" @@ -2274,12 +2300,25 @@ " ] }, + "WPFTweaksPowershell7": { + "Content": "Replace Default Powershell 5 to Powershell 7", + "Description": "This will edit the config file of the Windows Terminal Replacing the Powershell 5 to Powershell 7 and install Powershell 7 if necessary", + "category": "Essential Tweaks", + "panel": "1", + "Order": "a009_", + "InvokeScript": [ + "Invoke-WPFTweakPS7 -action \"PS7\"" + ], + "UndoScript": [ + "Invoke-WPFTweakPS7 -action \"PS5\"" + ] + }, "WPFTweaksOO": { "Content": "Run OO Shutup", "Description": "Runs OO Shutup and applies the recommended Tweaks. https://www.oo-software.com/en/shutup10", "category": "Essential Tweaks", "panel": "1", - "Order": "a002_", + "Order": "a009_", "ToolTip": "Runs OO Shutup and applies the recommended Tweaks https://www.oo-software.com/en/shutup10", "InvokeScript": [ "Invoke-WPFOOSU -action \"recommended\"" @@ -2293,7 +2332,7 @@ "Description": "Storage Sense deletes temp files automatically.", "category": "Essential Tweaks", "panel": "1", - "Order": "a010_", + "Order": "a005_", "InvokeScript": [ "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force" ], @@ -2306,7 +2345,7 @@ "Description": "Removes MS Edge when it gets reinstalled by updates.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a026_", + "Order": "a029_", "InvokeScript": [ " #:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat @@ -2323,12 +2362,55 @@ " ] }, + "WPFTweaksRemoveCopilot": { + "Content": "Disable Microsoft Copilot", + "Description": "Disables MS Copilot AI built into Windows since 23H2.", + "category": "z__Advanced Tweaks - CAUTION", + "panel": "1", + "Order": "a025_", + "registry": [ + { + + "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsCopilot", + "Name": "TurnOffWindowsCopilot", + "Type": "DWord", + "Value": "1", + "OriginalValue": "0" + }, + { + "Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\WindowsCopilot", + "Name": "TurnOffWindowsCopilot", + "Type": "DWord", + "Value": "1", + "OriginalValue": "0" + }, + { + "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", + "Name": "ShowCopilotButton", + "Type": "DWord", + "Value": "0", + "OriginalValue": "1" + } + ], + "InvokeScript": [ + " + Write-Host \"Remove Popilot\" + dism /online /remove-package /package-name:Microsoft.Windows.Copilot + " + ], + "UndoScript": [ + " + Write-Host \"Install Copilot\" + dism /online /add-package /package-name:Microsoft.Windows.Copilot + " + ] + }, "WPFTweaksRemoveOnedrive": { "Content": "Remove OneDrive", "Description": "Copies OneDrive files to Default Home Folders and Uninstalls it.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a027_", + "Order": "a030_", "InvokeScript": [ " @@ -2411,7 +2493,7 @@ "Description": "Disables all Notifications INCLUDING Calendar", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a024_", + "Order": "a026_", "registry": [ { "Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer", @@ -2429,12 +2511,273 @@ } ] }, + "WPFTweaksDebloatAdobe": { + "Content": "Adobe Debloat", + "Description": "Manages Adobe Services, Adobe Desktop Service, and Acrobat Updates", + "category": "z__Advanced Tweaks - CAUTION", + "panel": "1", + "Order": "a021_", + "InvokeScript": [ + " + function CCStopper { + $path = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe\" + + # Test if the path exists before proceeding + if (Test-Path $path) { + Takeown /f $path + $acl = Get-Acl $path + $acl.SetOwner([System.Security.Principal.NTAccount]\"Administrators\") + $acl | Set-Acl $path + + Rename-Item -Path $path -NewName \"Adobe Desktop Service.exe.old\" -Force + } else { + Write-Host \"Adobe Desktop Service is not in the default location.\" + } + } + + + function AcrobatUpdates { + # Editing Acrobat Updates. The last folder before the key is dynamic, therefore using a script. + # Possible Values for the edited key: + # 0 = Do not download or install updates automatically + # 2 = Automatically download updates but let the user choose when to install them + # 3 = Automatically download and install updates (default value) + # 4 = Notify the user when an update is available but don't download or install it automatically + # = It notifies the user using Windows Notifications. It runs on startup without having to have a Service/Acrobat/Reader running, therefore 0 is the next best thing. + + $rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\" + + # Get all subkeys under the specified root path + $subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like \"{*}\" } + + # Loop through each subkey + foreach ($subKey in $subKeys) { + # Get the full registry path + $fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName + try { + Set-ItemProperty -Path $fullPath -Name Mode -Value 0 + Write-Host \"Acrobat Updates have been disabled.\" + } catch { + Write-Host \"Registry Key for changing Acrobat Updates does not exist in $fullPath\" + } + } + } + + CCStopper + AcrobatUpdates + " + ], + "UndoScript": [ + " + function RestoreCCService { + $originalPath = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe.old\" + $newPath = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe\" + + if (Test-Path -Path $originalPath) { + Rename-Item -Path $originalPath -NewName \"Adobe Desktop Service.exe\" -Force + Write-Host \"Adobe Desktop Service has been restored.\" + } else { + Write-Host \"Backup file does not exist. No changes were made.\" + } + } + + function AcrobatUpdates { + # Default Value: + # 3 = Automatically download and install updates + + $rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\" + + # Get all subkeys under the specified root path + $subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like \"{*}\" } + + # Loop through each subkey + foreach ($subKey in $subKeys) { + # Get the full registry path + $fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName + try { + Set-ItemProperty -Path $fullPath -Name Mode -Value 3 + } catch { + Write-Host \"Registry Key for changing Acrobat Updates does not exist in $fullPath\" + } + } + } + + RestoreCCService + AcrobatUpdates + " + ], + "service": [ + { + "Name": "AGSService", + "StartupType": "Disabled", + "OriginalType": "Automatic" + }, + { + "Name": "AGMService", + "StartupType": "Disabled", + "OriginalType": "Automatic" + }, + { + "Name": "AdobeUpdateService", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "Adobe Acrobat Update", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "Adobe Genuine Monitor Service", + "StartupType": "Disabled", + "OriginalType": "Automatic" + }, + { + "Name": "AdobeARMservice", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "Adobe Licensing Console", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "CCXProcess", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "AdobeIPCBroker", + "StartupType": "Manual", + "OriginalType": "Automatic" + }, + { + "Name": "CoreSync", + "StartupType": "Manual", + "OriginalType": "Automatic" + } + ] + }, + "WPFTweaksBlockAdobeNet": { + "Content": "Adobe Network Block", + "Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. ", + "category": "z__Advanced Tweaks - CAUTION", + "panel": "1", + "Order": "a021_", + "InvokeScript": [ + " + # Define the URL of the remote HOSTS file and the local paths + $remoteHostsUrl = \"https://raw.githubusercontent.com/Ruddernation-Designs/Adobe-URL-Block-List/master/hosts\" + $localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\" + $tempHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\temp_hosts\" + + # Download the remote HOSTS file to a temporary location + try { + Invoke-WebRequest -Uri $remoteHostsUrl -OutFile $tempHostsPath + Write-Output \"Downloaded the remote HOSTS file to a temporary location.\" + } + catch { + Write-Error \"Failed to download the HOSTS file. Error: $_\" + } + + # Check if the AdobeNetBlock has already been started + try { + $localHostsContent = Get-Content $localHostsPath -ErrorAction Stop + + # Check if AdobeNetBlock markers exist + $blockStartExists = $localHostsContent -like \"*#AdobeNetBlock-start*\" + if ($blockStartExists) { + Write-Output \"AdobeNetBlock-start already exists. Skipping addition of new block.\" + } else { + # Load the new block from the downloaded file + $newBlockContent = Get-Content $tempHostsPath -ErrorAction Stop + $newBlockContent = $newBlockContent | Where-Object { $_ -notmatch \"^\\s*#\" -and $_ -ne \"\" } # Exclude empty lines and comments + $newBlockHeader = \"#AdobeNetBlock-start\" + $newBlockFooter = \"#AdobeNetBlock-end\" + + # Combine the contents, ensuring new block is properly formatted + $combinedContent = $localHostsContent + $newBlockHeader, $newBlockContent, $newBlockFooter | Out-String + + # Write the combined content back to the original HOSTS file + $combinedContent | Set-Content $localHostsPath -Encoding ASCII + Write-Output \"Successfully added the AdobeNetBlock.\" + } + } + catch { + Write-Error \"Error during processing: $_\" + } + + # Clean up temporary file + Remove-Item $tempHostsPath -ErrorAction Ignore + + # Flush the DNS resolver cache + try { + Invoke-Expression \"ipconfig /flushdns\" + Write-Output \"DNS cache flushed successfully.\" + } + catch { + Write-Error \"Failed to flush DNS cache. Error: $_\" + } + " + ], + "UndoScript": [ + " + # Define the local path of the HOSTS file + $localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\" + + # Load the content of the HOSTS file + try { + $hostsContent = Get-Content $localHostsPath -ErrorAction Stop + } + catch { + Write-Error \"Failed to load the HOSTS file. Error: $_\" + return + } + + # Initialize flags and buffer for new content + $recording = $true + $newContent = @() + + # Iterate over each line of the HOSTS file + foreach ($line in $hostsContent) { + if ($line -match \"#AdobeNetBlock-start\") { + $recording = $false + } + if ($recording) { + $newContent += $line + } + if ($line -match \"#AdobeNetBlock-end\") { + $recording = $true + } + } + + # Write the filtered content back to the HOSTS file + try { + $newContent | Set-Content $localHostsPath -Encoding ASCII + Write-Output \"Successfully removed the AdobeNetBlock section from the HOSTS file.\" + } + catch { + Write-Error \"Failed to write back to the HOSTS file. Error: $_\" + } + + # Flush the DNS resolver cache + try { + Invoke-Expression \"ipconfig /flushdns\" + Write-Output \"DNS cache flushed successfully.\" + } + catch { + Write-Error \"Failed to flush DNS cache. Error: $_\" + } + " + ] + }, "WPFTweaksRightClickMenu": { "Content": "Set Classic Right-Click Menu ", "Description": "Great Windows 11 tweak to bring back good context menus when right clicking things in explorer.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a028_", + "Order": "a027_", "InvokeScript": [ " New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" @@ -2458,7 +2801,7 @@ "Description": "Runs Disk Cleanup on Drive C: and removes old Windows Updates.", "category": "Essential Tweaks", "panel": "1", - "Order": "a007_", + "Order": "a009_", "InvokeScript": [ " cleanmgr.exe /d C: /VERYLOWDISK @@ -2471,7 +2814,7 @@ "Description": "Erases TEMP Folders", "category": "Essential Tweaks", "panel": "1", - "Order": "a006_", + "Order": "a002_", "InvokeScript": [ "Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse" @@ -2482,7 +2825,7 @@ "Description": "GameDVR is a Windows App that is a dependency for some Store Games. I've never met someone that likes it, but it's there for the XBOX crowd.", "category": "Essential Tweaks", "panel": "1", - "Order": "a012_", + "Order": "a005_", "registry": [ { "Path": "HKCU:\\System\\GameConfigStore", @@ -2498,13 +2841,6 @@ "OriginalValue": "1", "Type": "DWord" }, - { - "Path": "HKCU:\\System\\GameConfigStore", - "Name": "GameDVR_DXGIHonorFSEWindowsCompatible", - "Value": "1", - "OriginalValue": "0", - "Type": "DWord" - }, { "Path": "HKCU:\\System\\GameConfigStore", "Name": "GameDVR_HonorUserFSEBehaviorMode", @@ -2533,8 +2869,7 @@ "Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency.", "category": "Essential Tweaks", "panel": "1", - "Order": "a029_", - "Order": "a013_", + "Order": "a005_", "registry": [ { "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", @@ -2556,7 +2891,7 @@ "Description": "Disables IPv6.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a031_", + "Order": "a023_", "registry": [ { "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", @@ -2573,12 +2908,28 @@ "Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" ] }, + "WPFTweaksDisableFSO": { + "Content": "Disable Fullscreen Optimizations", + "Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen", + "category": "z__Advanced Tweaks - CAUTION", + "panel": "1", + "Order": "a024_", + "registry": [ + { + "Path": "HKCU:\\System\\GameConfigStore", + "Name": "GameDVR_DXGIHonorFSEWindowsCompatible", + "Value": "1", + "OriginalValue": "0", + "Type": "DWord" + } + ] + }, "WPFTweaksEnableipsix": { "Content": "Enable IPv6", "Description": "Enables IPv6.", "category": "z__Advanced Tweaks - CAUTION", "panel": "1", - "Order": "a030_", + "Order": "a023_", "registry": [ { "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", @@ -2635,12 +2986,28 @@ "Order": "a064_", "Type": "Toggle" }, + "WPFToggleSnapWindow": { + "Content": "Snap Window", + "Description": "If enabled you can align windows by dragging them. | Relogin Required", + "category": "Customize Preferences", + "panel": "2", + "Order": "a065_", + "Type": "Toggle" + }, "WPFToggleSnapFlyout": { "Content": "Snap Assist Flyout", "Description": "If enabled then Snap preview is disabled when maximize button is hovered.", "category": "Customize Preferences", "panel": "2", - "Order": "a065_", + "Order": "a066_", + "Type": "Toggle" + }, + "WPFToggleSnapSuggestion": { + "Content": "Snap Assist Suggestion", + "Description": "If enabled then you will get suggestions to snap other applications in the left over spaces.", + "category": "Customize Preferences", + "panel": "2", + "Order": "a067_", "Type": "Toggle" }, "WPFToggleMouseAcceleration": { @@ -2648,7 +3015,7 @@ "Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.", "category": "Customize Preferences", "panel": "2", - "Order": "a066_", + "Order": "a068_", "Type": "Toggle" }, "WPFToggleStickyKeys": { @@ -2656,7 +3023,7 @@ "Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.", "category": "Customize Preferences", "panel": "2", - "Order": "a067_", + "Order": "a069_", "Type": "Toggle" }, "WPFOOSUbutton": { @@ -2717,4 +3084,4 @@ "Order": "a082_", "Type": "300" } -} +} \ No newline at end of file diff --git a/functions/private/Get-TabXaml.ps1 b/functions/private/Get-TabXaml.ps1 index a420e344..9caf2e9b 100644 --- a/functions/private/Get-TabXaml.ps1 +++ b/functions/private/Get-TabXaml.ps1 @@ -77,7 +77,13 @@ function Get-TabXaml { $panelcount++ } } - $blockXml += "