今天偶然发现
从 Debian 10 Buster 开始,Live 映像包含了对最终用户友好的 Calamares 安装程序,代替著名的 Debian 安装程序。这是一个和发行版无关的安装程序框架。
然后随之发现:
Debian 11 stable 已经预装 fcitx5 了,tumbleweed 什么时候能在官方仓库里面找到 fcitx5 呢?
今天偶然发现
从 Debian 10 Buster 开始,Live 映像包含了对最终用户友好的 Calamares 安装程序,代替著名的 Debian 安装程序。这是一个和发行版无关的安装程序框架。
然后随之发现:
Debian 11 stable 已经预装 fcitx5 了,tumbleweed 什么时候能在官方仓库里面找到 fcitx5 呢?
debian11 不管是 DVD CD 安装,都默认包含预装 fcitx5。liveDVD 包含 fcitx4 和 5 两个版本自己选择。风滚草或者 Leap 现在都还是搭载 fcitx4
差在 fcitx5-migrator。
我想要的是无缝迁移,但是现在数据不共通…
我设想的是一个 no-gui 程序,判断有没有 .config/fcitx4,然后在安装包的时候就自动迁移了数据。这个 console app 不太好弄,主要是安装包时候是 root 权限,fcitx4 数据是通过 dbus 获取的…不知道怎么用 root 访问 user session bus…
这个直接提醒用户手动介入罢。对于未来 Leap 升级到 Fcitx5,用户肯定要手动介入的。风滚草就更不是问题了,滚动更新发行版就没有能保证用户当甩手掌柜的。(CentOS Stream 可能除外)
来自隔壁菊苣的建议:
建议在用户安装 Fcitx5 后的第一次启动时给一个提示,提醒用户迁移配置。no-gui 其实很危险,如果用户的配置文件有什么异常的地方,可能迁移就失败了,甚至导致原来的配置文件丢失。
这个消息是哪个发行版的?
@fusionfuture 我还以为是哪个发行版的成熟方案…notify-send 也是 dbus…你面临跟我一样的问题…而且你的还要多判断一次 fcitx5 是不是首次启动…而且你 notification 的 send 时间还要在系统完全启动进入桌面后…
软件判断是否首次启动不很正常吗,我的意思是让 fcitx 来完成这个工作,而不是在安装脚本里完成……
羰基也说了,软件包最好不要动~下面的东西,况且万一有人不想迁移,然后安装脚本强制迁移了……
本质就是在 fcitx 5 第一次启动的时候,
让安装脚本自动迁移确实存在很多困难和未知因素,但主动提醒让用户手动介入或许是更好的方法。
我也不会啊…而且老 K 应该不会那么做,这么做相当于给 fcitx5 挂了一个钩子,每次启动都检测一遍…
(那就下游自己打补丁,等大家都升级的差不多了再把补丁删掉
建议让 fcitx4 和 5 变成不能共存,互相冲突的两个包,把迁移问题甩给用户。
我记得已经是了
我觉得可以搞个 user service,默认启用,如果无需迁移或者用户做出了选择之后就自行禁用。
现在就是互斥的了,一旦安装 fcitx5,fcitx4 就会被卸载成只留下 /home/$USER/.config/fcitx4 配置文件夹的状态…于是不得不迁移数据。我提出的包管理器静默迁移大家还都不太同意…
刚才仿老 K 的 migrator 试着写了下 console migrator,直接用 QDbus createMethodCall 得不到 fcitx5 enabled addons(用 qdbus-qt5 —literal 能得到),不知道原因,摊手 老 K 用的 QDbus PendingCall 和 watcher,我也想那么写,需要写信号槽、Class 和用 moc。太烦了,我觉得我就算抄作业能抄出来,无非就是除了没有 GUI 别的都跟他的一样…
你说的那个发行版自己打补丁都打不了 X11 的话还好一点,有 xinit 机制,可以写一堆 shell scripts 把那个 notification 发出去。Wayland 不行,自动启动直接写到 /etc/environment 文件里,那个只支持 KEY=VAL 格式,VAL 还不可以是脚本(所以 Wayland 下面 ibus/fcitx 同时安装通过 priority 切换在发行版层面都做不到)。写 binary 倒不是不可以,这个 binary 需要接收程序输入,然后给没有 GUI 的 fcitx 处理,再处理返回,相当于除了 fcitx 的核心功能没有别的都要有,那不就是 fcitx 本身吗?我要能写出 fcitx 来我还至于在这里头疼这些问题吗
@lilydjwg 可是 fcitx5 本身不是 systemd user service 啊…openSUSE X11 还好,wayland 下面没有一个输入法是开机自动启动的(因为 /etc/environment 下只能有一个值),这个 service 就相当于一个多重 monitor,一边 monitor fcitx5 的状态,一边 monitor 桌面环境的状态,一边 monitor fcitx5 是不是首次启动,一边 monitor 是否已经是迁移完毕了却忘了禁用…
按照我个人的理解,我感觉可以写一个 Fcitx 5 的插件,不需要另外单独写一个程序。这个插件会新建一个配置文件记录是否首次启动,如果没有检测到配置文件的话就说明是首次启动,然后再做检测 Fcitx 4 配置等一系列操作。
现在来看局限在包管理器内想要做迁移基本是不可能了,只有修改上游代码了。