├── .cm
└── gitstream.cm
├── .editorconfig
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug-report.yaml
│ ├── code-review.md
│ ├── discussion.md.not_used
│ └── feature-request.md
├── actions
│ └── spelling
│ │ ├── README.md
│ │ ├── advice.md
│ │ ├── allow.txt
│ │ ├── candidate.patterns
│ │ ├── excludes.txt
│ │ ├── expect.txt
│ │ ├── line_forbidden.patterns
│ │ ├── patterns.txt
│ │ └── reject.txt
├── dependabot.yml
├── pr-labeler.yml
├── update_release_pr.py
└── workflows
│ ├── default_plugins.yml
│ ├── dotnet.yml
│ ├── gitstream.yml
│ ├── pr_assignee.yml
│ ├── pr_milestone.yml
│ ├── release_deploy.yml
│ ├── release_pr.yml
│ ├── spelling.yml
│ ├── stale.yml
│ ├── top-ranking-issues.yml
│ └── winget.yml
├── .gitignore
├── Artworks
├── Default Icons
│ ├── app_missing_img.png
│ ├── app_missing_img_01.png
│ ├── app_missing_img_01.svg
│ ├── app_missing_img_02.png
│ ├── app_missing_img_02.svg
│ ├── app_missing_img_03.png
│ ├── app_missing_img_03.svg
│ ├── app_missing_img_buttons.png
│ ├── app_missing_img_buttons.svg
│ ├── app_missing_img_fluent.png
│ ├── app_missing_img_fluent.svg
│ ├── app_missing_img_huge.png
│ ├── app_missing_img_huge.svg
│ ├── app_missing_img_lightblue.png
│ ├── app_missing_img_lightblue.svg
│ ├── app_missing_img_lightblue_buttons.png
│ ├── app_missing_img_lightblue_buttons.svg
│ ├── app_missing_img_minimal.png
│ ├── app_missing_img_minimal.svg
│ ├── app_missing_img_minimal_buttons.png
│ └── app_missing_img_minimal_buttons.svg
├── Logo
│ ├── app_error.png
│ ├── logo.ico
│ ├── logo.png
│ ├── logo.svg
│ ├── logo128.png
│ ├── logo16.png
│ ├── logo256.png
│ ├── logo32.png
│ ├── logo48.png
│ ├── logo512.png
│ ├── logo64.png
│ └── resources
│ │ ├── flow-header-landscape-transparent.png
│ │ ├── flow-header-landscape.png
│ │ ├── flow-header-square-transparent.png
│ │ ├── flow-header-square.png
│ │ ├── flow-logo.ai
│ │ └── preview.pdf
├── app.ico
├── app.png
├── app_error.png
├── app_missing_img.png
└── mainsearch.png
├── Directory.Build.props
├── Directory.Build.targets
├── Flow.Launcher.Core
├── Configuration
│ ├── IPortable.cs
│ └── Portable.cs
├── ExternalPlugins
│ ├── CommunityPluginSource.cs
│ ├── CommunityPluginStore.cs
│ ├── Environments
│ │ ├── AbstractPluginEnvironment.cs
│ │ ├── JavaScriptEnvironment.cs
│ │ ├── JavaScriptV2Environment.cs
│ │ ├── PythonEnvironment.cs
│ │ ├── PythonV2Environment.cs
│ │ ├── TypeScriptEnvironment.cs
│ │ └── TypeScriptV2Environment.cs
│ ├── FlowPluginException.cs
│ └── PluginsManifest.cs
├── Flow.Launcher.Core.csproj
├── FodyWeavers.xml
├── Plugin
│ ├── ExecutablePlugin.cs
│ ├── ExecutablePluginV2.cs
│ ├── JsonPRCModel.cs
│ ├── JsonRPCConfigurationModel.cs
│ ├── JsonRPCPlugin.cs
│ ├── JsonRPCPluginBase.cs
│ ├── JsonRPCPluginSettings.cs
│ ├── JsonRPCPluginV2.cs
│ ├── JsonRPCV2Models
│ │ ├── JsonRPCExecuteResponse.cs
│ │ ├── JsonRPCPublicAPI.cs
│ │ └── JsonRPCQueryRequest.cs
│ ├── NodePlugin.cs
│ ├── NodePluginV2.cs
│ ├── PluginAssemblyLoader.cs
│ ├── PluginConfig.cs
│ ├── PluginManager.cs
│ ├── PluginsLoader.cs
│ ├── ProcessStreamPluginV2.cs
│ ├── PythonPlugin.cs
│ ├── PythonPluginV2.cs
│ ├── QueryBuilder.cs
│ └── README.md
├── Properties
│ └── AssemblyInfo.cs
├── README.md
├── Resource
│ ├── AvailableLanguages.cs
│ ├── FontHelper.cs
│ ├── Internationalization.cs
│ ├── JsonObjectConverter.cs
│ ├── Language.cs
│ ├── LocalizationConverter.cs
│ ├── LocalizedDescriptionAttribute.cs
│ ├── Theme.cs
│ └── TranslationConverter.cs
├── Storage
│ └── IRemovable.cs
└── Updater.cs
├── Flow.Launcher.Infrastructure
├── Constant.cs
├── Exception
│ └── ExceptionFormatter.cs
├── FileExplorerHelper.cs
├── Flow.Launcher.Infrastructure.csproj
├── FodyWeavers.xml
├── Helper.cs
├── Hotkey
│ ├── GlobalHotkey.cs
│ ├── HotkeyModel.cs
│ ├── IHotkeySettings.cs
│ └── RegisteredHotkeyData.cs
├── Http
│ └── Http.cs
├── Image
│ ├── ImageCache.cs
│ ├── ImageHashGenerator.cs
│ ├── ImageLoader.cs
│ └── ThumbnailReader.cs
├── KeyConstant.cs
├── Logger
│ └── Log.cs
├── MonitorInfo.cs
├── NativeMethods.txt
├── PInvokeExtensions.cs
├── PinyinAlphabet.cs
├── Properties
│ └── AssemblyInfo.cs
├── Stopwatch.cs
├── Storage
│ ├── BinaryStorage.cs
│ ├── FlowLauncherJsonStorage.cs
│ ├── JsonStorage.cs
│ ├── PluginBinaryStorage.cs
│ └── PluginJsonStorage.cs
├── StringMatcher.cs
├── UI
│ └── EnumBindingSource.cs
├── UserSettings
│ ├── CustomBrowserViewModel.cs
│ ├── CustomExplorerViewModel.cs
│ ├── CustomShortcutModel.cs
│ ├── DataLocation.cs
│ ├── HttpProxy.cs
│ ├── PluginHotkey.cs
│ ├── PluginSettings.cs
│ └── Settings.cs
└── Win32Helper.cs
├── Flow.Launcher.Plugin
├── ActionContext.cs
├── AllowedLanguage.cs
├── BaseModel.cs
├── EventHandler.cs
├── Features.cs
├── Flow.Launcher.Plugin.csproj
├── FodyWeavers.xml
├── GlyphInfo.cs
├── Interfaces
│ ├── IAsyncExternalPreview.cs
│ ├── IAsyncHomeQuery.cs
│ ├── IAsyncPlugin.cs
│ ├── IAsyncReloadable.cs
│ ├── IContextMenu.cs
│ ├── IHomeQuery.cs
│ ├── IPlugin.cs
│ ├── IPluginI18n.cs
│ ├── IPublicAPI.cs
│ ├── IReloadable.cs
│ ├── IResultUpdated.cs
│ ├── ISavable.cs
│ └── ISettingProvider.cs
├── KeyEvent.cs
├── NativeMethods.txt
├── PluginInitContext.cs
├── PluginMetadata.cs
├── PluginPair.cs
├── Properties
│ └── AssemblyInfo.cs
├── Query.cs
├── README.md
├── Result.cs
├── SharedCommands
│ ├── FilesFolders.cs
│ ├── SearchWeb.cs
│ └── ShellCommand.cs
├── SharedModels
│ ├── MatchResult.cs
│ └── ThemeData.cs
└── UserPlugin.cs
├── Flow.Launcher.Test
├── FilesFoldersTest.cs
├── Flow.Launcher.Test.csproj
├── FuzzyMatcherTest.cs
├── HttpTest.cs
├── PluginLoadTest.cs
├── Plugins
│ ├── ExplorerTest.cs
│ ├── JsonRPCPluginTest.cs
│ └── UrlPluginTest.cs
└── QueryBuilderTest.cs
├── Flow.Launcher.sln
├── Flow.Launcher.sln.DotSettings
├── Flow.Launcher
├── ActionKeywords.xaml
├── ActionKeywords.xaml.cs
├── App.xaml
├── App.xaml.cs
├── Converters
│ ├── BadgePositionConverter.cs
│ ├── BoolToIMEConversionModeConverter.cs
│ ├── BoolToVisibilityConverter.cs
│ ├── BorderClipConverter.cs
│ ├── DateTimeFormatToNowConverter.cs
│ ├── DiameterToCenterPointConverter.cs
│ ├── HighlightTextConverter.cs
│ ├── IconRadiusConverter.cs
│ ├── OpenResultHotkeyVisibilityConverter.cs
│ ├── OrdinalConverter.cs
│ ├── QuerySuggestionBoxConverter.cs
│ ├── SizeRatioConverter.cs
│ ├── StringToKeyBindingConverter.cs
│ └── TextConverter.cs
├── CustomQueryHotkeySetting.xaml
├── CustomQueryHotkeySetting.xaml.cs
├── CustomShortcutSetting.xaml
├── CustomShortcutSetting.xaml.cs
├── Flow.Launcher.csproj
├── FodyWeavers.xml
├── Helper
│ ├── AutoStartup.cs
│ ├── DataWebRequestFactory.cs
│ ├── ErrorReporting.cs
│ ├── HotKeyMapper.cs
│ ├── SingleInstance.cs
│ ├── SingletonWindowOpener.cs
│ ├── SyntaxSugars.cs
│ ├── WallpaperPathRetrieval.cs
│ └── WindowsMediaPlayerHelper.cs
├── HotkeyControl.xaml
├── HotkeyControl.xaml.cs
├── HotkeyControlDialog.xaml
├── HotkeyControlDialog.xaml.cs
├── Images
│ ├── Browser.png
│ ├── Error.png
│ ├── Exclamation.png
│ ├── Information.png
│ ├── Link.png
│ ├── New Message.png
│ ├── Question.png
│ ├── app.ico
│ ├── app.png
│ ├── app_error.png
│ ├── app_missing_img.png
│ ├── calculator.png
│ ├── cancel.png
│ ├── close.png
│ ├── cmd.png
│ ├── color.png
│ ├── copy.png
│ ├── dev.ico
│ ├── down.png
│ ├── file.png
│ ├── find.png
│ ├── folder.png
│ ├── gamemode.ico
│ ├── history.png
│ ├── illustration_01.png
│ ├── illustration_02.png
│ ├── image.png
│ ├── info.png
│ ├── keyboard.png
│ ├── loading.png
│ ├── lock.png
│ ├── logoff.png
│ ├── mainsearch.svg
│ ├── ok.png
│ ├── open.png
│ ├── page_img01.png
│ ├── plugin.png
│ ├── plugins.png
│ ├── proxy.png
│ ├── recyclebin.png
│ ├── restart.png
│ ├── search.png
│ ├── settings.png
│ ├── shutdown.png
│ ├── sleep.png
│ ├── store.png
│ ├── theme.png
│ ├── up.png
│ ├── update.png
│ └── wizard.png
├── Languages
│ ├── ar.xaml
│ ├── cs.xaml
│ ├── da.xaml
│ ├── de.xaml
│ ├── en.xaml
│ ├── es-419.xaml
│ ├── es.xaml
│ ├── fr.xaml
│ ├── he.xaml
│ ├── it.xaml
│ ├── ja.xaml
│ ├── ko.xaml
│ ├── nb-NO.xaml
│ ├── nb.xaml
│ ├── nl.xaml
│ ├── pl.xaml
│ ├── pt-br.xaml
│ ├── pt-pt.xaml
│ ├── ru.xaml
│ ├── sk.xaml
│ ├── sr.xaml
│ ├── tr.xaml
│ ├── uk-UA.xaml
│ ├── vi.xaml
│ ├── zh-cn.xaml
│ └── zh-tw.xaml
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── MessageBoxEx.xaml
├── MessageBoxEx.xaml.cs
├── Msg.xaml
├── Msg.xaml.cs
├── Notification.cs
├── ProgressBoxEx.xaml
├── ProgressBoxEx.xaml.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── PublishProfiles
│ │ └── Net7.0-SelfContained.pubxml
│ ├── Resources.Designer.cs
│ ├── Resources.fr-FR.resx
│ ├── Resources.he-IL.resx
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── PublicAPIInstance.cs
├── ReportWindow.xaml
├── ReportWindow.xaml.cs
├── Resources
│ ├── Controls
│ │ ├── Card.xaml
│ │ ├── Card.xaml.cs
│ │ ├── CardGroup.xaml
│ │ ├── CardGroup.xaml.cs
│ │ ├── CardGroupCardStyleSelector.cs
│ │ ├── ExCard.xaml
│ │ ├── ExCard.xaml.cs
│ │ ├── HotkeyDisplay.xaml
│ │ ├── HotkeyDisplay.xaml.cs
│ │ ├── HyperLink.xaml
│ │ ├── HyperLink.xaml.cs
│ │ ├── InfoBar.xaml
│ │ ├── InfoBar.xaml.cs
│ │ ├── InstalledPluginDisplay.xaml
│ │ ├── InstalledPluginDisplay.xaml.cs
│ │ ├── InstalledPluginDisplayBottomData.xaml
│ │ ├── InstalledPluginDisplayBottomData.xaml.cs
│ │ ├── InstalledPluginDisplayKeyword.xaml
│ │ └── InstalledPluginDisplayKeyword.xaml.cs
│ ├── CustomControlTemplate.xaml
│ ├── Dark.xaml
│ ├── Light.xaml
│ ├── MarkupExtensions
│ │ ├── CollapsedWhenExtension.cs
│ │ ├── HideableVisibilityConverter.cs
│ │ └── VisibleWhenExtension.cs
│ ├── Pages
│ │ ├── WelcomePage1.xaml
│ │ ├── WelcomePage1.xaml.cs
│ │ ├── WelcomePage2.xaml
│ │ ├── WelcomePage2.xaml.cs
│ │ ├── WelcomePage3.xaml
│ │ ├── WelcomePage3.xaml.cs
│ │ ├── WelcomePage4.xaml
│ │ ├── WelcomePage4.xaml.cs
│ │ ├── WelcomePage5.xaml
│ │ └── WelcomePage5.xaml.cs
│ ├── Segoe Fluent Icons.ttf
│ ├── SettingWindowStyle.xaml
│ ├── app.ico
│ ├── dev.ico
│ └── open.wav
├── ResultListBox.xaml
├── ResultListBox.xaml.cs
├── SelectBrowserWindow.xaml
├── SelectBrowserWindow.xaml.cs
├── SelectFileManagerWindow.xaml
├── SelectFileManagerWindow.xaml.cs
├── SettingPages
│ ├── ViewModels
│ │ ├── DropdownDataGeneric.cs
│ │ ├── SettingsPaneAboutViewModel.cs
│ │ ├── SettingsPaneGeneralViewModel.cs
│ │ ├── SettingsPaneHotkeyViewModel.cs
│ │ ├── SettingsPanePluginStoreViewModel.cs
│ │ ├── SettingsPanePluginsViewModel.cs
│ │ ├── SettingsPaneProxyViewModel.cs
│ │ └── SettingsPaneThemeViewModel.cs
│ └── Views
│ │ ├── SettingsPaneAbout.xaml
│ │ ├── SettingsPaneAbout.xaml.cs
│ │ ├── SettingsPaneGeneral.xaml
│ │ ├── SettingsPaneGeneral.xaml.cs
│ │ ├── SettingsPaneHotkey.xaml
│ │ ├── SettingsPaneHotkey.xaml.cs
│ │ ├── SettingsPanePluginStore.xaml
│ │ ├── SettingsPanePluginStore.xaml.cs
│ │ ├── SettingsPanePlugins.xaml
│ │ ├── SettingsPanePlugins.xaml.cs
│ │ ├── SettingsPaneProxy.xaml
│ │ ├── SettingsPaneProxy.xaml.cs
│ │ ├── SettingsPaneTheme.xaml
│ │ └── SettingsPaneTheme.xaml.cs
├── SettingWindow.xaml
├── SettingWindow.xaml.cs
├── Settings.cs
├── Storage
│ ├── HistoryItem.cs
│ ├── QueryHistory.cs
│ ├── TopMostRecord.cs
│ └── UserSelectedRecord.cs
├── Themes
│ ├── Base.xaml
│ ├── BlurBlack Darker.xaml
│ ├── BlurBlack.xaml
│ ├── BlurWhite.xaml
│ ├── Circle System.xaml
│ ├── Cyan Dark.xaml
│ ├── Darker Glass.xaml
│ ├── Darker.xaml
│ ├── Discord Dark.xaml
│ ├── Dracula.xaml
│ ├── Gray.xaml
│ ├── League.xaml
│ ├── Midnight.xaml
│ ├── Nord Darker.xaml
│ ├── Pink.xaml
│ ├── SlimLight.xaml
│ ├── Sublime.xaml
│ ├── ThemeBuilder
│ │ ├── Template.xaml
│ │ └── ThemeConvertor.py
│ ├── Ubuntu.xaml
│ ├── Win10System.xaml
│ └── Win11Light.xaml
├── ViewModel
│ ├── MainViewModel.cs
│ ├── PluginStoreItemViewModel.cs
│ ├── PluginViewModel.cs
│ ├── ResultViewModel.cs
│ ├── ResultsForUpdate.cs
│ ├── ResultsViewModel.cs
│ ├── SelectBrowserViewModel.cs
│ ├── SelectFileManagerViewModel.cs
│ ├── SettingWindowViewModel.cs
│ └── WelcomeViewModel.cs
├── WelcomeWindow.xaml
├── WelcomeWindow.xaml.cs
├── app.manifest
└── app.png
├── LICENSE
├── Plugins
├── Flow.Launcher.Plugin.BrowserBookmark
│ ├── ChromeBookmarkLoader.cs
│ ├── ChromiumBookmarkLoader.cs
│ ├── Commands
│ │ └── BookmarkLoader.cs
│ ├── CustomChromiumBookmarkLoader.cs
│ ├── CustomFirefoxBookmarkLoader.cs
│ ├── EdgeBookmarkLoader.cs
│ ├── FirefoxBookmarkLoader.cs
│ ├── Flow.Launcher.Plugin.BrowserBookmark.csproj
│ ├── IBookmarkLoader.cs
│ ├── Images
│ │ ├── bookmark.png
│ │ └── copylink.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── Models
│ │ ├── Bookmark.cs
│ │ ├── CustomBrowser.cs
│ │ └── Settings.cs
│ ├── Views
│ │ ├── CustomBrowserSetting.xaml
│ │ ├── CustomBrowserSetting.xaml.cs
│ │ ├── SettingsControl.xaml
│ │ └── SettingsControl.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Calculator
│ ├── DecimalSeparator.cs
│ ├── Flow.Launcher.Plugin.Calculator.csproj
│ ├── Images
│ │ └── calculator.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── NumberTranslator.cs
│ ├── Settings.cs
│ ├── ViewModels
│ │ └── SettingsViewModel.cs
│ ├── Views
│ │ ├── CalculatorSettings.xaml
│ │ └── CalculatorSettings.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Explorer
│ ├── ContextMenu.cs
│ ├── EverythingSDK
│ │ ├── x64
│ │ │ └── Everything.dll
│ │ └── x86
│ │ │ └── Everything.dll
│ ├── Exceptions
│ │ ├── EngineNotAvailableException.cs
│ │ └── SearchException.cs
│ ├── Flow.Launcher.Plugin.Explorer.csproj
│ ├── Helper
│ │ ├── ShellContextMenu.cs
│ │ ├── ShellContextMenuDisplayHelper.cs
│ │ └── SortOptionTranslationHelper.cs
│ ├── Images
│ │ ├── context_menu.png
│ │ ├── copy.png
│ │ ├── deletefilefolder.png
│ │ ├── error.png
│ │ ├── everything_error.png
│ │ ├── excludeindexpath.png
│ │ ├── explorer.png
│ │ ├── file.png
│ │ ├── folder.png
│ │ ├── index_error.png
│ │ ├── index_error2.png
│ │ ├── quickaccess.png
│ │ ├── removequickaccess.png
│ │ ├── robot_error.png
│ │ ├── user.png
│ │ └── windowsindexingoptions.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── Search
│ │ ├── Constants.cs
│ │ ├── DirectoryInfo
│ │ │ └── DirectoryInfoSearch.cs
│ │ ├── EnvironmentVariables.cs
│ │ ├── Everything
│ │ │ ├── EverythingAPI.cs
│ │ │ ├── EverythingApiDllImport.cs
│ │ │ ├── EverythingDownloadHelper.cs
│ │ │ ├── EverythingSearchManager.cs
│ │ │ ├── EverythingSearchOption.cs
│ │ │ ├── Exceptions
│ │ │ │ ├── CreateThreadException.cs
│ │ │ │ ├── CreateWindowException.cs
│ │ │ │ ├── IPCErrorException.cs
│ │ │ │ ├── InvalidCallException.cs
│ │ │ │ ├── InvalidIndexException.cs
│ │ │ │ ├── MemoryErrorException.cs
│ │ │ │ └── RegisterClassExException.cs
│ │ │ └── SortOption.cs
│ │ ├── IProvider
│ │ │ ├── IContentIndexProvider.cs
│ │ │ ├── IIndexProvider.cs
│ │ │ └── IPathIndexProvider.cs
│ │ ├── QuickAccessLinks
│ │ │ ├── AccessLink.cs
│ │ │ └── QuickAccess.cs
│ │ ├── ResultManager.cs
│ │ ├── SearchManager.cs
│ │ ├── SearchResult.cs
│ │ └── WindowsIndex
│ │ │ ├── QueryConstructor.cs
│ │ │ ├── WindowsIndex.cs
│ │ │ └── WindowsIndexSearchManager.cs
│ ├── Settings.cs
│ ├── ViewModels
│ │ ├── ActionKeywordModel.cs
│ │ ├── EnumBindingModel.cs
│ │ └── SettingsViewModel.cs
│ ├── Views
│ │ ├── ActionKeywordSetting.xaml
│ │ ├── ActionKeywordSetting.xaml.cs
│ │ ├── Converters
│ │ │ └── EverythingEnumNameConverter.cs
│ │ ├── ExplorerSettings.xaml
│ │ ├── ExplorerSettings.xaml.cs
│ │ ├── PreviewPanel.xaml
│ │ └── PreviewPanel.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.PluginIndicator
│ ├── Flow.Launcher.Plugin.PluginIndicator.csproj
│ ├── Images
│ │ └── work.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.PluginsManager
│ ├── ContextMenu.cs
│ ├── Flow.Launcher.Plugin.PluginsManager.csproj
│ ├── Images
│ │ ├── manifestsite.png
│ │ ├── pluginsmanager.png
│ │ ├── request.png
│ │ ├── sourcecode.png
│ │ └── zipfolder.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── PluginsManager.cs
│ ├── Settings.cs
│ ├── Utilities.cs
│ ├── ViewModels
│ │ └── SettingsViewModel.cs
│ ├── Views
│ │ ├── PluginsManagerSettings.xaml
│ │ └── PluginsManagerSettings.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.ProcessKiller
│ ├── Flow.Launcher.Plugin.ProcessKiller.csproj
│ ├── Images
│ │ └── app.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── NativeMethods.txt
│ ├── ProcessHelper.cs
│ ├── ProcessResult.cs
│ ├── Readme.md
│ ├── Settings.cs
│ ├── ViewModels
│ │ └── SettingsViewModel.cs
│ ├── Views
│ │ ├── SettingsControl.xaml
│ │ └── SettingsControl.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Program
│ ├── AddProgramSource.xaml
│ ├── AddProgramSource.xaml.cs
│ ├── Flow.Launcher.Plugin.Program.csproj
│ ├── Images
│ │ ├── cmd.png
│ │ ├── disable.png
│ │ ├── folder.png
│ │ ├── program.png
│ │ └── user.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Logger
│ │ └── ProgramLogger.cs
│ ├── Main.cs
│ ├── NativeMethods.txt
│ ├── ProgramSuffixes.xaml
│ ├── ProgramSuffixes.xaml.cs
│ ├── Programs
│ │ ├── IProgram.cs
│ │ ├── ShellLinkHelper.cs
│ │ ├── ShellLocalization.cs
│ │ ├── UWPPackage.cs
│ │ └── Win32.cs
│ ├── Settings.cs
│ ├── SuffixesConverter.cs
│ ├── ViewModels
│ │ └── AddProgramSourceViewModel.cs
│ ├── Views
│ │ ├── Commands
│ │ │ └── ProgramSettingDisplay.cs
│ │ ├── Models
│ │ │ └── ProgramSource.cs
│ │ ├── ProgramSetting.xaml
│ │ └── ProgramSetting.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Shell
│ ├── Flow.Launcher.Plugin.Shell.csproj
│ ├── Images
│ │ ├── admin.png
│ │ ├── copy.png
│ │ ├── shell.png
│ │ └── user.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── Settings.cs
│ ├── ShellSetting.xaml
│ ├── ShellSetting.xaml.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Sys
│ ├── Command.cs
│ ├── CommandKeywordSetting.xaml
│ ├── CommandKeywordSetting.xaml.cs
│ ├── Flow.Launcher.Plugin.Sys.csproj
│ ├── Images
│ │ ├── app.png
│ │ ├── checkupdate.png
│ │ ├── close.png
│ │ ├── hibernate.png
│ │ ├── indexoption.png
│ │ ├── lock.png
│ │ ├── logoff.png
│ │ ├── openrecyclebin.png
│ │ ├── recyclebin.png
│ │ ├── restart.png
│ │ ├── restart_advanced.png
│ │ ├── shutdown.png
│ │ ├── sleep.png
│ │ └── theme_selector.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── NativeMethods.txt
│ ├── Settings.cs
│ ├── SettingsViewModel.cs
│ ├── SysSettings.xaml
│ ├── SysSettings.xaml.cs
│ ├── ThemeSelector.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.Url
│ ├── Flow.Launcher.Plugin.Url.csproj
│ ├── Images
│ │ └── url.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── Settings.cs
│ └── plugin.json
├── Flow.Launcher.Plugin.WebSearch
│ ├── Flow.Launcher.Plugin.WebSearch.csproj
│ ├── Images
│ │ ├── baidu.png
│ │ ├── bing.png
│ │ ├── copylink.png
│ │ ├── duckduckgo.png
│ │ ├── facebook.png
│ │ ├── gist.png
│ │ ├── github.png
│ │ ├── gmail.png
│ │ ├── google.png
│ │ ├── google_drive.png
│ │ ├── google_maps.png
│ │ ├── google_translate.png
│ │ ├── netflix.png
│ │ ├── pictures.png
│ │ ├── stackoverflow.png
│ │ ├── twitter.png
│ │ ├── web_search.png
│ │ ├── wiki.png
│ │ ├── wolframalpha.png
│ │ ├── yahoo.png
│ │ ├── youtube.png
│ │ └── youtubemusic.png
│ ├── Languages
│ │ ├── ar.xaml
│ │ ├── cs.xaml
│ │ ├── da.xaml
│ │ ├── de.xaml
│ │ ├── en.xaml
│ │ ├── es-419.xaml
│ │ ├── es.xaml
│ │ ├── fr.xaml
│ │ ├── he.xaml
│ │ ├── it.xaml
│ │ ├── ja.xaml
│ │ ├── ko.xaml
│ │ ├── nb.xaml
│ │ ├── nl.xaml
│ │ ├── pl.xaml
│ │ ├── pt-br.xaml
│ │ ├── pt-pt.xaml
│ │ ├── ru.xaml
│ │ ├── sk.xaml
│ │ ├── sr.xaml
│ │ ├── tr.xaml
│ │ ├── uk-UA.xaml
│ │ ├── vi.xaml
│ │ ├── zh-cn.xaml
│ │ └── zh-tw.xaml
│ ├── Main.cs
│ ├── SearchSource.cs
│ ├── SearchSourceSetting.xaml
│ ├── SearchSourceSetting.xaml.cs
│ ├── SearchSourceViewModel.cs
│ ├── Settings.cs
│ ├── SettingsControl.xaml
│ ├── SettingsControl.xaml.cs
│ ├── SettingsViewModel.cs
│ ├── SuggestionSources
│ │ ├── Baidu.cs
│ │ ├── Bing.cs
│ │ ├── DuckDuckGo.cs
│ │ ├── Google.cs
│ │ └── SuggestionSource.cs
│ ├── plugin.json
│ └── setting.json
└── Flow.Launcher.Plugin.WindowsSettings
│ ├── Classes
│ └── WindowsSetting.cs
│ ├── Flow.Launcher.Plugin.WindowsSettings.csproj
│ ├── Helper
│ ├── ContextMenuHelper.cs
│ ├── JsonSettingsListHelper.cs
│ ├── ResultHelper.cs
│ ├── TranslationHelper.cs
│ └── UnsupportedSettingsHelper.cs
│ ├── Images
│ ├── ControlPanel_Small.png
│ └── WindowsSettings.light.png
│ ├── Log.cs
│ ├── Main.cs
│ ├── Properties
│ ├── Resources.Designer.cs
│ ├── Resources.ar-SA.resx
│ ├── Resources.cs-CZ.resx
│ ├── Resources.cs.resx
│ ├── Resources.da-DK.resx
│ ├── Resources.de-DE.resx
│ ├── Resources.de.resx
│ ├── Resources.es-419.resx
│ ├── Resources.es-EM.resx
│ ├── Resources.es.resx
│ ├── Resources.fr-FR.resx
│ ├── Resources.fr.resx
│ ├── Resources.he-IL.resx
│ ├── Resources.hu.resx
│ ├── Resources.it-IT.resx
│ ├── Resources.it.resx
│ ├── Resources.ja-JP.resx
│ ├── Resources.ja.resx
│ ├── Resources.ko-KR.resx
│ ├── Resources.ko.resx
│ ├── Resources.nb-NO.resx
│ ├── Resources.nl-NL.resx
│ ├── Resources.pl-PL.resx
│ ├── Resources.pl.resx
│ ├── Resources.pt-BR.resx
│ ├── Resources.pt-PT.resx
│ ├── Resources.resx
│ ├── Resources.ru-RU.resx
│ ├── Resources.ru.resx
│ ├── Resources.sk-SK.resx
│ ├── Resources.sr-CS.resx
│ ├── Resources.sv.resx
│ ├── Resources.tr-TR.resx
│ ├── Resources.tr.resx
│ ├── Resources.uk-UA.resx
│ ├── Resources.vi-VN.resx
│ ├── Resources.zh-TW.resx
│ └── Resources.zh-cn.resx
│ ├── README.md
│ ├── WindowsSettings.json
│ └── plugin.json
├── README.md
├── Scripts
├── flowlauncher.nuspec
└── post_build.ps1
├── Settings.XamlStyler
├── SolutionAssemblyInfo.cs
├── appveyor.yml
├── attribution.md
├── azure-pipelines.yml
├── crowdin.yml
└── global.json
/.github/ISSUE_TEMPLATE/code-review.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F50E Code Review"
3 | about: Describe (bad) code that needs to be improved
4 | title: "[Describe Problematic Code]"
5 | labels: 'code review'
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Point to the corresponding file and line number(s) which could be improved.**
11 |
12 | Click on the line number in GitHub to create an anchored link to the corresponding code section. For example:
13 |
14 |
15 | https://github.com/Flow-Launcher/Flow.Launcher/blob/master/Flow.Launcher/Storage/TopMostRecord.cs#L8
16 |
17 | Provide your alternative implementation idea:
18 |
19 | ```
20 | Code
21 | ```
22 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/discussion.md.not_used:
--------------------------------------------------------------------------------
1 | ---
2 | name: "⁉️ Question/Discussion"
3 | about: Create a report to help us improve
4 | title: "[Ask a question or propose a change]"
5 | labels: 'question/discussion'
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Question**
11 | Describe your question.
12 |
13 | **Discussion**
14 | Discuss a topic.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "⭐ Feature request"
3 | about: Suggest a new idea or a feature enhacement
4 | title: "[Describe Your Feature]"
5 | labels: 'enhancement'
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 |
12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
13 |
14 | **Describe the solution you'd like**
15 |
16 | A clear and concise description of what you want to happen.
17 |
18 | **Describe alternatives you've considered**
19 |
20 | A clear and concise description of any alternative solutions or features you've considered.
21 |
22 | **Additional context**
23 |
24 | Add any other context or screenshots about the feature request here.
25 |
--------------------------------------------------------------------------------
/.github/actions/spelling/allow.txt:
--------------------------------------------------------------------------------
1 | github
2 | https
3 | ssh
4 | ubuntu
5 | runcount
6 | Firefox
7 | Português
8 | Português (Brasil)
9 |
--------------------------------------------------------------------------------
/.github/actions/spelling/reject.txt:
--------------------------------------------------------------------------------
1 | ^attache$
2 | benefitting
3 | occurences?
4 | ^dependan.*
5 | ^oer$
6 | Sorce
7 | ^[Ss]pae.*
8 | ^untill$
9 | ^untilling$
10 | ^wether.*
11 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "nuget" # See documentation for possible values
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 | open-pull-requests-limit: 3
13 | ignore:
14 | - dependency-name: "squirrel-windows"
15 | reviewers:
16 | - "jjw24"
17 | - "taooceros"
18 | - "JohnTheGr8"
19 | - package-ecosystem: "github-actions"
20 | directory: "/"
21 | schedule:
22 | interval: "daily"
23 |
--------------------------------------------------------------------------------
/.github/pr-labeler.yml:
--------------------------------------------------------------------------------
1 | # The bot always updates the labels, add/remove as necessary [default: false]
2 | alwaysReplace: false
3 | # Treats the text and labels as case sensitive [default: true]
4 | caseSensitive: false
5 | # Array of labels to be applied to the PR [default: []]
6 | customLabels:
7 | # Finds the `text` within the PR title and body and applies the `label`
8 | - text: 'bug'
9 | label: 'bug'
10 | - text: 'fix'
11 | label: 'bug'
12 | - text: 'dependabot'
13 | label: 'bug'
14 | - text: 'New Crowdin updates'
15 | label: 'bug'
16 | - text: 'New Crowdin updates'
17 | label: 'kind/i18n'
18 | - text: 'feature'
19 | label: 'enhancement'
20 | - text: 'add new'
21 | label: 'enhancement'
22 | - text: 'refactor'
23 | label: 'enhancement'
24 | - text: 'refactor'
25 | label: 'Code Refactor'
26 | # Search the body of the PR for the `text` [default: true]
27 | searchBody: true
28 | # Search the title of the PR for the `text` [default: true]
29 | searchTitle: true
30 | # Search for whole words only [default: false]
31 | wholeWords: false
32 |
--------------------------------------------------------------------------------
/.github/workflows/pr_assignee.yml:
--------------------------------------------------------------------------------
1 | name: Assign PR to creator
2 |
3 | on:
4 | pull_request_target:
5 | types: [opened]
6 | branches-ignore:
7 | - l10n_dev
8 |
9 | permissions:
10 | pull-requests: write
11 |
12 | jobs:
13 | automation:
14 | runs-on: ubuntu-latest
15 | steps:
16 | - name: Assign PR to creator
17 | uses: toshimaru/auto-author-assign@v2.1.1
18 |
--------------------------------------------------------------------------------
/.github/workflows/pr_milestone.yml:
--------------------------------------------------------------------------------
1 | name: Set Milestone
2 |
3 | # Assigns the earliest created milestone that matches the below glob pattern.
4 |
5 | on:
6 | pull_request_target:
7 | types: [opened]
8 |
9 | permissions:
10 | pull-requests: write
11 |
12 | jobs:
13 | automation:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: set-milestone
18 | uses: andrefcdias/add-to-milestone@v1.3.0
19 | with:
20 | repo-token: "${{ secrets.GITHUB_TOKEN }}"
21 | milestone: "+([0-9]).+([0-9]).+([0-9])"
22 | use-expression: true
23 |
--------------------------------------------------------------------------------
/.github/workflows/release_pr.yml:
--------------------------------------------------------------------------------
1 | name: Update release PR
2 |
3 | on:
4 | pull_request:
5 | types: [opened, reopened, synchronize]
6 | branches:
7 | - master
8 | workflow_dispatch:
9 |
10 | jobs:
11 | update-pr:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 |
16 | - uses: actions/setup-python@v5
17 | with:
18 | python-version: "3.x"
19 |
20 | - name: Run release PR update
21 | env:
22 | GITHUB_TOKEN: ${{ secrets.PR_TOKEN }}
23 | run: |
24 | pip install requests -q
25 | python3 ./.github/update_release_pr.py
26 |
--------------------------------------------------------------------------------
/.github/workflows/top-ranking-issues.yml:
--------------------------------------------------------------------------------
1 | name: Top-Ranking Issues
2 | on:
3 | schedule:
4 | - cron: '0 0 */1 * *'
5 | workflow_dispatch:
6 |
7 | jobs:
8 | ShowAndLabelTopIssues:
9 | name: Display and label top issues.
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Top Issues action
13 | uses: rickstaa/top-issues-action@v1.3.101
14 | env:
15 | github_token: ${{ secrets.GITHUB_TOKEN }}
16 | with:
17 | dashboard: true
18 | dashboard_show_total_reactions: true
19 | top_list_size: 10
20 | top_features: true
21 | top_bugs: true
22 | dashboard_title: Top-Ranking Issues 📈
23 | dashboard_label: ⭐ Dashboard
24 | hide_dashboard_footer: true
25 | top_issues: false
26 |
--------------------------------------------------------------------------------
/.github/workflows/winget.yml:
--------------------------------------------------------------------------------
1 | name: Publish to Winget
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | publish:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: vedantmgoyal2009/winget-releaser@v2
11 | with:
12 | identifier: Flow-Launcher.Flow-Launcher
13 | token: ${{ secrets.WINGET_TOKEN }}
14 |
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_01.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_02.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_03.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_buttons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_buttons.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_fluent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_fluent.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_huge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_huge.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_lightblue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_lightblue.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_lightblue_buttons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_lightblue_buttons.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_minimal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_minimal.png
--------------------------------------------------------------------------------
/Artworks/Default Icons/app_missing_img_minimal_buttons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Default Icons/app_missing_img_minimal_buttons.png
--------------------------------------------------------------------------------
/Artworks/Logo/app_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/app_error.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo.ico
--------------------------------------------------------------------------------
/Artworks/Logo/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Artworks/Logo/logo128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo128.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo16.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo256.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo32.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo48.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo512.png
--------------------------------------------------------------------------------
/Artworks/Logo/logo64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/logo64.png
--------------------------------------------------------------------------------
/Artworks/Logo/resources/flow-header-landscape-transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/flow-header-landscape-transparent.png
--------------------------------------------------------------------------------
/Artworks/Logo/resources/flow-header-landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/flow-header-landscape.png
--------------------------------------------------------------------------------
/Artworks/Logo/resources/flow-header-square-transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/flow-header-square-transparent.png
--------------------------------------------------------------------------------
/Artworks/Logo/resources/flow-header-square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/flow-header-square.png
--------------------------------------------------------------------------------
/Artworks/Logo/resources/flow-logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/flow-logo.ai
--------------------------------------------------------------------------------
/Artworks/Logo/resources/preview.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/Logo/resources/preview.pdf
--------------------------------------------------------------------------------
/Artworks/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/app.ico
--------------------------------------------------------------------------------
/Artworks/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/app.png
--------------------------------------------------------------------------------
/Artworks/app_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/app_error.png
--------------------------------------------------------------------------------
/Artworks/app_missing_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/app_missing_img.png
--------------------------------------------------------------------------------
/Artworks/mainsearch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Artworks/mainsearch.png
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 |
5 |
--------------------------------------------------------------------------------
/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 | false
9 |
10 |
11 | false
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Configuration/IPortable.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Flow.Launcher.Core.Configuration
3 | {
4 | public interface IPortable
5 | {
6 | void EnablePortableMode();
7 | void DisablePortableMode();
8 | void RemoveShortcuts();
9 | void RemoveUninstallerEntry();
10 | void CreateShortcuts();
11 | void CreateUninstallerEntry();
12 | void MoveUserDataFolder(string fromLocation, string toLocation);
13 | void VerifyUserDataAfterMove(string fromLocation, string toLocation);
14 | bool CanUpdatePortability();
15 | }
16 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Core/ExternalPlugins/Environments/JavaScriptEnvironment.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Flow.Launcher.Infrastructure.UserSettings;
3 | using Flow.Launcher.Plugin;
4 |
5 | namespace Flow.Launcher.Core.ExternalPlugins.Environments
6 | {
7 | internal class JavaScriptEnvironment : TypeScriptEnvironment
8 | {
9 | internal override string Language => AllowedLanguage.JavaScript;
10 |
11 | internal JavaScriptEnvironment(List pluginMetadataList, PluginsSettings pluginSettings) : base(pluginMetadataList, pluginSettings) { }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/ExternalPlugins/Environments/JavaScriptV2Environment.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Flow.Launcher.Infrastructure.UserSettings;
3 | using Flow.Launcher.Plugin;
4 |
5 | namespace Flow.Launcher.Core.ExternalPlugins.Environments
6 | {
7 | internal class JavaScriptV2Environment : TypeScriptV2Environment
8 | {
9 | internal override string Language => AllowedLanguage.JavaScriptV2;
10 |
11 | internal JavaScriptV2Environment(List pluginMetadataList, PluginsSettings pluginSettings) : base(pluginMetadataList, pluginSettings) { }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/ExternalPlugins/Environments/PythonV2Environment.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Flow.Launcher.Core.Plugin;
3 | using Flow.Launcher.Infrastructure.UserSettings;
4 | using Flow.Launcher.Plugin;
5 |
6 | namespace Flow.Launcher.Core.ExternalPlugins.Environments
7 | {
8 | internal class PythonV2Environment : PythonEnvironment
9 | {
10 | internal override string Language => AllowedLanguage.PythonV2;
11 |
12 | internal override PluginPair CreatePluginPair(string filePath, PluginMetadata metadata)
13 | {
14 | return new PluginPair
15 | {
16 | Plugin = new PythonPluginV2(filePath),
17 | Metadata = metadata
18 | };
19 | }
20 |
21 | internal PythonV2Environment(List pluginMetadataList, PluginsSettings pluginSettings) : base(pluginMetadataList, pluginSettings) { }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/ExternalPlugins/FlowPluginException.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin;
2 | using System;
3 |
4 | namespace Flow.Launcher.Core.ExternalPlugins
5 | {
6 | public class FlowPluginException : Exception
7 | {
8 | public PluginMetadata Metadata { get; set; }
9 |
10 | public FlowPluginException(PluginMetadata metadata, Exception e) : base(e.Message, e)
11 | {
12 | Metadata = metadata;
13 | }
14 |
15 | public override string ToString()
16 | {
17 | return $@"{Metadata.Name} Exception:
18 | Websites: {Metadata.Website}
19 | Author: {Metadata.Author}
20 | Version: {Metadata.Version}
21 | {base.ToString()}";
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Core/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Plugin/ExecutablePluginV2.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Text.Json;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 |
7 | namespace Flow.Launcher.Core.Plugin
8 | {
9 | internal sealed class ExecutablePluginV2 : ProcessStreamPluginV2
10 | {
11 | protected override ProcessStartInfo StartInfo { get; set; }
12 |
13 | public ExecutablePluginV2(string filename)
14 | {
15 | StartInfo = new ProcessStartInfo { FileName = filename };
16 | }
17 |
18 | protected override MessageHandlerType MessageHandler { get; } = MessageHandlerType.NewLineDelimited;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCExecuteResponse.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models
2 | {
3 | public record JsonRPCExecuteResponse(bool Hide = true);
4 | }
5 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Plugin/JsonRPCV2Models/JsonRPCQueryRequest.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Flow.Launcher.Plugin;
3 |
4 | namespace Flow.Launcher.Core.Plugin.JsonRPCV2Models
5 | {
6 | public record JsonRPCQueryRequest(
7 | List Results
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Plugin/NodePluginV2.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.IO.Pipelines;
4 | using System.Threading;
5 | using System.Threading.Tasks;
6 | using Flow.Launcher.Plugin;
7 |
8 | namespace Flow.Launcher.Core.Plugin
9 | {
10 | ///
11 | /// Execution of JavaScript & TypeScript plugins
12 | ///
13 | internal sealed class NodePluginV2 : ProcessStreamPluginV2
14 | {
15 | public NodePluginV2(string filename)
16 | {
17 | StartInfo = new ProcessStartInfo { FileName = filename, };
18 | }
19 |
20 | protected override ProcessStartInfo StartInfo { get; set; }
21 |
22 | public override async Task InitAsync(PluginInitContext context)
23 | {
24 | StartInfo.ArgumentList.Add(context.CurrentPluginMetadata.ExecuteFilePath);
25 | await base.InitAsync(context);
26 | }
27 |
28 | protected override MessageHandlerType MessageHandler { get; } = MessageHandlerType.HeaderDelimited;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Plugin/README.md:
--------------------------------------------------------------------------------
1 | There are two kinds of plugins:
2 | 1. System plugin
3 | Those plugins that action keyword is "*", those plugin doesn't need action keyword
4 | 2. User Plugin
5 | Those plugins that contains customized action keyword
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("Flow.Launcher.Test")]
4 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/README.md:
--------------------------------------------------------------------------------
1 | What does Flow.Launcher.Core do?
2 | =====
3 |
4 | * Handle Query
5 | * Define Flow.Launcher exceptions
6 | * Manage Plugins (including system plugin and user plugin)
7 | * Manage Themes
8 | * Manage i18n
9 | * Manage Update and version
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Resource/Language.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Core.Resource
2 | {
3 | public class Language
4 | {
5 | public Language(string code, string display)
6 | {
7 | LanguageCode = code;
8 | Display = display;
9 | }
10 |
11 | ///
12 | /// E.g. En or Zh-CN
13 | ///
14 | public string LanguageCode { get; set; }
15 |
16 | public string Display { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Resource/LocalizedDescriptionAttribute.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.Plugin;
4 |
5 | namespace Flow.Launcher.Core.Resource
6 | {
7 | public class LocalizedDescriptionAttribute : DescriptionAttribute
8 | {
9 | // We should not initialize API in static constructor because it will create another API instance
10 | private static IPublicAPI api = null;
11 | private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService();
12 |
13 | private readonly string _resourceKey;
14 |
15 | public LocalizedDescriptionAttribute(string resourceKey)
16 | {
17 | _resourceKey = resourceKey;
18 | }
19 |
20 | public override string Description
21 | {
22 | get
23 | {
24 | string description = API.GetTranslation(_resourceKey);
25 | return string.IsNullOrWhiteSpace(description) ?
26 | string.Format("[[{0}]]", _resourceKey) : description;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Resource/TranslationConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using CommunityToolkit.Mvvm.DependencyInjection;
5 | using Flow.Launcher.Plugin;
6 |
7 | namespace Flow.Launcher.Core.Resource
8 | {
9 | public class TranslationConverter : IValueConverter
10 | {
11 | // We should not initialize API in static constructor because it will create another API instance
12 | private static IPublicAPI api = null;
13 | private static IPublicAPI API => api ??= Ioc.Default.GetRequiredService();
14 |
15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
16 | {
17 | var key = value.ToString();
18 | if (string.IsNullOrEmpty(key)) return key;
19 | return API.GetTranslation(key);
20 | }
21 |
22 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) =>
23 | throw new InvalidOperationException();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Flow.Launcher.Core/Storage/IRemovable.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Core.Storage;
2 |
3 | ///
4 | /// Remove storage instances from instance
5 | ///
6 | public interface IRemovable
7 | {
8 | ///
9 | /// Remove all instances of one plugin
10 | ///
11 | ///
12 | public void RemovePluginSettings(string assemblyName);
13 |
14 | ///
15 | /// Remove all instances of one plugin
16 | ///
17 | ///
18 | public void RemovePluginCaches(string cacheDirectory);
19 | }
20 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/Helper.cs:
--------------------------------------------------------------------------------
1 | #nullable enable
2 |
3 | using System;
4 |
5 | namespace Flow.Launcher.Infrastructure
6 | {
7 | public static class Helper
8 | {
9 | ///
10 | /// http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy
11 | ///
12 | public static T NonNull(this T? obj)
13 | {
14 | if (obj == null)
15 | {
16 | throw new NullReferenceException();
17 | }
18 | else
19 | {
20 | return obj;
21 | }
22 | }
23 |
24 | public static void RequireNonNull(this T obj)
25 | {
26 | if (obj == null)
27 | {
28 | throw new NullReferenceException();
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/Hotkey/IHotkeySettings.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Flow.Launcher.Infrastructure.Hotkey;
4 |
5 | ///
6 | /// Interface that you should implement in your settings class to be able to pass it to
7 | /// Flow.Launcher.HotkeyControlDialog. It allows the dialog to display the hotkeys that have already been
8 | /// registered, and optionally provide a way to unregister them.
9 | ///
10 | public interface IHotkeySettings
11 | {
12 | ///
13 | /// A list of hotkeys that have already been registered. The dialog will display these hotkeys and provide a way to
14 | /// unregister them.
15 | ///
16 | public List RegisteredHotkeys { get; }
17 | }
18 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/KeyConstant.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Infrastructure
2 | {
3 | public static class KeyConstant
4 | {
5 | public const string Ctrl = nameof(Ctrl);
6 | public const string Alt = nameof(Alt);
7 | public const string Space = nameof(Space);
8 | }
9 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/NativeMethods.txt:
--------------------------------------------------------------------------------
1 | SHCreateItemFromParsingName
2 | DeleteObject
3 | IShellItem
4 | IShellItemImageFactory
5 | S_OK
6 |
7 | SetWindowsHookEx
8 | UnhookWindowsHookEx
9 | CallNextHookEx
10 | GetModuleHandle
11 | GetKeyState
12 | VIRTUAL_KEY
13 |
14 | EnumWindows
15 |
16 | DwmSetWindowAttribute
17 | DWM_SYSTEMBACKDROP_TYPE
18 | DWM_WINDOW_CORNER_PREFERENCE
19 |
20 | MAX_PATH
21 | SystemParametersInfo
22 |
23 | SetForegroundWindow
24 |
25 | GetWindowLong
26 | GetForegroundWindow
27 | GetDesktopWindow
28 | GetShellWindow
29 | GetWindowRect
30 | GetClassName
31 | FindWindowEx
32 | WINDOW_STYLE
33 |
34 | SetLastError
35 | WINDOW_EX_STYLE
36 |
37 | GetSystemMetrics
38 | EnumDisplayMonitors
39 | MonitorFromWindow
40 | GetMonitorInfo
41 | MONITORINFOEXW
42 |
43 | WM_ENTERSIZEMOVE
44 | WM_EXITSIZEMOVE
45 |
46 | OleInitialize
47 | OleUninitialize
48 |
49 | GetKeyboardLayout
50 | GetWindowThreadProcessId
51 | ActivateKeyboardLayout
52 | GetKeyboardLayoutList
53 | PostMessage
54 | WM_INPUTLANGCHANGEREQUEST
55 | INPUTLANGCHANGE_FORWARD
56 | LOCALE_TRANSIENT_KEYBOARD1
57 | LOCALE_TRANSIENT_KEYBOARD2
58 | LOCALE_TRANSIENT_KEYBOARD3
59 | LOCALE_TRANSIENT_KEYBOARD4
60 |
61 | SHParseDisplayName
62 | SHOpenFolderAndSelectItems
63 | CoTaskMemFree
64 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/PInvokeExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 | using Windows.Win32.Foundation;
3 | using Windows.Win32.UI.WindowsAndMessaging;
4 |
5 | namespace Windows.Win32;
6 |
7 | // Edited from: https://github.com/files-community/Files
8 | internal static partial class PInvoke
9 | {
10 | [DllImport("User32", EntryPoint = "SetWindowLongW", ExactSpelling = true)]
11 | static extern int _SetWindowLong(HWND hWnd, int nIndex, int dwNewLong);
12 |
13 | [DllImport("User32", EntryPoint = "SetWindowLongPtrW", ExactSpelling = true)]
14 | static extern nint _SetWindowLongPtr(HWND hWnd, int nIndex, nint dwNewLong);
15 |
16 | // NOTE:
17 | // CsWin32 doesn't generate SetWindowLong on other than x86 and vice versa.
18 | // For more info, visit https://github.com/microsoft/CsWin32/issues/882
19 | public static unsafe nint SetWindowLongPtr(HWND hWnd, WINDOW_LONG_PTR_INDEX nIndex, nint dwNewLong)
20 | {
21 | return sizeof(nint) is 4
22 | ? _SetWindowLong(hWnd, (int)nIndex, (int)dwNewLong)
23 | : _SetWindowLongPtr(hWnd, (int)nIndex, dwNewLong);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("Flow.Launcher")]
4 | [assembly: InternalsVisibleTo("Flow.Launcher.Core")]
5 | [assembly: InternalsVisibleTo("Flow.Launcher.Test")]
6 | [assembly: System.Runtime.Versioning.SupportedOSPlatform("Windows10.0.19041.0")]
7 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Flow.Launcher.Infrastructure.UserSettings
5 | {
6 | public class CustomBrowserViewModel : BaseModel
7 | {
8 | public string Name { get; set; }
9 | public string Path { get; set; }
10 | public string PrivateArg { get; set; }
11 | public bool EnablePrivate { get; set; }
12 | public bool OpenInTab { get; set; } = true;
13 | [JsonIgnore]
14 | public bool OpenInNewWindow => !OpenInTab;
15 | public bool Editable { get; set; } = true;
16 |
17 | public CustomBrowserViewModel Copy()
18 | {
19 | return new CustomBrowserViewModel
20 | {
21 | Name = Name,
22 | Path = Path,
23 | OpenInTab = OpenInTab,
24 | PrivateArg = PrivateArg,
25 | EnablePrivate = EnablePrivate,
26 | Editable = Editable
27 | };
28 | }
29 | }
30 | }
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/UserSettings/CustomExplorerViewModel.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin;
2 |
3 | namespace Flow.Launcher.ViewModel
4 | {
5 | public class CustomExplorerViewModel : BaseModel
6 | {
7 | public string Name { get; set; }
8 | public string Path { get; set; }
9 | public string FileArgument { get; set; } = "\"%d\"";
10 | public string DirectoryArgument { get; set; } = "\"%d\"";
11 | public bool Editable { get; init; } = true;
12 |
13 | public CustomExplorerViewModel Copy()
14 | {
15 | return new CustomExplorerViewModel
16 | {
17 | Name = Name,
18 | Path = Path,
19 | FileArgument = FileArgument,
20 | DirectoryArgument = DirectoryArgument,
21 | Editable = Editable
22 | };
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Flow.Launcher.Infrastructure/UserSettings/PluginHotkey.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin;
2 |
3 | namespace Flow.Launcher.Infrastructure.UserSettings
4 | {
5 | public class CustomPluginHotkey : BaseModel
6 | {
7 | public string Hotkey { get; set; }
8 | public string ActionKeyword { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/BaseModel.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Runtime.CompilerServices;
3 | using JetBrains.Annotations;
4 |
5 | namespace Flow.Launcher.Plugin
6 | {
7 | ///
8 | /// Base model for plugin classes
9 | ///
10 | public class BaseModel : INotifyPropertyChanged
11 | {
12 | ///
13 | /// Property changed event handler
14 | ///
15 | public event PropertyChangedEventHandler PropertyChanged;
16 |
17 | ///
18 | /// Invoked when a property changes
19 | ///
20 | ///
21 | [NotifyPropertyChangedInvocator]
22 | protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
23 | {
24 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Features.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin
2 | {
3 | ///
4 | /// Base Interface for Flow's special plugin feature interface
5 | ///
6 | public interface IFeatures
7 | {
8 | }
9 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/GlyphInfo.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin
2 | {
3 | ///
4 | /// Text with FontFamily specified
5 | ///
6 | /// Font Family of this Glyph
7 | /// Text/Unicode of the Glyph
8 | public record GlyphInfo(string FontFamily, string Glyph);
9 | }
10 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IAsyncHomeQuery.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Flow.Launcher.Plugin
6 | {
7 | ///
8 | /// Asynchronous Query Model for Flow Launcher When Query Text is Empty
9 | ///
10 | public interface IAsyncHomeQuery : IFeatures
11 | {
12 | ///
13 | /// Asynchronous Querying When Query Text is Empty
14 | ///
15 | ///
16 | /// If the Querying method requires high IO transmission
17 | /// or performing CPU intense jobs (performing better with cancellation), please use this IAsyncHomeQuery interface
18 | ///
19 | /// Cancel when querying job is obsolete
20 | ///
21 | Task> HomeQueryAsync(CancellationToken token);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IAsyncPlugin.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Flow.Launcher.Plugin
6 | {
7 | ///
8 | /// Asynchronous Plugin Model for Flow Launcher
9 | ///
10 | public interface IAsyncPlugin
11 | {
12 | ///
13 | /// Asynchronous Querying
14 | ///
15 | ///
16 | /// If the Querying or Init method requires high IO transmission
17 | /// or performing CPU intense jobs (performing better with cancellation), please use this IAsyncPlugin interface
18 | ///
19 | /// Query to search
20 | /// Cancel when querying job is obsolete
21 | ///
22 | Task> QueryAsync(Query query, CancellationToken token);
23 |
24 | ///
25 | /// Initialize plugin asynchrously (will still wait finish to continue)
26 | ///
27 | ///
28 | ///
29 | Task InitAsync(PluginInitContext context);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IAsyncReloadable.cs:
--------------------------------------------------------------------------------
1 | using System.Threading.Tasks;
2 |
3 | namespace Flow.Launcher.Plugin
4 | {
5 | ///
6 | /// This interface is to indicate and allow plugins to asyncronously reload their
7 | /// in memory data cache or other mediums when user makes a new change
8 | /// that is not immediately captured. For example, for BrowserBookmark and Program
9 | /// plugin does not automatically detect when a user added a new bookmark or program,
10 | /// so this interface's function is exposed to allow user manually do the reloading after
11 | /// those new additions.
12 | ///
13 | /// The command that allows user to manual reload is exposed via Plugin.Sys, and
14 | /// it will call the plugins that have implemented this interface.
15 | ///
16 | public interface IAsyncReloadable : IFeatures
17 | {
18 | ///
19 | /// Reload plugin data
20 | ///
21 | ///
22 | Task ReloadDataAsync();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IContextMenu.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Flow.Launcher.Plugin
4 | {
5 | ///
6 | /// Adds support for presenting additional options for a given from a context menu.
7 | ///
8 | public interface IContextMenu : IFeatures
9 | {
10 | ///
11 | /// Load context menu items for the given result.
12 | ///
13 | ///
14 | /// The for which the user has activated the context menu.
15 | ///
16 | List LoadContextMenus(Result selectedResult);
17 | }
18 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IHomeQuery.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Flow.Launcher.Plugin
6 | {
7 | ///
8 | /// Synchronous Query Model for Flow Launcher When Query Text is Empty
9 | ///
10 | /// If the Querying method requires high IO transmission
11 | /// or performing CPU intense jobs (performing better with cancellation), please try the IAsyncHomeQuery interface
12 | ///
13 | ///
14 | public interface IHomeQuery : IAsyncHomeQuery
15 | {
16 | ///
17 | /// Querying When Query Text is Empty
18 | ///
19 | /// This method will be called within a Task.Run,
20 | /// so please avoid synchronously wait for long.
21 | ///
22 | ///
23 | ///
24 | List HomeQuery();
25 |
26 | Task> IAsyncHomeQuery.HomeQueryAsync(CancellationToken token) => Task.Run(HomeQuery);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs:
--------------------------------------------------------------------------------
1 | using System.Globalization;
2 |
3 | namespace Flow.Launcher.Plugin
4 | {
5 | ///
6 | /// Represent plugins that support internationalization
7 | ///
8 | public interface IPluginI18n : IFeatures
9 | {
10 | ///
11 | /// Get a localised version of the plugin's title
12 | ///
13 | string GetTranslatedPluginTitle();
14 |
15 | ///
16 | /// Get a localised version of the plugin's description
17 | ///
18 | string GetTranslatedPluginDescription();
19 |
20 | ///
21 | /// The method will be invoked when language of flow changed
22 | ///
23 | void OnCultureInfoChanged(CultureInfo newCulture)
24 | {
25 |
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/IReloadable.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin
2 | {
3 | ///
4 | /// This interface is to indicate and allow plugins to synchronously reload their
5 | /// in memory data cache or other mediums when user makes a new change
6 | /// that is not immediately captured. For example, for BrowserBookmark and Program
7 | /// plugin does not automatically detect when a user added a new bookmark or program,
8 | /// so this interface's function is exposed to allow user manually do the reloading after
9 | /// those new additions.
10 | ///
11 | /// The command that allows user to manual reload is exposed via Plugin.Sys, and
12 | /// it will call the plugins that have implemented this interface.
13 | ///
14 | ///
15 | /// If requiring reloading data asynchronously, please use the IAsyncReloadable interface
16 | ///
17 | ///
18 | public interface IReloadable : IFeatures
19 | {
20 | ///
21 | /// Synchronously reload plugin data
22 | ///
23 | void ReloadData();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/ISavable.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin
2 | {
3 | ///
4 | /// Inherit this interface if you need to save additional data which is not a setting or cache,
5 | /// please implement this interface.
6 | ///
7 | ///
8 | /// For storing plugin settings, prefer
9 | /// or .
10 | /// For storing plugin caches, prefer
11 | /// or .
12 | /// Once called, those settings and caches will be automatically saved by Flow.
13 | ///
14 | public interface ISavable : IFeatures
15 | {
16 | ///
17 | /// Save additional plugin data.
18 | ///
19 | void Save();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Interfaces/ISettingProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Flow.Launcher.Plugin
4 | {
5 | ///
6 | /// This interface is used to create settings panel for .Net plugins
7 | ///
8 | public interface ISettingProvider
9 | {
10 | ///
11 | /// Create settings panel control for .Net plugins
12 | ///
13 | ///
14 | Control CreateSettingPanel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/KeyEvent.cs:
--------------------------------------------------------------------------------
1 | using Windows.Win32;
2 |
3 | namespace Flow.Launcher.Plugin
4 | {
5 | ///
6 | /// Enumeration of key events for
7 | ///
8 | /// and
9 | ///
10 | public enum KeyEvent
11 | {
12 | ///
13 | /// Key down
14 | ///
15 | WM_KEYDOWN = (int)PInvoke.WM_KEYDOWN,
16 |
17 | ///
18 | /// Key up
19 | ///
20 | WM_KEYUP = (int)PInvoke.WM_KEYUP,
21 |
22 | ///
23 | /// System key up
24 | ///
25 | WM_SYSKEYUP = (int)PInvoke.WM_SYSKEYUP,
26 |
27 | ///
28 | /// System key down
29 | ///
30 | WM_SYSKEYDOWN = (int)PInvoke.WM_SYSKEYDOWN
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/NativeMethods.txt:
--------------------------------------------------------------------------------
1 | EnumThreadWindows
2 | GetWindowText
3 | GetWindowTextLength
4 |
5 | WM_KEYDOWN
6 | WM_KEYUP
7 | WM_SYSKEYDOWN
8 | WM_SYSKEYUP
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/PluginInitContext.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin
2 | {
3 | ///
4 | /// Carries data passed to a plugin when it gets initialized.
5 | ///
6 | public class PluginInitContext
7 | {
8 | ///
9 | /// Default constructor.
10 | ///
11 | public PluginInitContext()
12 | {
13 | }
14 |
15 | ///
16 | /// Constructor.
17 | ///
18 | ///
19 | ///
20 | public PluginInitContext(PluginMetadata currentPluginMetadata, IPublicAPI api)
21 | {
22 | CurrentPluginMetadata = currentPluginMetadata;
23 | API = api;
24 | }
25 |
26 | ///
27 | /// The metadata of the plugin being initialized.
28 | ///
29 | public PluginMetadata CurrentPluginMetadata { get; internal set; }
30 |
31 | ///
32 | /// Public APIs for plugin invocation
33 | ///
34 | public IPublicAPI API { get; set; }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("Flow.Launcher")]
4 | [assembly: InternalsVisibleTo("Flow.Launcher.Core")]
5 | [assembly: InternalsVisibleTo("Flow.Launcher.Test")]
6 |
--------------------------------------------------------------------------------
/Flow.Launcher.Plugin/README.md:
--------------------------------------------------------------------------------
1 | Reference this package to develop a plugin for [Flow Launcher](https://github.com/Flow-Launcher/Flow.Launcher).
2 |
3 | Useful links:
4 |
5 | * [General plugin development guide](https://www.flowlauncher.com/docs/#/plugin-dev)
6 | * [.Net plugin development guide](https://www.flowlauncher.com/docs/#/develop-dotnet-plugins)
7 | * [Package API Reference](https://www.flowlauncher.com/docs/#/API-Reference/Flow.Launcher.Plugin)
8 |
--------------------------------------------------------------------------------
/Flow.Launcher.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | SDK
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/BadgePositionConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace Flow.Launcher.Converters;
6 |
7 | public class BadgePositionConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
10 | {
11 | if (value is double actualWidth && parameter is string param)
12 | {
13 | double offset = actualWidth / 2 - 8;
14 |
15 | if (param == "1") // X-Offset
16 | {
17 | return offset + 2;
18 | }
19 | else if (param == "2") // Y-Offset
20 | {
21 | return offset + 2;
22 | }
23 | }
24 |
25 | return 0.0;
26 | }
27 |
28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
29 | {
30 | throw new NotSupportedException();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/DateTimeFormatToNowConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace Flow.Launcher.Converters;
6 |
7 | public class DateTimeFormatToNowConverter : IValueConverter
8 | {
9 |
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | return value is not string format ? null : DateTime.Now.ToString(format);
13 | }
14 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
15 | {
16 | throw new NotImplementedException();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/DiameterToCenterPointConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Data;
5 |
6 | namespace Flow.Launcher.Converters;
7 |
8 | public class DiameterToCenterPointConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | if (value is double d)
13 | {
14 | return new Point(d / 2, d / 2);
15 | }
16 |
17 | return new Point(0, 0);
18 | }
19 |
20 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
21 | {
22 | throw new NotSupportedException();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/IconRadiusConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace Flow.Launcher.Converters;
6 |
7 | public class IconRadiusConverter : IMultiValueConverter
8 | {
9 | public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
10 | {
11 | if (values is not [double size, bool isIconCircular])
12 | throw new ArgumentException("IconRadiusConverter must have 2 parameters: [double, bool]");
13 |
14 | return isIconCircular ? size / 2 : size;
15 | }
16 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
17 | {
18 | throw new NotSupportedException();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Controls;
5 | using System.Windows.Data;
6 |
7 | namespace Flow.Launcher.Converters;
8 |
9 | [ValueConversion(typeof(bool), typeof(Visibility))]
10 | public class OpenResultHotkeyVisibilityConverter : IValueConverter
11 | {
12 | private const int MaxVisibleHotkeys = 10;
13 |
14 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
15 | {
16 | var number = int.MaxValue;
17 |
18 | if (value is ListBoxItem listBoxItem
19 | && ItemsControl.ItemsControlFromItemContainer(listBoxItem) is ListBox listBox)
20 | number = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1;
21 |
22 | return number <= MaxVisibleHotkeys ? Visibility.Visible : Visibility.Collapsed;
23 | }
24 |
25 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new InvalidOperationException();
26 | }
27 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/OrdinalConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Controls;
4 | using System.Windows.Data;
5 |
6 | namespace Flow.Launcher.Converters;
7 |
8 | public class OrdinalConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | if (value is not ListBoxItem listBoxItem
13 | || ItemsControl.ItemsControlFromItemContainer(listBoxItem) is not ListBox listBox)
14 | {
15 | return 0;
16 | }
17 |
18 | var res = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1;
19 | return res == 10 ? 0 : res; // 10th item => HOTKEY+0
20 |
21 | }
22 |
23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new InvalidOperationException();
24 | }
25 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/SizeRatioConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Data;
2 | using System;
3 | using System.Globalization;
4 | using System.Windows;
5 |
6 | namespace Flow.Launcher.Converters;
7 |
8 | public class SizeRatioConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | if (value is double size && parameter is string ratioString)
13 | {
14 | if (double.TryParse(ratioString, NumberStyles.Any, CultureInfo.InvariantCulture, out double ratio))
15 | {
16 | return size * ratio;
17 | }
18 | }
19 |
20 | return 0.0;
21 | }
22 |
23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
24 | {
25 | throw new NotSupportedException();
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/StringToKeyBindingConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using System.Windows.Input;
5 |
6 | namespace Flow.Launcher.Converters;
7 |
8 | class StringToKeyBindingConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | if (parameter is not string mode || value is not string hotkeyStr)
13 | return null;
14 |
15 | var converter = new KeyGestureConverter();
16 | var key = (KeyGesture)converter.ConvertFromString(hotkeyStr);
17 | return mode switch
18 | {
19 | "key" => key?.Key,
20 | "modifiers" => key?.Modifiers,
21 | _ => null
22 | };
23 | }
24 |
25 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
26 | {
27 | throw new NotImplementedException();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Flow.Launcher/Converters/TextConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.Converters;
7 |
8 | public class TextConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | var id = value?.ToString();
13 | var translationKey = id switch
14 | {
15 | PluginStoreItemViewModel.NewRelease => "pluginStore_NewRelease",
16 | PluginStoreItemViewModel.RecentlyUpdated => "pluginStore_RecentlyUpdated",
17 | PluginStoreItemViewModel.None => "pluginStore_None",
18 | PluginStoreItemViewModel.Installed => "pluginStore_Installed",
19 | _ => null
20 | };
21 |
22 | if (translationKey is null)
23 | return id;
24 |
25 | return App.API.GetTranslation(translationKey);
26 | }
27 |
28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new InvalidOperationException();
29 | }
30 |
--------------------------------------------------------------------------------
/Flow.Launcher/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Flow.Launcher/Helper/SyntaxSugars.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Helper;
4 |
5 | public static class SyntaxSugars
6 | {
7 | public static TResult CallOrRescueDefault(Func callback)
8 | {
9 | return CallOrRescueDefault(callback, default(TResult));
10 | }
11 |
12 | public static TResult CallOrRescueDefault(Func callback, TResult def)
13 | {
14 | try
15 | {
16 | return callback();
17 | }
18 | catch
19 | {
20 | return def;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Flow.Launcher/Helper/WindowsMediaPlayerHelper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 |
3 | namespace Flow.Launcher.Helper;
4 | internal static class WindowsMediaPlayerHelper
5 | {
6 | internal static bool IsWindowsMediaPlayerInstalled()
7 | {
8 | using var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\MediaPlayer");
9 | return key?.GetValue("Installation Directory") != null;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Browser.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Error.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Exclamation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Exclamation.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Information.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Link.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/New Message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/New Message.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/Question.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/Question.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/app.ico
--------------------------------------------------------------------------------
/Flow.Launcher/Images/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/app.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/app_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/app_error.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/app_missing_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/app_missing_img.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/calculator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/calculator.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/cancel.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/close.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/cmd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/cmd.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/color.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/copy.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/dev.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/dev.ico
--------------------------------------------------------------------------------
/Flow.Launcher/Images/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/down.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/file.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/find.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/find.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/folder.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/gamemode.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/gamemode.ico
--------------------------------------------------------------------------------
/Flow.Launcher/Images/history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/history.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/illustration_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/illustration_01.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/illustration_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/illustration_02.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/image.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/info.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/keyboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/keyboard.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/loading.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/lock.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/logoff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/logoff.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/ok.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/open.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/page_img01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/page_img01.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/plugin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/plugin.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/plugins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/plugins.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/proxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/proxy.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/recyclebin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/recyclebin.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/restart.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/search.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/settings.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/shutdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/shutdown.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/sleep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/sleep.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/store.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/store.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/theme.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/up.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/update.png
--------------------------------------------------------------------------------
/Flow.Launcher/Images/wizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Images/wizard.png
--------------------------------------------------------------------------------
/Flow.Launcher/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None,
5 | ResourceDictionaryLocation.SourceAssembly
6 | )]
7 |
--------------------------------------------------------------------------------
/Flow.Launcher/Properties/PublishProfiles/Net7.0-SelfContained.pubxml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | FileSystem
8 | Release
9 | Any CPU
10 | net7.0-windows10.0.19041.0
11 | ..\Output\Release\
12 | win-x64
13 | true
14 | False
15 | False
16 | False
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Flow.Launcher/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | https://github.com/Flow-Launcher/Flow.Launcher
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/CardGroupCardStyleSelector.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 |
4 | namespace Flow.Launcher.Resources.Controls;
5 |
6 | public class CardGroupCardStyleSelector : StyleSelector
7 | {
8 | public Style FirstStyle { get; set; }
9 | public Style MiddleStyle { get; set; }
10 | public Style LastStyle { get; set; }
11 |
12 | public override Style SelectStyle(object item, DependencyObject container)
13 | {
14 | var itemsControl = ItemsControl.ItemsControlFromItemContainer(container);
15 | var index = itemsControl.ItemContainerGenerator.IndexFromContainer(container);
16 |
17 | if (index == 0) return FirstStyle;
18 | if (index == itemsControl.Items.Count - 1) return LastStyle;
19 | return MiddleStyle;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/HyperLink.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/HyperLink.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 | using System.Windows.Navigation;
4 |
5 | namespace Flow.Launcher.Resources.Controls;
6 |
7 | public partial class HyperLink : UserControl
8 | {
9 | public static readonly DependencyProperty UriProperty = DependencyProperty.Register(
10 | nameof(Uri), typeof(string), typeof(HyperLink), new PropertyMetadata(default(string))
11 | );
12 |
13 | public string Uri
14 | {
15 | get => (string)GetValue(UriProperty);
16 | set => SetValue(UriProperty, value);
17 | }
18 |
19 | public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
20 | nameof(Text), typeof(string), typeof(HyperLink), new PropertyMetadata(default(string))
21 | );
22 |
23 | public string Text
24 | {
25 | get => (string)GetValue(TextProperty);
26 | set => SetValue(TextProperty, value);
27 | }
28 |
29 | public HyperLink()
30 | {
31 | InitializeComponent();
32 | }
33 |
34 | private void Hyperlink_OnRequestNavigate(object sender, RequestNavigateEventArgs e)
35 | {
36 | App.API.OpenUrl(e.Uri);
37 | e.Handled = true;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/InstalledPluginDisplay.xaml.cs:
--------------------------------------------------------------------------------
1 | using ModernWpf.Controls;
2 |
3 | namespace Flow.Launcher.Resources.Controls;
4 |
5 | public partial class InstalledPluginDisplay
6 | {
7 | public InstalledPluginDisplay()
8 | {
9 | InitializeComponent();
10 | }
11 |
12 | // This is used for PriorityControl to force its value to be 0 when the user clears the value
13 | private void NumberBox_OnValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args)
14 | {
15 | if (double.IsNaN(args.NewValue))
16 | {
17 | sender.Value = 0;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/InstalledPluginDisplayBottomData.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Flow.Launcher.Resources.Controls;
4 |
5 | public partial class InstalledPluginDisplayBottomData : UserControl
6 | {
7 | public InstalledPluginDisplayBottomData()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Controls/InstalledPluginDisplayKeyword.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 |
3 | namespace Flow.Launcher.Resources.Controls;
4 |
5 | public partial class InstalledPluginDisplayKeyword : UserControl
6 | {
7 | public InstalledPluginDisplayKeyword()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/MarkupExtensions/VisibleWhenExtension.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Data;
3 |
4 | namespace Flow.Launcher.Resources.MarkupExtensions;
5 |
6 | #nullable enable
7 |
8 | public class VisibleWhenExtension : CollapsedWhenExtension
9 | {
10 | protected override Visibility DefaultVisibility => Visibility.Collapsed;
11 | protected override Visibility InvertedVisibility => Visibility.Visible;
12 |
13 | public VisibleWhenExtension(Binding when) : base(when) { }
14 | }
15 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Pages/WelcomePage3.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.Infrastructure.UserSettings;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.Resources.Pages
7 | {
8 | public partial class WelcomePage3
9 | {
10 | public Settings Settings { get; } = Ioc.Default.GetRequiredService();
11 | private readonly WelcomeViewModel _viewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page number
17 | _viewModel.PageNum = 3;
18 |
19 | if (!IsInitialized)
20 | {
21 | InitializeComponent();
22 | }
23 | base.OnNavigatedTo(e);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Pages/WelcomePage4.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.Infrastructure.UserSettings;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.Resources.Pages
7 | {
8 | public partial class WelcomePage4
9 | {
10 | public Settings Settings { get; } = Ioc.Default.GetRequiredService();
11 | private readonly WelcomeViewModel _viewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page number
17 | _viewModel.PageNum = 4;
18 |
19 | if (!IsInitialized)
20 | {
21 | InitializeComponent();
22 | }
23 | base.OnNavigatedTo(e);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/Segoe Fluent Icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Resources/Segoe Fluent Icons.ttf
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Resources/app.ico
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/dev.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Resources/dev.ico
--------------------------------------------------------------------------------
/Flow.Launcher/Resources/open.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/Resources/open.wav
--------------------------------------------------------------------------------
/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.SettingPages.ViewModels;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.SettingPages.Views;
7 |
8 | public partial class SettingsPaneGeneral
9 | {
10 | private SettingsPaneGeneralViewModel _viewModel = null!;
11 | private readonly SettingWindowViewModel _settingViewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page type
17 | _settingViewModel.PageType = typeof(SettingsPaneGeneral);
18 |
19 | // If the navigation is not triggered by button click, view model will be null again
20 | if (_viewModel == null)
21 | {
22 | _viewModel = Ioc.Default.GetRequiredService();
23 | DataContext = _viewModel;
24 | }
25 | if (!IsInitialized)
26 | {
27 | InitializeComponent();
28 | }
29 | base.OnNavigatedTo(e);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.SettingPages.ViewModels;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.SettingPages.Views;
7 |
8 | public partial class SettingsPaneHotkey
9 | {
10 | private SettingsPaneHotkeyViewModel _viewModel = null!;
11 | private readonly SettingWindowViewModel _settingViewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page type
17 | _settingViewModel.PageType = typeof(SettingsPaneHotkey);
18 |
19 | // If the navigation is not triggered by button click, view model will be null again
20 | if (_viewModel == null)
21 | {
22 | _viewModel = Ioc.Default.GetRequiredService();
23 | DataContext = _viewModel;
24 | }
25 | if (!IsInitialized)
26 | {
27 | InitializeComponent();
28 | }
29 | base.OnNavigatedTo(e);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.SettingPages.ViewModels;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.SettingPages.Views;
7 |
8 | public partial class SettingsPaneProxy
9 | {
10 | private SettingsPaneProxyViewModel _viewModel = null!;
11 | private readonly SettingWindowViewModel _settingViewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page type
17 | _settingViewModel.PageType = typeof(SettingsPaneProxy);
18 |
19 | // If the navigation is not triggered by button click, view model will be null again
20 | if (_viewModel == null)
21 | {
22 | _viewModel = Ioc.Default.GetRequiredService();
23 | DataContext = _viewModel;
24 | }
25 | if (!IsInitialized)
26 | {
27 | InitializeComponent();
28 | }
29 | base.OnNavigatedTo(e);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Flow.Launcher/SettingPages/Views/SettingsPaneTheme.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Navigation;
2 | using CommunityToolkit.Mvvm.DependencyInjection;
3 | using Flow.Launcher.SettingPages.ViewModels;
4 | using Flow.Launcher.ViewModel;
5 |
6 | namespace Flow.Launcher.SettingPages.Views;
7 |
8 | public partial class SettingsPaneTheme
9 | {
10 | private SettingsPaneThemeViewModel _viewModel = null!;
11 | private readonly SettingWindowViewModel _settingViewModel = Ioc.Default.GetRequiredService();
12 |
13 | protected override void OnNavigatedTo(NavigationEventArgs e)
14 | {
15 | // Sometimes the navigation is not triggered by button click,
16 | // so we need to reset the page type
17 | _settingViewModel.PageType = typeof(SettingsPaneTheme);
18 |
19 | // If the navigation is not triggered by button click, view model will be null again
20 | if (_viewModel == null)
21 | {
22 | _viewModel = Ioc.Default.GetRequiredService();
23 | DataContext = _viewModel;
24 | }
25 | if (!IsInitialized)
26 | {
27 | InitializeComponent();
28 | }
29 | base.OnNavigatedTo(e);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Flow.Launcher/Storage/QueryHistory.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text.Json.Serialization;
5 |
6 | namespace Flow.Launcher.Storage
7 | {
8 | public class History
9 | {
10 | [JsonInclude]
11 | public List Items { get; private set; } = new List();
12 |
13 | private int _maxHistory = 300;
14 |
15 | public void Add(string query)
16 | {
17 | if (string.IsNullOrEmpty(query)) return;
18 | if (Items.Count > _maxHistory)
19 | {
20 | Items.RemoveAt(0);
21 | }
22 |
23 | if (Items.Count > 0 && Items.Last().Query == query)
24 | {
25 | Items.Last().ExecutedDateTime = DateTime.Now;
26 | }
27 | else
28 | {
29 | Items.Add(new HistoryItem
30 | {
31 | Query = query,
32 | ExecutedDateTime = DateTime.Now
33 | });
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Flow.Launcher/Themes/ThemeBuilder/ThemeConvertor.py:
--------------------------------------------------------------------------------
1 | import os,plistlib
2 |
3 | def convert(path,templatePath):
4 | pl = plistlib.readPlist(path)
5 | with open(templatePath, 'r') as content_file:
6 | template = content_file.read()
7 | for key in pl:
8 | if "rgba" in pl[key]:
9 | template = template.replace("{%"+key+"%}",tohex(pl[key].replace("rgba","rgb")))
10 | f = open(path.replace(".alfredtheme",".xaml"),'w')
11 | f.write(template)
12 | f.close()
13 |
14 |
15 | def tohex(string):
16 | string = string[4:]
17 | split = string.split(",")
18 | split[2] = ''.join(split[2].split(")")[0])
19 | r = int(split[0])
20 | g = int(split[1])
21 | b = int(split[2])
22 | tu = (r, g, b)
23 | return '#%02x%02x%02x' % tu
24 |
25 | #print tohex("rgb(255,255,255,0.50)")
26 | print convert("Night.alfredtheme","Light.xaml")
27 |
--------------------------------------------------------------------------------
/Flow.Launcher/ViewModel/ResultsForUpdate.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin;
2 | using System.Collections.Generic;
3 | using System.Threading;
4 |
5 | namespace Flow.Launcher.ViewModel
6 | {
7 | public record struct ResultsForUpdate(
8 | IReadOnlyList Results,
9 | PluginMetadata Metadata,
10 | Query Query,
11 | CancellationToken Token,
12 | bool ReSelectFirstResult = true,
13 | bool ShouldClearExistingResults = false)
14 | {
15 | public string ID { get; } = Metadata.ID;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Flow.Launcher/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Flow.Launcher/app.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2019 Flow-Launcher
4 | Copyright (c) 2015 Wox
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy of
7 | this software and associated documentation files (the "Software"), to deal in
8 | the Software without restriction, including without limitation the rights to
9 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
10 | the Software, and to permit persons to whom the Software is furnished to do so,
11 | subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromeBookmarkLoader.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.BrowserBookmark.Models;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 |
6 | namespace Flow.Launcher.Plugin.BrowserBookmark;
7 |
8 | public class ChromeBookmarkLoader : ChromiumBookmarkLoader
9 | {
10 | public override List GetBookmarks()
11 | {
12 | return LoadChromeBookmarks();
13 | }
14 |
15 | private List LoadChromeBookmarks()
16 | {
17 | var bookmarks = new List();
18 | var platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
19 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome\User Data"), "Google Chrome"));
20 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome SxS\User Data"), "Google Chrome Canary"));
21 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Chromium\User Data"), "Chromium"));
22 | return bookmarks;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/CustomChromiumBookmarkLoader.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.BrowserBookmark.Models;
2 | using System.Collections.Generic;
3 |
4 | namespace Flow.Launcher.Plugin.BrowserBookmark;
5 |
6 | public class CustomChromiumBookmarkLoader : ChromiumBookmarkLoader
7 | {
8 | public CustomChromiumBookmarkLoader(CustomBrowser browser)
9 | {
10 | BrowserName = browser.Name;
11 | BrowserDataPath = browser.DataDirectoryPath;
12 | }
13 | public string BrowserDataPath { get; init; }
14 | public string BookmarkFilePath { get; init; }
15 | public string BrowserName { get; init; }
16 |
17 | public override List GetBookmarks() => BrowserDataPath != null ? LoadBookmarks(BrowserDataPath, BrowserName) : LoadBookmarksFromFile(BookmarkFilePath, BrowserName);
18 | }
19 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/CustomFirefoxBookmarkLoader.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 | using Flow.Launcher.Plugin.BrowserBookmark.Models;
4 |
5 | namespace Flow.Launcher.Plugin.BrowserBookmark;
6 |
7 | public class CustomFirefoxBookmarkLoader : FirefoxBookmarkLoaderBase
8 | {
9 | public CustomFirefoxBookmarkLoader(CustomBrowser browser)
10 | {
11 | BrowserName = browser.Name;
12 | BrowserDataPath = browser.DataDirectoryPath;
13 | }
14 |
15 | ///
16 | /// Path to places.sqlite
17 | ///
18 | public string BrowserDataPath { get; init; }
19 |
20 | public string BrowserName { get; init; }
21 |
22 | public override List GetBookmarks()
23 | {
24 | return GetBookmarksFromPath(Path.Combine(BrowserDataPath, "places.sqlite"));
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/EdgeBookmarkLoader.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.BrowserBookmark.Models;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 |
6 | namespace Flow.Launcher.Plugin.BrowserBookmark;
7 |
8 | public class EdgeBookmarkLoader : ChromiumBookmarkLoader
9 | {
10 | private List LoadEdgeBookmarks()
11 | {
12 | var bookmarks = new List();
13 | var platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
14 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Microsoft\Edge\User Data"), "Microsoft Edge"));
15 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Microsoft\Edge Dev\User Data"), "Microsoft Edge Dev"));
16 | bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Microsoft\Edge SxS\User Data"), "Microsoft Edge Canary"));
17 |
18 | return bookmarks;
19 | }
20 |
21 | public override List GetBookmarks() => LoadEdgeBookmarks();
22 | }
23 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/IBookmarkLoader.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.BrowserBookmark.Models;
2 | using System.Collections.Generic;
3 |
4 | namespace Flow.Launcher.Plugin.BrowserBookmark;
5 |
6 | public interface IBookmarkLoader
7 | {
8 | public List GetBookmarks();
9 | }
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Images/bookmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Images/bookmark.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Images/copylink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Images/copylink.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Models/Bookmark.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Flow.Launcher.Plugin.BrowserBookmark.Models;
4 |
5 | // Source may be important in the future
6 | public record Bookmark(string Name, string Url, string Source = "")
7 | {
8 | public override int GetHashCode()
9 | {
10 | var hashName = Name?.GetHashCode() ?? 0;
11 | var hashUrl = Url?.GetHashCode() ?? 0;
12 | return hashName ^ hashUrl;
13 | }
14 |
15 | public virtual bool Equals(Bookmark other)
16 | {
17 | return other != null && Name == other.Name && Url == other.Url;
18 | }
19 |
20 | public List CustomBrowsers { get; set; } = new();
21 | public string FaviconPath { get; set; } = string.Empty;
22 | }
23 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Models/CustomBrowser.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.BrowserBookmark.Models;
2 |
3 | public class CustomBrowser : BaseModel
4 | {
5 | private string _name;
6 | private string _dataDirectoryPath;
7 | private BrowserType _browserType = BrowserType.Chromium;
8 |
9 | public string Name
10 | {
11 | get => _name;
12 | set
13 | {
14 | _name = value;
15 | OnPropertyChanged();
16 | }
17 | }
18 |
19 | public string DataDirectoryPath
20 | {
21 | get => _dataDirectoryPath;
22 | set
23 | {
24 | _dataDirectoryPath = value;
25 | OnPropertyChanged();
26 | }
27 | }
28 |
29 | public BrowserType BrowserType
30 | {
31 | get => _browserType;
32 | set
33 | {
34 | _browserType = value;
35 | OnPropertyChanged();
36 | }
37 | }
38 | }
39 |
40 | public enum BrowserType
41 | {
42 | Chromium,
43 | Firefox,
44 | }
45 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Models/Settings.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 |
3 | namespace Flow.Launcher.Plugin.BrowserBookmark.Models;
4 |
5 | public class Settings : BaseModel
6 | {
7 | public bool OpenInNewBrowserWindow { get; set; } = true;
8 |
9 | public string BrowserPath { get; set; }
10 |
11 | public bool LoadChromeBookmark { get; set; } = true;
12 | public bool LoadFirefoxBookmark { get; set; } = true;
13 | public bool LoadEdgeBookmark { get; set; } = true;
14 |
15 | public ObservableCollection CustomChromiumBrowsers { get; set; } = new();
16 | }
17 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "0ECADE17459B49F587BF81DC3A125110",
3 | "ActionKeyword": "b",
4 | "Name": "Browser Bookmarks",
5 | "Description": "Search your browser bookmarks",
6 | "Author": "qianlifeng, Ioannis G.",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.BrowserBookmark.dll",
11 | "IcoPath": "Images\\bookmark.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/DecimalSeparator.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using Flow.Launcher.Core.Resource;
3 |
4 | namespace Flow.Launcher.Plugin.Calculator
5 | {
6 | [TypeConverter(typeof(LocalizationConverter))]
7 | public enum DecimalSeparator
8 | {
9 | [LocalizedDescription("flowlauncher_plugin_calculator_decimal_seperator_use_system_locale")]
10 | UseSystemLocale,
11 |
12 | [LocalizedDescription("flowlauncher_plugin_calculator_decimal_seperator_dot")]
13 | Dot,
14 |
15 | [LocalizedDescription("flowlauncher_plugin_calculator_decimal_seperator_comma")]
16 | Comma
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/Images/calculator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Calculator/Images/calculator.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/Settings.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace Flow.Launcher.Plugin.Calculator
3 | {
4 | public class Settings
5 | {
6 | public DecimalSeparator DecimalSeparator { get; set; } = DecimalSeparator.UseSystemLocale;
7 | public int MaxDecimalPlaces { get; set; } = 10;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/ViewModels/SettingsViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace Flow.Launcher.Plugin.Calculator.ViewModels
5 | {
6 | public class SettingsViewModel : BaseModel
7 | {
8 | public SettingsViewModel(Settings settings)
9 | {
10 | Settings = settings;
11 | }
12 |
13 | public Settings Settings { get; init; }
14 |
15 | public IEnumerable MaxDecimalPlacesRange => Enumerable.Range(1, 20);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/Views/CalculatorSettings.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Controls;
3 | using Flow.Launcher.Plugin.Calculator.ViewModels;
4 |
5 | namespace Flow.Launcher.Plugin.Calculator.Views
6 | {
7 | ///
8 | /// Interaction logic for CalculatorSettings.xaml
9 | ///
10 | public partial class CalculatorSettings : UserControl
11 | {
12 | private readonly SettingsViewModel _viewModel;
13 | private readonly Settings _settings;
14 |
15 | public CalculatorSettings(SettingsViewModel viewModel)
16 | {
17 | _viewModel = viewModel;
18 | _settings = viewModel.Settings;
19 | DataContext = viewModel;
20 | InitializeComponent();
21 | }
22 |
23 | private void CalculatorSettings_Loaded(object sender, RoutedEventArgs e)
24 | {
25 | DecimalSeparatorComboBox.SelectedItem = _settings.DecimalSeparator;
26 | MaxDecimalPlaces.SelectedItem = _settings.MaxDecimalPlaces;
27 | }
28 | }
29 |
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Calculator/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "CEA0FDFC6D3B4085823D60DC76F28855",
3 | "ActionKeyword": "*",
4 | "Name": "Calculator",
5 | "Description": "Provide mathematical calculations.(Try 5*3-2 in Flow Launcher)",
6 | "Author": "cxfksword",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.Calculator.dll",
11 | "IcoPath": "Images\\calculator.png"
12 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/x64/Everything.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/x64/Everything.dll
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/x86/Everything.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/x86/Everything.dll
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Exceptions/SearchException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Exceptions
4 | {
5 | public class SearchException : Exception
6 | {
7 | public string EngineName { get; }
8 | public SearchException(string engineName, string message) : base(message)
9 | {
10 | EngineName = engineName;
11 | }
12 |
13 | public SearchException(string engineName, string message, Exception innerException) : base(message, innerException)
14 | {
15 | EngineName = engineName;
16 | }
17 |
18 | public override string ToString()
19 | {
20 | return $"{EngineName} Search Exception:\n {base.ToString()}";
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Helper/SortOptionTranslationHelper.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.Everything.Everything;
2 | using JetBrains.Annotations;
3 | using System;
4 |
5 | namespace Flow.Launcher.Plugin.Explorer.Helper;
6 |
7 | public static class SortOptionTranslationHelper
8 | {
9 | [CanBeNull]
10 | public static IPublicAPI API { get; internal set; }
11 |
12 | public static string GetTranslatedName(this SortOption sortOption)
13 | {
14 | const string prefix = "flowlauncher_plugin_everything_sort_by_";
15 |
16 | ArgumentNullException.ThrowIfNull(API);
17 |
18 | var enumName = Enum.GetName(sortOption);
19 | var splited = enumName!.Split('_');
20 | var name = string.Join('_', splited[..^1]);
21 | var direction = splited[^1];
22 |
23 | return $"{API.GetTranslation(prefix + name.ToLower())} {API.GetTranslation(prefix + direction.ToLower())}";
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/context_menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/context_menu.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/copy.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/deletefilefolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/deletefilefolder.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/error.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/everything_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/everything_error.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/excludeindexpath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/excludeindexpath.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/explorer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/explorer.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/file.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/folder.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/index_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/index_error.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/index_error2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/index_error2.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/quickaccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/quickaccess.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/removequickaccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/removequickaccess.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/robot_error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/robot_error.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/user.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Images/windowsindexingoptions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Explorer/Images/windowsindexingoptions.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchOption.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.Everything.Everything;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything
4 | {
5 | public record struct EverythingSearchOption(
6 | string Keyword,
7 | SortOption SortOption,
8 | bool IsContentSearch = false,
9 | string ContentSearchKeyword = default,
10 | string ParentPath = default,
11 | bool IsRecursive = true,
12 | int Offset = 0,
13 | int MaxCount = 100,
14 | bool IsFullPathSearch = true,
15 | bool IsRunCounterEnabled = true
16 | );
17 | }
18 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/CreateThreadException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class CreateThreadException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/CreateWindowException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class CreateWindowException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/IPCErrorException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class IPCErrorException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/InvalidCallException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class InvalidCallException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/InvalidIndexException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class InvalidIndexException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/MemoryErrorException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class MemoryErrorException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/Exceptions/RegisterClassExException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Flow.Launcher.Plugin.Explorer.Search.Everything.Exceptions
4 | {
5 | ///
6 | ///
7 | ///
8 | public class RegisterClassExException : ApplicationException
9 | {
10 | }
11 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/SortOption.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.Everything.Everything
2 | {
3 | public enum SortOption : uint
4 | {
5 | NAME_ASCENDING = 1u,
6 | NAME_DESCENDING = 2u,
7 | PATH_ASCENDING = 3u,
8 | PATH_DESCENDING = 4u,
9 | SIZE_ASCENDING = 5u,
10 | SIZE_DESCENDING = 6u,
11 | EXTENSION_ASCENDING = 7u,
12 | EXTENSION_DESCENDING = 8u,
13 | TYPE_NAME_ASCENDING = 9u,
14 | TYPE_NAME_DESCENDING = 10u,
15 | DATE_CREATED_ASCENDING = 11u,
16 | DATE_CREATED_DESCENDING = 12u,
17 | DATE_MODIFIED_ASCENDING = 13u,
18 | DATE_MODIFIED_DESCENDING = 14u,
19 | ATTRIBUTES_ASCENDING = 15u,
20 | ATTRIBUTES_DESCENDING = 16u,
21 | FILE_LIST_FILENAME_ASCENDING = 17u,
22 | FILE_LIST_FILENAME_DESCENDING = 18u,
23 | RUN_COUNT_DESCENDING = 20u,
24 | DATE_RECENTLY_CHANGED_ASCENDING = 21u,
25 | DATE_RECENTLY_CHANGED_DESCENDING = 22u,
26 | DATE_ACCESSED_ASCENDING = 23u,
27 | DATE_ACCESSED_DESCENDING = 24u,
28 | DATE_RUN_ASCENDING = 25u,
29 | DATE_RUN_DESCENDING = 26u
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/IProvider/IContentIndexProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 |
4 | namespace Flow.Launcher.Plugin.Explorer.Search.IProvider
5 | {
6 | public interface IContentIndexProvider
7 | {
8 | public IAsyncEnumerable ContentSearchAsync(string plainSearch, string contentSearch, CancellationToken token = default);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/IProvider/IIndexProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 |
4 | namespace Flow.Launcher.Plugin.Explorer.Search.IProvider
5 | {
6 | public interface IIndexProvider
7 | {
8 | public IAsyncEnumerable SearchAsync(string search, CancellationToken token);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/IProvider/IPathIndexProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 |
4 | namespace Flow.Launcher.Plugin.Explorer.Search.IProvider
5 | {
6 | public interface IPathIndexProvider
7 | {
8 | public IAsyncEnumerable EnumerateAsync(string path, string search, bool recursive, CancellationToken token);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLinks/AccessLink.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using System.Text.Json.Serialization;
4 |
5 | namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks
6 | {
7 | public class AccessLink
8 | {
9 | public string Path { get; set; }
10 |
11 | public ResultType Type { get; set; } = ResultType.Folder;
12 |
13 | [JsonIgnore]
14 | public string Name
15 | {
16 | get
17 | {
18 | var path = Path.EndsWith(Constants.DirectorySeparator) ? Path[0..^1] : Path;
19 |
20 | if (path.EndsWith(':'))
21 | return path[0..^1] + " Drive";
22 |
23 | return path.Split(new[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.None)
24 | .Last();
25 | }
26 | }
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchResult.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.Explorer.Search
2 | {
3 | public record struct SearchResult
4 | {
5 | public string FullPath { get; init; }
6 | public ResultType Type { get; init; }
7 | public int Score { get; init; }
8 |
9 | public bool WindowsIndexed { get; init; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/Views/Converters/EverythingEnumNameConverter.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.Everything.Everything;
2 | using Flow.Launcher.Plugin.Explorer.Helper;
3 | using System;
4 | using System.Globalization;
5 | using System.Windows.Data;
6 |
7 | namespace Flow.Launcher.Plugin.Explorer.Views.Converters;
8 |
9 | public class EnumNameConverter : IValueConverter
10 | {
11 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
12 | {
13 | return value is SortOption option ? option.GetTranslatedName() : value;
14 | }
15 |
16 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
17 | {
18 | throw new NotImplementedException();
19 | }
20 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Explorer/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "572be03c74c642baae319fc283e561a8",
3 | "ActionKeywords": [
4 | "*",
5 | "doc:",
6 | "*",
7 | "*",
8 | "*"
9 | ],
10 | "HideActionKeywordPanel": true,
11 | "Name": "Explorer",
12 | "Description": "Find and manage files and folders via Windows Search or Everything",
13 | "Author": "Jeremy Wu",
14 | "Version": "1.0.0",
15 | "Language": "csharp",
16 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
17 | "ExecuteFileName": "Flow.Launcher.Plugin.Explorer.dll",
18 | "IcoPath": "Images\\explorer.png"
19 | }
20 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Images/work.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginIndicator/Images/work.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ar.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | تفعيل كلمة مفتاحية لإجراء إضافة {0}
5 |
6 | مؤشر الإضافة
7 | يوفر اقتراحات لكلمات الإجراءات الخاصة بالإضافات
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/cs.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Aktivace pluginu {0} pomocí aktivačního příkazu
5 |
6 | Indikátor pluginu
7 | Poskytuje návrhy akcí v pluginech
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/da.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Plugin Indicator
7 | Provides plugins action words suggestions
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/de.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Aktions-Schlüsselwort für Plug-in {0} aktivieren
5 |
6 | Plug-in-Indikator
7 | Bietet Vorschläge für Aktions-Schlüsselwörter für Plug-ins
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/en.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 | Activate {0} plugin action keyword
6 |
7 | Plugin Indicator
8 | Provides plugins action words suggestions
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es-419.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Indicador de Plugins
7 | Sugiere palabras clave de plugins
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/es.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activa {0} palabra clave de acción del complemento
5 |
6 | Indicador de complementos
7 | Proporciona sugerencias de palabras de acción para los complementos
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/fr.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activer le mot-clé d'action du plugin {0}
5 |
6 | Indicateur de Plugin
7 | Fournit des suggestions de mots d'action pour les plugins
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/he.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | הפעל את מילת הפעולה של התוסף {0}
5 |
6 | מחוון תוספים
7 | מספק הצעות למילות פעולה של תוספים
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/it.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Attiva la parola chiave del plugin {0}
5 |
6 | Indicatore Plugin
7 | Fornisce suggerimenti sulle parole d'azione dei plugin
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ja.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Plugin Indicator
7 | Provides plugins action words suggestions
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ko.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {0} 플러그인의 액션 키워드
5 |
6 | 플러그인 키워드 힌트
7 | 사용중인 플러그인들의 전체 액션 키워드 목록을 보여줍니다
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nb.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Aktiver {0} programtillegg-handlingsnøkkelord
5 |
6 | Indikator for programtillegg
7 | Viser forslag til handlingsord for programtillegg
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/nl.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Plugin Indicator
7 | Provides plugins action words suggestions
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pl.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Aktywuj słowo kluczowe akcji wtyczki {0}
5 |
6 | Wskaźnik wtyczki
7 | Pokazuje podpowiedzi jakich zainstalowanych wtyczek możesz użyć
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-br.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Plugin Indicator
7 | Provides plugins action words suggestions
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/pt-pt.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Palavra-chave para ativar o plugin {0}
5 |
6 | Plugin Indicador
7 | Disponibiliza sugestões de palavras-chave para os plugins
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/ru.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Активировать {0} ключевое слово действия плагина
5 |
6 | Индикатор плагинов
7 | Предоставляет предложения слов действия плагинов
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sk.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Aktivovať plugin {0} aktivačným príkazom
5 |
6 | Plugin Indicator
7 | Ponúka návrhy pre akcie pluginov
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/sr.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Plugin Indicator
7 | Provides plugins action words suggestions
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/tr.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Eklenti Göstergesi
7 | Eklenti eylemleri hakkında kelime önerileri sunar
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/uk-UA.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Активувати {0} ключове слово дії плагіна
5 |
6 | Індикатор плагіну
7 | Надає плагінам пропозиції щодо слів дії
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/vi.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | Chỉ báo plugin
7 | Cung cấp plugin gợi ý từ hành động
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-cn.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 激活 {0} 插件的关键字
5 |
6 | 插件关键词提示
7 | 提供插件关键词搜索提示
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/zh-tw.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Activate {0} plugin action keyword
5 |
6 | 套件關鍵字提示
7 | 提供套件關鍵字搜尋提示
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "6A122269676E40EB86EB543B945932B9",
3 | "ActionKeyword": "?",
4 | "Name": "Plugin Indicator",
5 | "Description": "Provides plugin action keyword suggestions",
6 | "Author": "qianlifeng",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.PluginIndicator.dll",
11 | "IcoPath": "Images\\work.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/manifestsite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/manifestsite.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/pluginsmanager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/pluginsmanager.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/request.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/sourcecode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/sourcecode.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/zipfolder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.PluginsManager/Images/zipfolder.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.PluginsManager
2 | {
3 | internal class Settings
4 | {
5 | internal const string InstallCommand = "install";
6 |
7 | internal const string UninstallCommand = "uninstall";
8 |
9 | internal const string UpdateCommand = "update";
10 |
11 | public bool WarnFromUnknownSource { get; set; } = true;
12 |
13 | public bool AutoRestartAfterChanging { get; set; } = false;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/ViewModels/SettingsViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.PluginsManager.ViewModels
2 | {
3 | internal class SettingsViewModel
4 | {
5 | internal Settings Settings { get; set; }
6 |
7 | internal PluginInitContext Context { get; set; }
8 |
9 | public SettingsViewModel(PluginInitContext context, Settings settings)
10 | {
11 | Context = context;
12 | Settings = settings;
13 | }
14 |
15 | public bool WarnFromUnknownSource
16 | {
17 | get => Settings.WarnFromUnknownSource;
18 | set => Settings.WarnFromUnknownSource = value;
19 | }
20 |
21 | public bool AutoRestartAfterChanging
22 | {
23 | get => Settings.AutoRestartAfterChanging;
24 | set => Settings.AutoRestartAfterChanging = value;
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/Views/PluginsManagerSettings.xaml.cs:
--------------------------------------------------------------------------------
1 | using Flow.Launcher.Plugin.PluginsManager.ViewModels;
2 |
3 | namespace Flow.Launcher.Plugin.PluginsManager.Views
4 | {
5 | ///
6 | /// Interaction logic for PluginsManagerSettings.xaml
7 | ///
8 | public partial class PluginsManagerSettings
9 | {
10 | internal PluginsManagerSettings(SettingsViewModel viewModel)
11 | {
12 | InitializeComponent();
13 |
14 | DataContext = viewModel;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "9f8f9b14-2518-4907-b211-35ab6290dee7",
3 | "ActionKeywords": [
4 | "pm"
5 | ],
6 | "Name": "Plugins Manager",
7 | "Description": "Management of installing, uninstalling or updating Flow Launcher plugins",
8 | "Author": "Jeremy Wu",
9 | "Version": "1.0.0",
10 | "Language": "csharp",
11 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
12 | "ExecuteFileName": "Flow.Launcher.Plugin.PluginsManager.dll",
13 | "IcoPath": "Images\\pluginsmanager.png"
14 | }
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Images/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.ProcessKiller/Images/app.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ar.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | قاتل العمليات
5 | اقتل العمليات قيد التشغيل من Flow Launcher
6 |
7 | قتل جميع الأمثلة من "{0}"
8 | قتل عمليات {0}
9 | قتل جميع الأمثلة
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/cs.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Ukončí spuštěné procesy z Flow Launcheru
6 |
7 | ukončit všechny instance "{0}"
8 | ukončit {0} procesů
9 | ukončit všechny instance
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/da.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/de.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Laufende Prozesse aus Flow Launcher beenden
6 |
7 | Alle Instanzen von "{0}" beenden
8 | {0} Prozesse beenden
9 | Alle Instanzen beenden
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/en.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 | Process Killer
7 | Kill running processes from Flow Launcher
8 |
9 | kill all instances of "{0}"
10 | kill {0} processes
11 | kill all instances
12 |
13 | Show title for processes with visible windows
14 | Put processes with visible windows on the top
15 |
16 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/he.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | מנהל תהליכים
5 | סגור תהליכים פעילים מתוך Flow Launcher
6 |
7 | סגור את כל המופעים של "{0}"
8 | סגור {0} תהליכים
9 | סגור את כל המופעים
10 |
11 | הצג כותרת עבור תהליכים בעלי חלונות גלויים
12 | הצב תהליכים עם חלונות גלויים בחלק העליון
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/it.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Termina i processi in esecuzione da Flow Launcher
6 |
7 | termina tutte le istanze di "{0}"
8 | termina {0} processi
9 | termina tutte le istanze
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ja.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ko.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 프로세스 킬러
5 | 실행중인 프로세스를 Flow를 사용하여 종료합니다
6 |
7 | "{0}"의 모든 인스턴스를 종료
8 | {0} 프로세스 종료
9 | 모든 인스턴스 종료
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/nb.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Prosessterminerer
5 | Terminer kjørende prosesser fra Flow Launcher
6 |
7 | terminer alle forekomster av "{0}"
8 | terminer {0} processes
9 | terminer alle forekomstene
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/nl.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Zet processen met zichtbare vensters bovenaan
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/pl.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Zamykacz procesów
5 | Zamykaj uruchomione procesy z poziomu Flow Launcher
6 |
7 | zamknij wszystkie instancje "{0}"
8 | zamknij {0} procesów
9 | zamknij wszystkie instancje
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/pt-br.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/ru.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Удалятор процессов
5 | Удаление запущенных процессов из Flow Launcher
6 |
7 | удалить все экземпляры «{0}»
8 | удалить {0} процессов
9 | удалить все экземпляры
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/sk.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Ukončuje spustené procesy z Flow Launchera
6 |
7 | ukončiť všetky inštancie "{0}"
8 | ukončiť {0} procesov
9 | ukončiť všetky inštancie
10 |
11 | Zobraziť nadpis pre procesy s viditeľnými oknami
12 | Zobraziť procesy s viditeľným oknom navrchu
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/sr.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/tr.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/uk-UA.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Вбивця процесів
5 | Завершення запущених процесів через Flow Launcher
6 |
7 | вбити всі екземпляри "{0}"
8 | вбити {0} процесів
9 | вбити всі екземпляри
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/zh-cn.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 进程杀手
5 | 使用 Flow Launcher 终止正在运行的进程
6 |
7 | 杀死 {0} 的所有实例
8 | 杀死 {0} 进程
9 | 杀死所有实例
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/zh-tw.xaml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Process Killer
5 | Kill running processes from Flow Launcher
6 |
7 | kill all instances of "{0}"
8 | kill {0} processes
9 | kill all instances
10 |
11 | Show title for processes with visible windows
12 | Put processes with visible windows on the top
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/NativeMethods.txt:
--------------------------------------------------------------------------------
1 | QueryFullProcessImageName
2 | OpenProcess
3 | EnumWindows
4 | GetWindowTextLength
5 | GetWindowText
6 | IsWindowVisible
7 | GetWindowThreadProcessId
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/ProcessResult.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using Flow.Launcher.Plugin.SharedModels;
3 |
4 | namespace Flow.Launcher.Plugin.ProcessKiller
5 | {
6 | internal class ProcessResult
7 | {
8 | public ProcessResult(Process process, int score, string title, MatchResult match, string tooltip)
9 | {
10 | Process = process;
11 | Score = score;
12 | Title = title;
13 | TitleMatch = match;
14 | Tooltip = tooltip;
15 | }
16 |
17 | public Process Process { get; }
18 |
19 | public int Score { get; }
20 |
21 | public string Title { get; }
22 |
23 | public MatchResult TitleMatch { get; }
24 |
25 | public string Tooltip { get; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Readme.md:
--------------------------------------------------------------------------------
1 | Process Killer Plugin
2 | =====================
3 |
4 | A Flow-Launcher plugin that allows you to kill running processes.
5 |
6 | Based on Wox.Plugin.ProcessKiller, originally created by [cxfksword](https://github.com/cxfksword/Wox.Plugin.ProcessKiller) and improved by [theClueless](https://github.com/theClueless/Wox.Plugins/tree/master/Wox.Plugin.ProcessKiller).
7 |
8 | 
9 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.ProcessKiller
2 | {
3 | public class Settings
4 | {
5 | public bool ShowWindowTitle { get; set; } = true;
6 |
7 | public bool PutVisibleWindowProcessesTop { get; set; } = false;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/ViewModels/SettingsViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.ProcessKiller.ViewModels
2 | {
3 | public class SettingsViewModel
4 | {
5 | public Settings Settings { get; set; }
6 |
7 | public SettingsViewModel(Settings settings)
8 | {
9 | Settings = settings;
10 | }
11 |
12 | public bool ShowWindowTitle
13 | {
14 | get => Settings.ShowWindowTitle;
15 | set => Settings.ShowWindowTitle = value;
16 | }
17 |
18 | public bool PutVisibleWindowProcessesTop
19 | {
20 | get => Settings.PutVisibleWindowProcessesTop;
21 | set => Settings.PutVisibleWindowProcessesTop = value;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/Views/SettingsControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using Flow.Launcher.Plugin.ProcessKiller.ViewModels;
3 |
4 | namespace Flow.Launcher.Plugin.ProcessKiller.Views;
5 |
6 | public partial class SettingsControl : UserControl
7 | {
8 | ///
9 | /// Interaction logic for SettingsControl.xaml
10 | ///
11 | public SettingsControl(SettingsViewModel viewModel)
12 | {
13 | InitializeComponent();
14 |
15 | DataContext = viewModel;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID":"b64d0a79-329a-48b0-b53f-d658318a1bf6",
3 | "ActionKeyword":"kill",
4 | "Name":"Process Killer",
5 | "Description":"Kill running processes from Flow",
6 | "Author":"Flow-Launcher",
7 | "Version": "1.0.0",
8 | "Language":"csharp",
9 | "Website":"https://github.com/Flow-Launcher/Flow.Launcher.Plugin.ProcessKiller",
10 | "IcoPath":"Images\\app.png",
11 | "ExecuteFileName":"Flow.Launcher.Plugin.ProcessKiller.dll"
12 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Images/cmd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Program/Images/cmd.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Images/disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Program/Images/disable.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Images/folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Program/Images/folder.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Images/program.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Program/Images/program.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Program/Images/user.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/NativeMethods.txt:
--------------------------------------------------------------------------------
1 | SHGetLocalizedName
2 | LoadString
3 | LoadLibraryEx
4 | FreeLibrary
5 | ExpandEnvironmentStrings
6 | S_OK
7 | SLGP_FLAGS
8 | WIN32_FIND_DATAW
9 | SLR_FLAGS
10 | IShellLinkW
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/Programs/IProgram.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Flow.Launcher.Plugin.Program.Programs
4 | {
5 | public interface IProgram
6 | {
7 | List ContextMenus(IPublicAPI api);
8 | Result Result(string query, IPublicAPI api);
9 | string UniqueIdentifier { get; set; }
10 | string Name { get; }
11 | string Location { get; }
12 | bool Enabled { get; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/SuffixesConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 | using System.Windows.Markup;
5 |
6 | namespace Flow.Launcher.Plugin.Program
7 | {
8 | public class SuffixesConvert : MarkupExtension, IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | var text = value as string[];
13 | if (text != null)
14 | {
15 | return string.Join(Settings.SuffixSeparator, text);
16 | }
17 | else
18 | {
19 | return string.Empty;
20 | }
21 | }
22 |
23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
24 | {
25 | throw new NotSupportedException();
26 | }
27 |
28 | public override object ProvideValue(IServiceProvider serviceProvider)
29 | {
30 | return this;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Program/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "791FC278BA414111B8D1886DFE447410",
3 | "ActionKeyword": "*",
4 | "Name": "Program",
5 | "Description": "Search programs in Flow.Launcher",
6 | "Author": "qianlifeng",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.Program.dll",
11 | "IcoPath": "Images\\program.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Shell/Images/admin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Shell/Images/admin.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Shell/Images/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Shell/Images/copy.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Shell/Images/shell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Shell/Images/shell.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Shell/Images/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Shell/Images/user.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Shell/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "D409510CD0D2481F853690A07E6DC426",
3 | "ActionKeyword": ">",
4 | "Name": "Shell",
5 | "Description": "Provide executing commands from Flow Launcher",
6 | "Author": "qianlifeng",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.Shell.dll",
11 | "IcoPath": "Images\\shell.png"
12 | }
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Command.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Flow.Launcher.Plugin.Sys
4 | {
5 | public class Command : BaseModel
6 | {
7 | public string Key { get; set; }
8 |
9 | private string name;
10 | [JsonIgnore]
11 | public string Name
12 | {
13 | get => name;
14 | set
15 | {
16 | name = value;
17 | OnPropertyChanged();
18 | }
19 | }
20 |
21 | private string description;
22 | [JsonIgnore]
23 | public string Description
24 | {
25 | get => description;
26 | set
27 | {
28 | description = value;
29 | OnPropertyChanged();
30 | }
31 | }
32 |
33 | private string keyword;
34 | public string Keyword
35 | {
36 | get => keyword;
37 | set
38 | {
39 | keyword = value;
40 | OnPropertyChanged();
41 | }
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/app.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/checkupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/checkupdate.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/close.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/hibernate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/hibernate.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/indexoption.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/indexoption.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/lock.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/logoff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/logoff.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/openrecyclebin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/openrecyclebin.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/recyclebin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/recyclebin.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/restart.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/restart_advanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/restart_advanced.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/shutdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/shutdown.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/sleep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/sleep.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/Images/theme_selector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Sys/Images/theme_selector.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/NativeMethods.txt:
--------------------------------------------------------------------------------
1 | ExitWindowsEx
2 | LockWorkStation
3 | SHEmptyRecycleBin
4 | S_OK
5 | E_UNEXPECTED
6 | SetSuspendState
7 | OpenProcessToken
8 | WIN32_ERROR
9 | LookupPrivilegeValue
10 | AdjustTokenPrivileges
11 | TOKEN_PRIVILEGES
12 | SE_SHUTDOWN_NAME
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/SettingsViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.Sys
2 | {
3 | public class SettingsViewModel
4 | {
5 | public SettingsViewModel(Settings settings)
6 | {
7 | Settings = settings;
8 | }
9 |
10 | public Settings Settings { get; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Sys/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "CEA08895D2544B019B2E9C5009600DF4",
3 | "ActionKeyword": "*",
4 | "Name": "System Commands",
5 | "Description": "Provide System related commands. e.g. shutdown,lock, setting etc.",
6 | "Author": "qianlifeng",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.Sys.dll",
11 | "IcoPath": "Images\\lock.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Url/Images/url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.Url/Images/url.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Url/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.Url
2 | {
3 | public class Settings
4 | {
5 | public string BrowserPath { get; set; }
6 |
7 | public bool OpenInNewBrowserWindow { get; set; } = true;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.Url/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "0308FD86DE0A4DEE8D62B9B535370992",
3 | "ActionKeyword": "*",
4 | "Name": "URL",
5 | "Description": "Open the typed URL from Flow Launcher",
6 | "Author": "qianlifeng",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.Url.dll",
11 | "IcoPath": "Images\\url.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/baidu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/baidu.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/bing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/bing.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/copylink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/copylink.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/duckduckgo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/duckduckgo.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/facebook.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/gist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/gist.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/github.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/gmail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/gmail.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_drive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_drive.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_maps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_maps.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_translate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/google_translate.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/netflix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/netflix.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/pictures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/pictures.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/stackoverflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/stackoverflow.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/twitter.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/web_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/web_search.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/wiki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/wiki.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/wolframalpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/wolframalpha.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/yahoo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/yahoo.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/youtube.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/Images/youtubemusic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WebSearch/Images/youtubemusic.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/SettingsViewModel.cs:
--------------------------------------------------------------------------------
1 | namespace Flow.Launcher.Plugin.WebSearch
2 | {
3 | public class SettingsViewModel
4 | {
5 | public SettingsViewModel(Settings settings)
6 | {
7 | Settings = settings;
8 | }
9 |
10 | public Settings Settings { get; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/SuggestionSources/SuggestionSource.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Threading;
3 | using System.Threading.Tasks;
4 |
5 | namespace Flow.Launcher.Plugin.WebSearch.SuggestionSources
6 | {
7 | public abstract class SuggestionSource
8 | {
9 | public abstract Task> SuggestionsAsync(string query, CancellationToken token);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "565B73353DBF4806919830B9202EE3BF",
3 | "ActionKeywords": [
4 | "*",
5 | "sc",
6 | "wiki",
7 | "findicon",
8 | "facebook",
9 | "twitter",
10 | "maps",
11 | "translate",
12 | "duckduckgo",
13 | "github",
14 | "gist",
15 | "gmail",
16 | "drive",
17 | "wolframalpha",
18 | "stackoverflow",
19 | "lucky",
20 | "image",
21 | "youtube",
22 | "bing",
23 | "yahoo",
24 | "bd"
25 | ],
26 | "HideActionKeywordPanel": true,
27 | "Name": "Web Searches",
28 | "Description": "Provide the web search ability",
29 | "Author": "qianlifeng",
30 | "Version": "1.0.0",
31 | "Language": "csharp",
32 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
33 | "ExecuteFileName": "Flow.Launcher.Plugin.WebSearch.dll",
34 | "IcoPath": "Images\\web_search.png",
35 | "SearchDelayTime": 450
36 | }
37 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ContextMenuHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows;
4 |
5 | namespace Flow.Launcher.Plugin.WindowsSettings.Helper
6 | {
7 | ///
8 | /// Helper class to easier work with context menu entries
9 | ///
10 | internal static class ContextMenuHelper
11 | {
12 | ///
13 | /// Return a list with all context menu entries for the given
14 | /// Symbols taken from
15 | ///
16 | /// The result for the context menu entires
17 | /// The name of the this assembly
18 | /// A list with context menu entries
19 | internal static List GetContextMenu(in Result result, in string assemblyName)
20 | {
21 | return new List(0);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/Images/ControlPanel_Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WindowsSettings/Images/ControlPanel_Small.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/Images/WindowsSettings.light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/dd2560e729da6dee9f08ae1d43eddb4142f90844/Plugins/Flow.Launcher.Plugin.WindowsSettings/Images/WindowsSettings.light.png
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/Log.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.CompilerServices;
3 |
4 | namespace Flow.Launcher.Plugin.WindowsSettings
5 | {
6 | public static class Log
7 | {
8 | private static IPublicAPI? _api;
9 |
10 | public static void Init(IPublicAPI api)
11 | {
12 | _api = api;
13 | }
14 |
15 | public static void Exception(string message, Exception exception, Type type, [CallerMemberName] string methodName = "")
16 | {
17 | _api?.LogException(type.FullName, message, exception, methodName);
18 | }
19 |
20 | public static void Warn(string message, Type type, [CallerMemberName] string methodName = "")
21 | {
22 | _api?.LogWarn(type.FullName, message, methodName);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/README.md:
--------------------------------------------------------------------------------
1 | # Flow.Launcher.Plugin.WindowsSettings
2 | Ported from PowerToys WindowsSettings plugin
3 |
--------------------------------------------------------------------------------
/Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json:
--------------------------------------------------------------------------------
1 | {
2 | "ID": "5043CETYU6A748679OPA02D27D99677A",
3 | "ActionKeyword": "s",
4 | "Description": "Search settings inside Control Panel and Settings App",
5 | "Name": "Windows Settings",
6 | "Author": "TobiasSekan",
7 | "Version": "1.0.0",
8 | "Language": "csharp",
9 | "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
10 | "ExecuteFileName": "Flow.Launcher.Plugin.WindowsSettings.dll",
11 | "IcoPath": "Images\\WindowsSettings.light.png"
12 | }
13 |
--------------------------------------------------------------------------------
/Scripts/flowlauncher.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | FlowLauncher
5 | Flow Launcher
6 | $version$
7 | Flow-Launcher Team
8 | https://github.com/Flow-Launcher/Flow.Launcher
9 | https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher/master/Flow.Launcher/Images/app.png
10 | false
11 | Flow Launcher - Quick file search and app launcher for Windows with community-made plugins
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/SolutionAssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | #if DEBUG
5 |
6 | [assembly: AssemblyConfiguration("Debug")]
7 | [assembly: AssemblyDescription("Debug build, https://github.com/Flow-Launcher/Flow.Launcher")]
8 | #else
9 | [assembly: AssemblyConfiguration("Release")]
10 | [assembly: AssemblyDescription("Release build, https://github.com/Flow-Launcher/Flow.Launcher")]
11 | #endif
12 |
13 | [assembly: AssemblyCompany("Flow Launcher")]
14 | [assembly: AssemblyProduct("Flow Launcher")]
15 | [assembly: AssemblyCopyright("The MIT License (MIT)")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 | [assembly: ComVisible(false)]
19 | [assembly: AssemblyVersion("1.0.0")]
20 | [assembly: AssemblyFileVersion("1.0.0")]
21 | [assembly: AssemblyInformationalVersion("1.0.0")]
22 |
--------------------------------------------------------------------------------
/attribution.md:
--------------------------------------------------------------------------------
1 | Flow's roots came from a rebrand of the [JJW24/Wox fork](https://github.com/jjw24/Wox/issues/156) and [WoX](https://github.com/Wox-launcher/Wox).
2 |
3 | A big thank you and all credits to [Bao](https://github.com/bao-qian), the author of WoX, and its contributors for all the amazing work.
4 |
5 | The JJW24/Wox fork started adding new changes on top of main WoX repo's code base from release v1.3.524.
6 | Flow is a continuation of the work from JJW24/Wox.
7 |
--------------------------------------------------------------------------------
/azure-pipelines.yml:
--------------------------------------------------------------------------------
1 | # .NET Desktop
2 | # Build and run tests for .NET Desktop or Windows classic desktop solutions.
3 | # Add steps that publish symbols, save build artifacts, and more:
4 | # https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
5 |
6 | trigger:
7 | - master
8 | - dev
9 |
10 | pool:
11 | vmImage: 'windows-2019' #'due to windows SDK dependency for building UWP project'
12 |
13 | variables:
14 | solution: '**/*.sln'
15 | buildPlatform: 'Any CPU'
16 | buildConfiguration: 'Release'
17 |
18 | steps:
19 | - task: UseDotNet@2
20 | displayName: 'Install .NET Core sdk'
21 | inputs:
22 | packageType: sdk
23 | version: 3.1.100
24 | installationPath: $(Agent.ToolsDirectory)/dotnet
25 |
26 | - task: NuGetToolInstaller@1
27 |
28 | - task: NuGetCommand@2
29 | inputs:
30 | restoreSolution: '$(solution)'
31 |
32 | - task: VSBuild@1
33 | inputs:
34 | solution: '$(solution)'
35 | platform: '$(buildPlatform)'
36 | configuration: '$(buildConfiguration)'
37 |
38 | - task: VSTest@2
39 | inputs:
40 | platform: '$(buildPlatform)'
41 | configuration: '$(buildConfiguration)'
42 |
--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
1 | files:
2 | - source: Languages/en.xaml
3 | translation: /%original_path%/%two_letters_code%.xaml
4 | - source: Properties/Resources.resx
5 | translation: /%original_path%/Resources.%locale%.resx
6 | commit_message: '[ci skip]'
7 |
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "7.0.*",
4 | "rollForward": "latestPatch"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------