GUI
一样是在 obisidian 里使用 telegram 图床,之前写过一篇配置教程,大差不差。就不赘述。
cloudfare+telegram图床的使用 - chifan的blog
sudo pacman -S wl-clipboard # 安装 Wayland 剪贴板工具yay -S picgo # 安装picgosudo pacman -S nodejs npm # 安装Node.js和npm,否则插件无法导入配置好后如果能手动添加图片上传,obisidian 使用 image auto upload 插件无法上传,那就是无法读取剪切板内的照片,要在软件设置里面,打开 调用内置剪切板 这个功能。
由于用了 electron,后台内存占用达到了夸张的 800m,考虑使用下 CLI。
CLI
sudo npm install picgo -g # 安装picgo—cli picgo install web-uploader-byzh # 安装使用cf图床需要的插件picgo set uploader # 设置插件,选择web-uploader设置好了后,发现 obisidian 的插件 auto upload 无法调用,原因是 CLI 并不是一个服务,没有运行在本机的某个端口。
如果只是单独使用 CLI 的话,需要我在终端输入 picgo upload,然后复制一串返回图片的 URL,在 obisidian 粘贴,最后修改成 markdown 格式,这太不优雅了。
想到搞个脚本,绑定一个快捷键。
当按下快捷键的时候,调用 picgo upload 这个命令上传剪切板的照片,然后通过管道命令得到 picgo upload 的包括 URL 的输出,然后将其转化为 markdown 格式,保存到剪切板。
但还未结束,有时候因为网络问题,这个过程并不会马上完成。如果需要我一直点开剪切板看看有没有得到输出,或者一直按粘贴键还是不优雅。
这需要一个反馈,过程已完成,然后我粘贴。或者是完成后自动帮我粘贴。
一开始我是想让脚本自动帮我粘贴的,但是因为我是 Wayland,由于安全性考虑,Wayland不允许任何程序(wtype)以编程方式模拟键盘输入,这条路行不通。
干脆让脚本运行结束的时候来一个通知吧,通知用到了 linotify 这个工具。
sudo pacman -S libnotify # 安装linotify#!/bin/bash
# 确保脚本能在正确的环境下找到所有命令
export PATH=/usr/bin:$PATH
# 创建临时文件
TMP_FILE="/tmp/picgo-clipboard-upload-$$.png"
wl-paste > "$TMP_FILE"
# 检查文件是否创建成功
if [ -s "$TMP_FILE" ]; then
# 运行 picgo upload 并提取最后一行(URL)
URL=$(picgo upload "$TMP_FILE" | tail -n 1)
EXIT_CODE=${PIPESTATUS[0]}
rm "$TMP_FILE"
# 检查是否成功
if [ $EXIT_CODE -eq 0 ] && [[ "$URL" == http* ]]; then
MARKDOWN_LINK=""
echo -n "$MARKDOWN_LINK" | wl-copy
# -u normal: 设置通知级别为“普通”
# "PicGo 上传成功": 通知的标题
# "Markdown 链接已复制到剪贴板": 通知的内容
notify-send -u normal "PicGo 上传成功" "Markdown 链接已复制到剪贴板"
# --------------------------------
else
# --- 失败时也发送通知 ---
notify-send -u critical "PicGo 上传失败" "未能从 PicGo 获取有效 URL"
# ------------------------------
exit 1
fi
else
# 剪贴板没图片时也发个通知
notify-send -u low "PicGo 操作取消" "剪贴板中没有图片"
exit 1
fi将 . sh 的绝对路径绑上一个快捷键 A。使用前先截图,然后使用快捷键 A 上传,通知出来(大概一秒钟),就可以粘贴了。
虽然不比 image auto upload 这个插件优雅,回报是我不用用庞大的 GUI。
而且 GUI 开机启动有一个图标弹出来,需要手动隐藏... 这个设计太蠢了。