diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..454c4e976 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "nuget" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" + ignore: + - dependency-name: "squirrel-windows" + reviewers: + - "jjw24" + - "taooceros" + - "JohnTheGr8" diff --git a/Flow.Launcher.Core/ExternalPlugins/UserPlugin.cs b/Flow.Launcher.Core/ExternalPlugins/UserPlugin.cs index f98815c1a..bb1279b2c 100644 --- a/Flow.Launcher.Core/ExternalPlugins/UserPlugin.cs +++ b/Flow.Launcher.Core/ExternalPlugins/UserPlugin.cs @@ -1,4 +1,6 @@ -namespace Flow.Launcher.Core.ExternalPlugins +using System; + +namespace Flow.Launcher.Core.ExternalPlugins { public record UserPlugin { @@ -12,5 +14,8 @@ public string UrlDownload { get; set; } public string UrlSourceCode { get; set; } public string IcoPath { get; set; } + public DateTime LatestReleaseDate { get; set; } + public DateTime DateAdded { get; set; } + } } diff --git a/Flow.Launcher.Core/Flow.Launcher.Core.csproj b/Flow.Launcher.Core/Flow.Launcher.Core.csproj index 9f9fa8ff5..7d18c467b 100644 --- a/Flow.Launcher.Core/Flow.Launcher.Core.csproj +++ b/Flow.Launcher.Core/Flow.Launcher.Core.csproj @@ -54,7 +54,7 @@ - + diff --git a/Flow.Launcher.Core/Plugin/PluginManager.cs b/Flow.Launcher.Core/Plugin/PluginManager.cs index 383689c83..3b4a6e445 100644 --- a/Flow.Launcher.Core/Plugin/PluginManager.cs +++ b/Flow.Launcher.Core/Plugin/PluginManager.cs @@ -166,18 +166,18 @@ namespace Flow.Launcher.Core.Plugin public static ICollection ValidPluginsForQuery(Query query) { - if (NonGlobalPlugins.ContainsKey(query.ActionKeyword)) - { - var plugin = NonGlobalPlugins[query.ActionKeyword]; - return new List - { - plugin - }; - } - else - { + if (query is null) + return Array.Empty(); + + if (!NonGlobalPlugins.ContainsKey(query.ActionKeyword)) return GlobalPlugins; - } + + + var plugin = NonGlobalPlugins[query.ActionKeyword]; + return new List + { + plugin + }; } public static async Task> QueryForPluginAsync(PluginPair pair, Query query, CancellationToken token) diff --git a/Flow.Launcher.Core/Resource/Theme.cs b/Flow.Launcher.Core/Resource/Theme.cs index 205abcd34..872c4543e 100644 --- a/Flow.Launcher.Core/Resource/Theme.cs +++ b/Flow.Launcher.Core/Resource/Theme.cs @@ -17,7 +17,7 @@ namespace Flow.Launcher.Core.Resource { public class Theme { - private const int ShadowExtraMargin = 12; + private const int ShadowExtraMargin = 32; private readonly List _themeDirectories = new List(); private ResourceDictionary _oldResource; @@ -238,9 +238,10 @@ namespace Flow.Launcher.Core.Resource Property = Border.EffectProperty, Value = new DropShadowEffect { - Opacity = 0.4, - ShadowDepth = 2, - BlurRadius = 15 + Opacity = 0.3, + ShadowDepth = 12, + Direction = 270, + BlurRadius = 30 } }; @@ -250,7 +251,7 @@ namespace Flow.Launcher.Core.Resource marginSetter = new Setter() { Property = Border.MarginProperty, - Value = new Thickness(ShadowExtraMargin), + Value = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin), }; windowBorderStyle.Setters.Add(marginSetter); } diff --git a/Flow.Launcher.Core/Updater.cs b/Flow.Launcher.Core/Updater.cs index 976c4eec1..bad0344eb 100644 --- a/Flow.Launcher.Core/Updater.cs +++ b/Flow.Launcher.Core/Updater.cs @@ -141,6 +141,7 @@ namespace Flow.Launcher.Core { var translater = InternationalizationManager.Instance; var tips = string.Format(translater.GetTranslation("newVersionTips"), version); + return tips; } diff --git a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj index 930cf0b91..4a7bc20e3 100644 --- a/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj +++ b/Flow.Launcher.Infrastructure/Flow.Launcher.Infrastructure.csproj @@ -53,7 +53,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs index 8c1d7d74f..11f66c8af 100644 --- a/Flow.Launcher.Infrastructure/Image/ImageLoader.cs +++ b/Flow.Launcher.Infrastructure/Image/ImageLoader.cs @@ -252,6 +252,7 @@ namespace Flow.Launcher.Infrastructure.Image image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad; image.UriSource = new Uri(path); + image.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; image.EndInit(); return image; } diff --git a/Flow.Launcher.Infrastructure/StringMatcher.cs b/Flow.Launcher.Infrastructure/StringMatcher.cs index 3ffa9f7b1..46165a849 100644 --- a/Flow.Launcher.Infrastructure/StringMatcher.cs +++ b/Flow.Launcher.Infrastructure/StringMatcher.cs @@ -202,7 +202,11 @@ namespace Flow.Launcher.Infrastructure if (allQuerySubstringsMatched) { var nearestSpaceIndex = CalculateClosestSpaceIndex(spaceIndices, firstMatchIndex); - var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, + + // firstMatchIndex - nearestSpaceIndex - 1 is to set the firstIndex as the index of the first matched char + // preceded by a space e.g. 'world' matching 'hello world' firstIndex would be 0 not 6 + // giving more weight than 'we or donald' by allowing the distance calculation to treat the starting position at after the space. + var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, spaceIndices, lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString); var resultList = indexList.Select(x => translationMapping?.MapToOriginalIndex(x) ?? x).Distinct().ToList(); @@ -296,7 +300,7 @@ namespace Flow.Launcher.Infrastructure return currentQuerySubstringIndex >= querySubstringsLength; } - private static int CalculateSearchScore(string query, string stringToCompare, int firstIndex, int matchLen, + private static int CalculateSearchScore(string query, string stringToCompare, int firstIndex, List spaceIndices, int matchLen, bool allSubstringsContainedInCompareString) { // A match found near the beginning of a string is scored more than a match found near the end @@ -304,6 +308,14 @@ namespace Flow.Launcher.Infrastructure // while the score is lower if they are more spread out var score = 100 * (query.Length + 1) / ((1 + firstIndex) + (matchLen + 1)); + // Give more weight to a match that is closer to the start of the string. + // if the first matched char is immediately before space and all strings are contained in the compare string e.g. 'world' matching 'hello world' + // and 'world hello', because both have 'world' immediately preceded by space, their firstIndex will be 0 when distance is calculated, + // to prevent them scoring the same, we adjust the score by deducting the number of spaces it has from the start of the string, so 'world hello' + // will score slightly higher than 'hello world' because 'hello world' has one additional space. + if (firstIndex == 0 && allSubstringsContainedInCompareString) + score -= spaceIndices.Count; + // A match with less characters assigning more weights if (stringToCompare.Length - query.Length < 5) { diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index 8ecd6dc4b..27afff5b6 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; @@ -41,8 +41,17 @@ namespace Flow.Launcher.Infrastructure.UserSettings public bool UseGlyphIcons { get; set; } = true; public bool UseAnimation { get; set; } = true; public bool UseSound { get; set; } = true; + public bool UseClock { get; set; } = true; + public bool UseDate { get; set; } = false; + public string TimeFormat { get; set; } = "hh:mm tt"; + public string DateFormat { get; set; } = "MM'/'dd ddd"; public bool FirstLaunch { get; set; } = true; + public double SettingWindowWidth { get; set; } = 1000; + public double SettingWindowHeight { get; set; } = 700; + public double SettingWindowTop { get; set; } + public double SettingWindowLeft { get; set; } + public int CustomExplorerIndex { get; set; } = 0; [JsonIgnore] @@ -194,7 +203,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings } public bool LeaveCmdOpen { get; set; } public bool HideWhenDeactive { get; set; } = true; - public bool RememberLastLaunchLocation { get; set; } + public SearchWindowPositions SearchWindowPosition { get; set; } = SearchWindowPositions.MouseScreenCenter; public bool IgnoreHotkeysOnFullscreen { get; set; } public HttpProxy Proxy { get; set; } = new HttpProxy(); @@ -220,4 +229,12 @@ namespace Flow.Launcher.Infrastructure.UserSettings Light, Dark } -} \ No newline at end of file + public enum SearchWindowPositions + { + RememberLastLaunchLocation, + MouseScreenCenter, + MouseScreenCenterTop, + MouseScreenLeftTop, + MouseScreenRightTop + } +} diff --git a/Flow.Launcher.Plugin/Result.cs b/Flow.Launcher.Plugin/Result.cs index 136395467..7633e34a7 100644 --- a/Flow.Launcher.Plugin/Result.cs +++ b/Flow.Launcher.Plugin/Result.cs @@ -66,6 +66,10 @@ namespace Flow.Launcher.Plugin } } } + /// + /// Determines if Icon has a border radius + /// + public bool RoundedIcon { get; set; } = false; /// /// Delegate function, see diff --git a/Flow.Launcher.Test/Flow.Launcher.Test.csproj b/Flow.Launcher.Test/Flow.Launcher.Test.csproj index f429586ce..c4341288f 100644 --- a/Flow.Launcher.Test/Flow.Launcher.Test.csproj +++ b/Flow.Launcher.Test/Flow.Launcher.Test.csproj @@ -50,7 +50,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Flow.Launcher.Test/FuzzyMatcherTest.cs b/Flow.Launcher.Test/FuzzyMatcherTest.cs index bbddcbd2a..46c848c7a 100644 --- a/Flow.Launcher.Test/FuzzyMatcherTest.cs +++ b/Flow.Launcher.Test/FuzzyMatcherTest.cs @@ -129,14 +129,20 @@ namespace Flow.Launcher.Test } } + + /// + /// These are standard match scenarios + /// The intention of this test is provide a bench mark for how much the score has increased from a change. + /// Usually the increase in scoring should not be drastic, increase of less than 10 is acceptable. + /// [TestCase(Chrome, Chrome, 157)] - [TestCase(Chrome, LastIsChrome, 147)] + [TestCase(Chrome, LastIsChrome, 145)] [TestCase("chro", HelpCureHopeRaiseOnMindEntityChrome, 50)] [TestCase("chr", HelpCureHopeRaiseOnMindEntityChrome, 30)] [TestCase(Chrome, UninstallOrChangeProgramsOnYourComputer, 21)] [TestCase(Chrome, CandyCrushSagaFromKing, 0)] - [TestCase("sql", MicrosoftSqlServerManagementStudio, 110)] - [TestCase("sql manag", MicrosoftSqlServerManagementStudio, 121)] //double spacing intended + [TestCase("sql", MicrosoftSqlServerManagementStudio, 109)] + [TestCase("sql manag", MicrosoftSqlServerManagementStudio, 120)] //double spacing intended public void WhenGivenQueryString_ThenShouldReturn_TheDesiredScoring( string queryString, string compareString, int expectedScore) { @@ -275,7 +281,40 @@ namespace Flow.Launcher.Test $"Query: \"{queryString}\"{Environment.NewLine} " + $"CompareString1: \"{compareString1}\", Score: {compareString1Result.Score}{Environment.NewLine}" + $"Should be greater than{Environment.NewLine}" + - $"CompareString2: \"{compareString2}\", Score: {compareString1Result.Score}{Environment.NewLine}"); + $"CompareString2: \"{compareString2}\", Score: {compareString2Result.Score}{Environment.NewLine}"); + } + + [TestCase("red", "red colour", "metro red")] + [TestCase("red", "this red colour", "this colour red")] + [TestCase("red", "this red colour", "this colour is very red")] + [TestCase("red", "this red colour", "this colour is surprisingly super awesome red and cool")] + [TestCase("red", "this colour is surprisingly super red very and cool", "this colour is surprisingly super very red and cool")] + public void WhenGivenTwoStrings_Scoring_ShouldGiveMoreWeightToTheStringCloserToIndexZero( + string queryString, string compareString1, string compareString2) + { + // When + var matcher = new StringMatcher { UserSettingSearchPrecision = SearchPrecisionScore.Regular }; + + // Given + var compareString1Result = matcher.FuzzyMatch(queryString, compareString1); + var compareString2Result = matcher.FuzzyMatch(queryString, compareString2); + + Debug.WriteLine(""); + Debug.WriteLine("###############################################"); + Debug.WriteLine($"QueryString: \"{queryString}\"{Environment.NewLine}"); + Debug.WriteLine( + $"CompareString1: \"{compareString1}\", Score: {compareString1Result.Score}{Environment.NewLine}"); + Debug.WriteLine( + $"CompareString2: \"{compareString2}\", Score: {compareString2Result.Score}{Environment.NewLine}"); + Debug.WriteLine("###############################################"); + Debug.WriteLine(""); + + // Should + Assert.True(compareString1Result.Score > compareString2Result.Score, + $"Query: \"{queryString}\"{Environment.NewLine} " + + $"CompareString1: \"{compareString1}\", Score: {compareString1Result.Score}{Environment.NewLine}" + + $"Should be greater than{Environment.NewLine}" + + $"CompareString2: \"{compareString2}\", Score: {compareString2Result.Score}{Environment.NewLine}"); } [TestCase("vim", "Vim", "ignoreDescription", "ignore.exe", "Vim Diff", "ignoreDescription", "ignore.exe")] diff --git a/Flow.Launcher/ActionKeywords.xaml b/Flow.Launcher/ActionKeywords.xaml index e94aac9f6..740b0d402 100644 --- a/Flow.Launcher/ActionKeywords.xaml +++ b/Flow.Launcher/ActionKeywords.xaml @@ -58,7 +58,6 @@ throw new System.InvalidOperationException(); + } +} diff --git a/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs b/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs index e82fa959c..7586d1fcf 100644 --- a/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs +++ b/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs @@ -11,17 +11,17 @@ namespace Flow.Launcher.Converters [ValueConversion(typeof(bool), typeof(Visibility))] public class OpenResultHotkeyVisibilityConverter : IValueConverter { - private const int MaxVisibleHotkeys = 9; + private const int MaxVisibleHotkeys = 10; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - var hotkeyNumber = int.MaxValue; + var number = int.MaxValue; if (value is ListBoxItem listBoxItem && ItemsControl.ItemsControlFromItemContainer(listBoxItem) is ListBox listBox) - hotkeyNumber = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; + number = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; - return hotkeyNumber <= MaxVisibleHotkeys ? Visibility.Visible : Visibility.Collapsed; + return number <= MaxVisibleHotkeys ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new System.InvalidOperationException(); diff --git a/Flow.Launcher/Converters/OrdinalConverter.cs b/Flow.Launcher/Converters/OrdinalConverter.cs index f9fa220e3..0c716ac7e 100644 --- a/Flow.Launcher/Converters/OrdinalConverter.cs +++ b/Flow.Launcher/Converters/OrdinalConverter.cs @@ -10,7 +10,10 @@ namespace Flow.Launcher.Converters { if (value is ListBoxItem listBoxItem && ItemsControl.ItemsControlFromItemContainer(listBoxItem) is ListBox listBox) - return listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; + { + var res = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1; + return res == 10 ? 0 : res; // 10th item => HOTKEY+0 + } return 0; } diff --git a/Flow.Launcher/Converters/TextConverter.cs b/Flow.Launcher/Converters/TextConverter.cs new file mode 100644 index 000000000..90d445776 --- /dev/null +++ b/Flow.Launcher/Converters/TextConverter.cs @@ -0,0 +1,32 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using Flow.Launcher.Core.Resource; +using Flow.Launcher.ViewModel; + +namespace Flow.Launcher.Converters +{ + public class TextConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var ID = value.ToString(); + switch(ID) + { + case PluginStoreItemViewModel.NewRelease: + return InternationalizationManager.Instance.GetTranslation("pluginStore_NewRelease"); + case PluginStoreItemViewModel.RecentlyUpdated: + return InternationalizationManager.Instance.GetTranslation("pluginStore_RecentlyUpdated"); + case PluginStoreItemViewModel.None: + return InternationalizationManager.Instance.GetTranslation("pluginStore_None"); + case PluginStoreItemViewModel.Installed: + return InternationalizationManager.Instance.GetTranslation("pluginStore_Installed"); + default: + return ID; + } + + } + + public object ConvertBack(object value, System.Type targetType, object parameter, CultureInfo culture) => throw new System.InvalidOperationException(); + } +} diff --git a/Flow.Launcher/CustomQueryHotkeySetting.xaml b/Flow.Launcher/CustomQueryHotkeySetting.xaml index 187f99d18..ddf0d0e45 100644 --- a/Flow.Launcher/CustomQueryHotkeySetting.xaml +++ b/Flow.Launcher/CustomQueryHotkeySetting.xaml @@ -64,7 +64,6 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -114,4 +115,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Flow.Launcher/Helper/HotKeyMapper.cs b/Flow.Launcher/Helper/HotKeyMapper.cs index a3ad20f77..b9ac6afb3 100644 --- a/Flow.Launcher/Helper/HotKeyMapper.cs +++ b/Flow.Launcher/Helper/HotKeyMapper.cs @@ -17,7 +17,7 @@ namespace Flow.Launcher.Helper internal static void Initialize(MainViewModel mainVM) { mainViewModel = mainVM; - settings = mainViewModel._settings; + settings = mainViewModel.Settings; SetHotkey(settings.Hotkey, OnToggleHotkey); LoadCustomPluginHotkey(); diff --git a/Flow.Launcher/Images/app_missing_img.png b/Flow.Launcher/Images/app_missing_img.png index b86c29ac9..27e366bbc 100644 Binary files a/Flow.Launcher/Images/app_missing_img.png and b/Flow.Launcher/Images/app_missing_img.png differ diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml index 6bcd3c0f7..25bd195dd 100644 --- a/Flow.Launcher/Languages/da.xaml +++ b/Flow.Launcher/Languages/da.xaml @@ -50,6 +50,7 @@ Vælg Skjul Flow Launcher ved opstart Hide tray icon + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Plugin bibliotek af Initaliseringstid: Søgetid: | Version Website + Uninstall Plugin Store Refresh - Install + Install Tema @@ -155,11 +158,13 @@ Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com, or go to https://github.com/Flow-Launcher/Flow.Launcher/releases to download updates manually. - Release Notes: + Release Notes Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml index cf73baa22..ebd549adf 100644 --- a/Flow.Launcher/Languages/de.xaml +++ b/Flow.Launcher/Languages/de.xaml @@ -50,6 +50,7 @@ Auswählen Verstecke Flow Launcher bei Systemstart Statusleistensymbol ausblenden + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Suchgenauigkeit abfragen Erforderliche Suchergebnisse. Pinyin aktivieren @@ -69,18 +70,20 @@ Aktuelle Priorität Neue Priorität Priorität + Change Plugin Results Priority Pluginordner von Initialisierungszeit: Abfragezeit: Version Webseite + Deinstallieren Erweiterungen laden Aktualisieren - Installieren + Installieren Design @@ -155,11 +158,13 @@ Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com, or go to https://github.com/Flow-Launcher/Flow.Launcher/releases to download updates manually. - Versionshinweise: + Versionshinweise Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index bdf745052..0eff97f4a 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -23,6 +23,8 @@ Text Game Mode Suspend the use of Hotkeys. + Position Reset + Reset search window position Flow Launcher Settings @@ -33,7 +35,13 @@ Error setting launch on startup Hide Flow Launcher when focus is lost Do not show new version notifications + Search Window Position Remember last launch location + Remember Last Location + Mouse Focused Screen - Center + Mouse Focused Screen - Center Top + Mouse Focused Screen - Left Top + Mouse Focused Screen - Right Top Language Last Query Style Show/Hide previous results when Flow Launcher is reactivated. @@ -41,6 +49,7 @@ Select last Query Empty last Query Maximum results shown + You can also quickly adjust this by using CTRL+Plus and CTRL+Minus. Ignore hotkeys in fullscreen mode Disable Flow Launcher activation when a full screen application is active (Recommended for games). Default File Manager @@ -52,6 +61,7 @@ Select Hide Flow Launcher on startup Hide tray icon + 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. Should Use Pinyin @@ -59,6 +69,10 @@ Shadow effect is not allowed while current theme has blur effect enabled + Search Plugin + Ctrl+F to search plugins + No results found + Please try a different search. Plugin Find more plugins On @@ -71,6 +85,7 @@ Current Priority New Priority Priority + Change Plugin Results Priority Plugin Directory by Init time: @@ -81,8 +96,20 @@ Plugin Store + New Release + Recently Updated + Plugins + Installed Refresh - Install + Install + Uninstall + Update + Plug-in already installed + New Version + This plug-in has been updated within the last 7 days + New Update is Available + + Theme @@ -105,6 +132,8 @@ Play a small sound when the search window opens Animation Use Animation in UI + Clock + Date Hotkey @@ -124,6 +153,7 @@ Query window shadow effect Shadow effect has a substantial usage of GPU. Not recommended if your computer performance is limited. Window Width Size + You can also quickly adjust this by using Ctrl+[ and Ctrl+]. Use Segoe Fluent Icons Use Segoe Fluent Icons for query results where supported @@ -162,6 +192,8 @@ DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/es-419.xaml b/Flow.Launcher/Languages/es-419.xaml index 8ce9f12cf..a410f4b32 100644 --- a/Flow.Launcher/Languages/es-419.xaml +++ b/Flow.Launcher/Languages/es-419.xaml @@ -50,6 +50,7 @@ Seleccionar Ocultar Flow Launcher al arrancar el sistema Ocultar icono de la bandeja + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Precisión de la búsqueda Cambia la puntuación mínima de similitud requerida para resultados. Debe usar Pinyin @@ -69,18 +70,20 @@ Prioridad Actual Nueva Prioridad Prioridad + Cambiar la prioridad del resultado del plugin Directorio de Plugins por Tiempo de inicio: Tiempo de consulta: | Versión Sitio web + Uninstall Tienda de Plugins Recargar - Instalar + Instalar Tema @@ -160,6 +163,8 @@ Herramientas de desarrollo Carpeta de Configuración Carpeta de registros + Clear Logs + Are you sure you want to delete all logs? Asistente diff --git a/Flow.Launcher/Languages/es.xaml b/Flow.Launcher/Languages/es.xaml index d30cd16c9..0950595fa 100644 --- a/Flow.Launcher/Languages/es.xaml +++ b/Flow.Launcher/Languages/es.xaml @@ -50,6 +50,7 @@ Seleccionar Ocultar Flow Launcher al inicio Ocultar icono de la bandeja del sistema + Cuando el icono está oculto en la bandeja del sistema, se puede abrir el menú de configuración haciendo clic con el botón derecho en la ventana de búsqueda. Precisión en la búsqueda de consultas Cambia la puntuación mínima requerida para la coincidencia de los resultados. Utilizar Pinyin @@ -57,7 +58,7 @@ El efecto de sombra no está permitido mientras el tema actual tenga el efecto de desenfoque activado - Complemento + Complementos Buscar más complementos Activado Desactivado @@ -69,12 +70,14 @@ Prioridad actual Nueva prioridad Prioridad + Cambiar la prioridad de los resultados del complemento Carpeta de complementos por Tiempo de inicio: Tiempo de consulta: | Versión Sitio web + Desinstalar @@ -157,9 +160,11 @@ Notas de la versión Consejos de uso - Herramientas de desarrolador + Herramientas de desarrollador Carpeta de configuración Carpeta de registros + Eliminar registros + ¿Está seguro que desea eliminar todos los registros? Asistente diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml index cbcd84307..edc5e4f07 100644 --- a/Flow.Launcher/Languages/fr.xaml +++ b/Flow.Launcher/Languages/fr.xaml @@ -50,6 +50,7 @@ Sélectionner Cacher Flow Launcher au démarrage Masquer icône du plateau + 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. Devrait utiliser le pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Répertoire by Chargement : Utilisation : | Version Website + Désinstaller Plugin Store Refresh - Install + Install Thèmes @@ -154,11 +157,13 @@ Échec du téléchargement de la mise à jour, vérifiez votre connexion et vos paramètres de configuration proxy pour pouvoir acceder à github-cloud.s3.amazonaws.com, ou téléchargez manuelement la mise à jour sur https://github.com/Flow-Launcher/Flow.Launcher/releases. - Notes de changement : + Notes de changement Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml index 04655c226..30a401875 100644 --- a/Flow.Launcher/Languages/it.xaml +++ b/Flow.Launcher/Languages/it.xaml @@ -10,23 +10,23 @@ Ultima esecuzione: {0} Apri Impostazioni - About + Informazioni Esci - Close - Copy - Cut - Paste + Chiudi + Copia + Taglia + Incolla File - Folder - Text - Game Mode - Suspend the use of Hotkeys. + Cartella + Testo + Modalità gioco + Sospendere l'uso dei tasti di scelta rapida. Impostaizoni Flow Launcher Generale - Portable Mode - Store all settings and user data in one folder (Useful when used with removable drives or cloud services). + Modalità portatile + Memorizzare tutte le impostazioni e i dati dell'utente in un'unica cartella (utile se utilizzato con unità rimovibili o servizi cloud). Avvia Wow all'avvio di Windows Error setting launch on startup Nascondi Flow Launcher quando perde il focus @@ -34,80 +34,83 @@ Ricorda l'ultima posizione di avvio del launcher Lingua Comportamento ultima ricerca - Show/Hide previous results when Flow Launcher is reactivated. + Mostra/nasconde i risultati precedenti quando Flow Launcher viene riattivato. Conserva ultima ricerca Seleziona ultima ricerca Cancella ultima ricerca Numero massimo di risultati mostrati Ignora i tasti di scelta rapida in applicazione a schermo pieno - Disable Flow Launcher activation when a full screen application is active (Recommended for games). - Default File Manager - Select the file manager to use when opening the folder. - Default Web Browser - Setting for New Tab, New Window, Private Mode. + Disattivare l'attivazione di Flow Launcher quando è attiva un'applicazione a schermo intero (consigliato per i giochi). + Gestore File predefinito + Selezionare il Gestore file da usare all'apertura della cartella. + Browser predefinito + Impostazione per Nuova scheda, Nuova finestra, Modalità privata. Cartella Python Aggiornamento automatico Seleziona Nascondi Flow Launcher all'avvio - Hide tray icon - Query Search Precision - Changes minimum match score required for results. - Should Use Pinyin - Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese - Shadow effect is not allowed while current theme has blur effect enabled + Nascondi Icona nell'Area di Notifica + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. + Precisione di ricerca delle query + Modifica il punteggio minimo richiesto per i risultati. + Dovrebbe usare il Pinyin + Consente di utilizzare il Pinyin per la ricerca. Il Pinyin è il sistema standard di ortografia romanizzata per la traduzione del cinese + L'effetto ombra non è consentito mentre il tema corrente ha un effetto di sfocatura abilitato Plugin Cerca altri plugins - On + Attivo Disabilita - Action keyword Setting + Impostazioni parola chiave Azione Parole chiave - Current action keyword - New action keyword - Change Action Keywords - Current Priority - New Priority - Priority + Parola chiave di azione corrente + Nuova parola chiave d'azione + Cambia Keywords Azione + Priorità Attuale + Nuova Priorità + Priorità + Change Plugin Results Priority Cartella Plugin - by + da Tempo di avvio: Tempo ricerca: - | Version - Website + | Versione + Sito Web + Disinstalla - Plugin Store - Refresh - Install + Negozio dei Plugin + Aggiorna + Installa Tema Sfoglia per altri temi - How to create a theme - Hi There + Come creare un tema + Ciao Font campo di ricerca Font campo risultati Modalità finestra Opacità - Theme {0} not exists, fallback to default theme - Fail to load theme {0}, fallback to default theme - Theme Folder - Open Theme Folder - Color Scheme - System Default - Light - Dark - Sound Effect - Play a small sound when the search window opens - Animation - Use Animation in UI + Il tema {0} non esiste, si ritorna al tema predefinito + Impossibile caricare il tema {0}, si torna al tema predefinito + Cartella temi + Apri cartella del tema + Schema di colore + Sistema predefinito + Chiaro + Scuro + Effetto sonoro + Riproduce un piccolo suono all'apertura della finestra di ricerca + Animazione + Usa l'animazione nell'interfaccia utente Tasti scelta rapida Tasto scelta rapida Flow Launcher - Enter shortcut to show/hide Flow Launcher. + Immettere la scorciatoia per mostrare/nascondere Flow Launcher. Apri modificatori di risultato Select a modifier key to open selected result via keyboard. Mostra tasto di scelta rapida @@ -130,7 +133,7 @@ Abilita Proxy HTTP Server HTTP Porta - User Name + Nome utente Password Proxy Test Salva @@ -142,10 +145,10 @@ Connessione Proxy fallita - About - Website + Informazioni + Sito web Github - Docs + Documentazione Versione Hai usato Flow Launcher {0} volte Cerca aggiornamenti @@ -155,11 +158,13 @@ Download degli aggiornamenti fallito, per favore controlla la tua connessione ed eventuali impostazioni proxy per github-cloud.s3.amazonaws.com, oppure vai su https://github.com/Flow-Launcher/Flow.Launcher/releases per scaricare gli aggiornamenti manualmente. - Note di rilascio: + Note di rilascio Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard @@ -173,10 +178,10 @@ Arg For File - Default Web Browser + Browser predefinito The default setting follows the OS default browser setting. If specified separately, flow uses that browser. Browser - Browser Name + Nome del browser Browser Path New Window New Tab @@ -251,37 +256,37 @@ Descrizione aggiornamento - Skip + 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 - Search and run all files and applications on your PC - Search everything from applications, files, bookmarks, YouTube, Twitter and more. All from the comfort of your keyboard without ever touching the mouse. - Flow Launcher starts with the hotkey below, go ahead and try it out now. To change it, click on the input and press the desired hotkey on the keyboard. - Hotkeys - Action Keyword and Commands - 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. - Let's Start Flow Launcher - Finished. Enjoy Flow Launcher. Don't forget the hotkey to start :) + Cerca ed esegue tutti i file e le applicazioni presenti sul PC + Cerca 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. + Scorciatoie + Scorciatoie e comandi + Cercate sul web, avviate applicazioni o eseguite varie funzioni tramite i plugin di Flow Launcher. Alcune funzioni iniziano con una parola chiave di azione e, se necessario, possono essere utilizzate senza parole chiave di azione. Provate le query seguenti in Flow Launcher. + Avviamo Flow Launcher + Finito. Goditi Flow Launcher. Non dimenticare il tasto di scelta rapida per iniziare :) - Back / Context Menu - Item Navigation - Open Context Menu - Open Contaning Folder - Run as Admin - Query History - Back to Result in Context Menu - Autocomplete - Open / Run Selected Item - Open Setting Window - Reload Plugin Data + Indietro / Menu contestuale + Navigazione tra le voci + Apri il menu di scelta rapida + Apri la cartella Contaning + Esegui come amministratore + Cronologia Query + Torna al risultato nel menu contestuale + Autocompleta + Apri / Esegui Elemento Selezionato + Aprire la finestra delle impostazioni + Ricarica i dati del plugin - Weather - Weather in Google Result + Meteo + Meteo nel risultato di Google > ping 8.8.8.8 - Shell Command + Comando Della shell Bluetooth Bluetooth in Windows Settings sn diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml index e34c615b7..a2dcfb6a0 100644 --- a/Flow.Launcher/Languages/ja.xaml +++ b/Flow.Launcher/Languages/ja.xaml @@ -50,6 +50,7 @@ 選択 起動時にFlow Launcherを隠す トレイアイコンを隠す + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority 重要度 + Change Plugin Results Priority プラグイン・ディレクトリ by 初期化時間: クエリ時間: | バージョン ウェブサイト + アンインストール プラグインストア Refresh - Install + Install テーマ @@ -155,11 +158,13 @@ 更新のダウンロードに失敗しました、github-cloud.s3.amazonaws.com への接続とプロキシ設定を確認するか、 https://github.com/Flow-Launcher/Flow.Launcher/releases から手動でアップデートをダウンロードしてください。 - リリースノート: + リリースノート Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml index a5ad2647f..acb68cb4f 100644 --- a/Flow.Launcher/Languages/ko.xaml +++ b/Flow.Launcher/Languages/ko.xaml @@ -50,6 +50,7 @@ 선택 시작 시 Flow Launcher 숨김 트레이 아이콘 숨기기 + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. 쿼리 검색 정밀도 검색 결과에 필요한 최소 매치 점수를 변경합니다. 항상 Pinyin 사용 @@ -69,24 +70,26 @@ 현재 중요도: 새 중요도: 중요도 + 플러그인 결과 우선 순위 변경 플러그인 폴더 제작자 초기화 시간: 쿼리 시간: | 버전 웹사이트 + 제거 플러그인 스토어 새로고침 - 설치 + 설치 테마 테마 갤러리 테마 제작 안내 - 안녕하세요. + 안녕하세요! 쿼리 상자 글꼴 결과 항목 글꼴 윈도우 모드 @@ -160,6 +163,8 @@ 개발자도구 설정 폴더 로그 폴더 + Clear Logs + Are you sure you want to delete all logs? 마법사 diff --git a/Flow.Launcher/Languages/nb.xaml b/Flow.Launcher/Languages/nb.xaml index 52885ea47..0848e9d64 100644 --- a/Flow.Launcher/Languages/nb.xaml +++ b/Flow.Launcher/Languages/nb.xaml @@ -50,6 +50,7 @@ Select Hide Flow Launcher on startup Hide tray icon + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Plugin Directory by Init time: Query time: | Version Website + Uninstall Plugin Store Refresh - Install + Install Theme @@ -160,6 +163,8 @@ DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml index 1223df76f..e398afa51 100644 --- a/Flow.Launcher/Languages/nl.xaml +++ b/Flow.Launcher/Languages/nl.xaml @@ -50,6 +50,7 @@ Selecteer Verberg Flow Launcher als systeem opstart Systeemvakpictogram verbergen + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Zoekopdracht nauwkeurigheid Wijzigt de minimale overeenkomst-score die vereist is voor resultaten. Zou Pinyin moeten gebruiken @@ -69,18 +70,20 @@ Huidige Prioriteit Nieuwe Prioriteit Prioriteit + Change Plugin Results Priority Plugin map door Init tijd: Query tijd: | Versie Website + Uninstall Plugin Winkel Vernieuwen - Installeren + Installeren Thema @@ -155,11 +158,13 @@ Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com, or go to https://github.com/Flow-Launcher/Flow.Launcher/releases to download updates manually. - Release Notes: + Release Notes Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml index 901083f07..fc5badd69 100644 --- a/Flow.Launcher/Languages/pl.xaml +++ b/Flow.Launcher/Languages/pl.xaml @@ -50,6 +50,7 @@ Wybierz Uruchamiaj Flow Launcher zminimalizowany Ukryj ikonę zasobnika + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Folder wtyczki by Czas ładowania: Czas zapytania: | Version Website + Odinstalowywanie Plugin Store Refresh - Install + Install Skórka @@ -155,11 +158,13 @@ Download updates failed, please check your connection and proxy settings to github-cloud.s3.amazonaws.com, or go to https://github.com/Flow-Launcher/Flow.Launcher/releases to download updates manually. - Zmiany: + Zmiany Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml index d23c24e7f..f6fc062c6 100644 --- a/Flow.Launcher/Languages/pt-br.xaml +++ b/Flow.Launcher/Languages/pt-br.xaml @@ -50,6 +50,7 @@ Selecionar Esconder Flow Launcher na inicialização Hide tray icon + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Diretório de Plugins by Tempo de inicialização: Tempo de consulta: | Version Website + Desinstalar Plugin Store Refresh - Install + Install Tema @@ -160,6 +163,8 @@ DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/pt-pt.xaml b/Flow.Launcher/Languages/pt-pt.xaml index c78519966..b19fc9924 100644 --- a/Flow.Launcher/Languages/pt-pt.xaml +++ b/Flow.Launcher/Languages/pt-pt.xaml @@ -50,6 +50,7 @@ Selecionar Ocultar Flow Launcher ao arrancar Ocultar ícone na bandeja + Se o ícone da bandeja estiver oculto, pode abrir as Definições com um clique com o botão direito do rato na caixa de pesquisa. Precisão da consulta Altera a precisão mínima necessário para obter resultados Utilizar Pinyin @@ -69,18 +70,20 @@ Prioridade atual Nova prioridade Prioridade + Alterar prioridade dos resultados do plugin Diretório de plugins de Tempo de arranque: Tempo de consulta: | Versão Site + Desinstalar Loja de plugins Recarregar - Instalar + Instalar Tema @@ -159,6 +162,8 @@ DevTools Pasta de definições Pasta de registos + Clear Logs + Are you sure you want to delete all logs? Assistente diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml index 691d37538..87b3dd4ef 100644 --- a/Flow.Launcher/Languages/ru.xaml +++ b/Flow.Launcher/Languages/ru.xaml @@ -50,6 +50,7 @@ Select Hide Flow Launcher on startup Hide tray icon + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Директория плагинов by Инициализация: Запрос: | Version Website + Удалить Plugin Store Refresh - Install + Install Тема @@ -160,6 +163,8 @@ DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml index 20b259f9f..ee703bcf8 100644 --- a/Flow.Launcher/Languages/sk.xaml +++ b/Flow.Launcher/Languages/sk.xaml @@ -50,6 +50,7 @@ Vybrať Schovať Flow Launcher po spustení Schovať ikonu z oblasti oznámení + Keď je ikona skrytá z oblasti oznámení, nastavenia možno otvoriť kliknutím pravým tlačidlom myši na okno vyhľadávania. Presnosť vyhľadávania Mení minimálne skóre zhody potrebné na zobrazenie výsledkov. Použiť Pinyin @@ -69,18 +70,20 @@ Aktuálna priorita Nová priorita Priorita + Zmena priority výsledkov pluginu Priečinok s pluginmi od Inicializácia: Trvanie dopytu: | Verzia Webstránka + Odinštalovať Repozitár pluginov Obnoviť - Inštalovať + Inštalovať Motív @@ -160,6 +163,8 @@ Nástroje pre vývojárov Priečinok s nastaveniami Priečinok s logmi + Vymazať logy + Naozaj chcete odstrániť všetky logy? Sprievodca diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml index b15bbc194..e805860dc 100644 --- a/Flow.Launcher/Languages/sr.xaml +++ b/Flow.Launcher/Languages/sr.xaml @@ -50,6 +50,7 @@ Izaberi Sakrij Flow Launcher pri podizanju sistema Hide tray icon + 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. Should Use Pinyin @@ -69,18 +70,20 @@ Current Priority New Priority Priority + Change Plugin Results Priority Plugin direktorijum by Vreme inicijalizacije: Vreme upita: | Version Website + Uninstall Plugin Store Refresh - Install + Install Tema @@ -155,11 +158,13 @@ Neuspešno preuzimanje ažuriranja, molim Vas proverite vašu vezu i podešavanja za proksi prema github-cloud.s3.amazonaws.com, ili posetite https://github.com/Flow-Launcher/Flow.Launcher/releases da preuzmete ažuriranja ručno. - U novoj verziji: + U novoj verziji Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml index ec609de37..4a016ced8 100644 --- a/Flow.Launcher/Languages/tr.xaml +++ b/Flow.Launcher/Languages/tr.xaml @@ -50,6 +50,7 @@ Seç Başlangıçta Flow Launcher'u gizle Sistem çekmecesi simgesini gizle + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Sorgu Arama Hassasiyeti Sonuçlar için gereken minimum maç puanını değiştirir. Pinyin kullanılmalı @@ -69,18 +70,20 @@ Mevcut öncelik Yeni Öncelik Öncelik + Change Plugin Results Priority Eklenti Klasörü Yapımcı: Açılış Süresi: Sorgu Süresi: Sürüm İnternet Sitesi + Kaldır Eklenti Mağazası Yenile - İndir + İndir Temalar @@ -155,11 +158,13 @@ Güncellemenin yüklenmesi başarısız oldu. Lütfen bağlantınız ve vekil sunucu ayarlarınızın github-cloud.s3.amazonaws.com adresine ulaşabilir olduğunu kontrol edin ya da https://github.com/Flow-Launcher/Flow.Launcher/releases adresinden güncellemeyi elle indirin. - Sürüm Notları: + Sürüm Notları Usage Tips DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml index c2d5302a6..a34ed4e8b 100644 --- a/Flow.Launcher/Languages/uk-UA.xaml +++ b/Flow.Launcher/Languages/uk-UA.xaml @@ -50,6 +50,7 @@ Вибрати Сховати Flow Launcher при запуску системи Приховати значок в системному лотку + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. Точність пошуку запитів Змінює мінімальний бал збігів, необхідних для результатів. Використовувати піньїнь @@ -69,18 +70,20 @@ Поточний пріоритет Новий пріоритет Пріоритет + Change Plugin Results Priority Директорія плагінів за Ініціалізація: Запит: | Версія Сайт + Uninstall Магазин плагінів Оновити - Встановити + Встановити Тема @@ -160,6 +163,8 @@ DevTools Setting Folder Log Folder + Clear Logs + Are you sure you want to delete all logs? Wizard diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml index b3bd5fd1f..b62736d16 100644 --- a/Flow.Launcher/Languages/zh-cn.xaml +++ b/Flow.Launcher/Languages/zh-cn.xaml @@ -28,7 +28,7 @@ 便携模式 将所有设置和用户数据存储在一个文件夹中 (可用于可移除驱动器或云服务)。 开机自启 - Error setting launch on startup + 设置开机自启时出错 失去焦点时自动隐藏 Flow Launcher 不显示新版本提示 记住上次启动位置 @@ -40,7 +40,7 @@ 清空上次搜索关键字 最大结果显示个数 全屏模式下忽略热键 - 当全屏应用程序激活时禁用快捷键(建议游戏时打开)。 + 当全屏应用程序激活时禁用快捷键 (建议游戏时打开) 。 默认文件管理器 选择打开文件夹时要使用的文件管理器。 默认浏览器 @@ -50,6 +50,7 @@ 选择 系统启动时不显示主窗口 隐藏任务栏图标 + 任务栏图标被隐藏时,右键点击搜索窗口即可打开设置菜单。 查询搜索精度 更改匹配成功所需的最低分数。 启动拼音搜索 @@ -69,18 +70,20 @@ 当前优先级 新优先级 优先级 + 更改插件结果优先级 插件目录 出自 加载耗时: 查询耗时: | 版本 官方网站 + 卸载 插件商店 刷新 - 安装 + 安装 主题 @@ -108,10 +111,10 @@ 热键 Flow Launcher 激活热键 输入显示/隐藏 Flow Launcher 的快捷键。 - 开放结果修饰符 - 指定修饰符用于打开指定的选项。 + 打开结果快捷键修饰符 + 选择一个用以打开搜索结果的按键修饰符。 显示热键 - 显示热键用于快速选择选项。 + 显示用于打开结果的快捷键。 自定义查询热键 查询 删除 @@ -155,11 +158,13 @@ 下载更新失败,请检查您与 github-cloud.s3.amazonaws.com 的连接状态或检查代理设置, 或访问 https://github.com/Flow-Launcher/Flow.Launcher/releases 手动下载更新 - 更新说明: - 使用技巧: + 更新说明 + 使用技巧 开发工具 设置目录 日志目录 + 清除日志 + 你确定要删除所有的日志吗? 向导 @@ -256,11 +261,11 @@ 你好,这是你第一次运行 Flow Launcher! 在启动前,这个向导将有助于设置 Flow Launcher。如果您愿意,您可以跳过。请选择一种语言 搜索并运行您PC上的文件和应用程序 - 搜索所有应用程序、 文件、 书签、 YouTube、 Twitter等。所有都只需要键盘而不需要触摸鼠标。 + 搜索所有应用程序、 文件、 书签、 YouTube、 Twitter等。所有都只需要键盘而不需要鼠标。 Flow Launcher 默认使用下面的快捷键激活。 要更改它,请点击输入并按键盘上所需的热键。 快捷键 动作关键词和命令 - 通过 Flow Launcher 插件搜索网站、启动应用程序或运行各种功能。 某些函数起始于一个动作关键词,如有必要,它们可以在没有动作关键词的情况下使用。欢迎尝试一下的查询语句。 + 通过 Flow Launcher 插件搜索网站、启动应用程序或运行各种功能。某些功能使用一个动作关键词激活,如有必要,它们也可以在没有动作关键词的情况下使用。欢迎尝试以下的查询语句。 开始使用 Flow Launcher 完成了!享受 Flow Launcher。不要忘记激活快捷键 :) @@ -268,7 +273,7 @@ 返回/上下文菜单 选项导航 - 打开菜单目录 + 打开上下文菜单 打开所在目录 以管理员身份运行 查询历史 @@ -285,6 +290,6 @@ Bluetooth Windows 设置中的蓝牙 sn - Sticky Notes + 便笺 diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml index fea505526..69abbe401 100644 --- a/Flow.Launcher/Languages/zh-tw.xaml +++ b/Flow.Launcher/Languages/zh-tw.xaml @@ -42,7 +42,7 @@ 全螢幕模式下忽略快捷鍵 全螢幕模式下停用快捷鍵(推薦用於遊戲時)。 預設檔案管理器 - 選擇打開資料夾時要使用的檔案管理器。 + 選擇開啟資料夾時要使用的檔案管理器。 預設瀏覽器 設定新增分頁、視窗和無痕模式。 Python 路徑 @@ -50,6 +50,7 @@ 選擇 啟動時不顯示主視窗 隱藏任務欄圖標 + When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. 查詢搜索精確度 Changes minimum match score required for results. 拼音搜索 @@ -69,18 +70,20 @@ 目前優先 新增優先 優先 + 更改插件結果優先順序 外掛資料夾 作者 載入耗時: 查詢耗時: | 版本 官方網站 + 解除安裝 外掛商店 重新整理 - 安裝 + 安裝 主題 @@ -155,11 +158,13 @@ 下載更新失敗,請檢查您對 github-cloud.s3.amazonaws.com 的連線和代理設定, 或是到 https://github.com/Flow-Launcher/Flow.Launcher/releases 手動下載更新。 - 更新說明: + 更新說明 使用技巧 開發工具 設定資料夾 日誌資料夾 + Clear Logs + Are you sure you want to delete all logs? 嚮導 diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index 714fcc53f..6f3915076 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -1,5 +1,4 @@ - + - - - - - + + + + - - - - - - - - - - - + + + + + + + + + - - - + - - - - - - - - - - + - + - - - - + + + - - + - - - - + + + - - + + + + + + + + - - - - - - - + + + - @@ -270,14 +306,16 @@ - - - + + + - @@ -285,14 +323,16 @@ - - - + + + - @@ -300,4 +340,4 @@ - + \ No newline at end of file diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 2b7db38cf..630daf42e 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.ComponentModel; using System.Threading.Tasks; using System.Windows; @@ -20,6 +20,8 @@ using Flow.Launcher.Infrastructure; using System.Windows.Media; using Flow.Launcher.Infrastructure.Hotkey; using Flow.Launcher.Plugin.SharedCommands; +using System.Windows.Threading; +using System.Windows.Data; namespace Flow.Launcher { @@ -43,6 +45,7 @@ namespace Flow.Launcher DataContext = mainVM; _viewModel = mainVM; _settings = settings; + InitializeComponent(); InitializePosition(); animationSound.Open(new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources\\open.wav")); @@ -52,6 +55,7 @@ namespace Flow.Launcher { InitializeComponent(); } + private void OnCopy(object sender, ExecutedRoutedEventArgs e) { if (QueryTextBox.SelectionLength == 0) @@ -89,6 +93,7 @@ namespace Flow.Launcher InitializeColorScheme(); WindowsInteropHelper.DisableControlBox(this); InitProgressbarAnimation(); + InitializePosition(); // since the default main window visibility is visible // so we need set focus during startup QueryTextBox.Focus(); @@ -106,7 +111,6 @@ namespace Flow.Launcher animationSound.Position = TimeSpan.Zero; animationSound.Play(); } - UpdatePosition(); Activate(); QueryTextBox.Focus(); @@ -136,22 +140,20 @@ namespace Flow.Launcher } case nameof(MainViewModel.ProgressBarVisibility): { - Dispatcher.Invoke(async () => + Dispatcher.Invoke(() => { if (_viewModel.ProgressBarVisibility == Visibility.Hidden && !isProgressBarStoryboardPaused) { - await Task.Delay(50); _progressBarStoryboard.Stop(ProgressBar); isProgressBarStoryboardPaused = true; } else if (_viewModel.MainWindowVisibilityStatus && - isProgressBarStoryboardPaused) + isProgressBarStoryboardPaused) { _progressBarStoryboard.Begin(ProgressBar, true); isProgressBarStoryboardPaused = false; } - }, System.Windows.Threading.DispatcherPriority.Render); - + }); break; } case nameof(MainViewModel.QueryTextCursorMovedToEnd): @@ -161,6 +163,7 @@ namespace Flow.Launcher _viewModel.QueryTextCursorMovedToEnd = false; } break; + } }; _settings.PropertyChanged += (o, e) => @@ -176,21 +179,40 @@ namespace Flow.Launcher case nameof(Settings.Hotkey): UpdateNotifyIconText(); break; + case nameof(Settings.WindowLeft): + Left = _settings.WindowLeft; + break; + case nameof(Settings.WindowTop): + Top = _settings.WindowTop; + break; } }; } private void InitializePosition() { - if (_settings.RememberLastLaunchLocation) + switch (_settings.SearchWindowPosition) { - Top = _settings.WindowTop; - Left = _settings.WindowLeft; - } - else - { - Left = WindowLeft(); - Top = WindowTop(); + case SearchWindowPositions.RememberLastLaunchLocation: + Top = _settings.WindowTop; + Left = _settings.WindowLeft; + break; + case SearchWindowPositions.MouseScreenCenter: + Left = HorizonCenter(); + Top = VerticalCenter(); + break; + case SearchWindowPositions.MouseScreenCenterTop: + Left = HorizonCenter(); + Top = 10; + break; + case SearchWindowPositions.MouseScreenLeftTop: + Left = 10; + Top = 10; + break; + case SearchWindowPositions.MouseScreenRightTop: + Left = HorizonRight(); + Top = 10; + break; } } @@ -199,8 +221,9 @@ namespace Flow.Launcher var menu = contextMenu; ((MenuItem)menu.Items[1]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + " (" + _settings.Hotkey + ")"; ((MenuItem)menu.Items[2]).Header = InternationalizationManager.Instance.GetTranslation("GameMode"); - ((MenuItem)menu.Items[3]).Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings"); - ((MenuItem)menu.Items[4]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit"); + ((MenuItem)menu.Items[3]).Header = InternationalizationManager.Instance.GetTranslation("PositionReset"); + ((MenuItem)menu.Items[4]).Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings"); + ((MenuItem)menu.Items[5]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit"); } private void InitializeNotifyIcon() @@ -226,6 +249,10 @@ namespace Flow.Launcher { Header = InternationalizationManager.Instance.GetTranslation("GameMode") }; + var positionreset = new MenuItem + { + Header = InternationalizationManager.Instance.GetTranslation("PositionReset") + }; var settings = new MenuItem { Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings") @@ -237,12 +264,15 @@ namespace Flow.Launcher open.Click += (o, e) => _viewModel.ToggleFlowLauncher(); gamemode.Click += (o, e) => ToggleGameMode(); + positionreset.Click += (o, e) => PositionReset(); settings.Click += (o, e) => App.API.OpenSettingDialog(); exit.Click += (o, e) => Close(); contextMenu.Items.Add(header); contextMenu.Items.Add(open); gamemode.ToolTip = InternationalizationManager.Instance.GetTranslation("GameModeToolTip"); + positionreset.ToolTip = InternationalizationManager.Instance.GetTranslation("PositionResetToolTip"); contextMenu.Items.Add(gamemode); + contextMenu.Items.Add(positionreset); contextMenu.Items.Add(settings); contextMenu.Items.Add(exit); @@ -289,10 +319,17 @@ namespace Flow.Launcher _viewModel.GameModeStatus = true; } } + private async void PositionReset() + { + _viewModel.Show(); + await Task.Delay(300); // If don't give a time, Positioning will be weird. + Left = HorizonCenter(); + Top = VerticalCenter(); + } private void InitProgressbarAnimation() { var da = new DoubleAnimation(ProgressBar.X2, ActualWidth + 150, - new Duration(new TimeSpan(0, 0, 0, 0, 1600))); + new Duration(new TimeSpan(0, 0, 0, 0, 1600))); var da1 = new DoubleAnimation(ProgressBar.X1, ActualWidth + 50, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X2)")); Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X1)")); @@ -396,6 +433,8 @@ namespace Flow.Launcher private async void OnDeactivated(object sender, EventArgs e) { + _settings.WindowLeft = Left; + _settings.WindowTop = Top; //This condition stops extra hide call when animator is on, // which causes the toggling to occasional hide instead of show. if (_viewModel.MainWindowVisibilityStatus) @@ -417,24 +456,14 @@ namespace Flow.Launcher { if (_animating) return; - - if (_settings.RememberLastLaunchLocation) - { - Left = _settings.WindowLeft; - Top = _settings.WindowTop; - } - else - { - Left = WindowLeft(); - Top = WindowTop(); - } + InitializePosition(); } private void OnLocationChanged(object sender, EventArgs e) { if (_animating) return; - if (_settings.RememberLastLaunchLocation) + if (_settings.SearchWindowPosition == SearchWindowPositions.RememberLastLaunchLocation) { _settings.WindowLeft = Left; _settings.WindowTop = Top; @@ -453,8 +482,8 @@ namespace Flow.Launcher _viewModel.Show(); } } - - public double WindowLeft() + + public double HorizonCenter() { var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); @@ -463,7 +492,7 @@ namespace Flow.Launcher return left; } - public double WindowTop() + public double VerticalCenter() { var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, 0, screen.WorkingArea.Y); @@ -472,12 +501,22 @@ namespace Flow.Launcher return top; } + public double HorizonRight() + { + var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var dip1 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.X, 0); + var dip2 = WindowsInteropHelper.TransformPixelsToDIP(this, screen.WorkingArea.Width, 0); + var left = (dip2.X - ActualWidth) - 10; + return left; + } + /// /// Register up and down key /// todo: any way to put this in xaml ? /// private void OnKeyDown(object sender, KeyEventArgs e) { + var specialKeyState = GlobalHotkey.CheckModifiers(); switch (e.Key) { case Key.Down: @@ -512,8 +551,13 @@ namespace Flow.Launcher e.Handled = true; } break; + case Key.F12: + if (specialKeyState.CtrlPressed) + { + ToggleGameMode(); + } + break; case Key.Back: - var specialKeyState = GlobalHotkey.CheckModifiers(); if (specialKeyState.CtrlPressed) { if (_viewModel.SelectedIsFromQueryResults() @@ -555,5 +599,14 @@ namespace Flow.Launcher ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark; } } + + private void QueryTextBox_KeyUp(object sender, KeyEventArgs e) + { + if(_viewModel.QueryText != QueryTextBox.Text) + { + BindingExpression be = QueryTextBox.GetBindingExpression(System.Windows.Controls.TextBox.TextProperty); + be.UpdateSource(); + } + } } -} \ No newline at end of file +} diff --git a/Flow.Launcher/PriorityChangeWindow.xaml b/Flow.Launcher/PriorityChangeWindow.xaml index d50bf82db..d6aadead9 100644 --- a/Flow.Launcher/PriorityChangeWindow.xaml +++ b/Flow.Launcher/PriorityChangeWindow.xaml @@ -63,7 +63,6 @@ @@ -2724,7 +2723,8 @@ Background="{DynamicResource CustomContextBackground}" BorderBrush="{DynamicResource CustomContextBorder}" BorderThickness="1" - CornerRadius="8"> + CornerRadius="8" + UseLayoutRounding="True"> + Visibility="{Binding ShowIcon}"> + + + + + Value="{Binding ResultProgress, Mode=OneWay}"> + + + + @@ -38,6 +39,8 @@ + + @@ -321,8 +324,6 @@ - - @@ -386,6 +387,55 @@ + + + + + + + + SnapsToDevicePixels="True" + Style="{DynamicResource PluginListStyle}"> @@ -939,7 +1061,7 @@ Padding="0" Background="Transparent" FlowDirection="RightToLeft" - IsExpanded="{Binding Mode=TwoWay, Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem, Mode=FindAncestor}}" + IsExpanded="{Binding Mode=TwoWay, Path=IsExpanded}" Style="{StaticResource ExpanderStyle1}"> + ToolTip="{DynamicResource priorityToolTip}"> + +