diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest
index 75beb19..e1a27ad 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest
@@ -12,7 +12,7 @@
+ Version="1.0.31.0" />
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs
index 702922f..f09add5 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/App.xaml.cs
@@ -75,8 +75,6 @@ namespace BetterLyrics.WinUI3
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
- Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
-
WindowHelper.OpenWindow();
var lyricsWindow = WindowHelper.GetWindowByWindowType();
if (lyricsWindow == null) return;
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/ISettingsService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/ISettingsService.cs
index 92a92f3..e04372b 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/ISettingsService.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/ISettingsService.cs
@@ -61,7 +61,9 @@ namespace BetterLyrics.WinUI3.Services
LyricsFontColorType LyricsFgFontColorType { get; set; }
LyricsFontColorType LyricsStrokeFontColorType { get; set; }
- int LyricsFontSize { get; set; }
+ int LyricsStandardFontSize { get; set; }
+ int LyricsDockFontSize { get; set; }
+ int LyricsDesktopFontSize { get; set; }
ElementTheme LyricsBackgroundTheme { get; set; }
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService.cs
index a549b57..344cea4 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/SettingsService.cs
@@ -62,7 +62,11 @@ namespace BetterLyrics.WinUI3.Services
private const string LyricsFontStrokeWidthKey = "LyricsFontStrokeWidth";
- private const string LyricsFontSizeKey = "LyricsFontSize";
+ // Lyrics font size
+ private const string LyricsStandardFontSizeKey = "LyricsStandardFontSize";
+ private const string LyricsDockFontSizeKey = "LyricsDockFontSize";
+ private const string LyricsDesktopFontSizeKey = "LyricsDesktopFontSize";
+
private const string LyricsFontWeightKey = "LyricsFontWeightKey";
private const string LyricsGlowEffectScopeKey = "LyricsGlowEffectScope";
private const string LyricsHighlightSopeKey = "LyricsHighlightSope";
@@ -204,7 +208,10 @@ namespace BetterLyrics.WinUI3.Services
SetDefault(LyricsCustomFgFontColorKey, Colors.White.ToInt());
SetDefault(LyricsCustomStrokeFontColorKey, Colors.White.ToInt());
- SetDefault(LyricsFontSizeKey, 28);
+ SetDefault(LyricsStandardFontSizeKey, 28);
+ SetDefault(LyricsDockFontSizeKey, 20);
+ SetDefault(LyricsDesktopFontSizeKey, 28);
+
SetDefault(LyricsLineSpacingFactorKey, 0.5f);
SetDefault(LyricsVerticalEdgeOpacityKey, 0);
SetDefault(IsLyricsGlowEffectEnabledKey, true);
@@ -511,10 +518,22 @@ namespace BetterLyrics.WinUI3.Services
set => SetValue(LyricsFontStrokeWidthKey, value);
}
- public int LyricsFontSize
+ public int LyricsStandardFontSize
{
- get => GetValue(LyricsFontSizeKey);
- set => SetValue(LyricsFontSizeKey, value);
+ get => GetValue(LyricsStandardFontSizeKey);
+ set => SetValue(LyricsStandardFontSizeKey, value);
+ }
+
+ public int LyricsDockFontSize
+ {
+ get => GetValue(LyricsDockFontSizeKey);
+ set => SetValue(LyricsDockFontSizeKey, value);
+ }
+
+ public int LyricsDesktopFontSize
+ {
+ get => GetValue(LyricsDesktopFontSizeKey);
+ set => SetValue(LyricsDesktopFontSizeKey, value);
}
public LyricsFontWeight LyricsFontWeight
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsPageViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsPageViewModel.cs
index 938d7f6..4761238 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsPageViewModel.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsPageViewModel.cs
@@ -37,7 +37,9 @@ namespace BetterLyrics.WinUI3.ViewModels
PositionOffset = _settingsService.PositionOffset;
IsImmersiveMode = _settingsService.IsImmersiveMode;
ShowTranslationOnly = _settingsService.ShowTranslationOnly;
- LyricsFontSize = _settingsService.LyricsFontSize;
+
+ LyricsStandardFontSize = _settingsService.LyricsStandardFontSize;
+
LyricsFontFamily = _settingsService.LyricsFontFamily;
OnIsImmersiveModeChanged(IsImmersiveMode);
@@ -91,7 +93,7 @@ namespace BetterLyrics.WinUI3.ViewModels
public partial string LyricsFontFamily { get; set; }
[ObservableProperty]
- public partial int LyricsFontSize { get; set; }
+ public partial int LyricsStandardFontSize { get; set; }
[ObservableProperty]
public partial bool IsImmersiveMode { get; set; }
@@ -236,9 +238,9 @@ namespace BetterLyrics.WinUI3.ViewModels
{
if (message.Sender is SettingsPageViewModel)
{
- if (message.PropertyName == nameof(SettingsPageViewModel.LyricsFontSize))
+ if (message.PropertyName == nameof(SettingsPageViewModel.LyricsStandardFontSize))
{
- LyricsFontSize = message.NewValue;
+ LyricsStandardFontSize = message.NewValue;
}
}
}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel.Messages.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel.Messages.cs
index f7757f8..6f9f56d 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel.Messages.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/LyricsRendererViewModel.Messages.cs
@@ -205,7 +205,7 @@ namespace BetterLyrics.WinUI3.ViewModels
_lyricsBlurAmount = message.NewValue;
_isLayoutChanged = true;
}
- else if (message.PropertyName == nameof(SettingsPageViewModel.LyricsFontSize))
+ else if (message.PropertyName == nameof(SettingsPageViewModel.LyricsStandardFontSize))
{
_lyricsFontSize = message.NewValue;
_isLayoutChanged = true;
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Ctor.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Ctor.cs
new file mode 100644
index 0000000..3b169e8
--- /dev/null
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Ctor.cs
@@ -0,0 +1,91 @@
+using BetterLyrics.WinUI3.Helper;
+using BetterLyrics.WinUI3.Services;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BetterLyrics.WinUI3.ViewModels
+{
+ public partial class SettingsPageViewModel
+ {
+ public SettingsPageViewModel(ISettingsService settingsService, ILibWatcherService libWatcherService, IPlaybackService playbackService, ITranslateService libreTranslateService) : base(settingsService)
+ {
+ _libWatcherService = libWatcherService;
+ _playbackService = playbackService;
+ _libreTranslateService = libreTranslateService;
+
+ IsLibreTranslateEnabled = _settingsService.IsLibreTranslateEnabled;
+ LibreTranslateServer = _settingsService.LibreTranslateServer;
+ SelectedTargetLanguageIndex = _settingsService.SelectedTargetLanguageIndex;
+
+ LocalMediaFolders = [.. _settingsService.LocalMediaFolders];
+ LyricsSearchProvidersInfo = [.. _settingsService.LyricsSearchProvidersInfo];
+ AlbumArtSearchProvidersInfo = [.. _settingsService.AlbumArtSearchProvidersInfo];
+
+ Language = _settingsService.Language;
+ CoverImageRadius = _settingsService.CoverImageRadius;
+
+ AutoStartWindowType = _settingsService.AutoStartWindowType;
+ AutoLockOnDesktopMode = _settingsService.AutoLockOnDesktopMode;
+
+ IsDynamicCoverOverlayEnabled = _settingsService.IsDynamicCoverOverlayEnabled;
+ CoverOverlayOpacity = _settingsService.CoverOverlayOpacity;
+ CoverOverlayBlurAmount = _settingsService.CoverOverlayBlurAmount;
+
+ CoverAcrylicEffectAmount = _settingsService.CoverAcrylicEffectAmount;
+
+ LyricsAlignmentType = _settingsService.LyricsAlignmentType;
+ SongInfoAlignmentType = _settingsService.SongInfoAlignmentType;
+ LyricsFontWeight = _settingsService.LyricsFontWeight;
+ LyricsBlurAmount = _settingsService.LyricsBlurAmount;
+ LyricsVerticalEdgeOpacity = _settingsService.LyricsVerticalEdgeOpacity;
+ LyricsLineSpacingFactor = _settingsService.LyricsLineSpacingFactor;
+
+ // Font size
+ LyricsStandardFontSize = _settingsService.LyricsStandardFontSize;
+ LyricsDockFontSize = _settingsService.LyricsDockFontSize;
+ LyricsDesktopFontSize = _settingsService.LyricsDesktopFontSize;
+
+ IsLyricsGlowEffectEnabled = _settingsService.IsLyricsGlowEffectEnabled;
+ LyricsGlowEffectScope = _settingsService.LyricsGlowEffectScope;
+ LyricsHighlightScope = _settingsService.LyricsHighlightScope;
+ IsFanLyricsEnabled = _settingsService.IsFanLyricsEnabled;
+
+ LyricsBgFontColorType = _settingsService.LyricsBgFontColorType;
+ LyricsFgFontColorType = _settingsService.LyricsFgFontColorType;
+ LyricsStrokeFontColorType = _settingsService.LyricsStrokeFontColorType;
+
+ LyricsCustomBgFontColor = _settingsService.LyricsCustomBgFontColor;
+ LyricsCustomFgFontColor = _settingsService.LyricsCustomFgFontColor;
+ LyricsCustomStrokeFontColor = _settingsService.LyricsCustomStrokeFontColor;
+
+ LyricsFontStrokeWidth = _settingsService.LyricsFontStrokeWidth;
+ LyricsBackgroundTheme = _settingsService.LyricsBackgroundTheme;
+ MediaSourceProvidersInfo = [.. _settingsService.MediaSourceProvidersInfo];
+ IgnoreFullscreenWindow = _settingsService.IgnoreFullscreenWindow;
+
+ LyricsScrollEasingType = _settingsService.LyricsScrollEasingType;
+ LyricsScrollDuration = _settingsService.LyricsScrollDuration;
+ TimelineSyncThreshold = _settingsService.TimelineSyncThreshold;
+
+ IsLyricsFloatAnimationEnabled = _settingsService.IsLyricsFloatAnimationEnabled;
+ ResetPositionOffsetOnSongChanged = _settingsService.ResetPositionOffsetOnSongChanged;
+ LockHotKeyIndex = _settingsService.LockHotKeyIndex;
+
+ LXMusicServer = _settingsService.LXMusicServer;
+ DockPlacement = _settingsService.DockPlacement;
+ LyricsBgFontOpacity = _settingsService.LyricsBgFontOpacity;
+ HideWindowWhenNotPlaying = _settingsService.HideWindowWhenNotPlaying;
+ DockWindowHeight = _settingsService.DockWindowHeight;
+
+ SystemFontNames = [.. FontHelper.SystemFontFamilies];
+ SelectedFontFamilyIndex = _settingsService.SelectedFontFamilyIndex;
+ LyricsFontFamily = _settingsService.LyricsFontFamily;
+ IsDragEverywhereEnabled = _settingsService.IsDragEverywhereEnabled;
+
+ _playbackService.MediaSourceProvidersInfoChanged += PlaybackService_SessionIdsChanged;
+ }
+ }
+}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.OnPropsChanged.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.OnPropsChanged.cs
new file mode 100644
index 0000000..f68571c
--- /dev/null
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.OnPropsChanged.cs
@@ -0,0 +1,227 @@
+using BetterLyrics.WinUI3.Enums;
+using BetterLyrics.WinUI3.Helper;
+using BetterLyrics.WinUI3.Views;
+using Microsoft.UI.Xaml;
+using Windows.Globalization;
+using Windows.UI;
+
+namespace BetterLyrics.WinUI3.ViewModels
+{
+ public partial class SettingsPageViewModel
+ {
+ partial void OnDockPlacementChanged(DockPlacement value)
+ {
+ _settingsService.DockPlacement = value;
+ }
+ partial void OnLyricsScrollEasingTypeChanged(EasingType value)
+ {
+ _settingsService.LyricsScrollEasingType = value;
+ }
+ partial void OnLyricsScrollDurationChanged(int value)
+ {
+ _settingsService.LyricsScrollDuration = value;
+ }
+ partial void OnLyricsBackgroundThemeChanged(ElementTheme value)
+ {
+ _settingsService.LyricsBackgroundTheme = value;
+ }
+ partial void OnLyricsFontStrokeWidthChanged(int value)
+ {
+ _settingsService.LyricsFontStrokeWidth = value;
+ }
+ partial void OnIgnoreFullscreenWindowChanged(bool value)
+ {
+ _settingsService.IgnoreFullscreenWindow = value;
+ }
+ partial void OnSelectedTargetLanguageIndexChanged(int value)
+ {
+ _settingsService.SelectedTargetLanguageIndex = value;
+ }
+ partial void OnLibreTranslateServerChanged(string value)
+ {
+ _settingsService.LibreTranslateServer = value;
+ }
+ partial void OnLXMusicServerChanged(string value)
+ {
+ _settingsService.LXMusicServer = value;
+ }
+ partial void OnAutoStartWindowTypeChanged(AutoStartWindowType value)
+ {
+ _settingsService.AutoStartWindowType = value;
+ }
+ partial void OnAutoLockOnDesktopModeChanged(bool value)
+ {
+ _settingsService.AutoLockOnDesktopMode = value;
+ }
+ partial void OnCoverImageRadiusChanged(int value)
+ {
+ _settingsService.CoverImageRadius = value;
+ }
+ partial void OnCoverOverlayBlurAmountChanged(int value)
+ {
+ _settingsService.CoverOverlayBlurAmount = value;
+ }
+ partial void OnCoverAcrylicEffectAmountChanged(int value)
+ {
+ _settingsService.CoverAcrylicEffectAmount = value;
+ }
+ partial void OnCoverOverlayOpacityChanged(int value)
+ {
+ _settingsService.CoverOverlayOpacity = value;
+ }
+ partial void OnIsDynamicCoverOverlayEnabledChanged(bool value)
+ {
+ _settingsService.IsDynamicCoverOverlayEnabled = value;
+ }
+ partial void OnLanguageChanged(Enums.Language value)
+ {
+ switch (value)
+ {
+ case Enums.Language.FollowSystem:
+ ApplicationLanguages.PrimaryLanguageOverride = "";
+ break;
+ case Enums.Language.English:
+ ApplicationLanguages.PrimaryLanguageOverride = "en-US";
+ break;
+ case Enums.Language.SimplifiedChinese:
+ ApplicationLanguages.PrimaryLanguageOverride = "zh-CN";
+ break;
+ case Enums.Language.TraditionalChinese:
+ ApplicationLanguages.PrimaryLanguageOverride = "zh-TW";
+ break;
+ case Enums.Language.Japanese:
+ ApplicationLanguages.PrimaryLanguageOverride = "ja-JP";
+ break;
+ case Enums.Language.Korean:
+ ApplicationLanguages.PrimaryLanguageOverride = "ko-KR";
+ break;
+ default:
+ break;
+ }
+ _settingsService.Language = Language;
+ }
+ partial void OnIsFanLyricsEnabledChanged(bool value)
+ {
+ _settingsService.IsFanLyricsEnabled = value;
+ }
+ partial void OnIsLyricsGlowEffectEnabledChanged(bool value)
+ {
+ _settingsService.IsLyricsGlowEffectEnabled = value;
+ }
+ partial void OnLyricsAlignmentTypeChanged(TextAlignmentType value)
+ {
+ _settingsService.LyricsAlignmentType = value;
+ }
+ partial void OnSongInfoAlignmentTypeChanged(TextAlignmentType value)
+ {
+ _settingsService.SongInfoAlignmentType = value;
+ }
+ partial void OnLyricsBlurAmountChanged(int value)
+ {
+ _settingsService.LyricsBlurAmount = value;
+ }
+ partial void OnLyricsCustomBgFontColorChanged(Color value)
+ {
+ _settingsService.LyricsCustomBgFontColor = value;
+ }
+ partial void OnLyricsCustomFgFontColorChanged(Color value)
+ {
+ _settingsService.LyricsCustomFgFontColor = value;
+ }
+ partial void OnLyricsCustomStrokeFontColorChanged(Color value)
+ {
+ _settingsService.LyricsCustomStrokeFontColor = value;
+ }
+ partial void OnLyricsBgFontColorTypeChanged(LyricsFontColorType value)
+ {
+ _settingsService.LyricsBgFontColorType = value;
+ }
+ partial void OnLyricsFgFontColorTypeChanged(LyricsFontColorType value)
+ {
+ _settingsService.LyricsFgFontColorType = value;
+ }
+ partial void OnLyricsStrokeFontColorTypeChanged(LyricsFontColorType value)
+ {
+ _settingsService.LyricsStrokeFontColorType = value;
+ }
+ partial void OnLyricsStandardFontSizeChanged(int value)
+ {
+ _settingsService.LyricsStandardFontSize = value;
+ }
+ partial void OnLyricsDockFontSizeChanged(int value)
+ {
+ _settingsService.LyricsDockFontSize = value;
+ }
+ partial void OnLyricsDesktopFontSizeChanged(int value)
+ {
+ _settingsService.LyricsDesktopFontSize = value;
+ }
+ partial void OnLyricsFontWeightChanged(LyricsFontWeight value)
+ {
+ _settingsService.LyricsFontWeight = value;
+ }
+ partial void OnLyricsGlowEffectScopeChanged(LineRenderingType value)
+ {
+ _settingsService.LyricsGlowEffectScope = value;
+ }
+ partial void OnLyricsHighlightScopeChanged(LineRenderingType value)
+ {
+ _settingsService.LyricsHighlightScope = value;
+ }
+ partial void OnLyricsLineSpacingFactorChanged(float value)
+ {
+ _settingsService.LyricsLineSpacingFactor = value;
+ }
+ partial void OnLyricsVerticalEdgeOpacityChanged(int value)
+ {
+ _settingsService.LyricsVerticalEdgeOpacity = value;
+ }
+ partial void OnTimelineSyncThresholdChanged(int value)
+ {
+ _settingsService.TimelineSyncThreshold = value;
+ }
+ partial void OnIsLyricsFloatAnimationEnabledChanged(bool value)
+ {
+ _settingsService.IsLyricsFloatAnimationEnabled = value;
+ }
+ partial void OnResetPositionOffsetOnSongChangedChanged(bool value)
+ {
+ _settingsService.ResetPositionOffsetOnSongChanged = value;
+ }
+ partial void OnLyricsBgFontOpacityChanged(int value)
+ {
+ _settingsService.LyricsBgFontOpacity = value;
+ }
+ partial void OnHideWindowWhenNotPlayingChanged(bool value)
+ {
+ _settingsService.HideWindowWhenNotPlaying = value;
+ }
+ partial void OnDockWindowHeightChanged(int value)
+ {
+ _settingsService.DockWindowHeight = value;
+ }
+ partial void OnSelectedFontFamilyIndexChanged(int value)
+ {
+ _settingsService.SelectedFontFamilyIndex = value;
+ LyricsFontFamily = SystemFontNames[value];
+ }
+ partial void OnLyricsFontFamilyChanged(string value)
+ {
+ _settingsService.LyricsFontFamily = value;
+ }
+ partial void OnIsDragEverywhereEnabledChanged(bool value)
+ {
+ _settingsService.IsDragEverywhereEnabled = value;
+
+ LyricsWindow? lyricsWindow = WindowHelper.GetWindowByWindowType();
+ if (lyricsWindow != null)
+ {
+ lyricsWindow.UpdateTitleBarArea();
+ }
+ }
+ partial void OnIsLibreTranslateEnabledChanged(bool value)
+ {
+ _settingsService.IsLibreTranslateEnabled = value;
+ }
+ }
+}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Props.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Props.cs
new file mode 100644
index 0000000..f648e74
--- /dev/null
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.Props.cs
@@ -0,0 +1,237 @@
+using BetterLyrics.WinUI3.Enums;
+using BetterLyrics.WinUI3.Helper;
+using BetterLyrics.WinUI3.Models;
+using CommunityToolkit.Mvvm.ComponentModel;
+using Microsoft.UI.Xaml;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Windows.UI;
+
+namespace BetterLyrics.WinUI3.ViewModels
+{
+ public partial class SettingsPageViewModel
+ {
+ public string Version { get; set; } = MetadataHelper.AppVersion;
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsLibreTranslateEnabled { get; set; }
+
+ [ObservableProperty]
+ public partial bool IsDragEverywhereEnabled { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial string LyricsFontFamily { get; set; }
+
+ [ObservableProperty]
+ public partial ObservableCollection SystemFontNames { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int SelectedFontFamilyIndex { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial DockPlacement DockPlacement { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LockHotKeyIndex { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial ElementTheme LyricsBackgroundTheme { get; set; }
+
+ [ObservableProperty]
+ public partial AutoStartWindowType AutoStartWindowType { get; set; }
+
+ [ObservableProperty]
+ public partial bool AutoLockOnDesktopMode { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int CoverImageRadius { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int CoverOverlayBlurAmount { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int CoverOverlayOpacity { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsDebugOverlayEnabled { get; set; } = false;
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsLogEnabled { get; set; } = false;
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsDynamicCoverOverlayEnabled { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int CoverAcrylicEffectAmount { get; set; }
+
+ [ObservableProperty]
+ public partial Enums.Language Language { get; set; }
+
+ [ObservableProperty]
+ public partial ObservableCollection LocalMediaFolders { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial ObservableCollection LyricsSearchProvidersInfo { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial ObservableCollection AlbumArtSearchProvidersInfo { get; set; }
+
+ [ObservableProperty]
+ public partial ObservableCollection MediaSourceProvidersInfo { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsFanLyricsEnabled { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsLyricsGlowEffectEnabled { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial TextAlignmentType LyricsAlignmentType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial TextAlignmentType SongInfoAlignmentType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsBlurAmount { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial Color LyricsCustomBgFontColor { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial Color LyricsCustomFgFontColor { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial Color LyricsCustomStrokeFontColor { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsBgFontOpacity { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LyricsFontColorType LyricsBgFontColorType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LyricsFontColorType LyricsFgFontColorType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LyricsFontColorType LyricsStrokeFontColorType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsStandardFontSize { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsDockFontSize { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsDesktopFontSize { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LyricsFontWeight LyricsFontWeight { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LineRenderingType LyricsGlowEffectScope { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial LineRenderingType LyricsHighlightScope { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial float LyricsLineSpacingFactor { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsVerticalEdgeOpacity { get; set; }
+
+ [ObservableProperty]
+ public partial object NavViewSelectedItemTag { get; set; } = "App";
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool ResetPositionOffsetOnSongChanged { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IsLyricsFloatAnimationEnabled { get; set; }
+
+ [ObservableProperty]
+ public partial string LibreTranslateServer { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int SelectedTargetLanguageIndex { get; set; } = 0;
+
+ [ObservableProperty]
+ public partial bool IsLibreTranslateServerTesting { get; set; } = false;
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsFontStrokeWidth { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool IgnoreFullscreenWindow { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial EasingType LyricsScrollEasingType { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int LyricsScrollDuration { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int TimelineSyncThreshold { get; set; }
+
+ [ObservableProperty]
+ public partial bool IsLXMusicServerTesting { get; set; } = false;
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial string LXMusicServer { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial bool HideWindowWhenNotPlaying { get; set; }
+
+ [ObservableProperty]
+ [NotifyPropertyChangedRecipients]
+ public partial int DockWindowHeight { get; set; }
+ }
+}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.cs
index e6a9e66..6ba689d 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.cs
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/ViewModels/SettingsPageViewModel.cs
@@ -31,296 +31,11 @@ namespace BetterLyrics.WinUI3.ViewModels
private readonly string _autoStartupTaskId = "AutoStartup";
- public SettingsPageViewModel(ISettingsService settingsService, ILibWatcherService libWatcherService, IPlaybackService playbackService, ITranslateService libreTranslateService) : base(settingsService)
- {
- _libWatcherService = libWatcherService;
- _playbackService = playbackService;
- _libreTranslateService = libreTranslateService;
-
- IsLibreTranslateEnabled = _settingsService.IsLibreTranslateEnabled;
- LibreTranslateServer = _settingsService.LibreTranslateServer;
- SelectedTargetLanguageIndex = _settingsService.SelectedTargetLanguageIndex;
-
- LocalMediaFolders = [.. _settingsService.LocalMediaFolders];
- LyricsSearchProvidersInfo = [.. _settingsService.LyricsSearchProvidersInfo];
- AlbumArtSearchProvidersInfo = [.. _settingsService.AlbumArtSearchProvidersInfo];
-
- Language = _settingsService.Language;
- CoverImageRadius = _settingsService.CoverImageRadius;
-
- AutoStartWindowType = _settingsService.AutoStartWindowType;
- AutoLockOnDesktopMode = _settingsService.AutoLockOnDesktopMode;
-
- IsDynamicCoverOverlayEnabled = _settingsService.IsDynamicCoverOverlayEnabled;
- CoverOverlayOpacity = _settingsService.CoverOverlayOpacity;
- CoverOverlayBlurAmount = _settingsService.CoverOverlayBlurAmount;
-
- CoverAcrylicEffectAmount = _settingsService.CoverAcrylicEffectAmount;
-
- LyricsAlignmentType = _settingsService.LyricsAlignmentType;
- SongInfoAlignmentType = _settingsService.SongInfoAlignmentType;
- LyricsFontWeight = _settingsService.LyricsFontWeight;
- LyricsBlurAmount = _settingsService.LyricsBlurAmount;
- LyricsVerticalEdgeOpacity = _settingsService.LyricsVerticalEdgeOpacity;
- LyricsLineSpacingFactor = _settingsService.LyricsLineSpacingFactor;
- LyricsFontSize = _settingsService.LyricsFontSize;
- IsLyricsGlowEffectEnabled = _settingsService.IsLyricsGlowEffectEnabled;
- LyricsGlowEffectScope = _settingsService.LyricsGlowEffectScope;
- LyricsHighlightScope = _settingsService.LyricsHighlightScope;
- IsFanLyricsEnabled = _settingsService.IsFanLyricsEnabled;
-
- LyricsBgFontColorType = _settingsService.LyricsBgFontColorType;
- LyricsFgFontColorType = _settingsService.LyricsFgFontColorType;
- LyricsStrokeFontColorType = _settingsService.LyricsStrokeFontColorType;
-
- LyricsCustomBgFontColor = _settingsService.LyricsCustomBgFontColor;
- LyricsCustomFgFontColor = _settingsService.LyricsCustomFgFontColor;
- LyricsCustomStrokeFontColor = _settingsService.LyricsCustomStrokeFontColor;
-
- LyricsFontStrokeWidth = _settingsService.LyricsFontStrokeWidth;
- LyricsBackgroundTheme = _settingsService.LyricsBackgroundTheme;
- MediaSourceProvidersInfo = [.. _settingsService.MediaSourceProvidersInfo];
- IgnoreFullscreenWindow = _settingsService.IgnoreFullscreenWindow;
-
- LyricsScrollEasingType = _settingsService.LyricsScrollEasingType;
- LyricsScrollDuration = _settingsService.LyricsScrollDuration;
- TimelineSyncThreshold = _settingsService.TimelineSyncThreshold;
-
- IsLyricsFloatAnimationEnabled = _settingsService.IsLyricsFloatAnimationEnabled;
- ResetPositionOffsetOnSongChanged = _settingsService.ResetPositionOffsetOnSongChanged;
- LockHotKeyIndex = _settingsService.LockHotKeyIndex;
-
- LXMusicServer = _settingsService.LXMusicServer;
- DockPlacement = _settingsService.DockPlacement;
- LyricsBgFontOpacity = _settingsService.LyricsBgFontOpacity;
- HideWindowWhenNotPlaying = _settingsService.HideWindowWhenNotPlaying;
- DockWindowHeight = _settingsService.DockWindowHeight;
-
- SystemFontNames = [.. FontHelper.SystemFontFamilies];
- SelectedFontFamilyIndex = _settingsService.SelectedFontFamilyIndex;
- LyricsFontFamily = _settingsService.LyricsFontFamily;
- IsDragEverywhereEnabled = _settingsService.IsDragEverywhereEnabled;
-
- _playbackService.MediaSourceProvidersInfoChanged += PlaybackService_SessionIdsChanged;
- }
-
private void PlaybackService_SessionIdsChanged(object? sender, Events.MediaSourceProvidersInfoEventArgs e)
{
MediaSourceProvidersInfo = [.. e.MediaSourceProviersInfo];
}
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsLibreTranslateEnabled { get; set; }
-
- [ObservableProperty]
- public partial bool IsDragEverywhereEnabled { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial string LyricsFontFamily { get; set; }
-
-
- [ObservableProperty]
- public partial ObservableCollection SystemFontNames { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int SelectedFontFamilyIndex { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial DockPlacement DockPlacement { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LockHotKeyIndex { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial ElementTheme LyricsBackgroundTheme { get; set; }
-
- [ObservableProperty]
- public partial AutoStartWindowType AutoStartWindowType { get; set; }
-
- [ObservableProperty]
- public partial bool AutoLockOnDesktopMode { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int CoverImageRadius { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int CoverOverlayBlurAmount { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int CoverOverlayOpacity { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsDebugOverlayEnabled { get; set; } = false;
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsLogEnabled { get; set; } = false;
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsDynamicCoverOverlayEnabled { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int CoverAcrylicEffectAmount { get; set; }
-
- [ObservableProperty]
- public partial Enums.Language Language { get; set; }
-
- [ObservableProperty]
- public partial ObservableCollection LocalMediaFolders { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial ObservableCollection LyricsSearchProvidersInfo { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial ObservableCollection AlbumArtSearchProvidersInfo { get; set; }
-
- [ObservableProperty]
- public partial ObservableCollection MediaSourceProvidersInfo { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsFanLyricsEnabled { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsLyricsGlowEffectEnabled { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial TextAlignmentType LyricsAlignmentType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial TextAlignmentType SongInfoAlignmentType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsBlurAmount { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial Color LyricsCustomBgFontColor { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial Color LyricsCustomFgFontColor { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial Color LyricsCustomStrokeFontColor { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsBgFontOpacity { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LyricsFontColorType LyricsBgFontColorType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LyricsFontColorType LyricsFgFontColorType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LyricsFontColorType LyricsStrokeFontColorType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsFontSize { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LyricsFontWeight LyricsFontWeight { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LineRenderingType LyricsGlowEffectScope { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial LineRenderingType LyricsHighlightScope { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial float LyricsLineSpacingFactor { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsVerticalEdgeOpacity { get; set; }
-
- [ObservableProperty]
- public partial object NavViewSelectedItemTag { get; set; } = "App";
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool ResetPositionOffsetOnSongChanged { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IsLyricsFloatAnimationEnabled { get; set; }
-
- public string Version { get; set; } = MetadataHelper.AppVersion;
-
- [ObservableProperty]
- public partial string LibreTranslateServer { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int SelectedTargetLanguageIndex { get; set; } = 0;
-
- [ObservableProperty]
- public partial bool IsLibreTranslateServerTesting { get; set; } = false;
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsFontStrokeWidth { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool IgnoreFullscreenWindow { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial EasingType LyricsScrollEasingType { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int LyricsScrollDuration { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int TimelineSyncThreshold { get; set; }
-
- [ObservableProperty]
- public partial bool IsLXMusicServerTesting { get; set; } = false;
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial string LXMusicServer { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial bool HideWindowWhenNotPlaying { get; set; }
-
- [ObservableProperty]
- [NotifyPropertyChangedRecipients]
- public partial int DockWindowHeight { get; set; }
-
public void OnLyricsSearchProvidersReordered()
{
_settingsService.LyricsSearchProvidersInfo = [.. LyricsSearchProvidersInfo];
@@ -525,212 +240,5 @@ namespace BetterLyrics.WinUI3.ViewModels
}
return result;
}
-
- partial void OnDockPlacementChanged(DockPlacement value)
- {
- _settingsService.DockPlacement = value;
- }
- partial void OnLyricsScrollEasingTypeChanged(EasingType value)
- {
- _settingsService.LyricsScrollEasingType = value;
- }
- partial void OnLyricsScrollDurationChanged(int value)
- {
- _settingsService.LyricsScrollDuration = value;
- }
- partial void OnLyricsBackgroundThemeChanged(ElementTheme value)
- {
- _settingsService.LyricsBackgroundTheme = value;
- }
- partial void OnLyricsFontStrokeWidthChanged(int value)
- {
- _settingsService.LyricsFontStrokeWidth = value;
- }
- partial void OnIgnoreFullscreenWindowChanged(bool value)
- {
- _settingsService.IgnoreFullscreenWindow = value;
- }
- partial void OnSelectedTargetLanguageIndexChanged(int value)
- {
- _settingsService.SelectedTargetLanguageIndex = value;
- }
- partial void OnLibreTranslateServerChanged(string value)
- {
- _settingsService.LibreTranslateServer = value;
- }
- partial void OnLXMusicServerChanged(string value)
- {
- _settingsService.LXMusicServer = value;
- }
- partial void OnAutoStartWindowTypeChanged(AutoStartWindowType value)
- {
- _settingsService.AutoStartWindowType = value;
- }
- partial void OnAutoLockOnDesktopModeChanged(bool value)
- {
- _settingsService.AutoLockOnDesktopMode = value;
- }
- partial void OnCoverImageRadiusChanged(int value)
- {
- _settingsService.CoverImageRadius = value;
- }
- partial void OnCoverOverlayBlurAmountChanged(int value)
- {
- _settingsService.CoverOverlayBlurAmount = value;
- }
- partial void OnCoverAcrylicEffectAmountChanged(int value)
- {
- _settingsService.CoverAcrylicEffectAmount = value;
- }
- partial void OnCoverOverlayOpacityChanged(int value)
- {
- _settingsService.CoverOverlayOpacity = value;
- }
- partial void OnIsDynamicCoverOverlayEnabledChanged(bool value)
- {
- _settingsService.IsDynamicCoverOverlayEnabled = value;
- }
- partial void OnLanguageChanged(Enums.Language value)
- {
- switch (value)
- {
- case Enums.Language.FollowSystem:
- ApplicationLanguages.PrimaryLanguageOverride = "";
- break;
- case Enums.Language.English:
- ApplicationLanguages.PrimaryLanguageOverride = "en-US";
- break;
- case Enums.Language.SimplifiedChinese:
- ApplicationLanguages.PrimaryLanguageOverride = "zh-CN";
- break;
- case Enums.Language.TraditionalChinese:
- ApplicationLanguages.PrimaryLanguageOverride = "zh-TW";
- break;
- case Enums.Language.Japanese:
- ApplicationLanguages.PrimaryLanguageOverride = "ja-JP";
- break;
- case Enums.Language.Korean:
- ApplicationLanguages.PrimaryLanguageOverride = "ko-KR";
- break;
- default:
- break;
- }
- _settingsService.Language = Language;
- }
- partial void OnIsFanLyricsEnabledChanged(bool value)
- {
- _settingsService.IsFanLyricsEnabled = value;
- }
- partial void OnIsLyricsGlowEffectEnabledChanged(bool value)
- {
- _settingsService.IsLyricsGlowEffectEnabled = value;
- }
- partial void OnLyricsAlignmentTypeChanged(TextAlignmentType value)
- {
- _settingsService.LyricsAlignmentType = value;
- }
- partial void OnSongInfoAlignmentTypeChanged(TextAlignmentType value)
- {
- _settingsService.SongInfoAlignmentType = value;
- }
- partial void OnLyricsBlurAmountChanged(int value)
- {
- _settingsService.LyricsBlurAmount = value;
- }
- partial void OnLyricsCustomBgFontColorChanged(Color value)
- {
- _settingsService.LyricsCustomBgFontColor = value;
- }
- partial void OnLyricsCustomFgFontColorChanged(Color value)
- {
- _settingsService.LyricsCustomFgFontColor = value;
- }
- partial void OnLyricsCustomStrokeFontColorChanged(Color value)
- {
- _settingsService.LyricsCustomStrokeFontColor = value;
- }
- partial void OnLyricsBgFontColorTypeChanged(LyricsFontColorType value)
- {
- _settingsService.LyricsBgFontColorType = value;
- }
- partial void OnLyricsFgFontColorTypeChanged(LyricsFontColorType value)
- {
- _settingsService.LyricsFgFontColorType = value;
- }
- partial void OnLyricsStrokeFontColorTypeChanged(LyricsFontColorType value)
- {
- _settingsService.LyricsStrokeFontColorType = value;
- }
- partial void OnLyricsFontSizeChanged(int value)
- {
- _settingsService.LyricsFontSize = value;
- }
- partial void OnLyricsFontWeightChanged(LyricsFontWeight value)
- {
- _settingsService.LyricsFontWeight = value;
- }
- partial void OnLyricsGlowEffectScopeChanged(LineRenderingType value)
- {
- _settingsService.LyricsGlowEffectScope = value;
- }
- partial void OnLyricsHighlightScopeChanged(LineRenderingType value)
- {
- _settingsService.LyricsHighlightScope = value;
- }
- partial void OnLyricsLineSpacingFactorChanged(float value)
- {
- _settingsService.LyricsLineSpacingFactor = value;
- }
- partial void OnLyricsVerticalEdgeOpacityChanged(int value)
- {
- _settingsService.LyricsVerticalEdgeOpacity = value;
- }
- partial void OnTimelineSyncThresholdChanged(int value)
- {
- _settingsService.TimelineSyncThreshold = value;
- }
- partial void OnIsLyricsFloatAnimationEnabledChanged(bool value)
- {
- _settingsService.IsLyricsFloatAnimationEnabled = value;
- }
- partial void OnResetPositionOffsetOnSongChangedChanged(bool value)
- {
- _settingsService.ResetPositionOffsetOnSongChanged = value;
- }
- partial void OnLyricsBgFontOpacityChanged(int value)
- {
- _settingsService.LyricsBgFontOpacity = value;
- }
- partial void OnHideWindowWhenNotPlayingChanged(bool value)
- {
- _settingsService.HideWindowWhenNotPlaying = value;
- }
- partial void OnDockWindowHeightChanged(int value)
- {
- _settingsService.DockWindowHeight = value;
- }
- partial void OnSelectedFontFamilyIndexChanged(int value)
- {
- _settingsService.SelectedFontFamilyIndex = value;
- LyricsFontFamily = SystemFontNames[value];
- }
- partial void OnLyricsFontFamilyChanged(string value)
- {
- _settingsService.LyricsFontFamily = value;
- }
- partial void OnIsDragEverywhereEnabledChanged(bool value)
- {
- _settingsService.IsDragEverywhereEnabled = value;
-
- LyricsWindow? lyricsWindow = WindowHelper.GetWindowByWindowType();
- if (lyricsWindow != null)
- {
- lyricsWindow.UpdateTitleBarArea();
- }
- }
- partial void OnIsLibreTranslateEnabledChanged(bool value)
- {
- _settingsService.IsLibreTranslateEnabled = value;
- }
}
}
diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml
index f550d34..20c3399 100644
--- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml
+++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Views/SettingsPage.xaml
@@ -694,16 +694,16 @@
+ Text="{Binding ElementName=LyricsStandardFontSizeSlider, Path=Value, Mode=OneWay}" />
+ Value="{x:Bind ViewModel.LyricsStandardFontSize, Mode=TwoWay}" />
diff --git a/README.CN.md b/README.CN.md
index 0a6cf7d..0ef29cc 100644
--- a/README.CN.md
+++ b/README.CN.md
@@ -2,59 +2,118 @@
_**🌐 Click here to see the English version**_
-_**❓ 点击查看常见问题(FAQ)**_
+_**❓ 点此查看常见问题(FAQ)**_
-

+
BetterLyrics
-基于 WinUI 3 构建的流畅动态歌词显示工具
-
+一个基于 WinUI 3 和 Win2D 构建的动态歌词显示工具 —— 支持本地播放,并可监听多种播放器
+
-## 🎉 本项目已获得少数派推荐!
+## 🎉 本项目已被少数派推荐!
-查看文章:[BetterLyrics – 专为 Windows 设计的沉浸式流畅歌词显示工具](https://sspai.com/post/101028)
+查看文章:[BetterLyrics - 一款专为 Windows 打造的沉浸式流畅歌词显示软件](https://sspai.com/post/101028)
-## 🔈 反馈交流群
+## 🔈 反馈与交流群
-- [QQ](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) | [Discord](https://discord.gg/5yAQPnyCKv) | [Telegram](https://t.me/+svhSLZ7awPsxNGY1)
+- [
QQ 群](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info)(群号:1054700388)
+- [
Discord](https://discord.gg/5yAQPnyCKv)
+- [
Telegram](https://t.me/+svhSLZ7awPsxNGY1)
-## 🌟 核心亮点功能
+## 🌟 核心特色
-- 🌠 美观的用户界面
- - 流畅的动画与视觉特效,打造赏心悦目的歌词体验
-- ↔️ 强大的歌词翻译功能
- - 支持离线机器翻译,涵盖 30 种语言
- - 自动读取本地歌词文件中的嵌入翻译
-- 🧩 多种歌词来源
+- 🌠 **优雅的用户界面**
+ - 丰富流畅的动画与特效
+- ↔️ **强大的歌词翻译功能**
+ - 支持离线翻译(支持 30 种语言)
+ - 自动读取本地歌词文件中的双语翻译内容
+- 🧩 **多种歌词来源支持**
- 本地存储
- - 音乐文件(支持嵌入歌词)
- - [.lrc]() 歌词文件(兼容标准格式和增强格式)
- - [.eslrc](https://github.com/ESLyric/release) 格式
- - [.ttml](https://en.wikipedia.org/wiki/Timed_Text_Markup_Language) 格式
- - 在线歌词服务
+ - 音乐文件(嵌入式歌词)
+ - [.lrc](https://zh.wikipedia.org/wiki/LRC) 文件(支持标准与增强格式)
+ - [.eslrc](https://github.com/ESLyric/release) 文件
+ - [.ttml](https://zh.wikipedia.org/wiki/Timed_Text_Markup_Language) 文件
+ - 在线歌词源
- QQ 音乐
- 网易云音乐
- 酷狗音乐
- [amll-ttml-db](https://github.com/Steve-xmh/amll-ttml-db)
- [LRCLIB](https://lrclib.net/)
-- 🪟 多种歌词显示模式
- - 标准模式
- - 沉浸式歌词体验,搭配丰富动画与动态背景,听歌更享受
- - 停靠模式
- - 智能歌词栏固定在屏幕边缘,简洁美观、互不打扰
- - 桌面模式
- - 歌词悬浮于其他窗口之上,边听歌边工作两不误
-- 🧠 智能行为支持
- - 音乐播放器关闭后自动隐藏歌词窗口,干净整洁不打扰
-> 本项目仍在开发中,最新版本可能存在 bug 和意外行为。
+- 🎶 **支持多种播放器**
-## 应用截图
+ - 网易云音乐
+
+ - 请先安装 [BetterNCM 插件](https://microblock.cc/betterncm)。若安装后出现降级提示,请按提示将网易云降级至 2.10.13;
+ - 然后在插件市场安装 InfLink 插件,安装完成后重启网易云即可!
+
+
+
+ - 酷狗音乐
+
+ - 请确保酷狗设置中已开启“支持系统播放控制,如锁屏界面控制”
+ - 当前版本无法获取时间轴信息,意味着无法检测进度条的跳转
+
+
+
+ - Apple Music
+
+ - 建议在设置中将“时间轴同步容差”调至 600ms 左右(设置 → 高级选项),否则歌词会前后晃动
+
+
+
+ - foobar2000
+
+ - 请安装插件:https://github.com/dumbie/foo_mediacontrol
+
+
+
+ - Spotify
+ - QQ 音乐
+ - PotPlayer
+ - Windows 自带媒体播放器
+
+ - LX Music
+
+ - 请在 LX Music 设置中开启“开放 API”
+ - 然后在 BetterLyrics 设置中填写 LX 服务器地址(通常是 http://127.0.0.1:23330)
+
+
+
+ - MusicBee
+
+ - 请安装插件:https://github.com/HenryPDT/mb_MediaControl
+
+
+
+ - iTunes
+
+ - 请安装插件:https://github.com/thewizrd/iTunes-SMTC
+
+
+
+ - AIMP
+
+ - 请安装插件:https://www.aimp.ru/?do=catalog&rec_id=1097
+
+
+
+- 🪟 **多种展示模式**
+ - **标准模式**:沉浸式动画歌词 + 动态背景
+ - **吸附模式**:屏幕边缘浮动歌词条
+ - **桌面模式**:歌词悬浮在所有窗口之上
+
+- 🧠 **智能行为**
+ - 检测播放器关闭自动隐藏歌词
+
+> 本项目仍在开发中,开发分支可能存在 bug 或异常行为。
+
+## 软件截图
### 标准模式
@@ -68,7 +127,7 @@ BetterLyrics

-### 悬浮模式
+### 吸附模式

@@ -80,95 +139,69 @@ BetterLyrics

-## 演示视频
+## 使用演示
-观看我们的介绍视频(2025 年 7 月 7 日上传):[B 站链接](https://www.bilibili.com/video/BV1zjGjzfEXh)
+观看我们于 2025 年 7 月 7 日上传的哔哩哔哩介绍视频:[点击这里](https://www.bilibili.com/video/BV1zjGjzfEXh)
-## 已测试的音乐播放器
+## 立即下载试用
-- 网易云音乐
- - 请先安装 [BetterNCM 插件](https://microblock.cc/betterncm) 安装完成后如若弹出降级指引,请根据指引完成网易云音乐的降级操作(降级至 2.10.13);
- - 之后请在 PluginMarket 内安装 InfLink 插件,安装完成后请重启网易云音乐。至此,所有预备操作均已完成,尽情享用吧!
-- 酷狗音乐
- - 请确保酷狗音乐设置项 “支持系统播放控件,如锁屏界面” 已开启
- - 不会广播时间线信息,这意味着当您在酷狗音乐中更改播放进度时,BetterLyrics 无法检测到此更改。
-- Apple Music
- - 确保您在设置中将时间线阈值设置为约 600 毫秒(进入"设置"-"高级选项"进行更改),否则歌词会不断前后跳动。
-- foobar2000
- - 确保您安装了 https://github.com/dumbie/foo_mediacontrol 插件
-- Spotify
-- QQ 音乐
-- PotPlayer
-- 媒体播放器(系统自带)
-- LX 音乐
- - 请确保您已在 LX 音乐设置页面启用“开放 API”
- - 然后打开 BetterLyrics,进入设置,点击“高级选项”,输入您的 LX 音乐服务器地址(例如 http://127.0.0.1:23330)即可
-- MusicBee
- - 请先安装 https://github.com/HenryPDT/mb_MediaControl
-- iTunes
- - 请先安装 https://github.com/thewizrd/iTunes-SMTC
-- AIMP
- - 请先安装 https://www.aimp.ru/?do=catalog&rec_id=1097
-
-## 立即下载体验
-
-### Microsoft Store
+### Microsoft Store 推荐安装方式
-**最简单**的获取方式,**无限制**免费试用或购买(免费版与付费版**功能完全相同**)
+**最方便**的获取方式,支持**永久免费试用**与购买(免费版与付费版**无功能差异**)
-☕ 如果您觉得本软件好用,请考虑在 **Microsoft Store** 中购买支持开发者 🧧,非常感谢您的支持!🥰
+☕ 如果你觉得本软件对你有帮助,欢迎在 Microsoft Store **支持我一杯奶茶** 🧧🥰
-> 稳定版本发布时,Microsoft Store 将永远是第一个收到更新的渠道。
+> 一旦有稳定版发布,Microsoft Store 将是第一更新渠道。
-### Google Drive
+### 备用下载方式:Google Drive
-或从 Google Drive 获取(请查看[发布页面](https://github.com/jayfunc/BetterLyrics/releases)获取链接)
+你也可以在 [发布页](https://github.com/jayfunc/BetterLyrics/releases) 找到 Google Drive 下载链接
-> 请注意您下载的是".zip"文件,安装指南请参考[此文档](How2Install/How2Install.md)。
+> 下载为 `.zip` 压缩包,安装方法请参阅:[安装指南](How2Install/How2Install.md)
-## 特别感谢
+## 致谢
-- [Lyricify-Lyrics-Helper](https://github.com/WXRIW/Lyricify-Lyrics-Helper)
- - 提供 QQ、网易、酷狗音源的歌词获取、解密和解析
-- [LRCLIB](https://lrclib.net/)
- - LRCLIB 歌词 API 提供商
-- [Audio Tools Library (ATL) for .NET](https://github.com/Zeugma440/atldotnet)
- - 用于提取音乐文件中的图片
-- [WinUIEx](https://github.com/dotMorten/WinUIEx)
- - 提供便捷的 Win32 API 窗口操作方式
-- [TagLib#](https://github.com/mono/taglib-sharp)
- - 用于读取原始歌词内容
-- [Vanara](https://github.com/dahall/Vanara)
- - Win32 API 包装器
-- [Stackoverflow - How to animate Margin property in WPF](https://stackoverflow.com/a/21542882/11048731)
-- [DevWinUI](https://github.com/ghost1372/DevWinUI)
-- [Bilibili -【WinUI3】SystemBackdropController:定义云母、亚克力效果](https://www.bilibili.com/video/BV1PY4FevEkS)
-- [cnblogs - .NET App 与 Windows 系统媒体控制(SMTC)交互](https://www.cnblogs.com/TwilightLemon/p/18279496)
-- [Win2D 中的游戏循环:CanvasAnimatedControl](https://www.cnblogs.com/walterlv/p/10236395.html)
-- [r2d2rigo/Win2D-Samples](https://github.com/r2d2rigo/Win2D-Samples/blob/master/IrisBlurWin2D/IrisBlurWin2D/MainPage.xaml.cs)
-- [CommunityToolkit - 从入门到精通](https://mvvm.coldwind.top/)
+- [Lyricify-Lyrics-Helper](https://github.com/WXRIW/Lyricify-Lyrics-Helper)
+ - 提供 QQ、网易、酷狗歌词解析与解密支持
+- [LRCLIB](https://lrclib.net/)
+ - 歌词 API 提供方
+- [Audio Tools Library (ATL) for .NET](https://github.com/Zeugma440/atldotnet)
+ - 用于提取音乐封面图像
+- [WinUIEx](https://github.com/dotMorten/WinUIEx)
+ - 提供窗口相关 Win32 API 简化访问方式
+- [TagLib#](https://github.com/mono/taglib-sharp)
+ - 用于读取音频文件中的歌词内容
+- [Vanara](https://github.com/dahall/Vanara)
+ - Win32 API 封装库
+- [StackOverflow - 如何为 WPF 动画 Margin 属性](https://stackoverflow.com/a/21542882/11048731)
+- [DevWinUI](https://github.com/ghost1372/DevWinUI)
+- [Bilibili -【WinUI3】SystemBackdropController 讲解](https://www.bilibili.com/video/BV1PY4FevEkS)
+- [博客园 - .NET App 与 SMTC 控制](https://www.cnblogs.com/TwilightLemon/p/18279496)
+- [Win2D 中的游戏循环介绍](https://www.cnblogs.com/walterlv/p/10236395.html)
+- [Win2D 示例 - Iris Blur](https://github.com/r2d2rigo/Win2D-Samples/blob/master/IrisBlurWin2D/IrisBlurWin2D/MainPage.xaml.cs)
+- [CommunityToolkit 教程](https://mvvm.coldwind.top/)
-## 设计灵感来源
+## 灵感来源
- [refined-now-playing-netease](https://github.com/solstice23/refined-now-playing-netease)
- [Lyricify-App](https://github.com/WXRIW/Lyricify-App)
- [椒盐音乐 Salt Player](https://moriafly.com/program/salt-player)
- [MyToolBar](https://github.com/TwilightLemon/MyToolBar)
-## ✍️ 帮助我们翻译成您的语言
+## ✍️ 欢迎协助翻译!
-找不到您的语言?
-别担心!立即开始翻译,成为贡献者!😆
-点击[链接](https://crowdin.com/project/betterlyrics/invite?h=d767e4f2dbd832d8fcdb6f7e5a198b402502866),立即通过 Crowdin 将这款应用翻译成您的语言!
+找不到你的语言?
+没关系!快来成为贡献者的一员吧!😆
+点击此 [链接](https://crowdin.com/project/betterlyrics/invite?h=d767e4f2dbd832d8fcdb6f7e5a198b402502866) 使用 Crowdin 在线翻译!
-## Star 历史
+## Star 增长趋势
[](https://www.star-history.com/#jayfunc/BetterLyrics&Date)
-## 欢迎提交问题和拉取请求
+## 欢迎反馈和 PR!
-如果您发现 bug,请在 issues 中提交;如果您有任何想法,也欢迎在这里分享。
+发现 bug 请提交到 Issues,如有想法欢迎一起参与开发!
diff --git a/README.md b/README.md
index eaa243b..9baba22 100644
--- a/README.md
+++ b/README.md
@@ -3,22 +3,25 @@
_**❓ Click here to view frequently asked questions (FAQ)**_
-

+
BetterLyrics
-Your smooth dynamic lyrics display tool built with WinUI 3
+Your dynamic lyrics display tool built with WinUI 3 and Win2D — works with local playback and other players
## 🎉 This project was featured by SSPAI!
+
Check out the article: [BetterLyrics – An immersive and smooth lyrics display tool designed for Windows](https://sspai.com/post/101028)
## 🔈 Feedback and chat group
-- [QQ](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) | [Discord](https://discord.gg/5yAQPnyCKv) | [Telegram](https://t.me/+svhSLZ7awPsxNGY1)
+- [
QQ](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388)
+- [
Discord](https://discord.gg/5yAQPnyCKv)
+- [
Telegram](https://t.me/+svhSLZ7awPsxNGY1)
## 🌟 Highlighted features
@@ -39,9 +42,67 @@ Check out the article: [BetterLyrics – An immersive and smooth lyrics display
- 酷狗音乐 Kugou Music
- [amll-ttml-db](https://github.com/Steve-xmh/amll-ttml-db)
- [LRCLIB](https://lrclib.net/)
+- 🎶 **Multiple Music Players Supported**
+
+ - NetEase Cloud Music
+
+ - Please install the [BetterNCM plugin](https://microblock.cc/betterncm) first. If a downgrade guide pops up after the installation, please follow the guide to complete the downgrade of NetEase Cloud Music (downgrade to 2.10.13);
+ - After that, please install the InfLink plugin in PluginMarket. After the installation is complete, please restart NetEase Cloud Music. At this point, all preparatory operations have been completed, enjoy it!
+
+
+
+ - Kugou Music
+
+ - Please make sure that the Kugou Music setting "Support system playback controls, such as lock screen interface" is turned on
+ - No timeline information broadcasted, which means when you change timeline position in Kugou Music, BetterLyrics has no way to detect this change.
+
+
+
+ - Apple Music
+
+ - Make sure you have set timeline threshold to around 600 ms in settings (Go to "Settings" - "Advanced option" to change), otherwise, the lyrics will be moving forward and afterward constantly.
+
+
+
+ - foobar2000
+
+ - Make sure you have https://github.com/dumbie/foo_mediacontrol installed with it
+
+
+
+ - Spotify
+ - QQ Music
+ - PotPlayer
+ - Media Player (System)
+
+ - LX Music
+
+ - Please make sure you have enabled "Open API" in LX Music settings page
+ - Then open BetterLyrics, go to settings, go to "Advanced options", input your LX Music server address (mostly like http://127.0.0.1:23330) and there you go!
+
+
+
+ - MusicBee
+
+ - Please install https://github.com/HenryPDT/mb_MediaControl before using
+
+
+
+ - iTunes
+
+ - Please install https://github.com/thewizrd/iTunes-SMTC before using
+
+
+
+ - AIMP
+
+ - Please install https://www.aimp.ru/?do=catalog&rec_id=1097 before using
+
+
+
- 🪟 **Multiple Display Modes**
- **Standard Mode**
- - Enjoy an immersive listening journey with rich lyrics animations and beautifully dynamic backgrounds
+ - Enjoy an immersive listening journey with rich lyrics animations and beautifully dynamic backgrounds
- **Dock Mode**
- A smart animated lyrics bar docked to your screen edge
- **Desktop Mode**
@@ -81,32 +142,6 @@ Check out the article: [BetterLyrics – An immersive and smooth lyrics display
Watch our introduction video (uploaded on 7 July 2025) on Bilibili [here](https://www.bilibili.com/video/BV1zjGjzfEXh).
-## Tested music player
-
-- NetEase Cloud Music
- - Please install the [BetterNCM plugin](https://microblock.cc/betterncm) first. If a downgrade guide pops up after the installation, please follow the guide to complete the downgrade of NetEase Cloud Music (downgrade to 2.10.13);
- - After that, please install the InfLink plugin in PluginMarket. After the installation is complete, please restart NetEase Cloud Music. At this point, all preparatory operations have been completed, enjoy it!
-- Kugou Music
- - Please make sure that the Kugou Music setting "Support system playback controls, such as lock screen interface" is turned on
- - No timeline information broadcasted, which means when you change timeline position in Kugou Music, BetterLyrics has no way to detect this change.
-- Apple Music
- - Make sure you have set timeline threshold to around 600 ms in settings (Go to "Settings" - "Advanced option" to change), otherwise, the lyrics will be moving forward and afterward constantly.
-- foobar2000
- - Make sure you have https://github.com/dumbie/foo_mediacontrol installed with it
-- Spotify
-- QQ Music
-- PotPlayer
-- Media Player (System)
-- LX Music
- - Please make sure you have enabled "Open API" in LX Music settings page
- - Then open BetterLyrics, go to settings, go to "Advanced options", input your LX Music server address (mostly like http://127.0.0.1:23330) and there you go!
-- MusicBee
- - Please install https://github.com/HenryPDT/mb_MediaControl before using
-- iTunes
- - Please install https://github.com/thewizrd/iTunes-SMTC before using
-- AIMP
- - Please install https://www.aimp.ru/?do=catalog&rec_id=1097 before using
-
## Try it now
### Microsoft Store
@@ -168,4 +203,4 @@ Click the [link](https://crowdin.com/project/betterlyrics/invite?h=d767e4f2dbd83
## Any issues and PRs are welcomed
-If you find a bug please file it in issues or if you have any ideas feel free to share it here.
\ No newline at end of file
+If you find a bug please file it in issues or if you have any ideas feel free to share it here.