├── Assets ├── Sound.mp3 ├── GTweak.ico ├── GTweak.png ├── GTweak.psd ├── 3D-GTweak.png ├── ImagesPkgs │ ├── Edge.png │ ├── Mail.png │ ├── Maps.png │ ├── Xbox.png │ ├── Alarms.png │ ├── Camera.png │ ├── Music.png │ ├── People.png │ ├── Phone.png │ ├── Photos.png │ ├── Todos.png │ ├── Video.png │ ├── BingNews.png │ ├── Clipchamp.png │ ├── Copilot.png │ ├── Cortana.png │ ├── DevHome.png │ ├── GetHelp.png │ ├── Linkedin.png │ ├── Notepad.png │ ├── OneDrive.png │ ├── OneNote.png │ ├── Outlook.png │ ├── Paint3D.png │ ├── SandTimer.png │ ├── SkypeApp.png │ ├── Terminal.png │ ├── Widgets.png │ ├── BingFinance.png │ ├── BingSearch.png │ ├── BingSports.png │ ├── BingWeather.png │ ├── Calculator.png │ ├── FeedbackHub.png │ ├── GetStarted.png │ ├── QuickAssist.png │ ├── MicrosoftStore.png │ ├── MicrosoftTeams.png │ ├── MixedReality.png │ ├── ScreenSketch.png │ ├── SoundRecorder.png │ ├── Microsoft3DViewer.png │ ├── MicrosoftOfficeHub.png │ ├── WebMediaExtensions.png │ ├── MicrosoftFamilySafety.png │ ├── MicrosoftStickyNotes.png │ ├── MobilePlanOneConnect.png │ ├── MicrosoftPowerAutomate.png │ └── MicrosoftSolitaireCollection.png ├── TitleBar │ ├── Minimize.svg │ ├── Moon.svg │ ├── AvatarProfile.svg │ ├── Close.svg │ └── Sun.svg ├── SystemInfo │ ├── LogoWin.svg │ ├── Vision.svg │ ├── No vision.svg │ ├── Network.svg │ ├── IPaddress.svg │ └── VideoCard.svg └── SettingsPanel │ ├── Git.svg │ └── VolumeMute.svg ├── .github ├── button.png ├── Preview.gif ├── screenshots │ ├── en │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── fr │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── hu │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── it │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── ko │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── ru │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ ├── uk │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Interface.png │ │ ├── Services.png │ │ ├── Applications.png │ │ └── Confidentiality.png │ └── pt-br │ │ ├── System.png │ │ ├── Utils.png │ │ ├── Services.png │ │ ├── Interface.png │ │ ├── Applications.png │ │ └── Confidentiality.png ├── ISSUE_TEMPLATE │ ├── ❓-questions-and-answers.yaml │ ├── 🐞-bug-report.yaml │ └── ✨-feature-request-.yaml └── workflows │ └── build.yaml ├── .Source └── GTweak │ ├── GTweak.ico │ ├── Resources │ ├── Blank.gz │ ├── hosts.gz │ ├── NSudoLC.gz │ ├── Sound.wav │ └── UltPower.gz │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.tt │ └── Resources.Designer.cs │ ├── Assets │ ├── Fonts │ │ ├── Jura-Medium.ttf │ │ ├── Play-Regular.ttf │ │ └── Fonts.xaml │ ├── ImagePackages │ │ ├── Alarms.png │ │ ├── Camera.png │ │ ├── Edge.png │ │ ├── Mail.png │ │ ├── Maps.png │ │ ├── Music.png │ │ ├── People.png │ │ ├── Phone.png │ │ ├── Photos.png │ │ ├── Todos.png │ │ ├── Video.png │ │ ├── Xbox.png │ │ ├── BingNews.png │ │ ├── Copilot.png │ │ ├── Cortana.png │ │ ├── DevHome.png │ │ ├── GetHelp.png │ │ ├── Linkedin.png │ │ ├── Notepad.png │ │ ├── OneDrive.png │ │ ├── OneNote.png │ │ ├── Outlook.png │ │ ├── Paint3D.png │ │ ├── SkypeApp.png │ │ ├── Terminal.png │ │ ├── Widgets.png │ │ ├── BingFinance.png │ │ ├── BingSearch.png │ │ ├── BingSports.png │ │ ├── BingWeather.png │ │ ├── Calculator.png │ │ ├── Clipchamp.png │ │ ├── FeedbackHub.png │ │ ├── GetStarted.png │ │ ├── QuickAssist.png │ │ ├── SandTimer.png │ │ ├── MixedReality.png │ │ ├── ScreenSketch.png │ │ ├── SoundRecorder.png │ │ ├── MicrosoftStore.png │ │ ├── MicrosoftTeams.png │ │ ├── Microsoft3DViewer.png │ │ ├── MicrosoftOfficeHub.png │ │ ├── WebMediaExtensions.png │ │ ├── MicrosoftFamilySafety.png │ │ ├── MicrosoftStickyNotes.png │ │ ├── MobilePlanOneConnect.png │ │ ├── MicrosoftPowerAutomate.png │ │ └── MicrosoftSolitaireCollection.png │ └── UserControl │ │ ├── DescriptionBlock.xaml.cs │ │ ├── DescriptionBlock.xaml │ │ ├── ToggleButton.xaml │ │ ├── Card.xaml.cs │ │ └── Card.xaml │ ├── FodyWeavers.xml │ ├── App.config │ ├── Core │ ├── Model │ │ ├── InterfaceModel.cs │ │ ├── ServicesModel.cs │ │ ├── ConfidentialityModel.cs │ │ ├── SystemModel.cs │ │ ├── DataSystemModel.cs │ │ ├── MainWinModel.cs │ │ └── PakagesModel.cs │ ├── ButtonNavigation.cs │ ├── Base │ │ ├── ViewModelBase.cs │ │ └── ViewModelPageBase.cs │ ├── ViewModel │ │ ├── ServicesViewModel.cs │ │ ├── SystemViewModel.cs │ │ ├── ConfidentialityViewModel.cs │ │ ├── InterfaceViewModel.cs │ │ └── PakagesViewModel.cs │ ├── RelayCommand.cs │ └── DataTemplate.xaml │ ├── packages.config │ ├── Windows │ ├── OverlayWindow.xaml │ ├── MessageWindow.xaml.cs │ ├── OverlayWindow.xaml.cs │ ├── UpdateWindow.xaml.cs │ ├── NotificationWindow.xaml.cs │ ├── UpdateWindow.xaml │ ├── LoadingWindow.xaml.cs │ ├── ImportWindow.xaml │ └── NotificationWindow.xaml │ ├── app.manifest │ ├── Utilities │ ├── Managers │ │ ├── ArchiveManager.cs │ │ ├── ControlWriterManager.cs │ │ ├── TimerControlManager.cs │ │ ├── OverlayDialogManager.cs │ │ └── ExplorerManager.cs │ ├── Helpers │ │ ├── BackgroundQueue.cs │ │ └── DisablingWinKeys.cs │ ├── Animation │ │ ├── FactoryAnimation.cs │ │ ├── BrushAnimation.cs │ │ ├── NumberAnimation.cs │ │ └── TypewriterAnimation.cs │ ├── Controls │ │ ├── RunGuard.cs │ │ └── ErrorLogging.cs │ ├── Configuration │ │ └── HardwareData.cs │ ├── Storage │ │ └── WinKeyStorage.cs │ └── Maintenance │ │ └── NTFSCompressor.cs │ ├── Languages │ └── LanguageCatalog.xaml │ ├── View │ ├── ServicesView.xaml.cs │ ├── ConfidentialityView.xaml.cs │ ├── InterfaceView.xaml.cs │ └── SystemView.xaml.cs │ ├── Styles │ ├── Page.xaml │ ├── Inputs │ │ ├── ComboBox.xaml │ │ └── TextBox.xaml │ ├── Themes │ │ ├── Dark │ │ │ └── Colors.xaml │ │ └── Light │ │ │ └── Colors.xaml │ └── Display │ │ ├── Images.xaml │ │ └── TextBlock.xaml │ └── App.xaml ├── GTweak.sln ├── LICENSE └── .gitattributes /Assets/Sound.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/Sound.mp3 -------------------------------------------------------------------------------- /.github/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/button.png -------------------------------------------------------------------------------- /Assets/GTweak.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/GTweak.ico -------------------------------------------------------------------------------- /Assets/GTweak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/GTweak.png -------------------------------------------------------------------------------- /Assets/GTweak.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/GTweak.psd -------------------------------------------------------------------------------- /.github/Preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/Preview.gif -------------------------------------------------------------------------------- /Assets/3D-GTweak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/3D-GTweak.png -------------------------------------------------------------------------------- /.Source/GTweak/GTweak.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/GTweak.ico -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Edge.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Mail.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Maps.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Xbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Xbox.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Alarms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Alarms.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Camera.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Music.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/People.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/People.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Phone.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Photos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Photos.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Todos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Todos.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Video.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/BingNews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/BingNews.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Clipchamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Clipchamp.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Copilot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Copilot.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Cortana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Cortana.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/DevHome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/DevHome.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/GetHelp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/GetHelp.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Linkedin.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Notepad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Notepad.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/OneDrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/OneDrive.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/OneNote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/OneNote.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Outlook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Outlook.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Paint3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Paint3D.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/SandTimer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/SandTimer.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/SkypeApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/SkypeApp.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Terminal.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Widgets.png -------------------------------------------------------------------------------- /.Source/GTweak/Resources/Blank.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Resources/Blank.gz -------------------------------------------------------------------------------- /.Source/GTweak/Resources/hosts.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Resources/hosts.gz -------------------------------------------------------------------------------- /.github/screenshots/en/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/System.png -------------------------------------------------------------------------------- /.github/screenshots/en/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/fr/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/System.png -------------------------------------------------------------------------------- /.github/screenshots/fr/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/hu/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/System.png -------------------------------------------------------------------------------- /.github/screenshots/hu/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/it/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/System.png -------------------------------------------------------------------------------- /.github/screenshots/it/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/ko/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/System.png -------------------------------------------------------------------------------- /.github/screenshots/ko/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/ru/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/System.png -------------------------------------------------------------------------------- /.github/screenshots/ru/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/uk/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/System.png -------------------------------------------------------------------------------- /.github/screenshots/uk/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/Utils.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/BingFinance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/BingFinance.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/BingSearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/BingSearch.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/BingSports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/BingSports.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/BingWeather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/BingWeather.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Calculator.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/FeedbackHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/FeedbackHub.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/GetStarted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/GetStarted.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/QuickAssist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/QuickAssist.png -------------------------------------------------------------------------------- /.Source/GTweak/Resources/NSudoLC.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Resources/NSudoLC.gz -------------------------------------------------------------------------------- /.Source/GTweak/Resources/Sound.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Resources/Sound.wav -------------------------------------------------------------------------------- /.Source/GTweak/Resources/UltPower.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Resources/UltPower.gz -------------------------------------------------------------------------------- /.github/screenshots/en/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/en/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/Services.png -------------------------------------------------------------------------------- /.github/screenshots/fr/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/fr/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/Services.png -------------------------------------------------------------------------------- /.github/screenshots/hu/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/hu/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/Services.png -------------------------------------------------------------------------------- /.github/screenshots/it/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/it/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/Services.png -------------------------------------------------------------------------------- /.github/screenshots/ko/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/ko/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/Services.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/System.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/Utils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/Utils.png -------------------------------------------------------------------------------- /.github/screenshots/ru/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/ru/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/Services.png -------------------------------------------------------------------------------- /.github/screenshots/uk/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/uk/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/Services.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftStore.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftTeams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftTeams.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MixedReality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MixedReality.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/ScreenSketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/ScreenSketch.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/SoundRecorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/SoundRecorder.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/Services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/Services.png -------------------------------------------------------------------------------- /.Source/GTweak/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /.github/screenshots/en/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/fr/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/hu/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/it/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/ko/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/Interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/Interface.png -------------------------------------------------------------------------------- /.github/screenshots/ru/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/uk/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/Applications.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/Microsoft3DViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/Microsoft3DViewer.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftOfficeHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftOfficeHub.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/WebMediaExtensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/WebMediaExtensions.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/Fonts/Jura-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/Fonts/Jura-Medium.ttf -------------------------------------------------------------------------------- /.github/screenshots/en/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/en/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/fr/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/fr/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/hu/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/hu/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/it/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/it/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/ko/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ko/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/Applications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/Applications.png -------------------------------------------------------------------------------- /.github/screenshots/ru/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/ru/Confidentiality.png -------------------------------------------------------------------------------- /.github/screenshots/uk/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/uk/Confidentiality.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftFamilySafety.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftFamilySafety.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftStickyNotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftStickyNotes.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MobilePlanOneConnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MobilePlanOneConnect.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/Fonts/Play-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/Fonts/Play-Regular.ttf -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Alarms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Alarms.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Camera.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Edge.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Mail.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Maps.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Music.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/People.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/People.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Phone.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Photos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Photos.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Todos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Todos.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Video.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Xbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Xbox.png -------------------------------------------------------------------------------- /.github/screenshots/pt-br/Confidentiality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.github/screenshots/pt-br/Confidentiality.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftPowerAutomate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftPowerAutomate.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/BingNews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/BingNews.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Copilot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Copilot.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Cortana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Cortana.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/DevHome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/DevHome.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/GetHelp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/GetHelp.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Linkedin.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Notepad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Notepad.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/OneDrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/OneDrive.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/OneNote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/OneNote.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Outlook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Outlook.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Paint3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Paint3D.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/SkypeApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/SkypeApp.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Terminal.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Widgets.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/BingFinance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/BingFinance.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/BingSearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/BingSearch.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/BingSports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/BingSports.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/BingWeather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/BingWeather.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Calculator.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Clipchamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Clipchamp.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/FeedbackHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/FeedbackHub.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/GetStarted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/GetStarted.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/QuickAssist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/QuickAssist.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/SandTimer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/SandTimer.png -------------------------------------------------------------------------------- /Assets/ImagesPkgs/MicrosoftSolitaireCollection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/Assets/ImagesPkgs/MicrosoftSolitaireCollection.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MixedReality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MixedReality.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/ScreenSketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/ScreenSketch.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/SoundRecorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/SoundRecorder.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftStore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftStore.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftTeams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftTeams.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/Microsoft3DViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/Microsoft3DViewer.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftOfficeHub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftOfficeHub.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/WebMediaExtensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/WebMediaExtensions.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftFamilySafety.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftFamilySafety.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftStickyNotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftStickyNotes.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MobilePlanOneConnect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MobilePlanOneConnect.png -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftPowerAutomate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftPowerAutomate.png -------------------------------------------------------------------------------- /.Source/GTweak/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/ImagePackages/MicrosoftSolitaireCollection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Greedeks/GTweak/HEAD/.Source/GTweak/Assets/ImagePackages/MicrosoftSolitaireCollection.png -------------------------------------------------------------------------------- /.Source/GTweak/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.Source/GTweak/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/InterfaceModel.cs: -------------------------------------------------------------------------------- 1 | using GTweak.Core.Base; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class InterfaceModel : IBasePageItem 6 | { 7 | public string Name { get; set; } 8 | public bool State { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/ServicesModel.cs: -------------------------------------------------------------------------------- 1 | using GTweak.Core.Base; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class ServicesModel : IBasePageItem 6 | { 7 | public string Name { get; set; } 8 | public bool State { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/ConfidentialityModel.cs: -------------------------------------------------------------------------------- 1 | using GTweak.Core.Base; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class ConfidentialityModel : IBasePageItem 6 | { 7 | public string Name { get; set; } 8 | public bool State { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/SystemModel.cs: -------------------------------------------------------------------------------- 1 | using GTweak.Core.Base; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class SystemModel : ITypedPageItem 6 | { 7 | public string Name { get; set; } 8 | public bool State { get; set; } 9 | public double Value { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Assets/TitleBar/Minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/Fonts/Fonts.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | /Assets/Fonts/Jura-Medium.ttf#Jura 5 | /Assets/Fonts/Play-Regular.ttf#Play 6 | 7 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/DataSystemModel.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class DataSystemModel 6 | { 7 | public string Name { get; set; } 8 | public string Data { get; set; } 9 | internal int BlurValue { get; set; } 10 | internal Visibility IpVisibility { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/ButtonNavigation.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace GTweak.Core 5 | { 6 | internal sealed class ButtonNavigation : RadioButton 7 | { 8 | static ButtonNavigation() => DefaultStyleKeyProperty.OverrideMetadata(typeof(ButtonNavigation), new FrameworkPropertyMetadata(typeof(ButtonNavigation))); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/MainWinModel.cs: -------------------------------------------------------------------------------- 1 | namespace GTweak.Core.Model 2 | { 3 | internal sealed class MainWinModel 4 | { 5 | public object CurrentView { get; set; } 6 | public string SelectedLanguage { get; set; } 7 | 8 | internal class LanguageItem 9 | { 10 | public string Code { get; set; } 11 | public string Display { get; set; } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Base/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace GTweak.Core.Base 5 | { 6 | internal class ViewModelBase : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | public void OnPropertyChanged([CallerMemberName] string propName = null) 10 | { 11 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/ViewModel/ServicesViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using GTweak.Core.Base; 3 | using GTweak.Core.Model; 4 | using GTweak.Utilities.Tweaks; 5 | 6 | namespace GTweak.Core.ViewModel 7 | { 8 | internal class ServicesViewModel : ViewModelPageBase 9 | { 10 | protected override Dictionary GetControlStates() => ServicesTweaks.ControlStates; 11 | 12 | protected override void Analyze(ServicesTweaks tweaks) => tweaks.AnalyzeAndUpdate(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/❓-questions-and-answers.yaml: -------------------------------------------------------------------------------- 1 | name: "❓ Questions and Answers" 2 | description: "Frequently Asked Questions" 3 | title: "[Question] Title" 4 | labels: 5 | - documentation 6 | - question 7 | assignees: 8 | - Greedeks 9 | 10 | body: 11 | - type: textarea 12 | id: question 13 | attributes: 14 | label: "❓ Your Question" 15 | description: "Ask your question here. Provide as much detail as possible to get a clear and helpful answer." 16 | placeholder: "Write your question..." 17 | validations: 18 | required: true 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/🐞-bug-report.yaml: -------------------------------------------------------------------------------- 1 | name: "🐞 Bug Report" 2 | description: "Description of the error or the problem with the utility" 3 | title: "[BUG] Title" 4 | labels: 5 | - bug 6 | - help wanted 7 | - wontfix 8 | assignees: 9 | - Greedeks 10 | 11 | body: 12 | - type: textarea 13 | id: problem_description 14 | attributes: 15 | label: "🚨 Problem Description" 16 | description: "Describe the nature of your problem. Or the conditions of its occurrence and attach screenshots or error logs if possible." 17 | placeholder: "Explain the issue in detail..." 18 | validations: 19 | required: true 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/✨-feature-request-.yaml: -------------------------------------------------------------------------------- 1 | name: "✨ Feature Request" 2 | description: "Suggest an idea for this project" 3 | title: "[Feature Request] Title" 4 | labels: 5 | - enhancement 6 | - experience using 7 | assignees: 8 | - Greedeks 9 | 10 | body: 11 | - type: textarea 12 | id: description 13 | attributes: 14 | label: "📝 Description" 15 | description: "Provide a detailed description of the feature. Describe what the feature should do, how it is expected to work, and include any relevant background or context that explains its importance." 16 | placeholder: "Describe your feature request in detail..." 17 | validations: 18 | required: true 19 | -------------------------------------------------------------------------------- /.Source/GTweak/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/ViewModel/SystemViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Windows; 3 | using GTweak.Core.Base; 4 | using GTweak.Core.Model; 5 | using GTweak.Utilities.Configuration; 6 | using GTweak.Utilities.Tweaks; 7 | 8 | namespace GTweak.Core.ViewModel 9 | { 10 | internal class SystemViewModel : ViewModelPageBase 11 | { 12 | public Visibility RealtekSupportAvailable => HardwareData.VendorDetection.Realtek ? Visibility.Visible : Visibility.Collapsed; 13 | 14 | protected override Dictionary GetControlStates() => SystemTweaks.ControlStates; 15 | 16 | protected override void Analyze(SystemTweaks tweaks) => tweaks.AnalyzeAndUpdate(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.Source/GTweak/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace GTweak.Properties { 2 | 3 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 4 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] 5 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 6 | 7 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 8 | 9 | public static Settings Default { 10 | get { 11 | return defaultInstance; 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Intermediate Release Build 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | branches: [ main ] 7 | 8 | jobs: 9 | build: 10 | runs-on: windows-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v4 15 | 16 | - name: Setup MSBuild 17 | uses: microsoft/setup-msbuild@v2 18 | 19 | - name: Restore NuGet packages 20 | run: nuget restore GTweak.sln 21 | 22 | - name: Build the solution (Release) 23 | run: msbuild GTweak.sln /t:Rebuild /p:Configuration=Release 24 | 25 | - name: Upload Build Artifacts 26 | uses: actions/upload-artifact@v4 27 | with: 28 | name: build 29 | path: | 30 | .Source/GTweak/bin/Release/ 31 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/ViewModel/ConfidentialityViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Windows; 3 | using GTweak.Core.Base; 4 | using GTweak.Core.Model; 5 | using GTweak.Utilities.Configuration; 6 | using GTweak.Utilities.Tweaks; 7 | 8 | namespace GTweak.Core.ViewModel 9 | { 10 | internal class ConfidentialityViewModel : ViewModelPageBase 11 | { 12 | public Visibility NvSupportAvailable => HardwareData.VendorDetection.Nvidia ? Visibility.Visible : Visibility.Collapsed; 13 | 14 | protected override Dictionary GetControlStates() => ConfidentialityTweaks.ControlStates; 15 | 16 | protected override void Analyze(ConfidentialityTweaks tweaks) => tweaks.AnalyzeAndUpdate(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Model/PakagesModel.cs: -------------------------------------------------------------------------------- 1 | using GTweak.Core.Base; 2 | 3 | namespace GTweak.Core.Model 4 | { 5 | internal sealed class PakagesModel : ViewModelBase 6 | { 7 | private string _name; 8 | private bool _installed; 9 | private bool _isUnavailable; 10 | 11 | public string Name 12 | { 13 | get => _name; 14 | set { _name = value; OnPropertyChanged(); } 15 | } 16 | 17 | public bool Installed 18 | { 19 | get => _installed; 20 | set { _installed = value; OnPropertyChanged(); } 21 | } 22 | 23 | public bool IsUnavailable 24 | { 25 | get => _isUnavailable; 26 | set { _isUnavailable = value; OnPropertyChanged(); } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/OverlayWindow.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /.Source/GTweak/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | true 19 | true 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace GTweak.Core 5 | { 6 | internal class RelayCommand : ICommand 7 | { 8 | private readonly Action _execute; 9 | private readonly Func _canExecute; 10 | 11 | public event EventHandler CanExecuteChanged 12 | { 13 | add => CommandManager.RequerySuggested += value; 14 | remove => CommandManager.RequerySuggested -= value; 15 | } 16 | public RelayCommand(Action _execute, Func _canExecute = null) 17 | { 18 | this._execute = _execute; 19 | this._canExecute = _canExecute; 20 | } 21 | public bool CanExecute(object parameter) => _canExecute == null || _canExecute(parameter); 22 | public void Execute(object parameter) => _execute(parameter); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Managers/ArchiveManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.IO.Compression; 4 | 5 | namespace GTweak.Utilities.Managers 6 | { 7 | internal static class ArchiveManager 8 | { 9 | internal static void Unarchive(string path, byte[] resource) 10 | { 11 | string folderDir = path.Remove(path.LastIndexOf(@"\", StringComparison.OrdinalIgnoreCase)); 12 | 13 | if (!Directory.Exists(folderDir)) 14 | { 15 | Directory.CreateDirectory(folderDir); 16 | } 17 | 18 | using MemoryStream fileOut = new MemoryStream(resource); 19 | using GZipStream gzipStream = new GZipStream(fileOut, CompressionMode.Decompress); 20 | using FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write); 21 | 22 | gzipStream.CopyTo(fileStream); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Assets/SystemInfo/LogoWin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/ViewModel/InterfaceViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Windows; 3 | using GTweak.Core.Base; 4 | using GTweak.Core.Model; 5 | using GTweak.Utilities.Configuration; 6 | using GTweak.Utilities.Maintenance; 7 | using GTweak.Utilities.Tweaks; 8 | 9 | namespace GTweak.Core.ViewModel 10 | { 11 | internal class InterfaceViewModel : ViewModelPageBase 12 | { 13 | public Visibility Win11FeatureOnly => HardwareData.OS.IsWin11 ? Visibility.Visible : Visibility.Collapsed; 14 | public Visibility Win11FeatureAvailable => HardwareData.OS.IsWin11 && HardwareData.OS.Build.CompareTo(22621.2361m) >= 0 ? Visibility.Visible : Visibility.Collapsed; 15 | public bool IsBlockWithoutLicense => WindowsLicense.IsWindowsActivated; 16 | 17 | protected override Dictionary GetControlStates() => InterfaceTweaks.ControlStates; 18 | 19 | protected override void Analyze(InterfaceTweaks tweaks) => tweaks.AnalyzeAndUpdate(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/DataTemplate.xaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /.Source/GTweak/Languages/LanguageCatalog.xaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | 12 | English (EN) 13 | Français (FR) 14 | Magyar (HU) 15 | Italiano (IT) 16 | 한국어 (KO) 17 | Português (BR) 18 | Русский (RU) 19 | Українська (UK) 20 | 21 | 22 | -------------------------------------------------------------------------------- /GTweak.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.14.36518.9 d17.14 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GTweak", ".Source\GTweak\GTweak.csproj", "{518AD32F-CE56-4B93-8AE7-80D74CBE34AB}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {518AD32F-CE56-4B93-8AE7-80D74CBE34AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {518AD32F-CE56-4B93-8AE7-80D74CBE34AB}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {518AD32F-CE56-4B93-8AE7-80D74CBE34AB}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {518AD32F-CE56-4B93-8AE7-80D74CBE34AB}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {21CAED49-7609-4B0E-9E15-FCAD703429D4} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Assets/SystemInfo/Vision.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Assets/SystemInfo/No vision.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Helpers/BackgroundQueue.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace GTweak.Utilities.Helpers 6 | { 7 | internal sealed class BackgroundQueue 8 | { 9 | private Task _previousTask = Task.FromResult(true); 10 | private readonly object _key = new object(); 11 | internal Task QueueTask(Action action) 12 | { 13 | lock (_key) 14 | { 15 | _previousTask = _previousTask.ContinueWith(t => action(), CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.Default); 16 | return _previousTask; 17 | } 18 | } 19 | 20 | internal Task QueueTask(Func func) 21 | { 22 | lock (_key) 23 | { 24 | var task = _previousTask.ContinueWith(t => func(), CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.Default); 25 | _previousTask = task; 26 | return task; 27 | } 28 | } 29 | 30 | internal Task QueueCompleted(Action action) 31 | { 32 | lock (_key) 33 | { 34 | _previousTask = _previousTask.ContinueWith(t => action(), CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.Default); 35 | return _previousTask; 36 | } 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /.Source/GTweak/View/ServicesView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | using System.Windows.Input; 4 | using GTweak.Assets.UserControl; 5 | using GTweak.Utilities.Managers; 6 | using GTweak.Utilities.Tweaks; 7 | 8 | namespace GTweak.View 9 | { 10 | public partial class ServicesView : UserControl 11 | { 12 | private readonly ServicesTweaks _svcTweaks = new ServicesTweaks(); 13 | 14 | public ServicesView() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | private void Tweak_MouseEnter(object sender, MouseEventArgs e) 20 | { 21 | string description = ((ToggleButton)sender).Description?.ToString() ?? string.Empty; 22 | 23 | if (DescBlock.Text != description) 24 | { 25 | DescBlock.Text = description; 26 | } 27 | } 28 | 29 | private void Tweak_MouseLeave(object sender, MouseEventArgs e) 30 | { 31 | if (DescBlock.Text != DescBlock.DefaultText) 32 | { 33 | DescBlock.Text = DescBlock.DefaultText; 34 | } 35 | } 36 | 37 | private void TglButton_ChangedState(object sender, RoutedEventArgs e) 38 | { 39 | _svcTweaks.ApplyTweaks(((ToggleButton)sender).Name, ((ToggleButton)sender).State); 40 | 41 | NotificationManager.Show().WithDelay(300).Restart(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /.Source/GTweak/Properties/AssemblyInfo.tt: -------------------------------------------------------------------------------- 1 | <#@ template hostspecific="true" language="C#" #><#@ output extension=".cs" #>using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | [assembly: AssemblyTitle("GTweak")] 6 | [assembly: AssemblyDescription("Portable Tool for an Ideal Windows Setup")] 7 | [assembly: AssemblyProduct("GTweak")] 8 | [assembly: AssemblyCopyright("© 2024-<#= DateTime.Now.Year #> Greedeks")] 9 | [assembly: AssemblyTrademark("Greedeks")] 10 | [assembly: AssemblyInformationalVersion("<#= majorVersion #>")] 11 | [assembly: AssemblyVersion("<#= GenerateVersion() #>")] 12 | [assembly: AssemblyFileVersion("<#= GenerateVersion() #>")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: ThemeInfo( 17 | ResourceDictionaryLocation.None, 18 | ResourceDictionaryLocation.SourceAssembly 19 | )] 20 | 21 | [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/Greedeks/GTweak")] 22 | [assembly: AssemblyMetadata("RepositoryType", "git")] 23 | 24 | <#+ 25 | private const string majorVersion = "Build: 5.3.7"; 26 | 27 | private string GenerateVersion() 28 | { 29 | string[] parts = majorVersion.Replace("Build:", "").Trim().Split('.'); 30 | int build = (int)(DateTime.UtcNow - new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day)).TotalSeconds / 1000; 31 | int revision = (int)(DateTime.UtcNow - DateTime.Now.Date).TotalSeconds % 1000; 32 | return $"{parts[0]}.{parts[1]}.{build}.{revision}"; 33 | } 34 | #> -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Page.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 28 | 29 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/UserControl/DescriptionBlock.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using GTweak.Utilities.Animation; 4 | 5 | namespace GTweak.Assets.UserControl 6 | { 7 | public partial class DescriptionBlock 8 | { 9 | internal string DefaultText 10 | { 11 | get { return (string)GetValue(DefaultTextProperty); } 12 | set { SetValue(DefaultTextProperty, value); } 13 | } 14 | 15 | internal string Text 16 | { 17 | get { return FunctionDescription.Text; } 18 | set 19 | { 20 | TypewriterAnimation.Create(value, FunctionDescription, 21 | value.Length <= 50 ? TimeSpan.FromMilliseconds(200) : value.Length <= 200 ? TimeSpan.FromMilliseconds(400) : TimeSpan.FromMilliseconds(550)); 22 | } 23 | } 24 | 25 | public static readonly DependencyProperty DefaultTextProperty = 26 | DependencyProperty.Register("DefaultText", typeof(string), typeof(DescriptionBlock), new UIPropertyMetadata(string.Empty)); 27 | 28 | 29 | public DescriptionBlock() 30 | { 31 | InitializeComponent(); 32 | App.LanguageChanged += delegate { TypewriterAnimation.Create(DefaultText, FunctionDescription, TimeSpan.FromMilliseconds(0)); }; 33 | } 34 | 35 | private void DescriptionBlock_Loaded(object sender, RoutedEventArgs e) => TypewriterAnimation.Create(DefaultText, FunctionDescription, TimeSpan.FromMilliseconds(300)); 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2025, Greedeks 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /Assets/TitleBar/Moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Animation/FactoryAnimation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Media.Animation; 4 | 5 | namespace GTweak.Utilities.Animation 6 | { 7 | internal static class FactoryAnimation 8 | { 9 | internal static DoubleAnimation CreateIn(double fromValue, double toValue, double seconds, Action onCompleted = null, bool reverse = false, bool useCubicEase = false) 10 | { 11 | DoubleAnimation doubleAnim = new DoubleAnimation() 12 | { 13 | From = fromValue, 14 | To = toValue, 15 | AutoReverse = reverse, 16 | Duration = TimeSpan.FromSeconds(seconds), 17 | EasingFunction = useCubicEase ? new CubicEase() : (IEasingFunction)new QuadraticEase() 18 | }; 19 | 20 | if (onCompleted != null) 21 | { 22 | doubleAnim.Completed += (s, e) => onCompleted(); 23 | } 24 | 25 | Timeline.SetDesiredFrameRate(doubleAnim, 120); 26 | return doubleAnim; 27 | } 28 | 29 | internal static DoubleAnimation CreateTo(double seconds, Action onCompleted = null) 30 | { 31 | DoubleAnimation doubleAnim = new DoubleAnimation(0, (Duration)TimeSpan.FromSeconds(seconds)); 32 | 33 | if (onCompleted != null) 34 | { 35 | doubleAnim.Completed += (s, e) => onCompleted(); 36 | } 37 | 38 | Timeline.SetDesiredFrameRate(doubleAnim, 120); 39 | return doubleAnim; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Managers/ControlWriterManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace GTweak.Utilities.Managers 4 | { 5 | internal sealed class ControlWriterManager 6 | { 7 | private readonly Dictionary _controlStates; 8 | 9 | internal ControlWriterManager(Dictionary controlStates) 10 | { 11 | _controlStates = controlStates; 12 | } 13 | 14 | internal ButtonCollection Button => new ButtonCollection(_controlStates); 15 | 16 | internal SliderCollection Slider => new SliderCollection(_controlStates); 17 | 18 | internal class ButtonCollection 19 | { 20 | private readonly Dictionary _controlStates; 21 | 22 | internal ButtonCollection(Dictionary controlStates) 23 | { 24 | _controlStates = controlStates; 25 | } 26 | 27 | internal bool this[int index] 28 | { 29 | set => _controlStates[$"TglButton{index}"] = value; 30 | } 31 | } 32 | 33 | internal class SliderCollection 34 | { 35 | private readonly Dictionary _controlStates; 36 | 37 | internal SliderCollection(Dictionary controlStates) 38 | { 39 | _controlStates = controlStates; 40 | } 41 | 42 | internal object this[int index] 43 | { 44 | set => _controlStates[$"Slider{index}"] = value; 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /.Source/GTweak/View/ConfidentialityView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | using System.Windows.Input; 4 | using GTweak.Assets.UserControl; 5 | using GTweak.Utilities.Managers; 6 | using GTweak.Utilities.Tweaks; 7 | 8 | namespace GTweak.View 9 | { 10 | public partial class ConfidentialityView : UserControl 11 | { 12 | private readonly ConfidentialityTweaks _confTweaks = new ConfidentialityTweaks(); 13 | 14 | public ConfidentialityView() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | private void Tweak_MouseEnter(object sender, MouseEventArgs e) 20 | { 21 | string description = ((ToggleButton)sender).Description?.ToString() ?? string.Empty; 22 | 23 | if (DescBlock.Text != description) 24 | { 25 | DescBlock.Text = description; 26 | } 27 | } 28 | 29 | private void Tweak_MouseLeave(object sender, MouseEventArgs e) 30 | { 31 | if (DescBlock.Text != DescBlock.DefaultText) 32 | { 33 | DescBlock.Text = DescBlock.DefaultText; 34 | } 35 | } 36 | 37 | private void TglButton_ChangedState(object sender, RoutedEventArgs e) 38 | { 39 | ToggleButton toggleButton = (ToggleButton)sender; 40 | 41 | _confTweaks.ApplyTweaks(toggleButton.Name, toggleButton.State); 42 | 43 | if (NotificationManager.ConfActions.TryGetValue(toggleButton.Name, out NotificationManager.NoticeAction action)) 44 | { 45 | NotificationManager.Show().WithDelay(300).Perform(action); 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/UserControl/DescriptionBlock.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Assets/TitleBar/AvatarProfile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/MessageWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text.RegularExpressions; 3 | using System.Windows; 4 | using System.Windows.Input; 5 | using GTweak.Utilities.Managers; 6 | using Wpf.Ui.Controls; 7 | 8 | namespace GTweak.Windows 9 | { 10 | public partial class MessageWindow : FluentWindow 11 | { 12 | private TimerControlManager _timer = default; 13 | public MessageWindow(bool isViolationSystem = false) 14 | { 15 | InitializeComponent(); 16 | 17 | if (isViolationSystem) 18 | { 19 | NotSupportContent.Visibility = Visibility.Visible; 20 | WarningContent.Visibility = Visibility.Collapsed; 21 | } 22 | 23 | Unloaded += delegate { _timer.Stop(); }; 24 | Loaded += delegate 25 | { 26 | _timer = new TimerControlManager(TimeSpan.FromSeconds(4), TimerControlManager.TimerMode.CountDown, time => 27 | { 28 | BtnAccept.Content = $"{new Regex("[(05)(04)(03)(02)]").Replace(BtnAccept.Content.ToString(), "")}({time:ss})"; 29 | }, () => Application.Current.Shutdown()); 30 | _timer.Start(); 31 | }; 32 | } 33 | 34 | private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e) 35 | { 36 | if (e.LeftButton == MouseButtonState.Pressed) 37 | { 38 | DragMove(); 39 | } 40 | } 41 | 42 | private void BtnAccept_PreviewMouseDown(object sender, MouseButtonEventArgs e) 43 | { 44 | if (e.LeftButton == MouseButtonState.Pressed) 45 | { 46 | Application.Current.Shutdown(); 47 | } 48 | } 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Managers/TimerControlManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Threading; 4 | 5 | namespace GTweak.Utilities.Managers 6 | { 7 | internal sealed class TimerControlManager 8 | { 9 | private readonly DispatcherTimer _timer; 10 | private TimeSpan _time; 11 | private readonly TimerMode _mode; 12 | private readonly Action _action; 13 | private readonly Action _onFinished; 14 | 15 | internal enum TimerMode { CountUp, CountDown } 16 | 17 | internal TimerControlManager(TimeSpan startTime, TimerMode mode, Action action, Action onFinished = null, TimeSpan? interval = null) 18 | { 19 | _time = startTime; 20 | _mode = mode; 21 | _action = action; 22 | _onFinished = onFinished; 23 | 24 | _timer = new DispatcherTimer(interval ?? TimeSpan.FromSeconds(1), DispatcherPriority.Normal, TimerTick, Application.Current.Dispatcher); 25 | } 26 | 27 | private void TimerTick(object sender, EventArgs e) 28 | { 29 | _action?.Invoke(_time); 30 | 31 | if (_mode == TimerMode.CountDown) 32 | { 33 | if (_time <= TimeSpan.Zero) 34 | { 35 | Stop(); 36 | _onFinished?.Invoke(); 37 | return; 38 | } 39 | _time -= _timer.Interval; 40 | } 41 | else 42 | { 43 | _time += _timer.Interval; 44 | } 45 | } 46 | 47 | internal void Start() => _timer.Start(); 48 | 49 | internal void Stop() 50 | { 51 | _timer.Stop(); 52 | _timer.Tick -= TimerTick; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/OverlayWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Diagnostics; 3 | using System.Windows; 4 | using GTweak.Utilities.Animation; 5 | using GTweak.Utilities.Helpers; 6 | 7 | namespace GTweak.Windows 8 | { 9 | /// 10 | /// Darkened screen 11 | /// 12 | 13 | public partial class OverlayWindow 14 | { 15 | private readonly DisablingWinKeys disablingWinKeys = new DisablingWinKeys(); 16 | public OverlayWindow() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void Window_Closing(object sender, CancelEventArgs e) 22 | { 23 | Closing -= Window_Closing; 24 | e.Cancel = true; 25 | BeginAnimation(OpacityProperty, FactoryAnimation.CreateTo(0.15, () => 26 | { 27 | ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule; 28 | disablingWinKeys.objKeyboardProcess = new DisablingWinKeys.LowLevelKeyboardProc(disablingWinKeys.CaptureKey); 29 | disablingWinKeys.ptrHook = DisablingWinKeys.SetWindowsHookEx(13, disablingWinKeys.objKeyboardProcess, DisablingWinKeys.GetModuleHandle(objCurrentModule.ModuleName), 1); 30 | Close(); 31 | })); 32 | } 33 | 34 | private void Window_Loaded(object sender, RoutedEventArgs e) 35 | { 36 | ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule; 37 | disablingWinKeys.objKeyboardProcess = new DisablingWinKeys.LowLevelKeyboardProc(disablingWinKeys.CaptureKey); 38 | disablingWinKeys.ptrHook = DisablingWinKeys.SetWindowsHookEx(13, disablingWinKeys.objKeyboardProcess, DisablingWinKeys.GetModuleHandle(objCurrentModule.ModuleName), 0); 39 | BeginAnimation(OpacityProperty, FactoryAnimation.CreateIn(0, 0.5, 0.3)); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /.Source/GTweak/Core/Base/ViewModelPageBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Linq; 4 | 5 | namespace GTweak.Core.Base 6 | { 7 | internal interface IBasePageItem 8 | { 9 | string Name { get; set; } 10 | bool State { get; set; } 11 | } 12 | 13 | internal interface ITypedPageItem : IBasePageItem 14 | { 15 | T Value { get; set; } 16 | } 17 | 18 | internal abstract class ViewModelPageBase : ViewModelBase 19 | where TModel : IBasePageItem, new() 20 | where TTweaksClass : new() 21 | { 22 | public ObservableCollection Toggles { get; private set; } 23 | 24 | public TModel this[string name] => Toggles.FirstOrDefault(d => d.Name == name); 25 | protected abstract Dictionary GetControlStates(); 26 | protected abstract void Analyze(TTweaksClass tweaks); 27 | 28 | protected ViewModelPageBase() 29 | { 30 | TTweaksClass tweaks = new TTweaksClass(); 31 | Analyze(tweaks); 32 | Toggles = new ObservableCollection(GetControlStates().Select(kvp => CreateModelFromState(kvp.Key, kvp.Value))); 33 | 34 | OnPropertyChanged(nameof(Toggles)); 35 | } 36 | 37 | private TModel CreateModelFromState(string name, object parameter) 38 | { 39 | TModel model = new TModel { Name = name }; 40 | 41 | switch (parameter) 42 | { 43 | case bool b: 44 | model.State = b; 45 | break; 46 | case double d when model is ITypedPageItem doubleItem: 47 | doubleItem.Value = d; 48 | break; 49 | case string s when model is ITypedPageItem stringItem: 50 | stringItem.Value = s; 51 | break; 52 | default: 53 | break; 54 | } 55 | 56 | return model; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /.Source/GTweak/View/InterfaceView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Input; 5 | using GTweak.Assets.UserControl; 6 | using GTweak.Utilities.Maintenance; 7 | using GTweak.Utilities.Managers; 8 | using GTweak.Utilities.Tweaks; 9 | 10 | namespace GTweak.View 11 | { 12 | public partial class InterfaceView : UserControl 13 | { 14 | private readonly InterfaceTweaks _intfTweaks = new InterfaceTweaks(); 15 | 16 | public InterfaceView() 17 | { 18 | InitializeComponent(); 19 | 20 | if (!WindowsLicense.IsWindowsActivated) 21 | { 22 | NotificationManager.Show("info", "warn_activate_noty").Perform(); 23 | } 24 | } 25 | 26 | 27 | private void Tweak_MouseEnter(object sender, MouseEventArgs e) 28 | { 29 | string description = ((ToggleButton)sender).Description?.ToString() ?? string.Empty; 30 | 31 | if (DescBlock.Text != description) 32 | { 33 | DescBlock.Text = description; 34 | } 35 | } 36 | 37 | private void Tweak_MouseLeave(object sender, MouseEventArgs e) 38 | { 39 | if (DescBlock.Text != DescBlock.DefaultText) 40 | { 41 | DescBlock.Text = DescBlock.DefaultText; 42 | } 43 | } 44 | 45 | private void TglButton_ChangedState(object sender, RoutedEventArgs e) 46 | { 47 | ToggleButton toggleButton = (ToggleButton)sender; 48 | 49 | _intfTweaks.ApplyTweaks(toggleButton.Name, toggleButton.State); 50 | 51 | if (ExplorerManager.IntfMapping.TryGetValue(toggleButton.Name, out bool needRestart)) 52 | { 53 | ExplorerManager.Restart(new Process()); 54 | } 55 | 56 | if (NotificationManager.IntfActions.TryGetValue(toggleButton.Name, out NotificationManager.NoticeAction action)) 57 | { 58 | NotificationManager.Show().WithDelay(300).Perform(action); 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/UpdateWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | using System.Windows; 4 | using System.Windows.Input; 5 | using GTweak.Utilities.Configuration; 6 | using GTweak.Utilities.Controls; 7 | using GTweak.Utilities.Helpers; 8 | using GTweak.Utilities.Managers; 9 | using Wpf.Ui.Controls; 10 | 11 | namespace GTweak.Windows 12 | { 13 | public partial class UpdateWindow : FluentWindow 14 | { 15 | public string DownloadVersion { get; set; } = SystemDiagnostics.DownloadVersion; 16 | 17 | public UpdateWindow() 18 | { 19 | InitializeComponent(); 20 | DataContext = this; 21 | } 22 | 23 | private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e) 24 | { 25 | if (e.LeftButton == MouseButtonState.Pressed) 26 | { 27 | DragMove(); 28 | } 29 | } 30 | 31 | private void Window_Loaded(object sender, RoutedEventArgs e) 32 | { 33 | try 34 | { 35 | string tempFileName = $"GTweak_{Guid.NewGuid().ToString("N").Substring(0, 8)}.exe"; 36 | 37 | using WebClient webClient = new WebClient(); 38 | webClient.DownloadProgressChanged += (s, e) => 39 | { 40 | ProgressDownload.Value = e.ProgressPercentage; 41 | SizeByte.Text = $"{Math.Round(e.BytesReceived / 1024.0)} KB / {Math.Round(e.TotalBytesToReceive / 1024.0)} KB"; 42 | }; 43 | webClient.DownloadFileCompleted += delegate 44 | { 45 | CommandExecutor.RunCommand($"/c taskkill /f /im \"{SettingsEngine.currentName}\" && timeout /t 2 && del \"{SettingsEngine.currentLocation}\" && ren {tempFileName} \"{SettingsEngine.currentName}\" && \"{SettingsEngine.currentLocation}\""); 46 | }; 47 | webClient.DownloadFileAsync(new Uri("https://github.com/Greedeks/GTweak/releases/latest/download/GTweak.exe"), tempFileName); 48 | } 49 | catch 50 | { 51 | Close(); 52 | NotificationManager.Show("warn", "warn_update_noty").Perform(); 53 | } 54 | } 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /.Source/GTweak/App.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Controls/RunGuard.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using GTweak.Utilities.Configuration; 9 | using GTweak.Windows; 10 | 11 | namespace GTweak.Utilities.Controls 12 | { 13 | internal static class RunGuard 14 | { 15 | [DllImport("user32.dll")] 16 | private static extern bool ShowWindow(IntPtr handle, int cmdShow); 17 | [DllImport("user32.dll")] 18 | private static extern int SetForegroundWindow(IntPtr handle); 19 | private static readonly Mutex _mutex = new Mutex(false, "GTweak"); 20 | 21 | internal static void CheckingApplicationCopies() 22 | { 23 | if (!_mutex.WaitOne(150, false)) 24 | { 25 | using (Mutex mutex = new Mutex(false, @"Global\" + "GTweak")) 26 | { 27 | if (mutex.WaitOne(150, false)) 28 | { 29 | Application.Current.Dispatcher.Invoke(() => { new MessageWindow().ShowDialog(); }); 30 | } 31 | else 32 | { 33 | Environment.Exit(0); 34 | } 35 | } 36 | using (Process process = Process.GetProcesses().FirstOrDefault(p => p.ProcessName == Process.GetCurrentProcess().ProcessName)) 37 | { 38 | if (process != null) 39 | { 40 | IntPtr handle = process.MainWindowHandle; 41 | ShowWindow(handle, 1); 42 | SetForegroundWindow(handle); 43 | } 44 | } 45 | Environment.Exit(0); 46 | } 47 | } 48 | 49 | internal static async Task CheckingSystemRequirements() 50 | { 51 | await Task.Run(() => new SystemDiagnostics().GetOperatingSystemInfo()); 52 | 53 | if ((HardwareData.OS.IsWin11 || HardwareData.OS.IsWin10) && HardwareData.OS.Build.CompareTo(18362.116m) >= 0) 54 | { 55 | return; 56 | } 57 | 58 | new MessageWindow(true).ShowDialog(); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Animation/BrushAnimation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Media; 4 | using System.Windows.Media.Animation; 5 | 6 | namespace GTweak.Utilities.Animation 7 | { 8 | internal sealed class BrushAnimation : AnimationTimeline 9 | { 10 | public override Type TargetPropertyType => typeof(Brush); 11 | 12 | protected override Freezable CreateInstanceCore() => new BrushAnimation(); 13 | 14 | public static readonly DependencyProperty FromProperty = 15 | DependencyProperty.Register("From", typeof(Brush), typeof(BrushAnimation)); 16 | 17 | public Brush From 18 | { 19 | get => (Brush)GetValue(FromProperty); 20 | set => SetValue(FromProperty, value); 21 | } 22 | 23 | public static readonly DependencyProperty ToProperty = 24 | DependencyProperty.Register("To", typeof(Brush), typeof(BrushAnimation)); 25 | 26 | public Brush To 27 | { 28 | get => (Brush)GetValue(ToProperty); 29 | set => SetValue(ToProperty, value); 30 | } 31 | 32 | public override object GetCurrentValue(object defaultOriginValue, object defaultDestinationValue, AnimationClock animationClock) 33 | { 34 | if (animationClock.CurrentProgress == null) 35 | { 36 | return From ?? defaultOriginValue; 37 | } 38 | 39 | double progress = animationClock.CurrentProgress.Value; 40 | 41 | var easedProgress = new QuadraticEase().Ease(progress); 42 | 43 | if (From is SolidColorBrush fromBrush && To is SolidColorBrush toBrush) 44 | { 45 | byte r = (byte)(fromBrush.Color.R + (toBrush.Color.R - fromBrush.Color.R) * easedProgress); 46 | byte g = (byte)(fromBrush.Color.G + (toBrush.Color.G - fromBrush.Color.G) * easedProgress); 47 | byte b = (byte)(fromBrush.Color.B + (toBrush.Color.B - fromBrush.Color.B) * easedProgress); 48 | byte a = (byte)(fromBrush.Color.A + (toBrush.Color.A - fromBrush.Color.A) * easedProgress); 49 | 50 | return new SolidColorBrush(Color.FromArgb(a, r, g, b)); 51 | } 52 | 53 | return easedProgress < 0.5 ? From ?? defaultOriginValue : To ?? defaultDestinationValue; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/UserControl/ToggleButton.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Animation/NumberAnimation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Media.Animation; 5 | 6 | namespace GTweak.Utilities.Animation 7 | { 8 | internal static class NumberAnimation 9 | { 10 | internal static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached("Value", typeof(int), typeof(NumberAnimation), new PropertyMetadata(0, OnValueChanged)); 11 | 12 | private static readonly DependencyProperty AnimatedValueProperty = DependencyProperty.RegisterAttached("AnimatedValue", typeof(int), typeof(NumberAnimation), new PropertyMetadata(0, OnAnimatedValueChanged)); 13 | 14 | internal static void SetValue(DependencyObject dObject, int value) => dObject.SetValue(ValueProperty, value); 15 | 16 | internal static int GetValue(DependencyObject dObject) => (int)dObject.GetValue(ValueProperty); 17 | 18 | private static void SetAnimatedValue(DependencyObject dObject, int value) => dObject.SetValue(AnimatedValueProperty, value); 19 | 20 | private static void OnValueChanged(DependencyObject dObject, DependencyPropertyChangedEventArgs e) 21 | { 22 | if (dObject is TextBlock textBlock) 23 | { 24 | int newValue = (int)e.NewValue; 25 | 26 | if (!textBlock.IsLoaded) 27 | { 28 | SetAnimatedValue(textBlock, newValue); 29 | return; 30 | } 31 | 32 | int oldValue = (int)e.OldValue; 33 | 34 | Int32Animation int32Anim = new Int32Animation 35 | { 36 | From = oldValue, 37 | To = newValue, 38 | Duration = TimeSpan.FromSeconds(0.5), 39 | EasingFunction = new QuadraticEase { EasingMode = EasingMode.EaseOut } 40 | }; 41 | Timeline.SetDesiredFrameRate(int32Anim, 60); 42 | textBlock.BeginAnimation(AnimatedValueProperty, int32Anim); 43 | } 44 | } 45 | 46 | private static void OnAnimatedValueChanged(DependencyObject dObject, DependencyPropertyChangedEventArgs e) 47 | { 48 | if (dObject is TextBlock textBlock) 49 | { 50 | textBlock.Text = string.Format(" {0}", e.NewValue.ToString()); 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /.Source/GTweak/View/SystemView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | using System.Windows.Input; 4 | using GTweak.Assets.UserControl; 5 | using GTweak.Utilities.Managers; 6 | using GTweak.Utilities.Tweaks; 7 | 8 | namespace GTweak.View 9 | { 10 | public partial class SystemView : UserControl 11 | { 12 | private readonly SystemTweaks _sysTweaks = new SystemTweaks(); 13 | 14 | public SystemView() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | private void Tweak_MouseEnter(object sender, MouseEventArgs e) 20 | { 21 | string description = string.Empty; 22 | 23 | switch (sender) 24 | { 25 | case StackPanel panel: 26 | description = panel.ToolTip?.ToString() ?? string.Empty; 27 | break; 28 | 29 | case ToggleButton toggle: 30 | description = toggle.Description?.ToString() ?? string.Empty; 31 | break; 32 | } 33 | 34 | if (DescBlock.Text != description) 35 | { 36 | DescBlock.Text = description; 37 | } 38 | } 39 | 40 | private void Tweak_MouseLeave(object sender, MouseEventArgs e) 41 | { 42 | if (DescBlock.Text != DescBlock.DefaultText) 43 | { 44 | DescBlock.Text = DescBlock.DefaultText; 45 | } 46 | } 47 | 48 | private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) => _sysTweaks.ApplyTweaksSlider(((Slider)sender).Name, (uint)((Slider)sender).Value); 49 | 50 | private void TglButton_ChangedState(object sender, RoutedEventArgs e) 51 | { 52 | ToggleButton toggleButton = (ToggleButton)sender; 53 | if (toggleButton.Name != "TglButton3") 54 | { 55 | _sysTweaks.ApplyTweaks(toggleButton.Name, toggleButton.State); 56 | 57 | if (NotificationManager.SysActions.TryGetValue(toggleButton.Name, out NotificationManager.NoticeAction action)) 58 | { 59 | NotificationManager.Show().WithDelay(300).Perform(action); 60 | } 61 | } 62 | else 63 | { 64 | _sysTweaks.ApplyTweaks(toggleButton.Name, toggleButton.State); 65 | } 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Assets/SystemInfo/Network.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Helpers/DisablingWinKeys.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using System.Windows.Forms; 4 | using System.Windows.Input; 5 | 6 | namespace GTweak.Utilities.Helpers 7 | { 8 | internal sealed class DisablingWinKeys 9 | { 10 | [StructLayout(LayoutKind.Sequential)] 11 | private struct KBDLLHOOKSTRUCT 12 | { 13 | internal Keys key; 14 | internal int scanCode; 15 | internal int flags; 16 | internal int time; 17 | internal IntPtr extra; 18 | } 19 | internal delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); 20 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 21 | internal static extern IntPtr SetWindowsHookEx(int id, LowLevelKeyboardProc callback, IntPtr hMod, uint dwThreadId); 22 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 23 | private static extern bool UnhookWindowsHookEx(IntPtr hook); 24 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 25 | private static extern IntPtr CallNextHookEx(IntPtr hook, int nCode, IntPtr wp, IntPtr lp); 26 | [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] 27 | internal static extern IntPtr GetModuleHandle(string name); 28 | [DllImport("user32.dll", CharSet = CharSet.Auto)] 29 | private static extern short GetAsyncKeyState(Keys key); 30 | 31 | internal IntPtr ptrHook; 32 | internal LowLevelKeyboardProc objKeyboardProcess; 33 | 34 | internal DisablingWinKeys() => objKeyboardProcess = CaptureKey; 35 | 36 | internal IntPtr CaptureKey(int nCode, IntPtr wp, IntPtr lp) 37 | { 38 | if (nCode >= 0) 39 | { 40 | KBDLLHOOKSTRUCT objKeyInfo = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(KBDLLHOOKSTRUCT)); 41 | 42 | if (objKeyInfo.key == Keys.RWin || objKeyInfo.key == Keys.LWin || objKeyInfo.key == Keys.Tab && HasAltModifier(objKeyInfo.flags) || objKeyInfo.key == Keys.Escape && (Keyboard.Modifiers & ModifierKeys.Control) != 0 || objKeyInfo.key == Keys.Escape && HasAltModifier(objKeyInfo.flags)) 43 | { 44 | return (IntPtr)1; 45 | } 46 | } 47 | return CallNextHookEx(ptrHook, nCode, wp, lp); 48 | } 49 | 50 | private bool HasAltModifier(int flags) => (flags & 0x20) == 0x20; 51 | } 52 | } -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Managers/OverlayDialogManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using System.Windows; 4 | using System.Windows.Controls; 5 | using GTweak.Utilities.Animation; 6 | 7 | namespace GTweak.Utilities.Managers 8 | { 9 | internal sealed class OverlayDialogManager 10 | { 11 | private readonly FrameworkElement _overlay; 12 | private readonly DependencyProperty _opacityProperty; 13 | private readonly Button _btnPrimary; 14 | private readonly Button _btnSecondary; 15 | private readonly Action _onPrimary; 16 | private readonly Action _onSecondary; 17 | 18 | internal OverlayDialogManager(FrameworkElement overlay, DependencyProperty opacityProperty, Button btnPrimary, Button btnSecondary, Action onPrimary = null, Action onSecondary = null) 19 | { 20 | _overlay = overlay; 21 | _opacityProperty = opacityProperty; 22 | _btnPrimary = btnPrimary; 23 | _btnSecondary = btnSecondary; 24 | _onPrimary = onPrimary; 25 | _onSecondary = onSecondary; 26 | } 27 | 28 | internal async Task Show() 29 | { 30 | TaskCompletionSource tcs = new TaskCompletionSource(); 31 | 32 | void PrimaryHandler(object s, RoutedEventArgs e) 33 | { 34 | tcs.TrySetResult(true); 35 | _onPrimary?.Invoke(); 36 | Detach(); 37 | } 38 | void SecondaryHandler(object s, RoutedEventArgs e) 39 | { 40 | tcs.TrySetResult(false); 41 | _onSecondary?.Invoke(); 42 | Detach(); 43 | } 44 | 45 | void Detach() 46 | { 47 | _btnPrimary.PreviewMouseLeftButtonDown -= PrimaryHandler; 48 | _btnSecondary.PreviewMouseLeftButtonDown -= SecondaryHandler; 49 | } 50 | 51 | _overlay.Visibility = Visibility.Visible; 52 | _overlay.BeginAnimation(_opacityProperty, FactoryAnimation.CreateIn(0, 1, 0.3)); 53 | 54 | _btnPrimary.PreviewMouseLeftButtonDown += PrimaryHandler; 55 | _btnSecondary.PreviewMouseLeftButtonDown += SecondaryHandler; 56 | 57 | bool result; 58 | try { result = await tcs.Task; } 59 | catch (TaskCanceledException) { result = false; } 60 | 61 | _overlay.BeginAnimation(_opacityProperty, FactoryAnimation.CreateTo(0.25, () => { _overlay.Visibility = Visibility.Collapsed; })); 62 | 63 | return result; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/NotificationWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Media; 3 | using System.Windows; 4 | using System.Windows.Controls.Primitives; 5 | using System.Windows.Input; 6 | using GTweak.Utilities.Animation; 7 | using GTweak.Utilities.Controls; 8 | using GTweak.Utilities.Helpers; 9 | using GTweak.Utilities.Managers; 10 | using Wpf.Ui.Controls; 11 | 12 | namespace GTweak.Windows 13 | { 14 | public partial class NotificationWindow : FluentWindow 15 | { 16 | private NotificationManager.NoticeAction _requiredAction = default; 17 | private TimerControlManager _timer = default; 18 | private Rect primaryMonitorArea = SystemParameters.WorkArea; 19 | 20 | internal string NoticeTitle { set => Header.Text = value; get => Header.Text; } 21 | internal string NoticeText { set => MessageBody.Text = value; get => MessageBody.Text; } 22 | internal NotificationManager.NoticeAction RequiredAction { set => _requiredAction = value; get => _requiredAction; } 23 | 24 | public NotificationWindow() 25 | { 26 | InitializeComponent(); 27 | 28 | SourceInitialized += delegate 29 | { 30 | Top = primaryMonitorArea.Bottom - Height - 10; 31 | Left = primaryMonitorArea.Right + 10; 32 | }; 33 | 34 | Unloaded += delegate { _timer.Stop(); }; 35 | Loaded += delegate 36 | { 37 | _timer = new TimerControlManager(TimeSpan.FromSeconds(3), TimerControlManager.TimerMode.CountDown, null, () => { Close(); }); 38 | _timer.Start(); 39 | ProgressTimer.BeginAnimation(RangeBase.ValueProperty, FactoryAnimation.CreateIn(0, 100, 4.1)); 40 | }; 41 | } 42 | 43 | private void ButtonClose_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) => Close(); 44 | 45 | private void Grid_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) => CommandExecutor.RunCommand(RequiredAction == NotificationManager.NoticeAction.Logout ? @"/c logoff" : @"/c shutdown /r /t 0"); 46 | 47 | private void Window_Loaded(object sender, RoutedEventArgs e) 48 | { 49 | if (SettingsEngine.IsPlayingSound) 50 | { 51 | using SoundPlayer notificationSound = new SoundPlayer(Properties.Resources.Sound); 52 | notificationSound.Play(); 53 | } 54 | 55 | BeginAnimation(LeftProperty, FactoryAnimation.CreateIn(primaryMonitorArea.Right + 10, primaryMonitorArea.Right - Width - 10, 0.3, null, false, true)); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Assets/SystemInfo/IPaddress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | *.cs text eol=crlf 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Managers/ExplorerManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using GTweak.Utilities.Controls; 7 | 8 | namespace GTweak.Utilities.Managers 9 | { 10 | internal class ExplorerManager 11 | { 12 | internal static readonly Dictionary IntfMapping = new[] 13 | { 14 | new { Button = "TglButton7", NeedRestart = true }, 15 | new { Button = "TglButton8", NeedRestart = true }, 16 | new { Button = "TglButton16", NeedRestart = true }, 17 | new { Button = "TglButton17", NeedRestart = true }, 18 | new { Button = "TglButton21", NeedRestart = true }, 19 | new { Button = "TglButton23", NeedRestart = true }, 20 | new { Button = "TglButton27", NeedRestart = true }, 21 | new { Button = "TglButton28", NeedRestart = true }, 22 | new { Button = "TglButton31", NeedRestart = true }, 23 | new { Button = "TglButton33", NeedRestart = true }, 24 | }.ToDictionary(x => x.Button, x => x.NeedRestart); 25 | 26 | internal static readonly Dictionary PackageMapping = new[] 27 | { 28 | new { Package = "Widgets", NeedRestart = true }, 29 | new { Package = "Edge", NeedRestart = true } 30 | }.ToDictionary(x => x.Package, x => x.NeedRestart); 31 | 32 | internal static void Restart(Process launchExplorer, Action action = null) 33 | { 34 | Task.Run(delegate 35 | { 36 | foreach (Process process in Process.GetProcesses()) 37 | { 38 | try 39 | { 40 | if (string.Compare(process.MainModule?.FileName, PathLocator.Executable.Explorer, StringComparison.OrdinalIgnoreCase) == 0 && Process.GetProcessesByName("explorer").Length != 0) 41 | { 42 | process.Kill(); 43 | action?.Invoke(); 44 | process.Start(); 45 | } 46 | } 47 | catch (Exception ex) { ErrorLogging.LogDebug(ex); } 48 | finally 49 | { 50 | if (Process.GetProcessesByName("explorer").Length == 0) 51 | { 52 | launchExplorer.StartInfo.FileName = PathLocator.Executable.Explorer; 53 | launchExplorer.StartInfo.Arguments = "/factory,{EFD469A7-7E0A-4517-8B39-45873948DA31}"; 54 | launchExplorer.StartInfo.UseShellExecute = true; 55 | launchExplorer.Start(); 56 | } 57 | } 58 | } 59 | }); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Inputs/ComboBox.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 28 | 29 | 46 | 47 | -------------------------------------------------------------------------------- /Assets/TitleBar/Close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Themes/Dark/Colors.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | #7BFFB5 5 | #1AFF7E 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | #40C279 49 | #FF888888 50 | #FF666666 51 | #F7F7F7 52 | 53 | 54 | 55 | 0.1 56 | 0.2 57 | 58 | -------------------------------------------------------------------------------- /Assets/SettingsPanel/Git.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 14 | 21 | 23 | 25 | 26 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Themes/Light/Colors.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | #00A15A 5 | #007A40 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | #00A15A 49 | #FF888888 50 | #FFAAAAAA 51 | #FFFFFFFF 52 | 53 | 54 | 55 | 0.25 56 | 0.3 57 | 58 | -------------------------------------------------------------------------------- /Assets/TitleBar/Sun.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Display/Images.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 53 | 54 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/UserControl/Card.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Input; 5 | 6 | 7 | namespace GTweak.Assets.UserControl 8 | { 9 | public partial class Card 10 | { 11 | internal event EventHandler ClickButton; 12 | internal event EventHandler ClickButtonSecondary; 13 | 14 | internal Style IconStyle { get => (Style)GetValue(IconStyleProperty); set => SetValue(IconStyleProperty, value); } 15 | internal DynamicResourceExtension Title { set => CardTitle.SetResourceReference(TextBlock.TextProperty, new DynamicResourceExtensionConverter().ConvertToString(value.ResourceKey)); } 16 | internal DynamicResourceExtension Description { set => CardText.SetResourceReference(TextBlock.TextProperty, new DynamicResourceExtensionConverter().ConvertToString(value.ResourceKey)); } 17 | internal DynamicResourceExtension BtnContent { set => CardButton.SetResourceReference(ContentProperty, new DynamicResourceExtensionConverter().ConvertToString(value.ResourceKey)); } 18 | 19 | internal DynamicResourceExtension BtnContentSecondary 20 | { 21 | set 22 | { 23 | if (value != null) 24 | { 25 | CardButtonSecondary.SetResourceReference(ContentProperty, new DynamicResourceExtensionConverter().ConvertToString(value.ResourceKey)); 26 | CardButtonSecondary.Visibility = Visibility.Visible; 27 | } 28 | else 29 | { 30 | CardButtonSecondary.Visibility = Visibility.Collapsed; 31 | } 32 | } 33 | } 34 | 35 | internal static readonly DependencyProperty IconStyleProperty = 36 | DependencyProperty.Register(nameof(IconStyle), typeof(Style), typeof(Card), new PropertyMetadata(null, OnIconStyleChanged)); 37 | 38 | internal static readonly DependencyProperty TextProperty = 39 | DependencyProperty.Register(nameof(TextBlock), typeof(string), typeof(Card), new PropertyMetadata(string.Empty)); 40 | 41 | internal static new readonly DependencyProperty ContentProperty = 42 | DependencyProperty.Register(nameof(BtnContent), typeof(string), typeof(Button), new PropertyMetadata(string.Empty, (s, e) => ((Button)s).Content = (string)e.NewValue)); 43 | 44 | private static void OnIconStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 45 | { 46 | if (d is Card card && card.CardIcon != null) 47 | { 48 | card.CardIcon.Style = e.NewValue as Style; 49 | } 50 | } 51 | 52 | public Card() 53 | { 54 | InitializeComponent(); 55 | } 56 | 57 | private void CardButton_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) => ClickButton?.Invoke(this, EventArgs.Empty); 58 | 59 | private void CardButtonSecondary_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) => ClickButtonSecondary?.Invoke(this, EventArgs.Empty); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /.Source/GTweak/Utilities/Animation/TypewriterAnimation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using System.Windows; 4 | using System.Windows.Controls; 5 | using System.Windows.Media.Animation; 6 | 7 | namespace GTweak.Utilities.Animation 8 | { 9 | internal sealed class TypewriterAnimation 10 | { 11 | private static EventHandler handler = null; 12 | 13 | internal static void Create(in string textToAnimate, in TextBlock textBlock, in TimeSpan timeSpan) 14 | { 15 | if (textBlock == null || string.IsNullOrEmpty(textToAnimate)) 16 | { 17 | return; 18 | } 19 | 20 | Storyboard storyboard = new Storyboard { FillBehavior = FillBehavior.HoldEnd }; 21 | 22 | StringAnimationUsingKeyFrames stringAnimation = CreateStringAnimation(textToAnimate, timeSpan); 23 | Storyboard.SetTarget(stringAnimation, textBlock); 24 | Storyboard.SetTargetProperty(stringAnimation, new PropertyPath(TextBlock.TextProperty)); 25 | storyboard.Children.Add(stringAnimation); 26 | 27 | DoubleAnimation opacityAnimation = FactoryAnimation.CreateIn(0, 1, timeSpan.TotalSeconds); 28 | Storyboard.SetTarget(opacityAnimation, textBlock); 29 | Storyboard.SetTargetProperty(opacityAnimation, new PropertyPath(UIElement.OpacityProperty)); 30 | storyboard.Children.Add(opacityAnimation); 31 | 32 | handler = (s, e) => 33 | { 34 | storyboard.Children.Clear(); 35 | storyboard.Completed -= handler; 36 | }; 37 | storyboard.Completed += handler; 38 | 39 | textBlock.BeginStoryboard(storyboard); 40 | } 41 | 42 | private static StringAnimationUsingKeyFrames CreateStringAnimation(in string textToAnimate, in TimeSpan timeSpan) 43 | { 44 | StringAnimationUsingKeyFrames stringAnimation = new StringAnimationUsingKeyFrames 45 | { 46 | Duration = new Duration(timeSpan) 47 | }; 48 | 49 | StringBuilder temp = new StringBuilder(); 50 | int totalChars = textToAnimate.Length; 51 | 52 | if (totalChars != 0) 53 | { 54 | double millisecondsPerChar = timeSpan.TotalMilliseconds / totalChars; 55 | 56 | for (int i = 0; i < totalChars; i++) 57 | { 58 | temp.Append(textToAnimate[i]); 59 | TimeSpan currentTime = TimeSpan.FromMilliseconds(millisecondsPerChar * (i + 1)); 60 | 61 | DiscreteStringKeyFrame keyFrame = new DiscreteStringKeyFrame 62 | { 63 | KeyTime = KeyTime.FromTimeSpan(currentTime), 64 | Value = temp.ToString() 65 | }; 66 | 67 | stringAnimation.KeyFrames.Add(keyFrame); 68 | } 69 | 70 | Timeline.SetDesiredFrameRate(stringAnimation, 60); 71 | return stringAnimation; 72 | } 73 | 74 | return stringAnimation; 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /.Source/GTweak/Core/ViewModel/PakagesViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.ObjectModel; 3 | using System.Linq; 4 | using System.Text.RegularExpressions; 5 | using System.Windows; 6 | using System.Windows.Threading; 7 | using GTweak.Core.Base; 8 | using GTweak.Core.Model; 9 | using GTweak.Utilities.Configuration; 10 | using GTweak.Utilities.Tweaks; 11 | 12 | namespace GTweak.Core.ViewModel 13 | { 14 | internal class PakagesViewModel : ViewModelBase 15 | { 16 | public ObservableCollection DisplayState { get; set; } 17 | 18 | public Visibility Win11FeatureOnly => HardwareData.OS.IsWin11 ? Visibility.Visible : Visibility.Collapsed; 19 | 20 | public PakagesModel this[string name] => DisplayState.FirstOrDefault(d => d.Name == name); 21 | 22 | public PakagesViewModel() 23 | { 24 | DisplayState = new ObservableCollection(); 25 | 26 | BuildCollection(); 27 | 28 | UninstallingPakages.DataChanged += delegate 29 | { 30 | Application.Current.Dispatcher.BeginInvoke(new Action(() => 31 | { 32 | foreach (PakagesModel item in DisplayState) 33 | { 34 | UpdatePackageState(item); 35 | } 36 | }), DispatcherPriority.ApplicationIdle); 37 | 38 | }; 39 | } 40 | 41 | private void BuildCollection() 42 | { 43 | DisplayState.Clear(); 44 | 45 | foreach (var kv in UninstallingPakages.PackagesDetails) 46 | { 47 | string name = kv.Key; 48 | var (_, IsUnavailable, _) = kv.Value; 49 | 50 | PakagesModel pkg = new PakagesModel 51 | { 52 | Name = name, 53 | IsUnavailable = !IsUnavailable 54 | }; 55 | 56 | UpdatePackageState(pkg); 57 | DisplayState.Add(pkg); 58 | } 59 | } 60 | 61 | private void UpdatePackageState(PakagesModel item) 62 | { 63 | if (UninstallingPakages.PackagesDetails.TryGetValue(item.Name, out var val)) 64 | { 65 | item.IsUnavailable = !val.IsUnavailable; 66 | 67 | if (!item.Name.Equals("OneDrive", StringComparison.OrdinalIgnoreCase)) 68 | { 69 | if (val.Scripts != null && val.Scripts.Any()) 70 | { 71 | item.Installed = val.Scripts.Any(pattern => UninstallingPakages.InstalledPackagesCache.Any(pkg => Regex.IsMatch(pkg, $"^{Regex.Escape(pattern)}", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant))); 72 | } 73 | else 74 | { 75 | item.Installed = false; 76 | } 77 | } 78 | else 79 | { 80 | item.Installed = UninstallingPakages.IsOneDriveInstalled; 81 | return; 82 | } 83 | } 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /.Source/GTweak/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace GTweak.Properties { 2 | using System; 3 | 4 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 5 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 6 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 7 | internal class Resources { 8 | 9 | private static global::System.Resources.ResourceManager resourceMan; 10 | 11 | private static global::System.Globalization.CultureInfo resourceCulture; 12 | 13 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 14 | internal Resources() { 15 | } 16 | 17 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 18 | internal static global::System.Resources.ResourceManager ResourceManager { 19 | get { 20 | if (object.ReferenceEquals(resourceMan, null)) { 21 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GTweak.Properties.Resources", typeof(Resources).Assembly); 22 | resourceMan = temp; 23 | } 24 | return resourceMan; 25 | } 26 | } 27 | 28 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 29 | internal static global::System.Globalization.CultureInfo Culture { 30 | get { 31 | return resourceCulture; 32 | } 33 | set { 34 | resourceCulture = value; 35 | } 36 | } 37 | 38 | internal static byte[] Blank { 39 | get { 40 | object obj = ResourceManager.GetObject("Blank", resourceCulture); 41 | return ((byte[])(obj)); 42 | } 43 | } 44 | 45 | internal static byte[] hosts { 46 | get { 47 | object obj = ResourceManager.GetObject("hosts", resourceCulture); 48 | return ((byte[])(obj)); 49 | } 50 | } 51 | 52 | internal static byte[] NSudoLC { 53 | get { 54 | object obj = ResourceManager.GetObject("NSudoLC", resourceCulture); 55 | return ((byte[])(obj)); 56 | } 57 | } 58 | 59 | internal static System.IO.UnmanagedMemoryStream Sound { 60 | get { 61 | return ResourceManager.GetStream("Sound", resourceCulture); 62 | } 63 | } 64 | 65 | internal static string Tickets { 66 | get { 67 | return ResourceManager.GetString("Tickets", resourceCulture); 68 | } 69 | } 70 | 71 | internal static byte[] UltPower { 72 | get { 73 | object obj = ResourceManager.GetObject("UltPower", resourceCulture); 74 | return ((byte[])(obj)); 75 | } 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /.Source/GTweak/Windows/UpdateWindow.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /.Source/GTweak/Styles/Display/TextBlock.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 20 | 21 | 37 | 38 | 49 | 50 | 61 | 62 | -------------------------------------------------------------------------------- /.Source/GTweak/Assets/UserControl/Card.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |