前言

linux下的picgo图形程序卡的一批,不得不使用命令行版本进行图片上传,但是使用marktext配置picgo上传时遇到不能上传剪切板图片的问题,所以这里做一个记录。

安装和配置picgo

安装picgo-core:

npm install picgo -g

选择使用的图床

picgo set uploader

根据提示依次输入配置即可。

在marktext中选择pico
进入【file】-【preferences】-【image】选择picgo。

配置完成后发现手动拖入图片可正常上传,但是无法上传剪切板图片,我使用剪切板的频率比较高,于是需要动手解决这一问题。

解决marktext无法上传剪切板图片的问题

参考这个解决方案,我们需要更改marktext源码然后重新编译。

根据作者给出的编译流程,首先我们的环境中需要满足以下条件:

  • Node.js >=v16 but <v17 and yarn
  • Python >=v3.6 for node-gyp
  • C++ compiler and development tools
  • Build is supported on Linux, macOS and Windows

依次检查后发现我的node.js版本为v18,所以需要更改其版本号。

使用nvm更改nodejs版本号

下载安装脚本

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

配置环境变量

source ~/.profile

下载nodejs v16版本

nvm install 16

下载完成后会自动将nodejs版本更改为v16

安装依赖

编译marktext需要以下依赖:

  • libX11 (with headers)
  • libxkbfile (with headers)
  • libsecret (with headers)
  • libfontconfig (with headers)

直接命令行安装即可:

sudo apt-get install libx11-dev libxkbfile-dev libsecret-1-dev libfontconfig-dev

重新打包

首先打开marktext源码,进入src/renderer/util/fileSystem.js将以下几行进行如下修改:

# 152行
const uploadByCommand = async (uploader, filepath, suffix = '') => {
# 157行
filepath = path.join(tmpdir(), +new Date() + suffix)
# 227行
uploadByCommand(currentUploader, reader.result, path.extname(image.name))

进入marktext文件夹。

安装依赖:

yarn install

漫长的等待结束后,进行打包:

yarn run build

又是漫长的等待,打包完成。

进入build文件夹安装appimage文件,打开marktext测试是否能够上传剪切板图片。

如图所示,成功上传到github图床。