diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
index 78ae8476b..3e2f24c72 100644
--- a/.github/actions/spelling/expect.txt
+++ b/.github/actions/spelling/expect.txt
@@ -78,6 +78,7 @@ WCA_ACCENT_POLICY
HGlobal
dopusrt
firefox
+Firefox
msedge
svgc
ime
diff --git a/Deploy/local_build.ps1 b/Deploy/local_build.ps1
deleted file mode 100644
index 9dd7582b1..000000000
--- a/Deploy/local_build.ps1
+++ /dev/null
@@ -1,4 +0,0 @@
-New-Alias nuget.exe ".\packages\NuGet.CommandLine.*\tools\NuGet.exe"
-$env:APPVEYOR_BUILD_FOLDER = Convert-Path .
-$env:APPVEYOR_BUILD_VERSION = "1.2.0"
-& .\Deploy\squirrel_installer.ps1
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 000000000..fa499273c
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,5 @@
+
+
+ true
+
+
\ No newline at end of file
diff --git a/Flow.Launcher.Core/Plugin/QueryBuilder.cs b/Flow.Launcher.Core/Plugin/QueryBuilder.cs
index 84f36e91a..3dc7877ac 100644
--- a/Flow.Launcher.Core/Plugin/QueryBuilder.cs
+++ b/Flow.Launcher.Core/Plugin/QueryBuilder.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using Flow.Launcher.Plugin;
@@ -33,9 +33,13 @@ namespace Flow.Launcher.Core.Plugin
searchTerms = terms;
}
- var query = new Query(rawQuery, search,terms, searchTerms, actionKeyword);
-
- return query;
+ return new Query ()
+ {
+ Search = search,
+ RawQuery = rawQuery,
+ SearchTerms = searchTerms,
+ ActionKeyword = actionKeyword
+ };
}
}
}
\ No newline at end of file
diff --git a/Flow.Launcher.CrashReporter/Flow.Launcher.CrashReporter.csproj b/Flow.Launcher.CrashReporter/Flow.Launcher.CrashReporter.csproj
deleted file mode 100644
index 1e0a3fe52..000000000
--- a/Flow.Launcher.CrashReporter/Flow.Launcher.CrashReporter.csproj
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {2FEB2298-7653-4009-B1EA-FFFB1A768BCC}
- Library
- Properties
- Flow.Launcher.CrashReporter
- Flow.Launcher.CrashReporter
- v4.5.2
- 512
- ..\
-
-
-
- true
- full
- false
- ..\Output\Debug\
- DEBUG;TRACE
- prompt
- 4
- false
-
-
- pdbonly
- true
- ..\Output\Release\
- TRACE
- prompt
- 4
- false
-
-
-
- ..\packages\Exceptionless.1.5.2121\lib\net45\Exceptionless.dll
- True
-
-
- ..\packages\Exceptionless.1.5.2121\lib\net45\Exceptionless.Models.dll
- True
-
-
- ..\packages\JetBrains.Annotations.10.1.4\lib\net20\JetBrains.Annotations.dll
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties\SolutionAssemblyInfo.cs
-
-
-
-
- ReportWindow.xaml
-
-
-
-
- Designer
- MSBuild:Compile
-
-
-
-
- {B749F0DB-8E75-47DB-9E5E-265D16D0C0D2}
- Flow.Launcher.Core
-
-
- {4fd29318-a8ab-4d8f-aa47-60bc241b8da3}
- Flow.Launcher.Infrastructure
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
- PreserveNewest
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Flow.Launcher.CrashReporter/Images/app_error.png b/Flow.Launcher.CrashReporter/Images/app_error.png
deleted file mode 100644
index 70599f504..000000000
Binary files a/Flow.Launcher.CrashReporter/Images/app_error.png and /dev/null differ
diff --git a/Flow.Launcher.CrashReporter/Images/crash_go.png b/Flow.Launcher.CrashReporter/Images/crash_go.png
deleted file mode 100644
index 2dd2c45f2..000000000
Binary files a/Flow.Launcher.CrashReporter/Images/crash_go.png and /dev/null differ
diff --git a/Flow.Launcher.CrashReporter/Images/crash_stop.png b/Flow.Launcher.CrashReporter/Images/crash_stop.png
deleted file mode 100644
index 022fbc197..000000000
Binary files a/Flow.Launcher.CrashReporter/Images/crash_stop.png and /dev/null differ
diff --git a/Flow.Launcher.CrashReporter/Images/crash_warning.png b/Flow.Launcher.CrashReporter/Images/crash_warning.png
deleted file mode 100644
index 8d29625ee..000000000
Binary files a/Flow.Launcher.CrashReporter/Images/crash_warning.png and /dev/null differ
diff --git a/Flow.Launcher.CrashReporter/Properties/AssemblyInfo.cs b/Flow.Launcher.CrashReporter/Properties/AssemblyInfo.cs
deleted file mode 100644
index acf2adca1..000000000
--- a/Flow.Launcher.CrashReporter/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("Flow.Launcher.CrashReporter")]
-[assembly: Guid("0ea3743c-2c0d-4b13-b9ce-e5e1f85aea23")]
\ No newline at end of file
diff --git a/Flow.Launcher.CrashReporter/packages.config b/Flow.Launcher.CrashReporter/packages.config
deleted file mode 100644
index ddad0d3b3..000000000
--- a/Flow.Launcher.CrashReporter/packages.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Flow.Launcher.Infrastructure/Storage/ISavable.cs b/Flow.Launcher.Infrastructure/Storage/ISavable.cs
deleted file mode 100644
index ba2b58c6a..000000000
--- a/Flow.Launcher.Infrastructure/Storage/ISavable.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using System;
-
-namespace Flow.Launcher.Infrastructure.Storage
-{
- [Obsolete("Deprecated as of Flow Launcher v1.8.0, on 2021.06.21. " +
- "This is used only for Everything plugin v1.4.9 or below backwards compatibility")]
- public interface ISavable : Plugin.ISavable { }
-}
\ No newline at end of file
diff --git a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs
index 130e25d7b..98f4dccda 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/PluginSettings.cs
@@ -26,9 +26,6 @@ namespace Flow.Launcher.Infrastructure.UserSettings
}
}
- // TODO: Remove. This is backwards compatibility for 1.10.0 release.
- public string PythonDirectory { get; set; }
-
public Dictionary Plugins { get; set; } = new Dictionary();
public void UpdatePluginSettings(List metadatas)
@@ -38,25 +35,6 @@ namespace Flow.Launcher.Infrastructure.UserSettings
if (Plugins.ContainsKey(metadata.ID))
{
var settings = Plugins[metadata.ID];
-
- if (metadata.ID == "572be03c74c642baae319fc283e561a8" && metadata.ActionKeywords.Count > settings.ActionKeywords.Count)
- {
- // TODO: Remove. This is backwards compatibility for Explorer 1.8.0 release.
- // Introduced two new action keywords in Explorer, so need to update plugin setting in the UserData folder.
- if (settings.Version.CompareTo("1.8.0") < 0)
- {
- settings.ActionKeywords.Add(Query.GlobalPluginWildcardSign); // for index search
- settings.ActionKeywords.Add(Query.GlobalPluginWildcardSign); // for path search
- settings.ActionKeywords.Add(Query.GlobalPluginWildcardSign); // for quick access action keyword
- }
-
- // TODO: Remove. This is backwards compatibility for Explorer 1.9.0 release.
- // Introduced a new action keywords in Explorer since 1.8.0, so need to update plugin setting in the UserData folder.
- if (settings.Version.CompareTo("1.8.0") > 0)
- {
- settings.ActionKeywords.Add(Query.GlobalPluginWildcardSign); // for quick access action keyword
- }
- }
if (string.IsNullOrEmpty(settings.Version))
settings.Version = metadata.Version;
diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
index 43a68a2a6..ca1674315 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
@@ -254,6 +254,10 @@ namespace Flow.Launcher.Infrastructure.UserSettings
[JsonConverter(typeof(JsonStringEnumConverter))]
public LastQueryMode LastQueryMode { get; set; } = LastQueryMode.Selected;
+ [JsonConverter(typeof(JsonStringEnumConverter))]
+ public AnimationSpeeds AnimationSpeed { get; set; } = AnimationSpeeds.Medium;
+ public int CustomAnimationLength { get; set; } = 360;
+
// This needs to be loaded last by staying at the bottom
public PluginsSettings PluginSettings { get; set; } = new PluginsSettings();
@@ -290,4 +294,12 @@ namespace Flow.Launcher.Infrastructure.UserSettings
RightTop,
Custom
}
+
+ public enum AnimationSpeeds
+ {
+ Slow,
+ Medium,
+ Fast,
+ Custom
+ }
}
diff --git a/Flow.Launcher.Plugin/ActionContext.cs b/Flow.Launcher.Plugin/ActionContext.cs
index d898972da..d6ba4894e 100644
--- a/Flow.Launcher.Plugin/ActionContext.cs
+++ b/Flow.Launcher.Plugin/ActionContext.cs
@@ -2,18 +2,47 @@
namespace Flow.Launcher.Plugin
{
+ ///
+ /// Context provided as a parameter when invoking a
+ /// or
+ ///
public class ActionContext
{
+ ///
+ /// Contains the press state of certain special keys.
+ ///
public SpecialKeyState SpecialKeyState { get; set; }
}
+ ///
+ /// Contains the press state of certain special keys.
+ ///
public class SpecialKeyState
{
+ ///
+ /// True if the Ctrl key is pressed.
+ ///
public bool CtrlPressed { get; set; }
+
+ ///
+ /// True if the Shift key is pressed.
+ ///
public bool ShiftPressed { get; set; }
+
+ ///
+ /// True if the Alt key is pressed.
+ ///
public bool AltPressed { get; set; }
+
+ ///
+ /// True if the Windows key is pressed.
+ ///
public bool WinPressed { get; set; }
+ ///
+ /// Get this object represented as a flag combination.
+ ///
+ ///
public ModifierKeys ToModifierKeys()
{
return (CtrlPressed ? ModifierKeys.Control : ModifierKeys.None) |
diff --git a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
index 28344cf46..e72672a5b 100644
--- a/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
+++ b/Flow.Launcher.Plugin/Flow.Launcher.Plugin.csproj
@@ -26,6 +26,7 @@
flowlaunchertruetrue
+ Readme.md
@@ -56,7 +57,7 @@
-
+
diff --git a/Flow.Launcher.Plugin/Interfaces/IContextMenu.cs b/Flow.Launcher.Plugin/Interfaces/IContextMenu.cs
index 5befbf5c9..06398fb1b 100644
--- a/Flow.Launcher.Plugin/Interfaces/IContextMenu.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IContextMenu.cs
@@ -1,9 +1,18 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Flow.Launcher.Plugin
{
+ ///
+ /// Adds support for presenting additional options for a given from a context menu.
+ ///
public interface IContextMenu : IFeatures
{
+ ///
+ /// Load context menu items for the given result.
+ ///
+ ///
+ /// The for which the user has activated the context menu.
+ ///
List LoadContextMenus(Result selectedResult);
}
}
\ No newline at end of file
diff --git a/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs b/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs
index 61662b671..bbc998fcb 100644
--- a/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IPluginI18n.cs
@@ -1,4 +1,4 @@
-using System.Globalization;
+using System.Globalization;
namespace Flow.Launcher.Plugin
{
@@ -7,8 +7,14 @@ namespace Flow.Launcher.Plugin
///
public interface IPluginI18n : IFeatures
{
+ ///
+ /// Get a localised version of the plugin's title
+ ///
string GetTranslatedPluginTitle();
+ ///
+ /// Get a localised version of the plugin's description
+ ///
string GetTranslatedPluginDescription();
///
diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
index a07975f3c..9b9a9525d 100644
--- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
@@ -133,13 +133,6 @@ namespace Flow.Launcher.Plugin
///
List GetAllPlugins();
- ///
- /// Fired after global keyboard events
- /// if you want to hook something like Ctrl+R, you should use this event
- ///
- [Obsolete("Unable to Retrieve correct return value")]
- event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;
-
///
/// Register a callback for Global Keyboard Event
///
diff --git a/Flow.Launcher.Plugin/Interfaces/ISavable.cs b/Flow.Launcher.Plugin/Interfaces/ISavable.cs
index 2d13eaa6e..77bd304e4 100644
--- a/Flow.Launcher.Plugin/Interfaces/ISavable.cs
+++ b/Flow.Launcher.Plugin/Interfaces/ISavable.cs
@@ -1,12 +1,18 @@
-namespace Flow.Launcher.Plugin
+namespace Flow.Launcher.Plugin
{
///
- /// Save addtional plugin data. Inherit this interface if additional data e.g. cache needs to be saved,
- /// Otherwise if LoadSettingJsonStorage or SaveSettingJsonStorage has been callded,
- /// plugin settings will be automatically saved (see Flow.Launcher/PublicAPIInstance.SavePluginSettings) by Flow
+ /// Inherit this interface if additional data e.g. cache needs to be saved.
///
+ ///
+ /// For storing plugin settings, prefer
+ /// or .
+ /// Once called, your settings will be automatically saved by Flow.
+ ///
public interface ISavable : IFeatures
{
+ ///
+ /// Save additional plugin data, such as cache.
+ ///
void Save();
}
}
\ No newline at end of file
diff --git a/Flow.Launcher.Plugin/PluginInitContext.cs b/Flow.Launcher.Plugin/PluginInitContext.cs
index 233ead8f9..f040752bd 100644
--- a/Flow.Launcher.Plugin/PluginInitContext.cs
+++ b/Flow.Launcher.Plugin/PluginInitContext.cs
@@ -1,5 +1,8 @@
namespace Flow.Launcher.Plugin
{
+ ///
+ /// Carries data passed to a plugin when it gets initialized.
+ ///
public class PluginInitContext
{
public PluginInitContext()
@@ -12,6 +15,9 @@
API = api;
}
+ ///
+ /// The metadata of the plugin being initialized.
+ ///
public PluginMetadata CurrentPluginMetadata { get; internal set; }
///
diff --git a/Flow.Launcher.Plugin/Query.cs b/Flow.Launcher.Plugin/Query.cs
index f3a675c46..b41675a1a 100644
--- a/Flow.Launcher.Plugin/Query.cs
+++ b/Flow.Launcher.Plugin/Query.cs
@@ -9,16 +9,11 @@ namespace Flow.Launcher.Plugin
{
public Query() { }
- ///
- /// to allow unit tests for plug ins
- ///
+ [Obsolete("Use the default Query constructor.")]
public Query(string rawQuery, string search, string[] terms, string[] searchTerms, string actionKeyword = "")
{
Search = search;
RawQuery = rawQuery;
-#pragma warning disable CS0618
- Terms = terms;
-#pragma warning restore CS0618
SearchTerms = searchTerms;
ActionKeyword = actionKeyword;
}
@@ -39,49 +34,46 @@ namespace Flow.Launcher.Plugin
///
/// Search part of a query.
/// This will not include action keyword if exclusive plugin gets it, otherwise it should be same as RawQuery.
- /// Since we allow user to switch a exclusive plugin to generic plugin,
+ /// Since we allow user to switch a exclusive plugin to generic plugin,
/// so this property will always give you the "real" query part of the query
///
public string Search { get; internal init; }
///
/// The search string split into a string array.
+ /// Does not include the .
///
public string[] SearchTerms { get; init; }
- ///
- /// The raw query split into a string array
- ///
- [Obsolete("It may or may not include action keyword, which can be confusing. Use SearchTerms instead")]
- public string[] Terms { get; init; }
-
///
/// Query can be splited into multiple terms by whitespace
///
public const string TermSeparator = " ";
- [Obsolete("Typo")]
- public const string TermSeperater = TermSeparator;
///
/// User can set multiple action keywords seperated by ';'
///
public const string ActionKeywordSeparator = ";";
- [Obsolete("Typo")]
- public const string ActionKeywordSeperater = ActionKeywordSeparator;
-
///
- /// '*' is used for System Plugin
+ /// Wildcard action keyword. Plugins using this value will be queried on every search.
///
public const string GlobalPluginWildcardSign = "*";
+ ///
+ /// The action keyword part of this query.
+ /// For global plugins this value will be empty.
+ ///
public string ActionKeyword { get; init; }
[JsonIgnore]
///
- /// Return first search split by space if it has
+ /// Splits by spaces and returns the first item.
///
+ ///
+ /// returns an empty string when does not have enough items.
+ ///
public string FirstSearch => SplitSearch(0);
[JsonIgnore]
@@ -94,14 +86,20 @@ namespace Flow.Launcher.Plugin
public string SecondToEndSearch => SearchTerms.Length > 1 ? (_secondToEndSearch ??= string.Join(' ', SearchTerms[1..])) : "";
///
- /// Return second search split by space if it has
+ /// Splits by spaces and returns the second item.
///
+ ///
+ /// returns an empty string when does not have enough items.
+ ///
[JsonIgnore]
public string SecondSearch => SplitSearch(1);
///
- /// Return third search split by space if it has
+ /// Splits by spaces and returns the third item.
///
+ ///
+ /// returns an empty string when does not have enough items.
+ ///
[JsonIgnore]
public string ThirdSearch => SplitSearch(2);
@@ -110,6 +108,7 @@ namespace Flow.Launcher.Plugin
return index < SearchTerms.Length ? SearchTerms[index] : string.Empty;
}
+ ///
public override string ToString() => RawQuery;
}
}
diff --git a/Flow.Launcher.Plugin/README.md b/Flow.Launcher.Plugin/README.md
index 5c5b7c3ed..f3091a1fc 100644
--- a/Flow.Launcher.Plugin/README.md
+++ b/Flow.Launcher.Plugin/README.md
@@ -1,6 +1,7 @@
-What does Flow.Launcher.Plugin do?
-====
+Reference this package to develop a plugin for [Flow Launcher](https://github.com/Flow-Launcher/Flow.Launcher).
-* Defines base objects and interfaces for plugins
-* Plugin authors making C# plugins should reference this DLL via nuget
-* Contains commands and models that can be used by plugins
+Useful links:
+
+* [General plugin development guide](https://www.flowlauncher.com/docs/#/plugin-dev)
+* [.Net plugin development guide](https://www.flowlauncher.com/docs/#/develop-dotnet-plugins)
+* [Package API Reference](https://www.flowlauncher.com/docs/#/API-Reference/Flow.Launcher.Plugin)
diff --git a/Flow.Launcher.Plugin/Result.cs b/Flow.Launcher.Plugin/Result.cs
index 1c4467762..bfb0b0411 100644
--- a/Flow.Launcher.Plugin/Result.cs
+++ b/Flow.Launcher.Plugin/Result.cs
@@ -1,4 +1,5 @@
using System;
+using System.Runtime;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
@@ -8,7 +9,7 @@ using System.Windows.Media;
namespace Flow.Launcher.Plugin
{
///
- /// Describes the result of a plugin
+ /// Describes a result of a executed by a plugin
///
public class Result
{
@@ -17,6 +18,8 @@ namespace Flow.Launcher.Plugin
private string _icoPath;
+ private string _copyText = string.Empty;
+
///
/// The title of the result. This is always required.
///
@@ -28,13 +31,13 @@ namespace Flow.Launcher.Plugin
public string SubTitle { get; set; } = string.Empty;
///
- /// This holds the action keyword that triggered the result.
+ /// This holds the action keyword that triggered the result.
/// If result is triggered by global keyword: *, this should be empty.
///
public string ActionKeywordAssigned { get; set; }
///
- /// This holds the text which can be provided by plugin to be copied to the
+ /// This holds the text which can be provided by plugin to be copied to the
/// user's clipboard when Ctrl + C is pressed on a result. If the text is a file/directory path
/// flow will copy the actual file/folder instead of just the path text.
///
@@ -46,16 +49,17 @@ namespace Flow.Launcher.Plugin
///
/// This holds the text which can be provided by plugin to help Flow autocomplete text
- /// for user on the plugin result. If autocomplete action for example is tab, pressing tab will have
+ /// for user on the plugin result. If autocomplete action for example is tab, pressing tab will have
/// the default constructed autocomplete text (result's Title), or the text provided here if not empty.
///
+ /// When a value is not set, the will be used.
public string AutoCompleteText { get; set; }
///
- /// Image Displayed on the result
- /// Relative Path to the Image File
- /// GlyphInfo is prioritized if not null
+ /// The image to be displayed for the result.
///
+ /// Can be a local file path or a URL.
+ /// GlyphInfo is prioritized if not null
public string IcoPath
{
get { return _icoPath; }
@@ -76,22 +80,22 @@ namespace Flow.Launcher.Plugin
}
}
}
+
///
/// Determines if Icon has a border radius
///
public bool RoundedIcon { get; set; } = false;
///
- /// Delegate function, see
+ /// Delegate function that produces an
///
///
public delegate ImageSource IconDelegate();
///
- /// Delegate to Get Image Source
+ /// Delegate to load an icon for this result.
///
public IconDelegate Icon;
- private string _copyText = string.Empty;
///
/// Information for Glyph Icon (Prioritized than IcoPath/Icon if user enable Glyph Icons)
@@ -100,25 +104,29 @@ namespace Flow.Launcher.Plugin
///
- /// Delegate. An action to take in the form of a function call when the result has been selected
- ///
- /// true to hide flowlauncher after select result
- ///
+ /// An action to take in the form of a function call when the result has been selected.
///
+ ///
+ /// The function is invoked with an as the only parameter.
+ /// Its result determines what happens to Flow Launcher's query form:
+ /// when true, the form will be hidden; when false, it will stay in focus.
+ ///
public Func Action { get; set; }
///
- /// Delegate. An Async action to take in the form of a function call when the result has been selected
- ///
- /// true to hide flowlauncher after select result
- ///
+ /// An async action to take in the form of a function call when the result has been selected.
///
+ ///
+ /// The function is invoked with an as the only parameter and awaited.
+ /// Its result determines what happens to Flow Launcher's query form:
+ /// when true, the form will be hidden; when false, it will stay in focus.
+ ///
public Func> AsyncAction { get; set; }
///
/// Priority of the current result
- /// default: 0
///
+ /// default: 0
public int Score { get; set; }
///
@@ -126,12 +134,6 @@ namespace Flow.Launcher.Plugin
///
public IList TitleHighlightData { get; set; }
- ///
- /// Deprecated as of Flow Launcher v1.9.1. Subtitle highlighting is no longer offered
- ///
- [Obsolete("Deprecated as of Flow Launcher v1.9.1. Subtitle highlighting is no longer offered")]
- public IList SubTitleHighlightData { get; set; }
-
///
/// Query information associated with the result
///
@@ -161,6 +163,8 @@ namespace Flow.Launcher.Plugin
var equality = string.Equals(r?.Title, Title) &&
string.Equals(r?.SubTitle, SubTitle) &&
+ string.Equals(r?.AutoCompleteText, AutoCompleteText) &&
+ string.Equals(r?.CopyText, CopyText) &&
string.Equals(r?.IcoPath, IcoPath) &&
TitleHighlightData == r.TitleHighlightData;
@@ -170,9 +174,7 @@ namespace Flow.Launcher.Plugin
///
public override int GetHashCode()
{
- var hashcode = (Title?.GetHashCode() ?? 0) ^
- (SubTitle?.GetHashCode() ?? 0);
- return hashcode;
+ return HashCode.Combine(Title, SubTitle, AutoCompleteText, CopyText, IcoPath);
}
///
@@ -183,10 +185,10 @@ namespace Flow.Launcher.Plugin
///
/// Additional data associated with this result
+ ///
///
/// As external information for ContextMenu
///
- ///
public object ContextData { get; set; }
///
@@ -230,10 +232,13 @@ namespace Flow.Launcher.Plugin
/// #26a0da (blue)
public string ProgressBarColor { get; set; } = "#26a0da";
+ ///
+ /// Contains data used to populate the the preview section of this result.
+ ///
public PreviewInfo Preview { get; set; } = PreviewInfo.Default;
///
- /// Info of the preview image.
+ /// Info of the preview section of a
///
public record PreviewInfo
{
@@ -241,13 +246,28 @@ namespace Flow.Launcher.Plugin
/// Full image used for preview panel
///
public string PreviewImagePath { get; set; }
+
///
/// Determines if the preview image should occupy the full width of the preview panel.
///
public bool IsMedia { get; set; }
+
+ ///
+ /// Result description text that is shown at the bottom of the preview panel.
+ ///
+ ///
+ /// When a value is not set, the will be used.
+ ///
public string Description { get; set; }
+
+ ///
+ /// Delegate to get the preview panel's image
+ ///
public IconDelegate PreviewDelegate { get; set; }
+ ///
+ /// Default instance of
+ ///
public static PreviewInfo Default { get; } = new()
{
PreviewImagePath = null,
diff --git a/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs b/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs
index 6588132b9..a7744ffac 100644
--- a/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs
+++ b/Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs
@@ -1,4 +1,4 @@
-using Microsoft.Win32;
+using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.IO;
@@ -71,12 +71,6 @@ namespace Flow.Launcher.Plugin.SharedCommands
}
}
- [Obsolete("This is provided for backwards compatibility after 1.9.0 release, e.g. GitHub plugin. Use the new method instead")]
- public static void NewBrowserWindow(this string url, string browserPath = "")
- {
- OpenInBrowserWindow(url, browserPath);
- }
-
///
/// Opens search as a tab in the default browser chosen in Windows settings.
///
@@ -111,11 +105,5 @@ namespace Flow.Launcher.Plugin.SharedCommands
});
}
}
-
- [Obsolete("This is provided for backwards compatibility after 1.9.0 release, e.g. GitHub plugin. Use the new method instead")]
- public static void NewTabInBrowser(this string url, string browserPath = "")
- {
- OpenInBrowserTab(url, browserPath);
- }
}
}
\ No newline at end of file
diff --git a/Flow.Launcher.Test/QueryBuilderTest.cs b/Flow.Launcher.Test/QueryBuilderTest.cs
index 45ff8fc9e..aa0c8da12 100644
--- a/Flow.Launcher.Test/QueryBuilderTest.cs
+++ b/Flow.Launcher.Test/QueryBuilderTest.cs
@@ -15,10 +15,19 @@ namespace Flow.Launcher.Test
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List {">"}}}}
};
- Query q = QueryBuilder.Build("> file.txt file2 file3", nonGlobalPlugins);
+ Query q = QueryBuilder.Build("> ping google.com -n 20 -6", nonGlobalPlugins);
- Assert.AreEqual("file.txt file2 file3", q.Search);
+ Assert.AreEqual("> ping google.com -n 20 -6", q.RawQuery);
+ Assert.AreEqual("ping google.com -n 20 -6", q.Search, "Search should not start with the ActionKeyword.");
Assert.AreEqual(">", q.ActionKeyword);
+
+ Assert.AreEqual(5, q.SearchTerms.Length, "The length of SearchTerms should match.");
+
+ Assert.AreEqual("ping", q.FirstSearch);
+ Assert.AreEqual("google.com", q.SecondSearch);
+ Assert.AreEqual("-n", q.ThirdSearch);
+
+ Assert.AreEqual("google.com -n 20 -6", q.SecondToEndSearch, "SecondToEndSearch should be trimmed of multiple whitespace characters");
}
[Test]
@@ -29,9 +38,13 @@ namespace Flow.Launcher.Test
{">", new PluginPair {Metadata = new PluginMetadata {ActionKeywords = new List {">"}, Disabled = true}}}
};
- Query q = QueryBuilder.Build("> file.txt file2 file3", nonGlobalPlugins);
+ Query q = QueryBuilder.Build("> ping google.com -n 20 -6", nonGlobalPlugins);
- Assert.AreEqual("> file.txt file2 file3", q.Search);
+ Assert.AreEqual("> ping google.com -n 20 -6", q.Search);
+ Assert.AreEqual(q.Search, q.RawQuery, "RawQuery should be equal to Search.");
+ Assert.AreEqual(6, q.SearchTerms.Length, "The length of SearchTerms should match.");
+ Assert.AreNotEqual(">", q.ActionKeyword, "ActionKeyword should not match that of a disabled plugin.");
+ Assert.AreEqual("ping google.com -n 20 -6", q.SecondToEndSearch, "SecondToEndSearch should be trimmed of multiple whitespace characters");
}
[Test]
diff --git a/Flow.Launcher.sln b/Flow.Launcher.sln
index 1d403c5a1..df1daf1dd 100644
--- a/Flow.Launcher.sln
+++ b/Flow.Launcher.sln
@@ -47,6 +47,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.gitattributes = .gitattributes
.gitignore = .gitignore
appveyor.yml = appveyor.yml
+ Directory.Build.props = Directory.Build.props
Directory.Build.targets = Directory.Build.targets
Scripts\flowlauncher.nuspec = Scripts\flowlauncher.nuspec
LICENSE = LICENSE
diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml
index 62db18468..fb25199ed 100644
--- a/Flow.Launcher/Languages/da.xaml
+++ b/Flow.Launcher/Languages/da.xaml
@@ -155,6 +155,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml
index 92cb4c88b..6a86aa171 100644
--- a/Flow.Launcher/Languages/de.xaml
+++ b/Flow.Launcher/Languages/de.xaml
@@ -155,6 +155,12 @@
Ton abspielen, wenn das Suchfenster geöffnet wirdAnimationAnimationen in der Oberfläche verwenden
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index 30c117378..bee595772 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -157,6 +157,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml
index f7b7319f7..0c55d1257 100644
--- a/Flow.Launcher/Languages/es-419.xaml
+++ b/Flow.Launcher/Languages/es-419.xaml
@@ -155,6 +155,12 @@
Reproducir un sonido al abrir la ventana de búsquedaAnimaciónUsar Animación en la Interfaz
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml
index abb0cc217..6d9a720f3 100644
--- a/Flow.Launcher/Languages/es.xaml
+++ b/Flow.Launcher/Languages/es.xaml
@@ -155,6 +155,12 @@
Reproduce un pequeño sonido cuando se abre el cuadro de búsquedaAnimaciónUsar animación en la Interfaz de Usuario
+ Velocidad de animación
+ Velocidad de animación de la interfaz de usuario
+ Lenta
+ Media
+ Rápida
+ PersonalizadaRelojFecha
diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml
index 7af15bfd4..66bfd9219 100644
--- a/Flow.Launcher/Languages/fr.xaml
+++ b/Flow.Launcher/Languages/fr.xaml
@@ -155,6 +155,12 @@
Jouer un petit son lorsque la fenêtre de recherche s'ouvreAnimationUtiliser l'animation dans l'interface
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml
index 33870fb8d..78fdfb35d 100644
--- a/Flow.Launcher/Languages/it.xaml
+++ b/Flow.Launcher/Languages/it.xaml
@@ -86,7 +86,7 @@
No results foundPlease try a different search.Plugin
- Plugins
+ PluginCerca altri pluginsAttivoDisabilita
@@ -155,6 +155,12 @@
Riproduce un piccolo suono all'apertura della finestra di ricercaAnimazioneUsa l'animazione nell'interfaccia utente
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
@@ -166,13 +172,13 @@
Preview HotkeyEnter shortcut to show/hide preview in search window.Apri modificatori di risultato
- Select a modifier key to open selected result via keyboard.
+ Seleziona un tasto modificatore per aprire il risultato selezionato via tastiera.Mostra tasto di scelta rapida
- Show result selection hotkey with results.
+ Mostra tasto di scelta rapida dei risultati con i risultati.Tasti scelta rapida per ricerche personalizzateCustom Query ShortcutBuilt-in Shortcut
- Query
+ RicercaShortcutExpansionDescription
@@ -184,12 +190,12 @@
Are you sure you want to delete shortcut: {0} with expansion {1}?Get text from clipboard.Get path from active explorer.
- Query window shadow effect
- Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited.
- Window Width Size
+ Effetto ombra della finestra di ricerca
+ L'effetto ombra utilizzerà in maniera sostanziale la GPU. Non consigliato se le performance del tuo computer sono limitate.
+ Dimensione larghezza della finestraYou can also quickly adjust this by using Ctrl+[ and Ctrl+].
- Use Segoe Fluent Icons
- Use Segoe Fluent Icons for query results where supported
+ Usa Icone Segoe Fluent
+ Usa Icone Segoe Fluent per risultati di ricerca dove supportatePress Key
@@ -225,38 +231,38 @@
oppure vai su https://github.com/Flow-Launcher/Flow.Launcher/releases per scaricare gli aggiornamenti manualmente.
Note di rilascio
- Usage Tips
- DevTools
- Setting Folder
- Log Folder
+ Suggerimenti di utilizzo
+ Strumenti per sviluppatori
+ Cartella delle impostazioni
+ Cartella dei LogClear LogsAre you sure you want to delete all logs?Wizard
- Select File Manager
- Please specify the file location of the file manager you using and add arguments if necessary. The default arguments are "%d", and a path is entered at that location. For example, If a command is required such as "totalcmd.exe /A c:\windows", argument is /A "%d".
- "%f" is an argument that represent the file path. It is used to emphasize the file/folder name when opening a specific file location in 3rd party file manager. This argument is only available in the "Arg for File" item. If the file manager does not have that function, you can use "%d".
- File Manager
- Profile Name
- File Manager Path
- Arg For Folder
- Arg For File
+ Seleziona Gestore File
+ Specificare la posizione del gestore file che si sta utilizzando e aggiungere argomenti se necessario. Gli argomenti di default sono "%d", e un percorso è inserito in quella posizione. Per esempio, se è richiesto un comando come "totalcmd.exe /A c:\windows", l'argomento è /A "%d".
+ "%f" è un argomento che rappresenta il percorso del file. Viene usato per sottolineare il nome del file/cartella quando si apre una posizione specifica del file in file manager di terze parti. Questo argomento è disponibile solo nell'elemento "Arg per File". Se il file manager non dispone di tale funzione, è possibile utilizzare "%d".
+ Gestore File
+ Nome Profilo
+ Percorso Gestore File
+ Arg Per Cartella
+ Arg Per CartellaBrowser predefinito
- The default setting follows the OS default browser setting. If specified separately, flow uses that browser.
+ L'impostazione predefinita segue l'opzione del browser predefinito del sistema operativo. Se specificato separatamente, Flow utilizza quel browser.BrowserNome del browser
- Browser Path
+ Percorso BrowserNew WindowNew Tab
- Private Mode
+ Modalità Privata
- Change Priority
- Greater the number, the higher the result will be ranked. Try setting it as 5. If you want the results to be lower than any other plugin's, provide a negative number
- Please provide an valid integer for Priority!
+ Cambia Priorità
+ Maggiore è il numero, maggiore sarà il risultato che verrà classificato. Prova ad impostarlo a 5. Se si desidera che i risultati siano inferiori a qualsiasi altro plugin, fornire un numero negativo
+ Si prega di fornire un numero intero valido per la priorità!Vecchia parola chiave d'azione
@@ -267,7 +273,7 @@
La nuova parola chiave d'azione non può essere vuotaLa nuova parola chiave d'azione è stata assegnata ad un altro plugin, per favore sceglierne una differenteSuccesso
- Completed successfully
+ Completato con successoUsa * se non vuoi specificare una parola chiave d'azione
@@ -304,24 +310,24 @@
Flow Launcher ha riportato un errore
- Please wait...
+ Attendere prego...
- Checking for new update
- You already have the latest Flow Launcher version
- Update found
- Updating...
+ Controllando per un nuovo aggiornamento
+ Al momento hai la versione più recente di Flow Launcher
+ Aggiornamento trovato
+ Aggiornando...
- Flow Launcher was not able to move your user profile data to the new update version.
- Please manually move your profile data folder from {0} to {1}
+ Flow Launcher non è stato in grado di spostare i dati del tuo profilo alla nuova versione aggiornata.
+ Si prega di spostare manualmente la cartella dei tuoi dati da {0} a {1}
- New Update
+ Nuovo AggiornamentoE' disponibile la nuova release {0} di Flow LauncherErrore durante l'installazione degli aggiornamenti softwareAggiornaAnnulla
- Update Failed
- Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.
+ Aggiornamento fallito
+ Controlla la tua connessione e prova ad aggiornare le impostazioni del proxy su github-cloud.s3.amazonaws.com.Questo aggiornamento riavvierà Flow LauncherI seguenti file saranno aggiornatiFile aggiornati
@@ -329,9 +335,9 @@
Salta
- Welcome to Flow Launcher
- Hello, this is the first time you are running Flow Launcher!
- Before starting, this wizard will assist in setting up Flow Launcher. You can skip this if you wish. Please choose a language
+ Benvenuto su Flow Launcher
+ Ciao, questa è la prima volta che stai eseguendo Flow Launcher!
+ Prima di iniziare, questa procedura guidata aiuterà nella creazione di Flow Launcher. Puoi saltarla se vuoi. Scegli una linguaCerca ed esegue tutti i file e le applicazioni presenti sul PCCerca tutto da applicazioni, file, segnalibri, YouTube, Twitter e altro ancora. Tutto dalla comodità della tastiera senza mai toccare il mouse.Flow Launcher si avvia con il tasto di scelta rapida qui sotto, provatelo subito. Per cambiarlo, fate clic sull'input e premete il tasto di scelta rapida desiderato sulla tastiera.
diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml
index 870d27293..441d998e2 100644
--- a/Flow.Launcher/Languages/ja.xaml
+++ b/Flow.Launcher/Languages/ja.xaml
@@ -155,6 +155,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml
index 32b9db20e..58f43fc3b 100644
--- a/Flow.Launcher/Languages/ko.xaml
+++ b/Flow.Launcher/Languages/ko.xaml
@@ -155,6 +155,12 @@
검색창을 열 때 작은 소리를 재생합니다.애니메이션일부 UI에 애니메이션을 사용합니다.
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ Custom시계날짜
diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml
index 5d9a0aaa6..73792b726 100644
--- a/Flow.Launcher/Languages/nb.xaml
+++ b/Flow.Launcher/Languages/nb.xaml
@@ -155,6 +155,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml
index 2a2741f08..feaae4f8a 100644
--- a/Flow.Launcher/Languages/nl.xaml
+++ b/Flow.Launcher/Languages/nl.xaml
@@ -155,6 +155,12 @@
Een klein geluid afspelen wanneer het zoekvenster wordt geopendAnimatieAnimatie gebruiken in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml
index af5c53df7..a7e6bd87f 100644
--- a/Flow.Launcher/Languages/pl.xaml
+++ b/Flow.Launcher/Languages/pl.xaml
@@ -155,6 +155,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml
index 6827be837..5e7782755 100644
--- a/Flow.Launcher/Languages/pt-br.xaml
+++ b/Flow.Launcher/Languages/pt-br.xaml
@@ -16,15 +16,15 @@
CopiarCortarColar
- Undo
- Select All
- File
+ Desfazer
+ Selecionar Tudo
+ ArquivoPastaTextoModo GamerSuspender o uso de Teclas de Atalho.
- Position Reset
- Reset search window position
+ Redefinição de Posição
+ Redefinir posição da janela de buscaConfigurações
@@ -32,21 +32,21 @@
Modo PortátilArmazene todas as configurações e dados do usuário em uma pasta (útil quando usado com unidades removíveis ou serviços em nuvem).Iniciar Flow Launcher com inicialização do sistema
- Error setting launch on startup
+ Erro ao ativar início com o sistemaEsconder Flow Launcher quando foco for perdidoNão mostrar notificações de novas versões
- Search Window Position
- Remember Last Position
- Monitor with Mouse Cursor
- Monitor with Focused Window
- Primary Monitor
- Custom Monitor
- Search Window Position on Monitor
- Center
- Center Top
- Left Top
- Right Top
- Custom Position
+ Posição da Janela de Busca
+ Lembrar Última Posição
+ Monitor com o Cursor do Mouse
+ Monitor com Janela em Foco
+ Monitor Principal
+ Monitor Personalizado
+ Posição no Monitor da Janela de Busca
+ Centro
+ Centro Superior
+ Esquerda Superior
+ Direita Superior
+ Posição PersonalizadaIdiomaEstilo da Última ConsultaMostrar/ocultar resultados anteriores quando o Lançador de Fluxos é reativado.
@@ -54,7 +54,7 @@
Selecionar última consultaLimpar última consultaMáximo de resultados mostrados
- You can also quickly adjust this by using CTRL+Plus and CTRL+Minus.
+ Você também pode ajustar isso rapidamente usando CTRL+Mais e CTRL+Menos.Ignorar atalhos em tela cheiaDesativar o Flow Launcher quando um aplicativo em tela cheia estiver ativado (recomendado para jogos).Gerenciador de Arquivos Padrões
@@ -64,41 +64,41 @@
Caminho do PythonCaminho do Node.jsSelecione o executável do Node.js
- Please select pythonw.exe
- Always Start Typing in English Mode
- Temporarily change your input method to English mode when activating Flow.
+ Por favor, selecione pythonw.exe
+ Sempre Começar Digitando em Modo Inglês
+ Temporariamente altere seu método de entrada para o Modo Inglês ao ativar o Flow.Atualizar AutomaticamenteSelecionarEsconder Flow Launcher na inicializaçãoOcultar ícone da bandeja
- When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.
- Query Search Precision
- Changes minimum match score required for results.
- Search with Pinyin
- Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.
- Always Preview
- Always open preview panel when Flow activates. Press {0} to toggle preview.
+ Quando o ícone não está na bandeja, o menu de Configurações pode ser aberto ao clicar na janela de busca com o botão direito do mouse.
+ Precisão de Busca da Consulta
+ Altera a pontuação de match mínima exigida para resultados.
+ Buscar com Pinyin
+ Permite o uso de Pinyin para busca. Pinyin é o sistema padrão de escrita romanizada para traduzir chinês.
+ Sempre Pré-visualizar
+ Sempre abrir o painel de pré-visualização quando o Flow é ativado. Pressione {0} para ativar ou desativar a pré-visualização.O efeito de sombra não é permitido enquanto o tema atual tem o efeito de desfoque ativado
- Search Plugin
- Ctrl+F to search plugins
+ Buscar Plugin
+ Ctrl+F para buscar pluginsNenhum resultado encontrado
- Please try a different search.
+ Por favor, tente uma busca diferente.PluginPluginsEncontrar mais pluginsAtivadoDesabilitar
- Action keyword Setting
+ Configuração de palavra-chave de AçãoPalavras-chave de ação
- Current action keyword
- New action keyword
- Change Action Keywords
+ Palavra-chave de ação atual
+ Nova palavra-chave de ação
+ Alterar Palavras-chave de AçãoPrioridade atualNova PrioridadePrioridade
- Change Plugin Results Priority
+ Alterar Prioridade de Resultados de PluginDiretório de PluginsporTempo de inicialização:
@@ -111,14 +111,14 @@
Loja de PluginsNova Versão
- Recently Updated
+ Atualizado RecentementePlugins
- Installed
+ InstaladoAtualizarInstalarDesinstalarAtualizar
- Plugin already installed
+ Plugin já instaladoNova VersãoEste plugin foi atualizado nos últimos 7 diasNova Atualização Disponível
@@ -127,18 +127,18 @@
Tema
- Appearance
+ AparênciaVer mais temasComo criar um temaOláExplorador
- Search for files, folders and file contents
- WebSearch
- Search the web with different search engine support
- Program
- Launch programs as admin or a different user
- ProcessKiller
- Terminate unwanted processes
+ Busque por arquivos, pastas e conteúdos de arquivos
+ Busca Web
+ Busque na Web com suporte para diferentes motores de busca
+ Programa
+ Inicie programas como administrador ou como um usuário diferente
+ Matador de Processos
+ Termine processos indesejadosFonte da caixa de ConsultaFonte do ResultadoModo Janela
@@ -155,6 +155,12 @@
Reproduzir um pequeno som ao abrir a janela de pesquisaAnimaçãoUtilizar Animação na Interface
+ Velocidade de Animação
+ Altere a velocidade da animação da interface
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml
index c45b5ebc7..9f25d312a 100644
--- a/Flow.Launcher/Languages/pt-pt.xaml
+++ b/Flow.Launcher/Languages/pt-pt.xaml
@@ -155,6 +155,12 @@
Reproduzir um som ao abrir a janela de pesquisaAnimaçãoUtilizar animações na aplicação
+ Velocidade da animação
+ A velocidade da animação da interface
+ Lenta
+ Média
+ Rápida
+ PersonalizadaRelógioData
diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml
index cb8bf5b22..5d0cd58d3 100644
--- a/Flow.Launcher/Languages/ru.xaml
+++ b/Flow.Launcher/Languages/ru.xaml
@@ -1,7 +1,7 @@
- Регистрация хоткея {0} не удалась
+ Регистрация горячей клавиши {0} не удаласьНе удалось запустить {0}Недопустимый формат файла плагина Flow LauncherОтображать это окно выше всех при этом запросе
@@ -89,7 +89,7 @@
ПлагиныНайти больше плагиновВкл.
- Отключить
+ Откл.Настройка ключевого слова действияГорячая клавишаКлючевое слово текущего действия
@@ -143,8 +143,8 @@
Шрифт результатовОконный режимПрозрачность
- Тема {0} не существует, откат к теме по умолчанию
- Не удалось загрузить тему {0}, откат к теме по умолчанию
+ Тема «{0}» не существует, откат к теме по умолчанию
+ Не удалось загрузить тему «{0}», откат к теме по умолчаниюПапка темОткрыть папку с темамиЦветовая схема
@@ -155,6 +155,12 @@
Воспроизведение небольшого звука при открытии окна поискаАнимацияИспользование анимации в меню
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomЧасыДата
@@ -164,14 +170,14 @@
Горячая клавиша Flow LauncherВведите ярлык, чтобы показать/скрыть Flow Launcher.Просмотр горячей клавиши
- Введите ярлык для показа/скрытия предварительного просмотра в окне поиска.
+ Введите ярлык для показа/скрытия предпросмотра в окне поиска.Открыть ключ модификации результатаВыберите клавишу-модификатор, чтобы открыть выбранный результат с помощью клавиатуры.Показать горячую клавишуПоказать горячую клавишу выбора результата с результатами.
- Задаваемые горячие клавиши для запросов
- Custom Query Shortcut
- Built-in Shortcut
+ Горячие клавиши пользовательского запроса
+ Ярлыки пользовательского запроса
+ Встроенные ярлыкиЗапросЯрлыкРасширение
@@ -193,8 +199,8 @@
Нажмите клавишу
- HTTP Прокси
- Включить HTTP прокси
+ НТТР-прокси
+ Включить НТТР-проксиHTTP-серверПортИмя пользователя
diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml
index 8321ea6c5..0af0d1726 100644
--- a/Flow.Launcher/Languages/sk.xaml
+++ b/Flow.Launcher/Languages/sk.xaml
@@ -155,6 +155,12 @@
Po otvorení okna vyhľadávania prehrať krátky zvukAnimáciaAnimovať používateľské rozhranie
+ Rýchlosť animácie
+ Rýchlosť animácie grafického rozhrania
+ Pomaly
+ Stredne
+ Rýchlo
+ VlastnéHodinyDátum
diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml
index 56cbbad66..31fdb914a 100644
--- a/Flow.Launcher/Languages/sr.xaml
+++ b/Flow.Launcher/Languages/sr.xaml
@@ -155,6 +155,12 @@
Play a small sound when the search window opensAnimationUse Animation in UI
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml
index a595d8f63..7929c13a7 100644
--- a/Flow.Launcher/Languages/tr.xaml
+++ b/Flow.Launcher/Languages/tr.xaml
@@ -155,6 +155,12 @@
Arama penceresi açıldığında küçük bir ses oynatAnimasyonArayüzde Animasyon Kullan
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml
index b5ce6ead0..5bbc48d1a 100644
--- a/Flow.Launcher/Languages/uk-UA.xaml
+++ b/Flow.Launcher/Languages/uk-UA.xaml
@@ -155,6 +155,12 @@
Відтворювати невеликий звук при відкритті вікна пошукуАнімаціяВикористовувати анімацію в інтерфейсі
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ CustomClockDate
@@ -244,7 +250,7 @@
Arg For File
- Default Web Browser
+ Веб-браузер за замовчуваннямThe default setting follows the OS default browser setting. If specified separately, flow uses that browser.BrowserBrowser Name
diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml
index 346077471..d357b5365 100644
--- a/Flow.Launcher/Languages/zh-cn.xaml
+++ b/Flow.Launcher/Languages/zh-cn.xaml
@@ -155,6 +155,12 @@
启用激活音效动画启用动画
+ 动画速度
+ UI 动画速度
+ 慢
+ 中
+ 快
+ 自定义时钟日期
diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml
index 96c64879a..428e6055c 100644
--- a/Flow.Launcher/Languages/zh-tw.xaml
+++ b/Flow.Launcher/Languages/zh-tw.xaml
@@ -52,7 +52,7 @@
重啟 Flow Launcher 顯示/隱藏以前的結果。保留上一個查詢選擇上一個查詢
- Empty last Query
+ 清空上次搜尋關鍵字最大結果顯示個數You can also quickly adjust this by using CTRL+Plus and CTRL+Minus.全螢幕模式下忽略快捷鍵
@@ -87,7 +87,7 @@
Please try a different search.插件插件
- 瀏覽更多外掛
+ 瀏覽更多插件啟用停用觸發關鍵字設定
@@ -112,7 +112,7 @@
插件商店New ReleaseRecently Updated
- 外掛
+ 插件Installed重新整理安裝
@@ -155,6 +155,12 @@
搜尋窗口打開時播放音效動畫使用介面動畫
+ Animation Speed
+ The speed of the UI animation
+ Slow
+ Medium
+ Fast
+ Custom時鐘日期
@@ -180,7 +186,7 @@
編輯新增請選擇一項
- 確定要刪除外掛 {0} 的快捷鍵嗎?
+ 確定要刪除插件 {0} 的快捷鍵嗎?你確定你要刪除縮寫:{0} 展開為 {1}?從剪貼簿取得文字。從使用中的檔案總管獲得路徑。
@@ -255,7 +261,7 @@
更改優先度
- 數字越大,查詢結果會排在越前面。嘗試將其設定為 5。如果你希望查詢結果低於任何其他外掛,請提供負數
+ 數字越大,查詢結果會排在越前面。嘗試將其設定為 5。如果你希望查詢結果低於任何其他插件,請提供負數請為優先度提供一個有效的整數!
@@ -263,9 +269,9 @@
新觸發關鍵字取消確定
- 找不到指定的外掛
+ 找不到指定的插件新觸發關鍵字不能為空白
- 新觸發關鍵字已經被指派給另一外掛,請設定其他關鍵字。
+ 新觸發關鍵字已經被指派給另一個插件,請設定其他關鍵字。成功成功完成如果不想設定觸發關鍵字,可以使用*代替
@@ -275,7 +281,7 @@
Press a custom hotkey to open Flow Launcher and input the specified query automatically.預覽快捷鍵不存在,請設定一個新的快捷鍵
- 外掛熱鍵無法使用
+ 擴充功能熱鍵無法使用更新
@@ -312,8 +318,8 @@
找到更新更新中...
- Flow Launcher was not able to move your user profile data to the new update version.
- Please manually move your profile data folder from {0} to {1}
+ Flow Launcher 無法將您的個人資料移動到新版本。
+ 請手動將您的個人資料資料夾從 {0} 到 {1}
新的更新發現 Flow Launcher 新版本 V{0}
@@ -321,7 +327,7 @@
更新取消更新失敗
- Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.
+ 檢查您的連線,並嘗試更新到 github-cloud.s3.amazonaws.com 的 Proxy 伺服器設定。此更新需要重新啟動 Flow Launcher下列檔案會被更新更新檔案
@@ -337,7 +343,7 @@
Flow Launcher 需要搭配快捷鍵使用,請馬上試試吧! 如果想更改它,請點擊"輸入"並輸入你想要的快捷鍵。快捷鍵關鍵字與指令
- Search the web, launch applications or run various functions through Flow Launcher plugins. Certain functions start with an action keyword, and if necessary, they can be used without action keywords. Try the queries below in Flow Launcher.
+ 透過 Flow Launcher 的擴充功能,您可以搜尋網頁、啟動應用程式或執行各種功能。某些功能以動作關鍵字開頭,若需要,也可以不使用動作關鍵字。請嘗試在 Flow Launcher 中輸入以下查詢。開始使用 Flow Launcher吧!大功告成! 別忘了使用快捷鍵以開始 :)
diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs
index 4adfccff4..3a914d488 100644
--- a/Flow.Launcher/MainWindow.xaml.cs
+++ b/Flow.Launcher/MainWindow.xaml.cs
@@ -24,6 +24,7 @@ using System.Windows.Data;
using ModernWpf.Controls;
using Key = System.Windows.Input.Key;
using System.Media;
+using static Flow.Launcher.ViewModel.SettingWindowViewModel;
namespace Flow.Launcher
{
@@ -379,11 +380,19 @@ namespace Flow.Launcher
CircleEase easing = new CircleEase();
easing.EasingMode = EasingMode.EaseInOut;
+ var animationLength = _settings.AnimationSpeed switch
+ {
+ AnimationSpeeds.Slow => 560,
+ AnimationSpeeds.Medium => 360,
+ AnimationSpeeds.Fast => 160,
+ _ => _settings.CustomAnimationLength
+ };
+
var WindowOpacity = new DoubleAnimation
{
From = 0,
To = 1,
- Duration = TimeSpan.FromSeconds(0.25),
+ Duration = TimeSpan.FromMilliseconds(animationLength * 2 / 3),
FillBehavior = FillBehavior.Stop
};
@@ -391,7 +400,7 @@ namespace Flow.Launcher
{
From = Top + 10,
To = Top,
- Duration = TimeSpan.FromSeconds(0.25),
+ Duration = TimeSpan.FromMilliseconds(animationLength * 2 / 3),
FillBehavior = FillBehavior.Stop
};
var IconMotion = new DoubleAnimation
@@ -399,7 +408,7 @@ namespace Flow.Launcher
From = 12,
To = 0,
EasingFunction = easing,
- Duration = TimeSpan.FromSeconds(0.36),
+ Duration = TimeSpan.FromMilliseconds(animationLength),
FillBehavior = FillBehavior.Stop
};
@@ -408,7 +417,7 @@ namespace Flow.Launcher
From = 0,
To = 1,
EasingFunction = easing,
- Duration = TimeSpan.FromSeconds(0.36),
+ Duration = TimeSpan.FromMilliseconds(animationLength),
FillBehavior = FillBehavior.Stop
};
double TargetIconOpacity = SearchIcon.Opacity; // Animation Target Opacity from Style
@@ -417,7 +426,7 @@ namespace Flow.Launcher
From = 0,
To = TargetIconOpacity,
EasingFunction = easing,
- Duration = TimeSpan.FromSeconds(0.36),
+ Duration = TimeSpan.FromMilliseconds(animationLength),
FillBehavior = FillBehavior.Stop
};
@@ -427,7 +436,7 @@ namespace Flow.Launcher
From = new Thickness(0, 12, right, 0),
To = new Thickness(0, 0, right, 0),
EasingFunction = easing,
- Duration = TimeSpan.FromSeconds(0.36),
+ Duration = TimeSpan.FromMilliseconds(animationLength),
FillBehavior = FillBehavior.Stop
};
diff --git a/Flow.Launcher/Msg.xaml.cs b/Flow.Launcher/Msg.xaml.cs
index ff84e1064..0bb02bbc5 100644
--- a/Flow.Launcher/Msg.xaml.cs
+++ b/Flow.Launcher/Msg.xaml.cs
@@ -69,11 +69,13 @@ namespace Flow.Launcher
{
tbSubTitle.Visibility = Visibility.Collapsed;
}
+
if (!File.Exists(iconPath))
{
imgIco.Source = await ImageLoader.LoadAsync(Path.Combine(Constant.ProgramDirectory, "Images\\app.png"));
}
- else {
+ else
+ {
imgIco.Source = await ImageLoader.LoadAsync(iconPath);
}
diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs
index c1a9d8cd2..4312df3c3 100644
--- a/Flow.Launcher/PublicAPIInstance.cs
+++ b/Flow.Launcher/PublicAPIInstance.cs
@@ -69,9 +69,6 @@ namespace Flow.Launcher
UpdateManager.RestartApp(Constant.ApplicationFileName);
}
- [Obsolete("Typo")]
- public void RestarApp() => RestartApp();
-
public void ShowMainWindow() => _mainVM.Show();
public void HideMainWindow() => _mainVM.Hide();
@@ -295,8 +292,6 @@ namespace Flow.Launcher
OpenUri(appUri);
}
- public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;
-
private readonly List> _globalKeyboardHandlers = new();
public void RegisterGlobalKeyboardCallback(Func callback) => _globalKeyboardHandlers.Add(callback);
@@ -309,10 +304,6 @@ namespace Flow.Launcher
private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state)
{
var continueHook = true;
- if (GlobalKeyboardEvent != null)
- {
- continueHook = GlobalKeyboardEvent((int)keyevent, vkcode, state);
- }
foreach (var x in _globalKeyboardHandlers)
{
continueHook &= x((int)keyevent, vkcode, state);
diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml
index 665d16b8f..1e886c022 100644
--- a/Flow.Launcher/SettingWindow.xaml
+++ b/Flow.Launcher/SettingWindow.xaml
@@ -2403,6 +2403,7 @@
-
+
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
+
diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
index 47a5cd672..231e65539 100644
--- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
+++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
@@ -598,6 +598,33 @@ namespace Flow.Launcher.ViewModel
set => Settings.UseAnimation = value;
}
+ public class AnimationSpeed
+ {
+ public string Display { get; set; }
+ public AnimationSpeeds Value { get; set; }
+ }
+
+ public List AnimationSpeeds
+ {
+ get
+ {
+ List speeds = new List();
+ var enums = (AnimationSpeeds[])Enum.GetValues(typeof(AnimationSpeeds));
+ foreach (var e in enums)
+ {
+ var key = $"AnimationSpeed{e}";
+ var display = _translater.GetTranslation(key);
+ var m = new AnimationSpeed
+ {
+ Display = display,
+ Value = e,
+ };
+ speeds.Add(m);
+ }
+ return speeds;
+ }
+ }
+
public bool UseSound
{
get => Settings.UseSound;
diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/zh-tw.xaml
index 95bca0684..8b21bd58d 100644
--- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/zh-tw.xaml
+++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Languages/zh-tw.xaml
@@ -23,6 +23,6 @@
瀏覽其他瀏覽器引擎
- 如果你沒有使用 Chrome、Firefox 或 Edge,或者使用它們的便攜版,你需要添加書籤資料位置並選擇正確的瀏覽器引擎,才能讓這個插件正常運作。
+ 如果你沒有使用 Chrome、Firefox 或 Edge,或者使用它們的便攜版,你需要新增書籤資料位置並選擇正確的瀏覽器引擎,才能讓這個擴充功能正常運作。例如:Brave 瀏覽器的引擎是 Chromium;而它的預設書籤資料位置是「%LOCALAPPDATA%\BraveSoftware\Brave-Browser\UserData」。對於 Firefox 瀏覽器引擎,書籤資料位置是包含 places.sqlite 檔案的 userdata 資料夾。
diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs
index 6f2b24f02..a13d6c929 100644
--- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs
@@ -10,6 +10,7 @@ using Flow.Launcher.Plugin.BrowserBookmark.Views;
using System.IO;
using System.Threading.Channels;
using System.Threading.Tasks;
+using System.Threading;
namespace Flow.Launcher.Plugin.BrowserBookmark
{
@@ -20,20 +21,39 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
private static List cachedBookmarks = new List();
private static Settings _settings;
-
+
+ private static bool initialized = false;
+
public void Init(PluginInitContext context)
{
Main.context = context;
-
+
_settings = context.API.LoadSettingJsonStorage();
- cachedBookmarks = BookmarkLoader.LoadAllBookmarks(_settings);
+ LoadBookmarksIfEnabled();
+ }
- _ = MonitorRefreshQueue();
+ private static void LoadBookmarksIfEnabled()
+ {
+ if (context.CurrentPluginMetadata.Disabled)
+ {
+ // Don't load or monitor files if disabled
+ return;
+ }
+
+ cachedBookmarks = BookmarkLoader.LoadAllBookmarks(_settings);
+ _ = MonitorRefreshQueueAsync();
+ initialized = true;
}
public List Query(Query query)
{
+ // For when the plugin being previously disabled and is now renabled
+ if (!initialized)
+ {
+ LoadBookmarksIfEnabled();
+ }
+
string param = query.Search.TrimStart();
// Should top results be returned? (true if no search parameters have been passed)
@@ -86,17 +106,24 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
private static Channel refreshQueue = Channel.CreateBounded(1);
- private async Task MonitorRefreshQueue()
+ private static SemaphoreSlim fileMonitorSemaphore = new(1, 1);
+
+ private static async Task MonitorRefreshQueueAsync()
{
+ if (fileMonitorSemaphore.CurrentCount < 1)
+ {
+ return;
+ }
+ await fileMonitorSemaphore.WaitAsync();
var reader = refreshQueue.Reader;
while (await reader.WaitToReadAsync())
{
- await Task.Delay(2000);
if (reader.TryRead(out _))
{
- ReloadData();
+ ReloadAllBookmarks(false);
}
}
+ fileMonitorSemaphore.Release();
}
private static readonly List Watchers = new();
@@ -104,17 +131,19 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
internal static void RegisterBookmarkFile(string path)
{
var directory = Path.GetDirectoryName(path);
- if (!Directory.Exists(directory))
- return;
- var watcher = new FileSystemWatcher(directory!);
- if (File.Exists(path))
+ if (!Directory.Exists(directory) || !File.Exists(path))
{
- var fileName = Path.GetFileName(path);
- watcher.Filter = fileName;
+ return;
}
+ if (Watchers.Any(x => x.Path.Equals(directory, StringComparison.OrdinalIgnoreCase)))
+ {
+ return;
+ }
+
+ var watcher = new FileSystemWatcher(directory!);
+ watcher.Filter = Path.GetFileName(path);
watcher.NotifyFilter = NotifyFilters.FileName |
- NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.Size;
@@ -129,7 +158,7 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
};
watcher.EnableRaisingEvents = true;
-
+
Watchers.Add(watcher);
}
@@ -138,11 +167,12 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
ReloadAllBookmarks();
}
- public static void ReloadAllBookmarks()
+ public static void ReloadAllBookmarks(bool disposeFileWatchers = true)
{
cachedBookmarks.Clear();
-
- cachedBookmarks = BookmarkLoader.LoadAllBookmarks(_settings);
+ if (disposeFileWatchers)
+ DisposeFileWatchers();
+ LoadBookmarksIfEnabled();
}
public string GetTranslatedPluginTitle()
@@ -196,12 +226,19 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
{
internal string Url { get; set; }
}
+
public void Dispose()
+ {
+ DisposeFileWatchers();
+ }
+
+ private static void DisposeFileWatchers()
{
foreach (var watcher in Watchers)
{
watcher.Dispose();
}
+ Watchers.Clear();
}
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
index 3de63546b..47aa83ffd 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/sk.xaml
@@ -34,7 +34,7 @@
Cesta k príkazovému riadkuVylúčené umiestnenia indexovaniaPoužiť umiestnenie výsledku vyhľadávania ako pracovný priečinok spustiteľného súboru
- Stlačením klávesu Enter otvoríte priečinok v predvolenom správcovi súborov
+ Stlačením klávesu Enter otvoriť priečinok v predvolenom správcovi súborovNa vyhľadanie cesty použiť vyhľadávanie v indexeMožnosti indexovaniaVyhľadávanie:
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
index d04bd8edd..8f63eb659 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/zh-tw.xaml
@@ -38,7 +38,7 @@
Use Index Search For Path Search索引選項搜尋:
- Path Search:
+ 路徑搜尋:File Content Search:Index Search:快速存取:
diff --git a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/zh-tw.xaml b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/zh-tw.xaml
index d39754574..8ed16fe90 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/zh-tw.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginsManager/Languages/zh-tw.xaml
@@ -2,26 +2,26 @@
- 正在下載外掛
+ 正在下載擴充功能下載完成
- 錯誤:無法下載外掛
+ 錯誤:無法下載擴充功能{0} by {1} {2}{3}Would you like to uninstall this plugin? After the uninstallation Flow will automatically restart.{0} by {1} {2}{3}Would you like to install this plugin? After the installation Flow will automatically restart.
- 安裝外掛
+ 安裝擴充功能Installing Plugin下載並安裝 {0}
- 移除外掛
+ 解除安裝擴充功能外掛安裝成功。正在重啟 Flow,請稍後...Unable to find the plugin.json metadata file from the extracted zip file.Error: A plugin which has the same or greater version with {0} already exists.
- 安裝外掛時發生錯誤
+ 安裝擴充功能時發生錯誤嘗試安裝 {0} 時發生錯誤無可用更新所有插件均為最新版本{0} by {1} {2}{3}Would you like to update this plugin? After the update Flow will automatically restart.
- 外掛更新
+ 擴充功能更新This plugin has an update, would you like to see it?
- 已安裝此外掛
+ 已安裝此擴充功能Plugin Manifest Download FailedPlease check if you can connect to github.com. This error means you may not be able to install or update plugins.Installing from an unknown source
@@ -30,15 +30,15 @@
- 外掛管理
+ 擴充功能管理Management of installing, uninstalling or updating Flow Launcher plugins未知的作者打開網頁
- 查看外掛的網站
+ 查看擴充功能的網站查看原始碼
- 查看外掛的原始碼
+ 查看擴充功能的原始碼Suggest an enhancement or submit an issueSuggest an enhancement or submit an issue to the plugin developerGo to Flow's plugins repository
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml
index 50d556e98..e9bf86065 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Languages/zh-cn.xaml
@@ -20,21 +20,21 @@
休眠计算机保存所有 Flow Launcher 设置用新内容刷新插件数据
- 打开 Flow Launcher 的日志目录
+ 打开 Flow Launcher 的日志文件夹检查新的 Flow Launcher 更新访问 Flow Launcher 的文档以获取更多帮助以及使用技巧
- 打开存储 Flow Launcher 设置的位置
+ 打开Flow Launcher 设置文件夹成功所有 Flow Launcher 设置已保存重新加载了所有插件数据您确定要关机吗?
- 您确定要重启吗
- 您确定要以高级启动选项重启计算机吗?
- 你确定要注销吗?
+ 您确定要重启吗?
+ 您确定要以高级启动选项重启吗?
+ 您确定要注销吗?系统命令
- 系统系统相关的命令。例如,关机,锁定,设置等
+ 提供操作系统相关的命令,如关机、锁定、设置等。
diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx
index 5bac50743..f47b9ada3 100644
--- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx
+++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.sk-SK.resx
@@ -226,7 +226,7 @@
Area Apps
- Predvoľby hlasitosti aplikácia a predvoľby zariadenia
+ Hlasitosť aplikácie a predvoľby zariadeniaArea System, Added in Windows 10, version 1903
diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.uk-UA.resx b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.uk-UA.resx
index 7ac9fb64f..3b598e40c 100644
--- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.uk-UA.resx
+++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Properties/Resources.uk-UA.resx
@@ -701,7 +701,7 @@
Area Gaming
- Game Mode
+ Режим гриArea Gaming
diff --git a/README.md b/README.md
index fdd33f3f8..b78bb3e3e 100644
--- a/README.md
+++ b/README.md
@@ -276,6 +276,7 @@ And you can download