# LanMountainDesktop

> 你的桌面，不止一面。

`LanMountainDesktop` 是一个基于 Avalonia 的桌面壳层项目，目标不是“做一个启动器”，而是把桌面变成可编排的信息与交互空间。

## 项目定位
- 以网格化布局组织桌面组件，支持多页桌面与组件自由摆放。
- 提供顶部状态栏 + 底部任务栏的桌面框架，强调信息密度与可读性平衡。
- 通过主题色、日夜模式、玻璃视觉与动画系统，形成统一的视觉语言。
- 通过组件注册机制与 JSON 扩展入口，让桌面能力可持续扩展。

## 核心能力
- 桌面组件系统：天气、时钟、计时器、课程表、日历、白板、音乐控制、学习环境等组件可组合使用。
- 壁纸系统：支持图片与视频壁纸，并可在设置中实时预览。
- 主题系统：支持日夜模式、主题色与调色联动（Monet 风格色板）。
- 个性化设置：网格密度、状态栏间距、任务栏布局、语言与时区等可持久化配置。
- 本地化：内置 `zh-CN` 与 `en-US` 资源。

## 工程结构
- `LanMountainDesktop/`：桌面端主程序（Avalonia）。
- `LanMountainDesktop.RecommendationBackend/`：推荐内容后端服务（ASP.NET Core Minimal API）。
- `docs/`：视觉与圆角等规范文档。
- `LanMountainDesktop/ComponentSystem/`：组件定义、注册、放置规则与扩展入口。

## 技术栈
- .NET 10（`net10.0`）
- Avalonia 11
- FluentAvalonia + FluentIcons.Avalonia
- LibVLCSharp（用于视频相关能力）
- WebView.Avalonia（嵌入式网页组件能力）

## 扩展机制（摘要）
- 组件系统通过 `ComponentRegistry` 合并内置组件与扩展组件。
- 运行时会扫描 `Extensions/Components/*.json`（相对应用输出目录）加载第三方组件清单。
- 扩展契约与字段说明见组件系统文档：`LanMountainDesktop/ComponentSystem/README.md`。

## 当前状态
- 项目包含桌面端与推荐后端两个子项目，并在同一 `LanMountainDesktop.slnx` 工作区中维护。
- 配置默认写入本地：`%LOCALAPPDATA%\LanMountainDesktop\settings.json`。
- 当前体验以 Windows 为主要目标平台。
- SDK 版本由仓库根目录 `global.json` 锁定。

## 运行说明
运行与环境准备已拆分到独立文档：[`run.md`](./run.md)
