WallWarp 是一款用 Rust 开发的桌面壁纸管理应用程序,采用现代化的 Iced GUI 框架构建。它提供了丰富的壁纸管理功能,包括本地壁纸浏览、在线壁纸搜索、批量下载、自动轮换等。
-
🖼️ 本地壁纸管理
- 浏览本地文件夹中的壁纸
- 支持多种图像格式(JPG、PNG、BMP、WebP)
- 壁纸预览和快速设置
-
🌐 在线壁纸搜索
- 集成 Wallhaven API
- 丰富的筛选选项(分类、纯度、颜色、分辨率等)
- 高质量壁纸浏览和下载
- 批量下载支持
-
⚙️ 高级设置
- 自动壁纸轮换
- 自定义轮换间隔
- 窗口大小和位置记忆
- 多显示器支持
-
🌍 国际化支持
- 支持中文和英文界面
- 可扩展的多语言系统
- 语言: Rust 2024 Edition
- GUI 框架: Iced 0.14
- 异步运行时: Tokio
- 图像处理: Image、fast_image_resize
- 序列化: Serde、Serde_json
- 国际化: fluent-bundle
- 网络请求: Reqwest
- 系统托盘: tray-icon (Windows)
确保你的系统已安装 Rust 工具链(Rust 1.70 或更高版本)。
# 克隆仓库
git clone https://github.com/zsyo/wallwarp.git
cd wallwarp
# 编译发布版本
cargo build --release
# 运行
cargo run --release
# 构建安装包
cargo packager --release访问 Releases 页面下载适合你系统的预编译版本。
- 启动 WallWarp
- 在"设置"页面添加壁纸文件夹
- 浏览和设置壁纸
- 在"在线壁纸"页面搜索并下载壁纸
- 切换到"在线壁纸"页面
- 设置筛选条件(分类、纯度、颜色、分辨率等)
- 点击"搜索"按钮
- 浏览搜索结果
- 点击下载按钮保存壁纸
- 切换到"设置"页面
- 启用"自动轮换"功能
- 设置轮换间隔时间
- 选择轮换来源(本地/在线)
WallWarp 会在程序同级目录创建 config.toml 配置文件,用于保存用户设置:
[global]
language = "zh-cn" # 语言设置
[window]
width = 1280
height = 800wallwarp/
├── src/
│ ├── main.rs # 应用入口点
│ ├── lib.rs # 库入口,声明所有模块
│ ├── i18n.rs # 国际化支持模块
│ ├── ui/ # 用户界面模块
│ │ ├── app.rs # 主应用逻辑
│ │ ├── mod.rs # UI模块声明
│ │ ├── types.rs # UI类型定义
│ │ ├── update.rs # UI更新逻辑
│ │ ├── view.rs # 界面渲染逻辑
│ │ ├── subscription.rs # 订阅管理
│ │ ├── auto_change/ # 自动轮换功能模块
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── handler/ # 消息处理器
│ │ │ │ ├── mod.rs # 处理器模块声明
│ │ │ │ └── ...
│ │ │ └── state/ # 状态管理
│ │ │ ├── mod.rs # 状态模块声明
│ │ │ └── ...
│ │ ├── common/ # 公共UI组件
│ │ │ ├── mod.rs # 公共组件模块声明
│ │ │ └── ...
│ │ ├── download/ # 下载管理模块
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── view.rs # 界面渲染
│ │ │ ├── handler/ # 消息处理器
│ │ │ │ ├── mod.rs # 处理器模块声明
│ │ │ │ └── ...
│ │ │ ├── state/ # 状态管理
│ │ │ │ ├── mod.rs # 状态模块声明
│ │ │ │ └── ...
│ │ │ └── widget/ # 自定义组件
│ │ │ ├── mod.rs # 组件模块声明
│ │ │ └── ...
│ │ ├── local/ # 本地壁纸模块
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── state.rs # 状态定义
│ │ │ ├── view.rs # 界面渲染
│ │ │ ├── handler/ # 消息处理器
│ │ │ │ ├── mod.rs # 处理器模块声明
│ │ │ │ └── ...
│ │ │ └── widget/ # 自定义组件
│ │ │ ├── mod.rs # 组件模块声明
│ │ │ └── ...
│ │ ├── main/ # 主界面模块
│ │ │ ├── close_confirm.rs
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── state.rs # 状态定义
│ │ │ ├── tray.rs # 托盘图标
│ │ │ ├── view.rs # 界面渲染
│ │ │ ├── handler/ # 消息处理器
│ │ │ │ ├── mod.rs # 处理器模块声明
│ │ │ │ └── ...
│ │ │ └── widget/ # 自定义组件
│ │ │ ├── mod.rs # 组件模块声明
│ │ │ └── ...
│ │ ├── online/ # 在线壁纸模块
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── types.rs # 类型定义
│ │ │ ├── view.rs # 界面渲染
│ │ │ ├── handler/ # 消息处理器
│ │ │ ├── state/ # 状态管理
│ │ │ └── widget/ # 自定义组件
│ │ ├── settings/ # 设置页面模块
│ │ │ ├── message.rs # 消息定义
│ │ │ ├── mod.rs # 模块声明
│ │ │ ├── types.rs # 类型定义
│ │ │ ├── view.rs # 界面渲染
│ │ │ ├── handler/ # 消息处理器
│ │ │ ├── state/ # 状态管理
│ │ │ └── widget/ # 自定义组件
│ │ └── style/ # 样式定义模块
│ │ ├── colors.rs # 颜色定义
│ │ ├── dimensions.rs # 尺寸定义
│ │ ├── mod.rs # 样式模块声明
│ │ ├── shadows.rs # 阴影定义
│ │ └── theme.rs # 主题定义
│ ├── services/ # 业务逻辑服务
│ │ ├── mod.rs # 服务模块声明
│ │ ├── local.rs # 本地壁纸服务
│ │ ├── download.rs # 下载服务
│ │ ├── request_context.rs # 请求上下文
│ │ ├── async_task/ # 异步任务模块
│ │ │ ├── mod.rs # 异步任务模块声明
│ │ │ └── ...
│ │ └── wallhaven/ # Wallhaven API 集成
│ │ ├── mod.rs # Wallhaven模块声明
│ │ ├── client.rs # API客户端
│ │ ├── helper.rs # 辅助函数
│ │ ├── service.rs # 服务实现
│ │ ├── types.rs # 类型定义
│ │ └── model/ # 数据模型
│ │ ├── mod.rs # 模型模块声明
│ │ └── ...
│ └── utils/ # 工具函数
│ ├── mod.rs # 工具模块声明
│ ├── assets.rs # 资源管理
│ ├── config.rs # 配置管理
│ ├── helpers.rs # 辅助函数
│ ├── logger.rs # 日志系统
│ ├── single_instance.rs # 单实例控制
│ ├── startup.rs # 启动管理
│ └── window_utils.rs # 窗口工具
├── locales/ # 语言文件
│ ├── zh-cn.ftl # 中文翻译
│ └── en.ftl # 英文翻译
├── assets/ # 资源文件
│ ├── icons.ttf # 图标字体
│ └── logo.ico # 应用图标
├── .github/ # GitHub 配置
│ └── workflows/
│ └── release.yml # 发布工作流
├── Cargo.toml # 项目依赖配置
├── build.rs # 构建脚本
├── README.md # 项目说明(中文)
├── README_EN.md # 项目说明(英文)
└── LICENSE # 许可证
- Rust 1.70 或更高版本
- Windows 10 或更高版本(当前主要支持 Windows)
- 最低 CPU 要求: 支持 x86-64-v3 指令集的处理器(约 2013 年及以后的 Intel/AMD CPU)
本项目使用 x86-64-v3 目标 CPU 进行编译优化,以获得更好的性能:
# 设置编译优化标志
RUSTFLAGS="-C target-cpu=x86-64-v3" cargo build --release说明:
x86-64-v3目标启用了 AVX2、BMI1/2、FMA 等现代指令集- 放弃了对古董级 CPU(不支持 AVX2 的处理器)的支持
- 如果需要在更老的 CPU 上运行,请移除
RUSTFLAGS环境变量进行编译
# 编译
cargo build
# 运行
cargo run
# 运行测试
cargo test
# 格式化代码
cargo fmt
# 代码检查
cargo clippy欢迎贡献代码、报告问题或提出建议!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 GNU Affero General Public License v3.0 开源协议。
zsyo zephyr@aico.top