返回资讯中心
外部精选
软件工程
#开发者实时流

开发者用 Claude 编写 Rust 和 GTK4 的 Mastodon 桌面客户端

来源标题:Show HN: Mastodon desktop client, made with Claude, using Rust and GTK4

开发者借助 Claude Code 用 Rust 和 GTK4 编写了一款 Linux 桌面 Mastodon 客户端,功能包括多账号 OAuth 登录切换、多种时间线与实时更新、发帖与投票及媒体上传等完整操作。该项目受 Mastodon 新版 Web UI 改版启发,已发布在 Hacker News 的 Show HN 板块。

Hacker News 最新aisloperator2026/11/4 · 今天14 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

一个 Linux 桌面 Mastodon 客户端,用 Rust 和 GTK 4 编写。由 AI Sloperator 使用 Claude Code 创建。 多账号,支持 OAuth 登录、切换和登出(登出会撤销 token) 时间线:主页、本地、联邦、话题标签、列表、热门帖子、书签和收藏 通知、提及和私信会话 通过 streaming API 实时更新,带未读角标和“新内容”按钮 帖子:内容警告、敏感媒体封面、带替代文本的图片查看器、 链接卡片(右键可打开或复制链接,也可复制为 Markdown)、投票 (可投票)、带缩进回复的帖子串、翻译 操作:回复、转发、收藏、加书签、编辑、删除、删除并重新起草、 置顶、静音会话、复制链接或文本、举报 编辑器:按实例限制显示字数计数器、内容警告、 可见性、语言、媒体上传(文件选择器或粘贴)并支持替代文本、 投票,以及 Ctrl+Enter 发送;如果服务器慢或宕机,会显示该状态, 你可以取消或重试,而不会丢失帖子 个人资料:简介、已验证字段、关注或关注请求、新帖通知、 隐藏转发、静音、屏蔽、域名屏蔽、列表成员关系、关注者和正在关注 搜索账号、话题标签和帖子(其他服务器的 URL 会被解析) 探索(热门帖子、话题标签和新闻)、已关注的话题标签、关注请求、 列表管理、静音和屏蔽、资料编辑(包括头像和横幅) 关键词和话题标签过滤器:查看、添加、编辑和删除;匹配的帖子会 按各过滤器的设置折叠在警告后面或隐藏 任何服务器上的个人资料、帖子和话题标签链接都在应用内打开 侧边栏可以收缩为仅显示图标(底部按钮),标签以工具提示显示 键盘快捷键 按键 操作 Ctrl+N 新建帖子 F5 / Ctrl+R 刷新 Alt+Left / Esc / Backspace 返回 Ctrl+F 搜索 Ctrl+Enter 发送帖子 Ctrl+Q 退出 PgDn / Space 向下翻页 PgUp / Shift+Space 向上翻页 在不跳过任何内容的情况下,翻页会落在帖子的开头,并在高于窗口的帖子中 逐页浏览。在信息流顶部向上翻两次会检查新帖子;在线程任一端翻过两次 会检查新回复。Space 和 Backspace 在文本框中仍正常输入, Backspace 在顶层页面不执行任何操作(没有可返回的地方)。 sudo apt install pkgconf libgtk-4-dev libsoup-3.0-dev 然后,使用来自 rustup 的稳定 Rust 工具链: cargo build --release ./target/release/fedigoo 唯一的 crate 依赖是 GTK 绑定(gtk4)和 libsoup 绑定(soup3)及其自身的依赖。JSON 处理和 HTML 转换是内置的。HTTPS 使用 libsoup 和 glib-networking。 fedigoo # GTK 选择后端(遵循 GDK_BACKEND) fedigoo --x11 # 强制使用 X11 fedigoo --wayland # 强制使用 Wayland 安装 ./target/release/fedigoo --install 这会将可执行文件复制到 /.local/bin/fedigoo,并添加菜单项 (/.local/share/applications/com.aisloperator.FediGoo.desktop)和一个图标 (位于 ~/.local/share/icons/hicolor/ 下),因此 FediGoo 会出现在你的 应用程序菜单和坞站中。fedigoo --uninstall 会删除这些文件, 但不会动你的账号和设置。 通过欢迎屏幕登录。FediGoo 会在浏览器中打开你实例的 授权页面;将页面显示的代码粘贴回 FediGoo。 所有本地数据(账号、访问 token、OAuth 客户端注册、 偏好设置)位于 $XDG_CONFIG_HOME/fedigoo/config.json,通常为 ~/.config/fedigoo/config.json。该文件创建时仅所有者有权限。 cargo test # 离线单元测试 cargo test -- --ignored # 同时访问公共 mastodon.social API 在没有显示器的情况下测试 UI,可以使用 GTK 的 Broadway 后端, tools/broadway-input.py 会向它发送真实的指针和键盘输入(点击、 拖拽、快捷键)来替代 Web 浏览器。其文档字符串中有详细信息。 本节在每次发布前更新,基于参考系统上的构建: Debian 13(trixie),amd64(x86_64),使用 Debian 自带的 GTK 4、libsoup 3 和其他系统库的软件包。 其中有多少是参考系统特有的,因列表而异: 这些是 Cargo.toml 中的依赖及其版本要求。 gtk4 以 gtk 名称导入,soup3 以 soup 名称导入。 这些是发布二进制直接链接的系统库,如 参考系统上 objdump -p 所报告。通过 crate 绑定,应用代码还会 调用 Pango 和 GDK,它们作为 GTK 的一部分加载。构建还需要 pkg-config 和 glib-compile-resources 工具以及 GTK 4 和 libsoup 3 开发 文件(Debian:pkgconf libgtk-4-dev libsoup-3.0-dev)。 这些是构建中的其他所有 crate(普通依赖和构建时依赖), 按本次更新时 x86_64 Linux 的 Cargo.lock 解析结果, 来自 cargo tree -e normal,build。如果某个 crate 出现多个版本,会列出所有 版本。在相同 Cargo.toml 要求下稍后执行 cargo update 可能解析出不同版本,从而引入不同 crate。其中一些 (如 system-deps、pkg-config、syn 和 toml)仅在编译时使用, 不属于二进制的一部分。 这些是由于上述直接依赖而加载的库,如 ldd 在参考系统上对发布二进制所报告,外加 GLib 和 GTK 在运行 时加载的模块,ldd 不会显示这些。具体集合取决于发行版 如何构建 GTK、GLib 和 libsoup,以及桌面环境,因此其他系统可能不同。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →