标签 Ubuntu Unity 22.04 下的文章

上次的解决方案中我们安装了 xinput 来解决问题,但还是存在疑问:为什么新安装的系统中会丢失 xinput 组件?以及为什么没有 xinput 的情况下 gdm3 可以正常启动?
让我们做个实验,删除 xinput 然后写一个脚本来替代它:

$ sudo apt remove xinput
$ sudo vim /usr/bin/xinput
# !/bin/sh
exit 0;
$ sudo chmod +x /usr/bin/xinput
$ sudo systemctl restart lightdm

一切正常,进入桌面没有发现任何异常,可见 xinput 已经被废弃了,而 unity-settings-daemon 源码没有及时更新。

在上面的解决方案中,我们实现一个什么事情都不做,仅仅返回 0 的程序。其实在我们的系统中就有这样一个程序,完全不需要自己写一个,那就是 /usr/bin/true,让我们来试一下:

$ sudo rm /usr/bin/xinput
$ sudo ln -s true /usr/bin/xinput
$ sudo systemctl restart lightdm

完美替代。

Ubuntu Unity 22.04 用了一段时间,发现系统休眠时风扇声音特别大,走近一看黑屏了,还没等看清楚屏幕上写的是什么,屏幕又恢复成了登陆的界面,登录进入系统一切正常。
虽然说不影响使用,但风扇总这么转也不环保不是?听着风扇转的声音我有点心疼家里的电费和我的电脑。终于在一次黑屏时抓拍到了屏幕的画面。
休眠时黑屏.jpg
这回终于可以从容的辨认屏幕上的文字了,如下:

[42772.370565] Bluetooth: hci0: SSR or FM download time out
[42772.370573] PM: dpm_run_callback(): acpi_subsys_suspend+0x0/0x60 returns -110
[42772.370592] hci_uart_qca serial0-0: PM: failed to suspend: error -110
[42772.370600] PM: Some devices failed to suspend, or early wake event detected

虽然还是看不懂为什么,但好像和蓝牙有关,正好目前还用不到蓝牙的功能,关闭好了。
蓝牙关.jpg

完美解决。

Linux 下的输入法选择真的不多。以前 Linux 自带的输入法根本就不好用,直到搜狗拼音 Linux 版本的出现。

搜狗拼音 Linux 版本的确很好用,但问题也很明显,占内存太大了。使用时间一长,内存就都占满了。当时电脑是 8G 的内存,系统和其他应用也就占 3G 左右的内存,其余都被搜狗输入法占用了。经常是电脑用着用着,就变得非常卡,几乎不可操作,鼠标的移动都存在延迟。此时如果不想重启,唯一能做的就是 ALT+CTRL+F1-F6,启动 tty1-6 控制台,输入用户名,密码登陆,但也要看运气,经常是用户名输入完了,控制台光标闪烁一阵,重启了,再一次重新输入用户名,基本上 10 分钟一般都能登陆了,然后找到搜狗输入法的进程,杀掉,电脑又恢复正常了。为避免电脑卡到无法操作的地步,一般来说有两个办法:
1、打开系统监视器,随时查看内存占用,一旦情况不好就直接杀掉搜狗进程;
2、开机时就登陆一个 tty1-6 控制台,这样可以在系统卡的时候快速进入到控制台,而不用等 10 分钟。

去年,给电脑装 Ubuntu Unity 21.04 时,找到了百度输入法 Linux 版,但官网上只明确表示支持到 Ubuntu 19.10,不过在 21.04 上也可以正常安装,只是电脑重启之后,大概十次仅有一次可以正常使用,体验和搜狗差不多;其余的几次是无法进行输入操作的,输入法候选词列表有时不显示,有时是显示其它输入法的候选词列表,但候选词列表却是乱码。

最近安装了 Ubuntu Unity 22.04 之后,发现系统自带的输入法 IBus 智能拼音 1.12.1 也已经很好用了。
候选词列表.png

关于,版权处有点小失误。
IBus 智能拼音 1.12.1.jpg

对于拼音输入法来说,模糊音是必不可少的功能。
IBus 智能拼音2.jpg

就综合体验来说,比起上面的搜狗和百度好很多了。
当然也还有瑕疵,就是输入法候选词列表的位置经常跑到屏幕外面去,可能是高清屏还没有作适配。

一年前,给新电脑安装了 Ubuntu Unity 21.04,近期,突然发现 apt install 总是报服务器连接不上的错误,开始还没太注意,后来才想到是系统过了支持期,正好 Ubuntu Unity 22.04 也发布了。那就装新系统吧。
自从 Unity 桌面失去官方支持以来,就成了小众的系统,安装镜像 iso 下载链接也只此一家别无分号,平时下载速度只能达到约 50k/s,还经常断,好在早上的时候下载速度比较快,3.6G 的镜像 7:07开始下载,7:57就下载完成。
将镜像安装到 U 盘,启动,进入到临时系统,诶!好像有哪里不对,怎么触摸板轻触无效?网上找了好久,都没有答案,也不知道该如何设置,好在触摸板重按还是能用的。
安装完,重启,进入 Ubuntu Unity 22.04,心情还有点小激动,看着屏幕上的日志消失,屏幕变黑,鼠标出现,等了好久,仍然只有一个鼠标。激动的心情瞬间跌落到谷底。尝试了网上的各种办法,甚至安装了 N 卡的驱动,但都无济于事。切换启动管理器为 gdm3,可以顺利登陆系统,但进入的是 Gnome 桌面,而不是我要用的 Unity 桌面,此方案不通。
于是硬着头皮去看日志。最后在 /var/log/lightdm/seat0-greeter.log 看到如下的记录:

(unity-settings-daemon:1247): xrandr-plugin-ERROR **: 17:58:37.966: Touchscreen mapping failed

虽然不清楚这条记录的含义是什么,但至少可以用来定位程序的代码,于是找到 unity-settings-daemon 进程的源代码,并在代码 plugins/xrandr/gsd-xrandr-manager.c 中找到字符串 “Touchscreen mapping failed”

$ grep "Touchscreen mapping failed" * -RIn
plugins/xrandr/gsd-xrandr-manager.c:2330:  g_error ("Touchscreen mapping failed");

打开文件 plugins/xrandr/gsd-xrandr-manager.c ,找到上文:

success = g_spawn_async (NULL,
            command,
            NULL,
            G_SPAWN_DO_NOT_REAP_CHILD,
            NULL,
            NULL,
            &(mapping_data->mapping_pid),
            error);

发现是调用一个 shell 命令失败,再向上找,发现:

command_str = g_strdup_printf ("/usr/bin/xinput --map-to-output %d %s",
            priv->main_touchscreen_id, name);

现在我们知道发生错误的命令是 /usr/bin/xinput,之前没了解过这个命令,先看看它是做什么用的

$ xinput
Command 'xinput' not found, but can be installed with:
sudo apt install xinput

原来 xinput 没有安装,难怪会报错,安装好 xinput 重启 lightdm

$ sudo apt install xinput
$ sudo systemctl restart lightdm

终于可以进入 Unity 桌面了。
Ubuntu Unity 22.04 桌面

这时如果你没有更新系统,那么触摸板仍然不可以轻点,只需更新系统即可:

$ sudo apt update && sudo apt upgrade
$ reboot

重启之后会发现,触摸板可以用了。打开触摸板设置,可以看到有了 轻触表示点击 的选项,并且选中。
触摸板设置
现在,可以正常登陆了,触摸板也正常了,系统安装告一段落了。