惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Latest news
Latest news
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
Hacker News: Ask HN
Hacker News: Ask HN
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
H
Hacker News: Front Page
L
LINUX DO - 热门话题
T
Tor Project blog
N
News | PayPal Newsroom
S
Secure Thoughts
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
AWS News Blog
AWS News Blog
Security Latest
Security Latest
MyScale Blog
MyScale Blog
Webroot Blog
Webroot Blog
Cyberwarzone
Cyberwarzone
Engineering at Meta
Engineering at Meta
腾讯CDC
T
Tailwind CSS Blog
SecWiki News
SecWiki News
博客园 - 司徒正美
Microsoft Azure Blog
Microsoft Azure Blog
P
Palo Alto Networks Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
GbyAI
GbyAI
C
Check Point Blog
博客园_首页
PCI Perspectives
PCI Perspectives
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
aimingoo的专栏
aimingoo的专栏
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家

依云's Blog

Wayfire支持不缩放Xwayland啦 - 依云's Blog 使用wayvnc远程访问无头Wayfire会话 - 依云's Blog pacfiles: 高速的 pacman -F 替代品 用 Android 手机当电脑的话筒 - 依云's Blog 使用 ffmpeg 对音频文件进行响度归一化 - 依云's Blog 使用 nftables 屏蔽大量 IP - 依云's Blog YubiKey 初体验 - 依云's Blog 我正在使用的火狐扩展(2024年版) - 依云's Blog 使用 PipeWire 实现自动应用均衡器 如果你发现你的 OOM Killer 在乱杀进程 使用 atuin 管理 shell 命令历史 btrfs 元数据满了怎么办 btrfs 翻车记 在 nspawn 里运行 docker Linux 上的字体配置与故障排除 新的 PaddleOCR 部署方案 使用 EasyEffects 调整 Bose 音箱的体验 让离线软件真正离线 我所讨厌的网页行为 tmux 状态栏优化 Google Chrome 中的字体设置 从 getmail6 到 offlineimap 微信消息通知的困扰 Qt 的字体渲染问题 Wayfire 迁移进展(四):不那么 high 的 DPI Wayfire 迁移进展(二):Xwayland HiDPI 以及 waybar Wayfire 迁移进展 不同情况下的图形效果 Wayland 初体验 纯 CSS 实现倒三角箭头 倾听蓝牙耳机的按键事件 使用 bwrap 沙盒 一次失败的 KDE 尝试 i3 的 scratchpad 处理逻辑 HiDPI 配置记录 让 QEMU 使用 SPICE 协议 Python 小版本升级是怎么 break 已有项目的 让 Arch Linux 系统和最新的镜像同步,从最快的镜像下载 tar 归档的权限问题 Linux 的环境变量怎么设 终端色彩总结 桥接无线网卡! Linux 的进程优先级与 nice 值 Intel GVT-g 初体验 自制大上 Paperlike HD「驱动」 Python 3.8 升级记录 Poker II 键盘调教记 红黑树到底是个什么树 gdb 不肯加载调试信息怎么办? NVIDIA PRIME 配置笔记 寻找最快的 GitHub IP 火狐远程调试火狐 fcitx 扩展:使用键盘粘贴选区(以及X选区原理科普) T470p 使用N卡运行 Xorg 系统在解析哪些域名呢? 正确的隐藏挂载点的方法 迁移系统到 SSD 使用 cgroups net_cls 来让 docker 走代理 使用 cgroups 限制指定进程的内存使用 在 Linux 下整理磁盘碎片 docker 里几个基本概念的简单类比 解析 zxinc IPv6 数据库 Ant Design 彩蛋事件之我见 通过 Cloudflare DNS 验证来申请 Let's Encrypt 证书 正确地上传至 PyPI 并展示文档 与 Android 进行 WLAN Direct 连接 获得高精度环形镜子一枚 每次修 Python 代码的 bug 的时候总会想念 Rust 永远不要 tail -f 管道 人生苦短,我用 skim XZ2C: 没有 root 的日子(也还过得去) 使用 iptables 透明代理 TCP 与 UDP Linux 下获取文件的创建时间 递归遍历目录:Python vs Go vs Rust 这个博客要死了 Windows 10 中配置网络共享 小米 Note 3 令人失望地方 小米 Note 3 入手体验 使用 VirtualBox 启动本地磁盘上的其它系统 大上 Paperlike HD 电子墨水屏开箱体验 加固 systemd 服务 嗨 Win10,这是我的浏览器 在 Linux 下设置录音笔的时间 我正在使用的火狐扩展 使用 Python 读取火狐的 cookies WireGuard: 简单好用的 VPN To hup or not to hup 书签搜索:藏在书签里的搜索引擎 使用 Prince 转换 HTML 文档给 Kindle 阅读 放弃 you-get,转投 youtube-dl 等连上互联网之后再来找我吧 改了一下 GTK 3 的默认主题 新的火狐,新的旅程 师者不师,学生不学 谁又用掉了我的磁盘空间?——魔改 ncdu 来对比文件树大小变化 NeWifi 3.2.1.5900 root swapview 更新 nodejs 子进程的正确用法(你应该忽视函数名) 电脑被盗事件 WordPress 被入侵有感
fcitx5 码表同步方案 - 依云's Blog
依云 · 2024-07-28 · via 依云's Blog

自从用上了 fcitx5-android,我便面临一个问题:我有多份 fcitx5 实例在运行,也导致我有多份码表文件。于是时常遇到一个词明明我添加到码表里了,但用的时候却发现它并不在的情况。一开始我只是以电脑上的为准,时不时把手机上的码表文件覆盖一下以保存同步。但情况随着我又买了台式电脑而更加严重起来,盲目地覆盖势必会丢失更多前不久刚添加的新词。是时候弄个新的方案了。

新方案的主旨就是「合并」:如果我在一个实例里添加了某词,那么在其它实例上也添加;删除同理。于是来到了 git 的模型——先指定一个共同的基准,合并的双方都与之比较,多起来的就添加到另一方、少了的就从另一方删除。至于基准的选择也很好决定:指定一个已知同步了的 btrfs 快照里的码表就好了,然后每隔一段时间更新到最近同步过的快照。

接下来就是实现了。fcitx5 的码表格式比较复杂,不过它有提供 libime_tabledict 命令,可以把码表数据转换成纯文本格式。至于对比之后的修改,倒不用再用这个命令转回来,因为我已经有 fcitx5-tabledict 这个编辑工具了。编辑好之后需要重新加载码表。以前我都是先退出 fcitx5,编辑完再启动的。现在 Wayfire 有 bug,重启输入法程序有概率导致它崩溃,查了很久都没能查明原因,就只好想办法绕过了。于是在群里问到了重新加载码表的 D-Bus 接口。Android 那边就用 adb 重启应用吧。

对比的程序也是用 Rust 写的,毕竟效率高、还不容易写出问题来。项目放 GitHub 上了,叫 fcitx5-dictsync。至于最上层完成所有操作的脚本,因为有太多具体环境相关的信息,用 zsh 脚本写就好啦。下边是我两台电脑同步的脚本:

#!/bin/zsh -e

base_snap=2024-07-28-11-auto

dir=$(mktemp -d -t dictsync.XXXXXX)

cleanup () {
  rm -rf $dir
}

trap cleanup EXIT INT TERM

cd $dir
scp lilyforest:.local/share/fcitx5/table/lilywb.'*'.dict .
fcitx5-dictsync /run/ssd/snapshots/home-lilydjwg/$base_snap/.local/share/fcitx5/table/lilywb.main.dict ~/.local/share/fcitx5/table/lilywb.main.dict lilywb.main.dict a.change b.change

if [[ -s a.change ]]; then
  fcitx5-tabledict < a.change
  dbus-send --print-reply=literal --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SetConfig string:fcitx://config/addon/table/reloaddict variant:string:""
fi

if [[ -s b.change ]]; then
  scp b.change lilyforest:tmpfs
  ssh -T lilyforest <<SH
fcitx5-tabledict < ~/tmpfs/b.change
dbus-send --print-reply=literal --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SetConfig string:fcitx://config/addon/table/reloaddict variant:string:""
rm ~/tmpfs/b.change
SH
fi

和 fcitx5-android 同步的脚本,长得挺像的。但因为 Android 上经常多出来一些奇奇怪怪的自动造的词,所以添加了编辑操作。听说新版 Android 已经不能访问应用自己的目录了,但我还没用上,所以我先不管啦。

#!/bin/zsh -e

base_snap=2024-07-28-11-auto

adb connect phone_xz2c:5555

dir=$(mktemp -d -t dictsync.XXXXXX)

cleanup () {
  rm -rf $dir
}

trap cleanup EXIT INT TERM

cd $dir
scp phone_xz2c:/sdcard/Android/data/org.fcitx.fcitx5.android/files/data/table/lilywb.'*'.dict .
fcitx5-dictsync /run/ssd/snapshots/home-lilydjwg/$base_snap/.local/share/fcitx5/table/lilywb.main.dict ~/.local/share/fcitx5/table/lilywb.main.dict lilywb.main.dict a.change b.change

if [[ -s a.change ]]; then
  vim a.change
  if [[ -s a.change ]]; then
    fcitx5-tabledict < a.change
    dbus-send --print-reply=literal --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SetConfig string:fcitx://config/addon/table/reloaddict variant:string:""
  fi
fi

if [[ -s b.change ]]; then
  fcitx5-tabledict lilywb.main.dict lilywb.user.dict < b.change
  scp lilywb.user.dict phone_xz2c:/sdcard/Android/data/org.fcitx.fcitx5.android/files/data/table/
  adb -s phone_xz2c:5555 shell am force-stop org.fcitx.fcitx5.android
fi

哦对了,Windows 上虽然还没有 fcitx5,但是托 WubiLex 的福,微软五笔的码表位置和格式都弄清楚了。我还没写生成 .lex 文件的程序啦。先在虚拟机里用 WubiLex 生成了一份自己的码表。虽然词的顺序有很大的问题,但反正我也很少用 Windows,先凑合用着吧,懒得处理了。码表文件要放到 C:\Windows\InputMethod\CHS\ChsWubi.lex。这个文件只有「TrustedInstaller」用户才有权限修改,不过用管理员权限就可以更改文件的所有者,然后就有权限给自己修改权限,就可以修改它了。Windows 真神奇啊。