我的桌面环境变迁

有关Linux下桌面环境的选择

从使用过i3之后,我就再也没有使用过de。实际上,我再也无法抛弃使用wm了。这篇blog与其说是为了记录自己桌面环境的变迁,不如说是自己寻找wayland下的i3代替品的过程。

对于桌面环境的选择,我自己实际上只有以下这些需求:

  • 使用wayland而非x11
  • 尽可能是一个平铺的窗口管理器

然而,本来以为很轻松的事情却不如想象中那么顺利

最初的选择——sway & swayfx

sway

我最初在hyprland和sway之间作抉择。无论社区对hyprland的评价有多高,我都没有在意,但reddit上一句对sway的评价反而深深地吸引了我。

sway just want to be i3

要知道,我选择桌面环境,实际上是寻找wayland下的i3代替品,sway就是我当初第一眼所选中的。社区还对sway的稳定性有着相当高度的评价,这让我愈发的喜欢sway了,我很快便实际使用了sway。嗯,虽然后来为了eye candy选择了swayfx,而且直到最后试都没试hyprland一下

然而,在实际使用sway之后,我反而遇到了一些问题。

  • sway对nvidia显卡的支持实在一般
  • sway似乎很难在配置文件中设置环境变量,这让我很难管理环境变量

其实对nvidia的支持姑且可以放在一边,这不是sway的错,实际体验中,我也并没有遇到特别恶性的问题。关键是第二点,这让我很难有一个好的xwayland体验。

为什么需要xwayland

尽管使用了wayland,很多应用依然需要x11,比如QQ。QQ尽管是一款号称支持wayland的软件,使用wayland下的QQ实在给人一种糟糕的体验。

在使用sway时,打开QQ会出现严重的撕裂和闪烁现象,可以说是完全不可用。当然,解决办法是有的:

1
linuxqq --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-version=3 --disable-gpu

就是在启动参数中加上--disable-gpu。但这是个并不好的解决方案。添加上这个参数之后,QQ变得无法正常处理屏幕分享时的图像。这个问题说大倒也不大,但我实在不愿意闭着眼睛当没看见。

那么解决办法只剩下一个了,老老实实用xwayland吧。

xwayland的问题

xwayland嘛,尽管有点不受人待见,但他确实解决撕裂闪烁问题了。

当我认为一切都可以通过xwayland解决的时候,新的问题接踵而至。

sway自己提供的xwayland支持在使用中会出现窗口模糊的问题,为了解决这个问题,有一个方案是使用xwayland-satellite,但想要在sway中使用xwayland-satellite,有一点儿麻烦,我认为这和sway不能再配置文件中直接设置环境变量有一定关系——使用xwayland-satellite,有一个关键的DISPLAY变量要进行设置。

我参考了reddit上的一个帖子,做了许多尝试。

比如:

在配置文件里面写

1
exec env DISPLAY=:0 xwayland-satellite

嗯,它没有生效。

还有,向配置文件里面写

1
2
3
4
5
set $menu "rofi -show drun"
set $menu_xwayland "DISPLAY=:0 rofi -show drun"

bindsym $mod+d exec $menu
bindsym $mod+Shift+d exec $menu_xwayland

这的确起到作用了,通过设置两个不同的快捷键,启动rofi时加上相应的变量,它可以说达到了我的目的。然而,我实在不喜欢用两个不同的快捷键去启动rofi,这让我觉得繁琐,为了使用xwayland,我竟然不能做到使用一个操作去打开所有的应用,而需要一些额外的行为,为什么?

到了这里,我彻底放弃sway了,尽管它是最像i3的那个。

niri的使用体验

不得不说,中文社区里niri的讨论度相当高。因为许多人都在推荐niri,我最后选择了去试一试。

niri

推荐niri的理由大概有以下几点:

  • 占用比hyprland小(我自己没有对比过)
  • 窗口逻辑优秀
  • 社区活跃度高

客观的说,niri的表现相当不错,可以说,在使用sway时遇到的问题,换到niri之后就全部解决了。

我放弃niri的理由也仅仅是出于我个人的原因,至少niri在以下几点没有满足我:

  • 滚动窗口,无限平铺不符合我的个人习惯(我仍然想拥有像i3那样的体验)
  • 似乎没有像scratchpad那样的功能
  • 我觉得使用垂直工作区非常奇怪

嗯,其实一句话就能概括,我对于niri的窗口逻辑不感兴趣,尽管大家都认为niri的窗口逻辑十分优秀。

不过,如果是第一次使用wm,没有自己的习惯的话,niri是一个非常好的选择。

最终的选择——mango

我也许很长一段时间不会想着去更换自己使用的wm了,起码在使用mango的两个月以来,mango没有给我造成任何问题。总而言之,我与mango相处得相当愉快。

真正的平铺桌面

mango可以做到真正的平铺桌面,仅仅需要更改一点点配置:

1
2
3
4
5
6
7
8
9
tagrule=id:1,layout_name:right_tile,mfact:0.5
tagrule=id:2,layout_name:right_tile,mfact:0.5
tagrule=id:3,layout_name:right_tile,mfact:0.5
tagrule=id:4,layout_name:right_tile,mfact:0.5
tagrule=id:5,layout_name:right_tile,mfact:0.5
tagrule=id:6,layout_name:right_tile,mfact:0.5
tagrule=id:7,layout_name:right_tile,mfact:0.5
tagrule=id:8,layout_name:right_tile,mfact:0.5
tagrule=id:9,layout_name:right_tile,mfact:0.5

我将所有的tag的layout都设置为了right_tile,这样就能实现在所有tag使用平铺窗口。

scratchpad

mango是由scratchpad功能的,这弥补了我对niri的一点点不满

1
2
3
4
5
6
7
8
# Send current window to scratchpad
bind=SUPER,i,minimized

# Toggle (show/hide) the scratchpad
bind=ALT,z,toggle_scratchpad

# Retrieve window from scratchpad (restore)
bind=SUPER+SHIFT,i,restore_minimized

可以轻松实现i3-style的快捷键方案

通过修改快捷键,我让mango拥有了和使用i3一样的快捷键方案,找回了自己熟悉的感觉

实际上,除了以上这些以外,mango还有许多优点,比如:

  • 丰富的自定义选项
  • 支持多种窗口逻辑
  • 可以在配置文件中设置环境变量
  • 同样活跃的社区(实际上,mango的更新频率很高)

因为以上这些原因,mango成为了我现在的,也许也是最终的选择。


我的桌面环境变迁
http://blog.meltryalice.ink/posts/20260605210802.html
作者
Therylith
发布于
2026年6月5日
许可协议