这是什么
一个 Noctalia Shell 状态栏插件(blog-publisher):状态栏多一个 ☁️ 图标,点开是博客发布面板——新建文章、本地预览、一键推送,全流程不碰终端。写完正文点一下,1 分钟后博客上线。
源码在博客仓库的 noctalia-blog-publisher/ 目录,下面是安装和使用教程。
功能一览
| 面板功能 | 说明 |
|---|---|
| ✚ 新建文章 | 展开输入框填标题,回车即生成 front matter 模板并用 Typora 打开 |
| ✏️ 编辑最近文章 / 文章列表 | 点击直接打开对应 md 文件 |
| 👁 本地预览 | 启动 hugo server,浏览器访问 localhost:1313 |
| 🚀 一键发布 | git commit + push,GitHub Actions 自动部署上线 |
| 📦 发布到 Pages | 本地 hugo 构建,直接推 GitHub Pages 仓库(备用通道) |
| 状态显示 | 顶部实时显示未提交改动数、待推送提交数;底部显示每次操作结果 |
安装步骤
1. 建一个本地插件源(推荐做法)
Noctalia 的插件列表读的是每个源仓库的 catalog.toml,社区源是官方 git 仓库、改不得。给自己的插件建一个独立的本地 path 源最干净,plugins update 也不会冲掉:
mkdir -p ~/.local/share/noctalia-local-plugins/blog-publisher
cp -r noctalia-blog-publisher/* ~/.local/share/noctalia-local-plugins/blog-publisher/
2. 写这个源的 catalog.toml
~/.local/share/noctalia-local-plugins/catalog.toml:
[[plugin]]
id = "dsh/blog-publisher"
name = "Blog Publisher"
version = "0.1.0"
updated_at = 0
added_at = 0
author = "dsh"
license = "MIT"
icon = "cloud-upload"
description = "Hugo blog publisher: new post, preview, one-click deploy to GitHub Pages."
deprecated = false
plugin_api = 24
tags = ["utility", "bar", "panel"]
3. 注册并启用
noctalia msg plugins source add local-plugins path ~/.local/share/noctalia-local-plugins
noctalia msg plugins enable dsh/blog-publisher
4. 添加到状态栏
设置 → 状态栏 → 小组件,把 Blog Publisher 加到任意区域。也可以直接编辑 ~/.local/state/noctalia/settings.toml:
[bar.default]的start(或end)列表里加入"blog_widget"- 文件末尾追加:
[widget.blog_widget]
type = "dsh/blog-publisher:widget"
5. 重启 Noctalia
pkill -x noctalia
状态栏出现 ☁️ 即成功。
配置
插件设置里可改两个路径(默认值适合标准布局):
| 设置项 | 默认值 | 说明 |
|---|---|---|
| blog_dir | ~/博客/hugo | Hugo 源仓库路径 |
| pages_dir | ~/博客/1143520.github.io | Pages 发布仓库路径 |
依赖
hugo(extended 版,建议与 GitHub Actions 部署用的版本一致)git,且源仓库已配置好推送权限- 编辑器:默认调用
typora <文件>;没有 Typora 的话改panel.luau里的启动命令换vim/kate等
附:Typora Linux 白嫖激活(一行补丁,离线永久)
Typora 官方三天试用后要求买断($14.99)。Linux 下有个比各种激活工具都干净的方案——只改一行判断,不需要联网续期、不需要装任何后台程序:
步骤
官网下载 deb 安装:
sudo dpkg -i typora_*_amd64.deb(或用 apt 装)找到许可证判断文件(文件名里的 hash 随版本变,用 find 定位):
find /usr/share/typora -name "LicenseIndex*.js"
# 1.14.9 是 /usr/share/typora/resources/page-dist/static/js/LicenseIndex.180dd4c7.5b58fa97.js
- 备份后把激活判断改死为真:
F=$(find /usr/share/typora -name "LicenseIndex*.js")
sudo cp "$F" "$F.bak"
sudo sed -i 's/hasActivated="true"==e.hasActivated/hasActivated="true"=="true"/' "$F"
- 打开 Typora —— 已激活,写正文即可。
原理
Typora 前端判断「是否已激活」的逻辑被改成恒真,许可证校验直接通过。因为判断永远为真,官方「许可证 12 小时过期、联网续期」的机制根本不会被走到——所以断网也永久有效,没有任何过期弹窗。
注意
- 升级 Typora 后新文件会覆盖补丁,重跑第 3 步的 sed 即可
.bak备份留在同目录,想还原官方状态sudo mv 原文件.bak 原文件- 本教程仅用于学习研究,条件允许请支持正版
日常使用
写一篇博客的完整动作:
- 点状态栏 ☁️ → 「新建文章」→ 填标题 → 回车(Typora 自动弹出)
- 用 Typora 写正文(所见即所得),保存关闭
- 回到面板点「🚀 一键发布」
- 一两分钟后刷新博客,新文章已上线
已知说明
- 面板输入框样式由主题统管,如你的主题下观感不佳,可在
panel.luau里自行调整 - 「一键发布」用的是
git commit -m 'update <时间戳>',需要自定义提交信息的话改panel.luau里对应的命令 - 插件用 Luau 写,
noctalia plugins lint可做静态检查;Noctalia 大版本更新后如面板异常,优先检查plugin_api版本号
