├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── README.md └── workflows │ ├── packageManagers.yml │ └── stale.yml ├── .gitignore ├── Community.PowerToys.Run.Plugin.Everything.csproj ├── ContextMenu ├── ContextMenuLoader.cs └── ShellContextMenu.cs ├── Everything.cs ├── Everything2_ARM64.dll ├── Everything2_x64.dll ├── GlobalSuppressions.cs ├── Images ├── Everything.dark.png ├── Everything.light.png ├── file.png ├── folder.png └── warning.png ├── Interop └── NativeMethods.cs ├── LICENSE ├── Main.cs ├── NSIS ├── Everything.ico └── exeCreator.nsi ├── Properties ├── Resources.Designer.cs ├── Resources.de-de.resx ├── Resources.es-es.resx ├── Resources.fr-fr.resx ├── Resources.it-it.resx ├── Resources.pl-pl.resx ├── Resources.resx ├── Resources.zh-cn.resx └── Resources.zh-tw.resx ├── SearchHelper └── SearchResult.cs ├── Settings.cs ├── Update ├── UpdateChecker.cs └── UpdateSettings.cs ├── plugin.json └── settings.toml /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: linycv 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "🐛 xx" 5 | labels: bug 6 | 7 | --- 8 | 9 | **Flight Check** 10 | - [ ] I'm sure existing (open and closed) don't have duplicates 11 | - [ ] I've updated PowerToys (PT), Everything, EverythingPT (EPT) to the lastest version 12 | - [ ] I've tried reinstalling PT, Everything, EPT 13 | 14 | 15 | **Describe the bug** 16 | A clear and concise description of what the bug is. 17 | 18 | **To Reproduce** 19 | Steps to reproduce the behavior: 20 | 1. Go to '...' 21 | 2. Click on '....' 22 | 3. Scroll down to '....' 23 | 4. See error 24 | 25 | **Expected behavior** 26 | A clear and concise description of what you expected to happen. 27 | 28 | **Screenshots** 29 | If applicable, add screenshots to help explain your problem. 30 | 31 | **Logs (please upload or provide link to you log):** 32 | Logs can be found at `%localappdata%\Microsoft\PowerToys\PowerToys Run\Logs` 33 | 34 | > Note: 35 | > If log says `Couldn't get assembly types`, you need to update PT and EPT 36 | > If log says `Couldn't load assembly`, you're on the wrong version of EPT (x64 vs ARM64), most people should use x64 37 | 38 | **Version:** 39 | - PowerToy: 40 | - Everything: 41 | - EverythingPT: 42 | - Windows: 43 | 44 | **Installation method (How did you install the following softwares):** 45 | - PowerToys: Github/Windows Store/Winget..etc 46 | - Everything: 47 | - EverythingPT: 48 | 49 | **Additional context** 50 | Add any other context about the problem here. 51 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: EverythingPT is a Virus 4 | url: https://github.com/lin-ycv/EverythingPowerToys/wiki/Known-Issues#flagged-by-antivirus-as-malicious 5 | about: Installer being quarantined/Antivirus removes the installer. 6 | - name: How do I use/configure... 7 | url: https://github.com/lin-ycv/EverythingPowerToys/wiki/Features 8 | about: EverythingPT is working, but not the way you want. 9 | - name: Review open issues 10 | url: https://github.com/lin-ycv/EverythingPowerToys/issues?q=is%3Aissue 11 | about: Please check if your issue isn't already there. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "💡 xx" 5 | labels: enhancement 6 | 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe any research you've done** 16 | I'd appreciate it if you could include some research on the possible methods of implementation or reasource references that'd help me implement your feature request. 17 | If you're unsure if this feature is even plausible to implement, maybe use the discussions instead of a feature request. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # ![](https://rawcdn.githack.com/lin-ycv/EverythingPowerToys/69b10312bfb596089d1f54c9977b8cceca549221/Images/Everything.light.png?min=1) Everything for PowerToys Run 4 | 5 | [![GitHub repo size](https://img.shields.io/github/repo-size/lin-ycv/everythingpowertoys?style=flat-square)](#) 6 | [![GitHub release (release name instead of tag name)](https://img.shields.io/github/v/release/lin-ycv/everythingpowertoys?style=flat-square)](https://github.com/lin-ycv/EverythingPowerToys/releases/latest) 7 | [![GitHub all releases](https://img.shields.io/github/downloads/lin-ycv/EverythingPowerToys/total?style=flat-square)](https://github.com/lin-ycv/EverythingPowerToys/releases/) 8 | [![GitHub release (latest by date)](https://img.shields.io/github/downloads/lin-ycv/everythingpowertoys/latest/total?style=flat-square)](https://github.com/lin-ycv/EverythingPowerToys/releases/latest)
9 | [![Chocolatey version](https://img.shields.io/chocolatey/v/everythingpowertoys?style=flat-square)](https://community.chocolatey.org/packages/everythingpowertoys) 10 | [![Scoop version](https://img.shields.io/scoop/v/everything-powertoys?bucket=extras&color=orange&style=flat-square)](https://scoop.sh/#/apps?q=everything-powertoys) 11 | [![Winget](https://img.shields.io/badge/dynamic/xml?label=winget&prefix=v&query=%2F%2Ftr%5B%40id%3D%27winget%27%5D%2Ftd%5B3%5D%2Fspan%2Fa&url=https%3A%2F%2Frepology.org%2Fproject%2Feverythingpowertoys%2Fversions&color=orange&style=flat-square)](https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/lin-ycv/EverythingPowerToys) 12 | 13 |
14 | 15 | EverythingPowerToys (EPT) is a plugin for the program [PowerToys Run (PTR)](https://learn.microsoft.com/en-us/windows/powertoys/run)
16 | This adds the ability to search the computer for files and folders using [Everything](https://www.voidtools.com/) inside PTR 17 | 18 | #### Install Methods 19 | Chose the one you prefer: 20 | 1) Chocolatey 21 | 2) Scoop 22 | 3) WinGet 23 | 4) Self-Extraction Installer (EXE) 24 | 5) Manual Installation (ZIP) 25 | 26 | Detailed explanations and instructions are on the [wiki page](https://github.com/lin-ycv/EverythingPowerToys/wiki) 27 | 28 | #### Plugin Features 29 | For an explanation of all the features and settings of this plugin, please visit the [features page](https://github.com/lin-ycv/EverythingPowerToys/wiki/Features) 30 | 31 | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/linycv) 32 | 33 | ## Support and Feedback 34 | 35 | You can report bugs via [GitHub Issues](https://github.com/lin-ycv/EverythingPowerToys/issues). Alternatively, if you're familiar with coding, you can address the bug yourself and submit a [Pull Request](https://github.com/lin-ycv/EverythingPowerToys/pulls) with the fix. 36 | 37 | For support or feedback, please utilize [GitHub Discussions](https://github.com/lin-ycv/EverythingPowerToys/discussions). 38 | 39 | ## Developers and Contributors 40 | 41 | If you want to contribute to this project, visit the [developer page](https://github.com/lin-ycv/EverythingPowerToys/wiki/Developer) to get started. 42 | 43 | [![Stargazers over time](https://starchart.cc/lin-ycv/EverythingPowerToys.svg?variant=adaptive&axis=%23797979)](https://starchart.cc/lin-ycv/EverythingPowerToys) 44 | -------------------------------------------------------------------------------- /.github/workflows/packageManagers.yml: -------------------------------------------------------------------------------- 1 | name: Push updates to package managers 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | if: "!github.event.release.prerelease" 12 | runs-on: windows-latest 13 | 14 | steps: 15 | 16 | - name: Config and Push 17 | run: | 18 | Install-Module Chocolatey-AU -Force 19 | 20 | # Get Chocolatey manifests 21 | git clone --filter=blob:none --no-checkout --depth 1 https://github.com/lin-ycv/chocolatey-pkgs.git 22 | cd chocolatey-pkgs 23 | git sparse-checkout set --cone 24 | git sparse-checkout set .\manifests\everythingpowertoys 25 | git checkout main 26 | 27 | # Use Choco-AU to get the data 28 | Install-Module Chocolatey-AU -Force 29 | cd .\manifests\everythingpowertoys 30 | $UpdateOutput = .\update.ps1 31 | echo $Latest.Version $Latest.URL64 $Latest.Checksum64 $Latest.ARM64 $Latest.Checksuma64 32 | 33 | # Chocolatey: Check (and Push) 34 | $NupkgPath = (($UpdateOutput.Result | Where-Object {$_ -like '*.nupkg''*'}) -split "'")[1] 35 | if ($NupkgPath){ 36 | Write-Output "Newer Version Available: push to Choco" 37 | $ApiKey = '${{ secrets.CHOCOLATEY }}' 38 | $ChocoServer = 'https://push.chocolatey.org/' 39 | choco push $NupkgPath --source $ChocoServer --key $ApiKey 40 | } 41 | cd ..\..\.. 42 | 43 | # Winget 44 | echo $Latest.Version $Latest.URL64e $Latest.Checksum64e $Latest.URLa64e $Latest.Checksuma64e 45 | rm -Path .\* -Recurse -Force 46 | git clone -b winget https://github.com/lin-ycv/EverythingPowerToys.git --depth 1 47 | Invoke-WebRequest https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe 48 | cd .\EverythingPowerToys 49 | rm .git -Recurse -Force -Confirm:$false 50 | Get-ChildItem *.* -Recurse | ForEach { (Get-Content $_) | ForEach {$_ -Replace '_VERSION_', $Latest.Version} | ForEach {$_ -Replace '_URL_', $Latest.URL64e} | ForEach {$_ -Replace '_CRC_', $Latest.Checksum64e} | ForEach {$_ -Replace '_armURL_', $Latest.URLa64e} | ForEach {$_ -Replace '_armCRC_', $Latest.Checksuma64e} | Set-Content $_ } 51 | ..\wingetcreate submit ".\\" -p "New version: EverythingPowerToys version $Latest.Version" -t ${{ secrets.EVERYTHINGPT }} . -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. 2 | # 3 | # You can adjust the behavior by modifying this file. 4 | # For more information, see: 5 | # https://github.com/actions/stale 6 | name: Mark stale issues and pull requests 7 | 8 | permissions: 9 | issues: write 10 | pull-requests: write 11 | 12 | on: 13 | schedule: 14 | - cron: '16 16 * * 0' 15 | 16 | jobs: 17 | stale: 18 | 19 | runs-on: ubuntu-latest 20 | permissions: 21 | issues: write 22 | pull-requests: write 23 | 24 | steps: 25 | - uses: actions/stale@v5 26 | with: 27 | repo-token: ${{ secrets.GITHUB_TOKEN }} 28 | stale-issue-message: 'Stale: no activity' 29 | stale-pr-message: 'Stale: no activity' 30 | stale-issue-label: 'stale' 31 | stale-pr-label: 'stale' 32 | days-before-issue-stale: 7 33 | days-before-close: 7 34 | close-issue-message: 'Close: no response' 35 | exempt-issue-labels: todo, help wanted 36 | exempt-pr-labels: todo, help wanted 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/* 30 | ![Bb]in/.gitinclude 31 | [Oo]bj/ 32 | [Ll]og/ 33 | [Ll]ogs/ 34 | 35 | # Visual Studio 2015/2017 cache/options directory 36 | .vs/ 37 | # Uncomment if you have tasks that create the project's static files in wwwroot 38 | #wwwroot/ 39 | 40 | # Visual Studio 2017 auto generated files 41 | Generated\ Files/ 42 | 43 | # MSTest test Results 44 | [Tt]est[Rr]esult*/ 45 | [Bb]uild[Ll]og.* 46 | 47 | # NUnit 48 | *.VisualState.xml 49 | TestResult.xml 50 | nunit-*.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # Benchmark Results 58 | BenchmarkDotNet.Artifacts/ 59 | 60 | # .NET Core 61 | project.lock.json 62 | project.fragment.lock.json 63 | artifacts/ 64 | 65 | # StyleCop 66 | StyleCopReport.xml 67 | 68 | # Files built by Visual Studio 69 | *_i.c 70 | *_p.c 71 | *_h.h 72 | *.ilk 73 | *.meta 74 | *.obj 75 | *.iobj 76 | *.pch 77 | *.pdb 78 | *.ipdb 79 | *.pgc 80 | *.pgd 81 | *.rsp 82 | *.sbr 83 | *.tlb 84 | *.tli 85 | *.tlh 86 | *.tmp 87 | *.tmp_proj 88 | *_wpftmp.csproj 89 | *.log 90 | *.vspscc 91 | *.vssscc 92 | .builds 93 | *.pidb 94 | *.svclog 95 | *.scc 96 | 97 | # Chutzpah Test files 98 | _Chutzpah* 99 | 100 | # Visual C++ cache files 101 | ipch/ 102 | *.aps 103 | *.ncb 104 | *.opendb 105 | *.opensdf 106 | *.sdf 107 | *.cachefile 108 | *.VC.db 109 | *.VC.VC.opendb 110 | 111 | # Visual Studio profiler 112 | *.psess 113 | *.vsp 114 | *.vspx 115 | *.sap 116 | 117 | # Visual Studio Trace Files 118 | *.e2e 119 | 120 | # TFS 2012 Local Workspace 121 | $tf/ 122 | 123 | # Guidance Automation Toolkit 124 | *.gpState 125 | 126 | # ReSharper is a .NET coding add-in 127 | _ReSharper*/ 128 | *.[Rr]e[Ss]harper 129 | *.DotSettings.user 130 | 131 | # TeamCity is a build add-in 132 | _TeamCity* 133 | 134 | # DotCover is a Code Coverage Tool 135 | *.dotCover 136 | 137 | # AxoCover is a Code Coverage Tool 138 | .axoCover/* 139 | !.axoCover/settings.json 140 | 141 | # Visual Studio code coverage results 142 | *.coverage 143 | *.coveragexml 144 | 145 | # NCrunch 146 | _NCrunch_* 147 | .*crunch*.local.xml 148 | nCrunchTemp_* 149 | 150 | # MightyMoose 151 | *.mm.* 152 | AutoTest.Net/ 153 | 154 | # Web workbench (sass) 155 | .sass-cache/ 156 | 157 | # Installshield output folder 158 | [Ee]xpress/ 159 | 160 | # DocProject is a documentation generator add-in 161 | DocProject/buildhelp/ 162 | DocProject/Help/*.HxT 163 | DocProject/Help/*.HxC 164 | DocProject/Help/*.hhc 165 | DocProject/Help/*.hhk 166 | DocProject/Help/*.hhp 167 | DocProject/Help/Html2 168 | DocProject/Help/html 169 | 170 | # Click-Once directory 171 | publish/ 172 | 173 | # Publish Web Output 174 | *.[Pp]ublish.xml 175 | *.azurePubxml 176 | # Note: Comment the next line if you want to checkin your web deploy settings, 177 | # but database connection strings (with potential passwords) will be unencrypted 178 | *.pubxml 179 | *.publishproj 180 | 181 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 182 | # checkin your Azure Web App publish settings, but sensitive information contained 183 | # in these scripts will be unencrypted 184 | PublishScripts/ 185 | 186 | # NuGet Packages 187 | *.nupkg 188 | # NuGet Symbol Packages 189 | *.snupkg 190 | # The packages folder can be ignored because of Package Restore 191 | **/[Pp]ackages/* 192 | # except build/, which is used as an MSBuild target. 193 | !**/[Pp]ackages/build/ 194 | # Uncomment if necessary however generally it will be regenerated when needed 195 | #!**/[Pp]ackages/repositories.config 196 | # NuGet v3's project.json files produces more ignorable files 197 | *.nuget.props 198 | *.nuget.targets 199 | 200 | # Microsoft Azure Build Output 201 | csx/ 202 | *.build.csdef 203 | 204 | # Microsoft Azure Emulator 205 | ecf/ 206 | rcf/ 207 | 208 | # Windows Store app package directories and files 209 | AppPackages/ 210 | BundleArtifacts/ 211 | Package.StoreAssociation.xml 212 | _pkginfo.txt 213 | *.appx 214 | *.appxbundle 215 | *.appxupload 216 | 217 | # Visual Studio cache files 218 | # files ending in .cache can be ignored 219 | *.[Cc]ache 220 | # but keep track of directories ending in .cache 221 | !?*.[Cc]ache/ 222 | 223 | # Others 224 | ClientBin/ 225 | ~$* 226 | *~ 227 | *.dbmdl 228 | *.dbproj.schemaview 229 | *.jfm 230 | *.pfx 231 | *.publishsettings 232 | orleans.codegen.cs 233 | 234 | # Including strong name files can present a security risk 235 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 236 | #*.snk 237 | 238 | # Since there are multiple workflows, uncomment next line to ignore bower_components 239 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 240 | #bower_components/ 241 | 242 | # RIA/Silverlight projects 243 | Generated_Code/ 244 | 245 | # Backup & report files from converting an old project file 246 | # to a newer Visual Studio version. Backup files are not needed, 247 | # because we have git ;-) 248 | _UpgradeReport_Files/ 249 | Backup*/ 250 | UpgradeLog*.XML 251 | UpgradeLog*.htm 252 | ServiceFabricBackup/ 253 | *.rptproj.bak 254 | 255 | # SQL Server files 256 | *.mdf 257 | *.ldf 258 | *.ndf 259 | 260 | # Business Intelligence projects 261 | *.rdl.data 262 | *.bim.layout 263 | *.bim_*.settings 264 | *.rptproj.rsuser 265 | *- [Bb]ackup.rdl 266 | *- [Bb]ackup ([0-9]).rdl 267 | *- [Bb]ackup ([0-9][0-9]).rdl 268 | 269 | # Microsoft Fakes 270 | FakesAssemblies/ 271 | 272 | # GhostDoc plugin setting file 273 | *.GhostDoc.xml 274 | 275 | # Node.js Tools for Visual Studio 276 | .ntvs_analysis.dat 277 | node_modules/ 278 | 279 | # Visual Studio 6 build log 280 | *.plg 281 | 282 | # Visual Studio 6 workspace options file 283 | *.opt 284 | 285 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 286 | *.vbw 287 | 288 | # Visual Studio LightSwitch build output 289 | **/*.HTMLClient/GeneratedArtifacts 290 | **/*.DesktopClient/GeneratedArtifacts 291 | **/*.DesktopClient/ModelManifest.xml 292 | **/*.Server/GeneratedArtifacts 293 | **/*.Server/ModelManifest.xml 294 | _Pvt_Extensions 295 | 296 | # Paket dependency manager 297 | .paket/paket.exe 298 | paket-files/ 299 | 300 | # FAKE - F# Make 301 | .fake/ 302 | 303 | # CodeRush personal settings 304 | .cr/personal 305 | 306 | # Python Tools for Visual Studio (PTVS) 307 | __pycache__/ 308 | *.pyc 309 | 310 | # Cake - Uncomment if you are using it 311 | # tools/** 312 | # !tools/packages.config 313 | 314 | # Tabs Studio 315 | *.tss 316 | 317 | # Telerik's JustMock configuration file 318 | *.jmconfig 319 | 320 | # BizTalk build output 321 | *.btp.cs 322 | *.btm.cs 323 | *.odx.cs 324 | *.xsd.cs 325 | 326 | # OpenCover UI analysis results 327 | OpenCover/ 328 | 329 | # Azure Stream Analytics local run output 330 | ASALocalRun/ 331 | 332 | # MSBuild Binary and Structured Log 333 | *.binlog 334 | 335 | # NVidia Nsight GPU debugger configuration file 336 | *.nvuser 337 | 338 | # MFractors (Xamarin productivity tool) working folder 339 | .mfractor/ 340 | 341 | # Local History for Visual Studio 342 | .localhistory/ 343 | 344 | # BeatPulse healthcheck temp database 345 | healthchecksdb 346 | 347 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 348 | MigrationBackup/ 349 | 350 | # Ionide (cross platform F# VS Code tools) working folder 351 | .ionide/ 352 | -------------------------------------------------------------------------------- /Community.PowerToys.Run.Plugin.Everything.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 12 7 | {64467D32-4786-4ADD-9B77-FBF3C965D3D1} 8 | Properties 9 | Community.PowerToys.Run.Plugin.Everything 10 | Community.PowerToys.Run.Plugin.Everything 11 | $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)plugin.json').Split(',')[5].Split(':')[1].Trim().Trim('"')) 12 | 13 | 14 | false 15 | false 16 | true 17 | lin-ycv 18 | Copyright (C) lin-ycv 19 | True 20 | 21 | 22 | 23 | true 24 | bin\$(Platform)\$(Configuration)\Everything\ 25 | DEBUG;TRACE 26 | full 27 | false 28 | 29 | 30 | 31 | 32 | bin\$(Platform)\$(Configuration)\Everything\ 33 | true 34 | none 35 | 36 | 37 | 38 | $(DefineConstants);X64 39 | 40 | 41 | 42 | $(DefineConstants);ARM64 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | false 52 | False 53 | 54 | 55 | False 56 | False 57 | 58 | 59 | false 60 | False 61 | 62 | 63 | false 64 | False 65 | 66 | 67 | 68 | 69 | 70 | PreserveNewest 71 | 72 | 73 | 74 | 75 | 76 | True 77 | True 78 | Resources.resx 79 | 80 | 81 | 82 | 83 | 84 | PublicResXFileCodeGenerator 85 | Resources.Designer.cs 86 | 87 | 88 | 89 | 90 | 91 | PreserveNewest 92 | 93 | 94 | PreserveNewest 95 | 96 | 97 | PreserveNewest 98 | 99 | 100 | PreserveNewest 101 | True 102 | \ 103 | 104 | 105 | PreserveNewest 106 | 107 | 108 | PreserveNewest 109 | 110 | 111 | PreserveNewest 112 | 113 | 114 | PreserveNewest 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /ContextMenu/ContextMenuLoader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Reflection; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using System.Windows.Input; 9 | using Community.PowerToys.Run.Plugin.Everything.Interop; 10 | using Community.PowerToys.Run.Plugin.Everything.Properties; 11 | using Community.PowerToys.Run.Plugin.Everything.SearchHelper; 12 | using Wox.Infrastructure; 13 | using Wox.Plugin; 14 | using Wox.Plugin.Logger; 15 | using wf = System.Windows.Forms; 16 | 17 | namespace Community.PowerToys.Run.Plugin.Everything.ContextMenu 18 | { 19 | internal sealed class ContextMenuLoader(PluginInitContext context, string options) : IContextMenu 20 | { 21 | private readonly PluginInitContext _context = context; 22 | private readonly string font = "Segoe Fluent Icons,Segoe MDL2 Assets"; 23 | 24 | // Extensions for adding run as admin context menu item for applications 25 | private readonly string[] _appExtensions = [".exe", ".bat", ".appref-ms", ".lnk"]; 26 | 27 | private bool _swapCopy; 28 | private string _options = options; 29 | private string _customProgram; 30 | private string _customArg; 31 | internal void Update(Settings s) 32 | { 33 | _swapCopy = s.Copy; 34 | _options = s.Context; 35 | _customProgram = s.CustomProgram; 36 | _customArg = s.CustomArg; 37 | } 38 | 39 | public List LoadContextMenus(Result selectedResult) 40 | { 41 | var contextMenus = new List(); 42 | if (selectedResult.ContextData is SearchResult record) 43 | { 44 | bool isFile = record.File, runAs = CanFileBeRunAsAdmin(record.Path); 45 | foreach (char o in _options) 46 | { 47 | switch (o) 48 | { 49 | case '0': 50 | // Open folder 51 | if (isFile) 52 | { 53 | contextMenus.Add(new ContextMenuResult 54 | { 55 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 56 | Title = Resources.open_containing_folder, 57 | Glyph = "\xE838", 58 | FontFamily = font, 59 | AcceleratorKey = Key.E, 60 | AcceleratorModifiers = ModifierKeys.Control | ModifierKeys.Shift, 61 | Action = _ => 62 | { 63 | if (!Helper.OpenInShell("explorer.exe", $"/select,\"{record.Path}\"")) 64 | { 65 | var message = $"{Resources.folder_open_failed} {Path.GetDirectoryName(record.Path)}"; 66 | _context.API.ShowMsg(message); 67 | Log.Exception($"EPT: Failed to open folder {Path.GetDirectoryName(record.Path)}", new IOException(), GetType()); 68 | return false; 69 | } 70 | 71 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 72 | return true; 73 | }, 74 | }); 75 | } 76 | 77 | break; 78 | case '1': 79 | // Run as Admin 80 | if (runAs) 81 | { 82 | contextMenus.Add(new ContextMenuResult 83 | { 84 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 85 | Title = Resources.run_as_admin, 86 | Glyph = "\xE7EF", 87 | FontFamily = font, 88 | AcceleratorKey = Key.Enter, 89 | AcceleratorModifiers = ModifierKeys.Control | ModifierKeys.Shift, 90 | Action = _ => 91 | { 92 | try 93 | { 94 | Task.Run(() => Helper.RunAsAdmin(record.Path)); 95 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 96 | return true; 97 | } 98 | catch (Exception e) 99 | { 100 | Log.Exception($"EPT: Failed to run {record.Path} as admin", e, GetType()); 101 | return false; 102 | } 103 | }, 104 | }); 105 | } 106 | 107 | break; 108 | case '2': 109 | // Run as User 110 | if (runAs) 111 | { 112 | contextMenus.Add(new ContextMenuResult 113 | { 114 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 115 | Title = Resources.run_as_user, 116 | Glyph = "\xE7EE", 117 | FontFamily = font, 118 | AcceleratorKey = Key.U, 119 | AcceleratorModifiers = ModifierKeys.Control | ModifierKeys.Shift, 120 | Action = _ => 121 | { 122 | try 123 | { 124 | Task.Run(() => Helper.RunAsUser(record.Path)); 125 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 126 | return true; 127 | } 128 | catch (Exception e) 129 | { 130 | Log.Exception($"EPT: Failed to run {record.Path} as different user", e, GetType()); 131 | return false; 132 | } 133 | }, 134 | }); 135 | } 136 | 137 | break; 138 | case '3': 139 | // Copy File/Folder 140 | contextMenus.Add(new ContextMenuResult 141 | { 142 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 143 | Title = Resources.copy_file + (_swapCopy ? Resources.copy_shortcut : Resources.copy_shortcutAlt), 144 | Glyph = "\xE8C8", 145 | FontFamily = font, 146 | AcceleratorKey = Key.C, 147 | AcceleratorModifiers = _swapCopy ? ModifierKeys.Control : ModifierKeys.Control | ModifierKeys.Alt, 148 | 149 | Action = (context) => 150 | { 151 | try 152 | { 153 | Clipboard.SetData(DataFormats.FileDrop, new string[] { record.Path }); 154 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 155 | return true; 156 | } 157 | catch (Exception e) 158 | { 159 | var message = Resources.clipboard_failed; 160 | Log.Exception($"ETP3: Failed to copy {(_swapCopy ? "file" : "path")} ({record.Path}) to clipboard", e, GetType()); 161 | 162 | _context.API.ShowMsg(message); 163 | return false; 164 | } 165 | }, 166 | }); 167 | break; 168 | case '4': 169 | // Copy Path 170 | contextMenus.Add(new ContextMenuResult 171 | { 172 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 173 | Title = Resources.copy_path + (_swapCopy ? Resources.copy_shortcutAlt : Resources.copy_shortcut), 174 | Glyph = "\xE71B", 175 | FontFamily = font, 176 | AcceleratorKey = Key.C, 177 | AcceleratorModifiers = _swapCopy ? ModifierKeys.Control | ModifierKeys.Alt : ModifierKeys.Control, 178 | 179 | Action = (context) => 180 | { 181 | try 182 | { 183 | Clipboard.SetDataObject(record.Path); 184 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 185 | return true; 186 | } 187 | catch (Exception e) 188 | { 189 | var message = Resources.clipboard_failed; 190 | Log.Exception($"ETP3: Failed to copy {(_swapCopy ? "file" : "path")} ({record.Path}) to clipboard", e, GetType()); 191 | 192 | _context.API.ShowMsg(message); 193 | return false; 194 | } 195 | }, 196 | }); 197 | break; 198 | case '5': 199 | // Open in Shell 200 | contextMenus.Add(new ContextMenuResult 201 | { 202 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 203 | Title = Resources.open_in_console, 204 | Glyph = "\xE756", 205 | FontFamily = font, 206 | AcceleratorKey = Key.C, 207 | AcceleratorModifiers = ModifierKeys.Control | ModifierKeys.Shift, 208 | 209 | Action = (context) => 210 | { 211 | try 212 | { 213 | if (isFile) 214 | Helper.OpenInConsole(Path.GetDirectoryName(record.Path)); 215 | else 216 | Helper.OpenInConsole(record.Path); 217 | 218 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 219 | return true; 220 | } 221 | catch (Exception e) 222 | { 223 | Log.Exception($"EPT: Failed to open {record.Path} in console", e, GetType()); 224 | return false; 225 | } 226 | }, 227 | }); 228 | break; 229 | case '6': 230 | // Pass to custom program as parameter 231 | contextMenus.Add(new ContextMenuResult 232 | { 233 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 234 | Title = Resources.open_in_custom, 235 | Glyph = "\xE8A7", 236 | FontFamily = font, 237 | AcceleratorKey = Key.N, 238 | AcceleratorModifiers = ModifierKeys.Control, 239 | 240 | Action = (context) => 241 | { 242 | using var process = new Process(); 243 | process.StartInfo.FileName = _customProgram; 244 | process.StartInfo.Arguments = $"\"{_customArg.Replace("$P", record.Path)}\""; 245 | try 246 | { 247 | process.Start(); 248 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 249 | return true; 250 | } 251 | catch (Exception e) 252 | { 253 | Log.Exception($"EPT: Failed to execute {_customProgram} with arguments {_customArg}", e, GetType()); 254 | return false; 255 | } 256 | }, 257 | }); 258 | break; 259 | case '7': 260 | // Delete 261 | contextMenus.Add(new ContextMenuResult 262 | { 263 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 264 | Title = Resources.delete_result, 265 | Glyph = "\xE74D", 266 | FontFamily = font, 267 | AcceleratorKey = Key.Delete, 268 | AcceleratorModifiers = ModifierKeys.Control, 269 | Action = (context) => 270 | { 271 | try 272 | { 273 | if (isFile) 274 | File.Delete(record.Path); 275 | else 276 | Directory.Delete(record.Path, true); 277 | return true; 278 | } 279 | catch (Exception e) 280 | { 281 | Log.Exception($"EPT: Failed to delete {record.Path}", e, GetType()); 282 | return false; 283 | } 284 | }, 285 | }); 286 | break; 287 | case '8': 288 | // Shell Context Menu 289 | contextMenus.Add(new ContextMenuResult 290 | { 291 | PluginName = Assembly.GetExecutingAssembly().GetName().Name, 292 | Title = Resources.scm, 293 | Glyph = "\xE712", 294 | FontFamily = font, 295 | AcceleratorKey = Key.M, 296 | AcceleratorModifiers = ModifierKeys.Control, 297 | Action = (context) => 298 | { 299 | try 300 | { 301 | ShellContextMenu scm = new(); 302 | if (isFile) 303 | scm.ShowContextMenu(new FileInfo(record.Path), wf.Cursor.Position); 304 | else 305 | scm.ShowContextMenu(new DirectoryInfo(record.Path), wf.Cursor.Position); 306 | NativeMethods.Everything_IncRunCountFromFileNameW(record.Path); 307 | return true; 308 | } 309 | catch (Exception e) 310 | { 311 | Log.Exception($"EPT: Failed to open shell context menu for {record.Path}", e, GetType()); 312 | return false; 313 | } 314 | }, 315 | }); 316 | break; 317 | default: 318 | break; 319 | } 320 | } 321 | } 322 | 323 | return contextMenus; 324 | } 325 | 326 | private bool CanFileBeRunAsAdmin(string path) 327 | { 328 | string fileExtension = Path.GetExtension(path); 329 | foreach (string extension in _appExtensions) 330 | { 331 | // Using OrdinalIgnoreCase since this is internal 332 | if (extension.Equals(fileExtension, StringComparison.OrdinalIgnoreCase)) 333 | return true; 334 | } 335 | 336 | return false; 337 | } 338 | } 339 | } 340 | -------------------------------------------------------------------------------- /Everything.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Diagnostics; 5 | using System.IO; 6 | using System.Runtime.InteropServices; 7 | using System.Threading; 8 | using Community.PowerToys.Run.Plugin.Everything.Properties; 9 | using Community.PowerToys.Run.Plugin.Everything.SearchHelper; 10 | using Microsoft.Win32; 11 | using NLog; 12 | using Wox.Plugin; 13 | using Wox.Plugin.Logger; 14 | using static Community.PowerToys.Run.Plugin.Everything.Interop.NativeMethods; 15 | 16 | namespace Community.PowerToys.Run.Plugin.Everything 17 | { 18 | internal sealed class Everything 19 | { 20 | private bool firstRun = true; 21 | private string exe = string.Empty; 22 | internal Everything(Settings setting) 23 | { 24 | Everything_SetRequestFlags(Request.FILE_NAME | Request.PATH); 25 | UpdateSettings(setting); 26 | } 27 | 28 | internal void UpdateSettings(Settings setting) 29 | { 30 | Everything_SetSort(setting.Sort); 31 | Everything_SetMax(setting.Max); 32 | Everything_SetMatchPath(setting.MatchPath); 33 | Everything_SetRegex(setting.RegEx); 34 | if (!string.IsNullOrEmpty(setting.EverythingPath)) 35 | { 36 | if (setting.EverythingPath != exe && Path.Exists(setting.EverythingPath)) 37 | exe = setting.EverythingPath; 38 | } 39 | else if (string.IsNullOrEmpty(exe) && firstRun) 40 | { 41 | string a64 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Everything 1.5a", "Everything64.exe"), 42 | s64 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Everything", "Everything.exe"), 43 | a32 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Everything 1.5", "Everything.exe"), 44 | s32 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Everything", "Everything.exe"); 45 | 46 | if (Path.Exists(a64)) { exe = a64; } 47 | else if (Path.Exists(s64)) { exe = s64; } 48 | else if (Path.Exists(a32)) { exe = a32; } 49 | else if (Path.Exists(s32)) { exe = s32; } 50 | else 51 | { 52 | try 53 | { 54 | // Check uninstall information in registry for installation locations 55 | string[] uninstallKeys = 56 | [ 57 | @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Everything", 58 | @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Everything 1.5a", 59 | @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Everything", 60 | @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Everything 1.5a" 61 | ]; 62 | 63 | foreach (string subKey in uninstallKeys) 64 | { 65 | using RegistryKey key = Registry.LocalMachine.OpenSubKey(subKey); 66 | if (key != null) 67 | { 68 | // Check install location from registry 69 | if (key.GetValue("InstallLocation") is string installLocation && Path.Exists(installLocation)) 70 | { 71 | string exe32 = Path.Combine(installLocation, "Everything.exe"); 72 | string exe64 = Path.Combine(installLocation, "Everything64.exe"); 73 | 74 | if (File.Exists(exe64)) 75 | { 76 | exe = exe64; 77 | break; 78 | } 79 | 80 | if (File.Exists(exe32)) 81 | { 82 | exe = exe32; 83 | break; 84 | } 85 | } 86 | 87 | // Try to extract location from uninstall string 88 | if (key.GetValue("UninstallString") is string uninstallString) 89 | { 90 | string dir = Path.GetDirectoryName(uninstallString.Contains('"') ? uninstallString.Split('"')[1] : uninstallString); 91 | if (dir != null) 92 | { 93 | string exe32 = Path.Combine(dir, "Everything.exe"); 94 | string exe64 = Path.Combine(dir, "Everything64.exe"); 95 | 96 | if (File.Exists(exe64)) 97 | { 98 | exe = exe64; 99 | break; 100 | } 101 | 102 | if (File.Exists(exe32)) 103 | { 104 | exe = exe32; 105 | break; 106 | } 107 | } 108 | } 109 | } 110 | } 111 | } 112 | catch 113 | { 114 | exe = string.Empty; 115 | } 116 | } 117 | 118 | firstRun = false; 119 | } 120 | } 121 | 122 | internal IEnumerable Query(string query, Settings setting, CancellationToken token) 123 | { 124 | if (setting.LoggingLevel <= LogLevel.Debug) 125 | { 126 | Log.Info( 127 | $"EPT:\nNew Query: {query}\n" + 128 | $"Prefix {setting.Prefix}\n" + 129 | $"Sort {(int)setting.Sort}_{Everything_GetSort()}\n" + 130 | $"Max {setting.Max}_{Everything_GetMax()}\n" + 131 | $"Match Path {setting.MatchPath}_{Everything_GetMatchPath()}\n" + 132 | $"Regex {setting.RegEx}_{Everything_GetRegex()}", 133 | GetType()); 134 | } 135 | 136 | string orgqry = query; 137 | 138 | if (!string.IsNullOrEmpty(setting.Prefix)) 139 | query = setting.Prefix + query; 140 | 141 | if (setting.EnvVar && orgqry.Contains('%')) 142 | { 143 | query = Environment.ExpandEnvironmentVariables(query).Replace(';', '|'); 144 | if (setting.LoggingLevel <= LogLevel.Debug) 145 | Log.Info($"EPT:EnvVariable\n{query}", GetType()); 146 | } 147 | 148 | if (setting.Is1_4 && orgqry.Contains(':')) 149 | { 150 | foreach (var kv in setting.Filters) 151 | { 152 | if (query.Contains(kv.Key, StringComparison.OrdinalIgnoreCase)) 153 | { 154 | query = query.Replace(kv.Key, string.Empty).Trim() + $" {kv.Value}"; 155 | if (setting.LoggingLevel <= LogLevel.Debug) 156 | Log.Info($"EPT: Contains Filter: {kv.Key}\n{query}", GetType()); 157 | } 158 | } 159 | } 160 | 161 | token.ThrowIfCancellationRequested(); 162 | Everything_SetSearchW(query); 163 | if (!Everything_QueryW(true)) 164 | { 165 | if (setting.LoggingLevel < LogLevel.Error) 166 | Log.Warn($"EPT: Unable to Query ({Everything_GetLastError()})", GetType()); 167 | throw new Win32Exception("Unable to Query"); 168 | } 169 | 170 | uint resultCount = Everything_GetNumResults(); 171 | if (setting.LoggingLevel <= LogLevel.Debug) 172 | Log.Info($"EPT: Results = {resultCount}", GetType()); 173 | 174 | token.ThrowIfCancellationRequested(); 175 | bool showMore = setting.ShowMore && !string.IsNullOrEmpty(exe) && resultCount == setting.Max; 176 | if (showMore) 177 | { 178 | var more = new Result() 179 | { 180 | Title = Resources.more_results, 181 | SubTitle = Resources.more_results_Subtitle, 182 | IcoPath = "Images/Everything.light.png", 183 | Action = e => 184 | { 185 | using var process = new Process(); 186 | process.StartInfo.FileName = exe; 187 | process.StartInfo.UseShellExecute = true; 188 | process.StartInfo.Arguments = $@"-s ""{query.Replace("\"", "\"\"\"")}"""; 189 | try 190 | { 191 | process.Start(); 192 | return true; 193 | } 194 | catch (Win32Exception) 195 | { 196 | return false; 197 | } 198 | }, 199 | Score = int.MinValue, 200 | QueryTextDisplay = orgqry, 201 | }; 202 | yield return more; 203 | } 204 | 205 | for (uint i = 0; i < resultCount; i++) 206 | { 207 | token.ThrowIfCancellationRequested(); 208 | string name = Marshal.PtrToStringUni(Everything_GetResultFileNameW(i)); 209 | string path = Marshal.PtrToStringUni(Everything_GetResultPathW(i)); 210 | if (setting.LoggingLevel < LogLevel.Error && (name == null || path == null)) 211 | { 212 | Log.Warn($"EPT: Result {i} is null for {name} and/or {path}, query: {query}", GetType()); 213 | continue; 214 | } 215 | 216 | string fullPath = Path.Combine(path, name); 217 | 218 | bool isFolder = Everything_IsFolderResult(i); 219 | if (isFolder) 220 | path = fullPath; 221 | 222 | if (setting.LoggingLevel <= LogLevel.Debug) 223 | { 224 | Log.Info( 225 | $"=====EPT: RESULT #{i} =====\n" + 226 | $"Folder : {isFolder}\n" + 227 | $"File Path : ({path.Length}) {(setting.LoggingLevel == LogLevel.Trace ? path : string.Empty)}\n" + 228 | $"File Name : ({name.Length}) {(setting.LoggingLevel == LogLevel.Trace ? name : string.Empty)}\n" + 229 | $"Ext : {Path.GetExtension(fullPath)}", 230 | GetType()); 231 | } 232 | 233 | var r = new Result() 234 | { 235 | Title = name, 236 | ToolTipData = new ToolTipData(name, fullPath), 237 | SubTitle = Resources.plugin_name + ": " + fullPath, 238 | 239 | IcoPath = isFolder ? "Images/folder.png" : (setting.Preview ? 240 | fullPath : "Images/file.png"), 241 | ContextData = new SearchResult() 242 | { 243 | Path = fullPath, 244 | Title = name, 245 | File = !isFolder, 246 | }, 247 | Action = e => 248 | { 249 | using var process = new Process(); 250 | process.StartInfo.FileName = fullPath; 251 | process.StartInfo.WorkingDirectory = path; 252 | process.StartInfo.UseShellExecute = true; 253 | 254 | try 255 | { 256 | process.Start(); 257 | _ = Everything_IncRunCountFromFileNameW(fullPath); 258 | return true; 259 | } 260 | catch (Win32Exception) 261 | { 262 | return false; 263 | } 264 | }, 265 | 266 | QueryTextDisplay = setting.QueryText ? (isFolder ? path : name) : orgqry, 267 | }; 268 | yield return r; 269 | } 270 | } 271 | } 272 | } 273 | -------------------------------------------------------------------------------- /Everything2_ARM64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Everything2_ARM64.dll -------------------------------------------------------------------------------- /Everything2_x64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Everything2_x64.dll -------------------------------------------------------------------------------- /GlobalSuppressions.cs: -------------------------------------------------------------------------------- 1 | // This file is used by Code Analysis to maintain SuppressMessage 2 | // attributes that are applied to this project. 3 | // Project-level suppressions either have no target or are given 4 | // a specific target and scoped to a namespace, type, member, etc. 5 | 6 | using System.Diagnostics.CodeAnalysis; 7 | 8 | [assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1124:Do not use regions", Justification = "Reviewed.")] 9 | [assembly: SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1501:Statement should not be on a single line", Justification = "Reviewed")] 10 | [assembly: SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1503:Braces should not be omitted", Justification = "Reviewed")] 11 | [assembly: SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1516:Elements should be separated by blank line", Justification = "Reviewed")] 12 | [assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1602:Enumeration items should be documented", Justification = "Reviewed")] 13 | [assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1633:File should have header", Justification = "Reviewed")] 14 | [assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1636:FileHeaderCopyrightTextMustMatch", Justification = "Reviewed.")] 15 | [assembly: SuppressMessage("StyleCop.CSharp.SpacingRules", "SA1010:Opening square brackets should be spaced correctly", Justification = "Reviewed")] 16 | [assembly: SuppressMessage("StyleCop.CSharp.SpacingRules", "SA1005:Single line comments should begin with single space", Justification = "Reviewed")] 17 | [assembly: SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1512:Single-line comments should not be followed by blank line", Justification = "Reviewed")] 18 | -------------------------------------------------------------------------------- /Images/Everything.dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Images/Everything.dark.png -------------------------------------------------------------------------------- /Images/Everything.light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Images/Everything.light.png -------------------------------------------------------------------------------- /Images/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Images/file.png -------------------------------------------------------------------------------- /Images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Images/folder.png -------------------------------------------------------------------------------- /Images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/Images/warning.png -------------------------------------------------------------------------------- /Interop/NativeMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | namespace Community.PowerToys.Run.Plugin.Everything.Interop 5 | { 6 | public sealed partial class NativeMethods 7 | { 8 | #region FlagsEnums 9 | [Flags] 10 | internal enum Request 11 | { 12 | FILE_NAME = 0x00000001, 13 | PATH = 0x00000002, 14 | FULL_PATH_AND_FILE_NAME = 0x00000004, 15 | EXTENSION = 0x00000008, 16 | SIZE = 0x00000010, 17 | DATE_CREATED = 0x00000020, 18 | DATE_MODIFIED = 0x00000040, 19 | DATE_ACCESSED = 0x00000080, 20 | ATTRIBUTES = 0x00000100, 21 | FILE_LIST_FILE_NAME = 0x00000200, 22 | RUN_COUNT = 0x00000400, 23 | DATE_RUN = 0x00000800, 24 | DATE_RECENTLY_CHANGED = 0x00001000, 25 | HIGHLIGHTED_FILE_NAME = 0x00002000, 26 | HIGHLIGHTED_PATH = 0x00004000, 27 | HIGHLIGHTED_FULL_PATH_AND_FILE_NAME = 0x00008000, 28 | } 29 | 30 | public enum Sort 31 | { 32 | NAME_ASCENDING = 1, 33 | NAME_DESCENDING, 34 | PATH_ASCENDING, 35 | PATH_DESCENDING, 36 | SIZE_ASCENDING, 37 | SIZE_DESCENDING, 38 | EXTENSION_ASCENDING, 39 | EXTENSION_DESCENDING, 40 | TYPE_NAME_ASCENDING, 41 | TYPE_NAME_DESCENDING, 42 | DATE_CREATED_ASCENDING, 43 | DATE_CREATED_DESCENDING, 44 | DATE_MODIFIED_ASCENDING, 45 | DATE_MODIFIED_DESCENDING, 46 | ATTRIBUTES_ASCENDING, 47 | ATTRIBUTES_DESCENDING, 48 | FILE_LIST_FILENAME_ASCENDING, 49 | FILE_LIST_FILENAME_DESCENDING, 50 | RUN_COUNT_ASCENDING, 51 | RUN_COUNT_DESCENDING, 52 | DATE_RECENTLY_CHANGED_ASCENDING, 53 | DATE_RECENTLY_CHANGED_DESCENDING, 54 | DATE_ACCESSED_ASCENDING, 55 | DATE_ACCESSED_DESCENDING, 56 | DATE_RUN_ASCENDING, 57 | DATE_RUN_DESCENDING, 58 | } 59 | #endregion 60 | #if X64 61 | internal const string dllName = "Everything2_x64.dll"; 62 | #else 63 | internal const string dllName = "Everything2_ARM64.dll"; 64 | #endif 65 | [LibraryImport(dllName)] 66 | internal static partial void Everything_CleanUp(); 67 | [LibraryImport(dllName)] 68 | internal static partial uint Everything_GetLastError(); 69 | [LibraryImport(dllName)] 70 | internal static partial uint Everything_GetNumResults(); 71 | [LibraryImport(dllName)] 72 | [return: MarshalAs(UnmanagedType.Bool)] 73 | internal static partial bool Everything_GetMatchPath(); 74 | [LibraryImport(dllName)] 75 | internal static partial uint Everything_GetMax(); 76 | [LibraryImport(dllName)] 77 | internal static partial uint Everything_GetMinorVersion(); 78 | [LibraryImport(dllName)] 79 | [return: MarshalAs(UnmanagedType.Bool)] 80 | internal static partial bool Everything_GetRegex(); 81 | [LibraryImport(dllName)] 82 | internal static partial IntPtr Everything_GetResultFileNameW(uint nIndex); 83 | [LibraryImport(dllName)] 84 | internal static partial IntPtr Everything_GetResultPathW(uint nIndex); 85 | [LibraryImport(dllName)] 86 | internal static partial uint Everything_GetSort(); 87 | [LibraryImport(dllName, StringMarshalling = StringMarshalling.Utf16)] 88 | internal static partial uint Everything_IncRunCountFromFileNameW(string lpFileName); 89 | [LibraryImport(dllName)] 90 | [return: MarshalAs(UnmanagedType.Bool)] 91 | internal static partial bool Everything_IsFolderResult(uint index); 92 | [LibraryImport(dllName)] 93 | [return: MarshalAs(UnmanagedType.Bool)] 94 | internal static partial bool Everything_QueryW([MarshalAs(UnmanagedType.Bool)] bool bWait); 95 | [LibraryImport(dllName)] 96 | internal static partial void Everything_SetMax(uint dwMax); 97 | [LibraryImport(dllName)] 98 | internal static partial void Everything_SetRegex([MarshalAs(UnmanagedType.Bool)] bool bEnable); 99 | [LibraryImport(dllName)] 100 | internal static partial void Everything_SetRequestFlags(Request RequestFlags); 101 | [LibraryImport(dllName, StringMarshalling = StringMarshalling.Utf16)] 102 | internal static partial void Everything_SetSearchW(string lpSearchString); 103 | [LibraryImport(dllName)] 104 | [return: MarshalAs(UnmanagedType.Bool)] 105 | internal static partial bool Everything_SetMatchPath([MarshalAs(UnmanagedType.Bool)] bool bEnable); 106 | [LibraryImport(dllName)] 107 | internal static partial void Everything_SetSort(Sort SortType); 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 2.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 4 | 5 | 1. DEFINITIONS 6 | 7 | “Contribution” means: 8 | 9 | a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and 10 | 11 | b) in the case of each subsequent Contributor: 12 | i) changes to the Program, and 13 | ii) additions to the Program; 14 | where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. 15 | 16 | “Contributor” means any person or entity that Distributes the Program. 17 | 18 | “Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. 19 | 20 | “Program” means the Contributions Distributed in accordance with this Agreement. 21 | 22 | “Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. 23 | 24 | “Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. 25 | 26 | “Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. 27 | 28 | “Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. 29 | 30 | “Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. 31 | 32 | “Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. 33 | 34 | 2. GRANT OF RIGHTS 35 | 36 | a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. 37 | 38 | b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. 39 | 40 | c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. 41 | 42 | d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 43 | 44 | e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). 45 | 46 | 3. REQUIREMENTS 47 | 48 | 3.1 If a Contributor Distributes the Program in any form, then: 49 | 50 | a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and 51 | 52 | b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: 53 | i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; 54 | 55 | ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; 56 | 57 | iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and 58 | 59 | iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. 60 | 61 | 3.2 When the Program is Distributed as Source Code: 62 | 63 | a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and 64 | 65 | b) a copy of this Agreement must be included with each copy of the Program. 66 | 67 | 3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. 68 | 69 | 4. COMMERCIAL DISTRIBUTION 70 | 71 | Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. 72 | 73 | For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. 74 | 75 | 5. NO WARRANTY 76 | 77 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 78 | 79 | 6. DISCLAIMER OF LIABILITY 80 | 81 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 82 | 83 | 7. GENERAL 84 | 85 | If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. 86 | 87 | If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. 88 | 89 | All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. 90 | 91 | Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. 92 | 93 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. 94 | 95 | Exhibit A – Form of Secondary Licenses Notice 96 | 97 | “This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” 98 | 99 | Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. 100 | 101 | If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. 102 | 103 | You may add additional accurate notices of copyright ownership. -------------------------------------------------------------------------------- /Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Net.Http; 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | using System.Threading; 9 | using System.Threading.Tasks; 10 | using System.Windows; 11 | using System.Windows.Controls; 12 | using Community.PowerToys.Run.Plugin.Everything.ContextMenu; 13 | using Community.PowerToys.Run.Plugin.Everything.Properties; 14 | using Microsoft.PowerToys.Settings.UI.Library; 15 | using NLog; 16 | using PowerLauncher.Plugin; 17 | using Wox.Infrastructure.Storage; 18 | using Wox.Plugin; 19 | using Wox.Plugin.Logger; 20 | using static Community.PowerToys.Run.Plugin.Everything.Interop.NativeMethods; 21 | 22 | namespace Community.PowerToys.Run.Plugin.Everything 23 | { 24 | public class Main : IPlugin, IDisposable, IDelayedExecutionPlugin, IContextMenu, ISettingProvider, IPluginI18n, ISavable 25 | { 26 | public static string PluginID => "A86867E2D932459CBD77D176373DD657"; 27 | public string Name => Resources.plugin_name; 28 | public string Description => Resources.plugin_description; 29 | private readonly Settings _setting = new(); 30 | private readonly PluginJsonStorage _storage = new(); 31 | private readonly bool _isArm = RuntimeInformation.ProcessArchitecture == Architecture.Arm64; 32 | private Everything _everything; 33 | private ContextMenuLoader _contextMenuLoader; 34 | private CancellationTokenSource cts = new(); 35 | private bool _disposed; 36 | 37 | public IEnumerable AdditionalOptions => 38 | [ 39 | new() 40 | { 41 | Key = nameof(Settings.Context), 42 | DisplayLabel = Resources.Context, 43 | DisplayDescription = Resources.Context_Description, 44 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Textbox, 45 | TextValue = _setting.Context, 46 | }, 47 | new() 48 | { 49 | Key = nameof(Settings.Sort), 50 | DisplayLabel = Resources.Sort, 51 | DisplayDescription = Resources.Sort_Description, 52 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Combobox, 53 | ComboBoxItems = Enum.GetValues().Cast().Select(v => new KeyValuePair(((Sort)v).ToString(), v + string.Empty)).ToList(), 54 | ComboBoxValue = (int)_setting.Sort, 55 | }, 56 | new() 57 | { 58 | Key = nameof(Settings.Max), 59 | DisplayLabel = Resources.Max, 60 | DisplayDescription = Resources.Max_Description, 61 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Numberbox, 62 | NumberValue = _setting.Max, 63 | }, 64 | new() 65 | { 66 | Key = nameof(Settings.Prefix), 67 | DisplayLabel = Resources.Prefix, 68 | DisplayDescription = Resources.Prefix_Description, 69 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Textbox, 70 | TextValue = _setting.Prefix, 71 | }, 72 | new() 73 | { 74 | Key = nameof(Settings.EverythingPath), 75 | DisplayLabel = Resources.EverythingPath, 76 | DisplayDescription = Resources.EverythingPath_Description, 77 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Textbox, 78 | TextValue = _setting.EverythingPath, 79 | }, 80 | new() 81 | { 82 | Key = nameof(Settings.CustomProgram), 83 | DisplayLabel = Resources.CustomProgram, 84 | DisplayDescription = Resources.CustomProgram_Description, 85 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Textbox, 86 | TextValue = _setting.CustomProgram, 87 | }, 88 | new() 89 | { 90 | Key = nameof(Settings.CustomArg), 91 | DisplayLabel = Resources.CustomArg, 92 | DisplayDescription = Resources.CustomArg_Description, 93 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Textbox, 94 | TextValue = _setting.CustomArg, 95 | }, 96 | new() 97 | { 98 | Key = nameof(Settings.Copy), 99 | DisplayLabel = Resources.SwapCopy, 100 | DisplayDescription = Resources.SwapCopy_Description, 101 | Value = _setting.Copy, 102 | }, 103 | new() 104 | { 105 | Key = nameof(Settings.EnvVar), 106 | DisplayLabel = Resources.EnvVar, 107 | DisplayDescription = Resources.EnvVar_Description, 108 | Value = _setting.EnvVar, 109 | }, 110 | new() 111 | { 112 | Key = nameof(Settings.MatchPath), 113 | DisplayLabel = Resources.Match_path, 114 | DisplayDescription = Resources.Match_path_Description, 115 | Value = _setting.MatchPath, 116 | }, 117 | new() 118 | { 119 | Key = nameof(Settings.Preview), 120 | DisplayLabel = Resources.Preview, 121 | DisplayDescription = Resources.Preview_Description, 122 | Value = _setting.Preview, 123 | }, 124 | new() 125 | { 126 | Key = nameof(Settings.QueryText), 127 | DisplayLabel = Resources.QueryText, 128 | DisplayDescription = Resources.QueryText_Description, 129 | Value = _setting.QueryText, 130 | }, 131 | new() 132 | { 133 | Key = nameof(Settings.RegEx), 134 | DisplayLabel = Resources.RegEx, 135 | DisplayDescription = Resources.RegEx_Description, 136 | Value = _setting.RegEx, 137 | }, 138 | new() 139 | { 140 | Key = nameof(Settings.ShowMore), 141 | DisplayLabel = Resources.ShowMore, 142 | DisplayDescription = Resources.ShowMore_Description, 143 | Value = _setting.ShowMore, 144 | }, 145 | new() 146 | { 147 | Key = nameof(Settings.Updates), 148 | DisplayLabel = Resources.Updates, 149 | DisplayDescription = $"v{Assembly.GetExecutingAssembly().GetName().Version}", 150 | Value = _setting.Updates, 151 | }, 152 | new() 153 | { 154 | Key = nameof(Settings.LoggingLevel), 155 | DisplayLabel = "Log Level", 156 | PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Combobox, 157 | ComboBoxItems = LogLevel.AllLoggingLevels.Select(d => new KeyValuePair(d.ToString(), d.Ordinal + string.Empty)).ToList(), 158 | ComboBoxValue = _setting.LoggingLevel.Ordinal, 159 | }, 160 | ]; 161 | 162 | public void Init(PluginInitContext context) 163 | { 164 | // Using self compiled dll to avoid signiture matching (https://github.com/lin-ycv/EverythingSDK/tree/main) 165 | //string dll = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Everything64.dll"); 166 | 167 | //if (!File.Exists(dll)) 168 | //{ 169 | // MessageBoxResult mbox = MessageBox.Show(Resources.MissingLib, "EPT: Downloader", MessageBoxButton.YesNo); 170 | // if (mbox == MessageBoxResult.Yes) 171 | // { 172 | // using HttpClient httpClient = new(); 173 | // httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0"); 174 | // string url = $"https://github.com/lin-ycv/EverythingPowerToys/raw/refs/heads/lib/Everything{(_isArm ? "ARM" : string.Empty)}64.dll"; 175 | // byte[] fileContent = httpClient.GetByteArrayAsync(url).Result; 176 | // File.WriteAllBytes(dll, fileContent); 177 | // } 178 | // else 179 | // { 180 | // throw new DllNotFoundException("EPT: Everything64.dll not found, either press Yes on the download prompt, or manually load in the dll @ %LOCALAPPDATA%\\Microsoft\\PowerToys\\PowerToys Run\\Plugins\\Everything"); 181 | // } 182 | //} 183 | 184 | if (_setting.LoggingLevel <= LogLevel.Debug) 185 | Log.Info("EPT: Init", GetType()); 186 | 187 | Update.UpdateSettings upSettings = _storage.Load(); 188 | if (_setting.Updates) 189 | Task.Run(() => new Update.UpdateChecker().Async(Assembly.GetExecutingAssembly().GetName().Version, _setting, upSettings, _isArm)); 190 | 191 | if (Everything_GetMinorVersion() < 5) _setting.Getfilters(); 192 | _everything = new Everything(_setting); 193 | _contextMenuLoader = new ContextMenuLoader(context, _setting.Context); 194 | _contextMenuLoader.Update(_setting); 195 | var history = PluginManager.GlobalPlugins.FirstOrDefault(p => p.Metadata.ID == "C88512156BB74580AADF7252E130BA8D" && !p.Metadata.Disabled); 196 | if (history != null) 197 | Task.Run(() => MessageBox.Show(Resources.History, "EPT: History Conflict", MessageBoxButton.OK, MessageBoxImage.Warning)); 198 | if (_setting.LoggingLevel <= LogLevel.Debug) 199 | Log.Info("EPT: Init Complete", GetType()); 200 | } 201 | 202 | public void UpdateSettings(PowerLauncherPluginSettings settings) 203 | { 204 | if (settings.AdditionalOptions != null) 205 | { 206 | _setting.Sort = (Sort)settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Sort)).ComboBoxValue; 207 | _setting.Max = (uint)settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Max)).NumberValue; 208 | _setting.Context = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Context)).TextValue; 209 | _setting.RegEx = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.RegEx)).Value; 210 | _setting.Preview = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Preview)).Value; 211 | _setting.MatchPath = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.MatchPath)).Value; 212 | _setting.Copy = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Copy)).Value; 213 | _setting.QueryText = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.QueryText)).Value; 214 | _setting.EnvVar = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.EnvVar)).Value; 215 | _setting.Updates = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Updates)).Value; 216 | _setting.Prefix = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.Prefix)).TextValue; 217 | _setting.EverythingPath = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.EverythingPath)).TextValue; 218 | _setting.CustomProgram = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.CustomProgram)).TextValue; 219 | _setting.CustomArg = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.CustomArg)).TextValue; 220 | _setting.ShowMore = settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.ShowMore)).Value; 221 | _setting.LoggingLevel = LogLevel.FromOrdinal(settings.AdditionalOptions.FirstOrDefault(x => x.Key == nameof(_setting.LoggingLevel)).ComboBoxValue); 222 | 223 | _everything?.UpdateSettings(_setting); 224 | _contextMenuLoader?.Update(_setting); 225 | } 226 | } 227 | 228 | public List Query(Query query) 229 | { 230 | return null; 231 | } 232 | 233 | public List Query(Query query, bool delayedExecution) 234 | { 235 | List results = []; 236 | if (!string.IsNullOrEmpty(query.Search)) 237 | { 238 | string searchQuery = query.Search; 239 | 240 | try 241 | { 242 | cts.Cancel(); 243 | cts = new(); 244 | results.AddRange(_everything.Query(searchQuery, _setting, cts.Token)); 245 | } 246 | catch (OperationCanceledException) 247 | { 248 | if (_setting.LoggingLevel <= LogLevel.Debug) 249 | Log.Info("EPT: Query Cancelled", GetType()); 250 | } 251 | catch (System.ComponentModel.Win32Exception) 252 | { 253 | results.Add(new Result() 254 | { 255 | Title = Resources.Everything_not_running, 256 | SubTitle = Resources.Everything_ini, 257 | IcoPath = "Images/warning.png", 258 | Score = int.MaxValue, 259 | }); 260 | } 261 | catch (Exception e) 262 | { 263 | Log.Exception($"EPT: Exception! {e.Message}\n", e, GetType()); 264 | } 265 | } 266 | 267 | return results; 268 | } 269 | 270 | protected virtual void Dispose(bool disposing) 271 | { 272 | if (!_disposed) 273 | { 274 | if (disposing) 275 | { 276 | cts.Cancel(); 277 | cts.Dispose(); 278 | Everything_CleanUp(); 279 | } 280 | 281 | _disposed = true; 282 | } 283 | } 284 | 285 | public void Dispose() 286 | { 287 | // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method 288 | Dispose(disposing: true); 289 | GC.SuppressFinalize(this); 290 | } 291 | 292 | public List LoadContextMenus(Result selectedResult) => _contextMenuLoader.LoadContextMenus(selectedResult); 293 | public Control CreateSettingPanel() => throw new NotImplementedException(); 294 | public string GetTranslatedPluginTitle() => Resources.plugin_name; 295 | public string GetTranslatedPluginDescription() => Resources.plugin_description; 296 | public void Save() => _storage.Save(); 297 | } 298 | } 299 | -------------------------------------------------------------------------------- /NSIS/Everything.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lin-ycv/EverythingPowerToys/92881d81d82106b403b746b337ff032c0279dac4/NSIS/Everything.ico -------------------------------------------------------------------------------- /NSIS/exeCreator.nsi: -------------------------------------------------------------------------------- 1 | !include "MUI2.nsh" 2 | !define EPT "EverythingPT" 3 | !define SMWCUE "Software\Microsoft\Windows\CurrentVersion\Uninstall\EverythingPowerToys" 4 | ;-------------------------------- 5 | ;General 6 | Name "${EPT}" 7 | BrandingText "v${ver} ${platform}" 8 | SetCompressor zlib 9 | OutFile ".\..\bin\${EPT}-${ver}-${platform}.exe" 10 | Unicode True 11 | RequestExecutionLevel user 12 | SetOverwrite ifnewer 13 | InstallDir "$LOCALAPPDATA\Microsoft\PowerToys\PowerToys Run\Plugins\Everything" 14 | FileErrorText "Can't access: $\r$\n$\r$\n$0$\r$\n$\r$\nPowerToys is probably still running, please close it and retry." 15 | ;-------------------------------- 16 | ;Interface Settings 17 | !define MUI_ICON "Everything.ico" 18 | !define MUI_ABORTWARNING 19 | 20 | !define MUI_UNICON "Everything.ico" 21 | !define MUI_UNABORTWARNING 22 | ;-------------------------------- 23 | ;Pages 24 | !insertmacro MUI_PAGE_LICENSE "..\LICENSE" 25 | !insertmacro MUI_PAGE_INSTFILES 26 | 27 | !insertmacro MUI_UNPAGE_CONFIRM 28 | !insertmacro MUI_UNPAGE_INSTFILES 29 | 30 | !insertmacro MUI_LANGUAGE "English" 31 | ;-------------------------------- 32 | ;Version Information 33 | VIProductVersion "${ver}.0" 34 | VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${EPT} Setup" 35 | VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "lin-ycv" 36 | VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "lin-ycv" 37 | VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Everything search plugin for PowerToys Run" 38 | VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${ver}" 39 | VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${ver}" 40 | ;-------------------------------- 41 | Section "" 42 | SetOutPath $INSTDIR 43 | File /r "${direct}\*" 44 | 45 | WriteUninstaller "$INSTDIR\uninstall.exe" 46 | 47 | WriteRegStr HKCU "${SMWCUE}" "DisplayIcon" "$INSTDIR\uninstall.exe" 48 | WriteRegStr HKCU "${SMWCUE}" "DisplayName" "${EPT} (${platform})" 49 | WriteRegStr HKCU "${SMWCUE}" "DisplayVersion" "${ver}" 50 | WriteRegStr HKCU "${SMWCUE}" "InstallLocation" "$INSTDIR" 51 | WriteRegStr HKCU "${SMWCUE}" "Publisher" "Lin-ycv" 52 | 53 | WriteRegStr HKCU "${SMWCUE}" "UninstallString" "$INSTDIR\uninstall.exe" 54 | WriteRegDWORD HKCU "${SMWCUE}" "NoModify" 1 55 | WriteRegDWORD HKCU "${SMWCUE}" "NoRepair" 1 56 | 57 | IfErrors 0 +5 58 | SetErrorlevel 1 59 | IfSilent +2 60 | MessageBox MB_ICONEXCLAMATION "Unable to install, PowerToys is probably still running, please close it manually before install." 61 | Abort 62 | 63 | SetErrorlevel 0 64 | SectionEnd 65 | ;-------------------------------- 66 | Section "Uninstall" 67 | 68 | MessageBox MB_YESNO "This'll forcibly close PowerToys and remove all traces of EverythingPowerToys$\r$\nAre you sure you want to continue?" /SD IDYES IDYES true IDNO false 69 | 70 | false: 71 | DetailPrint "Uninstall cancelled, all files remains intact" 72 | Abort 73 | 74 | true: 75 | ExecWait `taskkill /im PowerToys.exe /f /t` 76 | Sleep 5000 77 | rmdir /r "$INSTDIR" 78 | rmdir /r "$LOCALAPPDATA\Microsoft\PowerToys\PowerToys Run\Settings\Plugins\Community.PowerToys.Run.Plugin.Everything" 79 | DeleteRegKey HKCU "${SMWCUE}" 80 | 81 | IfErrors 0 +4 82 | SetErrorlevel 0 83 | IfSilent +2 84 | MessageBox MB_ICONEXCLAMATION "Some file couldn't be removed, PowerToys is probably still running.$\r$\n$\r$\nCheck for leftover files in $INSTDIR" 85 | 86 | SetErrorlevel 0 87 | SectionEnd -------------------------------------------------------------------------------- /Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Community.PowerToys.Run.Plugin.Everything.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | public class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | public static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Community.PowerToys.Run.Plugin.Everything.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | public static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized string similar to Fail to set text in clipboard. 65 | /// 66 | public static string clipboard_failed { 67 | get { 68 | return ResourceManager.GetString("clipboard_failed", resourceCulture); 69 | } 70 | } 71 | 72 | /// 73 | /// Looks up a localized string similar to Context Menu. 74 | /// 75 | public static string Context { 76 | get { 77 | return ResourceManager.GetString("Context", resourceCulture); 78 | } 79 | } 80 | 81 | /// 82 | /// Looks up a localized string similar to Configure context menu options and order. 83 | ///0_Open folder, 1_Run as Admin, 2_Run as User, 3_Copy, 4_Copy Path, 5_Open in Console, 6_Open in custom program, 7_Delete file/folder, 8_Shell context menu. 84 | /// 85 | public static string Context_Description { 86 | get { 87 | return ResourceManager.GetString("Context_Description", resourceCulture); 88 | } 89 | } 90 | 91 | /// 92 | /// Looks up a localized string similar to Copy . 93 | /// 94 | public static string copy_file { 95 | get { 96 | return ResourceManager.GetString("copy_file", resourceCulture); 97 | } 98 | } 99 | 100 | /// 101 | /// Looks up a localized string similar to Copy path . 102 | /// 103 | public static string copy_path { 104 | get { 105 | return ResourceManager.GetString("copy_path", resourceCulture); 106 | } 107 | } 108 | 109 | /// 110 | /// Looks up a localized string similar to (Ctrl+C). 111 | /// 112 | public static string copy_shortcut { 113 | get { 114 | return ResourceManager.GetString("copy_shortcut", resourceCulture); 115 | } 116 | } 117 | 118 | /// 119 | /// Looks up a localized string similar to (Ctrl+Alt+C). 120 | /// 121 | public static string copy_shortcutAlt { 122 | get { 123 | return ResourceManager.GetString("copy_shortcutAlt", resourceCulture); 124 | } 125 | } 126 | 127 | /// 128 | /// Looks up a localized string similar to Launch argument. 129 | /// 130 | public static string CustomArg { 131 | get { 132 | return ResourceManager.GetString("CustomArg", resourceCulture); 133 | } 134 | } 135 | 136 | /// 137 | /// Looks up a localized string similar to Argument to pass to the program when launching. [$P=path of the selected result ]. 138 | /// 139 | public static string CustomArg_Description { 140 | get { 141 | return ResourceManager.GetString("CustomArg_Description", resourceCulture); 142 | } 143 | } 144 | 145 | /// 146 | /// Looks up a localized string similar to Custom Program. 147 | /// 148 | public static string CustomProgram { 149 | get { 150 | return ResourceManager.GetString("CustomProgram", resourceCulture); 151 | } 152 | } 153 | 154 | /// 155 | /// Looks up a localized string similar to Path to a external program that'll open the selected result. 156 | /// 157 | public static string CustomProgram_Description { 158 | get { 159 | return ResourceManager.GetString("CustomProgram_Description", resourceCulture); 160 | } 161 | } 162 | 163 | /// 164 | /// Looks up a localized string similar to Delete file/folder (Ctrl+Del). 165 | /// 166 | public static string delete_result { 167 | get { 168 | return ResourceManager.GetString("delete_result", resourceCulture); 169 | } 170 | } 171 | 172 | /// 173 | /// Looks up a localized string similar to Enviroment Variables. 174 | /// 175 | public static string EnvVar { 176 | get { 177 | return ResourceManager.GetString("EnvVar", resourceCulture); 178 | } 179 | } 180 | 181 | /// 182 | /// Looks up a localized string similar to Expand enviroment variables, such as %appdata%, so that they work properly at the cost of query time.. 183 | /// 184 | public static string EnvVar_Description { 185 | get { 186 | return ResourceManager.GetString("EnvVar_Description", resourceCulture); 187 | } 188 | } 189 | 190 | /// 191 | /// Looks up a localized string similar to Install Everything if not installed. 192 | /// 193 | public static string Everything_ini { 194 | get { 195 | return ResourceManager.GetString("Everything_ini", resourceCulture); 196 | } 197 | } 198 | 199 | /// 200 | /// Looks up a localized string similar to Everything is not running. 201 | /// 202 | public static string Everything_not_running { 203 | get { 204 | return ResourceManager.GetString("Everything_not_running", resourceCulture); 205 | } 206 | } 207 | 208 | /// 209 | /// Looks up a localized string similar to Everything64.exe. 210 | /// 211 | public static string EverythingPath { 212 | get { 213 | return ResourceManager.GetString("EverythingPath", resourceCulture); 214 | } 215 | } 216 | 217 | /// 218 | /// Looks up a localized string similar to Location of Everything.exe if it's not installed in "Program Files". 219 | /// 220 | public static string EverythingPath_Description { 221 | get { 222 | return ResourceManager.GetString("EverythingPath_Description", resourceCulture); 223 | } 224 | } 225 | 226 | /// 227 | /// Looks up a localized string similar to Fail to open folder at. 228 | /// 229 | public static string folder_open_failed { 230 | get { 231 | return ResourceManager.GetString("folder_open_failed", resourceCulture); 232 | } 233 | } 234 | 235 | /// 236 | /// Looks up a localized string similar to The "Include in global result" option is turned on for the History plugin, which could lead to conflicts with EPT.. 237 | /// 238 | public static string History { 239 | get { 240 | return ResourceManager.GetString("History", resourceCulture); 241 | } 242 | } 243 | 244 | /// 245 | /// Looks up a localized string similar to Match Path. 246 | /// 247 | public static string Match_path { 248 | get { 249 | return ResourceManager.GetString("Match_path", resourceCulture); 250 | } 251 | } 252 | 253 | /// 254 | /// Looks up a localized string similar to Search path in additional to file/folder name.. 255 | /// 256 | public static string Match_path_Description { 257 | get { 258 | return ResourceManager.GetString("Match_path_Description", resourceCulture); 259 | } 260 | } 261 | 262 | /// 263 | /// Looks up a localized string similar to Max. 264 | /// 265 | public static string Max { 266 | get { 267 | return ResourceManager.GetString("Max", resourceCulture); 268 | } 269 | } 270 | 271 | /// 272 | /// Looks up a localized string similar to The maximum amount of results to display in the results.. 273 | /// 274 | public static string Max_Description { 275 | get { 276 | return ResourceManager.GetString("Max_Description", resourceCulture); 277 | } 278 | } 279 | 280 | /// 281 | /// Looks up a localized string similar to Everything64.dll is missing, automatically download this file?. 282 | /// 283 | public static string MissingLib { 284 | get { 285 | return ResourceManager.GetString("MissingLib", resourceCulture); 286 | } 287 | } 288 | 289 | /// 290 | /// Looks up a localized string similar to See more.... 291 | /// 292 | public static string more_results { 293 | get { 294 | return ResourceManager.GetString("more_results", resourceCulture); 295 | } 296 | } 297 | 298 | /// 299 | /// Looks up a localized string similar to Open Everything and see the remaining results. 300 | /// 301 | public static string more_results_Subtitle { 302 | get { 303 | return ResourceManager.GetString("more_results_Subtitle", resourceCulture); 304 | } 305 | } 306 | 307 | /// 308 | /// Looks up a localized string similar to Open containing folder (Ctrl+Shift+E). 309 | /// 310 | public static string open_containing_folder { 311 | get { 312 | return ResourceManager.GetString("open_containing_folder", resourceCulture); 313 | } 314 | } 315 | 316 | /// 317 | /// Looks up a localized string similar to Open path in console (Ctrl+Shift+C). 318 | /// 319 | public static string open_in_console { 320 | get { 321 | return ResourceManager.GetString("open_in_console", resourceCulture); 322 | } 323 | } 324 | 325 | /// 326 | /// Looks up a localized string similar to Open path in custom program (Ctrl+N). 327 | /// 328 | public static string open_in_custom { 329 | get { 330 | return ResourceManager.GetString("open_in_custom", resourceCulture); 331 | } 332 | } 333 | 334 | /// 335 | /// Looks up a localized string similar to Get search results from Everything. 336 | /// 337 | public static string plugin_description { 338 | get { 339 | return ResourceManager.GetString("plugin_description", resourceCulture); 340 | } 341 | } 342 | 343 | /// 344 | /// Looks up a localized string similar to Everything. 345 | /// 346 | public static string plugin_name { 347 | get { 348 | return ResourceManager.GetString("plugin_name", resourceCulture); 349 | } 350 | } 351 | 352 | /// 353 | /// Looks up a localized string similar to Query Prefix. 354 | /// 355 | public static string Prefix { 356 | get { 357 | return ResourceManager.GetString("Prefix", resourceCulture); 358 | } 359 | } 360 | 361 | /// 362 | /// Looks up a localized string similar to Adds prefix to all queries, so that you can always include certain filters/modifiers without typing it every time. 363 | ///Space is not added automatically between prefix and query.. 364 | /// 365 | public static string Prefix_Description { 366 | get { 367 | return ResourceManager.GetString("Prefix_Description", resourceCulture); 368 | } 369 | } 370 | 371 | /// 372 | /// Looks up a localized string similar to Preview. 373 | /// 374 | public static string Preview { 375 | get { 376 | return ResourceManager.GetString("Preview", resourceCulture); 377 | } 378 | } 379 | 380 | /// 381 | /// Looks up a localized string similar to Preview file content as icon, may cause freezing if file is not local.. 382 | /// 383 | public static string Preview_Description { 384 | get { 385 | return ResourceManager.GetString("Preview_Description", resourceCulture); 386 | } 387 | } 388 | 389 | /// 390 | /// Looks up a localized string similar to Query Text. 391 | /// 392 | public static string QueryText { 393 | get { 394 | return ResourceManager.GetString("QueryText", resourceCulture); 395 | } 396 | } 397 | 398 | /// 399 | /// Looks up a localized string similar to Selected result can update query text. Helps display additional info, but may change display results.. 400 | /// 401 | public static string QueryText_Description { 402 | get { 403 | return ResourceManager.GetString("QueryText_Description", resourceCulture); 404 | } 405 | } 406 | 407 | /// 408 | /// Looks up a localized string similar to RegEx. 409 | /// 410 | public static string RegEx { 411 | get { 412 | return ResourceManager.GetString("RegEx", resourceCulture); 413 | } 414 | } 415 | 416 | /// 417 | /// Looks up a localized string similar to Enable regular expression in search. 418 | ///Recommend using regex: in query instead of enabling this option. 419 | /// 420 | public static string RegEx_Description { 421 | get { 422 | return ResourceManager.GetString("RegEx_Description", resourceCulture); 423 | } 424 | } 425 | 426 | /// 427 | /// Looks up a localized string similar to Run as administrator (Ctrl+Shift+Enter). 428 | /// 429 | public static string run_as_admin { 430 | get { 431 | return ResourceManager.GetString("run_as_admin", resourceCulture); 432 | } 433 | } 434 | 435 | /// 436 | /// Looks up a localized string similar to Run as different user (Ctrl+Shift+U). 437 | /// 438 | public static string run_as_user { 439 | get { 440 | return ResourceManager.GetString("run_as_user", resourceCulture); 441 | } 442 | } 443 | 444 | /// 445 | /// Looks up a localized string similar to Shell context menu (Ctrl+M). 446 | /// 447 | public static string scm { 448 | get { 449 | return ResourceManager.GetString("scm", resourceCulture); 450 | } 451 | } 452 | 453 | /// 454 | /// Looks up a localized string similar to Show more. 455 | /// 456 | public static string ShowMore { 457 | get { 458 | return ResourceManager.GetString("ShowMore", resourceCulture); 459 | } 460 | } 461 | 462 | /// 463 | /// Looks up a localized string similar to Display a result that opens Everything with the current query.. 464 | /// 465 | public static string ShowMore_Description { 466 | get { 467 | return ResourceManager.GetString("ShowMore_Description", resourceCulture); 468 | } 469 | } 470 | 471 | /// 472 | /// Looks up a localized string similar to Sort. 473 | /// 474 | public static string Sort { 475 | get { 476 | return ResourceManager.GetString("Sort", resourceCulture); 477 | } 478 | } 479 | 480 | /// 481 | /// Looks up a localized string similar to Set result sorting method.. 482 | /// 483 | public static string Sort_Description { 484 | get { 485 | return ResourceManager.GetString("Sort_Description", resourceCulture); 486 | } 487 | } 488 | 489 | /// 490 | /// Looks up a localized string similar to Copy. 491 | /// 492 | public static string SwapCopy { 493 | get { 494 | return ResourceManager.GetString("SwapCopy", resourceCulture); 495 | } 496 | } 497 | 498 | /// 499 | /// Looks up a localized string similar to Set Ctrl+C to copy file/folder, Ctrl+Alt+C to copy path.. 500 | /// 501 | public static string SwapCopy_Description { 502 | get { 503 | return ResourceManager.GetString("SwapCopy_Description", resourceCulture); 504 | } 505 | } 506 | 507 | /// 508 | /// Looks up a localized string similar to Install new version of EverythingPowerToys? 509 | ///Clicking 'No' will disable future notice for this version. 510 | /// 511 | ///Installed: {0} 512 | ///Latest: {1}. 513 | /// 514 | public static string UpdateAvailable { 515 | get { 516 | return ResourceManager.GetString("UpdateAvailable", resourceCulture); 517 | } 518 | } 519 | 520 | /// 521 | /// Looks up a localized string similar to Check for updates. 522 | /// 523 | public static string Updates { 524 | get { 525 | return ResourceManager.GetString("Updates", resourceCulture); 526 | } 527 | } 528 | } 529 | } 530 | -------------------------------------------------------------------------------- /Properties/Resources.de-de.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Text konnte nicht in die Zwischenablage kopiert werden 122 | 123 | 124 | Kopieren 125 | 126 | 127 | Pfad kopieren 128 | 129 | 130 | (Strg+C) 131 | 132 | 133 | (Strg+Alt+C) 134 | 135 | 136 | Everything installieren falls es nicht installiert ist 137 | 138 | 139 | Everything wird nicht ausgeführt 140 | 141 | 142 | Ordner konnte nicht geöffnet werden: 143 | 144 | 145 | Pfad suchen 146 | 147 | 148 | Pfad zusätzlich zum Datei-/Ordnernamen suchen 149 | 150 | 151 | Ordner öffnen (Strg+Shift+E) 152 | 153 | 154 | Pfad in der Konsole öffnen (Strg+Shift+C) 155 | 156 | 157 | Everything-Suchergebnisse anzeigen 158 | 159 | 160 | Vorschau 161 | 162 | 163 | Vorschau des Datei-Inhalts als Bild. Kann zum Einfrieren führen, wenn die Datei nicht lokal ist. 164 | 165 | 166 | Abfragetext 167 | 168 | 169 | Ausgewählte Ergebnisse können den Abfragetext aktualisieren. Hilft bei der Anzeige zusätzlicher Informationen, kann aber die Anzeigeergebnisse verändern. 170 | 171 | 172 | Aktiviert reguläre Ausdrücke in der Suche. 173 | 174 | 175 | Als Administrator ausführen (Strg+Shift+Enter) 176 | 177 | 178 | Als anderer Benutzer ausführen (Strg+Shift+U) 179 | 180 | 181 | Tastenkürzel zum Kopieren tauschen 182 | 183 | 184 | Strg+C zum Kopieren von Dateien/Ordnern, Strg+Alt+C zum Kopieren des Pfades. 185 | 186 | -------------------------------------------------------------------------------- /Properties/Resources.es-es.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | No se pudo meter texto en el portapapeles 122 | 123 | 124 | Menú contextual 125 | 126 | 127 | Configurar las opciones del menú contextual y su orden. 128 | 0_Abrir carpeta, 1_Ejecutar como administrador, 2_Ejecutar como usuario, 3_Copiar, 4_Copiar ruta, 5_Abrir en el terminal, 6_Open in custom program, 7_Delete file/folder, 8_Shell context menu 129 | 130 | 131 | Copiar 132 | 133 | 134 | Copiar ruta 135 | 136 | 137 | Variables de entorno 138 | 139 | 140 | Expandir variables de entorno, como %appdata%, de modo que funcionen aún a costa de tiempo de consulta. 141 | 142 | 143 | Instalar Everything si no está instalado 144 | 145 | 146 | Everything no se está ejecutando 147 | 148 | 149 | Falló la apertura de la carpeta en 150 | 151 | 152 | Coincidencia de ruta 153 | 154 | 155 | Buscar ruta además de nombre de archivo/carpeta. 156 | 157 | 158 | Máx 159 | 160 | 161 | El número máximo de elementos a mostrar en los resultados. 162 | 163 | 164 | Abrir carpeta contenedora (Ctrl+Shift+E) 165 | 166 | 167 | Abrir ruta en terminal (Ctrl+Shift+C) 168 | 169 | 170 | Obtener resultados de búsqueda desde Everything 171 | 172 | 173 | Vista previa 174 | 175 | 176 | Vista previa de archivos como iconos. Puede causar bloqueos si el archivo no es local. 177 | 178 | 179 | Texto de búsqueda 180 | 181 | 182 | El resultado seleccionado puede actualizar el texto de búsqueda. Ayuda a mostrar información adicional, pero podría cambiar los resultados mostrados. 183 | 184 | 185 | Permitir expresiones regulares en las búsquedas. 186 | Se recomenda usar expresiones regulares: en la consulta en lugar de habilitar esta opción. 187 | 188 | 189 | Ejecutar como administrador (Ctrl+Shift+Enter) 190 | 191 | 192 | Ejecutar como un usuario diferente (Ctrl+Shift+U) 193 | 194 | 195 | Ordenar 196 | 197 | 198 | Establecer el método de ordenación de resultados. 199 | 200 | 201 | Copiar 202 | 203 | 204 | Establece Ctrl+C para copiar archivo/carpeta, Ctrl+Alt+C para copiar la ruta. 205 | 206 | 207 | ¿Instalar la nueva versión de EverythingPowerToys? 208 | Si pulsas 'No' se deshabilitarán futuras notificaciones para esta versión. 209 | 210 | Instalada: {0} 211 | Última: {1} 212 | 213 | 214 | Comprobar actualizaciones 215 | 216 | -------------------------------------------------------------------------------- /Properties/Resources.fr-fr.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Le texte n'a pas pu être copié dans le presse-papiers 122 | 123 | 124 | Copier 125 | 126 | 127 | Copier le chemin 128 | 129 | 130 | Installer Everything s'il n'est pas installé 131 | 132 | 133 | Everything n'est pas exécuté 134 | 135 | 136 | Le dossier n'a pas pu être ouvert : 137 | 138 | 139 | Respecter le chemin 140 | 141 | 142 | Rechercher le chemin en complément du nom de fichier/dossier 143 | 144 | 145 | Ouvrir un dossier (Ctrl+Shift+E) 146 | 147 | 148 | Ouvrir le chemin dans la console (Ctrl+Shift+C) 149 | 150 | 151 | Afficher les résultats de recherche Everything 152 | 153 | 154 | Aperçu 155 | 156 | 157 | Aperçu du contenu du fichier sous forme d'image. Peut engendrer une latence si le fichier n'est pas local. 158 | 159 | 160 | Texte de la requête 161 | 162 | 163 | Les résultats sélectionnés peuvent mettre à jour le texte de la requête. Aide à afficher des informations supplémentaires, mais peut modifier les résultats de l'affichage. Permet d'afficher des informations supplémentaires, mais peut modifier les résultats de l'affichage. 164 | 165 | 166 | Active les expressions régulières dans la recherche. 167 | 168 | 169 | Exécuter en tant qu'administrateur (Ctrl+Shift+Enter) 170 | 171 | 172 | Exécuter en tant qu'autre utilisateur(Ctrl+Shift+U) 173 | 174 | 175 | Permuter les raccourcis clavier pour la copie 176 | 177 | 178 | Définir Ctrl+C pour copier fichier/dossier, Ctrl+Alt+C pour copier le chemin. 179 | 180 | 181 | Vérifier les mises à jour 182 | 183 | -------------------------------------------------------------------------------- /Properties/Resources.it-it.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Impossibile copiare il testo negli appunti 122 | 123 | 124 | Menu contestuale 125 | 126 | 127 | Configura le opzioni e l'ordine del menu contestuale. 128 | 0_Apri cartella, 1_Esegui come Amministratore, 2_Esegui come Utente, 3_Copia, 4_Copia Percorso, 5_Apri nella Console, 6_Apri con programma esterno, 7_Delete file/folder, 8_Shell context menu 129 | 130 | 131 | Copia 132 | 133 | 134 | Copia percorso 135 | 136 | 137 | Variabili di ambiente 138 | 139 | 140 | Espandi le variabili d'ambiente (es. %appdata%) in modo che funzionino correttamente, a costo di un tempo di ricerca maggiore. 141 | 142 | 143 | Il percorso di Everything.exe se non è installato in "Programmi". 144 | 145 | 146 | Installa Everything se non è installato 147 | 148 | 149 | Everything non è in esecuzione 150 | 151 | 152 | Impossibile aprire la cartella: 153 | 154 | 155 | Ricerca percorso 156 | 157 | 158 | Cerca corrispondenze nei percorsi oltre che nei nomi di file e cartelle. 159 | 160 | 161 | Numero risultati 162 | 163 | 164 | Il numero massimo di elementi da mostrare nell'elenco dei risultati. 165 | 166 | 167 | Vedi altro... 168 | 169 | 170 | Apri Everything e mostra tutti i risultati 171 | 172 | 173 | Apri cartella corrispondente (Ctrl+Maiusc+E) 174 | 175 | 176 | Apri percorso nella console (Ctrl+Maiusc+C) 177 | 178 | 179 | Ottieni risultati di ricerca da Everything 180 | 181 | 182 | Prefisso query 183 | 184 | 185 | Aggiungi un prefisso a tutte le query, in modo da aggiungere filtri e/o modificatori senza doverli digitare ogni volta. 186 | Lo spazio non viene aggiunto automaticamente tra prefisso e query. 187 | 188 | 189 | Anteprima 190 | 191 | 192 | Mostra l'anteprima del file come icona, potrebbe causare blocchi se il file non è salvato in locale. 193 | 194 | 195 | Testo query 196 | 197 | 198 | Il risultato selezionato aggiorna il testo della query. Permette di visualizzare ulteriori informazioni, ma potrebbe cambiare i risultati mostrati. 199 | 200 | 201 | Espressioni regolari 202 | 203 | 204 | Permette l'utilizzo di espressioni regolari nella ricerca. 205 | Si consiglia di utilizzare 'regex:' nella query invece di abilitare questa opzione. 206 | 207 | 208 | Esegui come amministratore (Ctrl+Maiusc+Invio) 209 | 210 | 211 | Esegui come altro utente (Ctrl+Maiusc+U) 212 | 213 | 214 | Vedi altro 215 | 216 | 217 | Mostra un risultato che permette di aprire Everything con la query corrente. 218 | 219 | 220 | Ordina 221 | 222 | 223 | Stabilisce il metodo di ordinamento dei risultati. 224 | 225 | 226 | Inverti scorciatoie Copia 227 | 228 | 229 | Usa Ctrl+C per copiare il file o la cartella, Ctrl+Alt+C per copiare il percorso. 230 | 231 | 232 | Vuoi installare una nuova versione di EverythingPowerToys? 233 | Scegliendo 'No' disabiliterai ulteriori avvisi per questa versione. 234 | 235 | Installata: {0} 236 | Ultima: {1} 237 | 238 | 239 | Controlla aggiornamenti 240 | 241 | 242 | Programma esterno 243 | 244 | 245 | Il percorso del programma esterno che aprirà il risultato selezionato 246 | 247 | 248 | Argomento di avvio 249 | 250 | 251 | Argomento da passare al programma all'avvio. [$P=percorso del risultato selezionato] 252 | 253 | 254 | Apri percorso nel programma esterno (Ctrl+N) 255 | 256 | -------------------------------------------------------------------------------- /Properties/Resources.pl-pl.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Nie udało się ustawić tekstu w schowku 122 | 123 | 124 | Menu kontekstowe 125 | 126 | 127 | Skonfiguruj opcje i kolejność menu kontekstowego. 128 | 0_Otwórz folder, 1_Uruchom jako administrator, 2_Uruchom jako użytkownik, 3_Kopiuj plik, 4_Kopiuj ścieżkę, 5_Otwórz w konsoli, 6_Open in custom program, 7_Delete file/folder, 8_Shell context menu 129 | 130 | 131 | Kopiuj plik 132 | 133 | 134 | Kopiuj ścieżkę 135 | 136 | 137 | Zmienne środowiskowe 138 | 139 | 140 | Rozwijaj zmienne środowiskowe takie jak %appdata%, dzięki czemu będą działać poprawnie kosztem czasu wyszukiwania. 141 | 142 | 143 | Zainstaluj Everything jeśli nie jest zainstalowane 144 | 145 | 146 | Everything nie jest uruchomione 147 | 148 | 149 | Nie udało się otworzyć folderu 150 | 151 | 152 | Dopasuj ścieżkę 153 | 154 | 155 | Szukaj ścieżki w dodatku do nazwy pliku/folderu. 156 | 157 | 158 | Maksymalna liczba rezultatów 159 | 160 | 161 | Maksymalna ilość wyników do wyświetlenia 162 | 163 | 164 | Otwórz lokalizację pliku (Ctrl+Shift+E) 165 | 166 | 167 | Otwórz ścieżkę w konsoli (Ctrl+Shift+C) 168 | 169 | 170 | Pokazuj wyniki wyszukiwania z Everything 171 | 172 | 173 | Podgląd 174 | 175 | 176 | Podgląd zawartości pliku jako ikona. Może powodować zacinanie jeśli plik nie jest zapisany lokalnie. 177 | 178 | 179 | Przeszukuj tekst 180 | 181 | 182 | Wybrany wynik może zmienić zapytanie. Pomaga wyświetlić dodatkowe informacje, ale może zmienić wyświetlane wyniki. 183 | 184 | 185 | Włącz wyrażenia regularne w wyszukiwaniu. 186 | 187 | 188 | Uruchom jako administrator (Ctrl+Shift+Enter) 189 | 190 | 191 | Uruchom jako inny użytkownik (Ctrl+Shift+U) 192 | 193 | 194 | Sortowanie 195 | 196 | 197 | Ustaw metodę sortowania. 198 | 199 | 200 | Zamień skróty funkcji kopiowania 201 | 202 | 203 | Użyj Ctrl+C aby skopiować plik/folder, Ctrl+Alt+C aby skopiować ścieżkę. 204 | 205 | 206 | Zainstalować nową wersję EverythingPowerToys? 207 | Kliknięcie 'Nie' wyłączy przyszłe informacje o tej wersji. 208 | 209 | Zainstalowana: {0} 210 | Dostępna: {1} 211 | 212 | 213 | Sprawdź aktualizacje 214 | 215 | -------------------------------------------------------------------------------- /Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | Fail to set text in clipboard 122 | 123 | 124 | Context Menu 125 | 126 | 127 | Configure context menu options and order. 128 | 0_Open folder, 1_Run as Admin, 2_Run as User, 3_Copy, 4_Copy Path, 5_Open in Console, 6_Open in custom program, 7_Delete file/folder, 8_Shell context menu 129 | 130 | 131 | Copy 132 | 133 | 134 | Copy path 135 | 136 | 137 | (Ctrl+C) 138 | 139 | 140 | (Ctrl+Alt+C) 141 | 142 | 143 | Enviroment Variables 144 | 145 | 146 | Expand enviroment variables, such as %appdata%, so that they work properly at the cost of query time. 147 | 148 | 149 | Everything64.exe 150 | 151 | 152 | Location of Everything.exe if it's not installed in "Program Files" 153 | 154 | 155 | Install Everything if not installed 156 | 157 | 158 | Everything is not running 159 | 160 | 161 | Fail to open folder at 162 | 163 | 164 | Match Path 165 | 166 | 167 | Search path in additional to file/folder name. 168 | 169 | 170 | Max 171 | 172 | 173 | The maximum amount of results to display in the results. 174 | 175 | 176 | See more... 177 | 178 | 179 | Open Everything and see the remaining results 180 | 181 | 182 | Open containing folder (Ctrl+Shift+E) 183 | 184 | 185 | Open path in console (Ctrl+Shift+C) 186 | 187 | 188 | Get search results from Everything 189 | 190 | 191 | Everything 192 | 193 | 194 | Query Prefix 195 | 196 | 197 | Adds prefix to all queries, so that you can always include certain filters/modifiers without typing it every time. 198 | Space is not added automatically between prefix and query. 199 | 200 | 201 | Preview 202 | 203 | 204 | Preview file content as icon, may cause freezing if file is not local. 205 | 206 | 207 | Query Text 208 | 209 | 210 | Selected result can update query text. Helps display additional info, but may change display results. 211 | 212 | 213 | RegEx 214 | 215 | 216 | Enable regular expression in search. 217 | Recommend using regex: in query instead of enabling this option 218 | 219 | 220 | Run as administrator (Ctrl+Shift+Enter) 221 | 222 | 223 | Run as different user (Ctrl+Shift+U) 224 | 225 | 226 | Show more 227 | 228 | 229 | Display a result that opens Everything with the current query. 230 | 231 | 232 | Sort 233 | 234 | 235 | Set result sorting method. 236 | 237 | 238 | Copy 239 | 240 | 241 | Set Ctrl+C to copy file/folder, Ctrl+Alt+C to copy path. 242 | 243 | 244 | Install new version of EverythingPowerToys? 245 | Clicking 'No' will disable future notice for this version. 246 | 247 | Installed: {0} 248 | Latest: {1} 249 | 250 | 251 | Check for updates 252 | 253 | 254 | Custom Program 255 | 256 | 257 | Path to a external program that'll open the selected result 258 | 259 | 260 | Launch argument 261 | 262 | 263 | Argument to pass to the program when launching. [$P=path of the selected result ] 264 | 265 | 266 | Open path in custom program (Ctrl+N) 267 | 268 | 269 | Everything64.dll is missing, automatically download this file? 270 | 271 | 272 | The "Include in global result" option is turned on for the History plugin, which could lead to conflicts with EPT. 273 | 274 | 275 | Shell context menu (Ctrl+M) 276 | 277 | 278 | Delete file/folder (Ctrl+Del) 279 | 280 | -------------------------------------------------------------------------------- /Properties/Resources.zh-cn.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 无法设置剪贴板中的文本 122 | 123 | 124 | 125 | 126 | 127 | 128 | 配置选单选项与顺序 129 | 0_打开所在文件夹、1_以管理员身分运行、2_以不同的使用者身分运行、3_复制、4_复制路径、5_在控制台中开启、6_在指定軟體中開啟、 7_刪除檔案/資料夾、 8_右鍵選單 130 | 131 | 132 | 复制 133 | 134 | 135 | 复制路径 136 | 137 | 138 | 搜索时可以使用环境变量,但会增加搜索时间 139 | 140 | 141 | 若Everything安装位置非预设的Program Files,请提供Everything.exe的位置 142 | 143 | 144 | 是否安装了 Everything? 145 | 146 | 147 | Everything 没有运行 148 | 149 | 150 | 无法打开所在文件夹 151 | 152 | 153 | 匹配路径 154 | 155 | 156 | 结果中显示的最大结果数 157 | 158 | 159 | 显示更多结果... 160 | 161 | 162 | 在Everything主视窗里查看更多结果 163 | 164 | 165 | 打开所在文件夹 (Ctrl+Shift+E) 166 | 167 | 168 | 在控制台中打开路径 (Ctrl+Shift+C) 169 | 170 | 171 | 利用 Everything 搜索磁盘文件 172 | 173 | 174 | 为搜索词添加固定的前缀,搜索时无需再手动输入修饰词/筛选词 175 | 前缀与搜索词之间不会自动加入空格 176 | 177 | 178 | 以图标形式预览文件内容,如果文件不是本地文件,可能会导致冻结 179 | 180 | 181 | 选取结果时更新搜寻词,获得更多资讯,但可能会变更搜寻结果 182 | 183 | 184 | RegEx 正则表达式搜索 185 | 186 | 187 | 以管理员身份运行 (Ctrl+Shift+Enter) 188 | 189 | 190 | 以不同的使用者身份运行(Ctrl+Shift+U) 191 | 192 | 193 | 显示一个使用当前搜寻词打开 Everything 的结果 194 | 195 | 196 | 设定结果排序方法 197 | 198 | 199 | 使用 Ctrl+C 复制档案,Ctrl+Alt+C 复制路径 200 | 201 | 202 | 更新EverythingPowerToys吗? 203 | 点击 '否' 将不再收到有关此版本更新的通知 204 | 205 | 安装版本:{0} 206 | 最新版本:{1} 207 | 208 | 209 | 检查是否有更新 210 | 211 | -------------------------------------------------------------------------------- /Properties/Resources.zh-tw.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 複製到剪貼簿失敗 122 | 123 | 124 | 配置選單選項與順序 125 | 0_開啟資料夾、1_以管理員身分執行、2_以其他使用者身分執行、3_複製、4_複製路徑、5_在命令提示字元中開啟、6_在指定軟體中開啟、 7_刪除檔案/資料夾、 8_右鍵選單 126 | 127 | 128 | 複製 129 | 130 | 131 | 複製路徑 132 | 133 | 134 | 135 | 136 | 137 | 138 | 搜尋時可用環境變數,但會增加搜尋時間 139 | 140 | 141 | 若Everything安裝位置非預設的Program Files,請提供Everything.exe的位置 142 | 143 | 144 | 是否有安裝 Everything? 145 | 146 | 147 | Everything 尚未啟動 148 | 149 | 150 | 無法啟動資料夾 151 | 152 | 153 | 也收尋路徑 154 | 155 | 156 | 結果中顯示的結果數上限 157 | 158 | 159 | 顯示更多結果... 160 | 161 | 162 | 在Everything主視窗裡查看更多結果 163 | 164 | 165 | 開啟檔案位置 (Ctrl+Shift+E) 166 | 167 | 168 | 在命令提示字元裡開起 (Ctrl+Shift+C) 169 | 170 | 171 | 利用 Everything 搜尋電腦上的檔案 172 | 173 | 174 | 為收尋詞增加固定的前綴,在收詢時不用再自行打修飾詞/篩選詞 175 | 前綴與收尋詞之間不會自動加入空格 176 | 177 | 178 | 將檔案內容顯示為預覽圖示,預覽雲端的檔案可能會造成停頓 179 | 180 | 181 | 選取結果時更新搜尋詞,獲得更多資訊,但可能會變更搜尋結果 182 | 183 | 184 | RegEx 正規表示式搜尋 185 | 不建議啟用,建議在收尋詞裡使用 regex: 186 | 187 | 188 | 以系統管理員身分執行 (Ctrl+Shift+Enter) 189 | 190 | 191 | 以其他使用者身分執行 (Ctrl+Shift+U) 192 | 193 | 194 | 在Everything裡顯示剩餘的收尋結果 195 | 196 | 197 | 設定結果排序方法 198 | 199 | 200 | 使用 Ctrl+C 複製檔案,Ctrl+Alt+C 複製路徑 201 | 202 | 203 | 更新EverythingPowerToys? 204 | 按 '否' 不再通知這版的更新 205 | 206 | 安裝版本:{0} 207 | 最新版本:{1} 208 | 209 | 210 | 啟用時檢查是否有更新 211 | 212 | 213 | 要使用的指定軟體路徑 214 | 215 | 216 | 執行參數 [$P=收尋結果路徑] 217 | 218 | 219 | 在指定軟體裡開起 (Ctrl+N) 220 | 221 | 222 | 缺少 Everything.64.dll,是否自動下載? 223 | 224 | 225 | 已啟用「包含全域結果中」選項於History插件,可能會與 EPT 發生衝突。 226 | 227 | 228 | 右鍵選單 (Ctrl+M) 229 | 230 | 231 | 刪除檔案/資料夾 (Ctrl+Del) 232 | 233 | -------------------------------------------------------------------------------- /SearchHelper/SearchResult.cs: -------------------------------------------------------------------------------- 1 | using Wox.Plugin.Interfaces; 2 | 3 | namespace Community.PowerToys.Run.Plugin.Everything.SearchHelper 4 | { 5 | public class SearchResult : IFileDropResult 6 | { 7 | // Contains the Path of the file or folder 8 | public string Path { get; set; } 9 | 10 | // Contains the Title of the file or folder 11 | public string Title { get; set; } 12 | 13 | // States if result is a file 14 | public bool File { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Reflection; 5 | using NLog; 6 | using Wox.Plugin.Logger; 7 | using static Community.PowerToys.Run.Plugin.Everything.Interop.NativeMethods; 8 | 9 | namespace Community.PowerToys.Run.Plugin.Everything 10 | { 11 | public class Settings 12 | { 13 | internal bool Is1_4 { get; set; } 14 | 15 | // Settings from PTR settings 16 | internal Sort Sort { get; set; } = Sort.NAME_ASCENDING; 17 | internal uint Max { get; set; } = 10; 18 | internal string Context { get; set; } = "01234568"; 19 | internal bool Copy { get; set; } 20 | internal bool MatchPath { get; set; } 21 | internal bool Preview { get; set; } = true; 22 | internal bool QueryText { get; set; } 23 | internal bool RegEx { get; set; } 24 | internal bool EnvVar { get; set; } 25 | internal bool Updates { get; set; } = true; 26 | internal string Prefix { get; set; } 27 | internal string EverythingPath { get; set; } 28 | internal bool ShowMore { get; set; } = true; 29 | internal string CustomProgram { get; set; } = "notepad.exe"; 30 | internal string CustomArg { get; set; } = "$P"; 31 | internal LogLevel LoggingLevel { get; set; } = LogLevel.Error; 32 | 33 | // Get Filters from settings.toml 34 | public Dictionary Filters { get; } = []; 35 | 36 | internal void Getfilters() 37 | { 38 | Is1_4 = true; 39 | if (LoggingLevel <= LogLevel.Info) 40 | Log.Info("User on Everything 1.4, GettingFilters...", GetType()); 41 | 42 | string[] strArr; 43 | try { strArr = File.ReadAllLines(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "settings.toml")); } 44 | catch (Exception e) 45 | { 46 | Log.Error($"Error reading settings.toml: {e.Message}", GetType()); 47 | return; 48 | } 49 | 50 | foreach (string str in strArr) 51 | { 52 | if (str.Length == 0 || str[0] == '#') continue; 53 | string[] kv = str.Split('=', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); 54 | if (kv.Length != 2) continue; 55 | 56 | if (kv[0].Contains(':')) 57 | Filters.TryAdd(kv[0].ToLowerInvariant(), kv[1] + (kv[1].EndsWith(';') ? ' ' : string.Empty)); 58 | } 59 | 60 | if (LoggingLevel <= LogLevel.Info) 61 | Log.Info(LoggingLevel < LogLevel.Debug ? string.Join(Environment.NewLine, Filters) : " GettingFilters...Done", GetType()); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Update/UpdateChecker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Globalization; 4 | using System.IO; 5 | using System.Net.Http; 6 | using System.Text; 7 | using System.Text.Json; 8 | using System.Threading.Tasks; 9 | using System.Windows; 10 | using Community.PowerToys.Run.Plugin.Everything.Properties; 11 | using NLog; 12 | using Wox.Plugin.Logger; 13 | 14 | namespace Community.PowerToys.Run.Plugin.Everything.Update 15 | { 16 | internal sealed class UpdateChecker 17 | { 18 | private readonly CompositeFormat updateAvailable = CompositeFormat.Parse(Resources.UpdateAvailable); 19 | 20 | internal async Task Async(Version v, Settings s, UpdateSettings us, bool isArm) 21 | { 22 | string apiUrl = "https://api.github.com/repos/lin-ycv/EverythingPowerToys/releases/latest"; 23 | if (s.LoggingLevel <= LogLevel.Info) Log.Info("EPT: Checking Update...", GetType()); 24 | 25 | try 26 | { 27 | using HttpClient httpClient = new(); 28 | httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0"); 29 | 30 | HttpResponseMessage response = await httpClient.GetAsync(apiUrl); 31 | if (s.LoggingLevel <= LogLevel.Debug) Log.Info($"EPT: Response: {response.StatusCode}", GetType()); 32 | 33 | if (response.IsSuccessStatusCode) 34 | { 35 | using JsonDocument jsonDocument = await JsonDocument.ParseAsync(await response.Content.ReadAsStreamAsync()); 36 | JsonElement root = jsonDocument.RootElement; 37 | Version latest = Version.TryParse(root.GetProperty("tag_name").GetString().AsSpan(1), out var vNumber) 38 | ? vNumber 39 | : Version.Parse(root.GetProperty("tag_name").GetString()); 40 | if (s.LoggingLevel <= LogLevel.Debug) Log.Info($"EPT:\n\tLastest: {latest}\n\tSkip: {us.Skip}", GetType()); 41 | 42 | if (latest > v && latest != us.Skip) 43 | { 44 | MessageBoxResult mbox = MessageBox.Show(string.Format(CultureInfo.InvariantCulture, updateAvailable, v, latest), "EPT: Updater", MessageBoxButton.YesNoCancel); 45 | if (mbox == MessageBoxResult.Yes && root.TryGetProperty("assets", out JsonElement assets)) 46 | { 47 | string[] nameUrl = [string.Empty, string.Empty]; 48 | foreach (JsonElement asset in assets.EnumerateArray()) 49 | { 50 | if (asset.TryGetProperty("browser_download_url", out JsonElement downUrl) && downUrl.ToString().EndsWith(isArm ? "ARM64.exe" : "x64.exe", StringComparison.OrdinalIgnoreCase)) 51 | { 52 | nameUrl[0] = asset.GetProperty("name").ToString(); 53 | nameUrl[1] = downUrl.ToString(); 54 | } 55 | } 56 | 57 | if (nameUrl[0].Length > 0) 58 | { 59 | byte[] fileContent = await httpClient.GetByteArrayAsync(nameUrl[1]); 60 | string fileName = Path.Combine(Path.GetTempPath(), nameUrl[0]); 61 | File.WriteAllBytes(fileName, fileContent); 62 | Process.Start(fileName); 63 | 64 | foreach (Process pt in Process.GetProcessesByName("PowerToys")) 65 | pt.Kill(); 66 | } 67 | else 68 | { 69 | ProcessStartInfo p = new("https://github.com/lin-ycv/EverythingPowerToys/releases/latest") 70 | { 71 | UseShellExecute = true, 72 | Verb = "Open", 73 | }; 74 | Process.Start(p); 75 | } 76 | } 77 | else if (mbox == MessageBoxResult.No) 78 | { 79 | us.Skip = latest; 80 | } 81 | } 82 | } 83 | } 84 | catch (Exception e) 85 | { 86 | if (s.LoggingLevel <= LogLevel.Info) 87 | Log.Exception($"EPT: Unable to check for update", e, GetType()); 88 | } 89 | 90 | if (s.LoggingLevel <= LogLevel.Info) 91 | Log.Info("EPT: Checking Update...Done", GetType()); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Update/UpdateSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Community.PowerToys.Run.Plugin.Everything.Update 4 | { 5 | public class UpdateSettings 6 | { 7 | public Version Skip { get; set; } = new Version(0, 0, 0, 0); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "ID": "A86867E2D932459CBD77D176373DD657", 3 | "ActionKeyword": "`", 4 | "IsGlobal": true, 5 | "Name": "Everything", 6 | "Author": "Yu Chieh (Victor) Lin", 7 | "Version": "0.91.1", 8 | "Language": "csharp", 9 | "Website": "https://github.com/Lin-ycv/EverythingPowerToys", 10 | "ExecuteFileName": "Community.PowerToys.Run.Plugin.Everything.dll", 11 | "IcoPathDark": "Images\\Everything.dark.png", 12 | "IcoPathLight": "Images\\Everything.light.png" 13 | } 14 | -------------------------------------------------------------------------------- /settings.toml: -------------------------------------------------------------------------------- 1 | # This file is for Everything 1.4 support, if you're using 1.5a or above, this file fill have no effect 2 | # Lines starting with # are comments 3 | # Search filters, filters result with extension type, seperated by ; 4 | Audio: = ext:aac;ac3;aif;aifc;aiff;amr;ape;au;cda;dts;fla;flac;it;m1a;m2a;m3u;m4a;m4b;m4p;mid;midi;mka;mod;mp2;mp3;mpa;ogg;opus;ra;rmi;spc;rmi;snd;umx;voc;wav;weba;wma;xm; 5 | Zip: = ext:7z;ace;arj;bz2;cab;gz;gzip;jar;r00;r01;r02;r03;r04;r05;r06;r07;r08;r09;r10;r11;r12;r13;r14;r15;r16;r17;r18;r19;r20;r21;r22;r23;r24;r25;r26;r27;r28;r29;rar;tar;tgz;z;zip; 6 | Doc: = ext:c;cc;chm;cpp;cs;css;csv;cxx;doc;docm;docx;dot;dotm;dotx;epub;gh;h;hpp;htm;html;hxx;ini;java;js;json;lua;mht;mhtml;mobi;odp;ods;odt;pdf;php;potx;potm;ppam;ppsm;ppsx;pps;ppt;pptm;pptx;pub;py;rtf;sldm;sldx;thmx;txt;vsd;wpd;wps;wri;xlam;xls;xlsb;xlsm;xlsx;xltm;xltx;xml;vb; 7 | Exe: = ext:bat;cmd;exe;msi;msp;msu;ps1;scr; 8 | Pic: = ext:ani;apng;bmp;bpg;cur;gif;ico;jfi;jfif;jif;jpe;jpeg;jpg;pcx;png;psb;psd;rle;svg;tga;tif;tiff;webp;wmf; 9 | Video: = ext:3g2;3gp;3gp2;3gpp;amv;asf;asx;avi;bdmv;bik;d2v;divx;drc;dsa;dsm;dss;dsv;evo;f4v;flc;fli;flic;flv;hdmov;ifo;ivf;m1v;m2p;m2t;m2ts;m2v;m4v;mkv;mp2v;mp4;mp4v;mpe;mpeg;mpg;mpls;mpv2;mpv4;mov;mts;ogm;ogv;pss;pva;qt;ram;ratdvd;rm;rmm;rmvb;roq;rpm;smil;smk;swf;tp;tpr;ts;vob;vp6;webm;wm;wmp;wmv; 10 | 11 | # Search filters, filters result with custom path(s), seperated by | 12 | # Demo: = C:\Windows\|C:\ProgramData --------------------------------------------------------------------------------