窗口管理器labwc使用记

注意到 labwc 有一段时间了,大部分窗口管理器都是和桌面环境融为一体的,例如 Gnome 的 Mutter,独立的窗口管理器就显得很特殊,尤其是 wayland 下的,labwc 就是这样的存在。

如果你厌倦了 Gnome 和 KDE 等大一统桌面环境,也不想折腾 sway 等平铺窗口(tiling Wayland compositor),那么可以试试 labwc 堆叠窗口(window-stacking Wayland compositor)。

在我写这篇文章的时候,中文世界还没有人分享 labwc 相关信息,至少 Google、Bing、Baidu 无相关收录,微信搜索提示的是"来安霸王餐"。这不能不说是一种遗憾,也是我坚持维护这个小站的动力之一。

本文将在 Ubuntu 23.10 环境下,编译安装 labwc,使其达到一种可以应付日常工作学习使用的状态。我现在就是在 labwc 相关环境下写这篇文章的。话不多说,火速发车:

1. 编译安装 labwc

  • 下载源码
1git clone https://github.com/labwc/labwc
  • 编译安装

    • 安装依赖

      1sudo apt install libseat-dev
      

      如果你需要 xwayland,我个人认为需要,因为中国大陆的 Linux 环境不算好,到现在钉钉、微信等部分软件还得 xwayland 支持,不能在纯 wayland 下轻松运行。

      开启 xwayland,请安装依赖:

      1sudo apt install libxcb-composite0-de
      2sudo apt isntall libxcb-icccm4-dev
      3sudo apt install libxcb-res0-dev
      

      有读者可能会问,你怎么知道需要这些依赖的,因为工作需要使用钉钉,我吃过过亏。依赖的包名都是根据报错提示,apt search xxx 结合经验得出的。

    • 编译

      首次编译

      1meson setup build/
      2meson compile -C build/
      

      非首次编译, 注意参数 -Dxwayland=enabled,建议开启 xwayland

      1meson  setup --reconfigure -Dxwayland=enabled build
      
    • 把命令放到常用目录

      上一步完成后,build 目录会生成 labwc,复制到 /usr/bin 目录

      1sudo cp build/labwc /usr/bin
      

    至此,labwc 窗口管理器安装完成了。可以直接在终端里面执行 labwc 命令启动,启动后就是一片黑(不要慌,这是正常操作),按 Win + Enter 键,弹出 alacritty。如下图所示:

labwc

心急的读者想问,就这光秃秃的界面,和无图形界面的服务器差不多,还玩什么?其实此时,已经可以使用了,只不过是个毛坯房。你用启动器或者命令行直接启动各种程序,都是可以正常运行的,只是没有完整的桌面环境,条件比较苦。

2. 添加必要桌面元素

在进一步操作前,最好能确保:1.你随时能切换回完整的 Gnome 环境; 2.系统能自动联网。这样出意外的时候,还有退路可走。

  • 设置 wayland-sessions

    创建 labwc.desktop 文件,路径和内容如下所示,不要告诉我你不会创建文件。

    1➜  ~ cat /usr/share/wayland-sessions/labwc.desktop
    2[Desktop Entry]
    3Name=Labwc
    4Comment=Labwc
    5Exec=labwc
    6Type=Application
    7➜  ~
    

    目的是为了让 gdm3 能够选中 labwc,好让你进入 labwc 环境,总不能每次都命令行启动对吧。gdm3 是所谓的 display manager,或者叫 login manager,有 tui 的也有 gui 的,就是操作系统启动完成后,给你输入用户和密码、选择 sessions 的东西。这一步就是让 sessions 多一个选项。

  • labwc 基本配置

    先创建和下载 4 个核心配置文件

    1mkdir -p ~/.config/labwc
    2wget https://raw.githubusercontent.com/labwc/labwc/master/docs/environment -O ~/.config/labwc/environment
    3wget https://raw.githubusercontent.com/labwc/labwc/master/docs/autostart -O ~/.config/labwc/autostart
    4wget https://raw.githubusercontent.com/labwc/labwc/master/docs/menu.xml -O ~/.config/labwc/menu.xml
    5wget https://raw.githubusercontent.com/labwc/labwc/master/docs/rc.xml -O ~/.config/labwc/rc.xml
    

    可以直接使用我的: https://github.com/kmephistoh/dotfiles/tree/main/.config/labwc

    • autostart

      1➜  labwc egrep -v "#|^$" autostart
      2swaybg -i ~/Pictures/mount.jpeg >/dev/null 2>&1 &
      3waybar >/dev/null 2>&1 &
      4fcitx5 >/dev/null 2>&1 &
      5➜  labwc pwd
      6/home/mephisto/.config/labwc
      

      分别为设置壁纸、启动 waybar 状态栏、启动 fcitx5 输入法(输入法英语系的人不用,中文读者必须有),壁纸图片路径请自行修改。

    • environment

       1➜  labwc egrep -v "#|^$" environment
       2XDG_CURRENT_DESKTOP=wlroots
       3MOZ_ENABLE_WAYLAND=1
       4XDG_CURRENT_DESKTOP=labwc
       5XCURSOR_THEME=breeze_cursors
       6GTK_IM_MODULE=fcitx
       7QT_IM_MODULE=fcitx
       8XMODIFIERS=@im=fcitx
       9INPUT_METHOD=fcitx
      10SDL_IM_MODULE=fcitx
      11➜  labwc pwd
      12/home/mephisto/.config/labwc
      

      其中,MOZ_ENABLE_WAYLAND=1 让 firefox 运行在 wayland 下,XDG_CURRENT_DESKTOP=labwc 为 flameshot 截屏软件所需,我自己摸索出来的,加鸡腿啊!fcitx 相关就是让 fcitx 正常工作的。

      如果更喜欢 chrome,不习惯 firefox,还需要做些特殊设置(如果没有开启 xwayland 支持的话)。

      1➜  labwc grep -i exec /usr/share/applications/google-chrome.desktop
      2Exec=/usr/bin/google-chrome-stable -enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4 %U
      3Exec=/usr/bin/google-chrome-stable -enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4
      4Exec=/usr/bin/google-chrome-stable --incognito -enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4
      

      -enable-features=UseOzonePlatform --ozone-platform=wayland 为开启 wayland 支持

      --gtk-version=4 开启 fcitx5 输入法支持,候选字界面会跑飞,这就是 Linux 用户的日常^_^

    • rc.xml

      这个部分,没怎么改动,只是添加了快捷键,wofi 为启动器(lancher)、flameshot 为截屏工具、swaylock 为锁屏工具,wofi 后续有空会单独写个文章。

      1<keybind key="F8">
      2<action name="Execute" command="wofi" />
      3</keybind>
      4<keybind key="F9">
      5<action name="Execute" command="flameshot gui" />
      6</keybind>
      7<keybind key="W-l">
      8<action name="Execute" command="swaylock" />
      9</keybind>
      
    • menu.xml

      建议读一读文档,再按需修改,也可直接下载我的,目前不重要。

  • 设置 waybar

    waybar 简单理解就是个状态栏,显示各种基础信息。

    waybar

    建议直接安装

    1sudo apt install waybar
    

    waybar 是可以定制的,建议看官方文档

    有很多示例: https://github.com/Alexays/Waybar/wiki/Examples

    找个自己喜欢的即可,笔者的配置在: https://github.com/kmephistoh/dotfiles

  • 设置 swaylock

    swaylock 就是锁屏,离开电脑的时候锁屏是个好习惯,防火防盗防伪君子。

    先安装

    1sudo apt install swaylock
    

    也是可以定制的,不想折腾的可以直接下载我的

    https://github.com/kmephistoh/dotfiles/tree/main/.config/swaylock

    根据 rc.xml 中的设置,Win + l 键锁屏,首次使用的的时候,效果确实令人吃惊的,大概长这个样子(锁屏界面无法截图,只能找个网图,我配置的没这个好看)。

    swaylock

3. 桌面整体预览

这么一顿操作后,结果如下所示:

双屏截图

labwc desktop previews

    1. 状态栏 waybar
    1. 启动器 wofi
    1. 菜单(点空白区弹出,可退出 labwc,不然你都不知道怎么退出,对不对?)
    1. 证明 chrome 工作良好,有了能上网的浏览器,你应该毫无畏惧了
    1. 还没有 wofi,请先用 Alt + F3 弹出的 bemenue,够用不好看

通知截图

labwc notice

写在最后,用 labwc 工作是没有问题的,我准备持续体验一段时间,也许会遇到各种小瑕疵,但是都不关键。重要的是可以按照自己的喜好,来定制桌面环境的各种组件,避免受制于 Gnome/KDE 等重型环境,系统响应速度很快(大部分是 C 写的),你知道这些部件是如何协作的,可以学到一些知识,不喜欢可以随时替换,这就是自由自在感觉。

2023-08-04 日更新:经过我 2 个月的使用体验,labwc 运行稳定流畅,满足日常 99%的需求,可以说相见恨晚,已经告别 Gnome 环境了。推荐 Linux 用户使用,不会配置的可以搜索本站相关教程。

最后修改于: Friday, February 23, 2024
欢迎关注微信公众号,留言交流。

相关文章:

翻译: