├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── PRIVACY.md ├── README.md ├── SECURITY.md ├── resources ├── cmd_rm.gif ├── figma_promo_16x9.jpg ├── hw_api.gif ├── main_dragdrop.gif ├── main_preview.gif ├── music_api.gif ├── rotary_demo.gif ├── screen_saver.gif ├── taskbar_theme.gif ├── wallpaper_depth.gif ├── wallpaper_emulator.gif ├── wallpaper_gif.gif ├── wallpaper_html.gif ├── wallpaper_shadertoy.gif ├── wallpaper_unity.gif └── wallpaper_video.gif ├── schemas └── livelyPropertiesSchema.json └── src ├── Lively ├── Lively.Common.Services │ ├── GithubUpdaterService.cs │ ├── HardwareUsageService.cs │ ├── HttpDownloadService.cs │ ├── Lively.Common.Services.csproj │ ├── NAudioVisualizerService.cs │ └── NpsmNowPlayingService.cs ├── Lively.Common │ ├── Com │ │ ├── ApplicationActivationManager.cs │ │ ├── IApplicationActivationManager.cs │ │ └── IDesktopWallpaper.cs │ ├── CommandlineArgs.cs │ ├── Constants.cs │ ├── Exceptions │ │ ├── ScreenNotFoundException.cs │ │ ├── WallpaperFileException.cs │ │ ├── WallpaperNotAllowedException.cs │ │ ├── WallpaperNotFoundException.cs │ │ ├── WallpaperPluginException.cs │ │ ├── WallpaperPluginMediaCodecException.cs │ │ ├── WallpaperPluginNotFoundException.cs │ │ ├── WallpaperWebView2NotFoundException.cs │ │ └── WorkerWException.cs │ ├── Extensions │ │ ├── EnumExtensions.cs │ │ ├── ProcessExtensions.cs │ │ ├── TaskExtensions.cs │ │ └── WallpaperExtensions.cs │ ├── Factories │ │ ├── ApplicationsFactory.cs │ │ ├── ApplicationsRulesFactory.cs │ │ ├── IApplicationsFactory.cs │ │ ├── IApplicationsRulesFactory.cs │ │ ├── IWallpaperLibraryFactory.cs │ │ └── WallpaperLibraryFactory.cs │ ├── FileTypes.cs │ ├── Helpers │ │ ├── AppLifeCycleUtil.cs │ │ ├── Archive │ │ │ ├── ZipCreate.cs │ │ │ └── ZipExtract.cs │ │ ├── BuildInfoUtil.cs │ │ ├── EncryptUtil.cs │ │ ├── Files │ │ │ └── FileUtil.cs │ │ ├── GithubUtil.cs │ │ ├── Hardware │ │ │ ├── PowerUtil.cs │ │ │ └── SystemInfo.cs │ │ ├── IPC │ │ │ └── PipeClient.cs │ │ ├── LinkUtil.cs │ │ ├── LivelyInfoUtil.cs │ │ ├── LivelyPropertyUtil.cs │ │ ├── LogUtil.cs │ │ ├── MVVM │ │ │ └── ObservableObject.cs │ │ ├── Pinvoke │ │ │ ├── DwmThumbnailWrapper.cs │ │ │ └── NativeMethods.cs │ │ ├── Shell │ │ │ ├── DesktopUtil.cs │ │ │ └── ThumbnailUtil.cs │ │ ├── Storage │ │ │ ├── JsonStorage.cs │ │ │ └── JsonUtil.cs │ │ ├── StreamUtil.cs │ │ └── WindowUtil.cs │ ├── JsonConverters │ │ ├── IpcMessageConverter.cs │ │ └── LivelyControlModelConverter.cs │ ├── Languages.cs │ ├── Lively.Common.csproj │ └── Services │ │ ├── IAppUpdaterService.cs │ │ ├── IAudioVisualizerService.cs │ │ ├── ICacheService.cs │ │ ├── IDialogService.cs │ │ ├── IDispatcherService.cs │ │ ├── IDownloadService.cs │ │ ├── IFileService.cs │ │ ├── IHardwareUsageService.cs │ │ ├── INavigator.cs │ │ ├── INowPlayingService.cs │ │ ├── IResourceService.cs │ │ ├── IRunnerService.cs │ │ ├── IScreensaverService.cs │ │ ├── ISystray.cs │ │ ├── ITransparentTbService.cs │ │ └── IUserSettingsService.cs ├── Lively.Gallery.Client │ ├── ApiException.cs │ ├── GalleryClient.cs │ ├── HttpRequestMessageExtensions.cs │ ├── Interfaces │ │ └── ITokenStore.cs │ ├── JsonTokenStore.cs │ ├── Lively.Gallery.Client.csproj │ ├── SearchQuery.cs │ └── SearchQueryBuilder.cs ├── Lively.Grpc.Client │ ├── AppUpdaterClient.cs │ ├── CommandsClient.cs │ ├── DisplayManagerClient.cs │ ├── IAppUpdaterClient.cs │ ├── ICommandsClient.cs │ ├── IDesktopCoreClient.cs │ ├── IDisplayManagerClient.cs │ ├── IUserSettingsClient.cs │ ├── IWallpaperPlaylistClient.cs │ ├── Lively.Grpc.Client.csproj │ ├── UserSettingsClient.cs │ ├── WallpaperPlaylistClient.cs │ └── WinDesktopCoreClient.cs ├── Lively.Grpc.Common │ ├── Lively.Grpc.Common.csproj │ └── Proto │ │ ├── commands.proto │ │ ├── display.proto │ │ ├── playlist.proto │ │ ├── settings.proto │ │ ├── update.proto │ │ └── wallpaper.proto ├── Lively.ML │ ├── DepthEstimate │ │ ├── IDepthEstimate.cs │ │ ├── MiDaS.cs │ │ ├── ModelInput.cs │ │ └── ModelOutput.cs │ ├── Helpers │ │ └── ImageUtil.cs │ └── Lively.ML.csproj ├── Lively.Models │ ├── AddWallpaperCreateModel.cs │ ├── AppMusicExclusionRuleModel.cs │ ├── ApplicationModel.cs │ ├── ApplicationRulesModel.cs │ ├── DisplayMonitor.cs │ ├── Enums │ │ ├── AppRules.cs │ │ ├── AppTheme.cs │ │ ├── AppThemeBackground.cs │ │ ├── AudioPauseAlgorithm.cs │ │ ├── ContentPageType.cs │ │ ├── DisplayIdentificationMode.cs │ │ ├── DisplayPause.cs │ │ ├── InputForwardMode.cs │ │ ├── LivelyGUIState.cs │ │ ├── LivelyGifPlayer.cs │ │ ├── LivelyMediaPlayer.cs │ │ ├── LivelyPicturePlayer.cs │ │ ├── LivelyWebBrowser.cs │ │ ├── PlaybackState.cs │ │ ├── ProcessMonitorAlgorithm.cs │ │ ├── ScreensaverIdleTime.cs │ │ ├── ScreensaverType.cs │ │ ├── StreamQualitySuggestion.cs │ │ ├── TaskbarTheme.cs │ │ ├── UpdateWallpaperType.cs │ │ ├── WallpaperArrangement.cs │ │ ├── WallpaperScaler.cs │ │ ├── WallpaperType.cs │ │ └── WebPageType.cs │ ├── FileTypeModel.cs │ ├── Gallery │ │ ├── API │ │ │ ├── ApiErrors.cs │ │ │ ├── HealthInfo.cs │ │ │ ├── HealthResult.cs │ │ │ ├── Page.cs │ │ │ ├── ProfileDto.cs │ │ │ ├── ReportModel.cs │ │ │ ├── SortingType.cs │ │ │ ├── TokensModel.cs │ │ │ ├── VoteType.cs │ │ │ └── WallpaperDto.cs │ │ └── ApiResponse.cs │ ├── GalleryModel.cs │ ├── InAppNotificationModel.cs │ ├── LanguageModel.cs │ ├── LibraryModel.cs │ ├── Lively.Models.csproj │ ├── LivelyControls │ │ ├── ButtonModel.cs │ │ ├── CheckboxModel.cs │ │ ├── ColorPickerModel.cs │ │ ├── ControlModel.cs │ │ ├── DropdownModel.cs │ │ ├── FolderDropdownModel.cs │ │ ├── LabelModel.cs │ │ ├── LocalizationFile.cs │ │ ├── LocalizationLanguage.cs │ │ ├── LocalizedStrings.cs │ │ ├── ScalerDropdownModel.cs │ │ ├── SliderModel.cs │ │ └── TextboxModel.cs │ ├── LivelyInfoLocalizationFile.cs │ ├── LivelyInfoModel.cs │ ├── Message │ │ ├── ConsoleMessageType.cs │ │ ├── IpcMessage.cs │ │ ├── LivelyButton.cs │ │ ├── LivelyCheckbox.cs │ │ ├── LivelyCloseCmd.cs │ │ ├── LivelyColorPicker.cs │ │ ├── LivelyDropdown.cs │ │ ├── LivelyDropdownScaler.cs │ │ ├── LivelyFolderDropdown.cs │ │ ├── LivelyMessageConsole.cs │ │ ├── LivelyMessageHwnd.cs │ │ ├── LivelyMessageScreenshot.cs │ │ ├── LivelyMessageWallpaperLoaded.cs │ │ ├── LivelyReloadCmd.cs │ │ ├── LivelyResumeCmd.cs │ │ ├── LivelyScreenshotCmd.cs │ │ ├── LivelySlider.cs │ │ ├── LivelySuspendCmd.cs │ │ ├── LivelySystemInformation.cs │ │ ├── LivelySystemNowPlaying.cs │ │ ├── LivelyTextBox.cs │ │ ├── LivelyVolumeCmd.cs │ │ ├── MessageType.cs │ │ └── ScreenshotFormat.cs │ ├── ScreenLayoutModel.cs │ ├── ScreenSaverLayoutModel.cs │ ├── Services │ │ ├── AppUpdaterEventArgs.cs │ │ ├── ColorProperties.cs │ │ ├── HardwareUsageEventArgs.cs │ │ └── NowPlayingEventArgs.cs │ ├── SettingsModel.cs │ ├── ThemeModel.cs │ ├── UserControls │ │ ├── FolderDropdownUserControlModel.cs │ │ └── NavigationItem.cs │ └── WallpaperLayoutModel.cs ├── Lively.Player.CefSharp │ ├── App.config │ ├── Extensions │ │ └── CefSharp │ │ │ ├── DevTools │ │ │ ├── DevToolsExtensions.cs │ │ │ └── TaskMethodDevToolsMessageObserver.cs │ │ │ ├── MenuHandler.cs │ │ │ └── PopUpHandle.cs │ ├── Form1.Designer.cs │ ├── Form1.cs │ ├── Form1.resx │ ├── Lively.Player.CefSharp.csproj │ ├── Program.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── StartArgs.cs │ ├── app.manifest │ └── appicon.ico ├── Lively.Player.WebView2 │ ├── App.config │ ├── Extensions │ │ └── WebView2 │ │ │ ├── CoreWebView2Extensions.cs │ │ │ └── DevToolsExtensions.cs │ ├── Form1.Designer.cs │ ├── Form1.cs │ ├── Form1.resx │ ├── Lively.Player.WebView2.csproj │ ├── Program.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── StartArgs.cs │ └── app.manifest ├── Lively.Player.Wmf │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── Lively.Player.Wmf.csproj │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── StartArgs.cs │ └── app.manifest ├── Lively.UI.Shared │ ├── Helpers │ │ ├── DesktopBridgeUtil.cs │ │ └── WebViewUtil.cs │ ├── Lively.UI.Shared.projitems │ ├── Lively.UI.Shared.shproj │ └── ViewModels │ │ ├── AboutViewModel.cs │ │ ├── AddWallpaperCreateViewModel.cs │ │ ├── AddWallpaperDataViewModel.cs │ │ ├── AddWallpaperViewModel.cs │ │ ├── AppUpdateViewModel.cs │ │ ├── ChooseDisplayViewModel.cs │ │ ├── ControlPanel │ │ ├── ControlPanelViewModel.cs │ │ ├── ScreensaverLayoutViewModel.cs │ │ └── WallpaperLayoutViewModel.cs │ │ ├── CustomiseWallpaperViewModel.cs │ │ ├── DepthEstimateWallpaperViewModel.cs │ │ ├── Gallery │ │ ├── GalleryLoginViewModel.cs │ │ ├── GallerySubscriptionViewModel.cs │ │ ├── GalleryViewModel.cs │ │ ├── ManageAccountViewModel.cs │ │ ├── ReportWallpaperViewModel.cs │ │ └── RestoreWallpaperViewModel.cs │ │ ├── LibraryAboutViewModel.cs │ │ ├── LibraryViewModel.cs │ │ ├── MainViewModel.cs │ │ ├── PatreonSupportersViewModel.cs │ │ ├── Settings │ │ ├── AppThemeViewModel.cs │ │ ├── FindMoreAppsViewModel.cs │ │ ├── SettingsGeneralViewModel.cs │ │ ├── SettingsPerformanceViewModel.cs │ │ ├── SettingsScreensaverViewModel.cs │ │ ├── SettingsSystemViewModel.cs │ │ └── SettingsWallpaperViewModel.cs │ │ └── ShareWallpaperViewModel.cs ├── Lively.UI.WinUI │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── CustomIcons.ttf │ │ ├── Icons │ │ │ ├── icons8-error.svg │ │ │ ├── icons8-info.svg │ │ │ ├── icons8-ok.svg │ │ │ └── icons8-warn.svg │ │ ├── LargeTile.scale-100.png │ │ ├── LargeTile.scale-125.png │ │ ├── LargeTile.scale-150.png │ │ ├── LargeTile.scale-200.png │ │ ├── LargeTile.scale-400.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── SmallTile.scale-100.png │ │ ├── SmallTile.scale-125.png │ │ ├── SmallTile.scale-150.png │ │ ├── SmallTile.scale-200.png │ │ ├── SmallTile.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-24.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.targetsize-32.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── StoreLogo.backup.png │ │ ├── StoreLogo.scale-100.png │ │ ├── StoreLogo.scale-125.png │ │ ├── StoreLogo.scale-150.png │ │ ├── StoreLogo.scale-200.png │ │ ├── StoreLogo.scale-400.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-400.png │ │ ├── banner-lively-1080.jpg │ │ ├── changelog-page-preview.jpg │ │ ├── icon-lively-48.png │ │ ├── icons8-application-window-96.png │ │ ├── icons8-artificial-intelligence-100.png │ │ ├── icons8-cat-back-view-64.png │ │ ├── icons8-depth-effect-96.png │ │ ├── icons8-github-96.png │ │ ├── icons8-google-96.png │ │ ├── icons8-landscape-64.png │ │ ├── icons8-mail-96.png │ │ ├── icons8-panorama-96.png │ │ ├── icons8-reddit-96.png │ │ ├── icons8-twitter-96.png │ │ ├── icons8-wallpaper-96.png │ │ ├── icons8-youtube-96.png │ │ ├── patreon-page-preview.jpg │ │ └── tray-tutorial.gif │ ├── Behaviors │ │ ├── CheckBoxCheckedChangedBehavior.cs │ │ ├── ComboBoxSelectionChangedBehavior.cs │ │ ├── GridViewItemClickBehavior.cs │ │ ├── SliderValueChangedBehavior.cs │ │ └── TextBoxTextChangedBehavior.cs │ ├── Directory.Build.props │ ├── Extensions │ │ ├── ColorExtensions.cs │ │ ├── ContentDialogExtensions.cs │ │ ├── WindowExtensions.cs │ │ └── WindowsStoragePickersExtensions.cs │ ├── Factories │ │ ├── AppThemeFactory.cs │ │ └── IAppThemeFactory.cs │ ├── Helpers │ │ ├── Converters │ │ │ ├── AudioVolumeGlyphConverter.cs │ │ │ ├── BoolToBackButtonVisibilityConverter.cs │ │ │ ├── BoolToVisibilityConverter.cs │ │ │ ├── FloatToBoolConverter.cs │ │ │ ├── HexStringToColorConverter.cs │ │ │ ├── ListViewSelectionModeStringToEnumConverter.cs │ │ │ ├── NullVisibilityConverter.cs │ │ │ ├── StringToInfoBarSeverityConverter.cs │ │ │ ├── StringToInfoBarSeverityIconConverter.cs │ │ │ ├── StringTruncateConverter.cs │ │ │ ├── UriToBitmapImageConverter.cs │ │ │ └── WallpaperTypeEnumToStringConverter.cs │ │ ├── LivelyControlTemplateSelector.cs │ │ ├── MicaCustomBackdrop.cs │ │ └── NavigationMenuItemTemplateSelector.cs │ ├── Lively.UI.WinUI.csproj │ ├── Nlog.config │ ├── Package.appxmanifest │ ├── Services │ │ ├── DialogService.cs │ │ ├── DiskCacheService.cs │ │ ├── DispatcherService.cs │ │ ├── FileService.cs │ │ ├── Navigator.cs │ │ └── ResourceService.cs │ ├── StartArgs.cs │ ├── Strings │ │ ├── af-ZA │ │ │ └── Resources.resw │ │ ├── ar-AE │ │ │ └── Resources.resw │ │ ├── az-Latn │ │ │ └── Resources.resw │ │ ├── be-BY │ │ │ └── Resources.resw │ │ ├── bg-BG │ │ │ └── Resources.resw │ │ ├── ca-ES │ │ │ └── Resources.resw │ │ ├── cs-CZ │ │ │ └── Resources.resw │ │ ├── da-DK │ │ │ └── Resources.resw │ │ ├── de-DE │ │ │ └── Resources.resw │ │ ├── el-GR │ │ │ └── Resources.resw │ │ ├── en-US │ │ │ └── Resources.resw │ │ ├── es-ES │ │ │ └── Resources.resw │ │ ├── es-MX │ │ │ └── Resources.resw │ │ ├── fa-IR │ │ │ └── Resources.resw │ │ ├── fi-FI │ │ │ └── Resources.resw │ │ ├── fil-PH │ │ │ └── Resources.resw │ │ ├── fr-FR │ │ │ └── Resources.resw │ │ ├── ga-IE │ │ │ └── Resources.resw │ │ ├── gl-ES │ │ │ └── Resources.resw │ │ ├── he-IL │ │ │ └── Resources.resw │ │ ├── hi-IN │ │ │ └── Resources.resw │ │ ├── hu-HU │ │ │ └── Resources.resw │ │ ├── id-ID │ │ │ └── Resources.resw │ │ ├── it-IT │ │ │ └── Resources.resw │ │ ├── ja-JP │ │ │ └── Resources.resw │ │ ├── kk-KZ │ │ │ └── Resources.resw │ │ ├── ko-KR │ │ │ └── Resources.resw │ │ ├── lt-LT │ │ │ └── Resources.resw │ │ ├── ms-MY │ │ │ └── Resources.resw │ │ ├── my-MM │ │ │ └── Resources.resw │ │ ├── nb-NO │ │ │ └── Resources.resw │ │ ├── nl-NL │ │ │ └── Resources.resw │ │ ├── pl-PL │ │ │ └── Resources.resw │ │ ├── pt-BR │ │ │ └── Resources.resw │ │ ├── pt-PT │ │ │ └── Resources.resw │ │ ├── ro-RO │ │ │ └── Resources.resw │ │ ├── ru-RU │ │ │ └── Resources.resw │ │ ├── sk-SK │ │ │ └── Resources.resw │ │ ├── sr-Cyrl │ │ │ └── Resources.resw │ │ ├── sr-Latn │ │ │ └── Resources.resw │ │ ├── sv-SE │ │ │ └── Resources.resw │ │ ├── tr-TR │ │ │ └── Resources.resw │ │ ├── uk-UA │ │ │ └── Resources.resw │ │ ├── vi-VN │ │ │ └── Resources.resw │ │ ├── zh-CN │ │ │ └── Resources.resw │ │ └── zh-Hant │ │ │ └── Resources.resw │ ├── UserControls │ │ ├── ColorPickerButton.xaml │ │ ├── ColorPickerButton.xaml.cs │ │ ├── DisplaySelector.xaml │ │ ├── DisplaySelector.xaml.cs │ │ ├── FolderDropdown.xaml │ │ └── FolderDropdown.xaml.cs │ ├── Views │ │ ├── LivelyProperty │ │ │ ├── EyeDropper.xaml │ │ │ ├── EyeDropper.xaml.cs │ │ │ ├── LivelyPropertiesTray.xaml │ │ │ ├── LivelyPropertiesTray.xaml.cs │ │ │ ├── LivelyPropertiesView.xaml │ │ │ └── LivelyPropertiesView.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ └── Pages │ │ │ ├── AboutView.xaml │ │ │ ├── AboutView.xaml.cs │ │ │ ├── AddWallpaperCreateView.xaml │ │ │ ├── AddWallpaperCreateView.xaml.cs │ │ │ ├── AddWallpaperDataView.xaml │ │ │ ├── AddWallpaperDataView.xaml.cs │ │ │ ├── AddWallpaperView.xaml │ │ │ ├── AddWallpaperView.xaml.cs │ │ │ ├── AppThemeView.xaml │ │ │ ├── AppThemeView.xaml.cs │ │ │ ├── AppUpdateView.xaml │ │ │ ├── AppUpdateView.xaml.cs │ │ │ ├── ChooseDisplayView.xaml │ │ │ ├── ChooseDisplayView.xaml.cs │ │ │ ├── ControlPanel │ │ │ ├── ControlPanelView.xaml │ │ │ ├── ControlPanelView.xaml.cs │ │ │ ├── ScreensaverLayoutView.xaml │ │ │ ├── ScreensaverLayoutView.xaml.cs │ │ │ ├── WallpaperLayoutCustomiseView.xaml │ │ │ ├── WallpaperLayoutCustomiseView.xaml.cs │ │ │ ├── WallpaperLayoutView.xaml │ │ │ └── WallpaperLayoutView.xaml.cs │ │ │ ├── DepthEstimateWallpaperView.xaml │ │ │ ├── DepthEstimateWallpaperView.xaml.cs │ │ │ ├── Gallery │ │ │ ├── GalleryFeaturedView.xaml │ │ │ ├── GalleryFeaturedView.xaml.cs │ │ │ ├── GalleryLibraryView.xaml │ │ │ ├── GalleryLibraryView.xaml.cs │ │ │ ├── GalleryLoginView.xaml │ │ │ ├── GalleryLoginView.xaml.cs │ │ │ ├── GallerySubscriptionView.xaml │ │ │ ├── GallerySubscriptionView.xaml.cs │ │ │ ├── GalleryView.xaml │ │ │ ├── GalleryView.xaml.cs │ │ │ ├── ManageAccountView.xaml │ │ │ ├── ManageAccountView.xaml.cs │ │ │ ├── ReportWallpaperView.xaml │ │ │ ├── ReportWallpaperView.xaml.cs │ │ │ ├── RestoreWallpaperView.xaml │ │ │ ├── RestoreWallpaperView.xaml.cs │ │ │ ├── ShareWallpaperView.xaml │ │ │ └── ShareWallpaperView.xaml.cs │ │ │ ├── HelpView.xaml │ │ │ ├── HelpView.xaml.cs │ │ │ ├── LibraryAboutView.xaml │ │ │ ├── LibraryAboutView.xaml.cs │ │ │ ├── LibraryView.xaml │ │ │ ├── LibraryView.xaml.cs │ │ │ ├── PatreonSupportersView.xaml │ │ │ ├── PatreonSupportersView.xaml.cs │ │ │ ├── Settings │ │ │ ├── FindMoreAppsView.xaml │ │ │ ├── FindMoreAppsView.xaml.cs │ │ │ ├── SettingsGeneralView.xaml │ │ │ ├── SettingsGeneralView.xaml.cs │ │ │ ├── SettingsPerformanceView.xaml │ │ │ ├── SettingsPerformanceView.xaml.cs │ │ │ ├── SettingsScreensaverView.xaml │ │ │ ├── SettingsScreensaverView.xaml.cs │ │ │ ├── SettingsSystemView.xaml │ │ │ ├── SettingsSystemView.xaml.cs │ │ │ ├── SettingsWallpaperView.xaml │ │ │ └── SettingsWallpaperView.xaml.cs │ │ │ ├── TrayMenuHelp.xaml │ │ │ └── TrayMenuHelp.xaml.cs │ ├── app.manifest │ └── appicon.ico ├── Lively.Utility.Commandline │ ├── Lively.Utility.Commandline.csproj │ └── Program.cs ├── Lively.Utility.ConsoleDemo │ ├── Lively.Utility.ConsoleDemo.csproj │ └── Program.cs ├── Lively.Utility.Screensaver │ ├── App.config │ ├── Com │ │ ├── ApplicationActivationManager.cs │ │ └── IApplicationActivationManager.cs │ ├── Lively.Utility.Screensaver.csproj │ ├── Program.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── Lively.Utility.Watchdog │ ├── App.config │ ├── Lively.Utility.Watchdog.csproj │ ├── Program.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── Lively.sln └── Lively │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── Commandline │ ├── CommandHandler.cs │ └── ICommandHandler.cs │ ├── Converters │ ├── BoolToVisibilityConverter.cs │ └── TaskbarProgressConverter.cs │ ├── Core │ ├── Display │ │ ├── DisplayManager.cs │ │ └── IDisplayManager.cs │ ├── IDesktopCore.cs │ ├── IWallpaper.cs │ ├── Suspend │ │ ├── IPlayback.cs │ │ ├── Playback.cs │ │ └── VolumeMixer.cs │ ├── Wallpapers │ │ ├── DwmThumbnailPlayer.cs │ │ ├── ExtPrograms.cs │ │ ├── PictureWinAPI.cs │ │ ├── VideoMpvPlayer.cs │ │ ├── VideoVlcPlayer.cs │ │ ├── VideoWmfProcess.cs │ │ ├── WebCefSharpProcess.cs │ │ └── WebWebView2.cs │ ├── Watchdog │ │ ├── IWatchdogService.cs │ │ └── WatchdogProcess.cs │ └── WinDesktopCore.cs │ ├── Extensions │ ├── LocalizedStringExtension.cs │ └── WindowExtensions.cs │ ├── Factories │ ├── ILivelyPropertyFactory.cs │ ├── IWallpaperPluginFactory.cs │ ├── LivelyPropertyFactory.cs │ └── WallpaperPluginFactory.cs │ ├── Helpers │ ├── CaptureScreen.cs │ ├── DesktopBridgeUtil.cs │ ├── ThemeUtil.cs │ ├── WindowsStartup.cs │ └── WpfUtil.cs │ ├── Lively.csproj │ ├── Nlog.config │ ├── Properties │ ├── Icons.Designer.cs │ ├── Icons.resx │ ├── Resources.Designer.cs │ ├── Resources.af-ZA.resx │ ├── Resources.ar-AE.resx │ ├── Resources.az-Latn.resx │ ├── Resources.be-BY.resx │ ├── Resources.bg-BG.resx │ ├── Resources.ca-ES.resx │ ├── Resources.cs-CZ.resx │ ├── Resources.da-DK.resx │ ├── Resources.de-DE.resx │ ├── Resources.el-GR.resx │ ├── Resources.es-ES.resx │ ├── Resources.es-MX.resx │ ├── Resources.fa-IR.resx │ ├── Resources.fi-FI.resx │ ├── Resources.fil-PH.resx │ ├── Resources.fr-FR.resx │ ├── Resources.ga-IE.resx │ ├── Resources.gl-ES.resx │ ├── Resources.he-IL.resx │ ├── Resources.hi-IN.resx │ ├── Resources.hu-HU.resx │ ├── Resources.id-ID.resx │ ├── Resources.it-IT.resx │ ├── Resources.ja-JP.resx │ ├── Resources.kk-KZ.resx │ ├── Resources.ko-KR.resx │ ├── Resources.lt-LT.resx │ ├── Resources.ms-MY.resx │ ├── Resources.my-MM.resx │ ├── Resources.nb-NO.resx │ ├── Resources.nl-NL.resx │ ├── Resources.pl-PL.resx │ ├── Resources.pt-BR.resx │ ├── Resources.pt-PT.resx │ ├── Resources.resx │ ├── Resources.ro-RO.resx │ ├── Resources.ru-RU.resx │ ├── Resources.sk-SK.resx │ ├── Resources.sr-Cyrl.resx │ ├── Resources.sr-Latn.resx │ ├── Resources.sv-SE.resx │ ├── Resources.tr-TR.resx │ ├── Resources.uk-UA.resx │ ├── Resources.vi-VN.resx │ ├── Resources.zh-CN.resx │ └── Resources.zh-Hant.resx │ ├── RPC │ ├── AppUpdateServer.cs │ ├── CommandsServer.cs │ ├── DisplayManagerServer.cs │ ├── UserSettingsServer.cs │ ├── WallpaperPlaylistServer.cs │ └── WinDesktopCoreServer.cs │ ├── Resources │ ├── appicon.ico │ ├── appicon_96.png │ ├── icons8-application-window-96.png │ ├── icons8-close-96.png │ ├── icons8-home-screen-96.png │ ├── icons8-website-bug-96.png │ └── splash.png │ ├── Services │ ├── ResourceService.cs │ ├── RunnerService.cs │ ├── ScreensaverService.cs │ ├── Systray.cs │ ├── TranslucentTBService.cs │ ├── UserSettingsService.cs │ └── WallpaperPlaylistService.cs │ ├── Themes │ ├── Dark.xaml │ ├── Light.xaml │ ├── ToolStripRendererDark.cs │ └── ToolStripRendererLight.cs │ ├── ViewModels │ └── LibraryPreviewViewModel.cs │ ├── Views │ ├── BlankWindow.xaml │ ├── BlankWindow.xaml.cs │ ├── DebugLog.xaml │ ├── DebugLog.xaml.cs │ ├── DiagnosticMenu.xaml │ ├── DiagnosticMenu.xaml.cs │ ├── DwmThumbnailWindow.xaml │ ├── DwmThumbnailWindow.xaml.cs │ ├── LibraryPreview.xaml │ ├── LibraryPreview.xaml.cs │ ├── ScreenSaverPreview.xaml │ ├── ScreenSaverPreview.xaml.cs │ ├── SplashWindow.xaml │ ├── SplashWindow.xaml.cs │ ├── TransparentWindow.xaml │ ├── TransparentWindow.xaml.cs │ ├── WallpaperPreview.xaml │ ├── WallpaperPreview.xaml.cs │ └── WindowMsg │ │ ├── RawInputMsgWindow.xaml │ │ ├── RawInputMsgWindow.xaml.cs │ │ ├── WndProcMsgWindow.xaml │ │ └── WndProcMsgWindow.xaml.cs │ ├── app.manifest │ └── appicon.ico └── installer ├── Icons └── appicon_96.ico ├── Languages ├── Arabic.isl ├── ChineseSimplified.isl ├── ChineseTraditional.isl ├── Greek.isl ├── Indonesian.isl ├── Korean.isl ├── Lithuanian.isl ├── SerbianCyrillic.isl ├── SerbianLatin.isl ├── Swedish.isl └── Vietnamese.isl ├── License └── License.txt ├── Script.iss ├── Script_x64.iss └── Theme ├── wizard_large.bmp └── wizard_small.bmp /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: rocksdanister 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with kofi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots/mockups about the feature request here. 21 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | https://github.com/rocksdanister/lively/wiki/Contributing-Guidelines 2 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Only the latest release of Lively will be provided with security patches, old releases will not be patched or supported. 6 | 7 | ## Reporting a Vulnerability 8 | 9 | Report to Awoo.git@gmail.com with the title `Security vulnerability (Lively)` 10 | 11 | If I'm free you will get reply within 48 hours. 12 | 13 | If the issue is confirmed, a new release with the patch is published as soon as possible depending on complexity of the issue. 14 | -------------------------------------------------------------------------------- /resources/cmd_rm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/cmd_rm.gif -------------------------------------------------------------------------------- /resources/figma_promo_16x9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/figma_promo_16x9.jpg -------------------------------------------------------------------------------- /resources/hw_api.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/hw_api.gif -------------------------------------------------------------------------------- /resources/main_dragdrop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/main_dragdrop.gif -------------------------------------------------------------------------------- /resources/main_preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/main_preview.gif -------------------------------------------------------------------------------- /resources/music_api.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/music_api.gif -------------------------------------------------------------------------------- /resources/rotary_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/rotary_demo.gif -------------------------------------------------------------------------------- /resources/screen_saver.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/screen_saver.gif -------------------------------------------------------------------------------- /resources/taskbar_theme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/taskbar_theme.gif -------------------------------------------------------------------------------- /resources/wallpaper_depth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_depth.gif -------------------------------------------------------------------------------- /resources/wallpaper_emulator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_emulator.gif -------------------------------------------------------------------------------- /resources/wallpaper_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_gif.gif -------------------------------------------------------------------------------- /resources/wallpaper_html.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_html.gif -------------------------------------------------------------------------------- /resources/wallpaper_shadertoy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_shadertoy.gif -------------------------------------------------------------------------------- /resources/wallpaper_unity.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_unity.gif -------------------------------------------------------------------------------- /resources/wallpaper_video.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/resources/wallpaper_video.gif -------------------------------------------------------------------------------- /src/Lively/Lively.Common.Services/Lively.Common.Services.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | net8.0;net472 6 | 9.0 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Com/IApplicationActivationManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | // Copyright (c) Microsoft Corporation 5 | // The Microsoft Corporation licenses this file to you under the MIT license. 6 | // See the LICENSE file in the project root for more information. 7 | // Ref: https://github.com/microsoft/PowerToys/blob/main/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/IApplicationActivationManager.cs 8 | namespace Lively.Common.Com 9 | { 10 | [ComImport] 11 | [Guid("2e941141-7f97-4756-ba1d-9decde894a3d")] 12 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 13 | public interface IApplicationActivationManager 14 | { 15 | IntPtr ActivateApplication([In] string appUserModelId, [In] string arguments, [In] ActivateOptions options, [Out] out uint processId); 16 | IntPtr ActivateForFile([In] string appUserModelId, [In] IntPtr /*IShellItemArray* */ itemArray, [In] string verb, [Out] out uint processId); 17 | IntPtr ActivateForProtocol([In] string appUserModelId, [In] IntPtr /* IShellItemArray* */itemArray, [Out] out uint processId); 18 | } 19 | 20 | [Flags] 21 | public enum ActivateOptions 22 | { 23 | None = 0x00000000, 24 | DesignMode = 0x00000001, 25 | NoErrorUI = 0x00000002, 26 | NoSplashScreen = 0x00000004, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/ScreenNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class ScreenNotFoundException : Exception 6 | { 7 | public ScreenNotFoundException() 8 | { 9 | } 10 | 11 | public ScreenNotFoundException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public ScreenNotFoundException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperFileException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Lively.Common.Exceptions 6 | { 7 | public class WallpaperFileException : Exception 8 | { 9 | public WallpaperFileException() 10 | { 11 | } 12 | 13 | public WallpaperFileException(string message) 14 | : base(message) 15 | { 16 | } 17 | 18 | public WallpaperFileException(string message, Exception inner) 19 | : base(message, inner) 20 | { 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperNotAllowedException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WallpaperNotAllowedException : Exception 6 | { 7 | public WallpaperNotAllowedException() 8 | { 9 | } 10 | 11 | public WallpaperNotAllowedException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WallpaperNotAllowedException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WallpaperNotFoundException : Exception 6 | { 7 | public WallpaperNotFoundException() 8 | { 9 | } 10 | 11 | public WallpaperNotFoundException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WallpaperNotFoundException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperPluginException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WallpaperPluginException : Exception 6 | { 7 | public WallpaperPluginException() 8 | { 9 | } 10 | 11 | public WallpaperPluginException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WallpaperPluginException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperPluginMediaCodecException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | /// 6 | /// Windows N/KN codec missing. 7 | /// 8 | public class WallpaperPluginMediaCodecException : Exception 9 | { 10 | public WallpaperPluginMediaCodecException() 11 | { 12 | } 13 | 14 | public WallpaperPluginMediaCodecException(string message) 15 | : base(message) 16 | { 17 | } 18 | 19 | public WallpaperPluginMediaCodecException(string message, Exception inner) 20 | : base(message, inner) 21 | { 22 | } 23 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperPluginNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WallpaperPluginNotFoundException : Exception 6 | { 7 | public WallpaperPluginNotFoundException() 8 | { 9 | } 10 | 11 | public WallpaperPluginNotFoundException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WallpaperPluginNotFoundException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WallpaperWebView2NotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WallpaperWebView2NotFoundException : Exception 6 | { 7 | public WallpaperWebView2NotFoundException() 8 | { 9 | } 10 | 11 | public WallpaperWebView2NotFoundException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WallpaperWebView2NotFoundException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Exceptions/WorkerWException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Exceptions; 4 | 5 | public class WorkerWException : Exception 6 | { 7 | public WorkerWException() 8 | { 9 | } 10 | 11 | public WorkerWException(string message) 12 | : base(message) 13 | { 14 | } 15 | 16 | public WorkerWException(string message, Exception inner) 17 | : base(message, inner) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Extensions/EnumExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Runtime.Serialization; 4 | 5 | namespace Lively.Common.Extensions 6 | { 7 | public static class EnumExtensions 8 | { 9 | public static string GetAttrValue(this T enumVal) where T : Enum 10 | { 11 | var enumType = typeof(T); 12 | var memInfo = enumType.GetMember(enumVal.ToString()); 13 | var attr = memInfo.FirstOrDefault()?.GetCustomAttributes(false).OfType().FirstOrDefault(); 14 | return attr?.Value; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Extensions/WallpaperExtensions.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | 3 | namespace Lively.Common.Extensions 4 | { 5 | public static class WallpaperExtensions 6 | { 7 | public static bool IsOnlineWallpaper(this WallpaperType type) => 8 | type == WallpaperType.url || type == WallpaperType.videostream; 9 | 10 | public static bool IsWebWallpaper(this WallpaperType type) => 11 | type == WallpaperType.web || type == WallpaperType.webaudio || type == WallpaperType.url; 12 | 13 | public static bool IsVideoWallpaper(this WallpaperType type) => 14 | type == WallpaperType.video || type == WallpaperType.videostream; 15 | 16 | public static bool IsApplicationWallpaper(this WallpaperType type) => 17 | type == WallpaperType.unity || type == WallpaperType.unityaudio || type == WallpaperType.app || type == WallpaperType.godot || type == WallpaperType.bizhawk; 18 | 19 | /// 20 | /// Picture, gif and other non dynamic format 21 | /// 22 | public static bool IsMediaWallpaper(this WallpaperType type) => 23 | IsVideoWallpaper(type) || type == WallpaperType.gif || type == WallpaperType.picture; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Factories/ApplicationsRulesFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using Lively.Models.Enums; 3 | using System.IO; 4 | 5 | namespace Lively.Common.Factories 6 | { 7 | public class ApplicationsRulesFactory : IApplicationsRulesFactory 8 | { 9 | public ApplicationRulesModel CreateAppPauseRule(string appPath, AppRules rule) 10 | { 11 | var fileName = Path.GetFileNameWithoutExtension(appPath); 12 | return new ApplicationRulesModel(fileName, rule); 13 | } 14 | 15 | public AppMusicExclusionRuleModel CreateAppMusicExclusionRule(string appPath) 16 | { 17 | var fileName = Path.GetFileNameWithoutExtension(appPath); 18 | return new AppMusicExclusionRuleModel(fileName, appPath); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Factories/IApplicationsFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using System.Diagnostics; 3 | 4 | namespace Lively.Common.Factories 5 | { 6 | public interface IApplicationsFactory 7 | { 8 | ApplicationModel CreateApp(Process process); 9 | ApplicationModel CreateApp(string path); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Factories/IApplicationsRulesFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using Lively.Models.Enums; 3 | 4 | namespace Lively.Common.Factories 5 | { 6 | public interface IApplicationsRulesFactory 7 | { 8 | ApplicationRulesModel CreateAppPauseRule(string appPath, AppRules rule); 9 | 10 | AppMusicExclusionRuleModel CreateAppMusicExclusionRule(string appPath); 11 | } 12 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Factories/IWallpaperLibraryFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | 3 | namespace Lively.Common.Factories 4 | { 5 | public interface IWallpaperLibraryFactory 6 | { 7 | LivelyInfoModel GetMetadata(string folderPath); 8 | LibraryModel CreateFromDirectory(string folderPath); 9 | LibraryModel CreateFromMetadata(LivelyInfoModel metadata); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Helpers/BuildInfoUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Lively.Common.Helpers 6 | { 7 | public static class BuildInfoUtil 8 | { 9 | [System.Diagnostics.CodeAnalysis.SuppressMessage("Minor Code Smell", "S3400:Methods should not return constants", Justification = "Value changes based on build setting.")] 10 | public static bool IsDebugBuild() 11 | { 12 | #if DEBUG 13 | return true; 14 | #else 15 | return false; 16 | #endif 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Helpers/IPC/PipeClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.IO.Pipes; 5 | using System.Text; 6 | 7 | namespace Lively.Common.Helpers.IPC 8 | { 9 | public class PipeClient 10 | { 11 | public static void SendMessage(string channelName, string msg) 12 | { 13 | using var pipeClient = new NamedPipeClientStream(".", channelName, PipeDirection.Out); 14 | pipeClient.Connect(0); 15 | var writer = new StreamWriter(pipeClient) { AutoFlush = true }; 16 | writer.Write(msg); 17 | writer.Flush(); 18 | writer.Close(); 19 | pipeClient.Dispose(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Helpers/Storage/JsonUtil.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using Newtonsoft.Json; 3 | using Newtonsoft.Json.Linq; 4 | 5 | namespace Lively.Common.Helpers.Storage 6 | { 7 | public class JsonUtil 8 | { 9 | public static void Write(string path, JObject rss) 10 | { 11 | File.WriteAllText(path, rss.ToString()); 12 | } 13 | 14 | public static JObject ReadJObject(string path) 15 | { 16 | var json = File.ReadAllText(path); 17 | return JObject.Parse(json); 18 | } 19 | 20 | public static JToken ReadJToken(string path) 21 | { 22 | var json = File.ReadAllText(path); 23 | return JToken.Parse(json); 24 | } 25 | 26 | public static string Serialize(object obj) 27 | { 28 | return JsonConvert.SerializeObject(obj); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Lively.Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | latest 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IAppUpdaterService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | using System.Threading.Tasks; 4 | 5 | namespace Lively.Common.Services 6 | { 7 | public interface IAppUpdaterService 8 | { 9 | DateTime LastCheckTime { get; } 10 | Uri LastCheckUri { get; } 11 | string LastCheckFileName {get;} 12 | Version LastCheckVersion { get; } 13 | AppUpdateStatus Status { get; } 14 | 15 | event EventHandler UpdateChecked; 16 | 17 | Task CheckUpdate(int fetchDelay); 18 | void Start(); 19 | void Stop(); 20 | } 21 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IAudioVisualizerService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Services 4 | { 5 | public interface IAudioVisualizerService : IDisposable 6 | { 7 | event EventHandler AudioDataAvailable; 8 | void Start(); 9 | void Stop(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/ICacheService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface ICacheService 7 | { 8 | Task GetFileFromCacheAsync(Uri uri, bool throwException = false); 9 | void RemoveExpired(); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IDispatcherService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Services 4 | { 5 | public interface IDispatcherService 6 | { 7 | bool TryEnqueue(Action action); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IDownloadService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace Lively.Common.Services 6 | { 7 | public interface IDownloadService 8 | { 9 | /// 10 | /// Downloads a file from the specified URL to the given file path. 11 | /// 12 | /// The file download uri. 13 | /// The destination file path. 14 | /// Reports progress. 15 | /// The first parameter is the downloaded size in MB, and the second is the total size in MB. 16 | /// A token to cancel the download operation. 17 | /// A Task that completes when the download is finished, or throws an exception on failure. 18 | Task DownloadFile(Uri url, string filePath, IProgress<(double downloaded, double total)> progress, CancellationToken cancellationToken); 19 | 20 | /// 21 | /// Downloads a file from the specified URL to the given file path. 22 | /// 23 | /// The file download uri. 24 | /// The destination file path. 25 | Task DownloadFile(Uri url, string filePath); 26 | } 27 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IFileService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace Lively.Common.Services 6 | { 7 | public interface IFileService 8 | { 9 | public Task> PickFileAsync(string[] filters, bool multipleFile = false); 10 | 11 | public Task> PickFileAsync(WallpaperType type, bool multipleFile = false); 12 | 13 | public Task> PickWallpaperFile(bool multipleFile = false); 14 | 15 | public Task PickFolderAsync(string[] filters); 16 | 17 | public Task PickSaveFileAsync(string suggestedFileName, IDictionary> fileTypeChoices); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IHardwareUsageService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface IHardwareUsageService 7 | { 8 | event EventHandler HWMonitor; 9 | 10 | void Start(); 11 | void Stop(); 12 | } 13 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/INavigator.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface INavigator 7 | { 8 | /// 9 | /// Raised when the content page was changed. 10 | /// 11 | event EventHandler? ContentPageChanged; 12 | 13 | /// 14 | /// The root frame of the app. 15 | /// 16 | object? RootFrame { get; set; } 17 | 18 | /// 19 | /// The inner frame that can navigate. This must be set before 20 | /// any method is called. 21 | /// 22 | object? Frame { get; set; } 23 | 24 | /// 25 | /// Returns the current page type. 26 | /// 27 | ContentPageType? CurrentPage { get; } 28 | 29 | /// 30 | /// Navigates to the page corresponding to the given enum. 31 | /// 32 | /// The page to navigate to. 33 | /// Arguments to be passed to the new page during navigation. 34 | void NavigateTo(ContentPageType contentPage, object? navArgs = null); 35 | 36 | /// 37 | /// Reload the current page. 38 | /// 39 | void Reload(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/INowPlayingService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface INowPlayingService 7 | { 8 | event EventHandler NowPlayingTrackChanged; 9 | NowPlayingEventArgs CurrentTrack { get; } 10 | void Start(); 11 | void Stop(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IResourceService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface IResourceService 7 | { 8 | event EventHandler CultureChanged; 9 | 10 | string GetString(string resource); 11 | string GetString(WallpaperType type); 12 | void SetCulture(string name); 13 | void SetSystemDefaultCulture(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IRunnerService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Common.Services 4 | { 5 | public interface IRunnerService : IDisposable 6 | { 7 | IntPtr HwndUI { get; } 8 | void ShowUI(); 9 | void CloseUI(); 10 | void RestartUI(string startArgs = null); 11 | void SetBusyUI(bool isBusy); 12 | void ShowCustomisWallpaperePanel(); 13 | void ShowAppUpdatePage(); 14 | bool IsVisibleUI { get; } 15 | void SaveRectUI(); 16 | } 17 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IScreensaverService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface IScreensaverService 7 | { 8 | ScreensaverApplyMode Mode { get; } 9 | bool IsRunning { get; } 10 | 11 | void CreatePreview(IntPtr hwnd); 12 | Task StartAsync(bool isFadeIn); 13 | void StartIdleTimer(uint idleTime); 14 | void Stop(); 15 | void StopIdleTimer(); 16 | 17 | event EventHandler Stopped; 18 | } 19 | 20 | public enum ScreensaverApplyMode 21 | { 22 | /// 23 | /// Use the currently running wallpaper window itself. 24 | /// 25 | wallpaper, 26 | /// 27 | /// Create a new running wallpaper process. 28 | /// This is the only mode with support for running screensaver different from wallpaper. 29 | /// 30 | process, 31 | /// 32 | /// Use DwmThumnail API.
33 | /// Does not work in Windows Screensaver mode.
34 | ///
35 | dwmThumbnail, 36 | } 37 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/ISystray.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System; 3 | 4 | namespace Lively.Common.Services 5 | { 6 | public interface ISystray : IDisposable 7 | { 8 | void SetTheme(AppTheme theme); 9 | void ShowBalloonNotification(int timeout, string title, string msg); 10 | void Visibility(bool visible); 11 | } 12 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/ITransparentTbService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System; 3 | using System.Drawing; 4 | 5 | namespace Lively.Common.Services 6 | { 7 | public interface ITransparentTbService : IDisposable 8 | { 9 | bool IsRunning { get; } 10 | 11 | string CheckIncompatiblePrograms(); 12 | System.Drawing.Color GetAverageColor(string filePath); 13 | void SetAccentColor(Color color); 14 | void Start(TaskbarTheme theme); 15 | void Stop(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Common/Services/IUserSettingsService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | 6 | namespace Lively.Common.Services 7 | { 8 | public interface IUserSettingsService 9 | { 10 | SettingsModel Settings { get; } 11 | //IWeatherModel WeatherSettings { get; } 12 | List AppRules { get; } 13 | List WallpaperLayout { get; } 14 | void Save(); 15 | void Load(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Gallery.Client/ApiException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Serialization; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lively.Gallery.Client 9 | { 10 | public class ApiException : Exception 11 | { 12 | public ApiException() 13 | { 14 | } 15 | public ApiException(List errors) 16 | { 17 | Errors = errors; 18 | } 19 | 20 | public ApiException(string? message) : base(message) 21 | { 22 | } 23 | 24 | public ApiException(string? message, Exception? innerException) : base(message, innerException) 25 | { 26 | } 27 | 28 | protected ApiException(SerializationInfo info, StreamingContext context) : base(info, context) 29 | { 30 | } 31 | 32 | public List Errors { get; } 33 | 34 | public override string ToString() 35 | { 36 | return string.Join("\n", Errors); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Lively/Lively.Gallery.Client/HttpRequestMessageExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Text.Json; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lively.Gallery.Client 9 | { 10 | public static class HttpRequestMessageExtensions 11 | { 12 | public static HttpRequestMessage WithJsonContent(this HttpRequestMessage message, object data) 13 | { 14 | message.Content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json"); 15 | return message; 16 | } 17 | 18 | public static HttpRequestMessage Clone(this HttpRequestMessage req) 19 | { 20 | HttpRequestMessage clone = new HttpRequestMessage(req.Method, req.RequestUri); 21 | 22 | clone.Content = req.Content; 23 | clone.Version = req.Version; 24 | 25 | foreach (KeyValuePair prop in req.Properties) 26 | { 27 | clone.Properties.Add(prop); 28 | } 29 | 30 | foreach (KeyValuePair> header in req.Headers) 31 | { 32 | clone.Headers.TryAddWithoutValidation(header.Key, header.Value); 33 | } 34 | 35 | return clone; 36 | } 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/Lively/Lively.Gallery.Client/Interfaces/ITokenStore.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Gallery.API; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lively.Gallery.Client.Interfaces 9 | { 10 | public interface ITokenStore 11 | { 12 | public TokensModel Get(); 13 | public void Set(string accessToken, string refreshToken, string provider, DateTime expiration); 14 | public void Clear(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.Gallery.Client/Lively.Gallery.Client.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | net8.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Gallery.Client/SearchQuery.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Gallery.API; 2 | 3 | namespace Lively.Gallery.Client 4 | { 5 | public class SearchQuery 6 | { 7 | internal SearchQuery(List tags, string name, int page, int limit, SortingType sortingType) 8 | { 9 | Tags = tags; 10 | Name = name; 11 | Page = page; 12 | Limit = limit; 13 | SortingType = sortingType; 14 | } 15 | 16 | public int Limit { get; } 17 | public SortingType SortingType { get; } 18 | public List Tags { get; } 19 | public string Name { get; } 20 | public int Page { get; } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/IAppUpdaterClient.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Lively.Grpc.Client 8 | { 9 | public interface IAppUpdaterClient : IDisposable 10 | { 11 | string LastCheckChangelog { get; } 12 | DateTime LastCheckTime { get; } 13 | Uri LastCheckUri { get; } 14 | string LastCheckFileName { get; } 15 | Version LastCheckVersion { get; } 16 | AppUpdateStatus Status { get; } 17 | 18 | event EventHandler UpdateChecked; 19 | 20 | Task CheckUpdate(); 21 | Task StartUpdate(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/ICommandsClient.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace Lively.Grpc.Client 4 | { 5 | public interface ICommandsClient 6 | { 7 | Task ScreensaverConfigure(); 8 | Task ScreensaverPreview(int previewHandle); 9 | Task ShowScreensaver(bool isFadeIn); 10 | Task StopScreensaver(); 11 | Task ShowUI(); 12 | Task CloseUI(); 13 | Task RestartUI(); 14 | Task RestartUI(string startArgs); 15 | Task ShowDebugger(); 16 | Task ShutDown(); 17 | Task AutomationCommandAsync(string[] args); 18 | void AutomationCommand(string[] args); 19 | void SaveRectUI(); 20 | Task SaveRectUIAsync(); 21 | } 22 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/IDisplayManagerClient.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using System; 3 | using System.Collections.ObjectModel; 4 | using System.Drawing; 5 | 6 | namespace Lively.Grpc.Client 7 | { 8 | public interface IDisplayManagerClient : IDisposable 9 | { 10 | ReadOnlyCollection DisplayMonitors { get; } 11 | DisplayMonitor PrimaryMonitor { get; } 12 | Rectangle VirtulScreenBounds { get; } 13 | 14 | event EventHandler DisplayChanged; 15 | } 16 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/IUserSettingsClient.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace Lively.Grpc.Client 6 | { 7 | public interface IUserSettingsClient 8 | { 9 | SettingsModel Settings { get; } 10 | List AppRules { get; } 11 | Task SaveAsync(); 12 | void Save(); 13 | Task LoadAsync(); 14 | void Load(); 15 | } 16 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/IWallpaperPlaylistClient.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Grpc.Client 2 | { 3 | public interface IWallpaperPlaylistClient 4 | { 5 | void Start(); 6 | void Stop(); 7 | } 8 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/Lively.Grpc.Client.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | 8.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Client/WallpaperPlaylistClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace Lively.Grpc.Client 6 | { 7 | public class WallpaperPlaylistClient : IWallpaperPlaylistClient 8 | { 9 | public void Start() 10 | { 11 | throw new NotImplementedException(); 12 | } 13 | 14 | public void Stop() 15 | { 16 | throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Common/Proto/commands.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package Lively.Grpc.Common.Proto.Commands; 3 | import "google/protobuf/empty.proto"; 4 | 5 | service CommandsService { 6 | rpc ShowUI (google.protobuf.Empty) returns (google.protobuf.Empty); 7 | rpc CloseUI (google.protobuf.Empty) returns (google.protobuf.Empty); 8 | rpc RestartUI (google.protobuf.Empty) returns (google.protobuf.Empty); 9 | rpc ShowDebugger (google.protobuf.Empty) returns (google.protobuf.Empty); 10 | rpc Screensaver (ScreensaverRequest) returns (google.protobuf.Empty); 11 | rpc ShutDown (google.protobuf.Empty) returns (google.protobuf.Empty); 12 | rpc AutomationCommand (AutomationCommandRequest) returns (google.protobuf.Empty); 13 | rpc SaveRectUI(google.protobuf.Empty) returns (google.protobuf.Empty); 14 | rpc RestartUIWithArgs(RestartRequest) returns (google.protobuf.Empty); 15 | } 16 | 17 | message ScreensaverRequest { 18 | ScreensaverState state = 1; 19 | int32 preview_hwnd = 2; 20 | bool fade_in = 3; 21 | } 22 | 23 | message AutomationCommandRequest { 24 | repeated string args = 1; 25 | } 26 | 27 | enum ScreensaverState { 28 | start = 0; 29 | stop = 1; 30 | preview = 2; 31 | configure = 3; 32 | } 33 | 34 | message RestartRequest { 35 | string start_args = 1; 36 | } 37 | -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Common/Proto/display.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package Lively.Grpc.Common.Proto.Display; 3 | import "google/protobuf/empty.proto"; 4 | 5 | service DisplayService { 6 | rpc GetScreens (google.protobuf.Empty) returns (GetScreensResponse); 7 | rpc GetVirtualScreenBounds (google.protobuf.Empty) returns (Rectangle); 8 | rpc SubscribeDisplayChanged (google.protobuf.Empty) returns (stream google.protobuf.Empty); 9 | } 10 | 11 | message GetScreensResponse { 12 | repeated ScreenData screens = 1; 13 | } 14 | 15 | message ScreenData { 16 | string device_id = 1; 17 | string device_name = 2; 18 | string display_name = 3; 19 | int32 h_monitor = 4; 20 | int32 index = 5; 21 | bool is_primary = 6; 22 | Rectangle bounds = 7; 23 | Rectangle working_area = 8; 24 | } 25 | 26 | message Rectangle { 27 | int32 x = 1; 28 | int32 y = 2; 29 | int32 width = 3; 30 | int32 height = 4; 31 | //int32 bottom = 1; 32 | //int32 left = 3; 33 | //int32 right = 4; 34 | //int32 top = 5; 35 | } 36 | -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Common/Proto/playlist.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package Lively.Grpc.Common.Proto.Commands; 3 | import "google/protobuf/empty.proto"; 4 | 5 | service PlaylistService { 6 | rpc Start (google.protobuf.Empty) returns (google.protobuf.Empty); 7 | rpc Stop (google.protobuf.Empty) returns (google.protobuf.Empty); 8 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Grpc.Common/Proto/update.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | package Lively.Grpc.Common.Proto.Update; 3 | import "google/protobuf/empty.proto"; 4 | import "google/protobuf/timestamp.proto"; 5 | 6 | service UpdateService { 7 | rpc CheckUpdate (google.protobuf.Empty) returns (google.protobuf.Empty); 8 | rpc GetUpdateStatus (google.protobuf.Empty) returns (UpdateResponse); 9 | rpc StartUpdate (google.protobuf.Empty) returns (google.protobuf.Empty); 10 | rpc SubscribeUpdateChecked (google.protobuf.Empty) returns (stream google.protobuf.Empty); 11 | } 12 | 13 | message UpdateResponse { 14 | UpdateStatus status = 1; 15 | string version = 2; 16 | string url = 3; 17 | string changelog = 4; 18 | google.protobuf.Timestamp time = 5; 19 | string file_name = 6; 20 | } 21 | 22 | enum UpdateStatus { 23 | uptodate = 0; 24 | available = 1; 25 | invalid = 2; 26 | notchecked = 3; 27 | error = 4; 28 | } -------------------------------------------------------------------------------- /src/Lively/Lively.ML/DepthEstimate/IDepthEstimate.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.ML.DepthEstimate 2 | { 3 | public interface IDepthEstimate : IDisposable 4 | { 5 | void LoadModel(string path); 6 | ModelOutput Run(string imagePath); 7 | string ModelPath { get; } 8 | } 9 | } -------------------------------------------------------------------------------- /src/Lively/Lively.ML/DepthEstimate/ModelInput.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.ML.DepthEstimate 2 | { 3 | public class ModelInput 4 | { 5 | public ModelInput(string imagePath, int width, int height) 6 | { 7 | ImagePath = imagePath; 8 | Width = width; 9 | Height = height; 10 | } 11 | 12 | public string ImagePath { get; set; } 13 | public int Width { get; set; } 14 | public int Height { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.ML/DepthEstimate/ModelOutput.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.ML.DepthEstimate 2 | { 3 | public class ModelOutput 4 | { 5 | public ModelOutput(float[] depth, int width, int height, int originalWidth, int originalHeight) 6 | { 7 | Depth = depth; 8 | Width = width; 9 | Height = height; 10 | OriginalWidth = originalWidth; 11 | OriginalHeight = originalHeight; 12 | } 13 | 14 | public float[] Depth { get; set; } 15 | public int Width { get; set; } 16 | public int Height { get; set; } 17 | public int OriginalWidth { get; set; } 18 | public int OriginalHeight { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.ML/Lively.ML.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net8.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/AddWallpaperCreateModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Lively.Models.Enums; 3 | 4 | namespace Lively.Models 5 | { 6 | public partial class AddWallpaperCreateModel : ObservableObject 7 | { 8 | [ObservableProperty] 9 | private string title; 10 | 11 | [ObservableProperty] 12 | private string description; 13 | 14 | [ObservableProperty] 15 | private string icon; 16 | 17 | [ObservableProperty] 18 | private WallpaperType typeSupported; 19 | 20 | [ObservableProperty] 21 | private WallpaperCreateType createType; 22 | } 23 | 24 | public enum WallpaperCreateType 25 | { 26 | none, 27 | depthmap, 28 | //videotranscode, 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/AppMusicExclusionRuleModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace Lively.Models 4 | { 5 | public partial class AppMusicExclusionRuleModel : ObservableObject 6 | { 7 | public AppMusicExclusionRuleModel(string appName, string appPath) 8 | { 9 | this.AppName = appName; 10 | this.AppPath = appPath; 11 | } 12 | 13 | [ObservableProperty] 14 | private string appName; 15 | 16 | [ObservableProperty] 17 | private string appPath; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/ApplicationModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace Lively.Models 4 | { 5 | public partial class ApplicationModel : ObservableObject 6 | { 7 | [ObservableProperty] 8 | private string appName; 9 | 10 | [ObservableProperty] 11 | private string appPath; 12 | 13 | [ObservableProperty] 14 | private string appIcon; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/ApplicationRulesModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Lively.Models.Enums; 3 | 4 | namespace Lively.Models 5 | { 6 | public partial class ApplicationRulesModel : ObservableObject 7 | { 8 | public ApplicationRulesModel(string appName, AppRules rule) 9 | { 10 | AppName = appName; 11 | Rule = rule; 12 | } 13 | 14 | [ObservableProperty] 15 | private string appName; 16 | 17 | [ObservableProperty] 18 | private AppRules rule; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/AppRules.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum AppRules 4 | { 5 | pause, 6 | ignore, 7 | kill 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/AppTheme.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum AppTheme 4 | { 5 | Auto, 6 | Light, 7 | Dark, 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/AppThemeBackground.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | /// 4 | /// Combines with 5 | /// 6 | public enum AppThemeBackground 7 | { 8 | default_mica, 9 | default_acrylic, 10 | dynamic, 11 | custom 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/AudioPauseAlgorithm.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum AudioPauseAlgorithm 4 | { 5 | none, 6 | cursor, 7 | primaryscreen, 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/ContentPageType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums 2 | { 3 | public enum ContentPageType 4 | { 5 | library, 6 | gallery, 7 | appupdate, 8 | settingsGeneral, 9 | settingsPerformance, 10 | settingsWallpaper, 11 | settingsScreensaver, 12 | settingsSystem 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/DisplayIdentificationMode.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum DisplayIdentificationMode 4 | { 5 | deviceName, 6 | deviceId, 7 | screenLayout 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/DisplayPause.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum DisplayPause 4 | { 5 | perdisplay, 6 | all 7 | } 8 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/InputForwardMode.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum InputForwardMode 4 | { 5 | off, 6 | mouse, 7 | mousekeyboard, 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/LivelyGUIState.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum LivelyGUIState 4 | { 5 | normal, 6 | lite, 7 | headless 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/LivelyGifPlayer.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum LivelyGifPlayer 4 | { 5 | win10Img, 6 | libmpvExt, 7 | mpv 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/LivelyMediaPlayer.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum LivelyMediaPlayer 4 | { 5 | wmf, 6 | //depreciated 7 | libvlc, 8 | libvlcExt, 9 | //depreciated 10 | libmpv, 11 | libmpvExt, 12 | mpv, 13 | vlc 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/LivelyPicturePlayer.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum LivelyPicturePlayer 4 | { 5 | picture, 6 | winApi, 7 | mpv, 8 | wmf 9 | } 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/LivelyWebBrowser.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum LivelyWebBrowser 4 | { 5 | cef, 6 | webview2 7 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/PlaybackState.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum PlaybackState 4 | { 5 | play, 6 | paused 7 | } 8 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/ProcessMonitorAlgorithm.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum ProcessMonitorAlgorithm 4 | { 5 | foreground, 6 | all, 7 | gamemode 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/ScreensaverIdleTime.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum ScreensaverIdleTime 4 | { 5 | none, 6 | min1, 7 | min2, 8 | min3, 9 | min5, 10 | min10, 11 | min15, 12 | min20, 13 | min25, 14 | min30, 15 | min45, 16 | min60, 17 | min120 18 | } 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/ScreensaverType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum ScreensaverType 4 | { 5 | /// 6 | /// Mirror the current wallpaper(s.) 7 | /// 8 | wallpaper, 9 | /// 10 | /// Different screensaver from running wallpaper. 11 | /// 12 | different 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/StreamQualitySuggestion.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | /// 4 | /// Represents suggested stream quality levels. 5 | /// 6 | public enum StreamQualitySuggestion 7 | { 8 | /// 9 | /// Lowest stream quality (144p). 10 | /// 11 | Lowest, 12 | /// 13 | /// Low stream quality (240p). 14 | /// 15 | Low, 16 | /// 17 | /// Low-medium stream quality (360p). 18 | /// 19 | LowMedium, 20 | /// 21 | /// Medium stream quality (480p). 22 | /// 23 | Medium, 24 | /// 25 | /// Medium-high stream quality (720p). 26 | /// 27 | MediumHigh, 28 | /// 29 | /// High stream quality (1080p). 30 | /// 31 | High, 32 | /// 33 | /// Highest stream quality (1081p). 34 | /// 35 | Highest 36 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/TaskbarTheme.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum TaskbarTheme 4 | { 5 | /// 6 | /// System default theme. 7 | /// 8 | none, 9 | /// 10 | /// Fully transparent taskbar. 11 | /// 12 | clear, 13 | /// 14 | /// Blurred taskbar effect. 15 | /// 16 | blur, 17 | /// 18 | /// Fluent design theme for the taskbar. 19 | /// 20 | fluent, 21 | /// 22 | /// User-defined color for the taskbar. 23 | /// 24 | color, 25 | /// 26 | /// Average color of the live wallpaper applied to the taskbar. 27 | /// 28 | wallpaper, 29 | /// 30 | /// Fluent style using the average color of the live wallpaper. 31 | /// 32 | wallpaperFluent, 33 | } 34 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/UpdateWallpaperType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum UpdateWallpaperType 4 | { 5 | changed, 6 | remove, 7 | done 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/WallpaperArrangement.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | public enum WallpaperArrangement 4 | { 5 | /// 6 | /// Per display 7 | /// 8 | per, 9 | /// 10 | /// Span Across All Display(s) 11 | /// 12 | span, 13 | /// 14 | /// Same wp for all Display(s) 15 | /// 16 | duplicate 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/WallpaperScaler.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums; 2 | 3 | /// 4 | /// Similar to System.Media.Stretch 5 | /// 6 | public enum WallpaperScaler 7 | { 8 | none, 9 | fill, 10 | uniform, 11 | uniformFill, 12 | auto 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Enums/WebPageType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Enums 2 | { 3 | public enum WebPageType 4 | { 5 | shadertoy, 6 | yt, 7 | online, 8 | local, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/FileTypeModel.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | 3 | namespace Lively.Models 4 | { 5 | public class FileTypeModel 6 | { 7 | public WallpaperType Type { get; set; } 8 | public string[] Extentions { get; set; } 9 | 10 | public FileTypeModel(WallpaperType type, string[] extensions) 11 | { 12 | Type = type; 13 | Extentions = extensions; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/ApiErrors.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Gallery.API 2 | { 3 | public static class ApiErrors 4 | { 5 | public static readonly string NotFound = "NOT_FOUND"; 6 | public static readonly string CodeCannotBeNullOrEmpty = "CODE_CANNOT_BE_NULL_OR_EMPTY"; 7 | public static readonly string InvalidAccessToken = "INVALID_ACCESS_TOKEN"; 8 | public static readonly string RefreshTokensDoesntMatch = "REFRESH_TOKENS_DOESNT_MATCH"; 9 | public static readonly string InvalidSortingType = "INVALID_SORTING_TYPE"; 10 | public static readonly string InvalidPageIndex = "INVALID_PAGE_INDEX"; 11 | public static readonly string InvalidContentType = "INVALID_CONTENT_TYPE"; 12 | public static readonly string MalformedArchive = "MALFORMED_WALLPAPER_ARCHIVE"; 13 | public static readonly string AlreadySubscribedToWallpaper = "ALREADY_SUBSCRIBED_TO_WALLPAPER"; 14 | public static readonly string NotSubscribedToWallpaper = "NOT_SUBSCRIBED_TO_WALLPAPER"; 15 | public static readonly string TokensExpired = "TOKENS_EXPIRED"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/HealthInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | namespace Lively.Models.Gallery.API 3 | { 4 | public class HealthInfo 5 | { 6 | public string Key { get; set; } 7 | public string Description { get; set; } 8 | public TimeSpan Duration { get; set; } 9 | public string Status { get; set; } 10 | public string Error { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/HealthResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Lively.Models.Gallery.API 5 | { 6 | public class HealthResult 7 | { 8 | public string Name { get; set; } 9 | public string Status { get; set; } 10 | public TimeSpan Duration { get; set; } 11 | public ICollection Info { get; set; } 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/Page.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Lively.Models.Gallery.API 4 | { 5 | public class Page 6 | { 7 | public int Number { get; set; } 8 | public bool NextPageAvailable { get; set; } 9 | public List Data { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/ProfileDto.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Gallery.API 2 | { 3 | public class ProfileDto 4 | { 5 | public string Id { get; set; } 6 | public string DisplayName { get; set; } 7 | public string AvatarUrl { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/ReportModel.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Gallery.API 2 | { 3 | public class ReportModel 4 | { 5 | public ReportType Report { get; set; } 6 | public string Message { get; set; } 7 | 8 | public enum ReportType 9 | { 10 | Other, 11 | WrongGenre, 12 | NudityViolence, 13 | CopyrightViolation, 14 | Spam 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/SortingType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Gallery.API 2 | { 3 | public enum SortingType 4 | { 5 | AllTimeTop, 6 | Newest, 7 | Trending 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/TokensModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Gallery.API 4 | { 5 | public class TokensModel 6 | { 7 | public string AccessToken { get; set; } 8 | public string RefreshToken { get; set; } 9 | public string Provider { get; set; } 10 | public DateTime Expiration { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/VoteType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Gallery.API 2 | { 3 | public enum VoteType 4 | { 5 | Downvote, 6 | Upvote 7 | } 8 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/API/WallpaperDto.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System.Collections.Generic; 3 | 4 | namespace Lively.Models.Gallery.API 5 | { 6 | public partial class WallpaperDto 7 | { 8 | public string Id { get; set; } 9 | public string AppVersion { get; set; } 10 | public string Title { get; set; } 11 | public ProfileDto Author { get; set; } 12 | public string License { get; set; } 13 | public string Contact { get; set; } 14 | public bool IsPreviewAvailable { get; set; } 15 | //Assigned in GalleryClient.cs:SearchWallpapersAsync() 16 | public string Thumbnail { get; set; } 17 | public string Preview { get; set; } 18 | public WallpaperType Type { get; set; } 19 | public int VoteCount { get; set; } 20 | public string Description { get; set; } 21 | public List Tags { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Gallery/ApiResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Lively.Models.Gallery 4 | { 5 | public class ApiResponse 6 | { 7 | public bool Success { get; set; } 8 | public T Data { get; set; } 9 | public List Errors { get; set; } 10 | public int StatusCode { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/InAppNotificationModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace Lively.Models 4 | { 5 | public partial class InAppNotificationModel : ObservableObject 6 | { 7 | [ObservableProperty] 8 | private bool isOpen; 9 | 10 | [ObservableProperty] 11 | private string message; 12 | 13 | [ObservableProperty] 14 | private string title; 15 | 16 | [ObservableProperty] 17 | private int progress; 18 | 19 | [ObservableProperty] 20 | private bool isProgressIndeterminate; 21 | } 22 | } -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LanguageModel.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models 2 | { 3 | public class LanguageModel 4 | { 5 | public string DisplayName { get; set; } 6 | public string Code { get; set; } 7 | 8 | public LanguageModel(string displayName, string code) 9 | { 10 | DisplayName = displayName; 11 | Code = code; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Lively.Models.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | latest 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/ButtonModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class ButtonModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public string Value { get; set; } 9 | 10 | public ButtonModel() : base("button") { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/CheckboxModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class CheckboxModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public bool Value { get; set; } 9 | 10 | public CheckboxModel() : base("checkbox") { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/ColorPickerModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class ColorPickerModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public string Value { get; set; } 9 | 10 | public ColorPickerModel() : base("color") { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/ControlModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class ControlModel 6 | { 7 | [JsonIgnore] 8 | [JsonProperty("name")] 9 | public string Name { get; set; } 10 | 11 | [JsonProperty("text")] 12 | public string Text { get; set; } 13 | 14 | [JsonProperty("type")] 15 | public string Type { get; } 16 | 17 | [JsonProperty("help")] 18 | public string Help { get; set; } 19 | 20 | protected ControlModel(string Type) 21 | { 22 | this.Type = Type; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/DropdownModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class DropdownModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public int Value { get; set; } 9 | 10 | [JsonProperty("items")] 11 | public string[] Items { get; set; } 12 | 13 | public DropdownModel() : base("dropdown") { } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/FolderDropdownModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class FolderDropdownModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public string Value { get; set; } 9 | 10 | [JsonProperty("folder")] 11 | public string Folder { get; set; } 12 | 13 | [JsonProperty("filter")] 14 | public string Filter { get; set; } 15 | 16 | public FolderDropdownModel() : base("folderDropdown") { } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/LabelModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class LabelModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public string Value { get; set; } 9 | 10 | public LabelModel() : base("label") { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/LocalizationFile.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Lively.Models.LivelyControls; 4 | 5 | public class LocalizationFile 6 | { 7 | public Dictionary Languages { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/LocalizationLanguage.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Lively.Models.LivelyControls; 4 | 5 | public class LocalizationLanguage : Dictionary { } 6 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/LocalizedStrings.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls; 4 | 5 | public class LocalizedStrings 6 | { 7 | [JsonProperty("text")] 8 | public string Text { get; set; } 9 | 10 | [JsonProperty("value")] 11 | public string Value { get; set; } 12 | 13 | [JsonProperty("help")] 14 | public string Help { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/ScalerDropdownModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class ScalerDropdownModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public int Value { get; set; } 9 | 10 | [JsonProperty("items")] 11 | public string[] Items { get; set; } 12 | 13 | public ScalerDropdownModel() : base("scalerDropdown") { } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/SliderModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class SliderModel : ControlModel 6 | { 7 | [JsonIgnore] 8 | [JsonProperty("tick")] 9 | public int Tick { get; set; } 10 | 11 | [JsonProperty("min")] 12 | public double Min { get; set; } 13 | 14 | [JsonProperty("max")] 15 | public double Max { get; set; } 16 | 17 | [JsonProperty("value")] 18 | public double Value { get; set; } 19 | 20 | // Default value 1, otherwise if missing it will be 0 and crash on moving slider. 21 | [JsonProperty("step")] 22 | public double Step { get; set; } = 1f; 23 | 24 | public SliderModel() : base("slider") { } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyControls/TextboxModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models.LivelyControls 4 | { 5 | public class TextboxModel : ControlModel 6 | { 7 | [JsonProperty("value")] 8 | public string Value { get; set; } 9 | 10 | public TextboxModel() : base("textbox") { } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/LivelyInfoLocalizationFile.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Lively.Models; 4 | 5 | public class LivelyInfoLocalizationFile 6 | { 7 | public Dictionary Languages { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/ConsoleMessageType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Message 2 | { 3 | public enum ConsoleMessageType 4 | { 5 | log, 6 | error, 7 | console 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/IpcMessage.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | 4 | namespace Lively.Models.Message 5 | { 6 | 7 | [Serializable] 8 | public abstract class IpcMessage 9 | { 10 | [JsonProperty(Order = -2)] 11 | public MessageType Type { get; } 12 | public IpcMessage(MessageType type) 13 | { 14 | Type = type; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyButton.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyButton : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public bool IsDefault { get; set; } 10 | public LivelyButton() : base(MessageType.lp_button) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyCheckbox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyCheckbox : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public bool Value { get; set; } 10 | public LivelyCheckbox() : base(MessageType.lp_chekbox) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyCloseCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyCloseCmd : IpcMessage 7 | { 8 | public LivelyCloseCmd() : base(MessageType.cmd_close) 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyColorPicker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyColorPicker : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public string Value { get; set; } 10 | public LivelyColorPicker() : base(MessageType.lp_cpicker) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyDropdown.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyDropdown : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public int Value { get; set; } 10 | public LivelyDropdown() : base(MessageType.lp_dropdown) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyDropdownScaler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyDropdownScaler : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public int Value { get; set; } 10 | public LivelyDropdownScaler() : base(MessageType.lp_dropdown_scaler) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyFolderDropdown.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyFolderDropdown : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public string Value { get; set; } 10 | public LivelyFolderDropdown() : base(MessageType.lp_fdropdown) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyMessageConsole.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyMessageConsole : IpcMessage 7 | { 8 | public string Message { get; set; } 9 | public ConsoleMessageType Category { get; set; } 10 | public LivelyMessageConsole() : base(MessageType.msg_console) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyMessageHwnd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyMessageHwnd : IpcMessage 7 | { 8 | public long Hwnd { get; set; } 9 | public LivelyMessageHwnd() : base(MessageType.msg_hwnd) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyMessageScreenshot.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyMessageScreenshot : IpcMessage 7 | { 8 | public string FileName { get; set; } 9 | public bool Success { get; set; } 10 | public LivelyMessageScreenshot() : base(MessageType.msg_screenshot) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyMessageWallpaperLoaded.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyMessageWallpaperLoaded : IpcMessage 7 | { 8 | public bool Success { get; set; } 9 | public LivelyMessageWallpaperLoaded() : base(MessageType.msg_wploaded) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyReloadCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyReloadCmd : IpcMessage 7 | { 8 | public LivelyReloadCmd() : base(MessageType.cmd_reload) 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyResumeCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyResumeCmd : IpcMessage 7 | { 8 | public LivelyResumeCmd() : base(MessageType.cmd_resume) 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyScreenshotCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyScreenshotCmd : IpcMessage 7 | { 8 | public ScreenshotFormat Format { get; set; } 9 | public string FilePath { get; set; } 10 | public uint Delay { get; set; } 11 | public LivelyScreenshotCmd() : base(MessageType.cmd_screenshot) 12 | { 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelySlider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelySlider : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public double Value { get; set; } 10 | public double Step { get; set; } 11 | public LivelySlider() : base(MessageType.lp_slider) 12 | { 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelySuspendCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelySuspendCmd : IpcMessage 7 | { 8 | public LivelySuspendCmd() : base(MessageType.cmd_suspend) 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelySystemInformation.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | 4 | namespace Lively.Models.Message 5 | { 6 | [Serializable] 7 | public class LivelySystemInformation : IpcMessage 8 | { 9 | public HardwareUsageEventArgs Info { get; set; } 10 | public LivelySystemInformation() : base(MessageType.cmd_reload) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelySystemNowPlaying.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Services; 2 | using System; 3 | 4 | namespace Lively.Models.Message 5 | { 6 | [Serializable] 7 | public class LivelySystemNowPlaying : IpcMessage 8 | { 9 | public NowPlayingEventArgs Info { get; set; } 10 | public LivelySystemNowPlaying() : base(MessageType.lsp_nowplaying) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyTextBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyTextBox : IpcMessage 7 | { 8 | public string Name { get; set; } 9 | public string Value { get; set; } 10 | public LivelyTextBox() : base(MessageType.lp_textbox) 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/LivelyVolumeCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Lively.Models.Message 4 | { 5 | [Serializable] 6 | public class LivelyVolumeCmd : IpcMessage 7 | { 8 | public int Volume { get; set; } 9 | public LivelyVolumeCmd() : base(MessageType.cmd_volume) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/MessageType.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Message 2 | { 3 | public enum MessageType 4 | { 5 | msg_hwnd, 6 | msg_console, 7 | msg_wploaded, 8 | msg_screenshot, 9 | cmd_reload, 10 | cmd_close, 11 | cmd_screenshot, 12 | cmd_suspend, 13 | cmd_resume, 14 | cmd_volume, 15 | lsp_perfcntr, 16 | lsp_nowplaying, 17 | lp_slider, 18 | lp_textbox, 19 | lp_dropdown, 20 | lp_fdropdown, 21 | lp_button, 22 | lp_cpicker, 23 | lp_chekbox, 24 | lp_dropdown_scaler, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Message/ScreenshotFormat.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Message 2 | { 3 | public enum ScreenshotFormat 4 | { 5 | jpeg, 6 | png, 7 | webp, 8 | bmp 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/ScreenLayoutModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using System.Drawing; 3 | 4 | namespace Lively.Models 5 | { 6 | public partial class ScreenLayoutModel : ObservableObject 7 | { 8 | public ScreenLayoutModel(DisplayMonitor screen, string screenImagePath, string livelypropertyFilePath, string screenTitle) 9 | { 10 | this.Screen = screen; 11 | this.ScreenImagePath = screenImagePath; 12 | this.LivelyPropertyPath = livelypropertyFilePath; 13 | this.ScreenTitle = screenTitle; 14 | } 15 | 16 | [ObservableProperty] 17 | private DisplayMonitor screen; 18 | 19 | [ObservableProperty] 20 | private Rectangle normalizedBounds; 21 | 22 | [ObservableProperty] 23 | private bool isSelected; 24 | 25 | [ObservableProperty] 26 | private string screenImagePath; 27 | 28 | [ObservableProperty] 29 | private string livelyPropertyPath; 30 | 31 | [ObservableProperty] 32 | private string screenTitle; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/ScreenSaverLayoutModel.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System.Collections.Generic; 3 | 4 | namespace Lively.Models 5 | { 6 | public class ScreenSaverLayoutModel 7 | { 8 | public WallpaperArrangement Layout { get; set; } 9 | public List Wallpapers { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Services/AppUpdaterEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | 4 | namespace Lively.Models.Services 5 | { 6 | public class AppUpdaterEventArgs : EventArgs 7 | { 8 | public AppUpdaterEventArgs(AppUpdateStatus updateStatus, Version updateVersion, DateTime updateDate, Uri updateUri, string fileName) 9 | { 10 | UpdateStatus = updateStatus; 11 | UpdateVersion = updateVersion; 12 | UpdateUri = updateUri; 13 | UpdateDate = updateDate; 14 | FileName = fileName; 15 | } 16 | 17 | public AppUpdateStatus UpdateStatus { get; } 18 | public Version UpdateVersion { get; } 19 | public Uri UpdateUri { get; } 20 | public DateTime UpdateDate { get; } 21 | public string FileName { get; } 22 | } 23 | 24 | public enum AppUpdateStatus 25 | { 26 | [Description("Software is up-to-date.")] 27 | uptodate, 28 | [Description("Update available.")] 29 | available, 30 | [Description("Installed software version higher than whats available online.")] 31 | invalid, 32 | [Description("Update not checked yet.")] 33 | notchecked, 34 | [Description("Update check failed.")] 35 | error, 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Services/ColorProperties.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Models.Services 2 | { 3 | public class ColorProperties 4 | { 5 | public string PrimaryColor { get; set; } 6 | public string SecondaryColor { get; set; } 7 | public string TertiaryColor { get; set; } 8 | public string TextColor { get; set; } 9 | public string ComplementaryColor { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/Services/NowPlayingEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Lively.Models.Services 5 | { 6 | public class NowPlayingEventArgs : EventArgs 7 | { 8 | public string AlbumArtist { get; set; } 9 | public string AlbumTitle { get; set; } 10 | public int AlbumTrackCount { get; set; } 11 | public string Artist { get; set; } 12 | public List Genres { get; set; } 13 | public string PlaybackType { get; set; } 14 | public string Subtitle { get; set; } 15 | public string Thumbnail { get; set; } 16 | public string Title { get; set; } 17 | public int TrackNumber { get; set; } 18 | //public ColorProperties Colors { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/UserControls/FolderDropdownUserControlModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | 3 | namespace Lively.Models.UserControls 4 | { 5 | public partial class FolderDropdownUserControlModel : ObservableObject 6 | { 7 | [ObservableProperty] 8 | private string fileName; 9 | 10 | [ObservableProperty] 11 | private string filePath; 12 | 13 | [ObservableProperty] 14 | private string imagePath; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/UserControls/NavigationItem.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Lively.Models.Enums; 3 | 4 | namespace Lively.Models.UserControls 5 | { 6 | public partial class NavigationItem : ObservableObject 7 | { 8 | [ObservableProperty] 9 | private string name; 10 | 11 | [ObservableProperty] 12 | private string glyph; 13 | 14 | [ObservableProperty] 15 | private bool isAlert; 16 | 17 | [ObservableProperty] 18 | private int alert; 19 | 20 | [ObservableProperty] 21 | private ContentPageType pageType; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Lively/Lively.Models/WallpaperLayoutModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Lively.Models 4 | { 5 | /// 6 | /// Wallpaper arragement on display. 7 | /// 8 | public class WallpaperLayoutModel 9 | { 10 | [JsonProperty(PropertyName = "LivelyScreen")] //backward compatibility < v1.9 11 | public DisplayMonitor Display { get; set; } 12 | public string LivelyInfoPath { get; set; } 13 | 14 | /* 15 | [JsonConstructor] 16 | public WallpaperLayoutModel(string DeviceId, string DeviceName, int BitsPerPixel, Rectangle Bounds, Rectangle WorkingArea, string livelyInfoPath) 17 | { 18 | Display = new DisplayMonitor(DeviceId, DeviceName, BitsPerPixel, Bounds, WorkingArea); 19 | this.LivelyInfoPath = livelyInfoPath; 20 | } 21 | */ 22 | 23 | public WallpaperLayoutModel(DisplayMonitor Display, string livelyInfoPath) 24 | { 25 | this.Display = Display; 26 | this.LivelyInfoPath = livelyInfoPath; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/Extensions/CefSharp/MenuHandler.cs: -------------------------------------------------------------------------------- 1 | using CefSharp; 2 | 3 | namespace Lively.Player.CefSharp.Extensions.CefSharp 4 | { 5 | /// 6 | /// Cef right click contextmenu disable. 7 | /// 8 | class MenuHandler : IContextMenuHandler 9 | { 10 | public void OnBeforeContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) 11 | { 12 | //Disable right-click menu, conflicting with windows desktop contextmenu. 13 | model.Clear(); 14 | } 15 | 16 | public bool OnContextMenuCommand(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) 17 | { 18 | return false; 19 | } 20 | 21 | public void OnContextMenuDismissed(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) 22 | { 23 | 24 | } 25 | 26 | public bool RunContextMenu(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) 27 | { 28 | return false; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/Extensions/CefSharp/PopUpHandle.cs: -------------------------------------------------------------------------------- 1 | using CefSharp; 2 | 3 | namespace Lively.Player.CefSharp.Extensions.CefSharp 4 | { 5 | class PopUpHandle : ILifeSpanHandler 6 | { 7 | public bool DoClose(IWebBrowser chromiumWebBrowser, IBrowser browser) 8 | { 9 | return false; 10 | } 11 | 12 | public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser) 13 | { 14 | 15 | } 16 | 17 | public void OnBeforeClose(IWebBrowser chromiumWebBrowser, IBrowser browser) 18 | { 19 | 20 | } 21 | 22 | public bool OnBeforePopup(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser) 23 | { 24 | //load hyperlinks on the same instance. 25 | browser.MainFrame.LoadUrl(targetUrl); 26 | newBrowser = null; 27 | return true; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Windows.Forms; 4 | 5 | namespace Lively.Player.CefSharp 6 | { 7 | internal static class Program 8 | { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() 14 | { 15 | try 16 | { 17 | //Deleting old CEF logfile if any. 18 | File.Delete(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), 19 | "Lively Wallpaper", "Cef", "logfile.txt")); 20 | } 21 | catch { } 22 | 23 | Application.EnableVisualStyles(); 24 | Application.SetCompatibleTextRenderingDefault(false); 25 | Application.Run(new Form1()); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Lively.Player.CefSharp.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.CefSharp/appicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.Player.CefSharp/appicon.ico -------------------------------------------------------------------------------- /src/Lively/Lively.Player.WebView2/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.WebView2/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using Microsoft.Web.WebView2.Core; 4 | 5 | namespace Lively.Player.WebView2 6 | { 7 | internal static class Program 8 | { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() 14 | { 15 | // ERROR_FILE_NOT_FOUND 16 | // Ref: 17 | if (!IsWebView2Available()) 18 | Environment.Exit(2); 19 | 20 | Application.EnableVisualStyles(); 21 | Application.SetCompatibleTextRenderingDefault(false); 22 | Application.Run(new Form1()); 23 | } 24 | 25 | private static bool IsWebView2Available() 26 | { 27 | try 28 | { 29 | return !string.IsNullOrEmpty(CoreWebView2Environment.GetAvailableBrowserVersionString()); 30 | } 31 | catch (Exception) 32 | { 33 | return false; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.WebView2/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Lively.Player.WebView2.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.WebView2/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Lively.Player.Wmf.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Lively/Lively.Player.Wmf/StartArgs.cs: -------------------------------------------------------------------------------- 1 | using CommandLine; 2 | 3 | namespace Lively.Player.Wmf 4 | { 5 | public class StartArgs 6 | { 7 | [Option("path", 8 | Required = true, 9 | HelpText = "The file/video stream path.")] 10 | public string FilePath { get; set; } 11 | 12 | [Option("stretch", 13 | Required = false, 14 | Default = 0, 15 | HelpText = "Video Scaling algorithm.")] 16 | public int StretchMode { get; set; } 17 | 18 | [Option("volume", 19 | Required = false, 20 | Default = 100, 21 | HelpText = "Audio volume")] 22 | public int Volume { get; set; } 23 | 24 | [Option("property", 25 | Required = false, 26 | Default = null, 27 | HelpText = "LivelyProperties.json filepath.")] 28 | public string Properties { get; set; } 29 | 30 | [Option("verbose-log", 31 | Required = false, 32 | HelpText = "Verbose Logging")] 33 | public bool VerboseLog { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.Shared/Lively.UI.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0c64467b-8ef0-4896-85b1-0d8020eceab3 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.Shared/ViewModels/AboutViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using CommunityToolkit.Mvvm.Input; 3 | using Lively.Common; 4 | 5 | namespace Lively.UI.Shared.ViewModels 6 | { 7 | public partial class AboutViewModel : ObservableObject 8 | { 9 | [RelayCommand] 10 | private void OpenPersonalWebsite() 11 | { 12 | LinkUtil.OpenBrowser("https://rocksdanister.com"); 13 | } 14 | 15 | [RelayCommand] 16 | private void OpenGithub() 17 | { 18 | LinkUtil.OpenBrowser("https://github.com/rocksdanister"); 19 | } 20 | 21 | [RelayCommand] 22 | private void OpenTwitter() 23 | { 24 | LinkUtil.OpenBrowser("https://twitter.com/rocksdanister"); 25 | } 26 | 27 | [RelayCommand] 28 | private void OpenYoutube() 29 | { 30 | LinkUtil.OpenBrowser("https://www.youtube.com/channel/UClep84ofxC41H8-R9UfNPSQ"); 31 | } 32 | 33 | [RelayCommand] 34 | private void OpenReddit() 35 | { 36 | LinkUtil.OpenBrowser("https://reddit.com/u/rocksdanister"); 37 | } 38 | 39 | [RelayCommand] 40 | private void OpenEmail() 41 | { 42 | LinkUtil.OpenBrowser("mailto:awoo.git@gmail.com"); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.Shared/ViewModels/Gallery/ReportWallpaperViewModel.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.ComponentModel; 2 | using Lively.Models; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.Shared.ViewModels 10 | { 11 | public partial class ReportWallpaperViewModel : ObservableObject 12 | { 13 | public ReportWallpaperViewModel(LibraryModel obj) 14 | { 15 | this.Model = obj; 16 | } 17 | 18 | [ObservableProperty] 19 | private LibraryModel model; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/CustomIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/CustomIcons.ttf -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Icons/icons8-info.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Icons/icons8-ok.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Icons/icons8-warn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.backup.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/banner-lively-1080.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/banner-lively-1080.jpg -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/changelog-page-preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/changelog-page-preview.jpg -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icon-lively-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icon-lively-48.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-application-window-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-application-window-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-artificial-intelligence-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-artificial-intelligence-100.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-cat-back-view-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-cat-back-view-64.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-depth-effect-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-depth-effect-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-github-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-github-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-google-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-google-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-landscape-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-landscape-64.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-mail-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-mail-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-panorama-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-panorama-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-reddit-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-reddit-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-twitter-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-twitter-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-wallpaper-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-wallpaper-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/icons8-youtube-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/icons8-youtube-96.png -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/patreon-page-preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/patreon-page-preview.jpg -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Assets/tray-tutorial.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/Assets/tray-tutorial.gif -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 5 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Extensions/ColorExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI; 7 | 8 | namespace Lively.UI.WinUI.Extensions 9 | { 10 | public static class ColorExtensions 11 | { 12 | public static Color ToColor(this string hexaColor) 13 | { 14 | // Remove alpha channel if exists 15 | if (hexaColor.Length == 9 && hexaColor.StartsWith('#')) 16 | hexaColor = hexaColor.Substring(3); 17 | 18 | return Color.FromArgb( 19 | 255, 20 | System.Convert.ToByte(hexaColor.Substring(1, 2), 16), 21 | System.Convert.ToByte(hexaColor.Substring(3, 2), 16), 22 | System.Convert.ToByte(hexaColor.Substring(5, 2), 16) 23 | ); 24 | } 25 | 26 | public static string ToHex(this Color color) 27 | { 28 | return "#" + color.R.ToString("X2") + 29 | color.G.ToString("X2") + 30 | color.B.ToString("X2"); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Factories/IAppThemeFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models; 2 | 3 | namespace Lively.UI.WinUI.Factories 4 | { 5 | public interface IAppThemeFactory 6 | { 7 | ThemeModel CreateFromDirectory(string themeDir); 8 | ThemeModel CreateFromFile(string filePath, string name, string description); 9 | } 10 | } -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/AudioVolumeGlyphConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Controls; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.WinUI.Helpers.Converters 10 | { 11 | class AudioVolumeGlyphConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | double volume; 16 | if (value is double) 17 | volume = (double)value; 18 | else if (value is int) 19 | volume = (int)value; 20 | else 21 | volume = 0; 22 | return audioIcons[(int)Math.Ceiling((audioIcons.Length - 1) * volume / 100)]; 23 | } 24 | 25 | public object ConvertBack(object value, Type targetType, object parameter, string language) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | 30 | private readonly FontIcon[] audioIcons = 31 | { 32 | new FontIcon(){ Glyph = "\uE74F" }, 33 | new FontIcon(){ Glyph = "\uE992" }, 34 | new FontIcon(){ Glyph = "\uE993" }, 35 | new FontIcon(){ Glyph = "\uE994" }, 36 | new FontIcon(){ Glyph = "\uE995" }, 37 | }; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/BoolToBackButtonVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Controls; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | 5 | namespace Lively.UI.WinUI.Helpers.Converters 6 | { 7 | public class BoolToBackButtonVisibilityConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | if (value is bool isBackEnabled) 12 | { 13 | return isBackEnabled ? NavigationViewBackButtonVisible.Visible : NavigationViewBackButtonVisible.Collapsed; 14 | } 15 | return NavigationViewBackButtonVisible.Auto; 16 | } 17 | 18 | public object ConvertBack(object value, Type targetType, object parameter, string language) 19 | { 20 | if (value is NavigationViewBackButtonVisible visibility) 21 | { 22 | return visibility == NavigationViewBackButtonVisible.Visible; 23 | } 24 | return false; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/BoolToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.WinUI.Helpers.Converters 10 | { 11 | public class BooleanToVisibilityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | if (value is bool) 16 | { 17 | return (bool)value ^ (parameter as string ?? string.Empty).Equals("Reverse") ? 18 | Visibility.Visible : Visibility.Collapsed; 19 | } 20 | else 21 | { 22 | return value is not null ^ (parameter as string ?? string.Empty).Equals("Reverse") ? 23 | Visibility.Visible : Visibility.Collapsed; 24 | } 25 | 26 | } 27 | 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, string language) => throw new NotSupportedException(); 30 | } 31 | } -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/FloatToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lively.UI.WinUI.Helpers.Converters 9 | { 10 | public class FloatToBoolConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | return value is float val && val == 0; 15 | } 16 | 17 | public object ConvertBack(object value, Type targetType, object parameter, string language) 18 | { 19 | throw new NotImplementedException(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/HexStringToColorConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using Windows.UI; 5 | using Lively.UI.WinUI.Extensions; 6 | 7 | namespace Lively.UI.WinUI.Helpers.Converters 8 | { 9 | public class HexStringToColorConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | try 14 | { 15 | return (value as string).ToColor(); 16 | } 17 | catch 18 | { 19 | return "#FFC0CB".ToColor(); 20 | } 21 | } 22 | 23 | public object ConvertBack(object value, Type targetType, object parameter, string language) 24 | { 25 | try 26 | { 27 | return ((Color)value).ToHex(); 28 | } 29 | catch 30 | { 31 | return Colors.Pink.ToHex(); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/ListViewSelectionModeStringToEnumConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Microsoft.UI.Xaml; 8 | using Microsoft.UI.Xaml.Controls; 9 | 10 | namespace Lively.UI.WinUI.Helpers.Converters 11 | { 12 | public class ListViewSelectionModeStringToEnumConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, string language) 15 | { 16 | return value.ToString().ToLower() switch 17 | { 18 | "none" => ListViewSelectionMode.None, 19 | "single" => ListViewSelectionMode.Single, 20 | "multiple" => ListViewSelectionMode.Multiple, 21 | "extended" => ListViewSelectionMode.Extended, 22 | _ => ListViewSelectionMode.Single, 23 | }; 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, string language) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/NullVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.WinUI.Helpers.Converters 10 | { 11 | class NullVisibilityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | return value is not null ^ (parameter as string ?? string.Empty).Equals("Reverse") ? 16 | Visibility.Visible : Visibility.Collapsed; 17 | } 18 | 19 | public object ConvertBack(object value, Type targetType, object parameter, string language) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/StringToInfoBarSeverityConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Controls; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.WinUI.Helpers.Converters 10 | { 11 | public class StringToInfoBarSeverityConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | return (value as string) switch 16 | { 17 | "Informational" => InfoBarSeverity.Informational, 18 | "Success" => InfoBarSeverity.Success, 19 | "Warning" => InfoBarSeverity.Warning, 20 | "Error" => InfoBarSeverity.Error, 21 | _ => InfoBarSeverity.Error, 22 | }; 23 | } 24 | 25 | public object ConvertBack(object value, Type targetType, object parameter, string language) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/StringToInfoBarSeverityIconConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Controls; 2 | using Microsoft.UI.Xaml.Data; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Lively.UI.WinUI.Helpers.Converters 10 | { 11 | class StringToInfoBarSeverityIconConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | return (value as string) switch 16 | { 17 | "Informational" => $"ms-appx:///Assets/Icons/icons8-info.svg", 18 | "Success" => $"ms-appx:///Assets/Icons/icons8-ok.svg", 19 | "Warning" => $"ms-appx:///Assets/Icons/icons8-warn.svg", 20 | "Error" => $"ms-appx:///Assets/Icons/icons8-error.svg", 21 | _ => $"ms-appx:///Assets/Icons/icons8-error.svg", 22 | }; 23 | } 24 | 25 | public object ConvertBack(object value, Type targetType, object parameter, string language) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/StringTruncateConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Data; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Lively.UI.WinUI.Helpers.Converters 9 | { 10 | public class StringTruncateConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | if (value is string str && parameter is int maxLength && str.Length > maxLength) 15 | { 16 | return string.Concat(str.AsSpan(0, maxLength), "..."); 17 | } 18 | return value; 19 | } 20 | 21 | public object ConvertBack(object value, Type targetType, object parameter, string language) 22 | { 23 | throw new NotImplementedException(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/UriToBitmapImageConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml.Data; 2 | using Microsoft.UI.Xaml.Media.Imaging; 3 | using System; 4 | 5 | namespace Lively.UI.WinUI.Helpers.Converters 6 | { 7 | public class UriToBitmapImageConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | return value is Uri uri ? new BitmapImage(uri) : null; 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, string language) 15 | { 16 | return (value as BitmapImage)?.UriSource?.ToString(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/Converters/WallpaperTypeEnumToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Lively.Models.Enums; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using Microsoft.UI.Xaml.Data; 5 | using System; 6 | 7 | namespace Lively.UI.WinUI.Helpers.Converters 8 | { 9 | public sealed class WallpaperTypeEnumToStringConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | var targetValue = string.Empty; 14 | try 15 | { 16 | var type = (WallpaperType)value; 17 | targetValue = App.Services.GetRequiredService().GetString(type); 18 | } 19 | catch { } 20 | return targetValue; 21 | } 22 | 23 | public object ConvertBack(object value, Type targetType, object parameter, string language) 24 | { 25 | throw new NotImplementedException(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Helpers/NavigationMenuItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.UserControls; 2 | using Microsoft.UI.Xaml; 3 | using Microsoft.UI.Xaml.Controls; 4 | 5 | namespace Lively.UI.WinUI.Helpers 6 | { 7 | public class NavigationMenuItemTemplateSelector : DataTemplateSelector 8 | { 9 | public DataTemplate MainTemplate { get; set; } 10 | public DataTemplate SettingsTemplate { get; set; } 11 | 12 | protected override DataTemplate SelectTemplateCore(object item) 13 | { 14 | return item is NavigationItem navItem && !string.IsNullOrEmpty(navItem.Glyph) ? 15 | MainTemplate : SettingsTemplate; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Nlog.config: -------------------------------------------------------------------------------- 1 |  2 | 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Services/DispatcherService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Microsoft.UI.Dispatching; 3 | using System; 4 | 5 | namespace Lively.UI.WinUI.Services 6 | { 7 | public class DispatcherService : IDispatcherService 8 | { 9 | private readonly DispatcherQueue dispatcherQueue; 10 | 11 | public DispatcherService() 12 | { 13 | // MainWindow dispatcher may not be ready yet, creating our own instead. 14 | dispatcherQueue = DispatcherQueue.GetForCurrentThread() ?? DispatcherQueueController.CreateOnCurrentThread().DispatcherQueue; 15 | } 16 | 17 | public bool TryEnqueue(Action action) 18 | { 19 | return dispatcherQueue.TryEnqueue(() => action()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/StartArgs.cs: -------------------------------------------------------------------------------- 1 | using CommandLine; 2 | 3 | namespace Lively.UI.WinUI 4 | { 5 | public class StartArgs 6 | { 7 | [Option("trayWidget", 8 | Required = false, 9 | HelpText = "Run customise-traymenu without initializing MainWindow.")] 10 | public bool TrayWidget { get; set; } 11 | 12 | [Option("appUpdate", 13 | Required = false, 14 | HelpText = "Open update page.")] 15 | public bool AppUpdate { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/LivelyProperty/LivelyPropertiesTray.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/LivelyProperty/LivelyPropertiesView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Navigation; 4 | 5 | namespace Lively.UI.WinUI.Views.LivelyProperty 6 | { 7 | public sealed partial class LivelyPropertiesView : Page 8 | { 9 | private CustomiseWallpaperViewModel viewModel; 10 | 11 | // Default constructor for Frame. 12 | public LivelyPropertiesView() 13 | { 14 | this.InitializeComponent(); 15 | } 16 | 17 | // Dialog constructor. 18 | public LivelyPropertiesView(CustomiseWallpaperViewModel viewModel) : this() 19 | { 20 | this.viewModel = viewModel; 21 | this.DataContext = this.viewModel; 22 | } 23 | 24 | // Frame constructor. 25 | protected override void OnNavigatedTo(NavigationEventArgs e) 26 | { 27 | this.viewModel = e.Parameter as CustomiseWallpaperViewModel; 28 | this.DataContext = this.viewModel; 29 | } 30 | 31 | //protected override void OnNavigatedFrom(NavigationEventArgs e) 32 | //{ 33 | // viewModel.OnClose(); 34 | //} 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/AboutView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | 5 | namespace Lively.UI.WinUI.Views.Pages 6 | { 7 | /// 8 | /// An empty page that can be used on its own or navigated to within a Frame. 9 | /// 10 | public sealed partial class AboutView : Page 11 | { 12 | public AboutView() 13 | { 14 | this.InitializeComponent(); 15 | this.DataContext = App.Services.GetRequiredService(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/AddWallpaperCreateView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | 4 | // To learn more about WinUI, the WinUI project structure, 5 | // and more about our project templates, see: http://aka.ms/winui-project-info. 6 | 7 | namespace Lively.UI.WinUI.Views.Pages 8 | { 9 | /// 10 | /// An empty page that can be used on its own or navigated to within a Frame. 11 | /// 12 | public sealed partial class AddWallpaperCreateView : Page 13 | { 14 | public AddWallpaperCreateView(AddWallpaperCreateViewModel vm) 15 | { 16 | this.InitializeComponent(); 17 | this.DataContext = vm; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/AddWallpaperDataView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | 4 | // To learn more about WinUI, the WinUI project structure, 5 | // and more about our project templates, see: http://aka.ms/winui-project-info. 6 | 7 | namespace Lively.UI.WinUI.Views.Pages 8 | { 9 | /// 10 | /// An empty page that can be used on its own or navigated to within a Frame. 11 | /// 12 | public sealed partial class AddWallpaperDataView : Page 13 | { 14 | public AddWallpaperDataView(AddWallpaperDataViewModel vm) 15 | { 16 | this.InitializeComponent(); 17 | this.DataContext = vm; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/AppThemeView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common; 2 | using Lively.UI.Shared.ViewModels; 3 | using Microsoft.Extensions.DependencyInjection; 4 | using Microsoft.UI.Xaml; 5 | using Microsoft.UI.Xaml.Controls; 6 | using System; 7 | 8 | // To learn more about WinUI, the WinUI project structure, 9 | // and more about our project templates, see: http://aka.ms/winui-project-info. 10 | 11 | namespace Lively.UI.WinUI.Views.Pages 12 | { 13 | /// 14 | /// An empty page that can be used on its own or navigated to within a Frame. 15 | /// 16 | public sealed partial class AppThemeView : Page 17 | { 18 | public AppThemeView() 19 | { 20 | this.InitializeComponent(); 21 | this.DataContext = App.Services.GetRequiredService(); 22 | } 23 | 24 | //NavigateUri not working, Issue: https://github.com/microsoft/microsoft-ui-xaml/issues/5630 25 | private void Color_HyperlinkButton_Click(object sender, RoutedEventArgs e) => LinkUtil.OpenBrowser("ms-settings:colors"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/ChooseDisplayView.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/ChooseDisplayView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | 4 | // To learn more about WinUI, the WinUI project structure, 5 | // and more about our project templates, see: http://aka.ms/winui-project-info. 6 | 7 | namespace Lively.UI.WinUI.Views.Pages 8 | { 9 | /// 10 | /// An empty page that can be used on its own or navigated to within a Frame. 11 | /// 12 | public sealed partial class ChooseDisplayView : Page 13 | { 14 | public ChooseDisplayView(ChooseDisplayViewModel vm) 15 | { 16 | this.InitializeComponent(); 17 | this.DataContext = vm; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/ControlPanel/ScreensaverLayoutView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Navigation; 4 | 5 | namespace Lively.UI.WinUI.Views.Pages.ControlPanel 6 | { 7 | public sealed partial class ScreensaverLayoutView : Page 8 | { 9 | private ScreensaverLayoutViewModel viewModel; 10 | 11 | public ScreensaverLayoutView() 12 | { 13 | this.InitializeComponent(); 14 | } 15 | 16 | protected override void OnNavigatedTo(NavigationEventArgs e) 17 | { 18 | this.viewModel ??= (DataContext as ControlPanelViewModel)?.ScreensaverVm; 19 | this.DataContext = this.viewModel; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/ControlPanel/WallpaperLayoutCustomiseView.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 15 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/ControlPanel/WallpaperLayoutView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Navigation; 4 | 5 | namespace Lively.UI.WinUI.Views.Pages.ControlPanel 6 | { 7 | public sealed partial class WallpaperLayoutView : Page 8 | { 9 | private WallpaperLayoutViewModel viewModel; 10 | 11 | public WallpaperLayoutView() 12 | { 13 | this.InitializeComponent(); 14 | } 15 | 16 | protected override void OnNavigatedTo(NavigationEventArgs e) 17 | { 18 | this.viewModel ??= (DataContext as ControlPanelViewModel)?.WallpaperVm; 19 | this.DataContext = this.viewModel; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/DepthEstimateWallpaperView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | 4 | // To learn more about WinUI, the WinUI project structure, 5 | // and more about our project templates, see: http://aka.ms/winui-project-info. 6 | 7 | namespace Lively.UI.WinUI.Views.Pages 8 | { 9 | /// 10 | /// An empty page that can be used on its own or navigated to within a Frame. 11 | /// 12 | public sealed partial class DepthEstimateWallpaperView : Page 13 | { 14 | public DepthEstimateWallpaperView(DepthEstimateWallpaperViewModel vm) 15 | { 16 | this.InitializeComponent(); 17 | this.DataContext = vm; 18 | 19 | this.Loaded += (_, _) => 20 | { 21 | BackgroundGridShadow.Receivers.Add(BackgroundGrid); 22 | }; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/GalleryFeaturedView.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/GalleryFeaturedView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages.Gallery 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class GalleryFeaturedView : Page 25 | { 26 | public GalleryFeaturedView() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/GalleryLoginView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | // To learn more about WinUI, the WinUI project structure, 7 | // and more about our project templates, see: http://aka.ms/winui-project-info. 8 | 9 | namespace Lively.UI.WinUI.Views.Pages.Gallery 10 | { 11 | /// 12 | /// An empty page that can be used on its own or navigated to within a Frame. 13 | /// 14 | public sealed partial class GalleryLoginView : Page 15 | { 16 | public GalleryLoginView() 17 | { 18 | this.InitializeComponent(); 19 | this.DataContext = App.Services.GetRequiredService(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/GallerySubscriptionView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | // To learn more about WinUI, the WinUI project structure, 7 | // and more about our project templates, see: http://aka.ms/winui-project-info. 8 | 9 | namespace Lively.UI.WinUI.Views.Pages.Gallery 10 | { 11 | /// 12 | /// An empty page that can be used on its own or navigated to within a Frame. 13 | /// 14 | public sealed partial class GallerySubscriptionView : Page 15 | { 16 | public GallerySubscriptionView() 17 | { 18 | this.InitializeComponent(); 19 | this.DataContext = App.Services.GetRequiredService(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/ManageAccountView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | // To learn more about WinUI, the WinUI project structure, 7 | // and more about our project templates, see: http://aka.ms/winui-project-info. 8 | 9 | namespace Lively.UI.WinUI.Views.Pages.Gallery 10 | { 11 | /// 12 | /// An empty page that can be used on its own or navigated to within a Frame. 13 | /// 14 | public sealed partial class ManageAccountView : Page 15 | { 16 | public ManageAccountView() 17 | { 18 | this.InitializeComponent(); 19 | this.DataContext = App.Services.GetRequiredService(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/ReportWallpaperView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages.Gallery 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class ReportWallpaperView : Page 25 | { 26 | public ReportWallpaperView() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/RestoreWallpaperView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.UI.Xaml.Controls; 3 | 4 | // To learn more about WinUI, the WinUI project structure, 5 | // and more about our project templates, see: http://aka.ms/winui-project-info. 6 | 7 | namespace Lively.UI.WinUI.Views.Pages.Gallery 8 | { 9 | /// 10 | /// An empty page that can be used on its own or navigated to within a Frame. 11 | /// 12 | public sealed partial class RestoreWallpaperView : Page 13 | { 14 | public RestoreWallpaperView(RestoreWallpaperViewModel vm) 15 | { 16 | this.InitializeComponent(); 17 | this.DataContext = vm; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Gallery/ShareWallpaperView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages.Gallery 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class ShareWallpaperView : Page 25 | { 26 | public ShareWallpaperView() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/LibraryAboutView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class LibraryAboutView : Page 25 | { 26 | public LibraryAboutView() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Settings/FindMoreAppsView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages.Settings 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class FindMoreAppsView : Page 25 | { 26 | public FindMoreAppsView() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Settings/SettingsGeneralView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | namespace Lively.UI.WinUI.Views.Pages.Settings 7 | { 8 | public sealed partial class SettingsGeneralView : Page 9 | { 10 | public SettingsGeneralView() 11 | { 12 | this.InitializeComponent(); 13 | this.DataContext = App.Services.GetRequiredService(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Settings/SettingsPerformanceView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | namespace Lively.UI.WinUI.Views.Pages.Settings 7 | { 8 | public sealed partial class SettingsPerformanceView : Page 9 | { 10 | public SettingsPerformanceView() 11 | { 12 | this.InitializeComponent(); 13 | this.DataContext = App.Services.GetRequiredService(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Settings/SettingsScreensaverView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | namespace Lively.UI.WinUI.Views.Pages.Settings 7 | { 8 | public sealed partial class SettingsScreensaverView : Page 9 | { 10 | public SettingsScreensaverView() 11 | { 12 | this.InitializeComponent(); 13 | this.DataContext = App.Services.GetRequiredService(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/Settings/SettingsSystemView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Lively.UI.Shared.ViewModels; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using Microsoft.UI.Xaml.Controls; 4 | using System; 5 | 6 | namespace Lively.UI.WinUI.Views.Pages.Settings 7 | { 8 | public sealed partial class SettingsSystemView : Page 9 | { 10 | public SettingsSystemView() 11 | { 12 | this.InitializeComponent(); 13 | this.DataContext = App.Services.GetRequiredService(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/TrayMenuHelp.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/Views/Pages/TrayMenuHelp.xaml.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.UI.Xaml; 2 | using Microsoft.UI.Xaml.Controls; 3 | using Microsoft.UI.Xaml.Controls.Primitives; 4 | using Microsoft.UI.Xaml.Data; 5 | using Microsoft.UI.Xaml.Input; 6 | using Microsoft.UI.Xaml.Media; 7 | using Microsoft.UI.Xaml.Navigation; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.IO; 11 | using System.Linq; 12 | using System.Runtime.InteropServices.WindowsRuntime; 13 | using Windows.Foundation; 14 | using Windows.Foundation.Collections; 15 | 16 | // To learn more about WinUI, the WinUI project structure, 17 | // and more about our project templates, see: http://aka.ms/winui-project-info. 18 | 19 | namespace Lively.UI.WinUI.Views.Pages 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class TrayMenuHelp : Page 25 | { 26 | public TrayMenuHelp() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | true/PM 12 | PerMonitorV2, PerMonitor 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.UI.WinUI/appicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively.UI.WinUI/appicon.ico -------------------------------------------------------------------------------- /src/Lively/Lively.Utility.Commandline/Lively.Utility.Commandline.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Exe 5 | net8.0 6 | true 7 | false 8 | true 9 | AnyCPU;x64 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Lively/Lively.Utility.ConsoleDemo/Lively.Utility.ConsoleDemo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Exe 5 | net8.0 6 | AnyCPU;x64 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Lively/Lively.Utility.Screensaver/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Lively/Lively.Utility.Screensaver/Com/IApplicationActivationManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | 4 | // Copyright (c) Microsoft Corporation 5 | // The Microsoft Corporation licenses this file to you under the MIT license. 6 | // See the LICENSE file in the project root for more information. 7 | // Ref: https://github.com/microsoft/PowerToys/blob/main/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/IApplicationActivationManager.cs 8 | namespace Lively.Utility.Screensaver.Com 9 | { 10 | [ComImport] 11 | [Guid("2e941141-7f97-4756-ba1d-9decde894a3d")] 12 | [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 13 | internal interface IApplicationActivationManager 14 | { 15 | IntPtr ActivateApplication([In] string appUserModelId, [In] string arguments, [In] ActivateOptions options, [Out] out uint processId); 16 | IntPtr ActivateForFile([In] string appUserModelId, [In] IntPtr /*IShellItemArray* */ itemArray, [In] string verb, [Out] out uint processId); 17 | IntPtr ActivateForProtocol([In] string appUserModelId, [In] IntPtr /* IShellItemArray* */itemArray, [Out] out uint processId); 18 | } 19 | 20 | [Flags] 21 | internal enum ActivateOptions 22 | { 23 | None = 0x00000000, 24 | DesignMode = 0x00000001, 25 | NoErrorUI = 0x00000002, 26 | NoSplashScreen = 0x00000004, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Lively/Lively.Utility.Watchdog/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Lively/Lively/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Lively/Lively/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /src/Lively/Lively/Commandline/ICommandHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Commandline 2 | { 3 | public interface ICommandHandler 4 | { 5 | /// 6 | /// Parse commandline args. 7 | /// 8 | /// 9 | void ParseArgs(string[] args); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Converters/BoolToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Data; 7 | using System.Windows; 8 | using System.Globalization; 9 | 10 | namespace Lively.Converters 11 | { 12 | public class BooleanToVisibilityConverter : IValueConverter 13 | { 14 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 15 | { 16 | if (value is bool) 17 | { 18 | return (bool)value ^ (parameter as string ?? string.Empty).Equals("Reverse") ? 19 | Visibility.Visible : Visibility.Collapsed; 20 | } 21 | else 22 | { 23 | return value is not null ^ (parameter as string ?? string.Empty).Equals("Reverse") ? 24 | Visibility.Visible : Visibility.Collapsed; 25 | } 26 | 27 | } 28 | 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotSupportedException(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Lively/Lively/Converters/TaskbarProgressConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Text; 5 | using System.Windows.Data; 6 | 7 | namespace Lively.Converters 8 | { 9 | public class TaskbarProgressConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, 12 | System.Globalization.CultureInfo culture) 13 | { 14 | double progressValue = 0f; 15 | if (targetType == typeof(double)) 16 | { 17 | progressValue = ((double)value) / 100f; 18 | } 19 | return progressValue; 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Core/Display/IDisplayManager.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Shankar 2 | // The Shankar licenses this file to you under the MIT license. 3 | // See the LICENSE file in the project root for more information. 4 | // Source: https://github.com/ModernFlyouts-Community/ModernFlyouts 5 | 6 | using Lively.Models; 7 | using System; 8 | using System.Collections.ObjectModel; 9 | using System.Drawing; 10 | 11 | namespace Lively.Core.Display 12 | { 13 | public interface IDisplayManager 14 | { 15 | ObservableCollection DisplayMonitors { get; } 16 | DisplayMonitor PrimaryDisplayMonitor { get; } 17 | Rectangle VirtualScreenBounds { get; } 18 | 19 | event EventHandler DisplayUpdated; 20 | 21 | DisplayMonitor GetDisplayMonitorFromHWnd(IntPtr hWnd); 22 | DisplayMonitor GetDisplayMonitorFromPoint(Point point); 23 | bool IsMultiScreen(); 24 | uint OnHwndCreated(IntPtr hWnd, out bool register); 25 | IntPtr OnWndProc(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr lParam); 26 | bool ScreenExists(DisplayMonitor display); 27 | } 28 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Core/Suspend/IPlayback.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using System; 3 | 4 | namespace Lively.Core.Suspend 5 | { 6 | public interface IPlayback : IDisposable 7 | { 8 | void Start(); 9 | void Stop(); 10 | PlaybackState WallpaperPlayback { get; set; } 11 | 12 | event EventHandler PlaybackStateChanged; 13 | } 14 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Core/Watchdog/IWatchdogService.cs: -------------------------------------------------------------------------------- 1 | namespace Lively.Core.Watchdog 2 | { 3 | /// 4 | /// External service to monitor and close wallpaper plugins in the event of failure. 5 | /// 6 | public interface IWatchdogService 7 | { 8 | public bool IsRunning { get; } 9 | /// 10 | /// Add program to monitor. 11 | /// 12 | /// processid of program. 13 | void Add(int pid); 14 | /// 15 | /// Clear programs currently being monitored. 16 | /// 17 | void Clear(); 18 | /// 19 | /// Remove the given program from being monitored. 20 | /// 21 | /// processid of program. 22 | void Remove(int pid); 23 | /// 24 | /// Start watchdog service. 25 | /// 26 | void Start(); 27 | } 28 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Extensions/LocalizedStringExtension.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Microsoft.Extensions.DependencyInjection; 3 | using System; 4 | using System.Windows.Markup; 5 | 6 | namespace Lively.Extensions 7 | { 8 | public class LocalizedStringExtension : MarkupExtension 9 | { 10 | public string ResourceKey { get; set; } 11 | 12 | public LocalizedStringExtension(string resourceKey) 13 | { 14 | ResourceKey = resourceKey; 15 | } 16 | 17 | public override object ProvideValue(IServiceProvider serviceProvider) 18 | { 19 | if (string.IsNullOrEmpty(ResourceKey)) 20 | return string.Empty; 21 | 22 | // Return placeholder if in design mode 23 | if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(new System.Windows.DependencyObject())) 24 | return $"[{ResourceKey}]"; 25 | 26 | try 27 | { 28 | var resourceService = App.Services?.GetRequiredService(); 29 | return resourceService?.GetString(ResourceKey) ?? $"!{ResourceKey}"; 30 | } 31 | catch 32 | { 33 | return $"!{ResourceKey}"; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Lively/Lively/Factories/ILivelyPropertyFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Lively.Models; 3 | using Lively.Models.Enums; 4 | 5 | namespace Lively.Factories 6 | { 7 | public interface ILivelyPropertyFactory 8 | { 9 | string CreateLivelyPropertyFolder(LibraryModel model, DisplayMonitor display, WallpaperArrangement arrangement, IUserSettingsService userSettings); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Factories/IWallpaperPluginFactory.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Lively.Core; 3 | using Lively.Models; 4 | using Lively.Models.Enums; 5 | using System; 6 | using System.Drawing; 7 | 8 | namespace Lively.Factories 9 | { 10 | public interface IWallpaperPluginFactory 11 | { 12 | IWallpaper CreateWallpaper(LibraryModel model, DisplayMonitor display, WallpaperArrangement arrangement, IUserSettingsService userSettings, bool isPreview = false); 13 | IWallpaper CreateDwmThumbnailWallpaper(LibraryModel model, IntPtr thumbnailSrc, Rectangle targetRect, DisplayMonitor display); 14 | } 15 | } -------------------------------------------------------------------------------- /src/Lively/Lively/Helpers/ThemeUtil.cs: -------------------------------------------------------------------------------- 1 | using Lively.Models.Enums; 2 | using Microsoft.Win32; 3 | 4 | namespace Lively.Helpers 5 | { 6 | public static class ThemeUtil 7 | { 8 | public static AppTheme GetWindowsTheme() 9 | { 10 | try 11 | { 12 | using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"); 13 | var registryValueObject = key?.GetValue("AppsUseLightTheme"); 14 | if (registryValueObject == null) 15 | { 16 | return AppTheme.Light; 17 | } 18 | var registryValue = (int)registryValueObject; 19 | return registryValue > 0 ? AppTheme.Light : AppTheme.Dark; 20 | } 21 | catch 22 | { 23 | return AppTheme.Dark; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Lively/Lively/Nlog.config: -------------------------------------------------------------------------------- 1 |  2 | 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Lively/Lively/RPC/WallpaperPlaylistServer.cs: -------------------------------------------------------------------------------- 1 | using Google.Protobuf.WellKnownTypes; 2 | using Grpc.Core; 3 | using Lively.Grpc.Common.Proto.Commands; 4 | using Octokit; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace Lively.RPC 12 | { 13 | internal class WallpaperPlaylistServer : PlaylistService.PlaylistServiceBase 14 | { 15 | public WallpaperPlaylistServer() 16 | { 17 | 18 | } 19 | 20 | public override Task Start(Empty _, ServerCallContext context) 21 | { 22 | return Task.FromResult(new Empty()); 23 | } 24 | 25 | public override Task Stop(Empty _, ServerCallContext context) 26 | { 27 | return Task.FromResult(new Empty()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/appicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/appicon.ico -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/appicon_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/appicon_96.png -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/icons8-application-window-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/icons8-application-window-96.png -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/icons8-close-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/icons8-close-96.png -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/icons8-home-screen-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/icons8-home-screen-96.png -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/icons8-website-bug-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/icons8-website-bug-96.png -------------------------------------------------------------------------------- /src/Lively/Lively/Resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/Resources/splash.png -------------------------------------------------------------------------------- /src/Lively/Lively/Services/WallpaperPlaylistService.cs: -------------------------------------------------------------------------------- 1 | using Lively.Common.Services; 2 | using Lively.Core; 3 | using Lively.Core.Display; 4 | using System.Timers; 5 | 6 | namespace Lively.Services 7 | { 8 | public class WallpaperPlaylistService 9 | { 10 | private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); 11 | private readonly Timer idleTimer = new Timer(); 12 | 13 | private readonly IUserSettingsService userSettings; 14 | private readonly IDesktopCore desktopCore; 15 | private readonly IDisplayManager displayManager; 16 | 17 | public WallpaperPlaylistService(IUserSettingsService userSettings, 18 | IDisplayManager displayManager, 19 | IDesktopCore desktopCore) 20 | { 21 | this.userSettings = userSettings; 22 | this.desktopCore = desktopCore; 23 | this.displayManager = displayManager; 24 | 25 | idleTimer.Elapsed += IdleCheckTimer; 26 | idleTimer.Interval = 30000; 27 | } 28 | 29 | public bool IsRunning { get; private set; } = false; 30 | 31 | private void IdleCheckTimer(object sender, ElapsedEventArgs e) 32 | { 33 | 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/BlankWindow.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/DebugLog.xaml: -------------------------------------------------------------------------------- 1 |  15 | 16 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/DebugLog.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Windows; 5 | using System.Windows.Controls; 6 | using System.Windows.Data; 7 | using System.Windows.Documents; 8 | using System.Windows.Input; 9 | using System.Windows.Media; 10 | using System.Windows.Media.Imaging; 11 | using System.Windows.Shapes; 12 | 13 | namespace Lively.Views 14 | { 15 | /// 16 | /// Interaction logic for DebugLog.xaml 17 | /// 18 | public partial class DebugLog : Window 19 | { 20 | public DebugLog() 21 | { 22 | InitializeComponent(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/DwmThumbnailWindow.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/ScreenSaverPreview.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Windows; 5 | using System.Windows.Controls; 6 | using System.Windows.Data; 7 | using System.Windows.Documents; 8 | using System.Windows.Input; 9 | using System.Windows.Media; 10 | using System.Windows.Media.Imaging; 11 | using System.Windows.Shapes; 12 | 13 | namespace Lively.Views 14 | { 15 | /// 16 | /// Interaction logic for ScreenSaverPreview.xaml 17 | /// 18 | public partial class ScreenSaverPreview : Window 19 | { 20 | public ScreenSaverPreview() 21 | { 22 | InitializeComponent(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/SplashWindow.xaml: -------------------------------------------------------------------------------- 1 |  19 | 20 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/TransparentWindow.xaml: -------------------------------------------------------------------------------- 1 |  17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/TransparentWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Shapes; 14 | 15 | namespace Lively.Views 16 | { 17 | /// 18 | /// Interaction logic for Transparent.xaml 19 | /// 20 | public partial class TransparentWindow : Window 21 | { 22 | public TransparentWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/WindowMsg/RawInputMsgWindow.xaml: -------------------------------------------------------------------------------- 1 |  18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Lively/Lively/Views/WindowMsg/WndProcMsgWindow.xaml: -------------------------------------------------------------------------------- 1 |  16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Lively/Lively/appicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/Lively/Lively/appicon.ico -------------------------------------------------------------------------------- /src/installer/Icons/appicon_96.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Icons/appicon_96.ico -------------------------------------------------------------------------------- /src/installer/Languages/Lithuanian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Languages/Lithuanian.isl -------------------------------------------------------------------------------- /src/installer/Languages/SerbianCyrillic.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Languages/SerbianCyrillic.isl -------------------------------------------------------------------------------- /src/installer/Languages/SerbianLatin.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Languages/SerbianLatin.isl -------------------------------------------------------------------------------- /src/installer/Languages/Swedish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Languages/Swedish.isl -------------------------------------------------------------------------------- /src/installer/Theme/wizard_large.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Theme/wizard_large.bmp -------------------------------------------------------------------------------- /src/installer/Theme/wizard_small.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rocksdanister/lively/f514dc295489bd1cb37d116f4e037870e76adf71/src/installer/Theme/wizard_small.bmp --------------------------------------------------------------------------------