* Add exception handling to prevent program from failing due to error in one program
* Error handling for program path function
* Fix incorrect log value in ProgramLogger
* add a separate task to dequeue and create an app on installation
* Added tests to validate the behavior of the event handler
* release unmanaged memory
* validated that restart elevated and check for updates work.Removed isettingsUtils and reused settings repository
* reverted the name to ImageResizer instead of using ImageResizerSettings.Modulename to make it backward compatible
* Removed getSettings from moduleEnabled so that it doesn't have to reopen the file everytime
* To Lower to while checking the theme
* color picker doesn't reopen the file
* use the generalView model config directly for FZ
* Made the same change for all the viewmodels so that they access the general view model value directly instead of opening and reading the value from a file each time
* removed unused variable
* Fix initialization in tests
* should read the file only if general settings does not exist
* Added interfaces for all the powertoys to use the generalSettings singleton class
* Runner is responding to changes in settings, only issue is that every time the general settings page is loaded the information is being read because isInitialized property could not be ignored during serialization
* All tests pass
* Settings and runner are working as expected with the settings cache
* added a null check to read from the file only when the settings process is started
* use converter to deserialize an interface
* Renamed generalSettings within the cache to be called CommonSettingsConfig
* All tests pass, had to initialize the common settings config instance
* Added few comments to newly created classes
* encapsulating load and store of general view model
* reading from file is encapsulated
* settings and runner wotk with generic singleton
* Shortcut guide works as expected
* Fancyzones, shortcutguide and power preview use the settings repository and work as expected
* referencing GeneralSettings instead of the settingsRepository<GeneralSettings> within viewmodels
* unified access to General settings and removed the IGeneralSettingsData interface
* Passing settings to viewmodel as a parameter
* removed ISettingsConfig interface from the viewmodels which are not using the singleton to access settings
* have to use ISettingsConfig to use GetSettings
* refactored tests, all tests pass
* Added test for settingsRepository that a single instance is created
* Added comments and removed unnecessary headers/code
* added settings repository tests
* moq for each settings file
* Img resizer tests pass
* General tests pass
* FancyZones tests pass
* PowerPreview tests pass
* PowerRename tests pass
* shortcut guide tests pass
* Added GetModuleName to ISettingsConfig
* unify the way the Modulename is accessed. It was redeclared in multiple places and this would cause an issue if the name is changed only in one place. All the module names are accessed using the <T>Settings.ModuleName, eg: ShortcutGuideSettings.ModuleName.
* create PTRun settings file if it does not exist
* GetFile is now a private function. Modified the logic of KBM default.json access and PT Run so that we can re-use GetSettings instead of GetFile.
* Added UpgradeSettingsConfiguration to the ISettingsConfig interface so that the settings file can be upgraded based on some condition. Presently, only the GeneralSettings file is utilizing this to change the PT Version number based on the old PT version and the current PT version that it receives from the helper function. Verified that if the PT version is lower in the general settings.json file, settings saves the file with the new version info.
* The naming for the PowerToys was inconsistent and the variables were redeclared in multiple places. To have the settings.ModuleName as the main name, all other places should refer to that name. In the tests file the module name for ImgResizer was 'ImageResizer' and not 'Image Resizer'.
* renamed lock
* Remove unnecessary GetSettingsFileNAme function. It is no longer in use because the code does not use types to create a new BasePTModule object
* 1) Making Directory Methods private.
2) Removing the CreateDirectory / DeleteDirectory functionality from all Settings Unit Tests.
* Abstracting disk access via IIOProvider to be able to provide mocks for unit tests instead of writing to disk. This also prevents developers who are running unit tests from interfering with the PowerToys settings on their local dev box.
* Dependency Injecting stub SettingsUtils for all tests
* Removing ISettingsUtils from constructors of objects that need to be deserialized (ColorPickerSettings/PowerLauncherSettings) as this breaks System.Text.Json
* Removing unused namespace reference
* Removing redifined mock
* As per PR feedback. Stub Settings utils should work with any settings type if the intent is to compile / avoid null ref exceptions.
Strangely when implementing this fix it became apparent that a stub settings isn't enough, and disk access needed to be mocked. I can't explain why the tests were passing previously.
* Leveraging GetMockIOProviderForSaveLoadExists
* Added a keyboard hook to the runner
* Update RootKeyboardHook
* Enable reading the whole JsonObject property
* Renamed RootKeyboardHook to CentralizedKeyboardHook
* Fixed build break, changed callback return type to bool
* Added Hotkey struct which somehow went missing
+ Cherry-pick fixes
* Reorganized the kb hook
* Basic version works
* Various fixes
* Finishing touches
* Fix potential threading issue
* int -> size_t
* Add default initializers to the Hotkey struct
* Added a suggested comment
* Unified a constant
* Use C# classes instead of native calls for sync
* Added a claryfing comment
* Use std::move
* Renamed a method
* Possible fix for compilation errors
* Fix a regression
* Show a message on failure
* Added DISABLE_LOWLEVEL_HOOK support
* Allow running Launcher as standalone
* Rename string constants
* Add the setting for the Sensitivity Radius to JSON and the Editor
Use the setting when determining Zones to highligh
* Fix FanzyZones unit tests
Add test for Json upgrade
* Updated texts in FancyZone Editor
More Text to Resources / Use Resources
* Added constant for default of Sensitivity Radius
* When installing from scratch of when a new device is added set the sensitivity radius to the default.
Move all the constant values to a single namespace
* restore correct formatting
Co-authored-by: Remy Blok <remy.blok@prodware.nl>
* Implemented possibility to add commandline arguments in the Program Plugin
* Add missing return statement inc ommandArgumentParser loop
* Fix typos
* Fix Additional Typo
* Changed -c to /c to make it a valid cmd argument
* Added small comment about importance of order in _programArgumentParsers
Co-authored-by: Roy <royvou@hotmailcom>
* Do not zone window if it merges with other window (e.g. merge Chrome tab into other Chrome window
* Small move of func call
* Address PR comment
* remove include
* Address PR comment 2
* Added an Alt key hook
* Refactor a block of code into a method
* Again refactored existing code
* Apparently Win+Alt does not reach FancyZones
* Using Ctrl+alt instead of Win+alt for now
* It works
* Fixed VD change
* Remove unused member
* Fix compilation error
* Enable shrinking
* Fixed comments in .h files
* Remove newline
* Refactored a function into two
The next task is to simplify their code.
* Updated a comment
* Update a variable name
* Reverted to the old implementation of directional move
* More refactoring
* Remove space
* Fixed windows getting stuck
* Changed function name
* Updated UnregisteredApps code
* Added file type checking code and Folder and File classifications
* Added more file formats
* Removed run as admin for lnk folders
* Added script files as executable and changed hashset to case insensitive
* Removed runasadmin for generic files
* Removed FileTypes enum
* Extended ApplicationTypes enum
* Fix file format error
* Cleaned use of ApplicationType enum to public and match AppType and used ApplicationType in OnAppRenamed
* Modify tests to use ApplicationType enum
* Added tests for new App types
* Modified dummy appref
* Mock Directory.Exists and add tests for GetAppTypeFromPath
* Combined tests
* Adding FxCop to Microsoft.Plugin.WindowWalker
* Delete WindowResult.cs -- Fix for CA1812 WindowResult is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static members, make it static (Shared in Visual Basic).
* Fix for CA1806 UpdateOpenWindowsList calls EnumWindows but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method.
* Fix for: CA1066 Type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.RECT should implement IEquatable<T> because it overrides Equals
* Fix for: CA1052 Type 'FuzzyMatching' is a static holder type but is neither static nor NotInheritable
* Suppress for CA1069 - These values are defined in
https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles.
CA1069 The enum member 'WS_EX_LTRREADING' has the same constant value '0' as member 'WS_EX_LEFT'
CA1069 The enum member 'WS_EX_RIGHTSCROLLBAR' has the same constant value '0' as member 'WS_EX_LEFT'
* Supress CA1069
Code Description
CA1069 The enum member 'SWP_NOREPOSITION' has the same constant value '512' as member 'SWP_NOOWNERZORDER'
CA1069 The enum member 'SWP_FRAMECHANGED' has the same constant value '32' as member 'SWP_DRAWFRAME'
* Suprress CA1069 for ShowWindow values. See
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
CA1069 The enum member 'ShowMaximized' has the same constant value '3' as member 'Maximize'
* Fix code formatting error
* Fix for CA2235: Making POINT serializable
CA2235 Field MinPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.POINT which is not serializable
CA2235 Field MaxPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.POINT which is not serializable
* Fix CA2235 Making RECT serializable
CA2235 Field NormalPosition is a member of type WINDOWPLACEMENT which is serializable but is of type Microsoft.Plugin.WindowWalker.Components.InteropAndHelpers.RECT which is not serializable
* Fixes for CA2101 Specify marshaling for P/Invoke string arguments.
* Fixes for CA2007 Consider calling ConfigureAwait on the awaited task
* Fixes for the following (CA1822 / CA1801):
CA1822 Member 'OnOpenWindowsUpdate' does not access instance data and can be marked as static
Code Description
CA1801 Parameter value of method add_OnOpenWindowsUpdate is never used. Remove the parameter or use it in the method body.
CA1801 Parameter value of method remove_OnOpenWindowsUpdate is never used. Remove the parameter or use it in the method body.
* Fix: CA1710 Rename OpenWindowsUpdateHandler to end in 'EventHandler'
* Fix CA1822 Member 'GetProcessIDFromWindowHandle' does not access instance data and can be marked as static
* Fix CA1062 In externally visible method 'List<int> FuzzyMatching.FindBestFuzzyMatch(string text, string searchText)', validate parameter 'searchText' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.
* Fixes for CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'FuzzyMatching.FindBestFuzzyMatch(string, string)' with a call to 'string.ToLower(CultureInfo)'.
Code Description
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'FuzzyMatching.FindBestFuzzyMatch(string, string)' with a call to 'string.ToLower(CultureInfo)'.
* Supressing warning for CA1814: Prefer jagged arrays over multidimensional however this might be something to consider if needing to optimize the window walker search.
* Fix: CA1062 In externally visible method 'List<List<int>> FuzzyMatching.GetAllMatchIndexes(bool[,] matches)', validate parameter 'matches' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.
* Fix for CA1062 In externally visible method 'int FuzzyMatching.CalculateScoreForMatches(List<int> matches)', validate parameter 'matches' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.
* Fixes for CA1806 Calls x... but does not use the HRESULT or error code that the method returns. This could lead to unexpected behavior in error conditions or low-resource situations. Use the result in a conditional statement, assign the result to a variable, or pass it as an argument to another method.
Using discard for methods that return void, and checking the hresult before returning parameters.
* Fix for CA1820 Test for empty strings using 'string.Length' property or 'string.IsNullOrEmpty' method instead of an Equality check
* Supress CA1031 Modify 'get_WindowIcon' to catch a more specific allowed exception type, or rethrow the exception
* Code Description
CA1062 In externally visible method 'List<Result> Main.Query(Query query)', validate parameter 'query' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument.
* Fixes For CA1304 The behavior of 'string.ToUpper()' could vary based on the current user's locale settings.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'SearchController.SearchText.set' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'Window.ProcessName.get' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToLower()' could vary based on the current user's locale settings. Replace this call in 'Window.SwitchToWindow()' with a call to 'string.ToLower(CultureInfo)'.
CA1304 The behavior of 'string.ToUpper()' could vary based on the current user's locale settings. Replace this call in 'Window.ToString()' with a call to 'string.ToUpper(CultureInfo)'.
CA1307 The behavior of 'string.Equals(string?)' could vary based on the current user's locale settings. Replace this call in 'Microsoft.Plugin.WindowWalker.Components.Window.SwitchToWindow()' with a call to 'string.Equals(string?, System.StringComparison)'.
* Fix: CA1710 Rename SearchResultUpdateHandler to end in 'EventHandler'
* Fix CA1060 Move pinvokes to native methods class
* Fix: CS0067 The event 'OpenWindows.OnOpenWindowsUpdateEventHandler' is never used
1) Remove SearchController::OpenWindowsUpdateHandler(object sender, SearchResultUpdateEventArgs e) as it wasn't being called and was redundant with Update Search Text.
2) In Main.cs calling UpdateOpenWindowsList before UpdateSearchText so that the latest enumerated windows will be called.
3) Removing unused OnOpenWindowsUpdateEventHandler and related code.
* Revert "Fixes for CA2101 Specify marshaling for P/Invoke string arguments."
This reverts commit b3dfe07915.
* Fixing CA2101 by turning off best fit mapping for methods that require ANSI marshalling.
See: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2101?view=vs-2019
* Previous fix for CA1806 misunderstood int result as hresult. The actual return value is number of characters written.
NativeMethods.GetWindowText(hwnd, titleBuffer, sizeOfTitle);
* Previous fix for CA1806 misunderstood int result as hresult. The actual return value is number of characters written.
NativeMethods.GetClassName(Hwnd, windowClassName, windowClassName.MaxCapacity);
* Removing unused window code. This was done instead of validating fxcop changes in WindowIcon.
* Fixing typos in Window.cs (charachter -> character)
* Refactored logic and made it unit testable
* Changes after code review
* Added to build steps, and modified bracket to new class with unittest. Validates complexer cases now.
Co-authored-by: p-storm <paul.de.man@gmail.com>
* fxcop fixes
* more fixes, not done yet
* supressing 1031 and ca2000 since we are expressly disposing this correctly
* catching a possible crash due to null ref if run twice
* addressing feedback
* Updated error message when SetWindowsHookEx fails to show correct error message
* Added telemetry for exception in SG, FZ and KBM
* Rename exception to error
* Added an accessible name for the combo box
* Add name for the type shortcut button
* Add accessible name for the add new remapping button in both key remapping as well as shortcut remapping windows
* Set accessible names for the delete button
* Set the accessible name to the remapped to icon
* Fix the font icon issue faced while using narrator
* Fix accessible name for Add shortcut remapping button
* Set the accessible name for the target app text box when it loses focus
* fix comment
* Removed xaml files, added resx file and removed references for PowerLauncher project
* Added resx file for wox.plugin
* Moved Calculator resources to resx
* Migrated resources for Folder and Indexer plugins
* Migrated resources for Program and Shell plugin
* Migrated resources for URI and Window Walker
* Removed GetTranslation, tests need to be refactored
* Removed internationalization classes
* Removed Wox.Core.Resource references
* Fixed Programs plugin tests
* Fixed tests
* Removed language xaml files from installer
* Added locProject.json files
* Fixed resource not found error
* Remove unused strings from PowerLauncher
* Removed all unused strings
* Reverted addition of resx file for Wox.Plugin
* Added more resources for Folder plugin
* Added resources for Folder and Indexer plugin
* Added resources for Program, Shell, Uri and WW plugins
* Changed string from Wox to PT Run
* managed common files
* Add accessible names for the KBM key remapping list and list item
* Add accessible name for the shortcut list item
* Add accessible name for shortcut remapping list
* Added accessible names to all icons
* Add accessible name for image
* Fix font icon narrator issue
* Added context menu to first folder result
* Added context menu to first folder result
* Add localization for string in folder plugin
* Fixed issue with context menu not showing on first selected item
* Add exception logging
* Removed xaml files, added resx file and removed references for PowerLauncher project
* Added resx file for wox.plugin
* Moved Calculator resources to resx
* Migrated resources for Folder and Indexer plugins
* Migrated resources for Program and Shell plugin
* Migrated resources for URI and Window Walker
* Removed GetTranslation, tests need to be refactored
* Removed internationalization classes
* Removed Wox.Core.Resource references
* Fixed Programs plugin tests
* Fixed tests
* Removed language xaml files from installer
* Added locProject.json files
* Fixed resource not found error
* Reverted addition of resx file for Wox.Plugin
* Screen reader detecting List view
* Fixed narrator text for listview items and context menu items
* Renamed custom textbox to a more meanigful name
* Renamed custom textbox to a more meanigful name
* Fix formatting of LauncherControl.xaml
* Added support to control multiple elements
* Initial commit
* Code review changes
* Added PowerShell script to clean up PowerToys
* Removed commented code
* Added about and comments to script, fixed deleting of DontShowThisAgain directory inside registry
* Added type to var's, changed positions of comments
* Changed RegDeleteKey to RegDeleteTree
* Add DLIMAGES to WebBrowserExt ambient control flags to allow display of img links in SVGs. We still specify FORCEOFFLINE so we are not actually performing a download. This is to target SVGs with xlink base64 encoded data.
* Fix unit test
1) the same variables are being compared against each other.
2) BasePTSettingsTest doesn't override equals to Equals compares the objects. This change compares the json strings directly.
* Implement basic functionality
* Change approach.
move filter controls to manager
edit redrawing to always work with new GetVisibleItemCount() and GetVisibleItemByIndex() calls
* Fix performance issues. Some refactoring.
* Handle toggleAll correctly
* Handle dangling elements when filter is on
Make an item visible if it has at least one visible subitem
* Support filtering for selected and shouldRename
* Refactor for readability, remove useless member from PowerRenameUI
* Change variable names in PowerRenameUI for clarity
Use wrapper function RedrawItems() and SetItemCount() for consistency
* Handle result value properly in getVisibleItemByIndex()
* Add FlagsApplicable filter
* Add visual indication of filters
* Improve performance
Check if no filter is selected
Call SetItemCount() only when necessary
* Refactor for readability
* Get lock in setVisible()
* Change function names to camel case
* Change function names to start with uppercase
* Change filter behaviour when search area is empty
Show all elements when search area is empty and ShouldRename filter is selected
Avoid warnings
* Resolve conflicts
* Added localization code to pipeline and created one LocProject json for Settings
* Fixed typo
* Reordered nuget source
* Moved nuget install to restore step
* Added FZ.rc file to LocProj
* Added FZ resx file and modified rc file
* Fixed file names
* Changed to check folder for LocProject files
* Updated folder
* Changed directory
* Changed to src directory
* Changed language set and name format, removed rc file localization
* Added all projects with resx/resw files
* Added newline to end of file
* Removed nuget source as it is not used
* Updated comments
* Updated keyboard manager to use resx file
* Tweaked resources.resx and added it to project files
* Added comments and added in string table to resx script
* Remove change from bad merge
* Fix syntax error in convert stringtable
* Changed file type to None
* Migrated color picker's resources
* Migrated resources for Microsoft.Launcher
* Migrated resources for fancy zones
* Revert fancyzones changes
* Migrated resources for ImageResizer and modified script to add language specific code
* Added try catch and checks for modification to avoid unnecessary file creation
* Changed tab insertion to 4 spaces to avoid mixed file types in rc file
* Migrated resources for power preview project
* Added LocProject.json file for 5 projects
* added resgen exception check
* Moved non-localizable strings out of resx for powerpreview
* Move out hardcoded strings from dialog box and set them at runtime from string table
* Migrated resources for powerrename
* Added locproj
* Added missing ImageBase extern declaration
* Added build script in UWP UI project since PowerRenameExt is not referenced
* Resolved merge conflicts
* Added localization code to pipeline and created one LocProject json for Settings
* Fixed typo
* Reordered nuget source
* Moved nuget install to restore step
* Added FZ.rc file to LocProj
* Added FZ resx file and modified rc file
* Added localization code to pipeline and created one LocProject json for Settings
* Fixed typo
* Reordered nuget source
* Moved nuget install to restore step
* Added FZ.rc file to LocProj
* Added FZ resx file and modified rc file
* Fixed file names
* Changed to check folder for LocProject files
* Updated folder
* Changed directory
* Changed to src directory
* Changed language set and name format, removed rc file localization
* Added all projects with resx/resw files
* Added newline to end of file
* Removed nuget source as it is not used
* Updated comments
* Updated keyboard manager to use resx file
* Tweaked resources.resx and added it to project files
* Added comments and added in string table to resx script
* Remove change from bad merge
* Fix syntax error in convert stringtable
* Changed file type to None
* Migrated color picker's resources
* Migrated resources for Microsoft.Launcher
* Migrated resources for fancy zones
* Revert fancyzones changes
* Migrated resources for ImageResizer and modified script to add language specific code
* Added try catch and checks for modification to avoid unnecessary file creation
* Changed tab insertion to 4 spaces to avoid mixed file types in rc file
* Migrated resources for power preview project
* Added LocProject.json file for 5 projects
* added resgen exception check
* Moved non-localizable strings out of resx for powerpreview
* Migrated shortcut guide resources to resx
* Added LocProject.json
* Added localization code to pipeline and created one LocProject json for Settings
* Fixed typo
* Reordered nuget source
* Moved nuget install to restore step
* Added FZ.rc file to LocProj
* Added FZ resx file and modified rc file
* Fixed file names
* Changed to check folder for LocProject files
* Updated folder
* Changed directory
* Changed to src directory
* Changed language set and name format, removed rc file localization
* Added all projects with resx/resw files
* Added newline to end of file
* Removed nuget source as it is not used
* Updated comments
* Updated keyboard manager to use resx file
* Tweaked resources.resx and added it to project files
* Added comments and added in string table to resx script
* Remove change from bad merge
* Fix syntax error in convert stringtable
* Changed file type to None
* Migrated color picker's resources
* Migrated resources for Microsoft.Launcher
* Migrated resources for fancy zones
* Revert fancyzones changes
* Migrated resources for ImageResizer and modified script to add language specific code
* Added try catch and checks for modification to avoid unnecessary file creation
* Changed tab insertion to 4 spaces to avoid mixed file types in rc file
* Migrated resources for power preview project
* Added LocProject.json file for 5 projects
* added resgen exception check
* Moved non-localizable strings out of resx for powerpreview
* set the labeled by property of number box to point to the textblock heading so that 'Press duration before showing (ms)' string is read when the number box is highlighted
* Added comments on the accessibility issues that are dependent on the winui radiobuttons control
* Added information to the shortcut guide image on the right, it previously said only the word graphic
* Added an automation name to the custom list view
* Added an automation property for the text box
* changed the name to 'Configuration'
* Added an automation property for the combo box
* Add automation property for number box
* added a name for the times symbol
* Added the height name automation property
* Add automation property for image resizer size combo box
* Add name and uid for button
* Add automation name for the grouping of list views
* Add automation property label for number box
* Add name for the filename format edit box
* Added more information to the image
* Added wox code for tiling
* nit fixes in plating function
* Added feature to plate images based on theme
* Improve code readability
* added altform based paths
* Error handling in fetching logo
* Re add fix sequence empty exception on calling max in program plugin
* Move path and logo setting code to setIcon function
* Add corner radius to packaged apps icon
* Revert "Add corner radius to packaged apps icon"
This reverts commit 9be496e662.
* Returning individual queries for each plugin
* Changed cancellation token from Query type to directly using the rawQuery
* Changed the way we get the plugins for which we execute the query
* updated UpdateResultView to take a string instead of query
* Changed the way we set a query for each plugin
* removed todo comment
* global plugins are added as a part of the query builder
* Fix for plugin.json of Folder plugin being copied into the shell plugin
* >,< and : are not allowed in file paths and indexer creates a query which searches compares if a file name is greater than or lesser than the query
* Reformatted the regex
* catching the exception
* fixed existing tests
* modified it so that it works with action keyword as well as action keywords
* Added unit tests for non global plugins
* fixed test
* add back whitespace that was removed by mistake
* fix regex
* modified the cold start query
* remove extra condition
* terms being modified as expected
* used key value pairs to iterate through the dictionary
* renamed variable
* added check for an empty dictionary
* remove : because it may appear in the file path
* fix some whitespace warnings that were being treated as errors
* Added automation property for the button
* Added an automation property name for the glyph
* added name automation property for the shortcut window
* fixed the name null for zone highlight button
* fixed the name for the inactive color dropdown
* fixed the accessibility issue with the border color downdown button
* fixed the issue with dropdowb buttons
* add description to the image
* Capitalize Z otherwise it reads it in an expected way
* made the naming generic as it the custom window is not only specific to fancyzones but is also used by colorpicker and PTRun to set their shortcut
* Added the setting
* Refactored existing code, the main feature isn't implemented yet
* Renamed a method
* Updated a comment in IZoneWindow
* Added the zone selection algorithm, didn't test it
* Basic features work
* Single monitor cycling works
* Seems that the feature works well
* Polished the settings page
* Rebase fix
* Fixed a null pointer dereference
* Use classic if syntax
* Fixed bad indentation
How did these lines unindent themselves?
* Removed TODO comment
* Rebase fix
* Another rebase fix
* Removing non thread safe member variables, as well as the check to ensure that they have been disposed.
* Removing 'ExecuteQuery_ShouldDisposeAllConnections_AfterFunctionCall'.
This call previously required the use of member variables that were not thread safe. There is no reason to share this state across threads. Arguably this test verifies an internal implementation detail and is not suitable for a unit test anyway.
* Use only fff for milliseconds
* Refactor
* Handle double $ signs.
Move isFileAttributes check to Helpers.
Move File Attributes to perform before regex operation
* Fix typo
* Format date/time test
* Disable problematic features. Add comments
* Fix month/day names
* Add tests
* Add line between tests
* Add local month/day names support
* Make sure month/date names are capitalized
* Fix formatting
* Added localization code to pipeline and created one LocProject json for Settings
* Fixed typo
* Reordered nuget source
* Moved nuget install to restore step
* Added FZ.rc file to LocProj
* Added FZ resx file and modified rc file
* Fixed file names
* Changed to check folder for LocProject files
* Updated folder
* Changed directory
* Changed to src directory
* Changed language set and name format, removed rc file localization
* Added all projects with resx/resw files
* Added newline to end of file
* Removed nuget source as it is not used
* Updated comments
* Fixed formatting of json file
* Move loc step to end
* grouped radio buttons together
* grouping radio buttons together
* the word version is now read along with the version number
* Information regarding the image is read
* added a comment with the link to the issue in the winui repository
* attempting to run CI unittests as seperate passes for .netframework and .netcore, based on assemblies.
* Mocking CSearchManager to avoid the following exception running in CI.
Retrieving the COM class factory for component with CLSID {7D096C5F-AC08-4F1F-BEB7-5C22C517CE39} failed due to the following error: 80070422 The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. (0x80070422).
* Setting proper connection string for unit test.
* Mocking sqlQuery with FilePath vs m*
* Temporarily Ignoring test that is throwing exception in CI.
* added MSTest project
* enabled settings tests run in the build pipeline
* migrated KBM settings
* fixed typo
* moved the callback function initialization to the top
* fixed build
* Implemented "hidden files" flag in native Windows Search
* add missing file
* Change InitQueryHelper back to static
* Fix Line Endings
* Add files via github
Co-authored-by: Roy <royvou@hotmailcom>
* Added tests for loading and saving remappings in the UI
* Added tests for ApplyRemappings methods
* Moved single key remap validation logic to separate method so that it can be tested
* Added tests for single key remap validation in UI
* Refactored shortcut validation code to be testable
* Added some shortcut validation tests
* Refactored code to be cleaner
* Added tests for action key and modifier key selection and formatted file
* Added tests for selecting None
* Added tests for selecting Null
* Added tests for WinL error
* Added CtrlAltDel tests
* Added tests for MapToSameKey
* Added tests for mapping repeated shortcut
* Fixed const correctness
* Clean up type names with type alias
* Clean up ValidateAndUpdateKeyBufferElement tests and tweak ValidateShortcutBufferElement signature
* Fixed bug when None selected
* Refactored one test as per test case framework
* Cleaned up more tests
* Cleaned up buffer validation tests
* Added tests for KBM Common Helpers and Shortcut
* added MSTest project
* migrated general settings tests
* enabled settings tests run in the build pipeline
* added tests
* move relay command class to separate file
* added a foldername parameter for general settings view model
* Added the version number for all launcher projects so that they are in sync with the powerToys version number
* Removed internals visible to Wox.dll as we no longer have that library
* Adding FxCop to Microsoft.Plugin.Program.UnitTests
* CA1707: Identifiers should not contain underscores
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1707?view=vs-2019
* CA1307: Specify StringComparison
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1307?view=vs-2019
* CA1812: Avoid uninstantiated internal classes
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1812?view=vs-2019
* More CA1707: Identifiers should not contain underscores fixes now that class is public
* More fixes for https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1812?view=vs-2019
List Repository and Win32ProgramRepository
* More CA1707: Identifiers should not contain underscores fixes now that class is public
ListRepository and Win32ProgramRepository tests
* Adding `ConfigureAwait(false)` and removing Assert.DoesNotThrowAsync as thowing an exception will fail the test anyway, and the DoesNotThrowAsync method can't be awaited.
Fix for CA2007: Do not directly await a Task (Consider calling ConfigureAwait on the task).
CS1998 This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
* Setting treat warning as errors to true for release and debug.
* Added regex code
* Added regex based method to remove all LIKE queries
* Made regex readonly
* Added plugin interface and code to execute slower plugins after the fast plugins
* Added scoring for indexer and added statement to remove old indexer results
* Refactored from master and added thread sleep for debugging
* Removed lock from indexer plugin and added checks to avoid exceptions
* Remove debug statement
* Removed selected index update and fixed tests not building
* Added tests
* Removed scoring
* Removed lock
* Resolve merge conflicts
* Moved dispatcher code to function and add parallel foreach loop
* Removed DelayedExec metadata and modified QueryForPlugin to run only delayed exec plugins when bool param is true
* Removed metadata from plugin.json
* url handler plugin
* updates
* Add seperate interface classes
rename to uri module
* Update path
* Update implementation to remove slow DNS lookup ( and let browser handle it)
* tabs to spaces
* - Update icon/assets
- Finalize Project
* Update wix project
* Implement UpdateBrowserIconPath
* Implemented Microsoft.CodeAnalysis.FxCopAnalyzers
* Add Language component to installer
* Update logic to determine icon
* Update Translation File to "Open in browser"
* Added test for typing http://test.com and which result to expect on each keystoke
* Implement StyleCop
* Added ipv6 tests
* Fix Solution LineBreaks
* Added Microsoft.Plugin.Uri as build Dependency
* Use ArgumentNullException instead of InvalidOperationException
* Fix wrong Directory in wix installer
Co-authored-by: Roy <royvou@hotmailcom>
* Added the setting
* Added a property to Editor Settings
This will be used later
* Fixed a bug in the previous commit
* Simplified a method
* Added snapping points to the editor
* Simplified a method in ZoneSet
* Updated ZoneSet testcases
* Add a method to FancyZones / ZoneWindowHost
* Almost works
* The editor now launches, but FZ does not understand the results
* Refactored some code
* Snapping to a zone by dragging seems to work
* Hotkeys seem to work
* Refresh the work area handler after changing settings
* Fixed zones not snapping to monitor edges when moved
* Remove unused method in FancyZones.h
* Fixed an issue with DPI awareness
* Renamed setting to spanZonesAcrossMonitors
* Renamed a function
* Fixed a bug with the magnetic effect
* Fix restoring window positions on layout changes
* set the name automation properties for the result elements
* Added name properties to search box
* removed the name for the grid
* localized the automation property names of the launcher control
* Localized the automation name property for the result list
* Uncommented out the Hide() function which was commented out to run Accessibility Insights
* modified resources from static to dynamic
* reverted access modifier to internal as we are no longer using this
* updated csproj file
* fixing MSB3052
* adding back in to unblock build
* More agressive refactor. Moved the define constant to wixproj and actual version into src file version prop
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
* getting app to not use it, now installer
* removed windowinput.dll from inputsimulator nuget package
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
* Enabling code analysis, and treating warnings as errors
* Error CA1724 The type name Settings conflicts in whole or in part with the namespace name 'Microsoft.PowerToys.Settings'. Change either name to eliminate the conflict. Microsoft.Plugin.Indexer C:\repos\powertoys\src\modules\launcher\Plugins\Microsoft.Plugin.Indexer\Settings.cs 9 Active
* Removing keyword "Interface" from namespace to fix fxcop warnings
* Fixing static analysis warnings on ContextMenuLoader
* Fixing general exception warnings for static analysis
* Fixing public list variables, non static methods, and general exception warning
* Implementing IDisposable on OleDBSearch although in practice these objects were already being disposed.
Also Validated we were not using user input directly for sql strings.
* Removing VS generated comments from dispose methods as per PR feedback.
* Setting translated text to use current culture as per PR feedback.
* Explicity specifying 'internal' access modifier for Indexer 'Main' class, as per PR feedback
* Updating to FxCop 3.0.0
* Fixing PowerLauncherViewModelTest.cs. These OpenConsole functionality was accidentlly removed in a merge conflict, which broke the build. The build was fixed, but the unit tests didn't work. 034079b441 is the offending change.
* Color picker tests need to remove the ShellPage.DefaultSndMSGCallback on cleanup.
* Fixing casing that was updated in previous change.
* updated to Microsoft.Windows.CppWinRT.2.0.200729.8
* actually adding in packages.config and updating
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
* Removing hardcoded version numbers from c# telemetry events.
* Removing dependency on powertoysInterop for getting version string.
* Defensive checks around getting assembly version
* Added telemetry for Color Picker module
* Closing color picker with Esc and added a telemetry for that
* Missed update of csproj
* updated installer to include telemetry.dll for color picker
* removed telemetry.dll it was alrady there
* after review changes
* Added fast observable collection
* Updated to use 1 collection changed event per query
* Moved result updating to background thread
* Changed collapsed to hidden for virtualization
* Moved all token cancellations inside try catch
* Fixed freeze on deleting first letter
* nit fixes
* Moved update logic to plugin result loop
* Updated doc comment for AddResults function
* fix result clear on empty query
* fix report window error icon
* fix for launching web page to create new issue
* Made icon theme aware
* removed exception that was added by mistake
* modified the issue reporting link to match that in the settings page
* added comment
* Updated FZ page with new resizing logic
* Multiple UX fixes. Added updated resizing logic to other pages
* Added ImageResizer file format example snippets to tooltip
* Added warning icon in hotkeysettingscontrol
* Fixed formatting
* Keys label can now be set
* Replaced custom titleblocks with converter
* Updated strings
* Added correct links to the images. Added PT description on General page as well.
* Colorpicker image updates
* Rounded corners
* Fix
* Added back in correct subtitles
* Added union class
* Added key to shortcut backend implementation
* Added tests
* Added tests for CapsLock/modifier workaround for key to shortcut
* Added correct JSON loading step
* Cleaned shortcut remap code to use helper function for modifier keys
* Removed RemapKey class
* Enable Key to Shortcut in UI along with Type Shortcut in Remap key window
* Fixed orphaning and unsuccessful remap dialog
* Fixed column width
* Renamed second type key button
* Fixed Type Shortcut issues
* Fixed shortcut to key backend logic and manually tested most scenarios
* Added s2k in UI, manually verified its working
* Added one more k2s test
* Added tests for s2k
* Added tests for Caps Lock workaround in shortcut remaps
* Fixed formatting
* Fixed formatting
* Removed safety code since it can cause issues with code generated key up events
* Added test for key up scenario
* Tweaked warning text
* Tweaked text
* Tweaked text to fit in two lines
* telemetry additions
* Adjustments on default keystroke and removing key string whihc really didn't do anything
* moving color picker into alphabetical order
* removing removed property
* adjusting comment based on feedback from martin
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
* Renaming properties
* Update PowerLauncherProperties.cs
trying to kick CI
* PowerLauncher is way for naming.
Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
* stack new zones
* Changed startup location of window editor
* Zones start in upper left
* Changed Focus Zone Initialization
* Zones.Add
* Reset zone position when it goes off screen
User has actually signed CLA, see #4722
* Clear capturing groups with more than 1 digit
* Fix issue in regex pattern
* Add unittest
* Fix regex patterns
* Edit unittest
* Fix regex pattern, add some tests
* Added functionality for left/right key navigation
* Update Behviour of left/right navigation
* Code cleanup
* Null check for results VM
* Added tests for results view model
* Update test namings
* Turning on static analysis and removing warning for NoMages.
* Fixing static analysis errors in NumberTranslator.cs
* Fix: Severity Code Description Project File Line Suppression State
Error CA1810 Initialize all static fields in 'Main' when those fields are declared and remove the explicit static constructor Microsoft.Plugin.Calculator C:\Repos\PowerToys\src\modules\launcher\Plugins\Microsoft.Plugin.Calculator\Main.cs 30 Active
* Throwing exception if arguments are null to fix static analysis errors.
* Ignoring CA1031
* Logging exceptions for Calculator queries.
* Remove os-detection project
* Removed os-detection project from sln
* Added os-detection to PowerToysInterop
* Removed references to os-detection and added PowerToysInterop.dll to the ImageResizer folder
* We should not deny other processes access to this item
* added a catch block for argument exception
* using memory stream instead of URI
* removed denyNone as it is the default config
* opens new settings search options
* Catching file not found exception
* removed unnecessary header files
* Added display strings and cleaned up code
* reduced the number of max results to 30
* added log statement for exception
* Added drive detection to settings ui but still doesn't reflect on toggling it
* added getter setter for DriveDetectionWarning
* Got UI and backend to work as expected
* Reading value from registry working as expected
* Added test for settings
* Added tests for drive detection
* rename drive detection
* Localized indexer string
* formatting
* resolving merge conflict
* Added theme aware warning icon
* changed text for the warning
* Added the warning images to the installer
* New color picker module - integrated from github.com/martinchrzan/ColorPicker
* Trying to fix build in github
* Replaced icon in the settings to use font icon instead of path icon
* Closing ColorPicker.exe when PowerToys process closed, added color picker project into runner dependencies, restoring cursors on exit, added ManagedCommon as a dependency into installer
* User/ryanbod/fix colorpicker release (#5046)
* Changing configuration to x64 instead of AnyCPU. The previous configuration was preventing the ManagedCommon binary from being loaded in Release.
* Updating MSI Installer with new icons (#4998)
* Adding missed dll into installer
* Fixed potential exception
* Creating settings.json on the first start when there are none, fixed default keyboard shortcut
* Added ColorPicker.exe.config into installer
* Start filewatcher after default settings file is created
* Fixing build
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
* Added file system wrapper and interface
* added win32program repository which would load store app and also handle new apps being added/deleted
* Added event handlers to win32 program repo
* added paths to monitor and setting FSWs for each location
* Events firing as expected
* filter extensions added, events fire as expected
* override gethashcode so that duplicates don't show up. OnCreated and OnDeleted events trigger as expected
* implemented setter for filters in FileSystemWatcher
* Rename adds item but does not seem to delete the previous app
* catching an exception when a duplicate item is inserted
* Removed notify filter for directory because we only need to monitor files
* Added exe programs to be indexed in the desktop and startmenu
* created a new class to init FileSystemHelpers instead of main
* Added fix for shortcut applications to work as expected while renaming and deleting them
* Added wrappers for file system operations
* Added some tests
* Added all tests for appref-ms and added a condition to search in sub directories
* Added tests for Exe applications
* Added lnk app tests
* Added tests for shortcut applications
* removed unnecessary wrappers
* override Equals for win32
* removed debug statements
* Fixed exe issue
* Fixed internet shortcut exception
* fixed renaming shortcut apps
* Added a retry block for ReadAllLines
* capitalized method name - RetrieveTargetPath
* made naming consistent, helper variables start with underscore
* Added the exception condition back
* renamed Win32ProgramRepositoryHelper to Win32ProgramFileSystemWatchers
* made win32Program repository variable static
* changed list to ilist
* disposed file system watchers
* make retrieveTargetPath upper case in tests
* Add basic using file attributes functionality
* Correctly return result
* Refactor
* Move retrieving date attribute to get function
* Cover various milliseconds patterns, retrieve file attributes only when needed
* Correctly check if date/time pattern is used. Remove wstring cast
* Use correct flags on CreateFile call to handle directories
* rebase to master
* Perform transform operation at last to make it not mess with date/time variables
* Refactor, remove extra space
* Swap resizers on drag
* Update resizers on split if existing split is used
* Fix accuracy error
* Zone ids are ordered
* Cancel merge on other actions
* Split if one of the snapped splitters is dragged
* Implemented Clear Input On Launch
* Move logic to seperate command on viewmodel
* Added Settings Sync
Moved logic from OnDeactivated to OnActivated
* Complete after testing
Co-authored-by: Roy <royvou@hotmailcom>
* Updated (plugin) icons with MDL2
* Image wasn't updating
* Based on feedback, updated app icon and windowwalker icon
* Updated app icon
* Updated Window Walker icon
* Change build action / Copy to output directory to None and Do Not Copy - like it was originally
* Fix
* Fix
* Resized images
* Added theme awereness based on somil55s PR
* Added theming to Shell and WindowWalker
* Revert "Added theming to Shell and WindowWalker"
This reverts commit f492c4efdb.
* Revert "Added theme awereness based on somil55s PR"
This reverts commit 8edd3226be.
* Typo fix
* Added new theming support for the new Calculator, Shell and WindowWalker icons
* Added Unit test reference back in
* Remove WinUI include in KeyboardManagerState.h
* Changed include steps
* Clean up headers in KeyboardManagerUI except XamlBridge.h
* Cleaned up headers in KeyboardManager common and test
* Cleaned up headers in KeyboardManager project
* Removed headers from XamlBridge
* Removed some headers from kbm common pch
* Added MP flag to reduce build time
* Added missing include
* Enable app specific shortcut remapping
* Fixed lowercase function call
* Add test file
* Moved GetForegroundProcess to II and added tests
* Fixed runtime error while testing due to heap allocation across dll boundary
* Renamed function
* Changed shortcutBuffer type
* Linked App specific UI to backend
* Added shortcut validation logic on TextBox LostFocus handler
* Moved Validate function and changed default text
* Changed to case insensitive warning check
* Changed to case insensitive warning check at OnClickAccept
* Fixed alignment and spacing issues
* Added app-specific JSON support in backend
* Updated landing page
* Make listview horizontally scrollable
* Added tests
* Consider all case variants of All Apps in textbox to be global shortcuts
* Added wrapper for PackageManager and Package class
* Added tests for package in development and framework mode
* Renamed UWP test file
* Improved readability of UWP tests
* Added custom tooltip style (with theming support) that represents the UWP tooltip style.
* Removed unnecessary space in text
* Fixed run as admin casing
* Fixed casing for Indexer plugin
* Started work
* Did something, not yet sure that it works
* Sort of works
* Cleari highlighted zones when using Ctrl after leaving a monitor
* Remove unnecessary line
* Enhanced UX. Maybe refactor?
* Changed the logic behind zone selection when dragging
* Various fixups
* Merging in Theme changes and moving win32Tests to Microsoft.Plugin.Program.UnitTests
* Fixing message format for exception
* Changing test structure. Need to add unit tests.
* Updating packagerepository comment based on pr feedback
* Fixing potential race condition in ListRepository. Now internally implemented as a concurrent dictionary.
* Removing unecessary implementation of IRepository interface as this is implemented by the base class.
* Restoring checks for invalid uwp apps based on PR feedback. This was accidentally removed when moving the initialize outside the constructor.
* Fixing comments
* Adding newline to end of file for IProgramRepository
* Revert "Adding newline to end of file for IProgramRepository"
This reverts commit d55cac80bf.
* Revert "Fixing comments"
This reverts commit a1ecdc9bfa.
* Revert "Restoring checks for invalid uwp apps based on PR feedback. This was accidentally removed when moving the initialize outside the constructor."
This reverts commit 0e8c1cb0fd.
* Revert "Removing unecessary implementation of IRepository interface as this is implemented by the base class."
This reverts commit 1c724280f5.
* Revert "Fixing potential race condition in ListRepository. Now internally implemented as a concurrent dictionary."
This reverts commit 9ff8246a9d.
* Revert "Updating packagerepository comment based on pr feedback"
This reverts commit 2c45956030.
* Revert "Changing test structure. Need to add unit tests."
This reverts commit 1c267a55d5.
* Revert "Fixing message format for exception"
This reverts commit f60bdc3dd4.
* Revert "Merging in Theme changes and moving win32Tests to Microsoft.Plugin.Program.UnitTests"
This reverts commit 030dfc2370.
* Enable app specific shortcut remapping
* Fixed lowercase function call
* Add test file
* Moved GetForegroundProcess to II and added tests
* Fixed runtime error while testing due to heap allocation across dll boundary
* Renamed function
* Changed shortcutBuffer type
* Linked App specific UI to backend
* Added shortcut validation logic on TextBox LostFocus handler
* Moved Validate function and changed default text
* Changed to case insensitive warning check
* Changed to case insensitive warning check at OnClickAccept
* Fixed alignment and spacing issues
* Added run as admin context menu item to apps returned by indexer plugin
* Added a test and localized strings
* localize strings
* Add more tests for folder and other file types
* fixed run as admin -> run as administrator
* resolved merge conflict
* refactored tests
* moved common code to helper and added logs
* moved start process to the helper class
* added more info in a comment
* fixed count in tests as open in console was added
* removed additional code that was added while fixing merge conflicts
* Added open in console for indexer
* Added open in console fpr indexer and folder plugin
* Added open in console to program plugin
* Added string localization for program plugin
* Added test for win32 program
* Added test for win32 programs
* Added test for indexer plugin
* Localization for context menu title
* Added tests for folder plugin
* Added tests for indexer plugin
* Code cleanup
* Improved logging and nit fixes
* Updated tooltip for open in console
* Updates tests
* Removed subtitle property from contextmenuresult class
* Improved logging for context menu loaders
* Update app zone history on every new window assignment to zone
* Compare window positions with already placed windows
* Remove window property only after processing window removal from zone
* Only persist data when applying existing layout if it is scaled
* Fix applying edited Focus layout
* Fix different Focus zone sizes in editor and engine
* Fix codestyle
* Initial design for opening window on active monitor
* Perform entire handling in DPI unaware thread
* Codestyle improvement
* Improve resizing mechanism and optimise code a bit
* Remove unneeded code, make simple helper functions inline
* Make this feature configurable
* Code optimization, improve positioning for some applications
* Retry positioning for certain applications
* Improve readability
* Address PR comments: Minor code style improvements
* Remove retries in custom positioning
* Position new toggle in settings menu
Due to changes in the directory structure of the `doc/images` folder, the link for `examples_settings.png` was broken and image was not showing up. I have fixed the link and image is showing up in the README.md file.
* Added tests to verify that the name is always set as the title and never the description
* removed AppType as an argument
* refactored code
* added comments
* localized strings
* removed empty constructor
* made setsubtitle private
* removed the mock Win32 class used for unit testing
* removed the UWP tests
* Fix multiline title issue
* Added code to display tooltip for program and indexer plugin
* Added tests for Result class
* Theme based color for tooltip
* Added colors for tooltip
* Added string tags to tooltip
* Add initial show delay
* Seperated textbox for title and path
* Enable app specific shortcut remapping
* Fixed lowercase function call
* Add test file
* Moved GetForegroundProcess to II and added tests
* Fixed runtime error while testing due to heap allocation across dll boundary
* Renamed function
* Remove unused code
* Changed process checking step to include substrings
* Changed back to exact match included match without file extension
* Folder plugin - copy path
* indexer plugin - localized
* removed program plugin reference as it was not needed
* program plugin localized
* shell plugin localized
* removed extra semi colon
* Added loc files in other languages as well for indexer
* Added the inotifyPropertyChanged to all the properties and that stops the memory for shooting up
* some more inotify properties added
(cherry picked from commit 26fa05d9b661dadc5ab0257d540ab838a07c43a6)
* Revert "some more inotify properties added"
This reverts commit 845a94c9b2.
* Removed unnecessary inotifypropertychanged interfaces and cleaned up the code
* removed the ctrl+c from folder plugin
* removed unnecessary init
* Added unit test to check if PropertyChanged is called
* renamed var
* refactored the tests
* formatting and adding comments
* changed access modifier in test
* Used observable collection instead of a list
* clearing the observable collection instead of setting it to a new one
* Add basic transform functionality
* Add basic transform functionality
* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.
* Avoid wcslen() in for statement
* Avoid wcslen() in for statement
* Add basic transform functionality
* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.
* Avoid wcslen() in for statement
* Avoid wcslen() in for statement
* Add basic transform functionality
* Change toupper/tolower/isspace to towupper/towlower/towisspace. For loops omitted if possible.
* Avoid wcslen() in for statement
* Adjust Powerrename Interface
* Add trimming rename string
* Remove leading and trailing spaces from rename string
* Add support for transforming only item name or extension. Temporarily remove trimming to refactor. Change CAPITALIZED to TITLECASE
* Fix bug when search for area is empty
* Add trimming back with refactor(leading spaces, trailing spaces, trailing dots)
* Now supports transforming when search area is empty
* Add smarter titlecase
Transformation breaks when new filename contains an unusable character (\/?:*?"<>|)
These characters need to be removed from new name anyway.
* minor bugfix
* Add unittests, contains failing tests
* Remove unnecessary/failing tests
* remove generated file
* some code formatting and fix memory leak issues
* Use proper allocation, change int to size_t
* Refactor. Move transforming to Helpers.cpp
* Refactor. Move trimming to Helpers.cpp
* Change StrDup to SHStrDup. Some refactoring.
* Fix memery leak, add proper result controls, use newNameToUse in functon calls becaause it is where the final form of the string is tracked
* Change declarations of strings, add proper result controls
* Slightly widen the labels to cover the whole text
* Add extended characters support
* Rename a variable
* Correctly identify the last word for titlecase
* Add empty line to last line of resource.h
* Started work
* I can't debug anything, cleaning
* Added settings, [[Not Tested]]
Not even compiled
* Tested, the most basic features work
* Refactor, add RestoreSize
* Added DPI awareness
* Fixed a potential issue with resizing zoned windows
* Fixup: Potentially unsafe memory-layout of std::pair replaced with std::array
* Fixup: Use .data() instead of a pointer
* Further refactoring
* Integrated Win+Arrow keys with the Restore size feature
* Fixed an issue where window's on-screen position is not restored properly
* Fixed a bug pointed out by Enrico
* Migrate theme manager to infrastructure and added it as input to public API instance
* Working event-delegate for PublicAPIInstance
* Theme aware UWP applications
* Theme aware program plugin
* Update query icon on theme change
* Theme aware calculator plugin
* Fix issue with query running before theme change
* Theme based changes in ImageLoader
* Removed ErrorIcon direct references and added references from ImageLoader
* Nit fixes
* Removed unnecessary TODO in UWP.cs
* Added preference to theme based icons
* Added IDisposable interfaces to unsubscribe events
* Clean termination of powertoys process.
* Fixed issue with run not responding to WM_CLOSE
* Fixed serialization error in pinyin and image cache
* Fixed merge conflict
* Fixed nit wrt to master
* Basic framework of clearing up of cache is working
* formatting
* removed the default argument of load
* fixed nit comment
* rewriting the PowerToys version
* Each storage file has an associated version file which helps decide whether or not to delete that file on loading
* removed unnecessary reference
* renamed file to StoragePowerToysVersionInfo
* adding log files
* Checking whether the version strings are null, if so, we would clear the cache
* Added filepath to log files to make it more informative
* fixed nit naming
* using lesser than to compare instead of portable version
Co-authored-by: Divyansh Srivastava <somm14divi@gmail.com>
* reducing storage of images
* Added task.run
* cleaned up code and added comments
* Renamed variable
* refactored code
* Removed task.run because it was leading to race conditions in the concurrent dictionary and it was taking only upto 10 ms for reordering the dictionary
* Added comments and fixed variable name
* Clean termination of powertoys process.
* Fixed issue with run not responding to WM_CLOSE
* Fixed serialization error in pinyin and image cache
* Fixed merge conflict
* Fixed nit wrt to master
* Fixed undeterministic behaviour of Environment.Exit function
* Update timing for terminate process
* Added extended key flag to more keys
* Add test for extended key flag
* Move shlwapi.lib reference
* Added shcore ref
* Fixed pipeline incompatibility
* Fixed lib declaration in common
* Fixed formatting
* Remove unused statements
* removed another statement
Error CS0436 The type 'ActionKeywords' in 'C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml.cs' conflicts with the imported type 'ActionKeywords' in 'Wox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in 'C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml.cs'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ActionKeywords.xaml 7 Active
Severity Code Description Project File Line Suppression State
Warning CA1060 Move pinvokes to native methods class PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 24 Active
Warning CA1812 ReportWindow is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static members, make it static (Shared in Visual Basic). PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\ReportWindow.xaml.cs 15 Active
Warning CA1307 The behavior of 'string.IndexOf(string)' could vary based on the current user's locale settings. Replace this call in 'PowerLauncher.MainWindow.ListView_FirstItem(string)' with a call to 'string.IndexOf(string, System.StringComparison)'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 269 Active
Severity Code Description Project File Line Suppression State
Warning CA1823 Unused field '_progressBarStoryboard'. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 27 Active
Severity Code Description Project File Line Suppression State
Warning CA2007 Consider calling ConfigureAwait on the awaited task PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 305 Active
Warning CA1801 Parameter text of method DelayedCheck is never used. Remove the parameter or use it in the method body. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 303 Active
Warning CA1820 Test for empty strings using 'string.Length' property or 'string.IsNullOrEmpty' method instead of an Equality check. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs 291 Active
Warning CA1031 Modify '.ctor' to catch a more specific allowed exception type, or rethrow the exception. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 33 Active
Settings.json is locked by the settings application and throws a system IO Exception. This should be syncronized with the settings application, but for now I'm just fixing the exception to be more specific and not hide unexpected exceptions.
System.IO.IOException: 'The process cannot access the file 'C:\Users\ryanbod\AppData\Local\Microsoft\PowerToys\PowerToys Run\settings.json' because it is being used by another process.'
Severity Code Description Project File Line Suppression State
Warning CA1031 Modify 'OverloadSettings' to catch a more specific allowed exception type, or rethrow the exception. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 76 Active
Severity Code Description Project File Line Suppression State
Warning CA1822 Member 'ConvertHotkey' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\SettingsWatcher.cs 85 Active
Severity Code Description Project File Line Suppression State
Warning CA1822 Member 'WaitForPowerToysRunner' does not access instance data and can be marked as static PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 130 Active
Severity Code Description Project File Line Suppression State
Warning CA1401 P/Invoke method 'OpenProcess' should not be visible PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 125 Active
Warning CA1806 Main calls TryParse but does not explicitly check whether the conversion succeeded. Either use the return value in a conditional statement or verify that the call site expects that the out argument will be set to the default value when the conversion fails. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs 45 Active
Warning CA1062 In externally visible method 'void App.Main(string[] args)', validate parameter 'args' is non-null before using it. If appropriate, throw an ArgumentNullException when the argument is null or add a Code Contract precondition asserting non-null argument. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs
Warning CA1001 Type 'MainWindow' owns disposable field(s) '_firstDeleteTimer' but is not disposable PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\MainWindow.xaml.cs
Warning CA1816 Change App.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it. PowerLauncher C:\Repos\PowerToys\src\modules\launcher\PowerLauncher\App.xaml.cs
* Search for programs in the path env variable
* removing list of disabled programs
* Added env variable string to classify apps
* reverted the fullpath change
* removing full paths while calculating dups
* removed dups
* removed debugging code
* Renamed to run command
* Added condition to filter run commands unless there is an exact match
* renamed occurances to RUN COMMAND
* localized the subtitle - Run command
* Added tests
* add fullpath back to hash calculation
* renamed the function
* Added support to index desktop app
* Fixed dedup for url files
* Added internet shortcut scheme for epic games
* Added test for internet shortcut dedup
* Updated hostname for steam game
* save general settings to file upon launch
* ImageResizer: Added flags to disable and hide extra boxes
Co-authored-by: Lavius Motileng <laviusmotileng-ms>
* Added functionality to not display hidden files
* Added interfaces for seperating db layer
* Updated variable naming and refactored Database connection class
* Added tests for WindowsSearchAPI class
* Fixed nit with braces
* Added function to test that all connections from database are closed
* Move window into last known position on active work area (if possible)
* Refactor code to avoid double checks
* Address PR comments
* Perform all HWND checks at one place
* Improve handling of active/primary work area in app zone history
* Address PR comments: naming, arguments checks
* Rename some functions to increase readability
* Implement special handling in 2+ monitor scenario
* Minor naming change
* Simplify
* Improve readability
* Remove blank line
* Don't move away from secondary monitor if there is no app zone history
* Update comment
* FancyZonesEditor should not be zoned
* Preserve width and height (if possible) when opening on active monitor
* Maintain w/h whenever possible
* Remove scaling, add window coordinates on active monitor top-left corner
* If there is no app zone history on secondary screen, fallback to default windows behavior.
* Fix capturing group bug when Match All Occurrences is not checked
* Capture groups are now available when Match All Occurences option is not selected
* Bug fix when capture group is indicated with leading zeros. $01 should be considered as $1 etc
* Use flags in regex_replace() when Match All Occurences is not selected
Now the behaviour is consistent with how regex works when Match All Occurences is selected.
* Add workaround for Japanese IME Caps Lock issue
* Changed tweak to reset modifier key rather than Caps Lock
* added tests
* Fixed test comment
* Moved environment initialization in KBM tests to TEST_METHOD_INITIALIZE
* Search shows up steam games
* Formatting
* Filtering only those steam shortcuts which run an application
* Using equals instead of ==
* PWAs should not show up when searching for the main app
* Modified the subtitle to say progressive web application
* renamed to web application
* To search for web applications for all chromium based browsers
* Renamed it to WebApplication
* Added unit tests and refactored code
* made string global const
* Added localization tags
* Added a separate function for localization as the IPublic API was not available to all
* Removed unnecessary references and variables
* Update src/modules/launcher/Plugins/Microsoft.Plugin.Program/Languages/de.xaml
Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
* Added enum for application types
Co-authored-by: htcfreek <61519853+htcfreek@users.noreply.github.com>
* Add test proj, refactor proj with filters, and move single remap function to a separate header
* Moved all methods to header files
* remove more unused commented code
* Reverted sln file
* Fixed sln file
* Added interface wrapping SendInput calls
* fixed formatting
* Created test mock class
* Added keyboard input logic
* Fixed compilation errors and added nuget reference to CppWinRT
* Added tests for single key remapping
* Refactored code for adding shortcut remap tests
* Separated test classes
* Fixed tests in release mode
* Added more tests
* Resolved comments
* [Launcher/Settings] Low Level Keyboard Hooks
* [Run] LowLevel Keyboard Hook for Hotkeys
* Prevent shortcuts from auto repeating when keeping the keys pressed down
* first adjustment to wiki move
* Image Resizer and deleting imgs for FZ
* updating stuff to aka links
* updating app to leverage aka links
* moving files to wiki
* KBM adjustment
* updating
* getting PT Run moved over
* Shortcut guide and fixing launcher's readme text
* Update README.md
* img for shortcut guide moved to wiki
* updated setting img to be aka link as well
* Restart explorer.exe programatically after successful update
* Move RestartManager related code into common
* Add newline at the end of files
* Note that explorer.exe should not be localized string
* Search shows up steam games
* Formatting
* Filtering only those steam shortcuts which run an application
* Using equals instead of ==
* Case change in Internet shortcut
* Initial work, not tested
* Forgot the most important part
* Use target argument instead of hardcoded string
* Removed old way of running Launcher
* Completed rebase, updated some code
* Added fix for UWP icons not showing up
* updated comment and reversed the list of target sizes
* find the icon closest in size to the appIcon size
* Remove nlog reference that was added by mistake
* Add skip to currently invoked shortcut code - should change no behavior
* Fixed Alt tab issue
* Added comment
* Added step to check if original shortcut action key should be pressed
* Fix number of cases in comment
* Removed Wox Theme Manager
* Added Light and dark theme and template for high contrast theme
* Updated themeManager to remove strings
* Fixed issue with high contrast theme not being applied
* Fixed formatting
* Updated MSI to include dll for Mahapps and controlzex
* Added support for multiple high contrast themes
* Remove app zone history belonging to deleted virtual desktop.
* Implement support fancy zones app zone history on multiple desktops.
* Break when device id is located to avoid unnecessary loop iterations.
* Fix failing unit tests after JSONHelpers API changes.
* Use valid UUIDs in json helper unit tests.
* User properly formated test data in app zone history unit tests.
* Don't delete entire app history when moving out of zone on one desktop.
* added error handling for FZ Hotkeys
* moved hint to hot key control text
* updated icon size 16px
* updated styling and fixed typos
* fixed typo
* moved text to string resource
Co-authored-by: Lavius Motileng <laviusmotileng-ms>
Connect Wox's existing "ignore hotkeys in fullscreen mode" setting to PowerLauncher and the PowerToys settings UI.
This allows PowerLauncher to ignore hotkeys if any application is currently in fullscreen mode, whether it's real exclusive fullscreen or borderless windowed mode. This applies to things like fullscreen games, video and presentations but not maximized windows.
* reverted the dedup code, file explorer shows up but so do duplicates
* Fixed file explorer and dedup
* Formatting
* Added tests for all the cases
* Formatting
* Tests
* take name and exe into consideration while calculating hash
* unique primes while calculating hash code
Microsoft changed the name of Fabric UI to Fluent UI. Updated title and URL (which still links to the same page, just with a direct link instead of a redirect).
* Basic WPF searchbox working
* Updated key navigation and removed coldstart for searhbox
* refactored and added code back in commented
* Removed XAML Island references
* Basic searchbox+listview working
* Getting a bit more back
* got color there
* Result list bit better now
* Added image loader for WPF Image
* Partially got the context menus rendering again
* adjusting coldstart to load, control will load with main form
* getting context menus back
* mouse over works now
* Click now works, started to remove Win.XAML references
* being a bit more forcusful on focus
* Shadow text is not aligned
* fixing focus if listbox was used
* small tweak to fix shadow text
* inputs don't work but gotta figure out why. commenting out
* preview text
* adding back in delay
* fixed height issue
* Applied the correct context button styles
* Created custom ItemContainerStyle to fix the blue highlights behind the command buttons
* Applied the correct highlight / mouseover styling
* Removed vertical scrollbar in listview
* fixed for alt-space prompt
* Fixed right click focus issue
* Somil55/wpf modifier keys (#3378)
* Removed DPI change as it was not required
* Global key hooks for context menu items
* Updated Key for shell, folder and indexer plugin
* Updated key mapping for indexer plugin
* Somil55/wpf context menu selection (#3389)
* Removed DPI change as it was not required
* Global key hooks for context menu items
* Updated Key for shell, folder and indexer plugin
* Updated key mapping for indexer plugin
* Add trigger to selection on tabbing
* Minor shadow adjustments so its more similiar to default shell shadow. Added intro/outro animations
* Added UWP-like scrollbar style for the results list
* Fixed formating and naming
* Removed Powerlauncher UI project
* Update PowerToys.sln
* Commented out scrollbar and fade in/out animations
* Added missing features from UWP branch
* Fixed formatting for Product.wxs
* Add dragging to WPF window
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
* Initial design for improving handling of different engaged work areas in fancyzones.
* Remove active device id check in ZoneWindow.
* Remove concept of active device identifier in JSONHelpers.
* Refactor interface description and add new method.
* Simplify ZoneWindow initialization.
* Default value for active ZoneWindow during move/size.
* Add newline at the end of file.
* Use COM pointers for ZoneWindow instead of passing raw ptr.
* Solve few issues after merging with master.
* Fix typo in documentation.
* Update settings header: Remap keys
We write "Remap Keyboard" but it must be "Remap keys" because we not remapping the whole keyboard. We only remap single keys.
* Tweaked c++ side naming
Co-authored-by: Arjun <arjunbalgovind@gmail.com>
* Add test proj, refactor proj with filters, and move single remap function to a separate header
* Moved all methods to header files
* remove more unused commented code
* Undo test project addition
* Treat warnings as errors
* Adding Uninstall instaructions to ReadMe
* Fixed issue link
* Move "uninstall hint" link
* Did requested changes
Remove hand emoji, move link and fix text mistakes.
After reading the rest of the paragraph, I believe the intention was for this to read "This project welcomes contributions of all types" rather than "This project welcomes contributions of all times" or "..at all times"
* Sync'ing nuget packages. more to do
JSON, islands
* updating sql and oledb
* upgrading to 2.0 RTM for MahApps
* consolidated Microsoft.NETCore.UniversalWindowsPlatform
* updating Microsoft.Windows.ImplementationLibrary
* Microsoft.Windows.SDK.Contracts
* Persist app zone history in a separate file
* Almost ready to be functionally tested
* Now all unit tests pass
* Bug fixes, it seems to work
* Various fixups
* Improved performance of FancyZones::UpdateWindowsPositions()
Have not seen this requirement mentioned anywhere until PowerToys is already installed.
For those installing PowerToys specifically to try this, it would be useful to know the requirement in advance, especially given that https://github.com/microsoft/PowerToys/blob/master/README.md mentions only 1803.
* Increase score for exact matches in the name
* Added tests for exact matching
* Used TestCase
* variable for bonus score
* Removed comment, variable is self explanatory
* updated general settings tests
* reverted changes to solution files
* fetch test strings from a string resource
* updated bidning variable name to avoid confusion
Co-authored-by: Lavius Motileng <laviusmotileng-ms>
* Adding privacy event tags to each telemetry event.
* Moving Privacy events to Telemetry base, Removing tag values, and fixing namespaces.
* Adding documentation comments to fix style cop errors in release
* UTCReplace_AppSessionGuid boolean property to all C# telemetry events.
* Adding hardcoded version number to boot events.
* Adding reference to telemetry in settings unittest
* Adding Preview Pane events for loading w/ hardcoded version number
* Adding telemetry.h to msi for svg and markdown events
* removing unused explicit interface exception
* Removed AppxPackaging dll
* Added helper class and fixed some AppxPackage errors
* Modified it to use the COM interface
* Got it to build without errors but UWP apps don't show up
* Added app to the array
* Deleted the AppxPackaging.dll
* Added github reference
* Removed unnecessary uwp app argument
* Removed dll from installer wxs file
* Change auto-download setting's title
The update don't get automatically downloaded when the user is connected over an metered connection.
This is something the user should known about. Because of not have to be afraid on having extra costs and to not being confused if it not works on metered connections.
* auto-download title (old settings)
Did the same change also for the old web-settings.
* Deleted the dll
* Added Shell Link helper class
* Add activation manager helper
* Use helper shell link and remove shell namespace
* removed using shell and added Activation helper namespace
* Removed the dll from the installer
* formatting
* nit formatting
* Replaced UWP searchbox with WPF
* Updated foreground color scheme for textbox
* Add focus on visibility changed
* Updated initial hiding of window
* Fixed list box border
* vis issue on start, fixing border
* Revert "Merge branch 'somil55/MigrateSearchBoxToWPF' into fewTweaks"
This reverts commit 3525171621, reversing
changes made to b5daffca55.
* Remove change in startup visibility
Co-authored-by: Clint Rutkas <clint@rutkas.com>
* Added the settings hyperlink code back
* Moved the os detection code to a different file so that it can be imported by image resizer
* Added code to the Image resizer project to react to import the dll
* Added an empty dll project
* Added a dll which can be imported by image resizer
* ImageResizer binding works
* Added the setDllDirectory to load the os-detection dll
* Removed the OS detection files that has been added to the common project
* Added reference to os-detect and removed reference to common/OS-Detection.h
* Modified project files
* Revert "Modified project files"
This reverts commit 75f9d73f30.
* Removed unnecessary showAdvanced bool variables
* Removed OS Detection code from common project
* Cleaned configuration properties of soln and projects
* runner is dependent on os-detection
* Added the os-detection.dll to wxs file
* nit space formatting
* Added reference to os-detection
* Added os-detection header file
* Add os-detection reference
* Added os-detection.dll
* removed the set dll directory and using relative paths instead
* Add relative path
* WIP Confirmation dialog for orphaned keys
* Confirmation Dialog for orphaned keys
* White OK button, Anyways capitalizef
* Change Apply to Ok for shortcuts
* Validate that mappings can be made before changing keyboardManagerState
* Set fixed MinWidth for OK button
* Fix typo
* Partial remappings confirmation dialog
Both for Shortcuts and SingleKey
* Remove warning icon callback in OnClickAccept
* Add text wrapping for OrphanKeys dialog
* Updated the add button styles to a standard used in W10 settings
* Updated the "About this feature" text to About [Module name]
* Set larger changes to the Shortcut Guide opacity numberbox
* Re-organised the General page
* Improved width of the add button so it's inline with the corresponding listview.
* Seperated warning label from header. Re-organised general settings
* Consistent formatting of the word 'administrator'
* Typo fix
* Warning text is collapsed when the user runs the app as admin
* Removed underline of version number
* XAML fix
* Fixed foreground issue and added arrow
* Tweaked Remap Keyboard UI
* Fix errors in warning handling and update UI layout
* Tweaked sizes and centered to screen
* Fixed flyouts appearing on search for Single key remaps
* Fixed flyouts appearing on search for Shortcut remaps
* Remove warning exclamation icon and tooltip
* Fixed a bug where setting None on a drop down which would create a shortcut with a conflict would cause a crash
* Remove IsTypeKey logic
* Changed warning text
* Resolve comments
* Fixed foreground issue and added arrow
* Tweaked Remap Keyboard UI
* Fix errors in warning handling and update UI layout
* Tweaked sizes and centered to screen
* Changed size to scale based on resolution
* Fixed comments
* Raising Telemetry events when svg and markdown preview pane is turned off
* Properly serializing Bool property. This allows us to be backwards compatible with .17 settings but interact with the properties as boolean elements, and fire events on property changed notification
* Updated UWP app to set entry point type for each app
* Working run as admin for packaged app with permission
* Updated UWP to allow apps with mediumIl trust level to be run as admin
* cleanup variables not required
* Had reverted the changes made in the Microsoft.Launcher.rc file by mistake while resolving merge conflicts
* reverted company name to how it was before
* Add new text for Remap Keyboard
* Added text in KBM windows
* Tweaked KBM landing page view
* Changed to transparent background
* Tweaked text
* Tweaked text
* Added code to detect os build number
* To set the settings.exe according to the powerToys version that is running
* Modified the description of old UI for launcher and keyboard remapper
* Using API contracts instead of registry
* Removing file that was included by mistake
* Clean up resources taken by closed virtual desktops on FancyZones module startup.
* Overload GetVirtualDesktopIds to return wide string.
* Refactor OnDisplayChange method.
* Commented out ToggleToMod and AppSpecific function calls
* Added logic to make sure key remaps don't occur on Edit Keyboard Window
* Changed behavior such that remappings only apply after window is closed
* Update version in General Settings
* Set version in settings.json file
* Only overwrite the settings.json file if it is newer than the old version.
* Fix tests
* Fix test names and added comment
* Added output folder
* Added FileExplorerPreview output folder for all projects
* Added extra dlls and FileExplorerPreview to path
* Added folder and modified path for registry setup of preview handlers
* fixed run-elevated error and powerpreview settings not working
* removed EXTENDED_STARTUPINFO_PRESENT flag
* removed test string
* Update Microsoft.PowerToys.Settings.UnitTest.csproj
* Rename PowerLauncher.cs to PowerLauncherViewModelTest.cs
* Bypass XamlBridge Window focus handling
* Constrain only one window can be opened at a time
* Revert changes on files changed in another PR
* Changed WM_DESTROY to WM_NCDESTROY
Co-authored-by: Tomas Raies <tomas.raies@gmail.com>
* Fixed left and top window
* Added dpi Aware launcher positioning code
* Code cleanup
* Added support to drag window
* Multi monitor support added
Remaining fix : Launcher doesn't open first time on changing monitor
* removed code handling change in DPI manually
* Code cleanup
* Fix to support multimonitor display
* Code cleanup
* Revert "Code cleanup"
This reverts commit 38f39924f0.
* Revert back to WOX helper for calculating normalized DPI
* Move part of the virtual desktops related logic from FancyZones to VirtualDesktopUtils.
* Post WM message from vritual desktop tracker thread to FZ thread.
* Minor improvements in RegisterVirtualDesktopUpdates method.
* Close registry key after HandleVirtualDesktopUpdates thread finishes execution.
* Remove comment explaining workaround to VirtualDesktopUtils namespace.
* Move HandleVirtualDesktopUpdates to VirtualDesktopUtils namespace. Resolve PR comments.
* Fix typos in window messages description.
* Remove lock from OnKeyDown method to avoid deadlock.
* Handle scenario with only primary desktop and no desktop swithc in current session.
* Add scoped lock when changing current desktop id. Address PR comments.
* Explain purpose of UpdatePrimaryDesktopData method.
* Fix typo in documentation.
* "Unhooked" the Shortcut guide module from the PT event dispatcher
* Fixup: warning/undefined behavior/terrible bug
* SetWindowsHookEx and UnhookWindowsHookEx now fail silently
* Updated a comment in shortcut_guide.h
* Renamed a method, added an error message
* Removed unnecessary styling resources.
Fixed searchbox overlay.
Fixed a bug where the command buttons would fall of the list
* Fixed a bug where the app icon could overlap the title/path textblocks
* Consistent background / border color
* Tweaked shadow, background color now theme depended
* minor modifications in README
* Added launcher project and changed references to common
* Added the code to launch another process
* added shellapi header
* Added launcher to runner
* added functions to remove the abstract class error
* added the wox launcher dll
* Readded the reference to common
* modified the additional include directories for the release version
* changed the name to be displayed from Wox.Launcher to Launcher
* Localized the strings of Launcher
* Added a SearchResult Helper class
* Created a helper class to use indexer and return search results
* Added the main and settings file which declare most of the plugin interfaces
* Added references and renamed a class
* Added the images folder which contains the windows indexer icon
* Added the image
* Added the plugin.json file
* Minor changes in project files
* Added plugin.json to the project
* Modified the output paths to create the dll for the plugin in the correct location
* Refactored the code to make it unit testable
* Made the code unit testable and added unit tests for the indexer plugin
* Removed commented out code
* Code to terminate wox when we exit PowerToys
* Copy from Jeremy's fork PR
* Removed unnecessary plugins from source tree
* add missing files
* Fix postbuild event
* Added x64 for all Wox project - Debug mode
* Removed the AnyCPU config - Debug
* Added the build paths for release x64 (removed AnyCPU)
* Set warning level to 4 : Release
* Set warning level 4 : Debug
* set optimize code to false
* Removed notify icon component
* Removed setting UI XAML file and references
* Readded necessary callback functions
* Removed python path and python plugin functions
* Removed UI related to python path and the bindings related to that
* Remove python bindings
* Removed the localized string translations from pythonDirectory and SelectPythonDirectory
* Manually resolving conflicts
* Fix Wox build in project settings
* deleting unused project files
* Undo change internal
* Fix internal variable
* All wox exceptions in debug are getting rethrown, and thus causing the app to crash. This change removes the debug specific code and allows exceptions to be handled the same was as release.
* Ported Indexer plugin to .net core 3
* Added the test project back
* Removed the .net framework indexer folder
* readding the plugin.json file
* Changed the anyCPU config to x64 for windows indexer plugin
* Adding dependency to wox project on the runner. This should make sure the wox.exe can be build and launched by the runner so wox can run as a background process.
* Updating build dependencies. Wox.Launcher wasn't built as part of the F5 Experience, and nor were the plugins
* removing locks from the ResultListBox code behind file. All callbacks are accessed from the Main/UI thread.
* Remove anyCPU config and changed it to x64
* Removed anycpu of test proj
* Adding dependency
* Renaming executable to PowerLauncher. Replaceing icons with placeholder. Deleting Docs folder
* Renaming AppData directory from 'Wox' to 'PowerLauncher'. Also replacing issue link with powertoys github.
* adding support for xaml islands
* Added Neils UI code
* Replace Niels Code references
* Added assets and behaviours
* Add missing reference
* Add main view model binding
* Using proper executable name when closing 'PowerLauncher' process
* changed x:bind to Binding to avoid reference
* Updated bindings for launcher
* Added binding on searchBox
* Adding Directory.Build.targets file to kill the PowerLauncher pprocess on Build or Clean operations of all 'Launcher' projects.
* Fixed exception preventing result display
* Fixed issue with wpf marshalling events to a non UI thread
* Optimised result binding by inserting search result from multiple plugin in parallel
* copy resource files to output folder
* Corrected the output path for the indexer plugin
* windows indexer plugin is working
* Remove console print statement
* Added callback function for mouse click on search result
* Working App execution
* Cherry picked pinyin performance changes from jjw24's master branch
* change nuget package to msft for winrt compat
* Working up/down arrow key
* updating references and removing a few that seem uneeded for how stuff is referenced
* adding two back in
* Removing Squirrel dll. unsure on updating so i kept that logic in
* Updated functionality on suggestion chosen in autosuggestbox
* Added the <useWPF> tag to remove the warning
* Removed an unnecessary <useWindowsForms> tag
* Removed the item group for properties from calculator plugin
* Removed the item group for properties from folder plugin
* Removed the item group for properties from indexer, program and shell plugin
* Removed itemgrp from wox.core and wox.test csprojs
* Removed the unnecessary wox files to clean up codebase
* Renamed Wox.Plugin.Indexer to Microsoft.Plugin.Indexer
* Renamed Wox.Launcher to Microsoft.Launcher
* To avoid DBNull to String typecast exception
* Added query submitted event to handle default action on clicking a list view item
* Merge pull request #42 from microsoft/AddPinyinPerformance
Cherry picked pinyin performance changes from jjw24's master branch
(cherry picked from commit b9e437c6cd)
* Rectyfying title display
* Title display working correctly
* Removed .yml files
* adding checks
* Making wox.csproj build wox assembly instead of powerlauncher
* Removing update logic from PowerLuanch App.xaml.cs as was done in Wox project.
* Making Query internals visible to wox.
* Update Powerlauncher nuget packages to be same version as wox.csproj. Note: FoxyWeavers.xsd change is automatically done as part of nuget package update.
* Updating build dependencies to so that wox.launcher depends on powerlauncher.csproj not wox.csproj
* Removing 'Wox' branded logos from powerlauncher.csproj as was done previously or wox.csproj
* Downgraded the library to the latest stable version
* single thread execution of the indexer plugin and InvalidOperationException due to connection being closed on ExecuteReader, handled separately
* Modified the test, the connection need not be null after being disposed. There is no direct way of checking if an object has been disposed other than to throw the InvalidOperationException
* Removing x86,ARM,ARM64, build configurations, as these were added accidentally when adding xaml island support.
* Removed STAThread
* Modified the output folder produced
* Renamed the dll produced
* Added dependency on PowerLauncher to the Microsoft.Launcher project
* modified the name of the dll in the indexer plugin
* Ignoring 128 errors from taskkill, as this means the process isn't running. We don't want htis to show up in the warnings list on build
* Added fix for closing wox on pressing escape and app execution (#75)
* adding useWPF to get rid of warning
* Launcher resize issue on selecting search result (#77)
* Added fix for closing wox on pressing escape and app execution
* Added fix to prevent autosuggestbox resize
* Fixing xaml catastrophic failure, based on Miguels suggestion here: https://github.com/windows-toolkit/Microsoft.Toolkit.Win32/issues/210
* suggested fix
* removing unused mutex string
* Searches for keyword only in title and not content to improve the quality of results
* Display the title from System.Title directly instead of extracting it from the path
* Removed additional README instructions before moving to the powerToys repo
* Fix Query builder test (#86)
* Revert base viewModel class to fix tests.
* Removing unused post build and deploy scripts.
* tweaked url
* Update plugin.json
* Update README.md
* removed unused dep (#2080)
* removed reference to everything (#2133)
* SearchIndexer - Modifying QueryContentProperties and QuerySelectColumns to use System.FileName
* Search result thumbnail for PowerLauncher (#2124)
* Replace WPF Imaging library with UWP
* Removed UWP and WPF namespace conflicting files from Wox
* Removed Image hashing as it wasn't used anywhere
* Updated formatting
* Set MainViewModel visibility to hidden on startup
* Enable CI build on PowerLauncher Branch (#2181)
* Enable CI build on PowerLauncher Branch
* Updated Nuget restore to latest and added AssetTargetFallback property
* tweak text (#2177)
* [Window Walker] Migrate to Launcher (#2093)
* Copy the existing calc. plugin foldeR
* Blindly rename a bunch of things to Window Walker
* Update the solution to reference the new plugin
* Get basic Yo returned
* Remove all the languages except english
* Lower quality of icon as well as test showing it
* Add the core non-ui parts to the plugin
* Delete calculator png
* Get it to compile
* Added the actual code which apparently doesn't work
* Finally start showing results
* Fix up strings
* Switch working
* Remove unused classes
* Remove unneeded async
* Added MSI support for Launcher (#2242)
* Fixed typo in output folder of calculator plugin
* Calculator plugin works
* Modified the name of the image to remove space as space is assumed to be a separator in wcx file
* Fixed typo in calculator dll
* Fixed typo in calculator plugin
* Shell, Program, Folde and indexer plugin working
* Added the ww plugin
* Fixed typos in the calculator plugin
* Delete file that was added unintentionally
* revert calculator rename changes
* Reverted other files changed
* Reverted renaming of file with space
* Pull changes from master to dev/powerLauncher (#2255)
* Dpi unaware placement bug (#2121)
Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap
* Move markdown parsing logic outside control thread (#2099)
* Move markdown parsing logic outside control thread
* Update MarkdownPreviewHandlerControl.cs
* Remove trailing whitespace.
That'll teach me for trying to make an edit from the GitHub page.
* Migrate power rename MRU lists from registry to JSON (#2090)
* Handle most recently used search/replace strings within settings.
* Check for last modified time of json file and reload it if needed.
* Handle changes in MRU search / replace lists size.
* Improve handling of changes in MRU list size.
* Don't check for last modified time in every getter method. Load only when starting application.
* Add const identifier to getter methods.
* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.
* Add error checking when getting values from registry.
* Implementing changes suggested in #1992 (#2116)
* Implementing changes suggested in #1992
* Update Product.wxs
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
* Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)
* Fix for issue #1532
[PowerToys] Show version on tooltip
* Update src/runner/tray_icon.cpp
Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
* FZ editor: Splitted zones positioning (#2158)
* Added a mutex to ZoneWindow, ensured no data races occur (#2154)
* Added a mutex to ZoneWindow, ensured no data races occur
* Protected draggedWindow* members with a mutex
* Ensured that critical reads happen in a single transaction
* Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)
* Dpi unaware placement bug - multimontior with same DPI settings fix
* Using different enumerating method
* Changed AllMonitorHaveSameDpiScaling method
* Removed accidental file
* small rename
* Changed some methods to CamelCase
* Review comments fixes
Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
* Somil55/merge custom ui into launcher (#2271)
* Remove Autosuggest box (#2192)
* Update Settings.Designer.cs
* Revert "Update Settings.Designer.cs"
This reverts commit a1bc0dda56.
* Updated LauncherControl XAML to add textbox and listview
* List View displayed
* Hooking up execution on the selected index, removing two way binding on selection, and experimenting with popup that doesn't work
* Updated MainViewModel to Remove context menu and history
* Added Resultist XAML Island project
* Updated SelectedItem and SelectedList Binding.
Issues : List box doesn't open when query is written for first time but opens in subsequent queries.
* 1. Mouse Click working
2. List View is can't be focused
3. Fixed width of Launcher
* Removed two way QueryText box binding
* Removed SelectedItem two way binding and replaced with a callback
* [Cleaning] Remove redundant UWP project
* [Cleaning] Updated files to keep only atomic changes against dev/powerLauncher
* Thmbnail fixed for NEW UI
* Removed PreviewMouseDown function required by older WOX code
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
* Added the auto-complete feature
* Removing ContextMenuPluginInfo, and ContextMenuTopMost as these commands are not used int the new design.
* Fixed merge conflicts
* Set only when index is 0
* One way binding
* Removed unnecessary binding
* Deleting unused (commented out code) that was legacy from wox project.
* Binding Buttons to appropriate context menu commands.
1. Buttons are dynamically loaded in a listview based on the actions supported be each plugin.
This change also deletes unused commands.
Note: Most button events don't seem to be getting routed to the Selected Item. Currently using 'PointerEntered' to validate the behavior. The actions should be trigged by the button command property in the future.
* manually handling tab in mainwindow
* Loading context buttons on Selecting a suggestion list item
* Allowing hover event to load content menu items and display them as well.
* Adding context buttons to Indexer plugin. This allows for the following:
1. [Files] Open Containing folder
2. [Folders/Files] Copy Path
* Remove White background of list (#2218)
* Remove white background of list
* Removed comments
* Changed to ContainerContentChanging event
* add const variables instead of numbers
* Added comment before the updatelistSize function
* Search box UI (#2224)
* Added backdrop and rounded corner
* Fix for two alt+space press to bring searchbox issue
* Fixed merge conflict
* Clean Mainwindow.xaml code
* Fix for textbox focus on first visible
* Allowing users to tab between the context buttons for the selected resut. Also allowing users to press 'enter' to action on the selected items.
* Renaming SelectedIndex to ContextMenuSelectedIndex
* Enabling key accelerators on context buttons.
1. Add new object ContextMenuResult instead instead of reusing Result for both query results and context menu results.
2. Binding KeyboardAccelerator keys to contextmenuitemviewmodel
3. Enabling and disabling contextmenu items when selecting or deselecting each row. Because we are manually maintaining selectionwe can't use ScopeOwners as the textbox is really the only item ever in focus.
* Launching explorer instead of the UWP application when selecting 'open file location'.
* Added fix for border showing up when result count is zero
* Updated fix for border on no result
* Adding visibility after clearing result in MainViewmodel
* Launcher Light/Dark mode (#2235)
* Fixed issue with list view background not updating with Windows theme change
* Added theme change for WPF
* updated ShadowDepth for dropshadow
* Updated border thicknes of searchbox and listview
* Diff issue with ResultList.xaml
* Removed change in result delay
* Added code to pull colors from UWP
* Updated border resource to use system based SystemControlHighlightAccentBrush
* Updated corner radius in dark mode
* Updated Launcher description text
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Alekhya Reddy <reddykalekhya@gmail.com>
* Changed to SystemChromeLow from Accent brush (#2272)
* Removed ListView animations
* Positioning ContextButtons and adding background.
* Disabling scrollbars for gridview items.
* Removed folder plugin
* removed deployment for uwp apps (#2298)
* Simulating Win+backspace key press, instead of Win+Control as it was launching WW (#2250)
* text is selected whenever launcher gets hidden and is then set to visible (#2315)
* Update nuget packages across solution to latest (#2334)
* simplifying the xaml and making things tighter (#2327)
* Setting runcommand as the default execution method, and turning off run as admin by default.
* Opening explorer if the user has types a file path.
* Enable PowerLauncher toggle
* Launcher MSI - Added a required dll and removed folder plugin (#2355)
* Modified the product.wxs file
* Added the x64 config
* Modify scoring algorithm for fuzzy search (#2361)
* Modify scoring
* modified to if else
* Fixes race conditions with PointerEnter/Exit events conflicting with Selection and unselection. This change provides better encapsulation of the logic to enable a selected item for accelerator (hotkey) events, and allow mouse input on results where the pointer is over.
* Fixes an issue where PointerExit would hide the selected context buttons.
* Result List - Bad rebase overwrote margin and translation fields.
* Fixed process executing on clicking enter if no text in search box
* Codeflow cleanup when selectedItem is not null
* adjusting how programs are displayed. (#2369)
* Removing description from title
* adjusting subtitle
* removing accidently paste
* removing desc for uwp apps
* Revert "Removed folder plugin"
This reverts commit 064d638588.
We will use the folder plugin to better mimic the way the start menu and run prompt deal with directories
* Updating JetBrains.Annotations to 2020.1.0 to be consistent with other projects.
* Replacing submenu text with full path as 'Ctrl-Enter' doesn't do anything. Also reducing the String of CreateOpenCurrentResult to fit in one line.
* - Making Open Directory subtitle fixed, and the title as the current directory.
* Adding back binding to QueryText and updating the cursor position similar to how wox originally did it.
* Add the folder plugin wxs back in (#2374)
* Deduping results for program plugin (#2375)
* Removing description from title
* adjusting subtitle
* removing accidently paste
* removing desc for uwp apps
* Getting dups removed from list if LNK exists
* adjusting subtitle
* removing accidently paste
* Getting dups removed from list if LNK exists
* changed to normal forloop
* Removing WinR (#2381)
* Updated program execution to call action on background thread. (#2370)
* PowerLauncher Settings integration
* Added cold start fix (#2385)
* - Fixes cursor jumping around issue.
- Seperating the ability to set the text from initiating a query.
- Plugins have to explicitly request the query be updated.
- Updating Folder plugin to explicty update the query on folder selection.
- Removing unused changes from 'Wox' that don't compile.
* Fixing gap in logic where query was triggering when programatically setting text.
Updating the binding and settext both will trigger the TextChanged event on a seperate event dispatcher. For this reason we dynamically detect which eventhandler is most approapriate on the textchanging event.
* Updating the QueryText to the selected item when navigating up/down with the arrow keys.
* Removing action on folder result, and displaying folder path on selecting a folder result from the folder plugin.
* Making folder results from the search indexer plugin behave like folder results from folder plugin.
* Folder Results open the explorer window when selected.
* The Open Current Folder result shouldn't change the query text to 'Open {folder path}' when selecting the results.
* Initializing query text strings.
* Defensive check for QueryText being empty
* Adding file watchers for UWP detecting when apps are installed or deleted and reindexing the uwp apps
* Removing unused namespace.
* Looking at files and not filtering is better because the timer is more likely to reset while an install is happening, preventing uneeded indexing
* Fix project references
* Fix MaxResultsToShow
* Fix Alt + Space display
* Fix settings defaults
Co-authored-by: Alekhya Reddy Kommuru <reddykalekhya@gmail.com>
Co-authored-by: bkudiess <bakudies@microsoft.com>
Co-authored-by: Divyansh <somm14divi@gmail.com>
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Barbara Kudiess <bkudiess@me.com>
Co-authored-by: Jeremy Wu <jeremy24wu@gmail.com>
Co-authored-by: Clint Rutkas <clint@rutkas.com>
Co-authored-by: udit3333 <udit3333@gmail.com>
Co-authored-by: Betsegaw (Beta) Tadele <betsegaw.ta@gmail.com>
Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
* Fixed right margin
* Fixed issue where the background of the gridview would light up on pointerover.
* Fixed issue where application title/path run through command buttons. Centrally aligned image/icon.
* Updated the shadow so it looks more like a UWP ThemeShadow.
* Handled invalid input for single key remaps
* Added some functions
* Added better error message functions and finished warnings for edit keyboard
* Updated dropdown order of keys
* Added new warning template for shortcuts
* Added show warning on Apply code
* Removed old flyout code
* Fixed issue where tooltips were replaced on Apply
* Simplified == operator
Updating the binding and settext both will trigger the TextChanged event on a seperate event dispatcher. For this reason we dynamically detect which eventhandler is most approapriate on the textchanging event.
- Seperating the ability to set the text from initiating a query.
- Plugins have to explicitly request the query be updated.
- Updating Folder plugin to explicty update the query on folder selection.
- Removing unused changes from 'Wox' that don't compile.
* Removing description from title
* adjusting subtitle
* removing accidently paste
* removing desc for uwp apps
* Getting dups removed from list if LNK exists
* adjusting subtitle
* removing accidently paste
* Getting dups removed from list if LNK exists
* changed to normal forloop
* Deprecate ATL based IPC wrapper library
* C# projects now use named pipe server implementations from two_way_pipe_message
through the interop C++/Cli library.
* Added Unit testing to interop library
* Added grid to edit keyboard
* Fixed all issues for Edit keyboard window with grid
* Added step to delete row definition and move row indices
* Handled grid operations for Edit Shortcuts
* Added dynamic layout for edit shortcuts
* Fixed resize windows message behaviour and removed warnings
* Added missing c++17 compile flag to common-md-flag
* Remove .NET native tool chain from Settings.UI release config
* This flag has to be removed because .Net Native does not support
mixed assemblies, like PowerToysInterop.
* Fix HotkeyControl virtual key display
* A new interop project was setup to provide wrappers for C# projects
that want to access functionality in the common project.
* Add assembly info
* Remove WIN32 configurations
* Remove Autosuggest box (#2192)
* Update Settings.Designer.cs
* Revert "Update Settings.Designer.cs"
This reverts commit a1bc0dda56.
* Updated LauncherControl XAML to add textbox and listview
* List View displayed
* Hooking up execution on the selected index, removing two way binding on selection, and experimenting with popup that doesn't work
* Updated MainViewModel to Remove context menu and history
* Added Resultist XAML Island project
* Updated SelectedItem and SelectedList Binding.
Issues : List box doesn't open when query is written for first time but opens in subsequent queries.
* 1. Mouse Click working
2. List View is can't be focused
3. Fixed width of Launcher
* Removed two way QueryText box binding
* Removed SelectedItem two way binding and replaced with a callback
* [Cleaning] Remove redundant UWP project
* [Cleaning] Updated files to keep only atomic changes against dev/powerLauncher
* Thmbnail fixed for NEW UI
* Removed PreviewMouseDown function required by older WOX code
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
* Added the auto-complete feature
* Removing ContextMenuPluginInfo, and ContextMenuTopMost as these commands are not used int the new design.
* Fixed merge conflicts
* Set only when index is 0
* One way binding
* Removed unnecessary binding
* Deleting unused (commented out code) that was legacy from wox project.
* Binding Buttons to appropriate context menu commands.
1. Buttons are dynamically loaded in a listview based on the actions supported be each plugin.
This change also deletes unused commands.
Note: Most button events don't seem to be getting routed to the Selected Item. Currently using 'PointerEntered' to validate the behavior. The actions should be trigged by the button command property in the future.
* manually handling tab in mainwindow
* Loading context buttons on Selecting a suggestion list item
* Allowing hover event to load content menu items and display them as well.
* Adding context buttons to Indexer plugin. This allows for the following:
1. [Files] Open Containing folder
2. [Folders/Files] Copy Path
* Remove White background of list (#2218)
* Remove white background of list
* Removed comments
* Changed to ContainerContentChanging event
* add const variables instead of numbers
* Added comment before the updatelistSize function
* Search box UI (#2224)
* Added backdrop and rounded corner
* Fix for two alt+space press to bring searchbox issue
* Fixed merge conflict
* Clean Mainwindow.xaml code
* Fix for textbox focus on first visible
* Allowing users to tab between the context buttons for the selected resut. Also allowing users to press 'enter' to action on the selected items.
* Renaming SelectedIndex to ContextMenuSelectedIndex
* Enabling key accelerators on context buttons.
1. Add new object ContextMenuResult instead instead of reusing Result for both query results and context menu results.
2. Binding KeyboardAccelerator keys to contextmenuitemviewmodel
3. Enabling and disabling contextmenu items when selecting or deselecting each row. Because we are manually maintaining selectionwe can't use ScopeOwners as the textbox is really the only item ever in focus.
* Launching explorer instead of the UWP application when selecting 'open file location'.
* Added fix for border showing up when result count is zero
* Updated fix for border on no result
* Adding visibility after clearing result in MainViewmodel
* Launcher Light/Dark mode (#2235)
* Fixed issue with list view background not updating with Windows theme change
* Added theme change for WPF
* updated ShadowDepth for dropshadow
* Updated border thicknes of searchbox and listview
* Diff issue with ResultList.xaml
* Removed change in result delay
* Added code to pull colors from UWP
* Updated border resource to use system based SystemControlHighlightAccentBrush
* Updated corner radius in dark mode
* Updated Launcher description text
Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
Co-authored-by: Alekhya Reddy <reddykalekhya@gmail.com>
* Dpi unaware placement bug (#2121)
Fix for bug when placing dpi unaware window such as Notepad++ in left of right part of monitor. In that application gap of about 7px was left or right.
This fixes only single-monitor scenario
It skips correction for dpi unaware window that leaves a gap
* Move markdown parsing logic outside control thread (#2099)
* Move markdown parsing logic outside control thread
* Update MarkdownPreviewHandlerControl.cs
* Remove trailing whitespace.
That'll teach me for trying to make an edit from the GitHub page.
* Migrate power rename MRU lists from registry to JSON (#2090)
* Handle most recently used search/replace strings within settings.
* Check for last modified time of json file and reload it if needed.
* Handle changes in MRU search / replace lists size.
* Improve handling of changes in MRU list size.
* Don't check for last modified time in every getter method. Load only when starting application.
* Add const identifier to getter methods.
* Address PR comments: Add const to reg and json file paths and set them in constructor initializer. Check pushIdx validity. Move implementation to cpp of PowerRenameUI constructor.
* Add error checking when getting values from registry.
* Implementing changes suggested in #1992 (#2116)
* Implementing changes suggested in #1992
* Update Product.wxs
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
* Fix for issue #1532 - [PowerToys tray icon] Show version on tooltip (#2117)
* Fix for issue #1532
[PowerToys] Show version on tooltip
* Update src/runner/tray_icon.cpp
Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
* FZ editor: Splitted zones positioning (#2158)
* Added a mutex to ZoneWindow, ensured no data races occur (#2154)
* Added a mutex to ZoneWindow, ensured no data races occur
* Protected draggedWindow* members with a mutex
* Ensured that critical reads happen in a single transaction
* Dpi unaware placement bug - multimontior with same DPI settings fix (#2156)
* Dpi unaware placement bug - multimontior with same DPI settings fix
* Using different enumerating method
* Changed AllMonitorHaveSameDpiScaling method
* Removed accidental file
* small rename
* Changed some methods to CamelCase
* Review comments fixes
Co-authored-by: PrzemyslawTusinski <61138537+PrzemyslawTusinski@users.noreply.github.com>
Co-authored-by: Ben Randall <veleek@gmail.com>
Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com>
Co-authored-by: eduardodextil <55205162+eduardodextil@users.noreply.github.com>
Co-authored-by: Ebenezer Ewumi <ebenezer.ewumi@wsu.edu>
Co-authored-by: Nghia M. Luong <32159519+sqrlmn@users.noreply.github.com>
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
Co-authored-by: Seraphima Zykova <zykovas91@gmail.com>
Co-authored-by: Ivan Stošić <ivan100sic@gmail.com>
* Fixed typo in output folder of calculator plugin
* Calculator plugin works
* Modified the name of the image to remove space as space is assumed to be a separator in wcx file
* Fixed typo in calculator dll
* Fixed typo in calculator plugin
* Shell, Program, Folde and indexer plugin working
* Added the ww plugin
* Fixed typos in the calculator plugin
* Delete file that was added unintentionally
* revert calculator rename changes
* Reverted other files changed
* Reverted renaming of file with space
* Added combobox
* Formatted and removed unused code
* Added drop down support for Edit Keyboard window
* Reordered the displayed key list
* Add shortcut stack panels and drop downs linked to detect shortcut
* Add more selected item logic
* Added complete dropdown support for edit shortcuts window
* Added Flyout warning for incorrect drop down input
* Tweaked warnings
* Removed MainWindow code
* Changed SelectedValue toSelectedIndex
* Removed unnecessary assignments
* Added a warning for two dropdowns and the first one is changed to an action key
* Added function comments in cpp file
* Fixed some comments
* Fixed all allocation and out of scope issues
* Fix most issues except reloading shortcuts
* Fixed issue while reloading shortcuts
* Fixed type cast warnings
* Changed delete to delete[]
* tweaked
* Copy the existing calc. plugin foldeR
* Blindly rename a bunch of things to Window Walker
* Update the solution to reference the new plugin
* Get basic Yo returned
* Remove all the languages except english
* Lower quality of icon as well as test showing it
* Add the core non-ui parts to the plugin
* Delete calculator png
* Get it to compile
* Added the actual code which apparently doesn't work
* Finally start showing results
* Fix up strings
* Switch working
* Remove unused classes
* Remove unneeded async
* Added Tests and Refactored code
* removed un-used file
* delete test files when test completes
* removed extra build configs
* added clean-up method
* removed unused variable
* re-added removed attributtion
* added error handling and move strings to string resource
* added error handling to file explorer view model
* moved varible assignment to if statement block
* removed savin of settings file from the UI
* re-added open source notice
* added missing controls for powerrename and fancy zones
* removed dead coded
* remove un-used configuration
* added error handling for file saving and updated powerreanme constructor
* removed added configurations
* added settings state
* Replace WPF Imaging library with UWP
* Removed UWP and WPF namespace conflicting files from Wox
* Removed Image hashing as it wasn't used anywhere
* Updated formatting
* Added CustomAction Data Models
* Updated data model
* Updated Button command trigger for keyboard manager
* Integerated custom actions in Keyboard manager module backend
* Allow Runner to launch windows on foreground
* Refactor and moved the execution logic to background thread
* Removed non-required unlock calls
* Fixed typo
* Resolve PR comments
* updating a ton of warnings.
* bunch of cleanup
* few smaller ones
* fixed naming
* reversing an oops
* adjusting json to use attribute
* more json properties
* Added unique lock mutexes for thread safety
* Fixed a bug in detect key logic
* Changed dword to word
* Added early unlock statements to fix issue with shortcut guide
* Fixed type conversion warnings
* Migrated detect shortcut window to use Shortcut class
* made changes in Apply button logic
* Revert thread safety changes
* refactored code works on the UI side
* Refactored remapping code to use new Shortcut class
* Refactored to SetKeyEvent function
* Moved function to cpp file and added more comments
* Refactored map variable and handled common Win key
* Remove debug code
* Change arguments to const references
* Added unique lock mutexes for thread safety
* Fixed a bug in detect key logic
* Added early unlock statements to fix issue with shortcut guide
* Added comments for unlocks before SendInput and changed some unique_locks to lock_guards
* Added check keyboard state function
* Added keyboard state check to avoid n-key shortcuts being affected by 2 key shortcuts
* Added support for n key shortcuts in backend and UI
* Added a fix to ensure mouse buttons states are not checked
* reverted some debugging changes
* reverted some debugging changes
* Added EditShortcuts Window and added Detecting shortcuts functionality
* Fixed build error
* Changed detection to take place only when window is in focus
* Added solution folder
* Added a common project and refactored shared variables to an object with wrapper functions
* Added dynamic addition of shortcuts
* Moved all shared variables in detection to state variable with wrapper functions
* Added code to re-load saved shortcuts in the UI
* Added comments
* Fixed argument modifiers in Helpers
* Updated arg modifiers in all functions
* Removed unused headers and added precompiled headers
* Created PowerKeys project
* Swapping tab with shift
* Added hash map and iterators for remapping code
* Added PowerKeys flag and added toggletomod function
* Added shortcut base code
* Fixed os level shortcut functionality
* Added 1 extra event
* Added check for same modifier and comments
* Added app-specific remapping for 4 apps including UWP apps
* Changed foreground window logic
* Added a separate hook for PowerKeys which can be re-hooked by enabling and disabling
* Added a separate hook for PowerKeys which can be re-hooked by enabling and disabling
* Fixed all priority issues and changed injection flags
* Added another msedge.exe shortcut
* Added a UI which is linked to the backend hook
* Cleaned code and added comments
* Added second button
* Renamed some files/variables and added an extra button
* added power preview settings
* Added link to module oververview
* create settings file if one is not found
* removed run oon start up speficic callback
* Update src/core/Microsoft.PowerToys.Settings.UI.Lib/ModuleSettings.cs
Co-Authored-By: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
* fixed merge conflicts
Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com>
* archive
* formmated code
* reverted changes to test class file.
* reverted changes to test file: reverted name
* added class models and updated link
* removed test console project
* Add handling of portable mode when updating
Additionally:
1. Changed getting version from internally rather than from RELEASES file
2. Added PortableDataPath as a constant so can be used to determine if portable mode is used
* Fix incorrectly wired auto update event handler
* Fix Sys plugin missing Shutdown command icon
* Add check update command to Sys plugin
* Add message if current Wox version is latest
* Add default silent when auto checking updates in background
Silent when current is still the latest version
* Move UserData folder to new version location
* Changes per review
1. Move IsPortableMode to Constant
2. Merge if statement
* Per comment- change variables to be more descriptive
UpdateInfo and UpdateManager renamed
* Per comment- Add exception handling and message if failed.
* fix typo
* make function obsolete
it is not used in the code
* rewrite the function that converts chinese chars to pinyin
1. Only difference in this rewrite is instead of returning 2D array, return as a combined single string of all the possible pinyin combination. Since fuzzy search does character matching, this shouldn't be a problem.
2. Added a function that returns a custom language converter. In this case Pinyin converter. New converters can be added.
* Use new language converter param + strip out ScoreForPinyin method
* update
* Change parameter name
* fix failing tests
* WIP
* Remove todo
There should be some distinction between score after precision filter and actual raw score derived from FuzzySearch. Although so far RawScore is used in testing, but it seems to describe the structure. Originally it was to avoid assigning score directly as it would be hard to reason about that output of FuzzySearch score is.
* Add constructors, remove default to enforce required properties
* remove setting rawscore in SearchPrecision
* Change method name to reflect intention
* Change parameter name + update comment
* update
* Remove params comment
Co-authored-by: theClueless <14300910+theClueless@users.noreply.github.com>
- Moved if statement that checks if all query substrings are matched into a funciton
- convert into shorthand expression the if statement that checks if all words are fully matched
- Move checking if there is a prev compare string char match into function
- Move updating of index list when a better match is found for the first substring logic into function
Flag is used in method "ShouldUsePinyin()" to avoid calling Alphabet
service. Otherwise, tests applying to StringMatcher.FuzzySearch() would
fail because the pinyin helper library fails to initialize.
The MatchResult will always get the maximum score from either
ScoreForPinyin() or CalculateSearchScore(). ScoreForPinyin() is
completely dependant on the "ShouldUsePinyin" global setting.
The search precision must be used, so it makes sense to apply the filter
directly on score assignment. Score will be "0" if precision filter
was not met.
As Alphabet class is static, its methods could be used without
ever calling Alphabet.initialize(_settings) beforehand which would end
in an exception. Therefor only _shouldUsePinyin settings needed will
be transferred with a given default value.
SelectedSearchSource will be null if the user clicks on Edit or Delete after finishing with previous edit and not highlighting the search source again.
* Added thumbnail loader
* Deleted old shell icon extraction logic.
Refactored ImageLoader.Load to improve readibility.
* Moved error handling down into the API call itself
* Minor renamings in ImageLoader
* Load icons only for files that are not images. Fixes stutters when loading folders.
* Added the ability to load a full image through ImageLoader.
ImageLoader.Load now also has a "loadFullImage" parameter.
* Max image cache is now 5000 instead of 200.
* Added some commentaries on how thumbnails are loaded
* ProgramPaths now searches for files on a per-folder basis using a Queue instead of calling EnumerateFiles. This allows us to escape permission errors.
Issue #1779 is fixed because of this too.
Tries to convert numbers in query string to invariant culture format before passing to YAMP, and the other way around when presenting result from
YAMP. Nothing fancy, just a regular expression scanning for substrings consisting of number, decimal separator and group separator, trying a
parse and convert on them. Translation is skipped if no conversion between user locale and invariant culture number format is necessary.
Closes#436.
Added functions I commonly use on e.g. google calculator but were missed by parser.
Specifically I added:
e (constant like pi)
tan, arcsin, and arctan
log and ln
1. remove unnecessary events from MainViewModel
2. remove usage of Obsolete api (show, hide etc)
3. fix space problem in #660
4. part of #486
5. fix up/down key bug introduced in 92b7ca6a1bafd254e39ee92812ff691906cd85c1
6. fix#678
1. installer
2. auto check update on startup
3. auto start on next startup
4. remove command line arguments which breaks squirrel
5. auto generate installer on continue integration
1. Fix can't find Result.ctor bug for plugin introduced in
c0889de1f9ae460b2cc189eb59e5bd90ddb7d17e
2. use %APPDATA% for all data, part of #389
3. MISC
1. Remove ItemDropEvent
2. Remove ShowContextMenus from API
3. Fix context menu item can't be opened ( #535 ), bug introduced from PR #494 (commit 45dbb50)
4. Move open result command and load context menu command back to
MainViewModel
5. unify load context menu logic
6. other performance enhancement and potential bug fixed
1. Fix "Remember launch location", this was introduced since e7aa6022.
Fix#511
2. Fix opening position ( #510 ), bug introduced from PR #494 (commit e7aa602)
1. Reorder the sequence of initialization of UserSettings.
2. Use dictionary for CustomizedPluginConfigs, so code logic like
`.FirstOrDefault(o => o.ID == id);` are removed
3. part of #389
1. Remove ItemDropEvent
2. Remove ShowContextMenus from API
3. Fix context menu item can't be opened ( #535 ), bug introduced from PR #494 (commit 45dbb50)
4. Move open result command and load context menu command back to
MainViewModel
5. unify load context menu logic
6. other performance enhancement and potential bug fixed
1. Fix "Remember launch location", this was introduced since e7aa6022.
Fix#511
2. Fix opening position ( #510 ), bug introduced from PR #494 (commit e7aa602)
1. Reorder the sequence of initialization of UserSettings.
2. Use dictionary for CustomizedPluginConfigs, so code logic like
`.FirstOrDefault(o => o.ID == id);` are removed
3. part of #389
- Add MVVM structure(BaseViewModel)
- Create ViewModel for MainWindow
- Refactor MainWindow.xaml to support MVVM
- Move PublicAPI implementation from MainViewModel to PublicAPIInstance
- Exposed a new function "SetBlurForWindow" in WindowIntelopHelper that handles the blur.
- Deleted Accent and Test themes
- Changed SimpleBlur and Base themes according to changes
WindowIntelopHelper: Added accent handling
SettingsWindow: Added combobox with accent selector to Theme tab (not functional yet)
Languages: Added entries for accent colors (all are in english for now)
[TEMP] Blur and Accent themes experiments
[TEMP] blur set in mainwindow on load.
The last commit f132cb54baa000a245feb5da87149960f6dbd9f5 only fix UI
flickering for different icon. This commit also fix the commit for same
icon. e.g. in web search plugin, although the title is different, but
the icon is not changes.
part of #350
2,In FolderPluginSettings when trigger Delete Action need confirm;
3,Add drag and drop functionality in ProgramSetting and FileSystemSettings.
Signed-off-by: 716 <525223688@qq.com>
Stupid automatic formatting changed more then I wanted
Here is the change I made if you just want the code
case Key.Tab:
case Key.Enter:
AcceptSelect(resultCtrl.GetActiveResult());
e.Handled = true;
break;
This reverts commit cf7ae900.
Short name will produce no errors when debugging using Visual Studio hosting process. However, this will crash outside Visual Studio.
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
<!-- Other than the issue solved, is this relevant to any other issues/existing PRs? -->
## References
_What is this about?_
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
* [] Applies to #xxx
* [] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/PowerToys) and sign the CLA
* [] Tests added/passed
* [] Requires documentation to be updated
* [] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx
*[ ] Applies to #xxx
*[ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/PowerToys) and sign the CLA
*[ ] Tests added/passed
*[ ] Requires documentation to be updated
*[ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx
<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments
## Info on Pull Request
_What does this include?_
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
rem This script will fail to run unless you have the appropriate permissions
cd /D "%~dp0"
echo Preparing localization build...
setlocal
rem In this sample, the repo root is identical to the script directory path. Adjust the value of the RepoRoot variable accordingly based on your environment.
rem Again, ensure the RepoRoot variable is set to the real repo root location, otherwise the localization toolset wouldn't work as intended.
sign_inline:true# This does signing a soon as this command completes
# Localize the files after the build procedure to avoid existing localized files from getting overwritten. To be moved before the Build PowerToys step once the lcl files have been checked in. Tracked at https://github.com/microsoft/PowerToys/issues/6046
rem In this sample, the repo root is identical to the script directory path. Adjust the value of the RepoRoot variable accordingly based on your environment.
rem Again, ensure the RepoRoot variable is set to the real repo root location, otherwise the localization toolset wouldn't work as intended.
Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. Inspired by the [Windows 95 era PowerToys project](https://en.wikipedia.org/wiki/Microsoft_PowerToys), this reboot provides power users with ways to squeeze more efficiency out of the Windows 10 shell and customize it for individual workflows. A great overview of the Windows 95 PowerToys can be found [here](https://socket3.wordpress.com/2016/10/22/using-windows-95-powertoys/).
## Installing and running Microsoft PowerToys 0.16
👉 **Note:** Microsoft PowerToys requires Windows 10 1803 (build 17134) or later.
| Branch | Status x64 |
|---|---|
| Master | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=master) |
| Stable | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=stable) |
| Installer | [](https://github-private.visualstudio.com/microsoft/_build/latest?definitionId=61&branchName=master) |
### Via Github with MSI [Recommended]
## Current PowerToy Utilities
Install from the [Microsoft PowerToys GitHub releases page][github-release-link]. Click on `Assets` to show the files available in the release and then click on `PowerToysSetup-0.16.1-x64.msi` to download the PowerToys installer.
### Color Picker
[<img align="left" src="https://aka.ms/powerToysColorPickerImageSmall" />](https://aka.ms/PowerToysOverview_ColorPicker) [ColorPicker](https://aka.ms/PowerToysOverview_ColorPicker) is a simple and quick system-wide color picker with <kbd>Win</kbd>+<kbd>Shift</kbd>+<kbd>C</kbd>. Color Picker allows to pick colors from any currently running application and automatically copies the HEX or RGB values to your clipboard. This code is based on [Martin Chrzan's Color Picker](https://github.com/martinchrzan/ColorPicker).
<br/>
<br/>
<br/>
### FancyZones
[<img align="left" src="https://aka.ms/powerToysFancyZoneImageSmall" />](https://aka.ms/PowerToysOverview_FancyZones) [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) is a window manager that makes it easy to create complex window layouts and quickly position windows into those layouts.
<br/>
<br/>
<br/>
<br/>
<br/>
### File Explorer Add-ons
[<img align="left" src="https://aka.ms/powerToysPowerPreviewImageSmall" />](https://aka.ms/PowerToysOverview_FileExplorerAddOns) [File Explorer](https://aka.ms/PowerToysOverview_FileExplorerAddOns) add-ons will enable SVG icon rendering and Preview Pane additions for File Explorer.
Preview Pane is an existing feature in the File Explorer. To enable it, you just click the View tab in the ribbon and then click "Preview Pane". PowerToys will now enable two types of files to be previewed: Markdown (.md) & SVG (.svg)
<br/>
<br/>
### Image Resizer
[<img align="left" src="https://aka.ms/powerToysImageResizerImageSmall" />](https://aka.ms/PowerToysOverview_ImageResizer) [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) is a Windows Shell Extension for quickly resizing images. With a simple right click from File Explorer, resize one or many images instantly. This code is based on [Brice Lambson's Image Resizer](https://github.com/bricelam/ImageResizer).
<br/>
<br/>
<br/>
<br/>
### Keyboard Manager
[<img align="left" src="https://aka.ms/powerToysKBMImageSmall" />](https://aka.ms/PowerToysOverview_KeyboardManager) [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) allows you to customize the keyboard to be more productive by remapping keys and creating your own keyboard shortcuts. This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
<br/>
### PowerRename
[<img align="left" src="https://aka.ms/powerToysPowerRenameImageSmall" />](https://aka.ms/PowerToysOverview_PowerRename) [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) is a Windows Shell Extension for advanced bulk renaming using search and replace or regular expressions. PowerRename allows simple search and replace or more advanced regular expression matching. While you type in the search and replace input fields, the preview area will show what the items will be renamed to. PowerRename then calls into the Windows Explorer file operations engine to perform the rename. This has the benefit of allowing the rename operation to be undone after PowerRename exits. This code is based on [Chris Davis's SmartRename](https://github.com/chrdavis/SmartRename).
<br/>
### PowerToys Run
[<img align="left" src="https://aka.ms/powerToysPowerLauncherImageSmall" />](https://aka.ms/PowerToysOverview_PowerToysRun) [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) is a new toy in PowerToys that can help you search and launch your app instantly with a simple <kbd>Alt</kbd>+<kbd>Space</kbd> and start typing! It is open source and modular for additional plugins. Window Walker is now inside too! This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
### Shortcut Guide
[<img align="left" src="https://aka.ms/powerToysShortcutGuideImageSmall" />](https://aka.ms/PowerToysOverview_ShortcutGuide) [Windows key shortcut guide](https://aka.ms/PowerToysOverview_ShortcutGuide) appears when a user holds the Windows key down for more than one second and shows the available shortcuts for the current state of the desktop.
<br/>
<br/>
<br/>
<br/>
### Video Conference Mute (Experimental)
[<img align="left" src="https://aka.ms/powerToysVideoConferenceImageSmall" />](https://aka.ms/PowerToysOverview_VideoConference) [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) is a quick and easy way to do a global "mute" of both your microphone and webcam via <kbd>Win</kbd>+<kbd>N</kbd>. Just set your webcam in the target application to the PowerToys VideoConference camera.
**Note:** This is only included in the [pre-release version of PowerToys installer][github-prerelease-link]. This PowerToy requires Windows 10 1903 (build 18362) or later.
<br/>
<br/>
<br/>
## Installing and running Microsoft PowerToys
#### Requirements
- Windows 10 1803 (build 17134) or later.
- Have [.NET Core 3.1 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-desktop-3.1.4-windows-x64-installer). The installer should handle this but we want to directly make people aware.
#### 0.18 users for updating via notifications
- We adjusted how upgrading works in 0.20. In 0.19 we accounted for this upcoming change but if you are going from 0.18 to 0.21, please directly use the installer file.
### Via GitHub with EXE [Recommended]
Install from the [Microsoft PowerToys GitHub releases page][github-release-link]. Click on `Assets` to show the files available in the release and then click on `PowerToysSetup-0.21.1-x64.exe` to download the PowerToys installer.
This is our preferred method.
### Via WinGet (Preview)
Download PowerToys from [WinGet](https://github.com/microsoft/winget-cli/releases). To install PowerToys, run the following command from the command line / PowerShell:
```powershell
WinGetinstallpowertoys
```
### Other install methods
##### MSIX / Store Build Update
There are [community driven install methods](./doc/unofficalInstallMethods.md) such as Chocolatey and Scoop. If these are your perferred install solutions, this will have the install instructions.
- We put in a lot of effort here but currently our plan of record is to make the MSI our only installer option and built-in auto-upgrade. MSIX is a great installer / container tech but there are few spots we are working with the team to improve so we can adopt.
### Known issues
#### Via Chocolatey - ⚠ Unofficial ⚠
Download and upgrade PowerToys from [Chocolatey](https://chocolatey.org). If you have any issues when installing/upgrading the package please go to the [package page](https://chocolatey.org/packages/powertoys) and follow the [Chocolatey triage process](https://chocolatey.org/docs/package-triage-process)
To install PowerToys, run the following command from the command line / PowerShell:
```powershell
chocoinstallpowertoys
```
To upgrade PowerToys, run the following command from the command line / PowerShell:
```powershell
chocoupgradepowertoys
```
- Color Picker at times won't work when PT is running elevated - [#5348](https://github.com/microsoft/PowerToys/issues/5348). We are currently working on a fix now for this.
### Processor support
@@ -47,80 +124,85 @@ We currently support the matrix below.
[FancyZones](/src/modules/fancyzones/) - FancyZones is a window manager that makes it easy to create complex window layouts and quickly position windows into those layouts.
### Shortcut Guide
[Windows key shortcut guide](/src/modules/shortcut_guide) - The shortcut guide appears when a user holds the Windows key down for more than one second and shows the available shortcuts for the current state of the desktop.
### PowerRename
[PowerRename](/src/modules/powerrename) - PowerRename is a Windows Shell Extension for advanced bulk renaming using search and replace or regular expressions. PowerRename allows simple search and replace or more advanced regular expression matching. While you type in the search and replace input fields, the preview area will show what the items will be renamed to. PowerRename then calls into the Windows Explorer file operations engine to perform the rename. This has the benefit of allowing the rename operation to be undone after PowerRename exits.
This code is based on [Chris Davis's SmartRename](https://github.com/chrdavis/SmartRename).
### File Explorer (Preview Panes)
[File Explorer](/src/modules/previewpane) add-ons right now are just limited to Preview Pane additions for File Explorer. Preview Pane is an existing feature in the File Explorer. To enable it, you just click the View tab in the ribbon and then click "Preview Pane".
PowerToys will now enable two types of files to be previewed:
- Markdown files (.md)
- SVG (.svg)
### Image Resizer
[Image Resizer](/src/modules/imageresizer) is a Windows Shell Extension for quickly resizing images. With a simple right click from File Explorer, resize one or many images instantly.
This code is based on [Brice Lambson's Image Resizer](https://github.com/bricelam/ImageResizer).
### Window Walker (Text based alt-tab alternative)
[Window Walker](src/modules/windowwalker/) is an app that lets you search and switch between windows that you have open, all from the comfort of your keyboard. As you are searching for an app, you can use the keyboard up and down arrows to see an Alt-Tab style preview of the windows. In the future, this will be merged into the Launcher project.
This code is based on [Beta Tadele's Window Walker](https://github.com/betsegaw/windowwalker).
### Version 1.0 plan
Our plan for all the [goals and utilities for v1.0 detailed over here in the wiki][v1].
## What's Happening
### March 2020 Update
### August 2020 Update
Our mantra for the 0.16 was adding in new features along with a continual push for quality and stability. We are working toward getting a way to auto-update PowerToys and have a good plan for this. We want to proactively thank the community for quickly identifying a few bugs inside 0.15 and allowing us to quickly release 0.15.1 and 0.15.2.
Our goals for 0.21 release cycle was to focus on stability, localization and quality of life improvements for both the development team and our end users.
Below are just a few of the bullet items from this release.
One of the longer term goal items we have made progress on is the Out of Box experience / initial onboarding experience (OOBE) improvements.[@Niels9001](https://github.com/niels9001/) created a [wicked awesome proof of concept of what the OOBE experience could be](https://github.com/microsoft/PowerToys/issues/1285#issuecomment-679268558). We are pretty stoked about this since it handles one an important item, critical shortcut default adjustments.
- We shipped [v0.16][github-release-link]!
- FancyZone improvement:
- Multi-Monitor improvement: Zone flipping switching now works between monitors!
- Simplified UX: Removed layout hot-swap and flashing feature due to need to improve multi-monitor support
- New Utilities!
- Markdown Preview pane extension
- SVG Preview pane extension
- Image Resizer Window Shell extension
- Window Walker, an alt-tab alternative
- Fixed over 100 issues!
- Testing improvements
- 54 UX Functional tests
- 161 new Unit tests
#### Highlights from August
For [0.17](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F3), we are proactively working on:
- We shipped [v0.21][github-release-link]!
- [Video conference muting first public release][vidConfOverview]
- Auto-updating
-Win+R replacement (Launcher)
-Keyboard remapping
-Performance improvements with FancyZones
-A testing utility for FancyZones to be sure we can test different window configurations.
**PT Run:**
-Removed need for space in action keywords. This means you now can type `>ipconfig`
-Icon caches fixed and now has colored icons
-Improved font rendering via ClearType (Shout out to [@AnuthaDev](https://github.com/AnuthaDev) doing the heavy lifting here)
-Result speed improvements
- URLs are supported
- Fixed bugs including calculating bugs
Future release work, we are proactively working on:
**FancyZone:**
- <kbd>Win</kbd>+<kbd>Arrow key</kbd> is directional based on zone rect
- Fixed bugs
- Settings v2 / Fix bug #243
**Runner:**
- Fixed toast notifications running elevated from non-admin account
**Shortcut Guide:**
- Improved vkey catching which will fix some use cases of it not showing up
**SVG in File Explorer:**
- Embedded image tags will now render in Explorer
**Color Picker:**
- Fixed bug where it would launch via false positive keystrokes
**Accessibility:**
- Settings, PT Run and KBM undergoing improvements
**Localization:**
- Pipeline is now setup and will be doing a full E2E pass on all utilities shortly.
**Dev quality of life improvements:**
- Continued warning count reduction. This release ~80 removed
- StyleCop enabled E2E
- FxCop starting to be added in E2E
#### New experiential PowerToys utility - Video conference muting:
**Note:** This is only included in the [pre-release version of PowerToys installer][github-prerelease-link]. This PowerToy requires Windows 10 1903 (build 18362) or later.
Back in the June timeframe, we started prototyping an idea. With COVID-19, we're all multi-tasking and trying to make the best of everything and being able to quickly mute while on a conference call is critical regardless of where you are on your computer and what application has focus.
The utility will mute not just your audio but your video as well with a single keystroke. You can do audio, video both. We knew this would impact our roadmap and goals but felt extremely strong that this is the right decision. We're all multi-tasking and trying to make the best of everything and being able to quickly mute while on a conference call is critical regardless of where you are on your computer.
We know we have some issues and we have a [master tracking issue - #6246](https://github.com/microsoft/PowerToys/issues/6246). We know a certain laptops currently the video forwarding does not work and are proactively working on fixing this.
To use:
- Set your camera to the PowerToys Video driver in the target application
- <kbd>Win</kbd>+<kbd>N</kbd> to toggle both Audio and Video at the same time
- <kbd>Win</kbd>+<kbd>Shift</kbd>+<kbd>O</kbd> to toggle video
- <kbd>Win</kbd>+<kbd>Shift</kbd>+<kbd>A</kbd> to toggle microphone
For a more information, head over to the [Video conference mute overview][vidConfOverview]
### What is being planned for 0.23
For [0.23](https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F12), we are proactively working on:
- Stability
- Localization
- Improve interactions with elevated windows and keeping most of the PT utilities non-elevated so we still have a 'shell' like experience
- OOBE work
### PowerToys roadmap
Our [prioritized roadmap][roadmap] of features and utilites that the core team is focusing on..
## Developer Guidance
@@ -128,7 +210,7 @@ Please read the [developer docs](/doc/devdocs) for a detailed breakdown.
## Contributing
This project welcomes contributions of all times. Help spec'ing, design, documentation, finding bugs are ways everyone can help on top of coding features / bug fixes. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
This project welcomes contributions of all types. Help spec'ing, design, documentation, finding bugs are ways everyone can help on top of coding features / bug fixes. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](contributing.md). We will be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
@@ -142,7 +224,7 @@ PowerToys is still a very fluidic project and the team is actively working out o
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
## Privacy Statement
@@ -151,5 +233,7 @@ The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [many more](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [definition](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldn’t be near what it is without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thanks and to recognize your work. This is a living document dedicated to highlighting the high impact community members and their contributions.
Names are in alphabetical order based on first name.
Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well.
Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well.
### [@royvou](https://github.com/royvou)
Roy has helped out contributing a features to PowerToys Run
## Open source projects
As PowerToys creates new utilities, some will be based off existing technology. We'll continue to do our best to contribute back to these projects but their efforts were the base of some of our projects. We want to be sure their work is directly recognized.
### [@jjw24](https://github.com/jjw24/) - Jeremy Wu
Initial base of jjw24's fork, which makes it the base of PowerToys Run.
## Microsoft community members
We would like to also directly call out some extremely helpful Microsoft employees that have directly contributed to PowerToys. This isn't their day job and was work they did out of passion. We want to say thank you and recognize your work.
@@ -121,6 +121,12 @@ When you'd like the team to take a look, (even if the work is not yet fully-comp
Once your code has been reviewed and approved by the requisite number of team members, it will be merged into the master branch. Once merged, your PR will be automatically closed.
### How can I become a collaborateur on the PowerToys team
Be a great community member. Just help out a lot and make useful additions, filing bugs/suggestions, help develop fixes and features, code reviews, and always, docs. Lets continue to make the PowerToys repository a great spot to learn and make a great set of utilities.
When the time comes, Microsoft will reach out and help make you a formal team member. Just make sure they can reach out to you :)
After the user has changed the module settings in the Settings editor, the runner calls this method to pass to the module the updated values. It's a good place to save the settings as well.
Sample code from [`the example PowerToy`](/src/modules/example_powertoy/dllmain.cpp):
- Try to package new ideas/components into libraries that have nicely defined interfaces.
- Package new ideas into classes or refactor existing ideas into a class as you extend.
- When adding new classes/methos/changing existing code: add new unit tests or update the existing tests.
- When adding new classes/methods/changing existing code: add new unit tests or update the existing tests.
## Github Workflow
@@ -30,7 +30,7 @@ General project organization:
Documentation for the project.
### The [`Wiki`](/wiki)
### The [`Wiki`](https://github.com/microsoft/PowerToys/wiki)
The Wiki contains the current specs for the project.
@@ -40,38 +40,70 @@ Contains the source code of the PowerToys installer.
### The [`src`](/src) folder
Contains the source code of the PowerToys runner and of all of the PowerToys modules. **This is where the most of the magic happens.**
Contains the source code of the PowerToys runner and of all of the PowerToys modules. **This is where most of the magic happens.**
### The [`tools`](/tools) folder
Various tools used by PowerToys. Includes the Visual Studio 2019 project template for new PowerToys.
## Building code
## Compiling PowerToys
### Build Prerequisites
### Prerequisites for Compiling PowerToys
- Windows 10 1803 (build 10.0.17134.0) or above to build and run PowerToys.
- Visual Studio 2019 Community edition or higher, with the 'Desktop Development with C++' component and the Windows 10 SDK version 10.0.18362.0 or higher.
1. Windows 10 April 2018 Update (version 1803) or newer
2. Visual Studio Community/Professional/Enterprise 2019
3. Run the command below in cmd/terminal to install all the workloads and components for VS.
- Open `powertoys.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
- The PowerToys binaries will be in your repo under `x64\Release`.
- If you want to copy the `PowerToys.exe` binary to a different location, you'll also need to copy the `modules` and the `svgs` folders.
### Building the .msi Installer
## Building the Installers
* From the `installer` folder open `PowerToysSetup.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
* The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
Our installer is two parts, an EXE and an MSI. The EXE contains the MSI and handles more complex install logic.
- The EXE installs all prerequisites and installs PowerToys via the MSI. Also has additional features, such as silent installation flags
- The MSI installs PowerToys.
#### Prerequisites to Build the MSI Installer
### Prerequisites Building the Installer (.MSI)
* Install the [WiX Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=RobMensching.WiXToolset).
* Install the [WiX Toolset build tools](https://wixtoolset.org/releases/).
1. Install the [WiX Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=RobMensching.WiXToolset).
2. Install the [WiX Toolset build tools](https://wixtoolset.org/releases/).
### Building the MSIX Installer
### Compiling Installer (.MSI)
Please follow the [installer instructions](./installer/readme.md) which include items such as creating the self-signed cert for testing.
- From the `installer` folder open `PowerToysSetup.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release`, from the `Build` menu choose `Build Solution`.
- The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
Head over to the wiki to get the [full list of supported installer arguments][installerArgWiki].
## Debugging
@@ -79,15 +111,15 @@ The following configuration issue only applies if the user is a member of the Ad
Some PowerToys modules require being run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations:
-the `FancyZones` module will be not be able to move an elevated window to a zone.
-the `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application.
-The `FancyZones` module will be not be able to move an elevated window to a zone.
-The `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application.
To run and debug PowerToys from Visual Studio when the user is a member of the Administrators group, Visual Studio has to be started with elevated privileges. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the `runner` project properties and navigate to the `Linker -> Manifest File` settings, edit the `UAC Execution Level` property and change it from `highestAvailable (level='highestAvailable')` to `asInvoker (/level='asInvoker')`, save the changes.
## How to create new PowerToys
See the instructions on [how to install the PowerToys Module project template](tools/project_template). <br />
Specifications for the [PowerToys settings API](doc/specs/PowerToys-settings.md).
See the instructions on [how to install the PowerToys Module project template](/tools/project_template). <br />
Specifications for the [PowerToys settings API](/doc/devdocs/settings.md).
## Implementation details
@@ -115,14 +147,14 @@ The common lib, as the name suggests, contains code shared by multiple PowerToys
WebView project for editing the PowerToys settings.
The html portion of the project that is shown in the WebView is contained in [`settings-html`](/src/settings/settings-heml).
The html portion of the project that is shown in the WebView is contained in [`settings-html`](/src/settings/settings-html).
Instructions on how build a new version and update this project are in the [Web project for the Settings UI](./settings-web.md).
While developing, it's possible to connect the WebView to the development server running in localhost by setting the `_DEBUG_WITH_LOCALHOST` flag to `1` and following the instructions near it in `./main.cpp`.
### [`Settings-web`](settings-web.md)
This project generates the web UI shown in the [PowerToys Settings](/src/editor).
It's a `ReactJS` project created using [UI Fabric](https://developer.microsoft.com/en-us/fabric#/).
It's a `ReactJS` project created using [Fluent UI](https://developer.microsoft.com/en-us/fluentui#/).
## Current modules
### [`FancyZones`](modules/fancyzones.md)
@@ -134,11 +166,6 @@ PowerRename is a Windows Shell Context Menu Extension for advanced bulk renaming
### [`Shortcut Guide`](modules/shortcut_guide.md)
The Windows Shortcut Guide, displayed when the WinKey is held for some time.
An example PowerToy, that demonstrates how to create new ones. Please note, that this is going to become a Visual Studio project template soon.
This PowerToy serves as a sample to show how to implement the [PowerToys interface](/src/modules/interface/) when creating a PowerToy. It also showcases the currently implemented settings.
#### Options
This module has a setting to serve as an example for each of the currently implemented settings property:
@@ -149,4 +176,6 @@ This module has a setting to serve as an example for each of the currently imple
- ColorPicker property
- CustomAction property


If you're running any application as an administrator (aka elevated) and PowerToys is not, a few things may not work correctly when the elevated applications are in focus or trying to interact with a PowerToys feature like FancyZones.
## Having PowerToys keep functioning properly
We understand users will run applications elevated. We do as well. We have two options for you when this scenario happens:
1.**Recommended:** PowerToys will prompt when we detect a process that is elevated. Go to PowerToys settings inside the General Tab and click "Relaunch as adminstrator".
2. Enable "Always run as administrator" in the PowerToys settings.
## What is "Run as Administrator" / Elevated processes
This is when a process runs with "elevated" privileges. Typically this would be associated with the administrator accounts on a system.
Basically it runs with additional access to the operating system. Most things do not need run elevated. A common scenario would be needing to run certain PowerShell commands or edit the registry.
How do i know my application is "elevated"? If you see this prompt (User Access Control prompt), the application is requesting it:
![alt text][uac]
At times also, elevated terminals for instance, they will typically have the phrase "Administrator" appended to the title bar. Be warned, this isn't always the case it will be appended.
![alt text][elevatedWindow]
## When does PowerToys need this
PowerToys in itself does not. It only needs to be elevated when it has to interact with other applications that are running elevated. If those applications are in focus, PowerToys may not function unless it is elevated as well.
These are the two scenarios we will not work in:
1. Intercepting certain types of keyboard strokes
2. Resizing / Moving windows
### PowerToys affected
1. FancyZones
- Snapping a window into a zone
- Moving the window to a different zone
2. Shortcut guide
- Display shortcut
3. Keyboard remapper
- key to key remapping
- Global level shortcuts remapping
- App-targeted shortcuts remapping
[uac]: ../images/runAsAdmin/uac.png "User access control (UAC)"
[elevatedWindow]: ../images/runAsAdmin/elevatedWindows.png "Run as admin"
[PowerToys and running as Administrator](https://aka.ms/powertoysDetectedElevatedHelp)
Contains the executable starting point, initialization code and the list of known PowerToys. All singletones are also initialized here at the start. Loads all the powertoys by scanning the `./modules` folder and `enable()`s those makred as enabled in `%LOCALAPPDATA%\Microsoft\PowerToys\settings.json` config. Then it runs [a message loop](https://docs.microsoft.com/en-us/windows/win32/winmsg/using-messages-and-message-queues) for the tray UI. Note that this message loop also [handles lowlevel_keyboard_hook events](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/lowlevel_keyboard_event.cpp#L24).
Contains the executable starting point, initialization code and the list of known PowerToys. All singletones are also initialized here at the start. Loads all the powertoys by scanning the `./modules` folder and `enable()`s those marked as enabled in `%LOCALAPPDATA%\Microsoft\PowerToys\settings.json` config. Then it runs [a message loop](https://docs.microsoft.com/en-us/windows/win32/winmsg/using-messages-and-message-queues) for the tray UI. Note that this message loop also [handles lowlevel_keyboard_hook events](https://github.com/microsoft/PowerToys/blob/1760af50c8803588cb575167baae0439af38a9c1/src/runner/lowlevel_keyboard_event.cpp#L24).
To minimize the performance impact on the machine only `runner` installs global hooks, passing the events to registered callbacks in each PowerToy module.
When a PowerToy module is loaded, the `runner` calls the [`get_events()`](/src/modules/interface/powertoy_module_interface.h#L40) method to get a NULL-terminated array of NULL-terminated strings with the names of the events that the PowerToy wants to subscribe to. A `const wchar_t*` string is provided for each of the event names.
Events are signalled by the `runner` calling the [`signal_event(name, data)`](/src/modules/interface/powertoy_module_interface.h#L53) method of the PowerToy module. The `name` parameter contains the NULL-terminated name of the event. The `data` parameter and the method return value are specific for each event.
This event is signaled whenever the user presses or releases a key on the keyboard. To subscribe to this event, add `"ll_keyboard"` to the table returned by the `get_events()` method.
The PowerToys runner installs low-level keyboard hook using `SetWindowsHookEx(WH_KEYBOARD_LL, ...)`. See [this MSDN page](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644985(v%3Dvs.85)) for details.
When a keyboard event is signaled and `ncCode` equals `HC_ACTION`, the `wParam` and `lParam` event parameters are passed to all subscribed clients in the [`LowlevelKeyboardEvent`](/src/modules/interface/lowlevel_keyboard_event_data.h#L38-L41) struct.
The `intptr_t data` event argument is a pointer to the `LowlevelKeyboardEvent` struct.
A non-zero return value from any of the subscribed PowerToys will cause the runner hook proc to return 1, thus swallowing the keyboard event.
Example usage, that makes Windows ignore the L key:
if (event.wParam == WM_KEYDOWN && event.lParam->vkCode == 0x4C) {
return 1;
} else {
return 0;
}
} else {
return 0;
}
}
```
## Windows Event Hook
This event is signaled for [a range of events](https://docs.microsoft.com/pl-pl/windows/win32/winauto/event-constants). To subscribe to this event, add `"win_hook_event"` to the table returned by the `get_events()` method. See [this MSDN doc](https://docs.microsoft.com/pl-pl/windows/win32/api/winuser/nf-winuser-setwineventhook) for details.
The `intptr_t data` event argument is a pointer to the [`WinHookEvent`](/src/modules/interface/win_hook_event_data.h#L43-L50) struct.
The return value of the event handler is ignored.
Example usage, that detects a window being resized:
Taking too long to process the events has negative impact on the whole system performance. To address this, the events are signaled from a different thread, not from the event hook callback itself.
- We use [`.clang-format`](https://github.com/microsoft/PowerToys/blob/master/.clang-format) style file to enable automatic code formatting. You can [easily format source files from Visual Studio](https://devblogs.microsoft.com/cppblog/clangformat-support-in-visual-studio-2017-15-7-preview-1/). For example, `CTRL+K CTRL+D` formats the current document.
- If you prefer another text editor or have ClangFormat disabled in Visual Studio, you could invoke [`format_sources`](https://github.com/microsoft/PowerToys/blob/master/format_sources.ps1) powershell script from command line. It gets a list of all currently modified files from `git` and invokes clang-format on them.
- If you prefer another text editor or have ClangFormat disabled in Visual Studio, you could invoke [`format_sources`](https://github.com/microsoft/PowerToys/blob/master/src/codeAnalysis/format_sources.ps1) powershell script from command line. It gets a list of all currently modified files from `git` and invokes clang-format on them.
Please note that you should also have `clang-format.exe` in `%PATH%` for it to work. The script can infer the path of `clang-format.exe` version which is shipped with Visual Studio at `%VCINSTALLDIR%\Tools\Llvm\bin\`, if you launch it from the *Native Tools Command Prompt for VS*.
- CI doesn't enforce code formatting yet, since we're gradually applying code formatting to the codebase, but please adhere to our formatting style for any new code.
- CI doesn't enforce code formatting yet, since we're gradually applying code formatting to the codebase, but please adhere to our formatting style for any new code.
All approved specs are inside the [Wiki](https://github.com/microsoft/PowerToys/wiki)
All approved specs are inside the [Wiki spec section](https://github.com/microsoft/PowerToys/wiki/Specs)
## Spec process
1. A proposed item is either new or requesting additional design
2. Spec is written inside the Specs folder and a PR happens with feedback.
3. Once spec is signed off, we move it into the [Wiki](https://github.com/microsoft/PowerToys/wiki).
3. Once spec is signed off, we move it into the [Wiki spec section](https://github.com/microsoft/PowerToys/wiki/Specs).
## Thought process behind this
We want a single wholistic for PowerToys. This includes both source code, docs, and specs. At the same time, we want to ensure items have pull requests and feedback. Since the wiki cannot do PR's, we will do the process above.
This process will allow specs to be image rich but not impact the primary repository's size as more items come online.
This process will allow specs to be image rich but not impact the primary repository's size as more items come online.
These are community driven alternative install methods to Windows Package Manager (WinGet) and GitHub. The PowerToys teams does not update or manage these install methods.
These will be listed in alphabetical order.
## Chocolatey
Download and upgrade PowerToys from [Chocolatey](https://chocolatey.org). If you have any issues when installing/upgrading the package please go to the [package page](https://chocolatey.org/packages/powertoys) and follow the [Chocolatey triage process](https://chocolatey.org/docs/package-triage-process)
To install PowerToys, run the following command from the command line / PowerShell:
```powershell
chocoinstallpowertoys
```
To upgrade PowerToys, run the following command from the command line / PowerShell:
```powershell
chocoupgradepowertoys
```
## Scoop
Download and update PowerToys from [Scoop](https://scoop.sh).
To install PowerToys, run the following command from the command line / PowerShell:
```powershell
scoopinstallpowertoys
```
To update PowerToys, run the following command from the command line / PowerShell:
<RCLinesInclude="IDR_BIN_MSIINSTALLER BIN "..\\PowerToysSetup\\$(PlatformShortName)\\$(Configuration)\\PowerToysSetup-$(Version)-$(PlatformShortName).msi""/>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
<?foreach File in vcruntime140.dll;vcruntime140_1.dll;concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_codecvt_ids.dll;vccorlib140.dll?>
<?foreach File in vcruntime140.dll;vcruntime140_1.dll;concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_codecvt_ids.dll;vccorlib140.dll?>
<?foreach File in ColorPicker.dll;ColorPicker.exe;ColorPicker.exe.config;Microsoft.Bcl.AsyncInterfaces.dll;Microsoft.Expression.Interactions.dll;Microsoft.PowerToys.Settings.UI.Lib.dll;PowerToysInterop.dll;System.Buffers.dll;System.Memory.dll;System.Numerics.Vectors.dll;System.Text.Encodings.Web.dll;System.Text.Json.dll;System.Threading.Tasks.Extensions.dll;System.ValueTuple.dll;System.Windows.Interactivity.dll;Telemetry.dll;ManagedCommon.dll;System.Runtime.CompilerServices.Unsafe.dll?>
<?foreach File in concrt140_app.dll;Microsoft.Bcl.AsyncInterfaces.dll;Microsoft.PowerToys.Settings.UI.Lib.dll;Microsoft.PowerToys.Settings.UI.Runner.dll;Microsoft.Toolkit.dll;Microsoft.Toolkit.Uwp.dll;Microsoft.Toolkit.Uwp.UI.dll;Microsoft.Toolkit.Win32.UI.XamlHost.dll;Microsoft.Toolkit.Win32.UI.XamlHost.Managed.dll;Microsoft.Toolkit.Wpf.UI.Controls.dll;Microsoft.Toolkit.Wpf.UI.XamlHost.dll;Microsoft.UI.Xaml.dll;Microsoft.Xaml.Interactions.dll;Microsoft.Xaml.Interactivity.dll;msvcp140_1_app.dll;msvcp140_2_app.dll;msvcp140_app.dll;Newtonsoft.Json.dll;PowerToysInterop.dll;System.Runtime.CompilerServices.Unsafe.dll;System.Text.Encodings.Web.dll;System.Text.Json.dll;vcamp140_app.dll;vccorlib140_app.dll;vcomp140_app.dll;vcruntime140_1_app.dll;vcruntime140_app.dll;Telemetry.dll;ManagedCommon.dll?>
<?foreach File in Microsoft.Toolkit.Uwp.pri;Microsoft.Toolkit.Uwp.UI.pri;Microsoft.Toolkit.Win32.UI.XamlHost.pri;Microsoft.UI.Xaml.pri;Microsoft.Xaml.Interactions.pri;Microsoft.Xaml.Interactivity.pri;resources.pri?>
<?foreach File in vcruntime140.dll;vcruntime140_1.dll;concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_codecvt_ids.dll;vccorlib140.dll?>
<?foreach File in ColorPicker.png;FancyZones.png;ImageResizer.png;KBM.png;PowerLauncher.png;PowerPreview.png;PowerRename.png;PT.png;ShortcutGuide.png?>
<?foreach File in FancyZonesPage.xbf;GeneralPage.xbf;ImageResizerPage.xbf;KeyboardManagerPage.xbf;PowerLauncherPage.xbf;PowerPreviewPage.xbf;PowerRenamePage.xbf;ShellPage.xbf;ShortcutGuidePage.xbf?>
<?foreach File in concrt140_app.dll;ICSharpCode.SharpZipLib.dll;JetBrains.Annotations.dll;Mages.Core.dll;Microsoft.Search.Interop.dll;EntityFramework.SqlServer.dll;EntityFramework.dll;Mono.Cecil.dll;Mono.Cecil.Mdb.dll;Mono.Cecil.Pdb.dll;Mono.Cecil.Rocks.dll;msvcp140_1_app.dll;msvcp140_2_app.dll;msvcp140_app.dll;Newtonsoft.Json.dll;NLog.dll;NLog.Extensions.Logging.dll;Pinyin4Net.dll;PowerLauncher.deps.json;PowerLauncher.dll;PowerLauncher.exe;Microsoft.Xaml.Behaviors.dll;System.Text.Json.dll;sni.dll;System.Data.SQLite.EF6.dll;PowerLauncher.runtimeconfig.json;SQLite.Interop.dll;System.Data.OleDb.dll;System.Data.SqlClient.dll;System.Data.SQLite.dll;vcamp140_app.dll;vccorlib140_app.dll;vcomp140_app.dll;vcruntime140_1_app.dll;vcruntime140_app.dll;Wox.Core.dll;Wox.Infrastructure.dll;Wox.Plugin.dll;PowerToysInterop.dll;Telemetry.dll;PowerLauncher.Telemetry.dll;Microsoft.Extensions.Configuration.Abstractions.dll;Microsoft.Extensions.Configuration.Binder.dll;Microsoft.Extensions.Configuration.dll;Microsoft.Extensions.DependencyInjection.Abstractions.dll;Microsoft.Extensions.DependencyInjection.dll;Microsoft.Extensions.Logging.Abstractions.dll;Microsoft.Extensions.Logging.dll;Microsoft.Extensions.Options.dll;Microsoft.Extensions.Primitives.dll;ControlzEx.dll;MahApps.Metro.dll;ManagedCommon.dll?>
<?foreach File in vcruntime140.dll;vcruntime140_1.dll;concrt140.dll;msvcp140.dll;msvcp140_1.dll;msvcp140_2.dll;msvcp140_codecvt_ids.dll;vccorlib140.dll?>
<?foreach File in app.dark.png;app.light.png;app_error.dark.png;app_error.light.png;Browser.png;calculator.png;cancel.png;close.png;cmd.png;color.png;copy.png;down.png;EXE.png;file.png;find.png;folder.png;history.png;image.png;Link.png;lock.png;logoff.png;ok.png;open.png;plugin.png;recyclebin.png;restart.png;search.png;settings.png;shutdown.png;sleep.png;up.png;update.png;warning.png?>
<?foreach File in plugin.json;Wox.Infrastructure.dll;Microsoft.Plugin.Calculator.deps.json;Microsoft.Plugin.Calculator.dll;Wox.Plugin.dll;Telemetry.dll?>
<?foreach File in copy.dark.png;copy.light.png;delete.dark.png;delete.light.png;file.dark.png;file.light.png;folder.dark.png;folder.light.png;user.dark.png;user.light.png;Warning.dark.png;Warning.light.png?>
<?foreach File in app.dark.png;app.light.png;disable.light.png;disable.dark.png;folder.light.png;folder.dark.png;shell.light.png;shell.dark.png;user.light.png;user.dark.png?>
<?foreach File in plugin.json;Wox.Infrastructure.dll;Wox.Plugin.dll;Microsoft.Plugin.WindowWalker.deps.json;Microsoft.Plugin.WindowWalker.dll;Telemetry.dll?>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.