日用Linux挑战 第2篇 Wayland

总字数:3352字,预计阅读时间 05分 35秒。

使用Linux6个月,我成功戒掉了原神。

使用Wayland开启桌面环境

在上一篇文章我尝试在kde桌面环境下使用wayland显示协议,当时的尝试虽然失败了,却为我这次迁移到wayland打下了良好的基础,例如我将输入法从迁移到fcitx5

最近恰好被平铺式的窗口管理器种草,又在B站上看见一个动画绚丽的wayland合成器——Hyprland,当即脑袋一热,就把kde干掉,装上了hyprland

img

安装hyprland的过程非常舒适,hyprland被打包为一个单独的二进制文件,使用pacman安装之后直接在tty下执行:

Hyprland

就可以打开一个干净到极致的桌面环境——没有图标,状态栏等等传统桌面应该有的一切,只有一张简单的壁纸。然后我就发现我完全不会使用这个桌面,虽然鼠标还是如预期一般出现了,但是没有任何用处,hyprland的一切都需要使用键盘启动。在对着hyprland8个大字发愣5秒钟之后,我便屁滚尿流的滚回了tty。虽然文档中说明了在默认的配置文件中使用win+q的组合键打开终端,但是默认的终端应用程序是kitty,然而这个冷门的终端程序在我的电脑上自然是没有的(虽然我在使用过后觉得这个中断程序秒杀我之前用过的全部终端)。看到简陋但是熟悉的tty仿佛见到了亲人,我一波sudo pacman -S kitty,一边看着进度条飞涨一边感谢archlinux。迅速按下ctrl+shift+F1,回到忠诚的壁纸画面,不过这次,轻轻按下win+q,一个终端窗口如宿命一般出现!

上面因为作者刚考完期末神智有点不正常,还请根本不存在的读者海涵。

Linux下拥有了终端就好办了。首先装上App Launcher——没有这玩意儿我似乎就只能从终端里启动应用程序,显然是十二分的不方便。在一番比较之后,我在官方文档中选择了fuzzel,看上去挺好看的。

本来这里想截一张fuzzel的图,但是似乎他们的主页挂掉了(

安装了App Launcher之后,至少可以打开浏览器,愉快的复制粘贴安装了。剩下的安装过程就按下不表,基本上按照官方文档的Useful Utilities进行,在中间选择自己需要的软件的进行安装。然后便是根据配置文件的说明对于外观和使用快捷键进行调整,以及配置壁纸软件hyprpaper和状态栏组件waybar。具体的配置文件我都放在了自建的git服务器上,可以在这里查看。

Wayland软件兼容性

跳槽到了新的wayland显示协议,最关心的自然是各种软件是否能在wayland下正常的工作。

首先是各种浏览器。在我安装的这段时间里(2023年5月),microsoft edge浏览器是基本不能在wayland模式下工作,一进入全屏模式就会自动崩溃退出,这对于日常电脑刷视频的我来说简直不能忍受。幸好,firefox浏览器在wayland模式下工作正常,不愧是和Linux关系最好的浏览器。再通过一系列的测试,chromium系列的浏览器在wayland下的工作状态都不太好,如果需要在wayland环境下使用chromium系列的浏览器,建议还是运行在xwayland模式下。

然后是各种开发工具。我日常使用的jetbrainsIDE和VSCode都工作正常,虽然是工作在xwayland模式下。

各种在学习过程中遇到的工具软件:基本上都工作运行良好。当然因为没有设置缩放的问题而导致字体都很小。因为如果在配置文件中设置缩放之后会导致字体发虚。下面的截图就是我将我的2K显示屏设置为150%缩放的效果,虽然在截图中的效果不明显。目前在常用软件中唯一让我十分不满意的软件是wps,使用体验完全无法和offices相提并论,目前我正在研究使用wine运行offices,如果成功了就再水一篇博客庆祝一下。

image-20230702205919301

最新的进展是使用wine没法安装学校提供的office 2021,同时我又不愿意使用古老的office版本,但是我发现一个称作onlyoffice的第三方软件蛮好用的,等我试用一段时间再说。

但是onlyoffice的最新版本和wlroots合成器似乎有点八字不合,我现在是回退到7.2.1版本正常使用,详情见这个issue

最后就是各种游戏的兼容性了。原神完蛋了。虽然这和wayland关系并不是很大,米哈游自己也罪大恶极,但是我换成wayland之后的游戏流畅度下降明显,只能眨眼补帧,在硬顶了几周之后我绷不住退游了。目前还不知道是由于原神本身一坨大便的优化还是wayland导致的性能下降。而我在steam上的各种游戏工作也不是很正常,尤其是各种需要全屏的游戏,比如CS:GO,可能是由于我使用外接屏幕的问题。但是GalGame类的游戏就工作正常。

总的来说,这次切换到hyprland的使用体验还是非常不错的,平铺式窗口管理器也是提高生产力的利器。

Hyprland仍不完善

有得必有失,hyprland乃至于wayland目前作为一个桌面环境最大的问题就是相关生态仍不完善。这里的生态甚至都不是指对于wayland支持之类的东西,而是像系统设置、锁屏界面、状态栏之类的东西。虽然这样说可能有点对于hyprland的要求过高了,但是现在这种东拼西凑的构成一个桌面环境给人的体验不是很好,譬如使用waybar作为状态栏,swaylock作为锁屏界面,kwallet作为密码存储器。其中不少软件还都处于一个十分简陋的阶段,例如swaylock仅显示一张图片作为界面,甚至连个输入密码的界面都没有。

hyprland对于弹出窗口的支持不是很好,尽管这就是平铺式窗口管理器的设计思想。但是在像idea之类的编程工具中,弹出窗口是非常常用的功能,不能正常的显示弹出窗口或者显示的位置不对会导致严重的生产力下降。经过测试,当只使用一个显示屏是,可以正常的进行弹出窗口的显示,但是当链接多个显示器时,弹出窗口的位置就变得奇怪起来。

amdgpu导致的相关问题

从我在这台电脑上安装Linux之后,便一直会出现图形界面卡死的问题。具体表现为图形界面停止响应,但是通过ssh等仍能正常远程链接,大小写锁定正常,使用Ctrl+Alt+F3组合键切换到其他tty的方式有一定的概率可以从卡死中恢复,但是也存在一定的可能性只能通过强制重启解决。

通过分析日志中的错误信息,大致锁定一下几个issue可能和这个问题有关:

同时在radditarchlinux forum上都存在大量的讨论,均是怀疑为内核的问题。总结一下,这个问题似乎和较新版本的内核和AMD的新rdna2显卡有关,同时是否链接外接显示器也有着不同的故障表现。而且,随着linux kernel不断的升级,报错信息似乎也在变化,虽然因为我的系统日志被自动覆盖,不能提供详尽的日志信息

在某一篇讨论中(很抱歉我忘记了具体页面)有人指出这可能和内核对于CPU电压的调控有关,在切换到AMD新发布的CPU频率调节驱动amd p-state之后,这个问题就不再出现了。查询wiki可以发现,这个驱动目前并没有默认驱动,而是需要通过添加内核参数的方式启动。我使用grub作为启动程序,在配置文件/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT=末尾添加新的启动参数amd_pstate=active,重启之后查看当前驱动:

❯ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
amd-pstate-epp

目前我已经启动这个新的驱动程序一周时间了,上述问题没有在出现过。

2021 - 2024 © Ricardo Ren, 由 .NET 8.0.8 驱动。