GUI
一样是在 obisidian
里使用 telegram
图床,之前写过一篇配置教程,大差不差。就不赘述。
cloudfare+telegram图床的使用 - chifan的blog
sudo pacman -S wl-clipboard # 安装 Wayland 剪贴板工具
yay -S picgo # 安装picgo
sudo 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 开机启动有一个图标弹出来,需要手动隐藏... 这个设计太蠢了。
评论区(暂无评论)