diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs index 7631aad91..7e29cb350 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs @@ -177,11 +177,9 @@ public abstract class ChromiumBookmarkLoader : IBookmarkLoader if (imageData is not { Length: > 0 }) continue; - var faviconPath = Path.Combine(_faviconCacheDir, $"{domain}_{iconId}.png"); - if (!File.Exists(faviconPath)) - { - SaveBitmapData(imageData, faviconPath); - } + var faviconPath = Path.Combine(_faviconCacheDir, $"chromium_{domain}_{iconId}.png"); + SaveBitmapData(imageData, faviconPath); + bookmark.FaviconPath = faviconPath; } catch (Exception ex) diff --git a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/FirefoxBookmarkLoader.cs b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/FirefoxBookmarkLoader.cs index 113476703..b356d08b8 100644 --- a/Plugins/Flow.Launcher.Plugin.BrowserBookmark/FirefoxBookmarkLoader.cs +++ b/Plugins/Flow.Launcher.Plugin.BrowserBookmark/FirefoxBookmarkLoader.cs @@ -155,12 +155,16 @@ public abstract class FirefoxBookmarkLoaderBase : IBookmarkLoader if (imageData is not { Length: > 0 }) continue; - var faviconPath = Path.Combine(_faviconCacheDir, $"firefox_{domain}.png"); - - if (!File.Exists(faviconPath)) + string faviconPath; + if (IsSvgData(imageData)) { - SaveBitmapData(imageData, faviconPath); + faviconPath = Path.Combine(_faviconCacheDir, $"firefox_{domain}.svg"); } + else + { + faviconPath = Path.Combine(_faviconCacheDir, $"firefox_{domain}.png"); + } + SaveBitmapData(imageData, faviconPath); bookmark.FaviconPath = faviconPath; } @@ -201,6 +205,15 @@ public abstract class FirefoxBookmarkLoaderBase : IBookmarkLoader Main._context.API.LogException(ClassName, $"Failed to save image: {outputPath}", ex); } } + + private static bool IsSvgData(byte[] data) + { + if (data.Length < 5) + return false; + string start = System.Text.Encoding.ASCII.GetString(data, 0, Math.Min(100, data.Length)); + return start.Contains("