如何使ibus键盘布局的全局语言变更在AppImage中生效?——Inkscape AppImage键盘布局同步问题咨询
我太懂这种郁闷了——全局用IBus切换语言明明没问题,但打开Inkscape这类AppImage程序就没法跟着切换,这其实是AppImage的沙箱隔离特性搞的鬼,不是无解的,给你几个实用的解决办法:
用环境变量启动AppImage
AppImage默认会隔离部分系统环境变量,IBus的同步信号没传进去。你可以在终端里用这个命令启动Inkscape:IBUS_ENABLE_SYNC_MODE=1 ./Inkscape-x.y.z.AppImage这个环境变量会强制IBus开启同步模式,让AppImage程序能识别全局的语言切换状态。
修改桌面启动器文件
如果平时习惯双击图标启动,找到Inkscape的桌面文件(一般在~/.local/share/applications目录下,文件名类似inkscape.desktop),打开后把Exec那一行改成:Exec=env IBUS_ENABLE_SYNC_MODE=1 /绝对路径/到/你的/Inkscape.AppImage %U保存后再双击图标启动,语言切换就能同步生效了。
借助appimaged整合AppImage到系统
appimaged是一个能自动把AppImage程序整合到系统菜单的工具,它会自动处理环境变量的传递问题。安装后它会扫描你的AppImage文件,创建正确的桌面条目,大概率能解决IBus的同步问题。手动挂载IBus配置到沙箱
如果上面的方法都不行,试试把IBus的配置目录挂载到AppImage的沙箱里,用这个命令启动:./Inkscape.AppImage --bind ~/.config/ibus ~/.config/ibus这样AppImage就能读取到你的IBus全局配置,从而同步语言切换状态。
补充一句:AppImage的沙箱设计是为了保证程序的兼容性和独立性,默认会隔离一些系统级的输入框架,所以不是它“天生”不支持IBus同步,只是需要我们手动传递必要的环境变量或配置而已。
内容的提问来源于stack exchange,提问作者linguistan

