X 岛匿名版命令行客户端。
用户反馈和技术支持集中串:No.50750950
本仓库是 TransparentLC/xdcmd 的 fork。上游长期没有更新,因此本 fork 作为后续开发主线,并让上游源码与 Nix 打包环境共存于同一仓库。
yay -S xdao- 感谢 Malingshu 提供打包~(ノ゚∀゚)ノ
nix run github:Konecho/xdcmd- 感谢 Konecho 提供打包~(ノ゚∀゚)ノ
使用 GitHub Actions 自动打包成可执行文件,可以从这里下载。
xdcmd-windows原始的打包产物。xdcmd-windows-onefile单文件版,实际上是在运行的时候将主程序什么的自解压到临时目录。xdcmd-windows-upx将打包产物使用 UPX 压缩后的版本,不知道该下载哪个的话就选这个吧。
使用 GitHub Actions 自动打包成可执行文件,可以从这里下载。
本仓库自带 Nix flake,会直接打包仓库中的源码(包括本地修改)。
nix run .:直接运行。nix build:构建后运行result/bin/xdcmd。nix develop:进入包含 Python、chafa 和开发工具的 shell。
传递给程序的参数需要放在 -- 之后,例如 nix run . -- -h。
开发环境使用 uv 管理,依赖声明在 pyproject.toml,锁文件为 uv.lock。
uv sync # 创建 .venv 并安装运行时 + 开发依赖
uv run main.py # 启动
uv run pytest # 运行测试
uv run black xdnmb/scroll.py tests # 格式化新增代码
uv run ruff check xdnmb/scroll.py tests # 静态检查新增代码图片预览功能依赖系统命令 chafa,请通过发行版包管理器安装(例如 nix shell nixpkgs#chafa)。
阅读时:
- 焦点在左侧版面列表时,
j/k(或↓/↑)在版面之间选择。 - 焦点在版面的串列表时,
j/k在串之间选择。 - 进入串内后,
j/k(或↓/↑)按行滚动,长回复也能完整阅读。 - 串内
J/K(或Shift+↓/Shift+↑):跳到下 / 上一个回复,并把该回复对齐到顶部。 Ctrl+D/Ctrl+B:向下 / 向上翻半页。PgDn(l)/PgUp(h)仍然是版面 / 串的翻页。- 打开串后焦点留在右侧串内容;
Alt+Q返回版面时焦点留在右侧串列表,并尽量选中刚才阅读的串。 - 左右分栏之间用
Tab/Shift+Tab切换。 - 进入串后串号前会显示
串内,左右分隔线会从|变为║,用于区分串列表和串内。
“在命令行的环境下重现 X 岛网页版的刷岛体验”,原本只是这么一个很简单的想法,在做出初步的原型然后发到岛上之后意外地很受肥肥们的欢迎,于是就继续把完整版做出来了 (*´ω`*)
由于技术和精力所限,这个客户端只能实现看串、发串、查看引用和订阅管理这些比较基本的功能,没有实现历史记录和饼干切换等高级功能,在功能丰富程度和使用体验上均与 X 岛的网页版以及已有的手机客户端相差甚远。在这些基本功能完成后,除非存在严重影响使用的恶性 BUG 需要修复,我可能不会继续实现更多的功能需求。当然如果你愿意贡献代码,那就再好不过啦!(ゝ∀・)
不管怎么说,在命令行里刷岛这件事本身已经非常炫酷了 ᕕ( ᐛ )ᕗ
- 执行
uv run main.py就可以启动了(也可以pip install -r requirements.txt后执行python main.py),需要使用 Python 3.10 或以上的版本。 - 你也可以手动在
PATH下创建一个用于快速启动的脚本。例如,想要在终端输入xdcmd直接启动此项目:- Windows:
(echo @echo off & echo python /path/to/xdcmd/main.py %*) > %SystemRoot%\xdcmd.cmd - Linux:
(echo '#!/bin/sh\npython3 /path/to/xdcmd/main.py "$@"' > /usr/local/bin/xdcmd) && chmod +x /usr/local/bin/xdcmd
- Windows:
- 建议搭配等宽字体使用。对于 Windows 用户,建议通过 Windows Terminal 使用这个客户端,在传统的终端下使用可能会存在一些问题。
| 查看版面 | 查看串 | 发串 |
|---|---|---|
![]() |
![]() |
![]() |
| 用 VSCode 刷岛 | 用哔哔小子刷岛(?) |
|---|---|
![]() |
![]() |
在配置文件中启用单色模式,并按照“怀旧式命令提示符”的教程设置 Windows Terminal 主题,即可体验“用哔哔小子刷岛”的效果。
在启动时,会按照以下顺序查找配置文件:
- 使用命令行参数
--config或-c指定的配置文件路径。 $XDG_CONFIG_HOME/xdcmd/config.ini,其中$XDG_CONFIG_HOME的默认值为~/.config,在 Windows 下~相当于%HOMEPATH%。main.py所在目录的config.ini。
如果没有找到配置文件,则会在 $XDG_CONFIG_HOME/xdcmd/config.ini 写入默认的配置文件。
配置文件的内容如下:
[Config]
# 图片CDN地址
# 如果留空,则运行时会通过X岛API自动获取
# 一般不需要手动设定
cdnpath = https://image.nmb.best/
# 饼干
# 自行在用户系统中扫描饼干二维码,可以得到形如{"cookie":"...","name":"..."}的JSON数据
# 将cookie字段的值填到这里就可以了(这个饼干是随机生成的示例,并不能实际使用)
cookie = Y%85m%E5J5%F4%7D%98%DB%98%0Cm%08%11%9DV%1EIi%956W%10
# 订阅ID
# 可以通过python -c "import secrets;print(secrets.token_urlsafe(24))"随机生成一个
# 虽然API里用的参数名称都是UUID,但是实际上可以使用包括空字符串在内的任意字符串
# 也可以将在其他客户端使用的订阅ID填到这里
feeduuid = C7hswJmRY1eHo6FfCqJbmWgva8D3vAI6
# 使用单色模式
monochrome = False
# 使用简化模式
# 不显示上方的版面和串号以及下方的按键提示
simplify = False
# 显示缩略图
# 此功能依赖于chafa(https://hpjansson.org/chafa/),需要自行使用包管理器安装,或下载可执行文件并放在PATH环境变量包含的路径下
# 在单色模式下也不会显示缩略图
# 需要额外的时间加载图片,如果介意拖慢速度的话可以关闭此功能
imagepreview = True
# 缩略图的最大宽度
imagepreviewwidth = 24
# 缩略图的最大高度
imagepreviewheight = 6
# 隐藏Tips
hidetips = False
# 隐藏饼干
# 红名的名字和PO主的标记不会被隐藏
hidecookie = False
# 只看PO
# 不会影响Tips的出现
poonly = False
# 不在主页上显示公告
ignorenotice = False- 本项目包含了“芦苇娘表情包”(黑白版、彩色版)的下载链接。芦苇娘人物形象原作者为 ddzx1323,表情包由 Anime801 制作。
- 本项目包含了“凉宫 Tips 娘表情包”的下载链接。凉宫 Tips 娘人物形象原作者为饼干为“iVUmXcE”的肥肥(No.50666176),表情包由饼干为“9QybryU”的肥肥制作(No.51412777)。
- 虽然本项目的开源性质决定了任何人都可以自由地使用、修改和分发本项目的源代码,但原作者个人仍然会强烈反对和谴责尝试将本项目的源代码用于适配“阿苇岛匿名版”的行为。
- 加载过的缩略图缓存保存位置为
$XDG_CACHE_HOME/xdcmd/lru-cache.db,其中$XDG_CACHE_HOME的默认值为~/.cache。 - 如果你有兴趣的话,可以在 Wiki 中查看原作者自己整理的 X 岛匿名版 API 文档。
- 首页的 X 岛岛娘像素画由饼干为“QmMcrqS/oyf4Vgn/nhRG3Jo/F9YdaV2”的肥肥绘制(No.57410809)。原版像素画大小为 32px,由于终端大小有限,因此这里重绘了一个 16px 的版本。





