![[Image: clom1Dn.png]](https://i.imgur.com/clom1Dn.png)
![[Image: XdVRcDf.png]](https://i.imgur.com/XdVRcDf.png)
Extension that lets you open a search popup using a user-defined hotkey (Ctrl + F by default, overwriting the default behaviour of Playnite of focusing the search box).
Features:
- Open via user-defined shortcut in Playnite or globally (optional)
- Search and launch/install games by name
- Search for emulated games by image/rom name
- Search for games on IsThereAnyDeal.com either by just searching for a game that is not in your library, adding the user-defined override character (+ by default) at the end, or by searching for "itad" and activating the sub item source to only search on ITAD.
- Search for games using CheapShark
- Fuzzy search with configurable threshold
- Run commands, e.g. opening settings, exit Playnite, open Fullscreen Mode and a few more. Type ">" to see built-in commands
- Run commands added by other extensions, for example DuplicateHider.
- Filtered Search: Type a source, installation status(installed/uninstalled), category, platfrom or company, select the filter and press enter. To add another filter, type "," or "&" (without quotation marks) and search for the next filter. At least one of the filters added with a "," or the first one has to be fulfilled by a game to be displayed. All filters added with "&" need to be fullfilled by game to be displayed. Search with applied filters as usual.
- Type "Recently Played" or "Favorites" and activate the item to only show recently played games or favorites. Once acitvated, search as usual.
- Details Preview for supported results
- Support for ExtraMetadata logos in Game details view
- Directly edit Settings of supported Extensions
- Customizable appearance
- Search and Install Extensions/Add-ons with the built-in Add-on Browser
- Search games by acronyms. E.g. Counter-Strike Global Offensive -> csgo, Age of Empires II -> aoeii, Resident Evil 7 -> re7
Searching is fuzzy meaning that results are sorted by a score that represents how close a game name is to the search query instead of looking for an exact match.
You can set the minimal value (threshold) a result needs to be shown. 0 means every result is valid, 1 only accepts perfect matches. Default is 0.55. A higher threshold can also speed up the search. You can also choose to expand all items and show seperators between them in the in the plugin settings.
Results can be selected using the up and down arrow keys or by clicking them. A selected game can be launched/installed by pressing the Enter key or by double clicking.
To close the popup, click somewhere outside of it, press the Escape key or press the hotkey again.
The search score is a combination of different string difference metrics, let me know if there are cases that match poorly for you.
For extension developers:
Add Sources and Items:
The QuickSearchSDK can be used by adding a reference to "QuickSearchSDK.dll" to your extension's project. The namespace "QuickSearch" contains the static class "QuickSearchSDK" which provides some static methods to add game actions, single items and item sources. "QuickSearch.SearchItems" contains definitions for the used interfaces and a set of simple classes implementing each interface (Command*). The static class "QuickSearch.IconChars" contains some constants that can be used as the CharIcon of objects implementing the ISearchItem<string> interface. If you are using an IDE like Visual Studio you should also be able to see short descriptions for all classes, fields, functions and interfaces to see what they do.
Adding settings support:
The SDK also contains "QuickSearch.Attributes" which can simply be added to properties in the plugin's settings. This will allow the user to directly inspect/edit this setting using QuickSearch.
For guidelines and examples see the github wiki.
GitHub
Help by contributing translations: https://crowdin.com/project/quicksearch-for-playnite
![[Image: 61e11d430afb112ea33c3aa5_Button-1-p-500.png]](https://uploads-ssl.webflow.com/5c14e387dab576fe667689cf/61e11d430afb112ea33c3aa5_Button-1-p-500.png)
Releases:
For Playnite 9: Install, Latest Release
2.11.3
- tweaked string matching algorithm
- fixed error in score normalization
- complete french translation by ClearStrelok
2.11.2
- fixed acronym creation generating invalid unicode characters
- partial french translation by ClearStrelok
2.11.1
- words seperated by "-" are now considered to be two words (e.g. Counter-Strike: Global Offensive -> CSGO)
2.11.0
- games can now be searched by acronyms made from the initials of each word in the game name
- acronym feature can be disabled by setting the minimal acronym length to 0 in the options
2.10.2
- only close details view if the selected item actually changes
2.10.1
- fixed error in letter pair matching algorithm
2.10.0
- tweaked string matching algorithm (might require to lower the threshold)
- prioritize games over filter items
- added changelogs to addon details view
2.9.0
- Improved search performance
- include addon tags in search when using the Addon-Browser
- fixed matching algorithm not working correctly in some cases
- fixed dropshadow on icons being cut off
2.8.2
- fixed some layout issues
2.8.1
- fixed search box height not being set correctly
2.8.0
- prefer visible games if scores are equal
- improved performance for the first filter layer
- updated to PlayniteSDK 6.0.0
- show extension icons for settings items
- set fixed height for expanded items
2.7.0
- screenshots in addon details can now be clicked to be enlarged or closed again
- added links to addon details view
2.6.0
- added addon browser
2.5.1
- close logo files after loading them
2.5.0
- added settings items for library and metadata plugins
- added developers and publishers to details view
2.4.0
- added options to change search window width and details view max width
- fixed search results missing when returning from SubItemSource
2.3.3
- fixed glass effect not working correctly if underlying view had transparent background
2.3.2
- fixed crash if other plugins dont have their Properties property set
2.3.1
- added details view option to settings view
2.3.0
- added optional details view for games (supporting ExtraMetadata Logos) and itad results. Enabled by default
2.2.0
- added action to open add-on menu
- fixed resource name typo
- fixed itad and cheapshark subitemsources names didnt use localization
2.1.1
- fixed crash in some cases when opening the search window
- fixed blurred background shifting when sidepanels open
2.0.0
- Playnite 9 Betasupport, not compatible with Playnite 8!
- Changed Id, so you need to uninstall before reinstalling!
For Playnite 8:
- show filter type and number of matching games on filter entries
- added option to search and apply multiple filters to the search, e.g. by installation status, source, company, category or platform (can impact loading times if enabled)
- new entry for IsThereAnyDeal.com to only search online
- some settings for plugins can be viewed/set from within the search window
- support for ExtensionUpdater extension
- bug fixes and performance improvements

- breaking changes
- split into two assemblies
- guidelines and examples in github wiki
- added ISubItemSource and related interfaces
- added static method to add plugin settings
- added Attributes that can be attached to settings properties to display them in the search window (QuickSearchSDK.Attributes.dll)
- added option to set a global hotkey, that opens the search window even if the Playnite window is not in focus
- added Appearance tab in settings.
- visual update, including a glass transparency effect and an adjustable border.
- improved search for titles that contain special characters. For example "F.E.A.R." can be found by searching "fear".
- fixed shop list not updating in some cases
- search for games on IsThereAnyDeal.com. Only if the score of the best result is below a user-defined threshold. Can be disabled completely in new settings tab. Shop list will be populated the first time IsThereAnyDeal.com is queried.

- breaking changes
- GetItemsTask() is called with the items that have been added in the synchronous stage of the search in addition to the query.
- Should contain the last breaking changes for the near future
- added option to disambiguate by installation status before name if scores are equal
- hotfix: game icons not being used
- split plugin settings into tabs
- added option to enable/disable items and game actions on a per extension basis
- reworked auto scrolling for long text
- added some shortcut commands. Type "> " to see available commands

- not backwards compatible, but should work as a drop-in replacement
- made IconChars class public
- changed the way commands are added
- AddCommand now returns concrete type instead of interface, so its properties (like IconChar) can be quickly changed
- fixed text scrolling not resetting on deselection
- Visual improvements: search icon, bigger search box, loading indicator, scrolling of long texts in the bottom left corner, placeholder text, settings icon for settings command
- option to set the delay before asynchronous items are requested, defaulted to 250 ms. This does not affect game search as that happens synchronously.
- Added "Quote" commands as examples for asynchronous items.
- Improved loading times when a lot of items need to be presented.

- allow asynchronously added search results, for example to present web search results of some kind.
- ISearchItemSources can indicate to be dependent on the search query, which will defer the call to GetItems(query) and GetItemsTask(query) until the query can be passed, otherwise query might be null. This allows to only supply items if the query starts with a certain prefix, for example.
- ISearchItems can set a Unicode character from the "icofont.ttf" font (included with Playnite) as their icon instead of an image by setting the IconChar property.
- Added static class IconChars containing constants for some icon char unicodes.
- Some improvements to the in-code documentation.
- Display action(s) in search box, can be cycled using Tab or Shift + Tab if multiple are available
- Open settings via command
- Search also considers rom names
- Search Items and Commands can be added by other extensions using QuickSearchSDK assembly
- Added options to enable items and commands from other extensions, disabled by default

- Just for extension development.
- Can be added to other extension projects to supply Search Items, Commands and Game Actions. Use methods of static class "QuickSearch.QuickSearchSDK".
- adjusted score weights
- added option to restrict maximum number of displayed results
- check for empty strings
- fixed scrollbar not being hidden when appropriate
- added option to lower the priority of adding results to the list (to improve responsiveness when search seems slow), disabled by default
- more responsive ui while loading results