├── .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 | #  Everything for PowerToys Run
4 |
5 | [](#)
6 | [](https://github.com/lin-ycv/EverythingPowerToys/releases/latest)
7 | [](https://github.com/lin-ycv/EverythingPowerToys/releases/)
8 | [](https://github.com/lin-ycv/EverythingPowerToys/releases/latest)
9 | [](https://community.chocolatey.org/packages/everythingpowertoys)
10 | [](https://scoop.sh/#/apps?q=everything-powertoys)
11 | [](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 | [](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 | [](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
--------------------------------------------------------------------------------