/pot-desktop

🌈一个跨平台的划词翻译软件 | A cross-platform software for text translation.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Pot (派了个萌的翻译器)

🌈 一个跨平台的划词翻译软件 (QQ 频道)

License Tauri JavaScript Rust Windows MacOS Linux



中文 | English

目录

使用说明

划词翻译 输入翻译 外部调用
鼠标选中需要翻译的文本,按下设置的划词翻译快捷键即可 按下输入翻译快捷键呼出翻译窗口,输入待翻译文本后按下 回车 翻译 通过被其他软件调用实现更加方便高效的功能, 详见 外部调用
剪切板监听模式 截图 OCR 截图翻译
在任意翻译面板上点击左上角图标启动剪切板监听默认,复制文字即可完成翻译 按下截图 OCR 快捷键后框选需要识别区域即可完成识别 按下截图翻译快捷键后框选需要识别区域即可完成翻译

特色功能

支持接口

翻译

文字识别

语音合成

生词本

插件系统

软件内置接口数量有限,但是您可以通过插件系统来扩展软件的功能。

插件安装

你可以在 pot-app-plugin-list 仓库查找你需要的插件,然后前往插件仓库下载插件。

pot 插件的扩展名为 .potext, 下载得到.potext文件之后, 在 偏好设置-服务设置-添加外部插件-安装外部插件 选择对应的 .potext 即可安装成功,添加到服务列表中即可像内置服务一样正常使用了。

插件开发

pot-app-plugin-list 仓库中的 模板 章节提供了各种插件的开发模板,具体的开发文档请查看对应的模板仓库。

安装指南

Windows

通过 Winget 安装

winget install Pylogmon.pot

手动安装

  1. Release 页面下载最新 exe 安装包。
  2. 双击安装包进行安装。

MacOS

通过 Brew 安装

  1. 添加我们的 tap:
brew tap pot-app/homebrew-tap
  1. 安装 pot:
brew install --cask pot
  1. 更新 pot
brew upgrade --cask pot

手动安装

  1. Release 页面下载最新的 dmg 安装包。(如果您使用的是 M1 芯片,请下载名为pot_{version}_aarch64.dmg的安装包,否则请下载名为pot_{version}_x64.dmg的安装包)
  2. 双击下载的文件后将 pot 拖入 Applications 文件夹即可完成安装。

故障排除

  • 由于开发者无法验证,“pot”无法打开。

    点击 取消 按钮,然后去 设置 -> 隐私与安全性 页面,点击 仍要打开 按钮,然后在弹出窗口里点击 打开 按钮即可,以后打开 pot 就再也不会有任何弹窗告警了

    如果在 隐私与安全性 中找不到以上选项,或启动时提示文件损坏。打开 Terminal.app,并输入以下命令,然后重启 pot 即可:

    sudo xattr -d com.apple.quarantine /Applications/pot.app
  • 如果每次打开时都遇到辅助功能权限提示,或者无法进行划词翻译,请前往设置 -> 隐私与安全 -> 辅助功能,移除 “pot”,并重新添加 “pot”。

Linux

Debian/Ubuntu

  1. Release 页面下载最新的对应架构的 deb 安装包。

  2. 使用 apt-get 进行安装

    sudo apt-get install ./pot_{version}_amd64.deb

Arch/Manjaro

  1. AUR 查看

使用 AUR helper 安装:

yay -S pot-translation # 或 pot-translation-bin

# paru -S pot-translation # 或 pot-translation-bin
  1. 如果你使用 archlinuxcn 源,可以直接使用 pacman 安装
sudo pacman -S pot-translation

外部调用

Pot 提供了完整的 HTTP 接口,以便可以被其他软件调用。您可以通过向 127.0.0.1:port 发送 HTTP 请求来调用 pot,其中的port是 pot 监听的端口号,默认为60828,可以在软件设置中进行更改。

API 文档:

POST "/" => 翻译指定文本(body为需要翻译的文本),
GET "/config" => 打开设置,
GET "/translate" => 翻译指定文本(同"/"),
GET "/selection_translate" => 划词翻译,
GET "/input_translate" => 输入翻译,
GET "/ocr_recognize" => 截图OCR,
GET "/ocr_translate" => 截图翻译,
GET "/ocr_recognize?screenshot=false" => 截图OCR(不使用软件内截图),
GET "/ocr_translate?screenshot=false" => 截图翻译(不使用软件内截图),
GET "/ocr_recognize?screenshot=true" => 截图OCR,
GET "/ocr_translate?screenshot=true" => 截图翻译,

示例:

  • 调用划词翻译:

    如果想要调用 pot 划词翻译,只需向127.0.0.1:port发送请求即可。

    例如通过 curl 发送请求:

    curl "127.0.0.1:60828/selection_translate"

不使用软件内截图

这一功能可以让您在不使用软件内截图的情况下调用截图 OCR/截图翻译功能,这样您就可以使用您喜欢的截图工具来截图了,也可以解决在某些平台下 pot 自带的截图无法使用的问题。

调用流程

  1. 使用其他截图工具截图
  2. 将截图保存在 $CACHE/com.pot-app.desktop/pot_screenshot_cut.png
  3. 127.0.0.1:port/ocr_recognize?screenshot=false发送请求即可调用成功

$CACHE为系统缓存目录,例如在 Windows 上为C:\Users\{用户名}\AppData\Local\com.pot-app.desktop\pot_screenshot_cut.png

示例

在 Linux 下调用 Flameshot 进行截图 OCR:

rm ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && flameshot gui -s -p ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_recognize?screenshot=false"

现有用法 (快捷划词翻译)

SnipDo (Windows)

  1. Microsoft Store 下载安装 SnipDo。
  2. Release 下载 pot 的 SnipDo 扩展 (pot.pbar)
  3. 双击下载的扩展文件完成安装。
  4. 选中文字,可以看到弹出的 SnipDo 工具条,点击翻译按钮即可翻译。

PopClip (MacOS)

  1. App Store 下载安装 PopClip
  2. Release 下载 pot 的 PopClip 扩展 (pot.popclipextz)
  3. 双击下载的扩展文件完成安装。
  4. 在 PopClip 的扩展中启用 pot 扩展,选中文本即可点击翻译。

Starry (Linux)

Starry 目前仍处于开发阶段,因此您只能手动编译它。

Github: ccslykx/Starry

Wayland 支持

由于各大发行版对于 Wayland 的支持程度不同,所以 pot 本身没法做到特别完美的支持,这里可以提供一些常见问题的解决方案,通过合理的设置之后,pot 也可以在 Wayland 下完美运行。

快捷键无法使用

由于 Tauri 的快捷键方案并没有支持 Wayland,所以 pot 应用内的快捷键设置在 Wayland 下无法使用。 您可以设置系统快捷用 curl 发送请求来触发 pot,详见外部调用

截图无法使用

在一些纯 Wayland 桌面环境/窗口管理器(如 Hyprland)上,pot 内置的截图无法使用,这时可以通过使用其他截图工具代替,详见 不使用软件内截图

下面给出在 Hyprland 下的配置示例(通过 grim 和 slurp 实现截图):

bind = ALT, X, exec, grim -g "$(slurp)" ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_recognize?screenshot=false"
bind = ALT, C, exec, grim -g "$(slurp)" ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_translate?screenshot=false"

其他桌面环境/窗口管理器也是类似的操作

划词翻译窗口跟随鼠标位置

由于目前 pot 在 Wayland 下还无法获取到正确的鼠标坐标,所以内部的实现无法工作。 对于某些桌面环境/窗口管理器,可以通过设置窗口规则来实现窗口跟随鼠标位置,这里以 Hyprland 为例:

windowrulev2 = float, class:(pot), title:(Translator|OCR|PopClip|Screenshot Translate) # Translation window floating
windowrulev2 = move cursor 0 0, class:(pot), title:(Translator|PopClip|Screenshot Translate) # Translation window follows the mouse position.

贡献者

手动编译

环境要求

Node.js >= 18.0.0

pnpm >= 8.5.0

Rust >= 1.69.0

开始编译

  1. Clone 仓库

    git clone https://github.com/pot-app/pot-desktop.git
  2. 安装依赖

    cd pot-desktop
    pnpm install
  3. 安装依赖(仅 Linux 需要)

sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf libxdo-dev libxcb1 libxrandr2 libdbus-1-3
  1. 开发调试

    pnpm tauri dev # Run the app in development mode
  2. 打包构建

    pnpm tauri build # Build into installation package

感谢