flow-launcher / flow.launcher Goto Github PK
View Code? Open in Web Editor NEW:mag: Quick file search & app launcher for Windows with community-made plugins
Home Page: https://flowlauncher.com
License: MIT License
:mag: Quick file search & app launcher for Windows with community-made plugins
Home Page: https://flowlauncher.com
License: MIT License
I was wondering if it is possible to develop plugins using DotNetCore instead of Net Framework, and if so, what would be the steps? I'd like to document this aswell.
Just wanting to get some thoughts on whether we should remove result highlighting.
It was introduced as a way of combating the messy search results back then in Wox, but over the many iterations this has been improved to the point I dont think it's a necessity any more, and results now is clear enough. Any missed results would be more or less edge cases which we should just take as opportunity to further improve search experience.
Thoughts? @Flow-Launcher/team + anyone else
As an example, I type I %appdata% Folder plugin will switch that text to the appdata director + \ so i can continue to type the folder I want to go to:
Type %appdata%\Microsot it will change the text to c:\users\blahuser\appdata\microsoft\
No
Directory results returned by the Explorer plugin do not display the path to the directory, which makes it difficult to differentiate between multiple folders with the same name. It's possible to get the path by hovering over a result and pressing Shift+Enter, but it would be much better if we could see the paths at a glance like with file results.
Request to add support for Wox.Plugin.Runner or include it in the defaults.
Yes
None
Describe the solution you'd like
I have several tools installed with Chocolatey that end up on my path, but are not indexed by Flow Launcher, and also other tools that I drop at ~/bin
, for example. I need Flow Launcher to find those.
Describe alternatives you've considered
Windows+R
and the shell plugin both work, but they don't auto complete.
Additional context
Using latest version, 1.1.2
.
I see no reason to ship the 3 hello-world plugins with the launcher... I suggest that we move them to a separate repository, something like plugin-samples
, and simply mention them in the plugin-development docs.
For a potential plugin developer looking for a sample plugin to base their work on, it would be much simpler this way.
Update text: #21
Add gif for showcasing current features
Similar to Flow-Launcher/chocolatey-package#1 @jjw24 you really should consider adding a manifest.json into the WinGet repo:
https://github.com/microsoft/winget-pkgs
Is it Flow Launcher
?
Better error handling
The folder is not really required for Flow. PowerToys had a similar "issue" in the past, and maybe this resource is helpful:
microsoft/PowerToys#1494
Folder plugin change action keyword window layout needs to be updated
Settings' Hotkey tab add hotkey window layout needs update
I think that given that the Wox package repository is not our "official" way, perhaps we should remove the plugin from the installation so the users don't get confused.
A starting point for searching for plugins could be a repo like https://github.com/learn-anything/alfred-workflows
We can call the Flow plugins "Flows" 😄
I can work on that repo if no one is against so
Yes
I am switching to Flow from Wox, but I can't seem to get any third party plugins to load on restart after a successful installation message. Is that just how it is for now, with flow in this early stage, or should they be working? I've tried installing--in flow--numerous of the plugins i use in wox and upon restarting the application i get a plugin load error for each and every plugin.
Apologies if i'm dumb and the plugins aren't supposed to work just because they haven't been modified to work on flow, but the content on github here suggests they should be working even now.
ERROR MESSAGE (using spotify as an example, but i've tried numerous plugins and none work): "The following plugin has errored and cannot be loaded....Wox.Spotify Premium...Please refer to the logs for more information"
LOG FILE:
SCREENSHOT:
New UI for:
main query window
settings page for the launcher and plugins
Suggestions and mock-ups are very welcome
Unless I am wrong, other search precision levels- None, Low are not used much by user base. This assumption is that precision level saving is broken and no one has put forward an issue about it in the JJW24 fork.
Removing others can help simplify logic and focus on fine tuning the search for one level going forward.
Yes
I've used dnSpy to look into this issue. I see that loading the processkiller plugin fails and some unhandled exceptions occurs. This is the relevant content of the output window:
14:10:31.671 Flow.Launcher.exe (CoreCLR: clrhost): 'C:\Users\schwarz\AppData\Roaming\FlowLauncher\Plugins\Wox.Plugin.ProcessKiller-952489db-c7fc-4f54-b718-81a1f74467e0\Wox.Plugin.ProcessKiller.dll' geladen.
14:10:31.717 Ausnahme ausgelöst: "System.Reflection.ReflectionTypeLoadException" in System.Private.CoreLib.dll
14:10:31.719 Zustatzinformation: Unable to load one or more of the requested types.
14:10:31.795 Flow.Launcher.exe (CoreCLR: clrhost): 'C:\Users\schwarz\AppData\Local\FlowLauncher\app-0.9.1\System.Reflection.Metadata.dll' geladen.
14:10:31.798 Flow.Launcher.exe (CoreCLR: clrhost): 'C:\Users\schwarz\AppData\Local\FlowLauncher\app-0.9.1\System.Collections.Immutable.dll' geladen.
14:10:31.969 Flow.Launcher.exe (CoreCLR: clrhost): 'C:\Users\schwarz\AppData\Local\FlowLauncher\app-0.9.1\de\PresentationFramework.resources.dll' geladen.
14:10:32.013 Ausnahme ausgelöst: "System.IO.IOException" in PresentationFramework.dll
14:10:32.016 Zustatzinformation: Die Ressource "images/app_error.png" kann nicht gefunden werden.
14:10:32.062 Ausnahme ausgelöst: "System.IO.IOException" in PresentationCore.dll
14:10:32.064 Zustatzinformation: Die Ressource "images/app_error.png" kann nicht gefunden werden.
14:10:32.104 Flow.Launcher.exe (CoreCLR: clrhost): 'C:\Users\schwarz\AppData\Local\FlowLauncher\app-0.9.1\de\System.Xaml.resources.dll' geladen.
14:10:32.124 Ausnahme ausgelöst: "System.Xaml.XamlObjectWriterException" in System.Xaml.dll
14:10:32.126 Zustatzinformation: Die Angabe eines Werts für "System.Windows.Baml2006.TypeConverterMarkupExtension" führte zu einer Ausnahme.
14:10:32.189 Ausnahme ausgelöst: "System.Windows.Markup.XamlParseException" in PresentationFramework.dll
14:10:32.192 Zustatzinformation: Die Angabe eines Werts für "System.Windows.Baml2006.TypeConverterMarkupExtension" führte zu einer Ausnahme.
And this is the log content:
2020-05-20 14:06:37.2944|INFO|App.OnStartup|Begin Flow Launcher startup ----------------------------------------------------
2020-05-20 14:06:37.3244|INFO|App.OnStartup|Runtime info:
Flow Launcher version: 0.9.1
OS Version: Microsoft Windows NT 10.0.18363.0
IntPtr Length: 8
x64: True
2020-05-20 14:06:38.0739|INFO|Flow Launcher.Infrastructure.Alphabet.Initialize|Preload pinyin cache <418ms>
2020-05-20 14:06:38.0739|INFO|Flow Launcher.Infrastructure.Alphabet.Initialize|Number of preload pinyin combination<0>
2020-05-20 14:06:38.0972|INFO|ImageLoader.Initialize|Preload images cost <718ms>
2020-05-20 14:06:38.0972|INFO|ImageLoader.Initialize|Number of preload images is <56>, Images Number: 58, Unique Items 52
2020-05-20 14:06:38.6414|INFO|Flow.Launcher.Plugin.Program.Main|Preload programs cost <5ms>
2020-05-20 14:06:38.6414|INFO|Flow.Launcher.Plugin.Program.Main|Number of preload win32 programs <368>
2020-05-20 14:06:38.6430|INFO|Flow.Launcher.Plugin.Program.Main|Number of preload uwps <45>
2020-05-20 14:06:38.7044|FATAL|UnHandledException|
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load file or assembly 'Wox.Plugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Das System kann die angegebene Datei nicht finden.
Source: System.Private.CoreLib
TargetAssembly: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
TargetModule: System.Private.CoreLib.dll
TargetSite: System.RuntimeType[] GetTypes(System.Reflection.RuntimeModule)
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Flow.Launcher.Core.Plugin.PluginsLoader.<>c__DisplayClass4_1.<DotNetPlugins>b__1() in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Core\Plugin\PluginsLoader.cs:line 56
at Flow.Launcher.Infrastructure.Stopwatch.Debug(String message, Action action) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Infrastructure\Stopwatch.cs:line 19
at Flow.Launcher.Core.Plugin.PluginsLoader.DotNetPlugins(List`1 source) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Core\Plugin\PluginsLoader.cs:line 37
at Flow.Launcher.Core.Plugin.PluginsLoader.Plugins(List`1 metadatas, PluginsSettings settings) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Core\Plugin\PluginsLoader.cs:line 23
at Flow.Launcher.Core.Plugin.PluginManager.LoadPlugins(PluginsSettings settings) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Core\Plugin\PluginManager.cs:line 94
at Flow.Launcher.App.<OnStartup>b__14_0() in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\App.xaml.cs:line 69
at Flow.Launcher.Infrastructure.Stopwatch.Normal(String message, Action action) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher.Infrastructure\Stopwatch.cs:line 31
at Flow.Launcher.App.OnStartup(Object sender, StartupEventArgs e) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\App.xaml.cs:line 96
at System.Windows.Application.OnStartup(StartupEventArgs e)
at System.Windows.Application.<.ctor>b__1_0(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
2020-05-20 14:06:38.7675|FATAL|UnHandledException|
System.IO.IOException: Die Ressource "images/app_error.png" kann nicht gefunden werden.
Source: PresentationFramework
TargetAssembly: PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
TargetModule: PresentationFramework.dll
TargetSite: System.IO.Stream GetStreamCore(System.IO.FileMode, System.IO.FileAccess)
at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
at MS.Internal.IO.Packaging.PackagePartExtensions.GetSeekableStream(PackagePart packPart, FileMode mode, FileAccess access)
at System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.GetResponseStream()
at System.IO.Packaging.PackWebResponse.get_ContentType()
at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle)
at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache)
at System.Windows.Media.Imaging.BitmapFrame.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy)
at System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.Windows.Baml2006.TypeConverterMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue(MarkupExtension me, IServiceProvider serviceProvider)
System.Windows.Markup.XamlParseException: Die Angabe eines Werts für "System.Windows.Baml2006.TypeConverterMarkupExtension" führte zu einer Ausnahme.
Source: PresentationFramework
TargetAssembly: PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
TargetModule: PresentationFramework.dll
TargetSite: Void RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri)
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Flow.Launcher.ReportWindow.InitializeComponent() in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\ReportWindow.xaml:line 1
at Flow.Launcher.ReportWindow..ctor(Exception exception) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\ReportWindow.xaml.cs:line 21
at Flow.Launcher.Helper.ErrorReporting.Report(Exception e) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\Helper\ErrorReporting.cs:line 16
at Flow.Launcher.Helper.ErrorReporting.DispatcherUnhandledException(Object sender, DispatcherUnhandledExceptionEventArgs e) in C:\Workbench\Git\Flow.Launcher\Flow.Launcher\Helper\ErrorReporting.cs:line 30
at System.Windows.Threading.Dispatcher.CatchException(Exception e)
at System.Windows.Threading.Dispatcher.CatchExceptionStatic(Object source, Exception e)
at System.Windows.Threading.ExceptionWrapper.CatchException(Object source, Exception e, Delegate catchHandler)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
How to use the launcher for an absolute beginner, this can be:
Fix Camera UWP app not loaded
Icons flickering due to results constantly being updated for query result text highlighting.
How to reproduce:
Search 'settings' letter by letter, focus on Wox's Settings query result and you will notice the icon flickers despite the result not changing.
Possible root cause:
The compare result method will return true most of the time as highlight data for both title and subtitle changes. This will mean same results always get updated in ResultsViewModel as user types, thus the flickering as same icons get reloaded constantly.
From jjw24/Wox#171
@NickSeagull @SysC0mp @kalaschnik @theClueless I have not had a chance to look at in the organisation how to give you the access you need to start PRs and what not. Let me know if something obvious I need to set up straight away like access.
Also do we want to use a platform for group discussions or just stick to issues?
Current Behaviour:
Explorer search results show subtitles as "Ctrl+Enter to Open Directory"
Problem:
There is no way to differentiate the search results because they all look the same
Suggestion:
Instead of "Ctrl+Enter to Open Directory", we should display the folder path (similar to how the 'everything' plugin does)
So the search results will be :
Folder Name
C:/path/to/folder/Folder NameFolder Name
C:/path/to another/folder/Folder NameFolder Name
C:/path/to again/another/folder/Folder Name
instead of:
Folder Name
Ctrl+Enter to Open DirectoryFolder Name
Ctrl+Enter to Open DirectoryFolder Name
Ctrl+Enter to Open Directory
Screenshot showing the issue (All the search results look the same. We can fix this by showing the file path for each result.)
Change the magnifying glass icon to spinning progress bar when query runs longer, and remove existing progress bar line
I usually save custom icons for custom web searches in the default images folder under "AppData\Local\FlowLauncher\app-1.1.0\Plugins\Flow.Launcher.Plugin.WebSearch\Images". Updating deletes all the files in this folder. I would suggest preserving the contents while updating.
Update Flow.Launcher\ISSUE_TEMPLATE.md
Path Variables in Windows Explorer are sensitive to where certain directories are located. This is super helpful if you want to use the same config over multiple machines.
For example, you could install OneDrive to be on D:\OneDrive
or you just leave it to the default which is usually C:\Users\{username}\OneDrive
(or %UserProfile%\OneDrive
). Using Environment Path Variable %OneDrive%
will always correctly resolve to where you installed OneDrive. As an example, I’m sharing my Windows Terminal settings.json
for multiple machines using Environment Path Variables: "backgroundImage": "%OneDrive%/.config/.assets/cmd.png"
works regardless where OneDrive is installed on multiple machines.
Similar to %LocalAppData%
will respect the current user, in the manner: C:\Users\{username}\AppData\Local
Flow does not support path variables. It would be cool if we could just enter them the corresponding path will be auto-completed.
Helpful Links:
Use windows index for searching files and folders.
https://docs.microsoft.com/en-us/windows/win32/search/-search-3x-wds-qryidx-overview
Transferred from: jjw24/Wox#166
Show most used results when activated and query textbox is blank.
More specifically, when query box is blank, and if there no query text, then show the most used recent results.
Ultimately to reduce the number of times I need to type again for the same result I used in the past.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.