Karmenzind / kd

跨平台命令行词典 a command-line dictionary supported Linux/Win/Mac
MIT License
44 stars 2 forks source link
dict dictionary translate wudao youdao

:stars: a crystal clear command-line dictionary, written in Go, supported Linux/Win/Mac

Go语言实现的简洁好用的命令行词典,跨平台、易于安装、持续维护更新

本项目受无道词典启发,在复刻Wudao核心功能的基础上增加了更丰富的特性。我是Wudao的多年用户,日常工作生活重度依赖随手wd abandon,但可惜这个项目已经很久未更新,且存在一些可以优化的地方,所以忍不住重写了一个,选择Go是为了方便地解决安装和跨平台问题。

TOC

:ballot_box_with_check: 特性

更多功能正在开发中 👽

🚀 安装和升级

Linux/MacOS

在终端中执行:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Karmenzind/kd/master/scripts/install.sh)"

如果raw.githubusercontent.com被屏蔽,改用git clone https://github.com/Karmenzind/kd && bash kd/install.sh

或者按照平台/架构复制命令(🖱️ 点击展开)
```bash
# Linux amd64 (x86-64)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_linux_amd64 && chmod +x /usr/local/bin/kd'
# MacOS arm64 (即M1/M2/M3芯片的架构)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_macos_arm64 && chmod +x /usr/local/bin/kd'
# MacOS amd64 (x86-64)
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_macos_arm64 && chmod +x /usr/local/bin/kd'
# Linux arm64
sudo sh -c 'curl --create-dirs -L -o /usr/local/bin/kd https://github.com/Karmenzind/kd/releases/latest/download/kd_linux_arm64 && chmod +x /usr/local/bin/kd'
```

ArchLinux

ArchLinux推荐直接通过AUR安装/更新,例如:yay -S kd

Windows

用非管理员模式的Powershell执行:

# 下载文件放入C:\bin,这里是amd64(x86-64)架构
Invoke-WebRequest -uri 'https://github.com/Karmenzind/kd/releases/latest/download/kd_windows_amd64.exe' -OutFile ( New-Item -Path "C:\bin\kd.exe" -Force )
# 将C:\bin加入PATH环境变量
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", "User")

或手动下载文件,然后通过“计算机->属性->修改环境变量”修改PATH

卸载

🖱️ 点击展开
1. 删除kd可执行文件(Linux/Mac:/usr/local/bin/kd,Win:C:\bin\kd.exe)
2. 删除配置文件和缓存目录
    - Linux: `rm -rfv ~/.config/kd.toml ~/.cache/kdcache`
    - MacOS: `rm -rfv ~/.config/kd.toml ~/Library/Caches/kdcache`
    - Win: `rm ~\kd.toml ~\kdcache`

如果通过AUR安装,则直接通过AUR管理工具卸载,例如:`yay -Rs kd`

:gear: 用法和配置

直接执行kd <text>查单词、词组(如kd abandonkd leave me alone

完整用法如下:

❯ kd --help
NAME:
   kd - A crystal clean command-line dictionary.

USAGE:
   kd [global options] [arguments...]

GLOBAL OPTIONS:
   --nocache, -n                        don't use cached result 不使用本地词库,查询网络结果
   --theme value, -T value              choose the color theme for current query 选择颜色主题,仅当前查询生效 (default: temp)
   --server                             start server foreground 在前台启动服务端
   --daemon                             ensure/start the daemon process 启动守护进程
   --update                             check and update kd client 更新kd的可执行文件
   --generate-config                    generate config sample 生成配置文件,默认地址为~/.config/kd.toml
   --edit-config                        edit configuration file with the default editor 用默认编辑器打开配置文件
   --help, -h                           show help
   --version, -v                        print the version

📁 配置文件地址:Linux/MacOS为~/.config/kd.toml,Windows为~/kd.toml

以下为可配置项和默认值,可执行kd --generate-config生成默认配置文件,执行kd --edit-config直接用编辑器打开配置文件

# 是否使用分页器,MacOS和Debian系上默认false,请自行开启
paging = true
# 分页器命令,例如:less -RF / bat / (不推荐) more -e
# 注意:less命令如果不加上-R,在某些系统/发行版上会产生颜色乱码问题
pager_command = "less -RF"

# 结果中只显示英文(英译、英文例句等)
english_only = false

# 颜色主题,支持:temp/wudao
theme = "temp"

# 格式:http://<IP或域名>:<端口>。设置为空时,系统代理依然会生效
# 如果需要频繁查询长句,可设置此项,否则本地IP有一定概率会被有道服务器暂时屏蔽
http_proxy = ""

# 输出内容前自动清空终端,适合强迫症
# 是否开启频率提醒:本月第X次查询xxx
freq_alert = false

# (开发中)安装了emoji字体的可以输出一些emoji字符,just for fun
enable_emoji = true

# 日志配置
[logging]
  # 开启日志记录
  enable = false
  # 默认值:Linux/MacOS为/tmp/kd_<username>.log,windows为%TMPDIR%/kd_<username>.log
  path = ""
  # 日志级别,支持:DEBUG/INFO/WARN/PANIC/FATAL
  level = "WARN"

🎈 提升体验技巧

使用tmux的悬浮窗口显示结果

如果你在使用tmux,借助悬浮窗口(popup)能让查询体验更舒适友好 🍭

在bash/zsh的配置文件中加入:

if [[ -n $TMUX ]]; then
    __kdwithtmuxpopup() {
        tmux display-popup "kd $@"
    }
    alias kd=__kdwithtmuxpopup
fi

通过systemd管理daemon进程

为避免每次开机后第一次查询都要等待守护进程启动,可以创建service文件/usr/lib/systemd/user/kd-server.service,然后执行systemctl enable --user kd-server,daemon进程将随系统自动启动

内容参考kd-server.service

🎨 颜色主题

目前支持以下配色,后续会增加更多。如果不希望输出颜色,设置环境变量NO_COLOR=1即可

❓ 常见问题和解决方法

设置less为Pager后显示异常

目前发现MacOS/Debian Bookworm设置less为分页器后,颜色渲染会失败,尚未解决。如果其他平台遇到此问题,请提交issue

解决方案:

MacOS弹出“无法打开”提醒

如果弹出“无法打开,因为Apple无法检查是否包含恶意软件”的提示,请执行:

sudo xattr -r -d com.apple.quarantine <kd文件所在路径>

📝 进度和计划

近期

长期