写点什么

Fluent Reader - 现代化的桌面 RSS 阅读器

作者:qife
  • 2025-06-29
    福建
  • 本文字数:1960 字

    阅读完需:约 6 分钟

Fluent Reader - 现代化的桌面RSS阅读器

项目标题与描述

Fluent Reader 是一款现代化的桌面 RSS 阅读器应用,采用 Fluent Design 设计语言,支持全黑暗模式。该项目基于 Electron 构建,提供了跨平台的 RSS 订阅管理解决方案。


主要特点:


  • 支持本地阅读或与自托管服务同步(兼容 Fever 或 Google Reader API)

  • 多平台支持(Windows/macOS/Linux)

  • 响应式设计和优雅的用户界面


功能特性

  • 🎨 受 Fluent Design System 启发的现代化 UI,支持完整黑暗模式

  • 🔄 支持与多种 RSS 服务同步(Inoreader、Feedbin、The Old Reader、BazQux Reader 等)

  • 📥 导入/导出 OPML 文件,完整的应用数据备份与恢复

  • 📖 内置文章视图阅读全文或默认加载网页

  • 🔍 支持正则表达式搜索文章或按阅读状态筛选

  • 📂 使用文件夹式分组组织订阅源

  • ⌨️ 单键键盘快捷键支持

  • ⚙️ 自动隐藏、标记为已读或收藏文章的规则设置

  • 🔔 后台获取文章并发送推送通知

  • 🌍 多语言国际化支持(20+种语言)

安装指南

Windows/macOS 用户

推荐通过应用商店安装:


其他平台

可以从 GitHub Releases 下载最新版本。

从源码构建

# 安装依赖npm install
# 编译TypeScript和依赖npm run build
# 启动应用npm run electron
# 生成签名证书electron-builder create-self-signed-cert# 打包Windows应用npm run package-win
复制代码

使用说明

基本使用

// 初始化应用import { initApp } from "./scripts/models/app"import { rootStore } from "./scripts/reducer"
rootStore.dispatch(initApp())
// 渲染主界面ReactDOM.render( <Provider store={rootStore}> <Root /> </Provider>, document.getElementById("app"))
复制代码

订阅源管理

// 创建订阅源组export class SourceGroup {    isMultiple: boolean    sids: number[]    name?: string    expanded?: boolean
constructor(sids: number[], name: string = null) { name = (name && name.trim()) || "Source group" if (sids.length == 1) { this.isMultiple = false } else { this.isMultiple = true this.name = name this.expanded = true } this.sids = sids }}
复制代码

文章视图

// 文章组件class Article extends React.Component<ArticleProps, ArticleState> {    // 处理文章加载    async function getArticle(url) {        let article = get("a")        if (get("m") === "1") {            return (await Mercury.parse(url, {html: article})).content || ""        } else {            return article        }    }        // 渲染文章内容    render() {        return (            <div id="main"></div>        )    }}
复制代码

核心代码

主窗口管理

// WindowManager.tsexport class WindowManager {    mainWindow: BrowserWindow = null        createWindow() {        this.mainWindow = new BrowserWindow({            title: "Fluent Reader",            backgroundColor: nativeTheme.shouldUseDarkColors ? "#282828" : "#faf9f8",            vibrancy: "sidebar",            width: 1200,            height: 700,            minWidth: 992,            minHeight: 600,            frame: process.platform === "darwin",            titleBarStyle: "hiddenInset",            webPreferences: {                webviewTag: true,                contextIsolation: true,                preload: path.join(app.getAppPath(), "dist/preload.js")            }        })    }}
复制代码

数据存储

// db.tsexport async function init() {    sourcesDB = await sdbSchema.connect({ onUpgrade: onUpgradeSourceDB })    sources = sourcesDB.getSchema().table("sources")    itemsDB = await idbSchema.connect()    items = itemsDB.getSchema().table("items")        if (window.settings.getNeDBStatus()) {        await migrateNeDB()    }}
复制代码

主题设置

// theme.tsexport function setThemeDefaultFont(locale: string) {    switch (locale) {        case "zh-CN":            lightTheme.defaultFontStyle.fontFamily =                 '"Segoe UI", "Source Han Sans SC Regular", "Microsoft YaHei", sans-serif'            break        case "ja":            lightTheme.defaultFontStyle.fontFamily =                 '"Segoe UI", "Source Han Sans JP Regular", "Yu Gothic UI", sans-serif'            break        // 其他语言支持...    }}
复制代码


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Fluent Reader - 现代化的桌面RSS阅读器_Electron_qife_InfoQ写作社区