├── .github ├── CODEOWNERS ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── Applications.json.md │ ├── Tweaks.json.md │ └── bug_report.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── build.yaml │ └── powershell.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Initialize ├── main.ps1 ├── start.ps1 └── xaml.ps1 ├── LICENSE ├── README.md ├── SECURITY.md ├── build.ps1 ├── itt.ps1 ├── locales ├── ar.csv ├── de.csv ├── en.csv ├── es.csv ├── fr.csv ├── hi.csv ├── it.csv ├── ko.csv ├── ru.csv ├── tr.csv └── zh.csv ├── newApp.ps1 ├── newLocale.ps1 ├── newOST.ps1 ├── newQuote.ps1 ├── newTheme.ps1 ├── newTweak.ps1 ├── scripts ├── Core │ ├── 1.Script-Block.ps1 │ ├── 2.Restore-Point.ps1 │ ├── Add-Log.ps1 │ ├── Disable-Service.ps1 │ ├── ExecuteCommand.ps1 │ ├── Finish.ps1 │ ├── Get-CheckBoxes.ps1 │ ├── Get-ToggleStatus.ps1 │ ├── Install-App.ps1 │ ├── Install-Dependencies.ps1 │ ├── Install-Winget.ps1 │ ├── Refresh-Explorer.ps1 │ ├── Remove-Tasks.ps1 │ ├── Save-Load.ps1 │ ├── Set-Registry.ps1 │ ├── Set-Taskbar.ps1 │ ├── Startup-Log.ps1 │ ├── Tap-On-Selection-Changed.ps1 │ └── Uninstall-AppxPackage.ps1 ├── Install&Apply │ ├── apply.ps1 │ └── install.ps1 ├── Invoke │ ├── Invoke-Button.ps1 │ └── Invoke-Toogle.ps1 ├── Settings │ ├── AutoEndTasks.ps1 │ ├── ChangeToThisPC.ps1 │ ├── ClearPageFile.ps1 │ ├── CoreIsolation.ps1 │ ├── DarkMode.ps1 │ ├── Disable-DriversUpdate.ps1 │ ├── HyperV.ps1 │ ├── MouseAcceleration.ps1 │ ├── NumLock.ps1 │ ├── PerformanceOptions.ps1 │ ├── Show-HiddenItems.ps1 │ ├── ShowExt.ps1 │ ├── ShowFile-Icons.ps1 │ ├── ShowTaskbarEnd.ps1 │ ├── StickyKeys.ps1 │ ├── WSL.ps1 │ └── WindowsSandbox.ps1 └── UI │ ├── About-Dev.ps1 │ ├── Create-Shortcut.ps1 │ ├── Filter-Category.ps1 │ ├── Keyboard-Shortcuts .ps1 │ ├── Message.ps1 │ ├── Notify.ps1 │ ├── Play-Music.ps1 │ ├── Set-Langusege.ps1 │ ├── Set-Theme.ps1 │ ├── Show-Event.ps1 │ ├── Statusbar.ps1 │ ├── Update-UI.ps1 │ └── detected-gpu.ps1 ├── static ├── Database │ ├── Applications.json │ ├── OST.json │ ├── Quotes.json │ ├── Settings.json │ └── Tweaks.json ├── Icons │ ├── blog.png │ ├── done.png │ ├── error.png │ ├── github.png │ ├── icon.ico │ ├── telegram.png │ └── youtube.png ├── Images │ ├── coffee.png │ ├── gitt.gif │ ├── happy.jpg │ ├── logo.png │ ├── ps.png │ ├── ps_flag.jpg │ ├── text_logo.jpg │ ├── text_logo.png │ ├── themes.gif │ ├── themes.webp │ └── thumbnail.jpg ├── Themes │ ├── Colors.xaml │ └── Styles.xaml └── files │ └── start2.bin ├── templates └── README.md ├── themes ├── Dark.xaml ├── DarkKnight.xaml ├── Light.xaml └── Palestine.xaml └── xaml ├── Controls ├── Buttons.xaml ├── Menu.xaml ├── Search.xaml └── Tabs.xaml └── Views ├── AboutWindow.xaml ├── EventWindow.xaml └── MainWindow.xaml /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @emadadel4 -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: ["https://palestinercs.org"] -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Applications.json.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: App Request 3 | about: Create app request 4 | title: '' 5 | labels: 'Request' 6 | assignees: '' 7 | --- 8 | 9 | ## App Name 10 | 11 | 12 | ## Description 13 | 14 | 15 | ## Download link 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Tweaks.json.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tweak Request 3 | about: Create a tweaks request 4 | title: '' 5 | labels: 'Request' 6 | assignees: '' 7 | --- 8 | 9 | ## Script 10 | 11 | 12 | ## Describe The tweak 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: 'bug' 6 | assignees: '' 7 | --- 8 | ## Describe the bug 9 | 10 | ## Screenshots 11 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Type of Change 2 | - [ ] Refactoring 3 | - [ ] New feature 4 | - [ ] New language 5 | - [ ] Hotfix 6 | - [ ] Bug fix 7 | - [ ] UI improvement 8 | - [ ] Update build script 9 | ## Screenshot (Optional) 10 | 11 | ## Description (Optional) 12 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: Build 2 | permissions: 3 | contents: write 4 | actions: read 5 | on: 6 | workflow_dispatch: 7 | push: 8 | paths: 9 | - static/Database/Applications.json 10 | - templates/README.md 11 | - CHANGELOG.md 12 | branches: 13 | - main 14 | jobs: 15 | build-runspace: 16 | runs-on: windows-latest 17 | steps: 18 | - name: Checkout Repository 19 | uses: actions/checkout@v4 20 | - name: Build project 21 | shell: pwsh 22 | run: | 23 | Set-ExecutionPolicy Bypass -Scope Process -Force; ./build.ps1 -Realsee 24 | continue-on-error: false 25 | env: 26 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 27 | - name: Commit update 28 | run: | 29 | git config --global user.name "itt-co" 30 | git config --global user.email "167635892+itt-co@users.noreply.github.com" 31 | git add itt.ps1 32 | git add README.md 33 | git commit -m "update" 34 | git push origin main 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | -------------------------------------------------------------------------------- /.github/workflows/powershell.yml: -------------------------------------------------------------------------------- 1 | # This workflow uses actions that are not certified by GitHub. 2 | # They are provided by a third-party and are governed by 3 | # separate terms of service, privacy policy, and support 4 | # documentation. 5 | # 6 | # https://github.com/microsoft/action-psscriptanalyzer 7 | # For more information on PSScriptAnalyzer in general, see 8 | # https://github.com/PowerShell/PSScriptAnalyzer 9 | name: PSScriptAnalyzer 10 | on: 11 | push: 12 | branches: [ "main", "rules" ] 13 | pull_request: 14 | branches: [ "main" ] 15 | schedule: 16 | - cron: '35 17 * * 1' 17 | permissions: 18 | contents: read 19 | jobs: 20 | build: 21 | permissions: 22 | contents: read # for actions/checkout to fetch code 23 | security-events: write # for github/codeql-action/upload-sarif to upload SARIF results 24 | actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status 25 | name: PSScriptAnalyzer 26 | runs-on: ubuntu-latest 27 | steps: 28 | - uses: actions/checkout@v4 29 | - name: Run PSScriptAnalyzer 30 | uses: microsoft/psscriptanalyzer-action@6b2948b1944407914a58661c49941824d149734f 31 | with: 32 | # Check https://github.com/microsoft/action-psscriptanalyzer for more info about the options. 33 | # The below set up runs PSScriptAnalyzer to your entire repository and runs some basic security rules. 34 | path: .\ 35 | recurse: true 36 | # Include your own basic security rules. Removing this option will run all the rules 37 | includeRule: '"PSAvoidGlobalAliases", "PSAvoidUsingConvertToSecureStringWithPlainText"' 38 | output: results.sarif 39 | # Upload the SARIF file generated in the previous step 40 | - name: Upload SARIF results file 41 | uses: github/codeql-action/upload-sarif@v2 42 | with: 43 | sarif_file: results.sarif 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *locales.json 2 | myapps.itt 3 | test.ps1 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ###### 04/11/2025 2 | 3 | ## Changelog 4 | 5 | ### 📦 Package manager 6 | 7 | ![itt.xName:preview [https://github.com/emadadel4/itt]](https://github.com/user-attachments/assets/4e5b1040-313f-49cb-8f43-2127ef5d53ac) 8 | 9 | #### Select the package manager used to install packages 10 | 11 | ##### Keyboard Shortcuts 12 | 13 | - Ctrl+A: Clear category filter. 14 | - Ctrl+F: toggle search mode. 15 | - Ctrl+Q: Switch to Apps. 16 | - Ctrl+W: Switch to Tweaks. 17 | - Ctrl+E: Switch to Settings. 18 | - Ctrl+S: Install selected Apps/Tweaks. 19 | - Shift+S: Save selected. 20 | - Shift+D: Load save file. 21 | - Shift+M: Toggle music. 22 | - Shift+P: Open Choco folder. 23 | - Shift+T: Open ITT folder. 24 | - Shift+Q: Restore point. 25 | - Shift+I: ITT Shortcut. 26 | - Ctrl+G: Close application. 27 | 28 | ![itt.xName:preview2 [https://github.com/emadadel4/itt]](https://github.com/user-attachments/assets/2a4fedc7-1d0e-419d-940c-b784edc7d1d1) 29 | 30 | ##### 📥 Download any Youtube video 31 | 32 | ![itt.xName:shell [https://www.youtube.com/watch?v=nI7rUhWeOrA]](https://raw.githubusercontent.com/emadadel4/ShellTube/main/demo.jpg) 33 | 34 | #### Shelltube is simple way to downnload videos and playlist from youtube just Launch it and start download your video you can Launch it from Third-party section. 35 | 36 | ##### 💡 A Secret Feature Awaits – Unlock It 37 | 38 | ![itt.xName:esg [https://github.com/emadadel4/itt]](https://github.com/user-attachments/assets/edb67270-d9d2-4e94-8873-1c822c3afe2f) 39 | 40 | #### Can You Find the Hidden Easter Egg? Open the source code and uncover the secret features waiting for you! -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | emadadel4 2 | yousefmhmd -------------------------------------------------------------------------------- /Initialize/main.ps1: -------------------------------------------------------------------------------- 1 | #=========================================================================== 2 | #region Select elements with a Name attribute using XPath and iterate over them 3 | #=========================================================================== 4 | $MainXaml.SelectNodes("//*[@Name]") | ForEach-Object { 5 | $name = $_.Name 6 | $element = $itt["window"].FindName($name) 7 | 8 | if ($element) { 9 | $itt[$name] = $element 10 | $type = $element.GetType().Name 11 | 12 | switch ($type) { 13 | "Button" { $element.Add_Click({ Invoke-Button $this.Name $this.Content }) } 14 | "MenuItem" { $element.Add_Click({ Invoke-Button $this.Name -Content $this.Header }) } 15 | "TextBox" { $element.Add_TextChanged({ Invoke-Button $this.Name $this.Text }) } 16 | "ComboBox" { $element.add_SelectionChanged({ Invoke-Button $this.Name $this.SelectedItem.Content }) } 17 | "TabControl" { $element.add_SelectionChanged({ Invoke-Button $this.Name $this.SelectedItem.Name }) } 18 | "CheckBox" { 19 | $element.IsChecked = Get-ToggleStatus -ToggleSwitch $name 20 | $element.Add_Click({ Invoke-Toggle $this.Name }) 21 | } 22 | } 23 | } 24 | } 25 | #=========================================================================== 26 | #endregion Select elements with a Name attribute using XPath and iterate over them 27 | #=========================================================================== 28 | 29 | # Define OnClosing event handler 30 | $onClosingEvent = { 31 | param($s, $c) 32 | # Show confirmation message box 33 | $result = Message -key "Exit_msg" -icon "ask" -action "YesNo" 34 | if ($result -eq "Yes") { 35 | Manage-Music -action "StopAll" 36 | } 37 | else { 38 | $c.Cancel = $true 39 | } 40 | } 41 | 42 | $itt["window"].Add_ContentRendered({ 43 | Startup 44 | Show-Event 45 | }) 46 | 47 | # Search input events 48 | $itt.SearchInput.Add_GotFocus({ 49 | $itt.Search_placeholder.Visibility = "Hidden" 50 | }) 51 | 52 | $itt.SearchInput.Add_LostFocus({ 53 | if ([string]::IsNullOrEmpty($itt.SearchInput.Text)) { 54 | $itt.Search_placeholder.Visibility = "Visible" 55 | } 56 | }) 57 | 58 | # Quick install 59 | if ($i) { 60 | Quick-Install -file $i *> $null 61 | } 62 | 63 | # Close event handler 64 | $itt["window"].add_Closing($onClosingEvent) 65 | 66 | # Keyboard shortcut 67 | $itt["window"].Add_PreViewKeyDown($KeyEvents) 68 | 69 | # Show Window 70 | $itt["window"].ShowDialog() | Out-Null 71 | 72 | # Dispose of runspaces and other objects 73 | $itt.runspace.Dispose() 74 | $itt.runspace.Close() 75 | 76 | # Collect garbage 77 | [System.GC]::Collect() 78 | [System.GC]::WaitForPendingFinalizers() 79 | 80 | # Stop PowerShell session and release resources 81 | $script:powershell.Dispose() 82 | $script:powershell.Stop() 83 | 84 | # Stop transcript logging 85 | Stop-Transcript *> $null -------------------------------------------------------------------------------- /Initialize/start.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | # debug start 3 | [switch]$Debug, 4 | # debug end 5 | # Quick install 6 | [string]$i 7 | ) 8 | 9 | # Load DLLs 10 | Add-Type -AssemblyName 'System.Windows.Forms', 'PresentationFramework', 'PresentationCore', 'WindowsBase' 11 | 12 | # Synchronized Hashtable for shared variables 13 | $itt = [Hashtable]::Synchronized(@{ 14 | 15 | database = @{} 16 | ProcessRunning = $false 17 | lastupdate = "#{replaceme}" 18 | registryPath = "HKCU:\Software\ITT@emadadel" 19 | icon = "https://raw.githubusercontent.com/emadadel4/ITT/main/static/Icons/icon.ico" 20 | Theme = "default" 21 | Date = (Get-Date -Format "MM/dd/yyy") 22 | Music = "0" 23 | PopupWindow = "0" 24 | Language = "default" 25 | ittDir = "$env:ProgramData\itt\" 26 | command = "$($MyInvocation.MyCommand.Definition)" 27 | }) 28 | 29 | # Ask user for administrator privileges if not already running as admin 30 | if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { 31 | Start-Process -FilePath "PowerShell" -ArgumentList "-ExecutionPolicy Bypass -NoProfile -Command `"$($MyInvocation.MyCommand.Definition)`"" -Verb RunAs 32 | exit 33 | 34 | } 35 | 36 | $itt.mediaPlayer = New-Object -ComObject WMPlayer.OCX 37 | $Host.UI.RawUI.WindowTitle = "Install Twaeks Tool" 38 | 39 | # Create directory if it doesn't exist 40 | $ittDir = $itt.ittDir 41 | if (-not (Test-Path -Path $ittDir)) {New-Item -ItemType Directory -Path $ittDir -Force | Out-Null} 42 | 43 | # Trace the script 44 | $logDir = Join-Path $ittDir 'logs' 45 | $timestamp = Get-Date -Format "yyyy-MM-dd" 46 | Start-Transcript -Path "$logDir\log_$timestamp.log" -Append -NoClobber *> $null -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | Copyright (c) 2025 Emad Adel 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | The above copyright notice and this permission notice shall be included in all 10 | copies or substantial portions of the Software. 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 17 | SOFTWARE. 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Ceasefire Now 4 | 5 |

6 | 7 |
8 | 9 |
10 | 11 | 12 | 13 | ## Install Tweaks Tool 14 | 15 | ITT (Install Tweaks Tool) included most Windows 10/11 Software and Windows Tweaks & Remove Bloatwares & Windows activation 16 | 17 | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fittools-7d9fe-default-rtdb.firebaseio.com%2Fmessage.json) 18 | ![Latest update](https://img.shields.io/badge/Latest%20update-05/31/2025-blue) 19 | ![Script size](https://img.shields.io/github/size/emadadel4/itt/itt.ps1?label=Script%20size) 20 | 21 | 22 | 23 | [![itt Community](https://img.shields.io/badge/Telegram%20-Join%20Community-26A5E4?logo=telegram)](https://t.me/ittcommunity) 24 | [![Discord](https://img.shields.io/badge/Discord-Join%20Community-5865F2?logo=discord&logoColor=white)](https://discord.gg/Twyz2Wd5fB) 25 | [![Reddit](https://img.shields.io/badge/Reddit-Join%20Community-FF4500?logo=reddit&logoColor=white)](https://www.reddit.com/r/ittea) 26 | 27 | [![Arabic](https://img.shields.io/badge/Arabic-red)](/locales/ar.csv) [![French](https://img.shields.io/badge/French-blue)](/locales/fr.csv) [![Turkish](https://img.shields.io/badge/Turkish-red)](/locales/tr.csv) [![Chinese](https://img.shields.io/badge/Chinese-red)](/locales/zh.csv) [![Korean](https://img.shields.io/badge/Korean-white)](/locales/ko.csv) [![German](https://img.shields.io/badge/German-red)](/locales/de.csv) [![Russian](https://img.shields.io/badge/Russian-blue)](/locales/ru.csv) [![Spanish](https://img.shields.io/badge/Spanish-red)](/locales/es.csv) [![Italian](https://img.shields.io/badge/Italian-green)](/locales/it.csv) [![Hindi](https://img.shields.io/badge/Hindi-orange)](/locales/hi.csv) 28 | 29 | ###### 📦 409 Apps • ⚙️ 54 Tweaks • 🔧 17 Settings • 💬 109 Quote • 🎵 28 Soundtrack • 🌐 11 Localization 30 | 31 | [![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=1000¢er=true&vCenter=true&repeat=false&width=435&lines=Launch+Anytime+Anywhere!)](https://git.io/typing-svg) 32 | 33 |
34 | 35 |

36 | 37 | ![ITT](https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/static/Images/themes.webp) 38 | 39 |

40 | 41 |

Overview

42 | 43 | - **🚀 Automated Installation**: Say goodbye to manual software installations. ITT automates the process, saving you time and effort. 44 | - **⚙️ Windows Debloater**: Remove bloatware, boost performance, and customize Windows effortlessly with ITT. Optimize your system in minutes. 45 | - **👩‍💻 Developer-Friendly**: Easy-to-use and clear documentation to add a new app or tweaks as you like, you can create a new method to download apps. Be creative. How to Contribute or App Request 46 | - **🎵 Soundtracks**: Enjoy listening to best music from games and movies while downloading your programs. 47 | 48 |

⚡ Usage

49 | 50 |

On Windows 10/11:

51 |
    52 |
  1. Right-click on the Start menu.
  2. 53 |
  3. Choose "PowerShell" and paste any of the following commands:
  4. 54 |
55 | 56 | > [!CAUTION] 57 | > **LAUNCH THE SCRIPT ONLY USING OFFICIAL COMMANDS FROM THIS REPOSITORY.** 58 | > **IT'S NOT PORTABLE, SO DO NOT DOWNLOAD OR RUN IT FROM ELSEWHERE.** 59 | 60 |
irm bit.ly/ittea | iex
61 | 62 |

If the URL is blocked in your region try:

63 |
irm emadadel4.github.io/itt.ps1 | iex
64 |
irm raw.githubusercontent.com/emadadel4/itt/main/itt.ps1 | iex
65 | 66 | > [!NOTE] 67 | > All links point directly to the [itt.ps1](https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/itt.ps1) file in this repository. You can test them in browser, make sure the link starts with https:// 68 | 69 | ## ⚡ Quick Install Your Saved Apps (Run as Admin is recommended) 70 | Example: 71 |
iex "& { $(irm bit.ly/ittea) } -i .\myapps.itt"
72 | 73 | # 🤝 How to Contribute 74 | 75 | ### Project Structure: 76 | ``` 77 | ├── itt/ 78 | │ ├── static/ > Static files (e.g., apps, settings, images, etc.) 79 | │ ├── Initialize/ > Scripts to set up default registry keys and launch the WPF app window 80 | │ ├── locales/ > Localization files for different languages 81 | │ ├── scripts/ > Core functionality scripts (e.g., install, script blocks, utility scripts) 82 | │ ├── templates/ > Template files (e.g., README.md or other templates) 83 | │ ├── themes/ > Theme files that define the application's visual style 84 | │ ├── xaml/ > UI elements and windows (XAML files) 85 | │ ├── build.ps1 > Builds the project and generates the final output script 86 | │ └── itt.ps1 > This is the script that you run using the commands above 87 | ``` 88 | 89 | 1. **Make sure you have PowerShell 7 installed (recommended) for building. is available on ITT** 90 | 91 | 2. **Fork the repository and clone it using [Github desktop](https://desktop.github.com/download/). is available on ITT** 92 | 93 | 3. **Open the ITT directory in PowerShell 7 run as administrator:** 94 | 95 |
Set-Location "C:\Users\$env:USERNAME\Documents\Github\ITT"
 96 | 
97 | 98 |
    99 |
  1. Choose what you want to add.
  2. 100 |
101 | 102 |

📦 Add a New App

103 | 104 |
.\newApp.ps1
105 | 
106 | 107 |

⚙️ Add a New Tweak

108 | 109 |
.\newTweak.ps1
110 | 
111 | 112 | > [!NOTE] 113 | > Ensure you understand the tweak you are adding and test it before committing. 114 | 115 |

🌐 Add your native language

116 |

117 | 118 |

.\newLocale.ps1
119 | 
120 | 121 | > Edit locale.csv file using [edit-csv extension ](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) 122 | 123 |

🎨 Create your own theme

124 | 125 |
.\newTheme.ps1
126 | 
127 | 128 |

🎵 Add a New Soundtrack

129 | 130 |
.\newOST.ps1
131 | 
132 | 133 |

📜 Add a New Quote

134 | 135 |
.\newQuote.ps1
136 | 
137 | 138 |

🛠️ Build and debug

139 | 140 |
.\build.ps1 -Debug
141 | 
142 | 143 | > [!NOTE] 144 | > Test your changes before you submit the Pull Request 145 | 146 |
147 |
148 | 149 | # 🌟 Support 150 | 151 | **Love the project?** Show your support by clicking the ⭐ (top right) and joining our community of [stargazers](https://github.com/emadadel4/itt/stargazers)! 152 | 153 | [![Stargazers repo roster for @emadadel4/itt](https://reporoster.com/stars/dark/emadadel4/itt)](https://github.com/emadadel4/itt/stargazers) 154 | 155 | 156 | # Resistance Struggling for Justice in an Authoritarian World 157 | 158 | [![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=5000&color=F70000&width=435&lines=%23STOP_GENOCIDE!;%23StandWithPalestine)](https://git.io/typing-svg) 159 | 160 | ![luisricardo](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExYmY0ZWE5cnd5djVoaG12OHVteWI0Nm1zMzlpZGtxM2JwZmNwdG9iMCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/iUNO3pXpfqiZ8JQ1Jo/giphy.gif) 161 | 162 | Don’t hesitate to speak up and join the conversation about Palestine. In this age, each of us has a role in raising awareness. Every post or message can inspire or educate others. Don’t fear expressing yourself, as words are a powerful force to change reality. Make your platforms spaces for dialogue and contribute to creating change. Together, we raise the voices of the oppressed and work toward global justice. Let’s unite for Palestine and restore hope to those who need it. 163 | 164 | [Donation](https://www.palestinercs.org/en/Donation) 165 | 166 | [Other way to support (boycott)](https://boycott4.github.io/boycott/) 167 | 168 | ### Recommended videos. 169 | 170 |
171 | 172 |
173 | 174 | Play Video 175 | 176 | 177 | Play Video 178 | 179 | 180 | Play Video 181 | 182 |
183 |
184 | 185 |
186 |
187 | "YouTube continues to remove recommended videos!" 188 |
189 | 190 |

191 | If you can't lift the injustice, at least tell everyone about it. 192 | 193 | إذا لم تستطع رفع الظلم، فعلى الأقل أخبر الجميع عنه. 194 |

195 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | If you believe you have found a security vulnerability in this project, please report it as soon as possible. Your feedback is crucial to maintaining the security of this project. 3 | ### Content me [Here](https://t.me/emadadel4) 4 | -------------------------------------------------------------------------------- /locales/ar.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,عربي 3 | Welcome,توفر هذه الأداة تسهيلات كبيرة في عملية تثبيت البرامج وتحسين الويندوز. انضم إلينا وكن جزءًا في تطويرها 4 | System_Info,معلومات النظام 5 | Power_Options,خيارات الطاقة 6 | Device_Manager,إدارة الأجهزة 7 | Services,خدمات 8 | Networks,شبكات 9 | Apps_features,التطبيقات و الميزات 10 | Task_Manager,مدير المهام 11 | Disk_Managment,إدارة القرص 12 | Msconfig,تكوين النظام 13 | Environment_Variables,متغيرات بيئة النظام 14 | Install,تثبيت 15 | Apply,تطبيق 16 | Downloading,...جارٍ التحميل 17 | About,عن الاداة 18 | Third_party,ادوات اخرى 19 | Preferences,التفضيلات 20 | Management,إدارة الجهاز 21 | Apps,برامج 22 | Tweaks,تحسينات 23 | Settings,إعدادات 24 | Save,حفظ البرامج 25 | Restore,أسترجاع البرامج 26 | Music,الموسيقى 27 | On,تشغيل 28 | Off,كتم 29 | Dark,ليلا 30 | Light,نهارا 31 | Use_system_setting,استخدم إعدادات النظام 32 | Create_desktop_shortcut,أنشاء أختصار على سطح المكتب 33 | Reset_preferences,إعادة التفضيلات إلى الوضع الافتراضي 34 | Reopen_itt_again,يرجى اعادة فتح الاداة مرة اخرى 35 | Theme,المظهر 36 | Language,اللغة 37 | Browsers_extensions,أضافات المتصفحات 38 | All,الكل 39 | Search,بحث 40 | Create_restore_point,إنشاء نقطة الاستعادة 41 | Portable_Downloads_Folder,مجلد التنزيلات المحمولة 42 | Install_msg,هل تريد تثبيت البرامج التالية 43 | Apply_msg,هل تريد تطبيق التحسينات التالية 44 | Applying,...جارٍي التطبيق 45 | Please_wait,يرجى الانتظار، يوجد عملية في الخلفية 46 | Last_update,آخر تحديث 47 | Exit_msg,هل أنت متأكد من رغبتك في إغلاق البرنامج؟ إذا كان هناك أي تثبيتات، فسيتم إيقافها. 48 | Empty_save_msg,يرجى اختيار تطبيق واحد على الاقل لحفظه 49 | easter_egg,تقدر تكتشف الميزة المخفية؟ تصفح الكود، وكن أول واحد يكتشف الميزة، ويضيفها للأداة 50 | system_protection,حماية النظام 51 | web_browsers,المتصفحات 52 | media,مشغل 53 | media_tools,أدوات الفيديو 54 | documents,المستندات 55 | compression,الضغط 56 | communication,الاتصال 57 | file_sharing,مشاركة الملفات 58 | imaging,صور 59 | gaming,ألعاب 60 | utilities,أدوات النظام 61 | disk_tools,أدوات القرص 62 | development,تطوير 63 | security,حماية 64 | portable,محمولة 65 | runtimes,مكاتب 66 | drivers,تعريفات 67 | privacy,الخصوصية 68 | fixer,المصحح 69 | performance,الأداء 70 | personalization,التخصيص 71 | power,الطاقة 72 | protection,حماية 73 | classic,كلاسيكي -------------------------------------------------------------------------------- /locales/de.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Deutsch 3 | Welcome,Sparen Sie Zeit indem Sie mehrere Programme gleichzeitig instAllieren und die Leistung Ihres Windows steigern. Schließen Sie sich uns an um dieses Tool zu verbessern und noch besser zu machen. Sie können auch Ihre Lieblings-Musik-Apps und Anpassungen hinzufügen. 4 | Install,InstAllieren 5 | Apply,Anwenden 6 | Downloading,Herunterladen... 7 | About,Über 8 | Third_party,Drittanbieter 9 | Preferences,Einstellungen 10 | Management,Verwaltung 11 | Apps,Apps 12 | Tweaks,Optimierungen 13 | Settings,Einstellungen 14 | Save,Speichern 15 | Restore,Wiederherstellen 16 | Music,Musik 17 | On,Ein 18 | Off,Aus 19 | Disk_Managment,Datenträgerverwaltung 20 | Msconfig,Systemkonfiguration 21 | Environment_Variables,Umgebungsvariablen 22 | Task_Manager,Task-Manager 23 | Apps_features,Apps-FunktiOnen 24 | Networks,Netzwerke 25 | Services,Dienste 26 | Device_Manager,Geräte-Manager 27 | Power_Options,EnergieoptiOnen 28 | System_Info,Systeminfo 29 | Use_system_setting,Systemeinstellungen verwenden 30 | Create_desktop_shortcut,Desktop-Verknüpfung erstellen 31 | Reset_preferences,Einstellungen zurücksetzen 32 | Reopen_itt_again,Bitte ITT erneut öffnen. 33 | Theme,Thema 34 | Language,Sprache 35 | Browsers_extensions,Browser-Erweiterungen 36 | All,Alle 37 | Search,Suchen 38 | Create_restore_point,Wiederherstellungspunkt erstellen 39 | Portable_Downloads_Folder,Ordner für tragbare Downloads 40 | Install_msg,Sind Sie sicher dass Sie die folgenden Anwendungen instAllieren möchten? 41 | Apply_msg,Sind Sie sicher dass Sie die folgenden Anpassungen anwenden möchten? 42 | Applying,Anwenden... 43 | Please_wait,Bitte warten ein Prozess läuft im Hintergrund 44 | Last_update,Letztes Update 45 | Exit_msg,Sind Sie sicher dass Sie das Programm schließen möchten? Alle InstAllatiOnen werden abgebrochen. 46 | Empty_save_msg,Wählen Sie mindestens eine App zum Speichern aus 47 | easter_egg, Kannst du das verborgene Geheimnis entdecken? Tauche in den Quellcode ein sei der erste der die Funktion entdeckt und integriere sie in das Tool 48 | system_protection, Systemschutz 49 | web_browsers,Webbrowser 50 | media,Medien 51 | media_tools,Medienwerkzeuge 52 | documents,Dokumente 53 | compression,Komprimierung 54 | communication,Kommunikation 55 | file_sharing,Dateifreigabe 56 | imaging,Bildbearbeitung 57 | gaming,Spiele 58 | utilities,Dienstprogramme 59 | disk_tools,Laufwerkswerkzeuge 60 | development,Entwicklung 61 | security,Sicherheit 62 | portable,Tragbar 63 | runtimes,Laufzeitumgebungen 64 | drivers,Treiber 65 | privacy,Datenschutz 66 | fixer,Reparierer 67 | performance,Leistung 68 | personalization,Personalisierung 69 | power,Energie 70 | protection,Schutz 71 | classic,Klassisch -------------------------------------------------------------------------------- /locales/en.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,English 3 | Welcome,Save time and install all your programs at once and debloat Windows and more. Be part of ITT and contribute to improving it 4 | Install,Install 5 | Apply,Apply 6 | Downloading,Downloading... 7 | About,About 8 | Third_party,Third-party 9 | Preferences,Preferences 10 | Management,Management 11 | Apps,Apps 12 | Tweaks,Tweaks 13 | Settings,Settings 14 | Save,Save 15 | Restore,Restore 16 | Music,Music 17 | On,On 18 | Off,Off 19 | Disk_Managment,Disk Managment 20 | Msconfig,System Configuration 21 | Environment_Variables,Environment Variables 22 | Task_Manager,Task Manager 23 | Apps_features,Programs and Features 24 | Networks,Networks 25 | Services,Services 26 | Device_Manager,Device Manager 27 | Power_Options,Power options 28 | System_Info,System Info 29 | Use_system_setting,Use system setting 30 | Create_desktop_shortcut,Create desktop shortcut 31 | Reset_preferences,Reset Preferences 32 | Reopen_itt_again,Please reopen itt again. 33 | Theme,Theme 34 | Language,Language 35 | Browsers_extensions,Browsers extensions 36 | All,All 37 | Search,Search 38 | Create_restore_point,Create a restore point 39 | Portable_Downloads_Folder,Portable Downloads Folder 40 | Install_msg,Are you sure you want to install the following App(s) 41 | Apply_msg,Are you sure you want to apply the following Tweak(s) 42 | Applying,Applying... 43 | Please_wait,Please wait a process is running in the background 44 | Last_update,Last update 45 | Exit_msg,Are you sure you want to close the program? Any ongoing installations will be canceled 46 | Empty_save_msg,Choose at least One app to save it 47 | easter_egg,Can you uncover the hidden secret? Dive into the source code be the first to discover the feature and integrate it into the tool 48 | system_protection,System protection 49 | web_browsers,Web Browsers 50 | media,Media 51 | media_tools,Media Tools 52 | documents,Documents 53 | compression,Compression 54 | communication,Communication 55 | file_sharing,File Sharing 56 | imaging,Imaging 57 | gaming,Gaming 58 | utilities,Utilities 59 | disk_tools,Disk Tools 60 | development,Development 61 | security,Security 62 | portable,Portable 63 | runtimes,Runtimes 64 | drivers,Drivers 65 | privacy,Privacy 66 | fixer,Fixer 67 | performance,Performance 68 | personalization,Personalization 69 | power,Power 70 | protection,Protection 71 | classic,Classic -------------------------------------------------------------------------------- /locales/es.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Español 3 | Welcome,Ahorra tiempo instalando varios prograMAS a la vez y mejora el rendimiento de tu Windows. Únete a nosotros para mejorar esta herramienta y hacerla aún mejor. También puedes agregar tus aplicaciOnes Musicales y ajustes favoritos. 4 | Install,Instalar 5 | Apply,Aplicar 6 | Downloading,Descargando... 7 | About,Acerca de 8 | Third_party,Terceros 9 | Preferences,Preferencias 10 | Management,Gestión 11 | Apps,AplicaciOnes 12 | Tweaks,Ajustes 13 | Settings,COnfiguración 14 | Save,Guardar 15 | Restore,Restaurar 16 | Music,Música 17 | On,Encendido 18 | Off,Apagado 19 | Disk_Managment,Administración de discos 20 | Msconfig,Configuración del sistema 21 | Environment_Variables,Variables de entorno 22 | Task_Manager,Administrador de tareas 23 | Apps_features,AplicaciOnes-FunciOnes 24 | Networks,Redes 25 | Services,Servicios 26 | Device_Manager,Administrador de dispositivos 27 | Power_Options,OpciOnes de energía 28 | System_Info,Información del sistema 29 | Use_system_setting,Usar la cOnfiguración del sistema 30 | Create_desktop_shortcut,Crear acceso directo en el escritorio 31 | Reset_preferences,Restablecer preferencias 32 | Reopen_itt_again,Vuelve a abrir ITT. 33 | Theme,Tema 34 | Language,Idioma 35 | Browsers_extensions,ExtensiOnes del navegador 36 | All,Todos 37 | Search,Buscar 38 | Create_restore_point,Crear un punto de restauración 39 | Portable_Downloads_Folder,Carpeta de descargas portátiles 40 | Install_msg,¿Estás seguro de que deseas instalar las siguientes aplicaciOnes? 41 | Apply_msg,¿Estás seguro de que deseas aplicar los siguientes ajustes? 42 | Applying,Aplicando... 43 | Please_wait,Por favorespera un proceso se está ejecutando en segundo plano. 44 | Last_update,Última actualización 45 | Exit_msg,¿Estás seguro de que deseas cerrar el programa? Si hay instalaciOnes se interrumpirán. 46 | Empty_save_msg,Elige al menos una aplicación para guardarla. 47 | easter_egg, ¿Puedes descubrir el secreto oculto? Sumérgete en el código fuente sé el primero en descubrir la función e intégrala en la herramienta 48 | system_protection,Protección del sistema 49 | web_browsers,Navegadores web 50 | media,Medios 51 | media_tools,Herramientas multimedia 52 | documents,Documentos 53 | compression,Compresión 54 | communication,Comunicación 55 | file_sharing,Compartición de archivos 56 | imaging,Imágenes 57 | gaming,Juegos 58 | utilities,Utilidades 59 | disk_tools,Herramientas de disco 60 | development,Desarrollo 61 | security,Seguridad 62 | portable,Portátil 63 | runtimes,Runtimes 64 | drivers,Controladores 65 | privacy,Privacidad 66 | fixer,Reparador 67 | performance,Rendimiento 68 | personalization,Personalización 69 | power,Potencia 70 | protection,Protección 71 | classic,Clásico -------------------------------------------------------------------------------- /locales/fr.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Français 3 | Welcome,Gagnez du temps en instAllant plusieurs programmes à la fois et améliorez les performances de votre Windows. Rejoignez-nous pour améliorer cet outil et le rendre encore meilleur. Vous pouvez également ajouter vos applicatiOns Musicales et vos Tweaks préférés. 4 | Install,InstAller 5 | Apply,Appliquer 6 | Downloading,Téléchargement... 7 | About,À propos 8 | Third_party,Tiers 9 | Preferences,Préférences 10 | Management,GestiOn 11 | Apps,ApplicatiOns 12 | Tweaks,OptimisatiOns 13 | Settings,Paramètres 14 | Save,Sauvegarder 15 | Restore,Restaurer 16 | Music,Musique 17 | On,Activé 18 | Off,Désactivé 19 | Disk_Managment,GestiOn des disques 20 | Msconfig,Configuration du système 21 | Environment_Variables,Variables d'environnement 22 | Task_Manager,GestiOnnaire des tâches 23 | Apps_features,ApplicatiOns-FOnctiOnnalités 24 | Networks,Réseaux 25 | Services,Services 26 | Device_Manager,GestiOnnaire de périphériques 27 | Power_Options,OptiOns d'alimentatiOn 28 | System_Info,Infos système 29 | Use_system_setting,Utiliser les paramètres système 30 | Create_desktop_shortcut,Créer un raccourci sur le bureau 31 | Reset_preferences,Réinitialiser les préférences 32 | Reopen_itt_again,Veuillez rouvrir ITT. 33 | Theme,Thème 34 | Language,Langue 35 | Browsers_extensions,Browsers_extensions de navigateurs 36 | All,Tout 37 | Search,Rechercher 38 | Create_restore_point,Créer un point de restauratiOn 39 | Portable_Downloads_Folder,Dossier de téléchargements portables 40 | Install_msg,Êtes-vous sûr de vouloir instAller les applicatiOns suivantes ? 41 | Apply_msg,Êtes-vous sûr de vouloir appliquer les Tweaks suivants ? 42 | Applying,ApplicatiOn... 43 | Please_wait,Veuillez patienter 44 | Last_update,Dernière mise à jour un processus est en cours d'exécutiOn en arrière-plan. 45 | Exit_msg,Êtes-vous sûr de vouloir fermer le programme ? Si des instAllatiOns sOnt en cours elles serOnt interrompues 46 | Empty_save_msg,Choisissez au moins une applicatiOn à sauvegarder 47 | easter_egg, Peux-tu découvrir le secret caché ? Plonge dans le code source sois le premier à découvrir la fonctionnalité et intègre-la dans l'outil 48 | system_protection,Protection du système 49 | web_browsers,Navigateurs Web 50 | media,Médias 51 | media_tools,Outils multimédias 52 | documents,Documents 53 | compression,Compression 54 | communication,Communication 55 | file_sharing,Partage de fichiers 56 | imaging,Imagerie 57 | gaming,Jeux 58 | utilities,Utilitaires 59 | disk_tools,Outils de disque 60 | development,Développement 61 | security,Sécurité 62 | portable,Portable 63 | runtimes,Runtimes 64 | drivers,Pilotes 65 | privacy,Confidentialité 66 | fixer,Réparateur 67 | performance,Performance 68 | personalization,Personnalisation 69 | power,Puissance 70 | protection,Protection 71 | classic,Classique -------------------------------------------------------------------------------- /locales/hi.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,अंग्रेज़ी 3 | Welcome,एक बार में कई प्रोग्राम इंस्टॉल करके समय बचाएं और अपने विंडोज़ के प्रदर्शन को बढ़ावा दें। इस टूल को बेहतर बनाने और इसे और अच्छा बनाने में हमारा साथ दें। आप अपने पसंदीदा म्यूज़िक ऐप्स और ट्विक्स भी जोड़ सकते हैं। 4 | Install,इंस्टॉल करें 5 | Apply,लागू करें 6 | Downloading,डाउनलोड हो रहा है... 7 | About,के बारे में 8 | Third_party,थर्ड-पार्टी 9 | Preferences,पसंद 10 | Management,प्रबंधन 11 | Apps,ऐप्स 12 | Tweaks,ट्विक्स 13 | Settings,सेटिंग्स 14 | Save,सहेजें 15 | Restore,पुनर्स्थापित करें 16 | Music,संगीत 17 | On,चालू 18 | Off,बंद 19 | Disk_Managment,डिस्क प्रबंधन 20 | Msconfig,सिस्टम कॉन्फ़िगरेशन 21 | Environment_Variables,एन्विर्बल वार्डियल्स 22 | Task_Manager,टास्क मैनेजर 23 | Apps_features,ऐप्स-फीचर्स 24 | Networks,नेटवर्क्स 25 | Services,सेवाएँ 26 | Device_Manager,डिवाइस मैनेजर 27 | Power_Options,पावर विकल्प 28 | System_Info,सिस्टम जानकारी 29 | Use_system_setting,सिस्टम सेटिंग का उपयोग करें 30 | Create_desktop_shortcut,डेस्कटॉप शॉर्टकट बनाएं 31 | Reset_preferences,पसंद रीसेट करें 32 | Reopen_itt_again,कृपया इसे फिर से खोलें। 33 | Theme,थीम 34 | Language,भाषा 35 | Browsers_extensions,ब्राउज़र एक्सटेंशन 36 | All,सभी 37 | Search,खोज 38 | Create_restore_point,पुनर्स्थापना बिंदु बनाएँ 39 | Portable_Downloads_Folder,पोर्टेबल डाउनलोड फ़ोल्डर 40 | Install_msg,क्या आप निश्चित हैं कि आप निम्न ऐप्स इंस्टॉल करना चाहते हैं? 41 | Apply_msg,क्या आप निश्चित हैं कि आप निम्न ट्विक्स लागू करना चाहते हैं? 42 | Applying,लागू किया जा रहा है... 43 | Please_wait,कृपया प्रतीक्षा करें बैकग्राउंड में एक प्रक्रिया चल रही है 44 | Last_update,आखिरी अपडेट 45 | Exit_msg,क्या आप निश्चित हैं कि आप प्रोग्राम बंद करना चाहते हैं? यदि कोई इंस्टॉलेशन चल रहा हो तो वह समाप्त हो जाएगा 46 | Empty_save_msg,कम से कम एक ऐप चुनें और उसे सहेजें। 47 | easter_egg, क्या आप छिपे हुए रहस्य को उजागर कर सकते हैं? सोर्स कोड में डूबकी लगाएं पहले व्यक्ति बनें जो फीचर को खोजे और इसे टूल में इंटीग्रेट करें 48 | system_protection,सिस्टम सुरक्षा 49 | web_browsers,वेब ब्राउज़र 50 | media,मीडिया 51 | media_tools,मीडिया उपकरण 52 | documents,दस्तावेज़ 53 | compression,संपीड़न 54 | communication,संचार 55 | file_sharing,फ़ाइल साझा करना 56 | imaging,इमेजिंग 57 | gaming,गेमिंग 58 | utilities,उपयोगिताएँ 59 | disk_tools,डिस्क उपकरण 60 | development,विकास 61 | security,सुरक्षा 62 | portable,पोर्टेबल 63 | runtimes,रनटाइम्स 64 | drivers,ड्राइवर 65 | privacy,गोपनीयता 66 | fixer,ठीक करने वाला 67 | performance,प रदर्शन 68 | personalization,वैयक्तिकरण 69 | power,शक्ति 70 | protection,सुरक्षा 71 | classic,क्लासिक 72 | -------------------------------------------------------------------------------- /locales/it.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Italiano 3 | Welcome,Risparmia tempo installando più programmi contemporaneamente e migliora le prestazioni di Windows. Unisciti a noi per migliorare questo strumento e renderlo migliore. Puoi anche aggiungere le tue app musicali preferite e le personalizzazioni. 4 | Install,Installa 5 | Apply,Applica 6 | Downloading,Download in corso... 7 | About,Informazioni 8 | Third_party,Terze parti 9 | Preferences,Preferenze 10 | Management,Gestione 11 | Apps,App 12 | Tweaks,Personalizzazioni 13 | Settings,Impostazioni 14 | Save,Salva 15 | Restore,Ripristina 16 | Music,Musica 17 | On,Acceso 18 | Off,Spento 19 | Disk_Managment,Gestione disco 20 | Msconfig,Configurazione di sistema 21 | Environment_Variables,Variabili di ambiente 22 | Task_Manager,Gestore attività 23 | Apps_features,App-Funzionalità 24 | Networks,Reti 25 | Services,Servizi 26 | Device_Manager,Gestore dispositivi 27 | Power_Options,Opzioni risparmio energia 28 | System_Info,Informazioni di sistema 29 | Use_system_setting,Usa impostazioni di sistema 30 | Create_desktop_shortcut,Crea collegamento sul desktop 31 | Reset_preferences,Reimposta preferenze 32 | Reopen_itt_again,Per favore riapri di nuovo. 33 | Theme,Tema 34 | Language,Lingua 35 | Browsers_extensions,Estensioni per browser 36 | All,Tutti 37 | Search,Cerca 38 | Create_restore_point,Crea un punto di ripristino 39 | Portable_Downloads_Folder,Cartella download portatile 40 | Install_msg,Sei sicuro di voler installare le seguenti app? 41 | Apply_msg,Sei sicuro di voler applicare le seguenti personalizzazioni? 42 | Applying,Applicazione in corso... 43 | Please_wait,Attendere un processo è in corso in background 44 | Last_update,Ultimo aggiornamento 45 | Exit_msg,Sei sicuro di voler chiudere il programma? Se ci sono installazioni in corso verranno terminate. 46 | Empty_save_msg,Scegli almeno un'app per salvarla. 47 | easter_egg, Riuscirai a scoprire il segreto nascosto? Tuffati nel codice sorgente sii il primo a scoprire la funzionalità e integrala nello strumento 48 | system_protection,Protezione del sistema 49 | web_browsers,Browser Web 50 | media,Media 51 | media_tools,Strumenti Media 52 | documents,Documenti 53 | compression,Compressione 54 | communication,Comunicazione 55 | file_sharing,Condivisione File 56 | imaging,Imaging 57 | gaming,Giochi 58 | utilities,Utilità 59 | disk_tools,Strumenti Disco 60 | development,Sviluppo 61 | security,Sicurezza 62 | portable,Portatile 63 | runtimes,Runtime 64 | drivers,Driver 65 | privacy,Privacy 66 | fixer,Riparatore 67 | performance,Prestazioni 68 | personalization,Personalizzazione 69 | power,Potenza 70 | protection,Protezione 71 | classic,Classico -------------------------------------------------------------------------------- /locales/ko.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,한국어 3 | Welcome,여러 프로그램을 한 번에 설치하여 시간을 절약하고 Windows 성능을 향상시킵니다. 도구를 개선하고 우리와 함께 훌륭하게 만들어 보세요. 4 | System_Info,시스템 정보 5 | Power_Options,전원 옵션 6 | Device_Manager,장치 관리자 7 | Services,서비스 8 | Networks,네트워크 9 | Apps_features,앱 기능 10 | Task_Manager,작업 관리자 11 | Disk_Managment,디스크 관리 12 | Msconfig,시스템 구성 13 | Environment_Variables,연습별 변수 14 | Install,설치 15 | Apply,적용 16 | Downloading,다운로드 중 17 | About,정보 18 | Third_party,외부 19 | Preferences,환경 설정 20 | Management,관리 21 | Apps,앱 22 | Tweaks,설정 23 | Settings,설정 24 | Save,선택한 앱 저장 25 | Restore,선택한 앱 복원 26 | Music,음악 27 | On,켜기 28 | Reset_preferences,환경 설정 초기화 29 | Off,끄기 30 | Dark,다크 31 | Light,라이트 32 | Use_system_setting,시스템 33 | Create_desktop_shortcut,바탕화면 바로 가기 만들기 34 | Reopen_itt_again,ITT를 다시 열어주세요. 35 | Theme,테마 36 | Language,언어 37 | Browsers_extensions,브라우저 확장 프로그램 38 | All,모두 39 | Create_restore_point,복원 지점 생성 40 | Portable_Downloads_Folder,휴대용 다운로드 폴더 41 | Install_msg,선택한 앱을 설치하시겠습니까 42 | Apply_msg,선택한 조정 사항을 적용하시겠습니까 43 | instAlling,설치 중.. 44 | Applying,적용 중.. 45 | Please_wait,배경에서 프로세스가 진행 중입니다. 잠시 기다려주세요. 46 | Last_update,마지막 업데이트 47 | Exit_msg,프로그램을 종료하시겠습니까? 진행 중인 설치가 있으면 중단됩니다. 48 | easter_egg,숨겨진 비밀을 발견할 수 있습니다. 소스 코드에 뛰어들고 최초로 기능을 발견하고 도구에 통합하세요 49 | system_protection,웹 보호 50 | web_browsers,웹 브라우저 51 | media,미디어 52 | media_tools,미디어 도구 53 | documents,문서 54 | compression,압축 55 | communication,커뮤니케이션 56 | file_sharing,파일 공유 57 | imaging,이미지 처리 58 | gaming,게임 59 | utilities,유틸리티 60 | disk_tools,디스크 도구 61 | development,개발 62 | security,보호 63 | portable,포터블 64 | runtimes,런타임 65 | drivers,드라이버 66 | privacy,개인 정보 보호 67 | fixer,수리공 68 | performance,성능 69 | personalization,개인화 70 | power,전력 71 | protection,보호 72 | classic,클래식 73 | -------------------------------------------------------------------------------- /locales/ru.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Русский 3 | Welcome,Сэкономьте время устанавливая несколько программ одновременно и улучшите производительность Windows. Присоединяйтесь к нам для улучшения этого инструмента и его совершенствования. Вы также можете добавить свои любимые музыкальные приложения и настройки. 4 | Install,Установить 5 | Apply,Применить 6 | Downloading,Загрузка... 7 | About,О нас 8 | Third_party,Сторонние 9 | Preferences,Настройки 10 | Management,Управление 11 | Apps,Приложения 12 | Tweaks,Настройки 13 | Settings,Параметры 14 | Save,Сохранить 15 | Restore,Восстановить 16 | Music,Музыка 17 | On,Вкл 18 | Off,Выкл 19 | Disk_Managment,Управление дисками 20 | Msconfig,Конфигурация системы 21 | Environment_Variables,Переменные окружения 22 | Task_Manager,Диспетчер задач 23 | Apps_features,Приложения-Функции 24 | Networks,Сети 25 | Services,Сервисы 26 | Device_Manager,Диспетчер устройств 27 | Power_Options,Энергопитание 28 | System_Info,Информация о системе 29 | Use_system_setting,Использовать системные настройки 30 | Create_desktop_shortcut,Создать ярлык на рабочем столе 31 | Reset_preferences,Сбросить настройки 32 | Reopen_itt_again,Пожалуйста перезапустите ITT. 33 | Theme,Тема 34 | Language,Язык 35 | Browsers_extensions,Расширения для браузеров 36 | All,Все 37 | Search,Поиск 38 | Create_restore_point,Создать точку восстановления 39 | Portable_Downloads_Folder,Папка для портативных загрузок 40 | Install_msg,Вы уверены что хотите установить следующие приложения? 41 | Apply_msg,Вы уверены что хотите применить следующие настройки? 42 | Applying,Применение... 43 | Please_wait,Подождите выполняется фоновый процесс. 44 | Last_update,Последнее обновление 45 | Exit_msg,Вы уверены что хотите закрыть программу? Все установки будут прерваны. 46 | Empty_save_msg,Выберите хотя бы одно приложение для сохранения 47 | easter_egg, Можешь ли ты раскрыть скрытый секрет? Погрузись в исходный код стань первым кто обнаружит функцию и интегрируй её в инструмент 48 | system_protection,Системная защита 49 | web_browsers,Веб-браузеры 50 | media,Медиа 51 | media_tools,Медиа-инструменты 52 | documents,Документы 53 | compression,Архивация 54 | communication,Связь 55 | file_sharing,Обмен файлами 56 | imaging,Обработка изображений 57 | gaming,Игры 58 | utilities,Утилиты 59 | disk_tools,Работа с дисками 60 | development,Разработка 61 | security,Безопасность 62 | portable,Портативные 63 | runtimes,Среды выполнения 64 | drivers,Драйверы 65 | privacy,Конфиденциальность 66 | fixer,Исправитель 67 | performance,Производительность 68 | personalization,Персонализация 69 | power,Мощность 70 | protection,Защита 71 | classic,Классический -------------------------------------------------------------------------------- /locales/tr.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,Türkçe 3 | Welcome,Birden fazla programı aynı anda yükleyerek zaman kazanın ve Windows performansınızı artırın. Bu aracı geliştirmek ve daha da iyileştirmek için bize katılın. Ayrıca favori müzik uygulamalarınızı ve ayarlarınızı da ekleyebilirsiniz. 4 | Install,Yükle 5 | Apply,Uygula 6 | Downloading,İndiriliyor... 7 | About,Hakkında 8 | Third_party,Üçüncü Taraf 9 | Preferences,Tercihler 10 | Management,Yönetim 11 | Apps,Uygulamalar 12 | Tweaks,İnce Ayarlar 13 | Settings,Ayarlar 14 | Save,Kayıt Et 15 | Restore,Geri Yükle 16 | Music,Müzik 17 | On,Açık 18 | Off,Kapalı 19 | Disk_Managment,Disk Yönetimi 20 | Msconfig,Sistem Yapılandırması 21 | Environment_Variables,Ortam Değişkenleri 22 | Task_Manager,Görev Yöneticisi 23 | Apps_features,Uygulamalar-Özellikler 24 | Networks,Ağlar 25 | Services,Hizmetler 26 | Device_Manager,Aygıt Yöneticisi 27 | Power_Options,Güç Seçenekleri 28 | System_Info,Sistem Bilgisi 29 | Use_system_setting,Sistem ayarlarını kullan 30 | Create_desktop_shortcut,MASaüstü kısayolu oluştur 31 | Reset_preferences,Tercihleri sıfırla 32 | Reopen_itt_again,Lütfen ITT'yi tekrar açın. 33 | Theme,Tema 34 | Language,Dil 35 | Browsers_extensions,Tarayıcı Eklentileri 36 | All, Tümü 37 | Search,Ara 38 | Create_restore_point,Geri yükleme noktası oluştur 39 | Portable_Downloads_Folder,Taşınabilir İndirilenler Klasörü 40 | Install_msg,Aşağıdaki uygulamaları yüklemek istediğinizden emin misiniz? 41 | Apply_msg,Aşağıdaki ayarları uygulamak istediğinizden emin misiniz? 42 | Applying,Uygulanıyor... 43 | Please_wait,Lütfen bekleyin arka planda bir işlem çalışıyor 44 | Last_update,SOn güncelleme 45 | Exit_msg,Programı kapatmak istediğinizden emin misiniz? Herhangi bir kurulum varsa durdurulacak 46 | Empty_save_msg,Kaydetmek için en az bir uygulama seçin 47 | easter_egg, Gizli sırrı keşfedebilir misin? Kaynağa dal özelliği ilk keşfeden ol ve araca entegre et 48 | system_protection,Sistem koruması 49 | web_browsers,Web Tarayıcıları 50 | media,Medya 51 | media_tools,Medya Araçları 52 | documents, Belgeler 53 | compression,Sıkıştırma 54 | communication,İletişim 55 | file_sharing,Dosya Paylaşımı 56 | imaging,Görüntü İşleme 57 | gaming,Oyun 58 | utilities,Araçlar 59 | disk_tools,Disk Araçları 60 | development,Geliştirme 61 | security,Güvenlik 62 | portable,Taşınabilir 63 | runtimes,Çalışma Zamanı 64 | drivers,Sürücüler 65 | privacy,Gizlilik 66 | fixer,Düzeltici 67 | performance,Performans 68 | personalization,Kişiselleştirme 69 | power,Güç 70 | protection,Koruma 71 | classic,Klasik -------------------------------------------------------------------------------- /locales/zh.csv: -------------------------------------------------------------------------------- 1 | Key,Text 2 | name,中文 3 | Welcome,通过一次安装多个程序节省时间并提升您的Windows性能。加入我们,改进工具,使其更加优秀。 4 | System_Info,系统信息 5 | Power_Options,电源选项 6 | Device_Manager,设备管理器 7 | Services,服务 8 | Networks,网络 9 | Apps_features,应用特性 10 | Task_Manager,任务管理器 11 | Disk_Managment,磁盘管理 12 | Msconfig,系统配置 13 | Environment_Variables,环境变量 14 | Install,安装 15 | Apply,应用 16 | Downloading,下载中 17 | About,关于 18 | Third_party,第三方 19 | Preferences,偏好 20 | Management,管理 21 | Apps,应用 22 | Tweaks,调整 23 | Settings,设置 24 | Save,保存选定应用 25 | Restore,恢复选定应用 26 | Music,音乐 27 | On,开启 28 | Off,关闭 29 | Reset_preferences,重置偏好设置 30 | Dark,深色 31 | Light,浅色 32 | Use_system_setting,系统 33 | Create_desktop_shortcut,创建桌面快捷方式 34 | Reopen_itt_again,请重新打开ITT。 35 | Theme,主题 36 | Language,语言 37 | Browsers_extensions,浏览器扩展 38 | All,都 39 | Create_restore_point,创建还原点 40 | Portable_Downloads_Folder,便携下载文件夹 41 | Install_msg,是否要安装选定的应用 42 | Apply_msg,是否要应用选定的调整 43 | instAlling,安装中.. 44 | Applying,应用中.. 45 | Please_wait,请等待,后台有进程在进行中。 46 | Last_update,最后更新 47 | Exit_msg,您确定要关闭程序吗?如果有任何安装正在进行,它们将被终止。 48 | easter_egg, 你能发现隐藏的秘密吗?深入源代码,成为第一个发现功能的人,并将其集成到工具中 49 | system_protection,系统保护 50 | web_browsers,网页浏览器 51 | media,媒体 52 | media_tools,媒体工具 53 | documents,文档 54 | compression,压缩 55 | communication,通讯 56 | file_sharing,文件共享 57 | imaging,图像处理 58 | gaming,游戏 59 | utilities,实用工具 60 | disk_tools,磁盘工具 61 | development,开发 62 | security,安全 63 | portable,便携版 64 | runtimes,运行时 65 | drivers,驱动程序 66 | privacy,隐私 67 | fixer,修复工具 68 | performance,性能 69 | personalization,个性化 70 | power,电力 71 | protection,保护 72 | classic,经典 -------------------------------------------------------------------------------- /newApp.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string]$applications = "./static/Database/Applications.json" 3 | ) 4 | Write-Host " 5 | +-------------------------------------------------------------------------+ 6 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 7 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 8 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 9 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 10 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 11 | | Made with ♥ By Emad Adel | 12 | | | 13 | | Choco packages: https://community.chocolatey.org/packages | 14 | | Winget packages: https://winget.run/ & https://winget.ragerworks.com/ | 15 | | ITT packages: https://github.com/itt-co/itt-packages | 16 | +-------------------------------------------------------------------------+ 17 | " 18 | #=========================================================================== 19 | #region Begin Prompt user to choose download method 20 | #=========================================================================== 21 | $Mthoed = @{ 22 | 1 = "API [Choco/Winget/ITT]" 23 | } 24 | do { 25 | 26 | Write-Host "Which method to download this app will be?:" 27 | 28 | foreach ($key in $Mthoed.Keys | Sort-Object) { 29 | Write-Host "$key - $($Mthoed[$key])" 30 | } 31 | 32 | $choice = Read-Host "Enter the number corresponding to the methods" 33 | 34 | if ([int]$choice -in $Mthoed.Keys) { 35 | $userInput = $Mthoed[[int]$choice] 36 | } 37 | else { 38 | Write-Host "Invalid choice. Please select a valid option." 39 | } 40 | 41 | } until ([int]$choice -in $Mthoed.Keys) 42 | #=========================================================================== 43 | #endregion end Prompt user to choose download method 44 | #=========================================================================== 45 | function Check { 46 | 47 | param ( 48 | [string]$choco, 49 | [string]$winget, 50 | [string]$itt, 51 | [string]$scoop 52 | ) 53 | 54 | $jsonContent = Get-Content -Path $applications -Raw | ConvertFrom-Json 55 | 56 | foreach ($item in $jsonContent) { 57 | 58 | if ($item.choco -eq $choco -and $item.choco -ne "na") { 59 | Write-Host "($choco) already exists!" -ForegroundColor Yellow 60 | exit 61 | } 62 | elseif ($item.winget -eq $winget -and $item.winget -ne "na") { 63 | Write-Host "($winget) already exists!" -ForegroundColor Yellow 64 | exit 65 | 66 | }elseif ($item.itt -eq $itt -and $item.itt -ne "na") { 67 | Write-Host "($itt) already exists!" -ForegroundColor Yellow 68 | exit 69 | } 70 | elseif ($item.scoop -eq $scoop -and $item.scoop -ne "na") { 71 | Write-Host "($scoop) already exists!" -ForegroundColor Yellow 72 | exit 73 | } 74 | } 75 | } 76 | function Create-JsonObject { 77 | 78 | $Name = Read-Host "Enter app name" 79 | $Description = Read-Host "Enter app description" 80 | 81 | # Create the base JSON object 82 | $jsonObject = @{ 83 | name = $Name 84 | description = $Description 85 | choco = "na" 86 | scoop = "na" 87 | winget = "na" 88 | itt = "na" 89 | category = "" 90 | } 91 | 92 | $downloadMethod = Download-Mthoed 93 | 94 | # Set the itt ,winget, choco values 95 | $jsonObject.itt = $downloadMethod.itt 96 | $jsonObject.winget = $downloadMethod.winget 97 | $jsonObject.choco = $downloadMethod.choco 98 | $jsonObject.scoop = $downloadMethod.scoop 99 | $jsonObject.category += Category 100 | return $jsonObject 101 | } 102 | function Download-Mthoed { 103 | # Handle the selected method 104 | switch ($userInput) { 105 | 106 | "API [Choco/Winget/ITT]" { 107 | 108 | # choco input 109 | $choco = Read-Host "Enter Chocolatey package name" 110 | $choco = ($choco -replace "choco install", "" -replace ",,", ",").Trim() 111 | if ($choco -eq "") { $choco = "na" } # Set default value if empty 112 | # choco Prompt 113 | 114 | # winget input 115 | $winget = Read-Host "Enter winget package" 116 | if ($winget -eq "") { $winget = "na" } # Set default value if empty 117 | $cleanedWinget = $winget -replace "winget install -e --id", "" -replace "\s+", "" 118 | # winget input 119 | 120 | # itt scoop 121 | $scoop = Read-Host "Enter scoop package name" 122 | if ($scoop -eq "") { $scoop = "na" } # Set default value if empty 123 | # itt scoop 124 | 125 | # itt input 126 | $itt = Read-Host "Enter itt package name" 127 | if ($itt -eq "") { $itt = "na" } # Set default value if empty 128 | # itt input 129 | 130 | # Check if there is dublicate 131 | Check -itt $itt -choco $choco -winget $winget -scoop $scoop 132 | 133 | return @{ 134 | choco = $choco 135 | winget = $cleanedWinget 136 | scoop = $scoop 137 | itt = $itt 138 | } 139 | } 140 | } 141 | } 142 | function Category { 143 | #=========================================================================== 144 | #region Begin Categories Prompt 145 | #=========================================================================== 146 | # Define category options 147 | $validCategories = @{ 148 | 1 = "Web Browsers" 149 | 2 = "Media" 150 | 3 = "Media Tools" 151 | 4 = "Documents" 152 | 5 = "Compression" 153 | 6 = "Communication" 154 | 7 = "Gaming" 155 | 8 = "Imaging" 156 | 9 = "Drivers" 157 | 10 = "Utilities" 158 | 11 = "Disk Tools" 159 | 12 = "File Sharing" 160 | 13 = "Development" 161 | 14 = "Runtimes" 162 | 15 = "Portable" 163 | 16 = "Security" 164 | 17 = "GPU Drivers" 165 | } 166 | # Prompt user to choose category 167 | do { 168 | Write-Host "Which category this app will be?:" 169 | foreach ($key in $validCategories.Keys | Sort-Object) { 170 | Write-Host "$key - $($validCategories[$key])" 171 | } 172 | $choice = Read-Host "Enter the number corresponding to the category" 173 | if ([int]$choice -in $validCategories.Keys) { 174 | $category = $validCategories[[int]$choice] 175 | } 176 | else { 177 | Write-Host "Invalid choice. Please select a valid option." 178 | } 179 | } until ([int]$choice -in $validCategories.Keys) 180 | return $category 181 | #=========================================================================== 182 | #endregion Categories 183 | #=========================================================================== 184 | } 185 | #=========================================================================== 186 | #region Begin output json file 187 | #=========================================================================== 188 | # Check if the JSON file exists 189 | if (Test-Path $applications) { 190 | # Read existing JSON file 191 | $existingJson = Get-Content -Path $applications -Raw | ConvertFrom-Json 192 | # Create a new JSON object to add 193 | $newJsonObject = Create-JsonObject 194 | # Append the new object to the existing JSON structure 195 | $existingJson += $newJsonObject 196 | # Convert back to JSON format while maintaining the property order 197 | $jsonOutput = @() 198 | foreach ($item in $existingJson) { 199 | $jsonOutput += [PSCustomObject]@{ 200 | Name = $item.Name 201 | Description = $item.Description 202 | choco = $item.choco 203 | scoop = $item.scoop 204 | winget = $item.winget 205 | itt = $item.itt 206 | category = $item.category 207 | } 208 | } 209 | # Write the ordered JSON to the file 210 | $jsonOutput | ConvertTo-Json -Depth 20 | Out-File -FilePath $applications -Encoding utf8 211 | Write-Host "Added successfully, Don't forget to build and test it before PR!" -ForegroundColor Green 212 | } 213 | else { 214 | Write-Host "The file $applications does not exist!" -ForegroundColor Red 215 | exit 216 | } 217 | #=========================================================================== 218 | #endregion end output json file 219 | #=========================================================================== -------------------------------------------------------------------------------- /newLocale.ps1: -------------------------------------------------------------------------------- 1 | Clear-Host 2 | Write-Host " 3 | +-------------------------------------------------------------------------+ 4 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 5 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 6 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 7 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 8 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 9 | | Made with ♥ By Emad Adel | 10 | +-------------------------------------------------------------------------+ 11 | " 12 | Write-Host "[!] Check the locales directory before adding a new Language." -ForegroundColor Yellow 13 | try { 14 | $name = Read-Host "Enter language display name (e.g. English)" 15 | $locales = Read-Host "Enter language code (e.g. en)" 16 | $Author = Read-Host "Enter author name (e.g. Emad Adel)" 17 | $csvFilePath = "$locales" 18 | # Define the cOntent in the desired format 19 | $table = @" 20 | Key,Text 21 | author,"$Author", 22 | name,"$name", 23 | Welcome,Save time and install all your programs at once and debloat Windows and more. Be part of ITT and contribute to improving it 24 | Install,Install 25 | Apply,Apply 26 | Downloading,Downloading... 27 | About,About 28 | Third_party,Third-party 29 | Preferences,Preferences 30 | Management,Management 31 | Apps,Apps 32 | Tweaks,Tweaks 33 | Settings,Settings 34 | Save,Save 35 | Restore,Restore 36 | Music,Music 37 | On,On 38 | Off,Off 39 | Disk_Managment,Disk Managment 40 | Msconfig,System Configuration 41 | Environment_Variables,Environment Variables 42 | Task_Manager,Task Manager 43 | Apps_features,Programs and Features 44 | Networks,Networks 45 | Services,Services 46 | Device_Manager,Device Manager 47 | Power_Options,Power options 48 | System_Info,System Info 49 | Use_system_setting,Use system setting 50 | Create_desktop_shortcut,Create desktop shortcut 51 | Reset_preferences,Reset Preferences 52 | Reopen_itt_again,Please reopen itt again. 53 | Theme,Theme 54 | Language,Language 55 | Browsers_extensions,Browsers extensions 56 | All,All 57 | Search,Search 58 | Create_restore_point,Create a restore point 59 | Portable_Downloads_Folder,Portable Downloads Folder 60 | Install_msg,Are you sure you want to install the following App(s) 61 | Apply_msg,Are you sure you want to apply the following Tweak(s) 62 | Applying,Applying... 63 | Please_wait,Please wait a process is running in the background 64 | Last_update,Last update 65 | Exit_msg,Are you sure you want to close the program? Any ongoing installations will be canceled 66 | Empty_save_msg,Choose at least One app to save it 67 | easter_egg,Can you uncover the hidden secret? Dive into the source code be the first to discover the feature and integrate it into the tool 68 | system_protection,System protection 69 | web_browsers,Web Browsers 70 | media,Media 71 | media_tools,Media Tools 72 | documents,Documents 73 | compression,Compression 74 | communication,Communication 75 | file_sharing,File Sharing 76 | imaging,Imaging 77 | gaming,Gaming 78 | utilities,Utilities 79 | disk_tools,Disk Tools 80 | development,Development 81 | security,Security 82 | portable,Portable 83 | runtimes,Runtimes 84 | drivers,Drivers 85 | privacy,Privacy 86 | fixer,Fixer 87 | performance,Performance 88 | personalization,Personalization 89 | power,Power 90 | protection,Protection 91 | classic,Classic 92 | "@ 93 | # Write the cOntent to the CSV file 94 | $csvFilePath = "locales/$csvFilePath.csv" 95 | Set-COntent -Path $csvFilePath -Value $table -Encoding UTF8 96 | Write-Host "Template saved at "$csvFilePath". You can edit the file using any CSV editor such as Excel, or VSCode." 97 | } 98 | catch { 99 | Write-Host "An error occurred: $_" 100 | } -------------------------------------------------------------------------------- /newOST.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string]$json = "./static/Database/OST.json" 3 | ) 4 | Write-Host " 5 | +-------------------------------------------------------------------------+ 6 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 7 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 8 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 9 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 10 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 11 | | Made with ♥ By Emad Adel | 12 | +-------------------------------------------------------------------------+ 13 | " 14 | try { 15 | # Read existing JSON file 16 | $jsonFilePath = $json 17 | $existingData = Get-Content $json -Raw -ErrorAction Stop | ConvertFrom-Json 18 | # Prompt for input 19 | $name = Read-Host "Enter track name" 20 | $url = Read-Host "Enter URL (Example: emadadel4.github.io/ezio_family.mp3)" 21 | # Store input 22 | $newTrack = @{ 23 | name = $name 24 | url = $url 25 | } 26 | # Add new object to existing array 27 | $existingData.Tracks += $newTrack 28 | # Write updated JSON to file 29 | $existingData | ConvertTo-Json -Depth 10 | Set-Content $jsonFilePath -ErrorAction Stop 30 | } 31 | catch { 32 | Write-Host "An error occurred: $_" 33 | } 34 | finally { 35 | Write-Host "Added successfully, Don't forget to build and test it before commit" -ForegroundColor Green 36 | } 37 | -------------------------------------------------------------------------------- /newQuote.ps1: -------------------------------------------------------------------------------- 1 | param ( 2 | [string]$json = "./static/Database/Quotes.json" 3 | ) 4 | Write-Host " 5 | +-------------------------------------------------------------------------+ 6 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 7 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 8 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 9 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 10 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 11 | | Made with ♥ By Emad Adel | 12 | +-------------------------------------------------------------------------+ 13 | " 14 | try { 15 | # Read existing JSON file 16 | $jsonFilePath = $json 17 | $existingData = Get-Content $jsonFilePath -Raw -ErrorAction Stop | ConvertFrom-Json 18 | $QuotesList = @{ 19 | # Available options 20 | 1 = "quote" 21 | 2 = "info" 22 | 3 = "music" 23 | } 24 | # Prompt user to choose mothed 25 | do { 26 | Write-Host "Select text type" 27 | foreach ($key in $QuotesList.Keys | Sort-Object) { 28 | Write-Host "$key - $($QuotesList[$key])" 29 | } 30 | $choice = Read-Host "Enter the number corresponding to the methods" 31 | if ([int]$choice -in $QuotesList.Keys) { 32 | $type = $QuotesList[[int]$choice] 33 | } else { 34 | Write-Host "Invalid choice. Please select a valid option." 35 | } 36 | } until ([int]$choice -in $QuotesList.Keys) 37 | # Prompt for input 38 | $text = Read-Host "Enter text" 39 | $name = Read-Host "Enter author name or source -You can skip this" 40 | # Store input 41 | $Quotes = @{ 42 | type = $type 43 | text = $text 44 | } 45 | # Add name only if it's not empty 46 | if (-not [string]::IsNullOrWhiteSpace($name)) { 47 | $Quotes.name = $name 48 | } 49 | # Add new software object to existing array 50 | $existingData.Quotes += $Quotes 51 | # Write updated JSON to file 52 | $existingData | ConvertTo-Json -Depth 4 | Out-File $jsonFilePath -ErrorAction Stop 53 | } 54 | catch { 55 | Write-Host "An error occurred: $_" 56 | } 57 | finally { 58 | Write-Host "Added successfully, Don't forget to build and test it before commit" -ForegroundColor Green 59 | } -------------------------------------------------------------------------------- /newTheme.ps1: -------------------------------------------------------------------------------- 1 | Write-Host " 2 | +-------------------------------------------------------------------------+ 3 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 4 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 5 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 6 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 7 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 8 | | Made with ♥ By Emad Adel | 9 | +-------------------------------------------------------------------------+ 10 | " 11 | try { 12 | # Prompt the user for the name and author 13 | $themeName = Read-Host -Prompt "Enter theme name (e.g., The Dark Knight)" 14 | $authorName = Read-Host -Prompt "Enter author name (e.g., Emad Adel)" 15 | $Key = $themeName -replace , '[^\w]', '' 16 | # Define the path for the Theme folder 17 | $themeFolderPath = "themes" 18 | # Create the Theme folder if it doesn't exist 19 | if (-not (Test-Path -Path $themeFolderPath)) { 20 | New-Item -ItemType Directory -Path $themeFolderPath | Out-Null 21 | } 22 | # Define the file name based on the theme name 23 | $fileName = "$themeFolderPath\$($themeName -replace '_', '' -replace ' ', '' -replace '[^\w]', '').xaml" 24 | # Generate the ResourceDictionary content 25 | $resourceDictionary = @" 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | Install Tweaks Tool 64 | 65 | 66 | 67 | "@ 68 | # Save the ResourceDictionary content to a file 69 | Set-Content -Path $fileName -Value $resourceDictionary 70 | # Output the location of the saved file 71 | Write-Output "Theme has been successfully generated and saved to: $fileName" -ForegroundColor Green 72 | Write-Output "Feel free to customize the colors and create your own cool theme!" 73 | } 74 | catch { 75 | Write-Host "An error occurred: $_" 76 | } -------------------------------------------------------------------------------- /newTweak.ps1: -------------------------------------------------------------------------------- 1 | Write-Host " 2 | +-------------------------------------------------------------------------+ 3 | | ___ _____ _____ ____ _ _____ _ ____ _ ____ _____ | 4 | | |_ _|_ _|_ _| | _ \ / \|_ _|/ \ | __ ) / \ / ___|| ____| | 5 | | | | | | | | | | | |/ _ \ | | / _ \ | _ \ / _ \ \___ \| _| | 6 | | | | | | | | | |_| / ___ \| |/ ___ \| |_) / ___ \ ___) | |___ | 7 | | |___| |_| |_| |____/_/ \_\_/_/ \_\____/_/ \_\____/|_____| | 8 | | Made with ♥ By Emad Adel | 9 | +-------------------------------------------------------------------------+ 10 | " 11 | # Function to create JSON structure 12 | function Create-JsonObject { 13 | $Name = Read-Host "Tweak name" 14 | $Description = Read-Host "Description" 15 | $jsonObject = @{ 16 | Name = $Name 17 | Description = $Description 18 | Check = "false" 19 | Category = "" 20 | Refresh = "false" 21 | Registry = @() 22 | AppxPackage = @() 23 | ScheduledTask = @() 24 | Script = @() 25 | UndoScript = @() 26 | Services = @() 27 | } 28 | $jsonObject.Category += Category 29 | $addRemoveCommands = Read-Host "Do you want to add 'Command' in this tweak? (y/n)" 30 | if ($addRemoveCommands -eq "y") { 31 | $jsonObject.Script += Add-Commands 32 | } 33 | # Prompt user to add items to specific properties 34 | $addRemoveTasks = (Read-Host "Do you want to add 'Remove ScheduledTask' in this tweak? (y/n)").ToLower() 35 | if ($addRemoveTasks -eq "y") { 36 | $jsonObject.ScheduledTask += Add-RemoveTasks 37 | } 38 | $addRegistry = Read-Host "Do you want to Modify 'Registry' in this tweak? (y/n)" 39 | if ($addRegistry -eq "y") { 40 | $jsonObject.Registry += Add-Registry 41 | } 42 | # Prompt user to add Appx packages 43 | $addRemoveAppxPackage = Read-Host "Do you want to Remove 'AppxPackage' in this tweak? (y/n)" 44 | if ($addRemoveAppxPackage -eq "y") { 45 | $jsonObject.AppxPackage += Add-AppxPackage 46 | } 47 | $addServices = Read-Host "Do you want to add 'Services' in this tweak? (y/n)" 48 | if ($addServices -eq "y") { 49 | $jsonObject.Services += Add-Services 50 | } 51 | return $jsonObject 52 | } 53 | function Category { 54 | # category 55 | $ActionType = @{ 56 | 1 = "Privacy" 57 | 2 = "Fixer" 58 | 3 = "Performance" 59 | 4 = "Personalization" 60 | 5 = "Power" 61 | 6 = "Protection" 62 | 7 = "Classic" 63 | } 64 | do { 65 | Write-Host "Which category will this tweak belong to?" 66 | foreach ($key in $ActionType.Keys | Sort-Object) { 67 | Write-Host "$key - $($ActionType[$key])" 68 | } 69 | $choice = Read-Host "Enter the number corresponding to the Tweak Type" 70 | if ([int]$choice -in $ActionType.Keys) { 71 | $category = $ActionType[[int]$choice] 72 | } else { 73 | Write-Host "Invalid choice. Please select a valid option." 74 | } 75 | } until ([int]$choice -in $ActionType.Keys) 76 | # category 77 | return $category 78 | } 79 | # Function to add Command 80 | function Add-Commands { 81 | $Commands = @() # Initialize an array for tasks 82 | do { 83 | $cmd = Read-Host "Enter a command" 84 | $Commands += $cmd 85 | # Ask if the user wants to add another task 86 | $addAnotherCommand = Read-Host "Do you want to add another command? (y/n)" 87 | } while ($addAnotherCommand -eq "y") 88 | return $Commands 89 | } 90 | # Function to add tasks to RemoveTasks 91 | function Add-RemoveTasks { 92 | $tasks = @() # Initialize an array for tasks 93 | do { 94 | $task = Read-Host "Enter ScheduledTask name" 95 | $tasks += $task 96 | # Ask if the user wants to add another task 97 | $addAnotherTask = Read-Host "Do you want to add another task? (yes/no)" 98 | } while ($addAnotherTask -eq "yes") 99 | return $tasks 100 | } 101 | # Function to add Services 102 | function Add-Services { 103 | $ServicesEntries = @() # Initialize an array 104 | do { 105 | # StartupType 106 | $StartupType = @{ 107 | 1 = "Disabled" 108 | 2 = "Automatic" 109 | 4 = "Manual " 110 | } 111 | do { 112 | Write-Host "Which category will this tweak belong to?" 113 | foreach ($key in $StartupType.Keys | Sort-Object) { 114 | Write-Host "$key - $($StartupType[$key])" 115 | } 116 | $choice = Read-Host "Enter the number corresponding to the Tweak Type" 117 | if ([int]$choice -in $StartupType.Keys) { 118 | $type = $StartupType[[int]$choice] 119 | } else { 120 | Write-Host "Invalid choice. Please select a valid option." 121 | } 122 | } until ([int]$choice -in $StartupType.Keys) 123 | # StartupType 124 | # Create a new entry for Modify 125 | $Services = @{ 126 | Name = Read-Host "Enter Service name" 127 | StartupType = $type 128 | DefaultType = "Manual" 129 | } 130 | $ServicesEntries += $Services # Add the entry to the array 131 | # Ask if the user wants to add another Modify entry 132 | $continue = Read-Host "Do you want to add another Service entry? (y/n)" 133 | } while ($continue -eq "y") 134 | return $ServicesEntries 135 | } 136 | # Function to add modify entries to Registry 137 | function Add-Registry { 138 | $modifyEntries = @() # Initialize an array 139 | do { 140 | # ValueType 141 | $ValueType = @{ 142 | 1 = "DWord" 143 | 2 = "Qword" 144 | 3 = "Binary" 145 | 4 = "String" 146 | 5 = "MultiString" 147 | 6 = "ExpandString" 148 | 7 = "LINK" 149 | 8 = "NONE" 150 | 9 = "QWORD_LITTLE_ENDIAN" 151 | } 152 | do { 153 | Write-Host "What is the value type" 154 | foreach ($key in $ValueType.Keys | Sort-Object) { 155 | Write-Host "$key - $($ValueType[$key])" 156 | } 157 | $choice = Read-Host "Enter the number corresponding to the Tweak Type" 158 | if ([int]$choice -in $ValueType.Keys) { 159 | $type = $ValueType[[int]$choice] 160 | } else { 161 | Write-Host "Invalid choice. Please select a valid option." 162 | } 163 | } until ([int]$choice -in $ValueType.Keys) 164 | # ValueType 165 | # Create a new entry for Registry 166 | $modifyEntry = @{ 167 | Path = Read-Host "Enter Path" 168 | Name = Read-Host "Enter value Name" 169 | Type = $type 170 | Value = Read-Host "Enter Value" 171 | DefaultValue = Read-Host "Enter Default Value" 172 | } 173 | $modifyEntries += $modifyEntry # Add the entry to the Modify array 174 | # Ask if the user wants to add another Modify entry 175 | $continue = Read-Host "Do you want to add another Modify entry? (y/n)" 176 | } while ($continue -eq "y") 177 | return $modifyEntries 178 | } 179 | # Function to add Appx packages 180 | function Add-AppxPackage { 181 | $appxPackages = @() # Initialize an array for Appx packages 182 | do { 183 | $packageName = Read-Host "Enter Appx package name'" 184 | $appxPackages += $packageName 185 | # Ask if the user wants to add another Appx package 186 | $addAnotherAppx = Read-Host "Do you want to add another Appx package? (y/n)" 187 | } while ($addAnotherAppx -eq "y") 188 | return $appxPackages 189 | } 190 | # Main script execution 191 | $outputFilePath = "./static/Database/Tweaks.json" 192 | # Check if the JSON file exists 193 | if (Test-Path $outputFilePath) { 194 | # Read existing JSON file 195 | $existingJson = Get-Content -Path $outputFilePath -Raw | ConvertFrom-Json 196 | # Create a new JSON object to add 197 | $newJsonObject = Create-JsonObject 198 | # Append the new object to the existing JSON structure 199 | $existingJson += $newJsonObject 200 | # Convert back to JSON format while maintaining the property order 201 | $jsonOutput = @() 202 | foreach ($item in $existingJson) { 203 | $jsonOutput += [PSCustomObject]@{ 204 | Name = $item.Name 205 | Description = $item.Description 206 | Category = $item.Category 207 | Check = $item.Check 208 | Refresh = $item.Refresh 209 | Script = $item.Script 210 | UndoScript = $item.UndoScript 211 | ScheduledTask = $item.ScheduledTask 212 | AppxPackage = $item.AppxPackage 213 | Services = $item.Services 214 | Registry = $item.Registry 215 | } 216 | } 217 | # Write the ordered JSON to the file 218 | $jsonOutput | ConvertTo-Json -Depth 20 | Out-File -FilePath $outputFilePath -Encoding utf8 219 | Write-Host "Added successfully to existing JSON file. Don't forget to build and test it before commit" -ForegroundColor Green 220 | } else { 221 | Write-Host "The file $outputFilePath does not exist!" -ForegroundColor Red 222 | } 223 | -------------------------------------------------------------------------------- /scripts/Core/1.Script-Block.ps1: -------------------------------------------------------------------------------- 1 | function ITT-ScriptBlock { 2 | <# 3 | .SYNOPSIS 4 | Executes a given script block asynchronously within a specified runspace. 5 | .DESCRIPTION 6 | This function creates a new PowerShell instance to execute a provided script block asynchronously. It accepts an optional array of arguments to pass to the script block and manages the runspace and PowerShell instance resources. The function ensures that resources are properly disposed of after the script block completes execution. 7 | .EXAMPLE 8 | ITT-ScriptBlock -ScriptBlock { param($arg1) Write-Output $arg1 } -ArgumentList @("Hello, World!") 9 | Executes the script block that outputs the provided argument "Hello, World!" asynchronously. 10 | #> 11 | param( 12 | [scriptblock]$ScriptBlock, 13 | [array]$ArgumentList, 14 | $Debug 15 | ) 16 | $script:powershell = [powershell]::Create() 17 | # Add the script block and arguments to the runspace 18 | $script:powershell.AddScript($ScriptBlock) 19 | $script:powershell.AddArgument($ArgumentList) 20 | $script:powershell.AddArgument($Debug) 21 | $script:powershell.RunspacePool = $itt.runspace 22 | # Begin running the script block asynchronously 23 | $script:handle = $script:powershell.BeginInvoke() 24 | # If the script has completed, clean up resources 25 | if ($script:handle.IsCompleted) { 26 | $script:powershell.EndInvoke($script:handle) 27 | $script:powershell.Dispose() 28 | $itt.runspace.Dispose() 29 | $itt.runspace.Close() 30 | [System.GC]::Collect() 31 | } 32 | 33 | return $handle 34 | } -------------------------------------------------------------------------------- /scripts/Core/2.Restore-Point.ps1: -------------------------------------------------------------------------------- 1 | function CreateRestorePoint { 2 | 3 | <# 4 | .SYNOPSIS 5 | Create Restore Point 6 | #> 7 | 8 | try { 9 | Set-Statusbar -Text "✋ Please wait Creating a restore point..." 10 | Set-ItemProperty "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\SystemRestore" "SystemRestorePointCreationFrequency" 0 -Type DWord -Force 11 | powershell.exe -NoProfile -Command { 12 | Enable-ComputerRestore -Drive $env:SystemDrive 13 | Checkpoint-Computer -Description ("ITT-" + (Get-Date -Format "yyyyMMdd-hhmmss-tt")) -RestorePointType "MODIFY_SETTINGS" 14 | } 15 | Set-ItemProperty $itt.registryPath "backup" 1 -Force 16 | Set-Statusbar -Text "✔ Created successfully. Applying tweaks..." 17 | } catch { 18 | Add-Log "Error: $_" "ERROR" 19 | } 20 | } -------------------------------------------------------------------------------- /scripts/Core/Add-Log.ps1: -------------------------------------------------------------------------------- 1 | function Add-Log { 2 | 3 | <# 4 | .SYNOPSIS 5 | Custom Write-Host Display Text with icon and name 6 | #> 7 | 8 | param ([string]$Message, [string]$Level = "Default") 9 | 10 | $level = $Level.ToUpper() 11 | $colorMap = @{ INFO="White"; WARNING="Yellow"; ERROR="Red"; INSTALLED="White"; APPLY="White"; DEBUG="Yellow" } 12 | $iconMap = @{ INFO="[+]"; WARNING="[!]"; ERROR="[X]"; DEFAULT=""; DEBUG="[Debug]"; ITT="[ITT]"; Chocolatey="[Chocolatey]"; Winget="[Winget]" } 13 | 14 | $color = if ($colorMap.ContainsKey($level)) { $colorMap[$level] } else { "White" } 15 | $icon = if ($iconMap.ContainsKey($level)) { $iconMap[$level] } else { "i" } 16 | 17 | Write-Host "$icon $Message" -ForegroundColor $color 18 | } -------------------------------------------------------------------------------- /scripts/Core/Disable-Service.ps1: -------------------------------------------------------------------------------- 1 | function Disable-Service { 2 | 3 | <# 4 | .SYNOPSIS 5 | Disables a specified service by changing its startup type and stopping it. 6 | .DESCRIPTION 7 | This function disables a Windows service by first changing its startup type to the specified value, then stopping the service if it is running. The function logs the outcome of the operation, including whether the service was found and successfully disabled or if an error occurred. 8 | .PARAMETER ServiceName 9 | The name of the service to be disabled. This is a required parameter. 10 | .PARAMETER StartupType 11 | The desired startup type for the service. Common values include 'Disabled', 'Manual', and 'Automatic'. This is a required parameter. 12 | .EXAMPLE 13 | Disable-Service -ServiceName "wuauserv" -StartupType "Disabled" 14 | #> 15 | 16 | param([array]$tweak) 17 | 18 | foreach ($serv in $tweak) { 19 | try { 20 | Add-Log -Message "Setting Service $($serv.Name)" -Level "info" 21 | $service = Get-Service -Name $serv.Name -ErrorAction Stop 22 | Stop-Service -Name $serv.Name -ErrorAction Stop 23 | $service | Set-Service -StartupType $serv.StartupType -ErrorAction Stop 24 | } 25 | catch { 26 | Add-Log -Message "Service $Name was not found" -Level "info" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /scripts/Core/ExecuteCommand.ps1: -------------------------------------------------------------------------------- 1 | function ExecuteCommand { 2 | 3 | <# 4 | .SYNOPSIS 5 | Executes a PowerShell command in a new process. 6 | .DESCRIPTION 7 | This function starts a new PowerShell process to execute the specified command. 8 | .EXAMPLE 9 | ExecuteCommand -Name "Greeting" -Command "Write-Output 'Welcome to ITT'" 10 | Executes the PowerShell command `Write-Output 'Welcome to ITT'` in a new PowerShell process. 11 | #> 12 | 13 | param ([array]$tweak) 14 | 15 | try { 16 | foreach ($cmd in $tweak) { 17 | Add-Log -Message "Please wait..." 18 | $script = [scriptblock]::Create($cmd) 19 | Invoke-Command $script -ErrorAction Stop 20 | } 21 | } catch { 22 | Add-Log -Message "The specified command was not found." -Level "WARNING" 23 | } 24 | } -------------------------------------------------------------------------------- /scripts/Core/Finish.ps1: -------------------------------------------------------------------------------- 1 | function Finish { 2 | 3 | <# 4 | .SYNOPSIS 5 | Clears checkboxes in a specified ListView and displays a notification. 6 | .DESCRIPTION 7 | Clears all checkboxes in the ListView named "myListView" and displays a notification with the title "Process Completed", message "All items have been processed", and icon "Success". 8 | #> 9 | 10 | param ( 11 | [string]$ListView, 12 | [string]$title = "ITT Emad Adel", 13 | [string]$icon = "Info" 14 | ) 15 | switch ($ListView) { 16 | "AppsListView" { 17 | UpdateUI -Button "InstallBtn" -Content "Install" -Width "140" 18 | Notify -title "$title" -msg "All installations have finished" -icon "Info" -time 30000 19 | Add-Log -Message "::::All installations have finished::::" 20 | Set-Statusbar -Text "📢 All installations have finished" 21 | } 22 | "TweaksListView" { 23 | UpdateUI -Button "ApplyBtn" -Content "Apply" -Width "140" 24 | Add-Log -Message "::::All tweaks have finished::::" 25 | Set-Statusbar -Text "📢 All tweaks have finished" 26 | Notify -title "$title" -msg "All tweaks have finished" -icon "Info" -time 30000 27 | } 28 | } 29 | 30 | # Reset Taskbar Progress 31 | $itt["window"].Dispatcher.Invoke([action] { Set-Taskbar -progress "None" -value 0.01 -icon "done" }) 32 | 33 | # Uncheck all items in ListView 34 | $itt.$ListView.Dispatcher.Invoke([Action] { 35 | # Uncheck all items 36 | foreach ($item in $itt.$ListView.Items) { 37 | if ($item.Children.Count -gt 0 -and $item.Children[0].Children.Count -gt 0) { 38 | $item.Children[0].Children[0].IsChecked = $false 39 | } 40 | } 41 | 42 | # Clear the list view selection and reset the filter 43 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt.$ListView.Items) 44 | $collectionView.Filter = $null 45 | $collectionView.Refresh() 46 | 47 | # Close window after install apps 48 | # if ($i -ne "") { 49 | # Manage-Music -action "StopAll" 50 | # $itt["window"].Close() 51 | # } 52 | }) 53 | } 54 | function Show-Selected { 55 | param ( 56 | [string]$ListView, 57 | [string]$mode 58 | ) 59 | 60 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt.$ListView.Items) 61 | 62 | switch ($mode) { 63 | "Filter" { 64 | $collectionView.Filter = { 65 | param ($item) 66 | 67 | # Check if item is selected 68 | return $item.Children[0].Children[0].IsChecked -eq $true 69 | } 70 | } 71 | Default { 72 | 73 | $collectionView.Filter = { 74 | param ($item) 75 | 76 | # Uncheck all checkboxes 77 | $item.Children[0].Children[0].IsChecked = $false 78 | } 79 | 80 | # Reset collection view 81 | $collectionView.Filter = $null 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /scripts/Core/Get-CheckBoxes.ps1: -------------------------------------------------------------------------------- 1 | function Get-SelectedItems { 2 | 3 | <# 4 | .SYNOPSIS 5 | Retrieves selected items from the ListView based on the specified mode. 6 | .DESCRIPTION 7 | This function collects information about selected items from a ListView, depending on the mode specified. It extracts data from the ListView items that have checkboxes that are checked and returns this information in a structured format. 8 | .PARAMETER Mode 9 | Specifies the mode for item retrieval. Options include: 10 | - `Apps`: Retrieves information about selected applications from the `AppsListView`. 11 | - `Tweaks`: Retrieves information about selected tweaks from the `TweaksListView`. 12 | .EXAMPLE 13 | Get-SelectedItems -Mode "Apps" 14 | Retrieves and returns a list of selected applications from the `AppsListView`. 15 | #> 16 | 17 | param ([string]$Mode) 18 | 19 | switch ($Mode) { 20 | "Apps" { 21 | 22 | $items = @() 23 | 24 | foreach ($item in $itt.AppsListView.Items) { 25 | 26 | $checkbox = $item.Children[0].Children[0] 27 | 28 | $tags = $item.Children[0].Children[0].Tag -split "\|" 29 | 30 | if ($checkbox.IsChecked) { 31 | 32 | $items += @{ 33 | Name = $checkbox.Content 34 | Choco = $tags[0] 35 | Scoop = $tags[1] 36 | Winget = $tags[2] 37 | ITT = $tags[3] 38 | } 39 | } 40 | } 41 | } 42 | "Tweaks" { 43 | 44 | $items = @() 45 | 46 | foreach ($item in $itt.TweaksListView.Items) { 47 | 48 | $child = $item.Children[0].Children[0] 49 | 50 | if ($tweaksDict.ContainsKey($child.Content) -and $child.IsChecked) { 51 | 52 | $items += @{ 53 | 54 | Name = $tweaksDict[$child.Content].Name 55 | Registry = $tweaksDict[$child.Content].Registry 56 | Services = $tweaksDict[$child.Content].Services 57 | ScheduledTask = $tweaksDict[$child.Content].ScheduledTask 58 | AppxPackage = $tweaksDict[$child.Content].AppxPackage 59 | Script = $tweaksDict[$child.Content].Script 60 | UndoScript = $tweaksDict[$child.Content].UndoScript 61 | Refresh = $tweaksDict[$child.Content].Refresh 62 | # Add a new tweak method here 63 | } 64 | } 65 | } 66 | } 67 | } 68 | return $items 69 | } -------------------------------------------------------------------------------- /scripts/Core/Get-ToggleStatus.ps1: -------------------------------------------------------------------------------- 1 | function Get-ToggleStatus { 2 | 3 | <# 4 | .SYNOPSIS 5 | Checks the status of various system toggle switches based on the provided parameter. 6 | .DESCRIPTION 7 | This function retrieves the status of the specified toggle switch. 8 | .EXAMPLE 9 | Get-ToggleStatus -ToggleSwitch "ToggleDarkMode" 10 | #> 11 | 12 | Param($ToggleSwitch) 13 | # Check status of "ToggleDarkMode" 14 | if ($ToggleSwitch -eq "darkmode") { 15 | $app = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').AppsUseLightTheme 16 | $system = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').SystemUsesLightTheme 17 | if ($app -eq 0 -and $system -eq 0) { 18 | return $true 19 | } 20 | else { 21 | # Return true if Sticky Keys are enabled 22 | return $false 23 | } 24 | } 25 | 26 | # Check status of "ToggleShowExt" (Show File Extensions) 27 | if ($ToggleSwitch -eq "showfileextensions") { 28 | $hideextvalue = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').HideFileExt 29 | if ($hideextvalue -eq 0) { 30 | return $true 31 | } 32 | else { 33 | # Return true if Sticky Keys are enabled 34 | return $false 35 | } 36 | } 37 | 38 | # Check status of "showsuperhidden" (Show Hidden Files) 39 | if ($ToggleSwitch -eq "showsuperhidden") { 40 | $hideextvalue = (Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowSuperHidden") 41 | if ($hideextvalue -eq 1) { 42 | return $true 43 | } 44 | else { 45 | # Return true if Sticky Keys are enabled 46 | return $false 47 | } 48 | } 49 | 50 | # Check status of "ToggleNumLock" 51 | if ($ToggleSwitch -eq "numlook") { 52 | $numlockvalue = (Get-ItemProperty -path 'HKCU:\Control Panel\Keyboard').InitialKeyboardIndicators 53 | if ($numlockvalue -eq 2) { 54 | return $true 55 | } 56 | else { 57 | # Return true if Sticky Keys are enabled 58 | return $false 59 | } 60 | } 61 | 62 | # Check status of "ToggleStickyKeys" 63 | if ($ToggleSwitch -eq "stickykeys") { 64 | $StickyKeys = (Get-ItemProperty -path 'HKCU:\Control Panel\Accessibility\StickyKeys').Flags 65 | if ($StickyKeys -eq 58) { 66 | return $false 67 | } 68 | else { 69 | # Return true if Sticky Keys are enabled 70 | return $true 71 | } 72 | } 73 | 74 | # Check status of "MouseAcceleration" 75 | if ($ToggleSwitch -eq "mouseacceleration") { 76 | $Speed = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseSpeed 77 | $Threshold1 = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseThreshold1 78 | $Threshold2 = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseThreshold2 79 | if ($Speed -eq 1 -and $Threshold1 -eq 6 -and $Threshold2 -eq 10) { 80 | return $true 81 | } 82 | else { 83 | return $false 84 | } 85 | } 86 | 87 | # EndTaskOnTaskbar 88 | if ($ToggleSwitch -eq "endtaskontaskbarwindows11") { 89 | $path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings" 90 | if (-not (Test-Path $path)) { 91 | return $false 92 | } 93 | else { 94 | $TaskBar = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings').TaskbarEndTask 95 | if ($TaskBar -eq 1) { 96 | return $true 97 | } 98 | else { 99 | return $false 100 | } 101 | } 102 | } 103 | 104 | # Remove Page file 105 | if ($ToggleSwitch -eq "clearpagefileatshutdown") { 106 | $PageFile = (Get-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\\Memory Management').ClearPageFileAtShutdown 107 | if ($PageFile -eq 1) { 108 | return $true 109 | } 110 | else { 111 | return $false 112 | } 113 | } 114 | 115 | # Auto end tasks 116 | if ($ToggleSwitch -eq "autoendtasks") { 117 | $PageFile = (Get-ItemProperty -path 'HKCU:\Control Panel\Desktop').AutoEndTasks 118 | if ($PageFile -eq 1) { 119 | return $true 120 | } 121 | else { 122 | return $false 123 | } 124 | } 125 | 126 | # Performance Options 127 | if ($ToggleSwitch -eq "performanceoptions") { 128 | $VisualFXSetting = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects').VisualFXSetting 129 | if ($VisualFXSetting -eq 2) { 130 | return $true 131 | } 132 | else { 133 | return $false 134 | } 135 | } 136 | 137 | # Quick Access 138 | if ($ToggleSwitch -eq "launchtothispc") { 139 | $LaunchTo = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').LaunchTo 140 | if ($LaunchTo -eq 1) { 141 | return $true 142 | } 143 | else { 144 | return $false 145 | } 146 | } 147 | 148 | # Disable Automatic Driver Installation 149 | if ($ToggleSwitch -eq "disableautomaticdriverinstallation") { 150 | $disableautomaticdrive = (Get-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching').SearchOrderConfig 151 | if ($disableautomaticdrive -eq 1) { 152 | return $true 153 | } 154 | else { 155 | return $false 156 | } 157 | } 158 | 159 | # Always show icons never thumbnail 160 | if ($ToggleSwitch -eq "AlwaysshowiconsneverThumbnail") { 161 | $alwaysshowicons = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced').IconsOnly 162 | if ($alwaysshowicons -eq 1) { 163 | return $true 164 | } 165 | else { 166 | return $false 167 | } 168 | } 169 | 170 | # Core Isolation Memory Integrity 171 | if ($ToggleSwitch -eq "CoreIsolationMemoryIntegrity") { 172 | $CoreIsolationMemory = (Get-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard').Enabled 173 | if ($CoreIsolationMemory -eq 1) { 174 | return $true 175 | } 176 | else { 177 | return $false 178 | } 179 | 180 | } 181 | 182 | # Windows Sandbox 183 | if ($ToggleSwitch -eq "WindowsSandbox") { 184 | $WS = Get-WindowsOptionalFeature -Online -FeatureName "Containers-DisposableClientVM" 185 | if ($WS.State -eq "Enabled") { 186 | return $true 187 | } 188 | else { 189 | return $false 190 | } 191 | } 192 | 193 | # Windows Sandbox 194 | if ($ToggleSwitch -eq "WindowsSubsystemforLinux") { 195 | $WSL = Get-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux" 196 | if ($WSL.State -eq "Enabled") { 197 | return $true 198 | } 199 | else { 200 | return $false 201 | } 202 | } 203 | 204 | # HyperV 205 | if ($ToggleSwitch -eq "HyperVVirtualization") { 206 | 207 | $HyperV = Get-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V" 208 | 209 | if ($HyperV.State -eq "Enabled") { 210 | return $true 211 | } 212 | else { 213 | return $false 214 | } 215 | } 216 | } -------------------------------------------------------------------------------- /scripts/Core/Install-App.ps1: -------------------------------------------------------------------------------- 1 | function Install-App { 2 | 3 | <# 4 | .SYNOPSIS 5 | Installs an application using either Chocolatey or Winget package managers. 6 | #> 7 | 8 | param ([string]$Source, [string]$Name,[string]$Choco,[string]$Scoop,[string]$Winget,[string]$ITT) 9 | 10 | # Arguments 11 | $wingetArgs = "install --id $Winget --silent --accept-source-agreements --accept-package-agreements --force" 12 | $chocoArgs = "install $Choco --confirm --acceptlicense -q --ignore-http-cache --limit-output --allowemptychecksumsecure --ignorechecksum --allowemptychecksum --usepackagecodes --ignoredetectedreboot --ignore-checksums --ignore-reboot-requests" 13 | $ittArgs = "install $ITT -y" 14 | $scoopArgs = "$Scoop" 15 | 16 | # Helper function to install an app using a specific installer 17 | function Install-AppWithInstaller { 18 | param ([string]$Installer,[string]$InstallArgs) 19 | 20 | # Try to install and return the exit code 21 | $process = Start-Process -FilePath $Installer -ArgumentList $InstallArgs -NoNewWindow -Wait -PassThru 22 | return $process.ExitCode 23 | } 24 | 25 | # Function to log installation result 26 | function Log { 27 | 28 | param ([string]$Installer,[string]$Source) 29 | 30 | if ($Installer -ne 0) { 31 | return @{ Success = $false; Message = "Installation Failed for ($Name). Report the issue in ITT repository." } 32 | } 33 | else { 34 | return @{ Success = $true; Message = "Successfully Installed ($Name)" } 35 | } 36 | } 37 | 38 | # If specific package manager is requested 39 | if ($Source -ne "auto") { 40 | 41 | switch ($Source.ToLower()) { 42 | "choco" { 43 | 44 | if ($Choco -eq "na") { 45 | Add-Log -Message "Chocolatey package not available for $Name" -Level "WARNING" 46 | return @{ Success = $false; Message = "This app is not available in Chocolatey" } 47 | } 48 | 49 | Install-Dependencies -PKGMan "choco" 50 | 51 | $exitCode = Install-AppWithInstaller "choco" $chocoArgs 52 | 53 | return Log $exitCode "Chocolatey" 54 | } 55 | "winget" { 56 | 57 | if ($Winget -eq "na") { 58 | Add-Log -Message "Winget package not available for $Name" -Level "WARNING" 59 | return @{ Success = $false; Message = "This app is not available in Winget" } 60 | } 61 | 62 | Install-Dependencies -PKGMan "winget" 63 | 64 | $exitCode = Install-AppWithInstaller "winget" $wingetArgs 65 | 66 | return Log $exitCode "Winget" 67 | } 68 | "scoop" { 69 | 70 | if ($Scoop -eq "na") { 71 | Add-Log -Message "Scoop package not available for $Name" -Level "WARNING" 72 | return @{ Success = $false; Message = "This app is not available in Scoop" } 73 | } 74 | 75 | Install-Dependencies -PKGMan "scoop" 76 | 77 | $LASTEXITCODE = scoop install $scoopArgs 78 | 79 | return Log $LASTEXITCODE "Scoop" 80 | } 81 | default { 82 | Add-Log -Message "Invalid package manager specified: $Source" -Level "ERROR" 83 | return @{ Success = $false; Message = "Invalid package manager" } 84 | } 85 | } 86 | } 87 | 88 | # TODO: if all package managers are 'none', use itt 89 | if ($Choco -eq "na" -and $Winget -eq "na" -and $itt -ne "na" -and $scoop -eq "na") { 90 | 91 | Install-ITTAChoco 92 | Add-Log -Message "Attempting to install $Name." -Level "ITT" 93 | $ITTResult = Install-AppWithInstaller "itt" $ittArgs 94 | Log $ITTResult "itt" 95 | } 96 | else 97 | { 98 | # TODO: if choco is 'none' and Scoop is equal to 'none' and winget is NOT 'none', use winget 99 | # Skip choco and scoop 100 | if ($Choco -eq "na" -and $Scoop -eq "na" -and $Winget -ne "na") 101 | { 102 | Add-Log -Message "Attempting to install $Name." -Level "Winget" 103 | 104 | Install-Winget 105 | 106 | Start-Process -FilePath "winget" -ArgumentList "settings --enable InstallerHashOverride" -NoNewWindow -Wait -PassThru 107 | 108 | $wingetResult = Install-AppWithInstaller "winget" $wingetArgs 109 | Log $wingetResult "Winget" 110 | } 111 | else 112 | { 113 | # TODO: If choco is not equal to 'none' and winget is not equal to 'none', use choco first and fallback to scoop and if scoop is failed, use winget for last try 114 | if ($Choco -ne "na" -or $Winget -ne "na" -or $Scoop -ne "na") 115 | { 116 | Add-Log -Message "Attempting to install $Name." -Level "Chocolatey" 117 | 118 | Install-Dependencies -PKGMan "choco" 119 | 120 | $chocoResult = Install-AppWithInstaller "choco" $chocoArgs 121 | 122 | if ($chocoResult -ne 0) { 123 | 124 | Add-Log -Message "installation failed, Falling back to winget." -Level "info" 125 | 126 | Install-Dependencies -PKGMan "winget" 127 | 128 | $wingetResult = Install-AppWithInstaller "winget" $wingetArgs 129 | 130 | if ($wingetResult -ne 0) { 131 | 132 | Add-Log -Message "installation failed, Falling back to scoop." -Level "info" 133 | 134 | Install-Dependencies -PKGMan "scoop" 135 | 136 | scoop install $scoopArgs 137 | 138 | Log $LASTEXITCODE "Scoop" 139 | 140 | }else { 141 | Log $wingetResult "Winget" 142 | } 143 | } 144 | else 145 | { 146 | Log $chocoResult "Chocolatey" 147 | } 148 | } 149 | else 150 | { 151 | Add-Log -Message "$Name is not available in any package manager" -Level "info" 152 | } 153 | } 154 | } 155 | } -------------------------------------------------------------------------------- /scripts/Core/Install-Dependencies.ps1: -------------------------------------------------------------------------------- 1 | function Install-Dependencies { 2 | 3 | param ([string]$PKGMan) 4 | 5 | switch ($PKGMan) 6 | { 7 | "itt" { 8 | 9 | # Installing ITT Package manager if not exist 10 | if (-not (Get-Command itt -ErrorAction SilentlyContinue)) 11 | { 12 | Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/itt-co/bin/refs/heads/main/install.ps1')) *> $null 13 | } 14 | else 15 | { 16 | try { 17 | # Check for updates 18 | $currentVersion = (itt.exe -ver) 19 | $installerPath = "$env:TEMP\installer.msi" 20 | $latestReleaseApi = "https://api.github.com/repos/itt-co/bin/releases/latest" 21 | $latestVersion = (Invoke-RestMethod -Uri $latestReleaseApi).tag_name 22 | if ($latestVersion -eq $currentVersion) {return} 23 | # Write-Host "New version available: $latestVersion. Updating..." 24 | Invoke-WebRequest "https://github.com/itt-co/bin/releases/latest/download/installer.msi" -OutFile $installerPath 25 | Start-Process msiexec.exe -ArgumentList "/i `"$installerPath`" /q" -NoNewWindow -Wait 26 | Write-Host "Updated to version $latestVersion successfully." 27 | # Remove-Item -Path $installerPath -Force 28 | } 29 | catch { 30 | Add-Log -Message "$_" -Level "error" 31 | } 32 | } 33 | } 34 | "choco" { 35 | 36 | if (-not (Get-Command choco -ErrorAction SilentlyContinue)) 37 | { 38 | Add-Log -Message "Installing dependencies... This might take few seconds" -Level "INFO" 39 | Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) *> $null 40 | } 41 | } 42 | "winget" { 43 | 44 | if(Get-Command winget -ErrorAction SilentlyContinue) {return} 45 | 46 | $ComputerInfo = Get-ComputerInfo -ErrorAction Stop 47 | 48 | $arch = [int](($ComputerInfo).OsArchitecture -replace '\D', '') 49 | 50 | if ($ComputerInfo.WindowsVersion -lt "1809") { 51 | Add-Log -Message "Winget is not supported on this version of Windows Upgrade to 1809 or newer." -Level "info" 52 | return 53 | } 54 | 55 | $VCLibs = "https://aka.ms/Microsoft.VCLibs.x$arch.14.00.Desktop.appx" 56 | $UIXaml = "https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.6/Microsoft.UI.Xaml.2.8.x$arch.appx" 57 | $WingetLatset = "https://aka.ms/getwinget" 58 | 59 | try { 60 | 61 | Add-Log -Message "Installing Winget... This might take several minutes" -Level "info" 62 | Start-BitsTransfer -Source $VCLibs -Destination "$env:TEMP\Microsoft.VCLibs.Desktop.appx" 63 | Start-BitsTransfer -Source $UIXaml -Destination "$env:TEMP\Microsoft.UI.Xaml.appx" 64 | Start-BitsTransfer -Source $WingetLatset -Destination "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" 65 | 66 | Add-AppxPackage "$env:TEMP\Microsoft.VCLibs.Desktop.appx" 67 | Add-AppxPackage "$env:TEMP\Microsoft.UI.Xaml.appx" 68 | Add-AppxPackage "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" 69 | Start-Sleep -Seconds 1 70 | Add-Log -Message "Successfully installed Winget. Continuing to install selected apps..." -Level "info" 71 | return 72 | } 73 | catch { 74 | Write-Error "Failed to install $_" 75 | } 76 | } 77 | "scoop" { 78 | 79 | if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) 80 | { 81 | Add-Log -Message "Installing scoop... This might take few seconds" -Level "info" 82 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force 83 | Invoke-WebRequest -useb get.scoop.sh | Invoke-Expression 84 | scoop bucket add extras 85 | } 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /scripts/Core/Install-Winget.ps1: -------------------------------------------------------------------------------- 1 | function Install-Winget { 2 | 3 | <# 4 | .SYNOPSIS 5 | Installs Winget on Windows systems that support it. 6 | 7 | .DESCRIPTION 8 | This function checks if Winget is installed on the system. If not, it verifies the system's architecture and Windows version to ensure compatibility. It 9 | then downloads and installs the necessary dependencies and Winget itself. 10 | #> 11 | 12 | if(Get-Command winget -ErrorAction SilentlyContinue) {return} 13 | $ComputerInfo = Get-ComputerInfo -ErrorAction Stop 14 | $arch = [int](($ComputerInfo).OsArchitecture -replace '\D', '') 15 | 16 | if ($ComputerInfo.WindowsVersion -lt "1809") { 17 | Add-Log -Message "Winget is not supported on this version of Windows Upgrade to 1809 or newer." -Level "info" 18 | return 19 | } 20 | 21 | $VCLibs = "https://aka.ms/Microsoft.VCLibs.x$arch.14.00.Desktop.appx" 22 | $UIXaml = "https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.6/Microsoft.UI.Xaml.2.8.x$arch.appx" 23 | $WingetLatset = "https://aka.ms/getwinget" 24 | 25 | try { 26 | 27 | Add-Log -Message "Installing Winget... This might take several minutes" -Level "info" 28 | Start-BitsTransfer -Source $VCLibs -Destination "$env:TEMP\Microsoft.VCLibs.Desktop.appx" 29 | Start-BitsTransfer -Source $UIXaml -Destination "$env:TEMP\Microsoft.UI.Xaml.appx" 30 | Start-BitsTransfer -Source $WingetLatset -Destination "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" 31 | 32 | Add-AppxPackage "$env:TEMP\Microsoft.VCLibs.Desktop.appx" 33 | Add-AppxPackage "$env:TEMP\Microsoft.UI.Xaml.appx" 34 | Add-AppxPackage "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" 35 | Start-Sleep -Seconds 1 36 | Add-Log -Message "Successfully installed Winget. Continuing to install selected apps..." -Level "info" 37 | return 38 | } 39 | catch { 40 | Write-Error "Failed to install $_" 41 | } 42 | } -------------------------------------------------------------------------------- /scripts/Core/Refresh-Explorer.ps1: -------------------------------------------------------------------------------- 1 | function Refresh-Explorer { 2 | 3 | 4 | Add-Log -Message "Restart explorer." -Level "info" 5 | 6 | Stop-Process -processName: Explorer -Force 7 | 8 | Start-Sleep -Seconds 1 9 | 10 | # Check if explorer is not running and start it if needed 11 | if (-not (Get-Process -processName: Explorer)) { 12 | Start-Process explorer.exe 13 | } 14 | } -------------------------------------------------------------------------------- /scripts/Core/Remove-Tasks.ps1: -------------------------------------------------------------------------------- 1 | function Remove-ScheduledTasks { 2 | 3 | param ([Parameter(Mandatory = $true)][array]$tweak) 4 | 5 | foreach ($task in $tweak) { 6 | Add-Log -Message "Removing $task ScheduledTask..." -Level "info" 7 | $tasks = Get-ScheduledTask -TaskName "*$task*" -ErrorAction SilentlyContinue 8 | if ($tasks) 9 | { 10 | foreach ($task in $tasks) 11 | { 12 | Unregister-ScheduledTask -TaskName $task.TaskName -Confirm:$false 13 | Add-Log -Message "$($task.TaskName) Removed" -Level "INFO" 14 | } 15 | } 16 | else 17 | { 18 | if ($Debug) 19 | { 20 | Add-Log -Message "No tasks matching '$task' found" -Level "debug" 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /scripts/Core/Save-Load.ps1: -------------------------------------------------------------------------------- 1 | # load file.itt 2 | function Get-file { 3 | 4 | # Check if a process is running 5 | if ($itt.ProcessRunning) { 6 | Message -key "Please_wait" -icon "Warning" -action "OK" 7 | return 8 | } 9 | 10 | # Open file dialog to select JSON file 11 | $openFileDialog = New-Object Microsoft.Win32.OpenFileDialog -Property @{ 12 | Filter = "itt files (*.itt)|*.itt" 13 | Title = "itt File" 14 | } 15 | 16 | if ($openFileDialog.ShowDialog() -eq $true) { 17 | 18 | try { 19 | 20 | # Load and parse JSON data 21 | $FileContent = Get-Content -Path $openFileDialog.FileName -Raw | ConvertFrom-Json -ErrorAction Stop 22 | 23 | # Get the apps list and collection view 24 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt.AppsListView.Items) 25 | 26 | # Define the filter predicate 27 | $collectionView.Filter = { 28 | param($item) 29 | 30 | if ($FileContent.Name -contains $item.Children[0].Children[0].Content) { return $item.Children[0].Children[0].IsChecked = $true } else { return $false } 31 | } 32 | } 33 | catch { 34 | Write-Warning "Failed to load or parse JSON file: $_" 35 | } 36 | } 37 | 38 | # Clear search input 39 | $itt.Search_placeholder.Visibility = "Visible" 40 | $itt.SearchInput.Text = $null 41 | } 42 | 43 | # Save selected items to a JSON file 44 | function Save-File { 45 | 46 | $itt['window'].FindName("AppsCategory").SelectedIndex = 0 47 | Show-Selected -ListView "AppsListView" -Mode "Filter" 48 | 49 | # Collect checked items 50 | $items = foreach ($item in $itt.AppsListView.Items) { 51 | 52 | if ($item.Children[0].Children[0].IsChecked) { 53 | [PSCustomObject]@{ 54 | Name = $item.Children[0].Children[0].Content 55 | } 56 | } 57 | } 58 | 59 | # If no items are selected, show a message and return 60 | if ($items.Count -eq 0) { 61 | Message -key "Empty_save_msg" -icon "Information" -action "OK" 62 | return 63 | } 64 | 65 | # Open save file dialog 66 | $saveFileDialog = New-Object Microsoft.Win32.SaveFileDialog -Property @{ 67 | Filter = "JSON files (*.itt)|*.itt" 68 | Title = "Save JSON File" 69 | } 70 | 71 | if ($saveFileDialog.ShowDialog() -eq $true) { 72 | # Save items to JSON file 73 | $items | ConvertTo-Json -Compress | Out-File -FilePath $saveFileDialog.FileName -Force 74 | Write-Host "Saved: $($saveFileDialog.FileName)" 75 | } 76 | 77 | # Uncheck checkboxex if user Cancel 78 | Show-Selected -ListView "AppsListView" -Mode "Default" 79 | 80 | # Clear search input 81 | $itt.Search_placeholder.Visibility = "Visible" 82 | $itt.SearchInput.Text = $null 83 | } 84 | 85 | # Quick Install 86 | function Quick-Install { 87 | 88 | param ( 89 | [string]$file 90 | ) 91 | 92 | try { 93 | # Get file local or remote 94 | if ($file -match "^https?://") { 95 | 96 | $FileContent = Invoke-RestMethod -Uri $file -ErrorAction Stop 97 | 98 | if ($FileContent -isnot [array] -or $FileContent.Count -eq 0) { 99 | Message -NoneKey "The file is corrupt or access is forbidden" -icon "Warning" -action "OK" 100 | return 101 | } 102 | 103 | } 104 | else { 105 | 106 | $FileContent = Get-Content -Path $file -Raw | ConvertFrom-Json -ErrorAction Stop 107 | 108 | if ($file -notmatch "\.itt") { 109 | Message -NoneKey "Invalid file format. Expected .itt file." -icon "Warning" -action "OK" 110 | return 111 | } 112 | } 113 | 114 | } 115 | catch { 116 | Write-Warning "Failed to load or parse JSON file: $_" 117 | return 118 | } 119 | 120 | if ($null -eq $FileContent) { return } 121 | 122 | # Get the apps list and collection view 123 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt['Window'].FindName('appslist').Items) 124 | 125 | # Set the filter predicate 126 | $collectionView.Filter = { 127 | param($item) 128 | 129 | if ($FileContent.Name -contains $item.Children[0].Children[0].Content) { return $item.Children[0].Children[0].IsChecked = $true } else { return $false } 130 | } 131 | 132 | # Start the installation process 133 | try { 134 | Invoke-Install *> $null 135 | } 136 | catch { 137 | Write-Warning "Installation failed: $_" 138 | } 139 | } -------------------------------------------------------------------------------- /scripts/Core/Set-Registry.ps1: -------------------------------------------------------------------------------- 1 | function Set-Registry { 2 | 3 | <# 4 | .SYNOPSIS 5 | Sets or creates a registry value at a specified path. 6 | .DESCRIPTION 7 | This function sets a registry value at a given path. If the specified registry path does not exist, the function attempts to create the path and set the value. 8 | .EXAMPLE 9 | Set-Registry -Name "EnableFeeds" -Type "DWord" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds" -Value 0 10 | Sets the registry value named "EnableFeeds" to 0 (DWORD) under "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds". If the path does not exist, it attempts to create it. 11 | #> 12 | 13 | param ([array]$tweak) 14 | 15 | try { 16 | if(!(Test-Path 'HKU:\')) {New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS} 17 | $tweak | ForEach-Object { 18 | if($_.Value -ne "Remove") 19 | { 20 | If (!(Test-Path $_.Path)) { 21 | Add-Log -Message "$($_.Path) was not found, Creating..." -Level "info" 22 | New-Item -Path $_.Path | Out-Null 23 | } 24 | Add-Log -Message "Optmize $($_.name)..." -Level "info" 25 | New-ItemProperty -Path $_.Path -Name $_.Name -PropertyType $_.Type -Value $_.Value -Force | Out-Null 26 | }else 27 | { 28 | if($_.Name -ne $null) 29 | { 30 | # Remove the specific registry value 31 | Add-Log -Message "Remove $($_.name) from registry..." -Level "info" 32 | Remove-ItemProperty -Path $_.Path -Name $_.Name -Force -ErrorAction SilentlyContinue 33 | }else{ 34 | # remove the registry path 35 | Add-Log -Message "Remove $($_.Path)..." -Level "info" 36 | Remove-Item -Path $_.Path -Recurse -Force -ErrorAction SilentlyContinue 37 | } 38 | } 39 | } 40 | } catch { 41 | Add-Log -Message "An error occurred: $_" -Level "WARNING" 42 | } 43 | } -------------------------------------------------------------------------------- /scripts/Core/Set-Taskbar.ps1: -------------------------------------------------------------------------------- 1 | function Set-Taskbar { 2 | 3 | <# 4 | .SYNOPSIS 5 | Sets the taskbar progress and overlay icon in the application window. 6 | .DESCRIPTION 7 | The `Set-Taskbar` function allows setting the taskbar progress state, progress value, 8 | #> 9 | 10 | param ([string]$progress,[double]$value,[string]$icon) 11 | 12 | 13 | try { 14 | 15 | if ($value) { 16 | $itt["window"].taskbarItemInfo.ProgressValue = $value 17 | } 18 | 19 | if($progress) 20 | { 21 | switch ($progress) { 22 | 'None' { $itt["window"].taskbarItemInfo.ProgressState = "None" } 23 | 'Normal' { $itt["window"].taskbarItemInfo.ProgressState = "Normal" } 24 | 'Indeterminate' { $itt["window"].taskbarItemInfo.ProgressState = "Indeterminate" } 25 | 'Error' { $itt["window"].taskbarItemInfo.ProgressState = "Error" } 26 | default { throw "Set-Taskbar Invalid state" } 27 | } 28 | } 29 | if($icon) 30 | { 31 | switch ($icon) { 32 | "done" {$itt["window"].taskbarItemInfo.Overlay = "https://raw.githubusercontent.com/emadadel4/ITT/main/static/Icons/done.png"} 33 | "logo" {$itt["window"].taskbarItemInfo.Overlay = "https://raw.githubusercontent.com/emadadel4/ITT/main/static/Icons/icon.ico"} 34 | "error" {$itt["window"].taskbarItemInfo.Overlay = "https://raw.githubusercontent.com/emadadel4/IT/main/static/Icons/error.png"} 35 | default{$itt["window"].taskbarItemInfo.Overlay = "https://raw.githubusercontent.com/emadadel4/main//static/Icons/icon.ico"} 36 | } 37 | } 38 | 39 | } 40 | catch { 41 | #Add-Log -Message "$_" -Level "info" 42 | } 43 | } -------------------------------------------------------------------------------- /scripts/Core/Startup-Log.ps1: -------------------------------------------------------------------------------- 1 | function Startup { 2 | 3 | $UsersCount = "https://ittools-7d9fe-default-rtdb.firebaseio.com/message/message.json" 4 | 5 | ITT-ScriptBlock -ArgumentList $Debug $UsersCount -ScriptBlock { 6 | 7 | param($Debug, $UsersCount) 8 | function Telegram { 9 | param ( 10 | [string]$Message 11 | ) 12 | try { 13 | # This only do Devices count please don't play with it 14 | $BotToken = "7140758327:AAF4BeD8wl4xspYvtYu7qwhd0XC82bubI1k" 15 | $ChatID = "1299033071" 16 | # This only do Devices count please don't play with it 17 | $SendMessageUrl = "https://api.telegram.org/bot$BotToken" 18 | $PostBody = @{ 19 | chat_id = $ChatID 20 | text = $Message 21 | } 22 | $Response = Invoke-RestMethod -Uri "$SendMessageUrl/sendMessage" -Method Post -Body $PostBody -ContentType "application/x-www-form-urlencoded" 23 | } 24 | catch { 25 | Add-Log -Message "Your internet connection appears to be slow." -Level "WARNING" 26 | } 27 | } 28 | 29 | function GetCount { 30 | # Fetch data using GET request 31 | $response = Invoke-RestMethod -Uri $UsersCount -Method Get 32 | 33 | # Output the Users count 34 | return $response 35 | } 36 | 37 | function PlayMusic { 38 | 39 | $ST = Invoke-RestMethod -Uri "https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/static/Database/OST.json" -Method Get 40 | 41 | # Function to play an audio track 42 | function PlayAudio($track) { 43 | $mediaItem = $itt.mediaPlayer.newMedia($track) 44 | $itt.mediaPlayer.currentPlaylist.appendItem($mediaItem) 45 | $itt.mediaPlayer.controls.play() 46 | 47 | # debug start 48 | # $currentFileName = $itt.mediaPlayer.currentMedia.name 49 | # Write-Host "Currently playing: $currentFileName" 50 | # debug end 51 | } 52 | # Shuffle the playlist and create a new playlist 53 | function GetShuffledTracks { 54 | switch ($itt.Date.Month, $itt.Date.Day) { 55 | { $_ -eq 9, 1 } { return $ST.Favorite | Get-Random -Count $ST.Favorite.Count } 56 | { $_ -eq 10, 6 -or $_ -eq 10, 7 } { return $ST.Otobers | Get-Random -Count $ST.Otobers.Count } 57 | default { return $ST.Tracks | Get-Random -Count $ST.Tracks.Count } 58 | } 59 | } 60 | # Preload and play the shuffled playlist 61 | function PlayPreloadedPlaylist { 62 | # Preload the shuffled playlist 63 | $shuffledTracks = GetShuffledTracks 64 | foreach ($track in $shuffledTracks) { 65 | PlayAudio -track $track.url 66 | # Wait for the track to finish playing 67 | while ($itt.mediaPlayer.playState -in @(3, 6)) { 68 | Start-Sleep -Milliseconds 100 69 | } 70 | } 71 | } 72 | # Play the preloaded playlist 73 | PlayPreloadedPlaylist 74 | } 75 | 76 | function Quotes { 77 | function Get-Quotes {(Invoke-RestMethod "https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/static/Database/Quotes.json").Quotes | Sort-Object { Get-Random }} 78 | 79 | function Show-Quote($text, $icon) {} 80 | 81 | Set-Statusbar -Text "☕ $($itt.database.locales.Controls.$($itt.Language).welcome)" 82 | Start-Sleep 18 83 | Set-Statusbar -Text "👁‍🗨 $($itt.database.locales.Controls.$($itt.Language).easter_egg)" 84 | Start-Sleep 18 85 | $iconMap = @{quote = "💬"; info = "📢"; music = "🎵"; Cautton = "⚠"; default = "☕" } 86 | do { 87 | foreach ($q in Get-Quotes) { 88 | $icon = if ($iconMap.ContainsKey($q.type)) { $iconMap[$q.type] } else { $iconMap.default } 89 | $text = "`“$($q.text)`”" + $(if ($q.name) { " ― $($q.name)" } else { "" }) 90 | Set-Statusbar -Text "$icon $text" 91 | Start-Sleep 25 92 | } 93 | } while ($true) 94 | } 95 | 96 | function UsageCount { 97 | 98 | # Fetch current count from Firebase as a string 99 | $currentCount = Invoke-RestMethod -Uri $UsersCount -Method Get 100 | 101 | # Convert to integer, increment, and convert back to string 102 | $Runs = ([int]$currentCount + 1).ToString() 103 | 104 | # Update the count in Firebase as a string 105 | Invoke-RestMethod -Uri $UsersCount -Method Put -Body ($Runs | ConvertTo-Json -Compress) -Headers @{ "Content-Type" = "application/json" } 106 | 107 | # Output success 108 | Telegram -Message "Version: $($itt.lastupdate)`nURL: $($itt.command)`nLang: $($itt.Language)`nTotal Usage: $($Runs)" 109 | } 110 | 111 | function LOG { 112 | Write-Host " `n` " 113 | Write-Host " ███████████████████╗ Be the first to uncover the secret! Dive into" 114 | Write-Host " ██╚══██╔══╚═══██╔══╝ the source code, find the feature and integrate it" 115 | Write-Host " ██║ ██║ Emad ██║ https://github.com/emadadel4/itt" 116 | Write-Host " ██║ ██║ Adel ██║ " 117 | Write-Host " ██║ ██║ ██║ " 118 | Write-Host " ╚═╝ ╚═╝ ╚═╝ " 119 | UsageCount 120 | Write-Host "`n ITT has been used $(GetCount) times worldwide.`n" -ForegroundColor White 121 | #Set-Statusbar -Text "🎉 ITT has been used 50 times worldwide." 122 | } 123 | # debug start 124 | if ($Debug) { return } 125 | # debug end 126 | LOG 127 | PlayMusic 128 | Quotes 129 | } 130 | } -------------------------------------------------------------------------------- /scripts/Core/Tap-On-Selection-Changed.ps1: -------------------------------------------------------------------------------- 1 | function ChangeTap { 2 | 3 | <# 4 | .SYNOPSIS 5 | Updates the visibility of buttons and sets the current list based on the selected tab. 6 | .DESCRIPTION 7 | This function manages the visibility of buttons and the selection of lists based on which tab is currently selected in a user interface. 8 | .EXAMPLE 9 | ChangeTap 10 | Updates the visibility of the 'installBtn' and 'applyBtn' and sets the 'currentList' property based on the currently selected tab. 11 | .NOTES 12 | Ensure that the `$itt['window']` object and its method `FindName` are correctly implemented and available in the context where this function is used. The function relies on these objects to access and modify UI elements. 13 | #> 14 | 15 | $tabSettings = @{ 16 | 'apps' = @{ 17 | 'installBtn' = 'Visible'; 18 | 'applyBtn' = 'Hidden'; 19 | 'CurrentList' = 'appslist'; 20 | 'CurrentCategory' = 'AppsCategory' 21 | } 22 | 'tweeksTab' = @{ 23 | 'installBtn' = 'Hidden'; 24 | 'applyBtn' = 'Visible'; 25 | 'CurrentList' = 'tweakslist'; 26 | 'CurrentCategory' = 'TwaeksCategory' 27 | } 28 | 'SettingsTab' = @{ 29 | 'installBtn' = 'Hidden'; 30 | 'applyBtn' = 'Hidden'; 31 | 'CurrentList' = 'SettingsList' 32 | } 33 | } 34 | # Iterate over the tab settings 35 | foreach ($tab in $tabSettings.Keys) { 36 | # Check if the current tab is selected 37 | if ($itt['window'].FindName($tab).IsSelected) { 38 | $settings = $tabSettings[$tab] 39 | # Update button visibility and currentList based on the selected tab 40 | $itt.CurrentList = $settings['CurrentList'] 41 | $itt.CurrentCategory = $settings['CurrentCategory'] 42 | $itt['window'].FindName('installBtn').Visibility = $settings['installBtn'] 43 | $itt['window'].FindName('applyBtn').Visibility = $settings['applyBtn'] 44 | $itt['window'].FindName('AppsCategory').Visibility = $settings['installBtn'] 45 | $itt['window'].FindName('TwaeksCategory').Visibility = $settings['applyBtn'] 46 | break 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /scripts/Core/Uninstall-AppxPackage.ps1: -------------------------------------------------------------------------------- 1 | function Uninstall-AppxPackage { 2 | 3 | <# 4 | .SYNOPSIS 5 | Uninstalls an AppX package and removes any provisioned package references. 6 | .DESCRIPTION 7 | This function uninstalls a specified AppX package. 8 | .EXAMPLE 9 | Uninstall-AppxPackage -Name "Microsoft.BingNews" 10 | #> 11 | 12 | param ([array]$tweak) 13 | 14 | try { 15 | foreach ($name in $tweak) { 16 | Add-Log -Message "Removing $name..." -Level "info" 17 | Get-AppxPackage "*$name*" | Remove-AppxPackage -ErrorAction SilentlyContinue 18 | Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like "*$name*" | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue 19 | } 20 | } 21 | catch 22 | { 23 | Add-Log -Message "PLEASE USE (WINDOWS POWERSHELL) NOT (TERMINAL POWERSHELL 7) TO UNINSTALL $NAME." -Level "WARNING" 24 | } 25 | } -------------------------------------------------------------------------------- /scripts/Install&Apply/apply.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-Apply { 2 | 3 | <# 4 | .SYNOPSIS 5 | Handles the application of selected tweaks by executing the relevant commands, registry modifications, and other operations. 6 | #> 7 | 8 | # Clear Search QUery 9 | $itt.searchInput.text = $null 10 | $itt.Search_placeholder.Visibility = "Visible" 11 | 12 | $itt['window'].FindName("TwaeksCategory").SelectedIndex = 0 13 | $selectedTweaks = Get-SelectedItems -Mode "Tweaks" 14 | 15 | if ($itt.ProcessRunning) { 16 | Message -key "Please_wait" -icon "Warning" -action "OK" 17 | return 18 | } 19 | 20 | # Return if there is no selection 21 | if ($selectedTweaks.Count -le 0) {return} 22 | 23 | Show-Selected -ListView "TweaksListView" -Mode "Filter" 24 | 25 | $result = Message -key "Apply_msg" -icon "ask" -action "YesNo" 26 | 27 | if ($result -eq "no") { 28 | Show-Selected -ListView "TweaksListView" -Mode "Default" 29 | return 30 | } 31 | 32 | ITT-ScriptBlock -ArgumentList $selectedTweaks -debug $debug -ScriptBlock { 33 | 34 | param($selectedTweaks, $debug) 35 | 36 | if((Get-ItemProperty -Path $itt.registryPath -Name "backup" -ErrorAction Stop).backup -eq 0){CreateRestorePoint} 37 | 38 | $itt.ProcessRunning = $true 39 | 40 | UpdateUI -Button "ApplyBtn" -Content "Applying" -Width "auto" 41 | 42 | $itt["window"].Dispatcher.Invoke([action] { Set-Taskbar -progress "Indeterminate" -value 0.01 -icon "logo" }) 43 | 44 | foreach ($tweak in $selectedTweaks) { 45 | Add-Log -Message "::::$($tweak.Name)::::" -Level "default" 46 | $tweak | ForEach-Object { 47 | if ($_.Script -and $_.Script.Count -gt 0) { 48 | ExecuteCommand -tweak $tweak.Script 49 | if ($_.Refresh -eq $true) { 50 | Refresh-Explorer 51 | } 52 | } 53 | if ($_.Registry -and $_.Registry.Count -gt 0) { 54 | Set-Registry -tweak $tweak.Registry 55 | if ($_.Refresh -eq $true) { 56 | Refresh-Explorer 57 | } 58 | } 59 | if ($_.AppxPackage -and $_.AppxPackage.Count -gt 0) { 60 | Uninstall-AppxPackage -tweak $tweak.AppxPackage 61 | if ($_.Refresh -eq $true) { 62 | Refresh-Explorer 63 | } 64 | } 65 | if ($_.ScheduledTask -and $_.ScheduledTask.Count -gt 0) { 66 | Remove-ScheduledTasks -tweak $tweak.ScheduledTask 67 | if ($_.Refresh -eq $true) { 68 | Refresh-Explorer 69 | } 70 | } 71 | if ($_.Services -and $_.Services.Count -gt 0) { 72 | Disable-Service -tweak $tweak.Services 73 | if ($_.Refresh -eq $true) { 74 | Refresh-Explorer 75 | } 76 | } 77 | } 78 | } 79 | 80 | $itt.ProcessRunning = $false 81 | Finish -ListView "TweaksListView" 82 | } 83 | } -------------------------------------------------------------------------------- /scripts/Install&Apply/install.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-Install { 2 | <# 3 | .SYNOPSIS 4 | Handles the installation of selected applications by invoking the appropriate installation methods. 5 | #> 6 | 7 | 8 | if ($itt.ProcessRunning) { 9 | Message -key "Please_wait" -icon "Warning" -action "OK" 10 | return 11 | } 12 | 13 | # Clear Search QUery 14 | $itt.searchInput.text = $null 15 | $itt.Search_placeholder.Visibility = "Visible" 16 | 17 | # Get Selected apps 18 | $itt['window'].FindName("AppsCategory").SelectedIndex = 0 19 | $selectedApps = Get-SelectedItems -Mode "Apps" 20 | 21 | # Return if there is no selection 22 | if ($selectedApps.Count -le 0) {return} 23 | 24 | Show-Selected -ListView "AppsListView" -Mode "Filter" 25 | 26 | if (-not $i) { 27 | $result = Message -key "Install_msg" -icon "ask" -action "YesNo" 28 | } 29 | 30 | if ($result -eq "no") { 31 | Show-Selected -ListView "AppsListView" -Mode "Default" 32 | return 33 | } 34 | 35 | $itt.PackgeManager = (Get-ItemProperty -Path $itt.registryPath -Name "source" -ErrorAction Stop).source 36 | 37 | ITT-ScriptBlock -ArgumentList $selectedApps $i $source -Debug $debug -ScriptBlock { 38 | 39 | param($selectedApps , $i, $source) 40 | 41 | UpdateUI -Button "installBtn" -Content "Downloading" -Width "auto" 42 | 43 | $itt["window"].Dispatcher.Invoke([action] { Set-Taskbar -progress "Indeterminate" -value 0.01 -icon "logo" }) 44 | 45 | $itt.ProcessRunning = $true 46 | 47 | foreach ($App in $selectedApps) { 48 | 49 | Write-Host $source 50 | 51 | Set-Statusbar -Text "⬇ Current task: Downloading $($App.Name)" 52 | 53 | # Some packages won't install until the package folder is removed. 54 | $chocoFolder = Join-Path $env:ProgramData "chocolatey\lib\$($App.Choco)" 55 | $ITTFolder = Join-Path $env:ProgramData "itt\downloads\$($App.ITT)" 56 | 57 | Remove-Item -Path "$chocoFolder" -Recurse -Force 58 | Remove-Item -Path "$chocoFolder.install" -Recurse -Force 59 | Remove-Item -Path "$env:TEMP\chocolatey" -Recurse -Force 60 | Remove-Item -Path "$ITTFolder" -Recurse -Force 61 | 62 | 63 | $Install_result = Install-App -Source $itt.PackgeManager -Name $App.Name -Choco $App.Choco -Scoop $App.Scoop -Winget $App.Winget -itt $App.ITT 64 | 65 | if ($Install_result.Success) { 66 | Set-Statusbar -Text "✔ $($Install_result.Message)" 67 | Add-Log -Message "$($Install_result.Message)" -Level "info" 68 | } else { 69 | Set-Statusbar -Text "✖ $($Install_result.Message)" 70 | Add-Log -Message "$($Install_result.Message)" -Level "ERROR" 71 | } 72 | 73 | # debug start 74 | if ($Debug) { Add-Log -Message "$($App.Choco) | $($App.Scoop) | $($App.Winget) | $($App.ITT)" -Level "debug" } 75 | # debug end 76 | } 77 | 78 | Finish -ListView "AppsListView" 79 | $itt.ProcessRunning = $false 80 | } 81 | } -------------------------------------------------------------------------------- /scripts/Invoke/Invoke-Toogle.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-Toggle { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles various system settings based on the provided debug string input. 6 | #> 7 | 8 | Param ([string]$debug) 9 | 10 | Switch -Wildcard ($debug) { 11 | 12 | "showfileextensions" { Invoke-ShowFile-Extensions $(Get-ToggleStatus showfileextensions) } 13 | "darkmode" { Invoke-DarkMode $(Get-ToggleStatus darkmode) } 14 | "showsuperhidden" { Invoke-ShowFile $(Get-ToggleStatus showsuperhidden) } 15 | "numlook" { Invoke-NumLock $(Get-ToggleStatus numlook) } 16 | "stickykeys" { Invoke-StickyKeys $(Get-ToggleStatus stickykeys) } 17 | "mouseacceleration" { Invoke-MouseAcceleration $(Get-ToggleStatus mouseacceleration) } 18 | "endtaskontaskbarwindows11" { Invoke-TaskbarEnd $(Get-ToggleStatus endtaskontaskbarwindows11) } 19 | "clearpagefileatshutdown" { Invoke-ClearPageFile $(Get-ToggleStatus clearpagefileatshutdown) } 20 | "autoendtasks" { Invoke-AutoEndTasks $(Get-ToggleStatus autoendtasks) } 21 | "performanceoptions" { Invoke-PerformanceOptions $(Get-ToggleStatus performanceoptions) } 22 | "launchtothispc" { Invoke-LaunchTo $(Get-ToggleStatus launchtothispc) } 23 | "disableautomaticdriverinstallation" { Invoke-DisableAutoDrivers $(Get-ToggleStatus disableautomaticdriverinstallation) } 24 | "AlwaysshowiconsneverThumbnail" { Invoke-ShowFile-Icons $(Get-ToggleStatus AlwaysshowiconsneverThumbnail) } 25 | "CoreIsolationMemoryIntegrity" { Invoke-Core-Isolation $(Get-ToggleStatus CoreIsolationMemoryIntegrity) } 26 | "WindowsSandbox" { Invoke-WindowsSandbox $(Get-ToggleStatus WindowsSandbox) } 27 | "WindowsSubsystemforLinux" { Invoke-WindowsSandbox $(Get-ToggleStatus WindowsSubsystemforLinux) } 28 | "HyperVVirtualization" { Invoke-HyperV $(Get-ToggleStatus HyperVVirtualization) } 29 | } 30 | # debug start 31 | Add-Log -Message $debug -Level "debug" 32 | # debug end 33 | } 34 | -------------------------------------------------------------------------------- /scripts/Settings/AutoEndTasks.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-AutoEndTasks { 2 | <# 3 | .SYNOPSIS 4 | Toggles the visibility of file extensions in Windows Explorer. 5 | .DESCRIPTION 6 | The `Invoke-ShowFile-Extensions` function updates the Windows registry to show or hide file extensions for known file types in Windows Explorer based on the `$Enabled` parameter. 7 | - If `$Enabled` is `$true`, file extensions are shown. 8 | - If `$Enabled` is `$false`, file extensions are hidden. 9 | .PARAMETER Enabled 10 | A boolean value that determines whether file extensions should be shown (`$true`) or hidden (`$false`). 11 | .EXAMPLE 12 | Invoke-ShowFile-Extensions -Enabled $true 13 | This example makes file extensions visible in Windows Explorer. 14 | .EXAMPLE 15 | Invoke-ShowFile-Extensions -Enabled $false 16 | This example hides file extensions in Windows Explorer. 17 | .NOTES 18 | - The function requires restarting Windows Explorer to apply the changes. 19 | - Administrative privileges might be required depending on system configuration. 20 | #> 21 | Param( 22 | $Enabled, 23 | [string]$Path = "HKCU:\Control Panel\Desktop", 24 | [string]$name = "AutoEndTasks" 25 | ) 26 | Try{ 27 | if ($Enabled -eq $false){ 28 | $value = 1 29 | Add-Log -Message "Enabled auto end tasks" -Level "info" 30 | } 31 | else { 32 | $value = 0 33 | Add-Log -Message "Disabled auto end tasks" -Level "info" 34 | } 35 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 36 | } 37 | Catch [System.Security.SecurityException] { 38 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 39 | } 40 | Catch [System.Management.Automation.ItemNotFoundException] { 41 | Write-Warning $psitem.Exception.ErrorRecord 42 | } 43 | Catch{ 44 | Write-Warning "Unable to set $Name due to unhandled exception" 45 | Write-Warning $psitem.Exception.StackTrace 46 | } 47 | } -------------------------------------------------------------------------------- /scripts/Settings/ChangeToThisPC.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-LaunchTo { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of hidden files and folders in Windows Explorer. 6 | #> 7 | 8 | Param( 9 | $Enabled, 10 | [string]$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", 11 | [string]$name = "LaunchTo" 12 | ) 13 | 14 | Try{ 15 | if ($Enabled -eq $false){ 16 | $value = 1 17 | Add-Log -Message "Launch to This PC" -Level "info" 18 | } 19 | else { 20 | $value = 2 21 | Add-Log -Message "Launch to Quick Access" -Level "info" 22 | } 23 | 24 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 25 | 26 | Refresh-Explorer 27 | } 28 | Catch [System.Security.SecurityException] { 29 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 30 | } 31 | Catch [System.Management.Automation.ItemNotFoundException] { 32 | Write-Warning $psitem.Exception.ErrorRecord 33 | } 34 | Catch{ 35 | Write-Warning "Unable to set $Name due to unhandled exception" 36 | Write-Warning $psitem.Exception.StackTrace 37 | } 38 | } -------------------------------------------------------------------------------- /scripts/Settings/ClearPageFile.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-ClearPageFile { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param( 9 | $Enabled, 10 | [string]$Path = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\\Memory Management", 11 | [string]$name = "ClearPageFileAtShutdown" 12 | ) 13 | Try { 14 | if ($Enabled -eq $false) { 15 | $value = 1 16 | Add-Log -Message "Show End Task on taskbar" -Level "info" 17 | } 18 | else { 19 | $value = 0 20 | Add-Log -Message "Disable End Task on taskbar" -Level "info" 21 | } 22 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 23 | } 24 | Catch [System.Security.SecurityException] { 25 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 26 | } 27 | Catch [System.Management.Automation.ItemNotFoundException] { 28 | Write-Warning $psitem.Exception.ErrorRecord 29 | } 30 | Catch { 31 | Write-Warning "Unable to set $Name due to unhandled exception" 32 | Write-Warning $psitem.Exception.StackTrace 33 | } 34 | } -------------------------------------------------------------------------------- /scripts/Settings/CoreIsolation.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-Core-Isolation { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of thmbnails in Windows Explorer. 6 | #> 7 | 8 | param ($Enabled, $Name = "Enabled", $Path = "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard") 9 | 10 | Try { 11 | if ($Enabled -eq $false) { 12 | $value = 1 13 | Add-Log -Message "This change require a restart" -Level "info" 14 | } 15 | else { 16 | $value = 0 17 | Add-Log -Message "This change require a restart" -Level "info" 18 | } 19 | Set-ItemProperty -Path $Path -Name $Name -Value $value -ErrorAction Stop 20 | Refresh-Explorer 21 | } 22 | Catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } 25 | Catch [System.Management.Automation.ItemNotFoundException] { 26 | Write-Warning $psitem.Exception.ErrorRecord 27 | } 28 | Catch { 29 | Write-Warning "Unable to set $Name due to unhandled exception" 30 | Write-Warning $psitem.Exception.StackTrace 31 | } 32 | } -------------------------------------------------------------------------------- /scripts/Settings/DarkMode.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-DarkMode { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the Windows theme between Dark Mode and Light Mode based on the provided setting. 6 | #> 7 | 8 | Param($DarkMoveEnabled) 9 | Try{ 10 | $Theme = (Get-ItemProperty -Path $itt.registryPath -Name "Theme").Theme 11 | if ($DarkMoveEnabled -eq $false){ 12 | $DarkMoveValue = 0 13 | Add-Log -Message "Dark Mode" -Level "info" 14 | if($Theme -eq "default") 15 | { 16 | $itt['window'].Resources.MergedDictionaries.Add($itt['window'].FindResource("Dark")) 17 | $itt.Theme = "Dark" 18 | } 19 | } 20 | else { 21 | $DarkMoveValue = 1 22 | Add-Log -Message "Light Mode" -Level "info" 23 | if($Theme -eq "default") 24 | { 25 | $itt['window'].Resources.MergedDictionaries.Add($itt['window'].FindResource("Light")) 26 | $itt.Theme = "Light" 27 | } 28 | } 29 | $Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" 30 | Set-ItemProperty -Path $Path -Name AppsUseLightTheme -Value $DarkMoveValue 31 | Set-ItemProperty -Path $Path -Name SystemUsesLightTheme -Value $DarkMoveValue 32 | } 33 | Catch [System.Security.SecurityException] { 34 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 35 | } 36 | Catch [System.Management.Automation.ItemNotFoundException] { 37 | Write-Warning $psitem.Exception.ErrorRecord 38 | } 39 | Catch{ 40 | Write-Warning "Unable to set $Name due to unhandled exception" 41 | Write-Warning $psitem.Exception.StackTrace 42 | } 43 | } -------------------------------------------------------------------------------- /scripts/Settings/Disable-DriversUpdate.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-DisableAutoDrivers { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param( 9 | $Enabled, 10 | [string]$Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching", 11 | [string]$name = "SearchOrderConfig" 12 | ) 13 | Try{ 14 | if ($Enabled -eq $false){ 15 | $value = 1 16 | Add-Log -Message "Enabled auto drivers update" -Level "info" 17 | } 18 | else { 19 | $value = 0 20 | Add-Log -Message "Disabled auto drivers update" -Level "info" 21 | } 22 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 23 | } 24 | Catch [System.Security.SecurityException] { 25 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 26 | } 27 | Catch [System.Management.Automation.ItemNotFoundException] { 28 | Write-Warning $psitem.Exception.ErrorRecord 29 | } 30 | Catch{ 31 | Write-Warning "Unable to set $Name due to unhandled exception" 32 | Write-Warning $psitem.Exception.StackTrace 33 | } 34 | } -------------------------------------------------------------------------------- /scripts/Settings/HyperV.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-HyperV { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | 10 | Try{ 11 | if ($Enabled -eq $false){ 12 | Add-Log -Message "HyperV disabled" -Level "info" 13 | dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart 14 | } 15 | else { 16 | Add-Log -Message "HyperV enabled" -Level "info" 17 | dism.exe /online /disable-feature /featurename:Microsoft-Hyper-V-All /norestart 18 | } 19 | } 20 | 21 | Catch [System.Security.SecurityException] { 22 | Write-Warning "Unable to set HyperV due to a Security Exception" 23 | } 24 | } -------------------------------------------------------------------------------- /scripts/Settings/MouseAcceleration.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-MouseAcceleration { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles mouse acceleration settings on or off. 6 | #> 7 | 8 | param ( 9 | $Mouse, 10 | $Speed = 0, 11 | $Threshold1 = 0, 12 | $Threshold2 = 0, 13 | [string]$Path = "HKCU:\Control Panel\Mouse" 14 | ) 15 | try { 16 | if($Mouse -eq $false) 17 | { 18 | Add-Log -Message "Mouse Acceleration" -Level "info" 19 | $Speed = 1 20 | $Threshold1 = 6 21 | $Threshold2 = 10 22 | }else { 23 | $Speed = 0 24 | $Threshold1 = 0 25 | $Threshold2 = 0 26 | Add-Log -Message "Mouse Acceleration" -Level "info" 27 | } 28 | Set-ItemProperty -Path $Path -Name MouseSpeed -Value $Speed 29 | Set-ItemProperty -Path $Path -Name MouseThreshold1 -Value $Threshold1 30 | Set-ItemProperty -Path $Path -Name MouseThreshold2 -Value $Threshold2 31 | } 32 | catch { 33 | Add-Log -Message "Unable set valuse" -LEVEL "ERROR" 34 | } 35 | } -------------------------------------------------------------------------------- /scripts/Settings/NumLock.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-NumLock { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the Num Lock state on the system by modifying registry settings. 6 | #> 7 | 8 | param( 9 | [Parameter(Mandatory = $true)] 10 | [bool]$Enabled 11 | ) 12 | try { 13 | if ($Enabled -eq $false) 14 | { 15 | Add-Log -Message "Numlock Enabled" -Level "info" 16 | $value = 2 17 | } 18 | else 19 | { 20 | Add-Log -Message "Numlock Disabled" -Level "info" 21 | $value = 0 22 | } 23 | New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction Stop 24 | $Path = "HKU:\.Default\Control Panel\Keyboard" 25 | $Path2 = "HKCU:\Control Panel\Keyboard" 26 | Set-ItemProperty -Path $Path -Name InitialKeyboardIndicators -Value $value -ErrorAction Stop 27 | Set-ItemProperty -Path $Path2 -Name InitialKeyboardIndicators -Value $value -ErrorAction Stop 28 | } 29 | catch { 30 | Write-Warning "An error occurred: $($_.Exception.Message)" 31 | } 32 | } -------------------------------------------------------------------------------- /scripts/Settings/PerformanceOptions.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-PerformanceOptions { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param( 9 | $Enabled, 10 | [string]$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects", 11 | [string]$name = "VisualFXSetting" 12 | ) 13 | Try{ 14 | if ($Enabled -eq $false){ 15 | $value = 2 16 | Add-Log -Message "Enabled auto end tasks" -Level "info" 17 | } 18 | else { 19 | $value = 0 20 | Add-Log -Message "Disabled auto end tasks" -Level "info" 21 | } 22 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 23 | Refresh-Explorer 24 | } 25 | Catch [System.Security.SecurityException] { 26 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 27 | } 28 | Catch [System.Management.Automation.ItemNotFoundException] { 29 | Write-Warning $psitem.Exception.ErrorRecord 30 | } 31 | Catch{ 32 | Write-Warning "Unable to set $Name due to unhandled exception" 33 | Write-Warning $psitem.Exception.StackTrace 34 | } 35 | } -------------------------------------------------------------------------------- /scripts/Settings/Show-HiddenItems.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-ShowFile { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of hidden files and folders in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | Try { 10 | if ($Enabled -eq $false) 11 | { 12 | $value = 1 13 | Add-Log -Message "Show hidden files , folders etc.." -Level "info" 14 | } 15 | else 16 | { 17 | $value = 2 18 | Add-Log -Message "Don't Show hidden files , folders etc.." -Level "info" 19 | } 20 | $hiddenItemsKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 21 | # Set registry values to show or hide hidden items 22 | Set-ItemProperty -Path $hiddenItemsKey -Name Hidden -Value $value 23 | Set-ItemProperty -Path $hiddenItemsKey -Name ShowSuperHidden -Value $value 24 | Refresh-Explorer 25 | } 26 | Catch [System.Security.SecurityException] { 27 | Write-Warning "Unable to set registry keys due to a Security Exception" 28 | } 29 | Catch [System.Management.Automation.ItemNotFoundException] { 30 | Write-Warning $psitem.Exception.ErrorRecord 31 | } 32 | Catch { 33 | Write-Warning "Unable to set registry keys due to unhandled exception" 34 | Write-Warning $psitem.Exception.StackTrace 35 | } 36 | } -------------------------------------------------------------------------------- /scripts/Settings/ShowExt.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-ShowFile-Extensions { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | Try{ 10 | if ($Enabled -eq $false){ 11 | $value = 0 12 | Add-Log -Message "Hidden extensions" -Level "info" 13 | } 14 | else { 15 | $value = 1 16 | Add-Log -Message "Hidden extensions" -Level "info" 17 | } 18 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 19 | Set-ItemProperty -Path $Path -Name HideFileExt -Value $value 20 | Refresh-Explorer 21 | } 22 | Catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } 25 | Catch [System.Management.Automation.ItemNotFoundException] { 26 | Write-Warning $psitem.Exception.ErrorRecord 27 | } 28 | Catch{ 29 | Write-Warning "Unable to set $Name due to unhandled exception" 30 | Write-Warning $psitem.Exception.StackTrace 31 | } 32 | } -------------------------------------------------------------------------------- /scripts/Settings/ShowFile-Icons.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-ShowFile-Icons { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of thmbnails in Windows Explorer. 6 | #> 7 | 8 | param ($Enabled, $Name = "IconsOnly", $Path = "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced") 9 | 10 | Try { 11 | if ($Enabled -eq $false) { 12 | $value = 1 13 | Add-Log -Message "ON" -Level "info" 14 | } 15 | else { 16 | $value = 0 17 | Add-Log -Message "OFF" -Level "info" 18 | } 19 | Set-ItemProperty -Path $Path -Name $Name -Value $value -ErrorAction Stop 20 | Refresh-Explorer 21 | } 22 | Catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } 25 | Catch [System.Management.Automation.ItemNotFoundException] { 26 | Write-Warning $psitem.Exception.ErrorRecord 27 | } 28 | Catch { 29 | Write-Warning "Unable to set $Name due to unhandled exception" 30 | Write-Warning $psitem.Exception.StackTrace 31 | } 32 | } -------------------------------------------------------------------------------- /scripts/Settings/ShowTaskbarEnd.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-TaskbarEnd { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | Try{ 10 | if ($Enabled -eq $false){ 11 | $value = 1 12 | Add-Log -Message "Show End Task on taskbar" -Level "info" 13 | } 14 | else { 15 | $value = 0 16 | Add-Log -Message "Disable End Task on taskbar" -Level "info" 17 | } 18 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings\" 19 | $name = "TaskbarEndTask" 20 | if (-not (Test-Path $path)) { 21 | New-Item -Path $path -Force | Out-Null 22 | New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null 23 | }else { 24 | Set-ItemProperty -Path $Path -Name $name -Value $value -ErrorAction Stop 25 | Refresh-Explorer 26 | Add-Log -Message "This Setting require a restart" -Level "INFO" 27 | } 28 | } 29 | Catch [System.Security.SecurityException] { 30 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 31 | } 32 | Catch [System.Management.Automation.ItemNotFoundException] { 33 | Write-Warning $psitem.Exception.ErrorRecord 34 | } 35 | Catch{ 36 | Write-Warning "Unable to set $Name due to unhandled exception" 37 | Write-Warning $psitem.Exception.StackTrace 38 | } 39 | } -------------------------------------------------------------------------------- /scripts/Settings/StickyKeys.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-StickyKeys { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles Sticky Keys functionality in Windows. 6 | #> 7 | 8 | Param($Enabled) 9 | Try { 10 | if ($Enabled -eq $false){ 11 | $value = 510 12 | $value2 = 510 13 | Add-Log -Message "Sticky Keys" -Level "info" 14 | } 15 | else { 16 | $value = 58 17 | $value2 = 122 18 | Add-Log -Message "Sticky Keys" -Level "info" 19 | } 20 | $Path = "HKCU:\Control Panel\Accessibility\StickyKeys" 21 | $Path2 = "HKCU:\Control Panel\Accessibility\Keyboard Response" 22 | Set-ItemProperty -Path $Path -Name Flags -Value $value 23 | Set-ItemProperty -Path $Path2 -Name Flags -Value $value2 24 | Refresh-Explorer 25 | Add-Log -Message "This Setting require a restart" -Level "INFO" 26 | } 27 | Catch [System.Security.SecurityException] { 28 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 29 | } 30 | Catch{ 31 | Write-Warning "Unable to set $Name due to unhandled exception" 32 | } 33 | } -------------------------------------------------------------------------------- /scripts/Settings/WSL.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WSL { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | 10 | Try{ 11 | if ($Enabled -eq $false){ 12 | Add-Log -Message "WSL2 disabled" -Level "info" 13 | dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart 14 | dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart 15 | } 16 | else { 17 | Add-Log -Message "WSL2 enabled" -Level "info" 18 | dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 19 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 20 | } 21 | } 22 | 23 | Catch [System.Security.SecurityException] { 24 | Write-Warning "Unable to set WSL2 due to a Security Exception" 25 | } 26 | } -------------------------------------------------------------------------------- /scripts/Settings/WindowsSandbox.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WindowsSandbox { 2 | 3 | <# 4 | .SYNOPSIS 5 | Toggles the visibility of file extensions in Windows Explorer. 6 | #> 7 | 8 | Param($Enabled) 9 | 10 | Try{ 11 | if ($Enabled -eq $false){ 12 | Add-Log -Message "Sandbox disabled" -Level "info" 13 | Dism /online /Disable-Feature /FeatureName:"Containers-DisposableClientVM" 14 | } 15 | else { 16 | Add-Log -Message "Sandbox enabled" -Level "info" 17 | Dism /online /Enable-Feature /FeatureName:"Containers-DisposableClientVM" -All 18 | } 19 | } 20 | Catch [System.Security.SecurityException] { 21 | Write-Warning "Unable to set Windows Sandbox due to a Security Exception" 22 | } 23 | } -------------------------------------------------------------------------------- /scripts/UI/About-Dev.ps1: -------------------------------------------------------------------------------- 1 | function About { 2 | # init child window 3 | [xml]$about = $AboutWindowXaml 4 | $childWindowReader = (New-Object System.Xml.XmlNodeReader $about) 5 | $itt.about = [Windows.Markup.XamlReader]::Load($childWindowReader) 6 | $itt.about.Add_PreViewKeyDown({ if ($_.Key -eq "Escape") { $itt.about.Close() } }) 7 | # Get main style theme 8 | $itt['about'].Resources.MergedDictionaries.Clear() 9 | $itt["about"].Resources.MergedDictionaries.Add($itt["window"].FindResource($itt.Theme)) 10 | # # Set Events on Click 11 | $itt.about.FindName('ver').Text = "Last update $($itt.lastupdate)" 12 | $itt.about.FindName("telegram").Add_Click({ Start-Process("https://t.me/emadadel4") }) 13 | $itt.about.FindName("github").Add_Click({ Start-Process("https://github.com/emadadel4/itt") }) 14 | $itt.about.FindName("blog").Add_Click({ Start-Process("https://emadadel4.github.io") }) 15 | $itt.about.FindName("yt").Add_Click({ Start-Process("https://www.youtube.com/@emadadel4") }) 16 | $itt.about.FindName("coffee").Add_Click({ Start-Process("https://buymeacoffee.com/emadadel") }) 17 | # Set data context language 18 | $itt.about.DataContext = $itt.database.locales.Controls.$($itt.Language) 19 | # Show window 20 | $itt.about.ShowDialog() | Out-Null 21 | } -------------------------------------------------------------------------------- /scripts/UI/Create-Shortcut.ps1: -------------------------------------------------------------------------------- 1 | function ITTShortcut { 2 | 3 | <# 4 | .SYNOPSIS 5 | Creates a desktop shortcut. 6 | #> 7 | 8 | # URL of the icon file 9 | # Determine the path in AppData\Roaming 10 | $appDataPath = "$env:ProgramData/itt" 11 | $localIconPath = Join-Path -Path $appDataPath -ChildPath "icon.ico" 12 | # Download the icon file 13 | Invoke-WebRequest -Uri $itt.icon -OutFile $localIconPath 14 | # Create a shortcut object 15 | $Shortcut = (New-Object -ComObject WScript.Shell).CreateShortcut("$([Environment]::GetFolderPath('Desktop'))\ITT Emad Adel.lnk") 16 | # Set the target path to PowerShell with your command 17 | $Shortcut.TargetPath = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" 18 | $Shortcut.Arguments = "-ExecutionPolicy Bypass -NoProfile -Command ""irm raw.githubusercontent.com/emadadel4/ITT/main/itt.ps1 | iex""" 19 | # Set the icon path to the downloaded icon file in AppData\Roaming 20 | $Shortcut.IconLocation = "$localIconPath" 21 | # Save the shortcut 22 | $Shortcut.Save() 23 | } -------------------------------------------------------------------------------- /scripts/UI/Filter-Category.ps1: -------------------------------------------------------------------------------- 1 | function Search { 2 | 3 | <# 4 | .SYNOPSIS 5 | Filters items in the current list view based on the search input. 6 | #> 7 | 8 | $filter = $itt.searchInput.Text.ToLower() -replace '[^\p{L}\p{N}]', '' 9 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt['window'].FindName($itt.currentList).Items) 10 | 11 | $collectionView.Filter = { 12 | param ($item) 13 | 14 | # Ensure item structure is valid 15 | if ($item.Children.Count -lt 1 -or $item.Children[0].Children.Count -lt 1) { 16 | return $false 17 | } 18 | 19 | # Search within first-level child content 20 | return $item.Children[0].Children[0].Content -match $filter -or $item.Children[0].Children[0].Tag -match $filter 21 | } 22 | } 23 | function FilterByCat { 24 | 25 | param ($Cat) 26 | 27 | $collectionView = [System.Windows.Data.CollectionViewSource]::GetDefaultView($itt['window'].FindName($itt.CurrentList).Items) 28 | 29 | if ($Cat -eq "All" -or [string]::IsNullOrWhiteSpace($Cat)) { 30 | 31 | $collectionView.Filter = $null 32 | } 33 | else { 34 | $collectionView.Filter = { 35 | param ($item) 36 | 37 | $tags = $item.Children[0].Children[0].Tag -split "\|" 38 | 39 | return $tags[4] -imatch $Cat 40 | } 41 | } 42 | 43 | $collectionView.Refresh() 44 | } -------------------------------------------------------------------------------- /scripts/UI/Keyboard-Shortcuts .ps1: -------------------------------------------------------------------------------- 1 | $KeyEvents = { 2 | if ($itt.ProcessRunning) { return } 3 | 4 | $modifiers = $_.KeyboardDevice.Modifiers 5 | $key = $_.Key 6 | 7 | switch ($key) { 8 | "Enter" { 9 | if ($itt.currentList -eq "appslist") { Invoke-Install } 10 | elseif ($itt.currentList -eq "tweakslist") { Invoke-Apply } 11 | } 12 | "S" { 13 | if ($modifiers -eq "Ctrl") { 14 | if ($itt.currentList -eq "appslist") { Invoke-Install } 15 | elseif ($itt.currentList -eq "tweakslist") { Invoke-Apply } 16 | } 17 | elseif ($modifiers -eq "Shift") { Save-File } 18 | } 19 | "D" { if ($modifiers -eq "Shift") { Get-file } } 20 | "M" { 21 | if ($modifiers -eq "Shift") { 22 | $global:toggleState = -not $global:toggleState 23 | if ($global:toggleState) { Manage-Music -action "SetVolume" -volume 100 } 24 | else { Manage-Music -action "SetVolume" -volume 0 } 25 | } 26 | } 27 | # Easter Egg: Uncomment to enable functionality 28 | # "N" { if ($modifiers -eq "Ctrl") { $itt.mediaPlayer.controls.next() } } 29 | # "B" { if ($modifiers -eq "Ctrl") { $itt.mediaPlayer.controls.previous() } } 30 | "Q" { 31 | if ($modifiers -eq "Ctrl") { 32 | $itt.TabControl.SelectedItem = $itt.TabControl.Items | Where-Object { $_.Name -eq "apps" } 33 | } 34 | elseif ($modifiers -eq "Shift") { RestorePoint } 35 | } 36 | "W" { if ($modifiers -eq "Ctrl") { $itt.TabControl.SelectedItem = $itt.TabControl.Items | Where-Object { $_.Name -eq "tweeksTab" } } } 37 | "E" { if ($modifiers -eq "Ctrl") { $itt.TabControl.SelectedItem = $itt.TabControl.Items | Where-Object { $_.Name -eq "SettingsTab" } } } 38 | "I" { 39 | if ($modifiers -eq "Ctrl") { About } 40 | elseif ($modifiers -eq "Shift") { ITTShortcut } 41 | } 42 | "C" { if ($modifiers -eq "Shift") { Start-Process explorer.exe $env:ProgramData\chocolatey\lib } } 43 | "T" { if ($modifiers -eq "Shift") { Start-Process explorer.exe $env:ProgramData\itt } } 44 | "G" { if ($modifiers -eq "Ctrl") { $this.Close() } } 45 | "F" { 46 | if ($modifiers -eq "Ctrl") { 47 | if ($itt.SearchInput.IsFocused) { 48 | $itt.SearchInput.MoveFocus((New-Object System.Windows.Input.TraversalRequest([System.Windows.Input.FocusNavigationDirection]::Next))) 49 | } else { 50 | $itt.SearchInput.Focus() 51 | } 52 | } 53 | } 54 | "A" { 55 | if ($modifiers -eq "Ctrl" -and ($itt.CurrentCategory -eq "AppsCategory" -or $itt.CurrentCategory -eq "TwaeksCategory")) { 56 | $itt["window"].FindName($itt.CurrentCategory).SelectedIndex = 0 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /scripts/UI/Message.ps1: -------------------------------------------------------------------------------- 1 | function Message { 2 | 3 | <# 4 | .SYNOPSIS 5 | Displays a localized message box to the user with a specified icon. 6 | .EXAMPLE 7 | Message -key "Welcome" -icon "Warning" 8 | .EXAMPLE 2 9 | Message -NoneKey "This normal text not based on locales" -icon "Warning" 10 | 11 | #> 12 | 13 | param([string]$key,[string]$NoneKey,[string]$title = "ITT",[string]$icon,[string]$action) 14 | 15 | $iconMap = @{ info = "Information"; ask = "Question"; warning = "Warning"; default = "Question" } 16 | $actionMap = @{ YesNo = "YesNo"; OK = "OK"; default = "OK" } 17 | $icon = if ($iconMap.ContainsKey($icon.ToLower())) { $iconMap[$icon.ToLower()] } else { $iconMap.default } 18 | $action = if ($actionMap.ContainsKey($action.ToLower())) { $actionMap[$action.ToLower()] } else { $actionMap.default } 19 | $msg = if ([string]::IsNullOrWhiteSpace($key)) { $NoneKey } else { $itt.database.locales.Controls.$($itt.Language).$key } 20 | [System.Windows.MessageBox]::Show($msg, $title, [System.Windows.MessageBoxButton]::$action, [System.Windows.MessageBoxImage]::$icon) 21 | } -------------------------------------------------------------------------------- /scripts/UI/Notify.ps1: -------------------------------------------------------------------------------- 1 | function Notify { 2 | 3 | <# 4 | .SYNOPSIS 5 | Displays a balloon tip notification in the system tray with a customizable title, message, icon, and duration. 6 | .EXAMPLE 7 | Notify -title "ITT" -msg "Hello world!" -icon "Information" -time 3000 8 | Displays a notification balloon with the title "ITT" and the message "Hello world!" with an informational icon for 3 seconds. 9 | #> 10 | 11 | param( 12 | [string]$title, 13 | [string]$msg, 14 | [string]$icon, 15 | [Int32]$time 16 | ) 17 | $notification = New-Object System.Windows.Forms.NotifyIcon 18 | $notification.Icon = [System.Drawing.SystemIcons]::Information 19 | $notification.BalloonTipIcon = $icon 20 | $notification.BalloonTipText = $msg 21 | $notification.BalloonTipTitle = $title 22 | $notification.Visible = $true 23 | $notification.ShowBalloonTip($time) 24 | # Clean up resources 25 | $notification.Dispose() 26 | } -------------------------------------------------------------------------------- /scripts/UI/Play-Music.ps1: -------------------------------------------------------------------------------- 1 | function Manage-Music { 2 | 3 | <# 4 | .SYNOPSIS 5 | Manages music playback, volume 6 | #> 7 | 8 | param([string]$action, [int]$volume = 0) 9 | 10 | switch ($action) { 11 | "SetVolume" { 12 | $itt.mediaPlayer.settings.volume = $volume 13 | $global:toggleState = ($volume -ne 0) 14 | Set-ItemProperty -Path $itt.registryPath -Name "Music" -Value "$volume" -Force 15 | $itt["window"].title = "Install Tweaks Tool " + @("🔊", "🔈")[$volume -eq 0] 16 | } 17 | "StopAll" { 18 | $itt.mediaPlayer.controls.stop() 19 | $itt.mediaPlayer = $null 20 | $itt.runspace.Dispose() 21 | $itt.runspace.Close() 22 | $script:powershell.Dispose() 23 | $script:powershell.Stop() 24 | [System.GC]::Collect() 25 | [System.GC]::WaitForPendingFinalizers() 26 | } 27 | default { Write-Host "Invalid action. Use 'SetVolume' or 'StopAll'." } 28 | } 29 | } -------------------------------------------------------------------------------- /scripts/UI/Set-Langusege.ps1: -------------------------------------------------------------------------------- 1 | function System-Default { 2 | 3 | try { 4 | 5 | $dc = $itt.database.locales.Controls.$shortCulture 6 | 7 | if (-not $dc -or [string]::IsNullOrWhiteSpace($dc)) { 8 | Set-Statusbar -Text "Your default system language is not supported yet, fallback to English" 9 | $dc = $itt.database.locales.Controls.en 10 | } 11 | 12 | $itt["window"].DataContext = $dc 13 | 14 | Set-ItemProperty -Path $itt.registryPath -Name "locales" -Value "default" -Force 15 | } 16 | catch { 17 | Write-Host "An error occurred: $_" 18 | } 19 | } 20 | 21 | function Set-Language { 22 | param ([string]$lang) 23 | if ($lang -eq "default") { System-Default } 24 | else { 25 | $itt.Language = $lang 26 | $itt["window"].DataContext = $itt.database.locales.Controls.$($itt.Language) 27 | Set-ItemProperty -Path $itt.registryPath -Name "locales" -Value $lang -Force 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /scripts/UI/Set-Theme.ps1: -------------------------------------------------------------------------------- 1 | function SwitchToSystem { 2 | 3 | <# 4 | .SYNOPSIS 5 | Functions to manage application theme settings. 6 | 7 | .DESCRIPTION 8 | SwitchToSystem resets the theme to the system default and applies the appropriate resource. 9 | Set-Theme applies a user-defined theme and updates the registry accordingly. 10 | #> 11 | 12 | try { 13 | $appsTheme = Get-ItemPropertyValue -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" -Name "AppsUseLightTheme" 14 | $theme = if ($AppsTheme -eq "0") { "Dark" } elseif ($AppsTheme -eq "1") { "Light" } else { Write-Host "Unknown theme: $AppsTheme"; return } 15 | $itt['window'].Resources.MergedDictionaries.Add($itt['window'].FindResource($theme)) 16 | Set-ItemProperty -Path $itt.registryPath -Name "Theme" -Value "default" -Force 17 | $itt.Theme = $Theme 18 | } 19 | catch { Write-Host "Error: $_" } 20 | } 21 | 22 | function Set-Theme { 23 | param ([string]$Theme) 24 | try { 25 | $itt['window'].Resources.MergedDictionaries.Clear() 26 | $itt['window'].Resources.MergedDictionaries.Add($itt['window'].FindResource($Theme)) 27 | Set-ItemProperty -Path $itt.registryPath -Name "Theme" -Value $Theme -Force 28 | $itt.Theme = $Theme 29 | } 30 | catch { Write-Host "Error: $_" } 31 | } -------------------------------------------------------------------------------- /scripts/UI/Show-Event.ps1: -------------------------------------------------------------------------------- 1 | function Show-Event { 2 | 3 | [xml]$event = $EventWindowXaml 4 | $itt.event = [Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $event)) 5 | $itt.event.Resources.MergedDictionaries.Add($itt["window"].FindResource($itt.Theme)) 6 | 7 | $itt.event.FindName('closebtn').add_MouseLeftButtonDown({ $itt.event.Close() }) 8 | $itt.event.FindName('DisablePopup').add_MouseLeftButtonDown({ Set-ItemProperty -Path $itt.registryPath -Name "PopupWindow" -Value 1 -Force; $itt.event.Close() }) 9 | 10 | #{title} 11 | #{contorlshandler} 12 | 13 | # Calculate timestamp 14 | $storedDate = [datetime]::ParseExact($itt.event.FindName('date').Text, 'MM/dd/yyyy', $null) 15 | $daysElapsed = (Get-Date) - $storedDate 16 | if (($daysElapsed.Days -ge 1) -and (($itt.PopupWindow -ne "0") -or $i)) {return} 17 | $itt.event.Add_PreViewKeyDown({ if ($_.Key -eq "Escape") { $itt.event.Close() } }) 18 | if ($daysElapsed.Days -lt 1){$itt.event.FindName('DisablePopup').Visibility = 'Hidden'} 19 | $itt.event.ShowDialog() | Out-Null 20 | 21 | } -------------------------------------------------------------------------------- /scripts/UI/Statusbar.ps1: -------------------------------------------------------------------------------- 1 | function Set-Statusbar { 2 | 3 | <# 4 | .SYNOPSIS 5 | Set Statusbar text 6 | #> 7 | 8 | param ([string]$Text) 9 | $itt.Statusbar.Dispatcher.Invoke([Action]{$itt.Statusbar.Text = $Text }) 10 | } -------------------------------------------------------------------------------- /scripts/UI/Update-UI.ps1: -------------------------------------------------------------------------------- 1 | function UpdateUI { 2 | 3 | <# 4 | .SYNOPSIS 5 | Update button's content width, text. 6 | #> 7 | 8 | param([string]$Button,[string]$Content,[string]$Width = "140") 9 | 10 | $itt['window'].Dispatcher.Invoke([Action]{ 11 | $itt.$Button.Width = $Width 12 | $itt.$Button.Content = $itt.database.locales.Controls.$($itt.Language).$Content 13 | }) 14 | } -------------------------------------------------------------------------------- /scripts/UI/detected-gpu.ps1: -------------------------------------------------------------------------------- 1 | function Find-Driver { 2 | 3 | $gpuInfo = Get-CimInstance Win32_VideoController | Where-Object { $_.Status -eq "OK" } | Select-Object -First 1 -ExpandProperty Name 4 | $encodedName = [System.Web.HttpUtility]::UrlEncode($gpuInfo) -replace '\+', '%20' 5 | 6 | if (-not $gpuInfo) { 7 | Write-Host "No GPU detected" 8 | } 9 | 10 | 11 | if ($gpuInfo -match "NVIDIA") { 12 | Start-Process "https://www.nvidia.com/en-us/drivers/" 13 | } 14 | elseif ($gpuInfo -match "AMD" -or $gpuInfo -match "Radeon") { 15 | Start-Process "https://www.amd.com/en/support/download/drivers.html" 16 | } 17 | elseif ($gpuInfo -match "Intel") { 18 | Start-Process "https://www.intel.com/content/www/us/en/search.html?ws=idsa-suggested#q=$encodedName&sort=relevancy&f:@tabfilter=[Downloads]" 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /static/Database/OST.json: -------------------------------------------------------------------------------- 1 | { 2 | "Tracks": [ 3 | { 4 | "name": "Further - Far cry-3", 5 | "url": "https://eta.vgmtreasurechest.com/soundtracks/far-cry-3/iqgdbfrhtw/17.%20Further%20%28feat.%20Serena%20McKinney%29.mp3" 6 | }, 7 | { 8 | "name": "Grand Theft Auto 4 Theme Song", 9 | "url": "https://emadadel4.github.io/sounds/Michael Hunter - Soviet Connection — the Theme from Grand Theft Auto IV.mp3" 10 | }, 11 | { 12 | "name": "Mass Effect-3 - End of Cycle", 13 | "url": "https://vgmsite.com/soundtracks/mass-effect-3-extended-cut/eyophevp/02.%20An%20End%2C%20Once%20And%20For%20All%20%28Extended%20Cut%29.mp3" 14 | }, 15 | { 16 | "name": "Intro (Somerville Original Soundtrack)", 17 | "url": "https://kappa.vgmsite.com/soundtracks/somerville-2022/naszqoqnhr/01.%20Intro%20%28Somerville%20Original%20Soundtrack%29%20%28feat.%20Dominique%20Charpentier%29.mp3" 18 | }, 19 | { 20 | "name": "Kate Chruscicka - Requiem For A Dream", 21 | "url": "https://emadadel4.github.io/sounds/Kate Chruscicka - Requiem for a Dream.mp3" 22 | }, 23 | { 24 | "name": "Hans Zimmer - Time", 25 | "url": "https://emadadel4.github.io/sounds/Hans Zimmer - Time.mp3" 26 | }, 27 | { 28 | "name": "Westworld - Exit Music (For a Film)", 29 | "url": "https://emadadel4.github.io/sounds/Ramin Djawadi - Exit Music (For a Film).mp3" 30 | }, 31 | { 32 | "name": "Homelander in Hallway", 33 | "url": "https://emadadel4.github.io/sounds/Homelander in Hallway.mp3" 34 | }, 35 | { 36 | "name": "Grand Theft Auto San Andreas Official Theme", 37 | "url": "https://emadadel4.github.io/sounds/Grand Theft Auto_ San Andreas Official Theme Song.mp3" 38 | }, 39 | { 40 | "name": "1.0_8-whatsyourask.m4p", 41 | "url": "https://emadadel4.github.io/sounds/1.0_8-whatsyourask.m4p.mp3" 42 | }, 43 | { 44 | "name": "Ludovico Einaudi - Experience", 45 | "url": "https://emadadel4.github.io/sounds/Ludovico Einaudi, Daniel Hope, I Virtuosi Italiani - Experience.mp3" 46 | }, 47 | { 48 | "name": "Hans Zimmer - No Time for Caution ", 49 | "url": "https://emadadel4.github.io/sounds/Hans Zimmer - No Time for Caution.mp3" 50 | }, 51 | { 52 | "name": "Cyberpunk - Rebel Path", 53 | "url": "https://eta.vgmtreasurechest.com/soundtracks/cyberpunk-2077-original-game-score/zalnnwrhwh/1-03%20The%20Rebel%20Path.mp3" 54 | }, 55 | { 56 | "name": "Assassin Creed II - Ezio's Family", 57 | "url": "https://emadadel4.github.io/sounds/Jesper Kyd, Assassin's Creed - Ezio's Family.mp3" 58 | }, 59 | { 60 | "name": "Little Nightmares II (Main Theme)", 61 | "url": "https://emadadel4.github.io/sounds/Little Nightmares II (Main Theme).mp3" 62 | }, 63 | { 64 | "name": "The Leftovers The Departure Suite", 65 | "url": "https://emadadel4.github.io/sounds/The Leftovers The Departure Suite.mp3" 66 | }, 67 | { 68 | "name": "Hollow Knight", 69 | "url": "https://emadadel4.github.io/sounds/Hollow Knight.mp3" 70 | }, 71 | { 72 | "name": "Max Payne 3 - Theme Variation 02", 73 | "url": "https://vgmsite.com/soundtracks/max-payne-3-macos-ps3-windows-xbox-360-gamerip-2012/lksuleoehs/111.%20Theme%20Variation%2002.mp3" 74 | }, 75 | { 76 | "name": "Max Payne 1 - Theme", 77 | "url": "https://kappa.vgmsite.com/soundtracks/max-payne-re-engineered-soundtrack-2001/rvcbkjxnwt/01.%20Max%20Payne%20Theme.mp3" 78 | }, 79 | { 80 | "name": "Zack Hemsey - The Way", 81 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Zack%20Hemsey%20-%20The%20Way.mp3" 82 | }, 83 | { 84 | "name": "Can't Fight City Halloween", 85 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Can't%20Fight%20City%20Halloween.mp3" 86 | }, 87 | { 88 | "name": "Dona Nobis Pacem 2", 89 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Dona%20Nobis%20Pacem%202.mp3" 90 | }, 91 | { 92 | "name": "Cold", 93 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Inner%20Demon.mp3" 94 | }, 95 | { 96 | "name": "Inner Demon", 97 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Cold.mp3" 98 | }, 99 | { 100 | "name": "Interstellar - Organ Variation", 101 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Organ%20Variation.mp3" 102 | }, 103 | { 104 | "name": "God, Please (Disco Elysium)", 105 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/God,%20Please%20(Disco%20Elysium).mp3" 106 | }, 107 | { 108 | "name": "Outlaws From The West", 109 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Outlaws%20From%20The%20West.mp3" 110 | }, 111 | { 112 | "name": "Alarm - Boys Noize", 113 | "url": "https://github.com/emadadel4/emadadel4.github.io/raw/refs/heads/main/static/sounds/Alarm%20-%20Boys%20Noize.mp3" 114 | } 115 | ], 116 | "Favorite": [ 117 | { 118 | "name": "Radiohead - Exit Music (For a Film)", 119 | "url": "https://archive.org/download/06-everything-in-its-right-place-live-in-france/OK%20Computer/04%20Exit%20Music%20%28For%20a%20Film%29.mp3" 120 | }, 121 | { 122 | "name": "Billie Eilish - No Time To Die", 123 | "url": "https://archive.org/download/06-everything-in-its-right-place-live-in-france/OK%20Computer/04%20Exit%20Music%20%28For%20a%20Film%29.mp3" 124 | }, 125 | { 126 | "name": "Imagine Dragons - Roots", 127 | "url": "https://archive.org/download/ImagineDragons_20190510_0456/Imagine%20Dragons%20-%20Roots.mp3" 128 | }, 129 | { 130 | "name": "Imagine Dragons - Believer", 131 | "url": "https://archive.org/download/bunchofimaginedragons/14%20Imagine%20Dragons%20-%20Believer.mp3" 132 | }, 133 | { 134 | "name": "Imagine Dragons - Thunder", 135 | "url": "https://archive.org/download/imaginedragonsmusicalbum/Imagine%20Dragons%20-%20Thunder.mp3" 136 | }, 137 | { 138 | "name": "Imagine Dragons - Birds", 139 | "url": "https://archive.org/download/bunchofimaginedragons/14%20Imagine%20Dragons%20-%20Birds.mp3" 140 | }, 141 | { 142 | "name": "Kxllswxtch - WASTE", 143 | "url": "https://archive.org/download/rock-playlist_202305/WASTE.mp3" 144 | }, 145 | { 146 | "name": "Imagine Dragons - Lonely", 147 | "url": "https://archive.org/download/discography-imagine-dragons/discography%20Imagine%20Dragons/MP3%20320%20Kbps/05Imagine%20Dragons%20-%20Mercury%20-%20Act%201/03%20Lonely.mp3" 148 | }, 149 | { 150 | "name": "Sharks - Imagine Dragons", 151 | "url": "https://archive.org/download/discography-imagine-dragons/discography%20Imagine%20Dragons/MP3%20320%20Kbps/06Imagine%20Dragons%20-%20Mercury%20-%20Act%202/03%20Sharks.mp3" 152 | }, 153 | { 154 | "name": "Roma - Cairokee", 155 | "url": "https://archive.org/download/Cairokee-Roma/07%20-%20Roma.mp3" 156 | }, 157 | { 158 | "name": "Sigrid - Everybody Knows", 159 | "url": "https://archive.org/download/justiceleagueflac/Danny%20Elfman%20-%20Justice%20League%20%28Original%20Motion%20Picture%20Soundtrack%29/01%20-%20Everybody%20Knows.mp3" 160 | } 161 | ], 162 | "Otobers": [ 163 | { 164 | "name": "محمد عساف - انا دمي فلسطيني", 165 | "url": "https://emadadel4.github.io/sounds/Falstiny.mp3" 166 | }, 167 | { 168 | "name": "تلك قضية - كايروكي", 169 | "url": "https://emadadel4.github.io/sounds/Telk Qadeya.mp3" 170 | }, 171 | { 172 | "name": "Rajieen", 173 | "url": "https://emadadel4.github.io/sounds/Rajieen.mp3" 174 | } 175 | ] 176 | } 177 | -------------------------------------------------------------------------------- /static/Database/Settings.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Name": "Show file extensions", 4 | "description": "Show file extensions in Windows displays the suffix at the end of file names (like .txt, .jpg, .exe) etc", 5 | "category": "Protection" 6 | }, 7 | { 8 | "Name": "Show Super Hidden", 9 | "description": "Show Super Hidden displays files and folders", 10 | "category": "Protection" 11 | }, 12 | { 13 | "Name": "Dark Mode", 14 | "description": "Dark Mode is a setting that changes the screen to darker colors, reducing eye strain and saving battery life on OLED screens", 15 | "category": "Personalize" 16 | }, 17 | { 18 | "Name": "NumLook", 19 | "description": "Toggle the Num Lock key state when your computer starts", 20 | "category": "Protection" 21 | }, 22 | { 23 | "Name": "Sticky Keys", 24 | "description": "Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities", 25 | "category": "Accessibility" 26 | }, 27 | { 28 | "Name": "Mouse Acceleration", 29 | "description": "Cursor movement is affected by the speed of your physical mouse movements", 30 | "category": "Accessibility" 31 | }, 32 | { 33 | "Name": "End Task On Taskbar Windows 11", 34 | "description": "End task when right clicking a program in the taskbar", 35 | "category": "Accessibility" 36 | }, 37 | { 38 | "Name": "Clear Page File At Shutdown", 39 | "description": "Removes sensitive data stored in virtual memory when the system shuts down", 40 | "category": "Storage " 41 | }, 42 | { 43 | "Name": "Auto End Tasks", 44 | "description": "Automatically end tasks that are not responding", 45 | "category": "Performance" 46 | }, 47 | { 48 | "Name": "Performance Options", 49 | "description": "Adjust for best performance", 50 | "category": "Performance" 51 | }, 52 | { 53 | "Name": "Launch To This PC", 54 | "description": "File Explorer open directly to This PC", 55 | "category": "Accessibility" 56 | }, 57 | { 58 | "Name": "Disable Automatic Driver Installation", 59 | "description": "Automatically downloading and installing drivers", 60 | "category": "Drivers" 61 | }, 62 | { 63 | "Name": "Always show icons never Thumbnail", 64 | "description": "Show icons in the file explorer instead of thumbnails", 65 | "category": "Performance" 66 | }, 67 | { 68 | "Name": "Core Isolation Memory Integrity", 69 | "description": "Core Isolation Memory Integrity", 70 | "category": "Security" 71 | }, 72 | { 73 | "Name": "Windows Sandbox", 74 | "description": "Windows Sandbox is a feature that allows you to run a sandboxed version of Windows", 75 | "category": "Features" 76 | }, 77 | { 78 | "Name": "Windows Subsystem for Linux", 79 | "description": "Windows Subsystem for Linux is an optional feature of Windows that allows Linux programs to run natively on Windows without the need for a separate virtual machine or dual booting", 80 | "category": "Features" 81 | }, 82 | { 83 | "Name": "HyperV Virtualization", 84 | "description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines", 85 | "category": "Features" 86 | } 87 | ] -------------------------------------------------------------------------------- /static/Icons/blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/blog.png -------------------------------------------------------------------------------- /static/Icons/done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/done.png -------------------------------------------------------------------------------- /static/Icons/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/error.png -------------------------------------------------------------------------------- /static/Icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/github.png -------------------------------------------------------------------------------- /static/Icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/icon.ico -------------------------------------------------------------------------------- /static/Icons/telegram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/telegram.png -------------------------------------------------------------------------------- /static/Icons/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Icons/youtube.png -------------------------------------------------------------------------------- /static/Images/coffee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/coffee.png -------------------------------------------------------------------------------- /static/Images/gitt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/gitt.gif -------------------------------------------------------------------------------- /static/Images/happy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/happy.jpg -------------------------------------------------------------------------------- /static/Images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/logo.png -------------------------------------------------------------------------------- /static/Images/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/ps.png -------------------------------------------------------------------------------- /static/Images/ps_flag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/ps_flag.jpg -------------------------------------------------------------------------------- /static/Images/text_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/text_logo.jpg -------------------------------------------------------------------------------- /static/Images/text_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/text_logo.png -------------------------------------------------------------------------------- /static/Images/themes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/themes.gif -------------------------------------------------------------------------------- /static/Images/themes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/themes.webp -------------------------------------------------------------------------------- /static/Images/thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/Images/thumbnail.jpg -------------------------------------------------------------------------------- /static/Themes/Colors.xaml: -------------------------------------------------------------------------------- 1 | 2 | {{CustomThemes}} 3 | 4 | -------------------------------------------------------------------------------- /static/files/start2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emadadel4/itt/2dcc35607e41695e0f965dc78ac236018d479f2a/static/files/start2.bin -------------------------------------------------------------------------------- /templates/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Ceasefire Now 4 | 5 |

6 | 7 |
8 | 9 |
10 | 11 | 12 | 13 | ## Install Tweaks Tool 14 | 15 | ITT (Install Tweaks Tool) included most Windows 10/11 Software and Windows Tweaks & Remove Bloatwares & Windows activation 16 | 17 | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fittools-7d9fe-default-rtdb.firebaseio.com%2Fmessage.json) 18 | #{last} 19 | ![Script size](https://img.shields.io/github/size/emadadel4/itt/itt.ps1?label=Script%20size) 20 | 21 | 22 | 23 | [![itt Community](https://img.shields.io/badge/Telegram%20-Join%20Community-26A5E4?logo=telegram)](https://t.me/ittcommunity) 24 | [![Discord](https://img.shields.io/badge/Discord-Join%20Community-5865F2?logo=discord&logoColor=white)](https://discord.gg/Twyz2Wd5fB) 25 | [![Reddit](https://img.shields.io/badge/Reddit-Join%20Community-FF4500?logo=reddit&logoColor=white)](https://www.reddit.com/r/ittea) 26 | 27 | [![Arabic](https://img.shields.io/badge/Arabic-red)](/locales/ar.csv) [![French](https://img.shields.io/badge/French-blue)](/locales/fr.csv) [![Turkish](https://img.shields.io/badge/Turkish-red)](/locales/tr.csv) [![Chinese](https://img.shields.io/badge/Chinese-red)](/locales/zh.csv) [![Korean](https://img.shields.io/badge/Korean-white)](/locales/ko.csv) [![German](https://img.shields.io/badge/German-red)](/locales/de.csv) [![Russian](https://img.shields.io/badge/Russian-blue)](/locales/ru.csv) [![Spanish](https://img.shields.io/badge/Spanish-red)](/locales/es.csv) [![Italian](https://img.shields.io/badge/Italian-green)](/locales/it.csv) [![Hindi](https://img.shields.io/badge/Hindi-orange)](/locales/hi.csv) 28 | 29 | ###### 📦 #{a} Apps • ⚙️ #{t} Tweaks • 🔧 #{s} Settings • 💬 #{q} Quote • 🎵 #{OST} Soundtrack • 🌐 #{loc} Localization 30 | 31 | [![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=1000¢er=true&vCenter=true&repeat=false&width=435&lines=Launch+Anytime+Anywhere!)](https://git.io/typing-svg) 32 | 33 |
34 | 35 |

36 | 37 | ![ITT](https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/static/Images/themes.webp) 38 | 39 |

40 | 41 |

Overview

42 | 43 | - **🚀 Automated Installation**: Say goodbye to manual software installations. ITT automates the process, saving you time and effort. 44 | - **⚙️ Windows Debloater**: Remove bloatware, boost performance, and customize Windows effortlessly with ITT. Optimize your system in minutes. 45 | - **👩‍💻 Developer-Friendly**: Easy-to-use and clear documentation to add a new app or tweaks as you like, you can create a new method to download apps. Be creative. How to Contribute or App Request 46 | - **🎵 Soundtracks**: Enjoy listening to best music from games and movies while downloading your programs. 47 | 48 |

⚡ Usage

49 | 50 |

On Windows 10/11:

51 |
    52 |
  1. Right-click on the Start menu.
  2. 53 |
  3. Choose "PowerShell" and paste any of the following commands:
  4. 54 |
55 | 56 | > [!CAUTION] 57 | > **LAUNCH THE SCRIPT ONLY USING OFFICIAL COMMANDS FROM THIS REPOSITORY.** 58 | > **IT'S NOT PORTABLE, SO DO NOT DOWNLOAD OR RUN IT FROM ELSEWHERE.** 59 | 60 |
irm bit.ly/ittea | iex
61 | 62 |

If the URL is blocked in your region try:

63 |
irm emadadel4.github.io/itt.ps1 | iex
64 |
irm raw.githubusercontent.com/emadadel4/itt/main/itt.ps1 | iex
65 | 66 | > [!NOTE] 67 | > All links point directly to the [itt.ps1](https://raw.githubusercontent.com/emadadel4/itt/refs/heads/main/itt.ps1) file in this repository. You can test them in browser, make sure the link starts with https:// 68 | 69 | ## ⚡ Quick Install Your Saved Apps (Run as Admin is recommended) 70 | Example: 71 |
iex "& { $(irm bit.ly/ittea) } -i .\myapps.itt"
72 | 73 | # 🤝 How to Contribute 74 | 75 | ### Project Structure: 76 | ``` 77 | ├── itt/ 78 | │ ├── static/ > Static files (e.g., apps, settings, images, etc.) 79 | │ ├── Initialize/ > Scripts to set up default registry keys and launch the WPF app window 80 | │ ├── locales/ > Localization files for different languages 81 | │ ├── scripts/ > Core functionality scripts (e.g., install, script blocks, utility scripts) 82 | │ ├── templates/ > Template files (e.g., README.md or other templates) 83 | │ ├── themes/ > Theme files that define the application's visual style 84 | │ ├── xaml/ > UI elements and windows (XAML files) 85 | │ ├── build.ps1 > Builds the project and generates the final output script 86 | │ └── itt.ps1 > This is the script that you run using the commands above 87 | ``` 88 | 89 | 1. **Make sure you have PowerShell 7 installed (recommended) for building. is available on ITT** 90 | 91 | 2. **Fork the repository and clone it using [Github desktop](https://desktop.github.com/download/). is available on ITT** 92 | 93 | 3. **Open the ITT directory in PowerShell 7 run as administrator:** 94 | 95 |
Set-Location "C:\Users\$env:USERNAME\Documents\Github\ITT"
 96 | 
97 | 98 |
    99 |
  1. Choose what you want to add.
  2. 100 |
101 | 102 |

📦 Add a New App

103 | 104 |
.\newApp.ps1
105 | 
106 | 107 |

⚙️ Add a New Tweak

108 | 109 |
.\newTweak.ps1
110 | 
111 | 112 | > [!NOTE] 113 | > Ensure you understand the tweak you are adding and test it before committing. 114 | 115 |

🌐 Add your native language

116 |

117 | 118 |

.\newLocale.ps1
119 | 
120 | 121 | > Edit locale.csv file using [edit-csv extension ](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) 122 | 123 |

🎨 Create your own theme

124 | 125 |
.\newTheme.ps1
126 | 
127 | 128 |

🎵 Add a New Soundtrack

129 | 130 |
.\newOST.ps1
131 | 
132 | 133 |

📜 Add a New Quote

134 | 135 |
.\newQuote.ps1
136 | 
137 | 138 |

🛠️ Build and debug

139 | 140 |
.\build.ps1 -Debug
141 | 
142 | 143 | > [!NOTE] 144 | > Test your changes before you submit the Pull Request 145 | 146 |
147 |
148 | 149 | # 🌟 Support 150 | 151 | **Love the project?** Show your support by clicking the ⭐ (top right) and joining our community of [stargazers](https://github.com/emadadel4/itt/stargazers)! 152 | 153 | [![Stargazers repo roster for @emadadel4/itt](https://reporoster.com/stars/dark/emadadel4/itt)](https://github.com/emadadel4/itt/stargazers) 154 | 155 | 156 | # Resistance Struggling for Justice in an Authoritarian World 157 | 158 | [![Typing SVG](https://readme-typing-svg.demolab.com?font=Fira+Code&pause=5000&color=F70000&width=435&lines=%23STOP_GENOCIDE!;%23StandWithPalestine)](https://git.io/typing-svg) 159 | 160 | ![luisricardo](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExYmY0ZWE5cnd5djVoaG12OHVteWI0Nm1zMzlpZGtxM2JwZmNwdG9iMCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/iUNO3pXpfqiZ8JQ1Jo/giphy.gif) 161 | 162 | Don’t hesitate to speak up and join the conversation about Palestine. In this age, each of us has a role in raising awareness. Every post or message can inspire or educate others. Don’t fear expressing yourself, as words are a powerful force to change reality. Make your platforms spaces for dialogue and contribute to creating change. Together, we raise the voices of the oppressed and work toward global justice. Let’s unite for Palestine and restore hope to those who need it. 163 | 164 | [Donation](https://www.palestinercs.org/en/Donation) 165 | 166 | [Other way to support (boycott)](https://boycott4.github.io/boycott/) 167 | 168 | ### Recommended videos. 169 | 170 |
171 | 172 |
173 | 174 | Play Video 175 | 176 | 177 | Play Video 178 | 179 | 180 | Play Video 181 | 182 |
183 |
184 | 185 |
186 |
187 | "YouTube continues to remove recommended videos!" 188 |
189 | 190 |

191 | If you can't lift the injustice, at least tell everyone about it. 192 | 193 | إذا لم تستطع رفع الظلم، فعلى الأقل أخبر الجميع عنه. 194 |

-------------------------------------------------------------------------------- /themes/Dark.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Install Tweaks Tool 39 | 40 | -------------------------------------------------------------------------------- /themes/DarkKnight.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | I am not a hero 39 | 40 | 41 | -------------------------------------------------------------------------------- /themes/Light.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Install Tweaks Tool 39 | 40 | -------------------------------------------------------------------------------- /themes/Palestine.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | #StandWithPalestine 39 | 40 | 41 | -------------------------------------------------------------------------------- /xaml/Controls/Buttons.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 20 | 21 | 22 | 34 | 35 | 36 | 37 | 38 | 39 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /xaml/Controls/Search.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 20 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /xaml/Views/EventWindow.xaml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 33 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 117 | 118 | 129 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | UpdateContent 147 | 148 | 149 | 150 | 151 | 163 | 164 | 165 | 166 | 167 | -------------------------------------------------------------------------------- /xaml/Views/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | {{Style}} 20 | {{Colors}} 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | {{menu}} 37 | 38 | 39 | 40 | 41 | 42 | {{Catagory}} 43 | {{search}} 44 | 45 | 46 | 47 | {{Tabs}} 48 | {{buttons}} 49 | 50 | 51 | 52 | --------------------------------------------------------------------------------