8 个版本
| 0.5.0 | 2023 年 11 月 15 日 | 
|---|---|
| 0.4.2 | 2023 年 6 月 17 日 | 
| 0.4.1 | 2022 年 12 月 26 日 | 
| 0.4.0 | 2022 年 10 月 1 日 | 
| 0.2.9 | 2021 年 10 月 11 日 | 
#979 在 GUI
734 每月下载量
用于  3 个包
385KB
 9K  SLoC

重要提示:LeftWM 从 0.4.0.0 版本开始将配置语言从 TOML 更改为 RON。请使用 leftwm-check --migrate-toml-to-ron 来迁移您的配置,并访问 wiki 了解更多信息。
目录
为什么选择左侧
LeftWM 是用 Rust 编写的分割窗口管理器,旨在稳定且高效。LeftWM 设计用来只做一件事,并且做好这件事: 成为窗口管理器。LeftWM 遵循以下格言
LeftWM 不是一个合成器。
LeftWM 不是一个锁屏。
LeftWM 不是一个栏。但是,有很多很好的栏。通过主题,选择一个就像设置一个符号链接一样简单。
因为您可能需要的不仅仅是黑色屏幕,LeftWM 围绕主题的概念构建。通过主题,您可以选择不同的栏、合成器、背景、颜色、坞站以及让您快乐的其他一切。
LeftWM 从一开始就是为支持多屏幕和超宽显示器而设计的。默认的键绑定支持超宽显示器和多屏幕。
LeftWM 的核心概念/功能之一是主题。
使用 LeftWM,有两种类型的配置文件。
- 
LeftWM 配置文件:LeftWM 配置仅针对您个人使用,不会因不同主题而改变。这些设置包括键绑定、工作区位置和桌面的名称/标签。这些设置可以在 ~/.config/leftwm/config.toml中找到。
- 
主题配置文件:您桌面的外观可能会有所不同。尝试新外观和感觉很有趣。调整和自定义外观(即所谓的 ricing)很有趣。与他人分享,让他们也能体验您出色的桌面!LeftWM 就是围绕这个概念构建的。通过将这些设置提取到主题中,您现在可以轻松地调整、切换和分享您的体验。此配置分布在 theme.toml和主题文件夹内相关的文件中。
注意:一些示例配置和主题可以在共享目录中找到,例如 /usr/share/leftwm,适用于基于 Arch 的发行版。
依赖关系
尽管 LeftWM 的依赖项很少,但主题的情况并非总是如此。通常,主题需要以下内容。然而,这取决于主题的作者,可能有所不同。
LeftWM 依赖项列表
- xorg(运行时、构建):特别是 libx11、xrandr、xorg-server、libxinerama
- sh(运行时):任何 POSIX 兼容的 shell,用于启动和关闭文件
- rust(构建):>= 1.70.0
- bash(可选):大多数可用的主题都使用 bash,尽管脚本可能被转换为任何 POSIX 兼容的 shell
主题常见依赖项列表
| 依赖项 (git) | Ubuntu 20.4.1 sudo apt install {} | Arch sudo pacman -S {} | Fedora 33 sudo dnf install {} | PKGS | 
|---|---|---|---|---|
| feh | feh | feh | feh | feh | 
| compton | compton | picom | compton | compton | 
| picom | 手动 ** | picom | picom | picom | 
| polybar | 手动 ** | polybar | polybar | polybar | 
| xmobar | xmobar | xmobar | xmobar | xmobar | 
| lemonbar | lemonbar | paru -S lemonbar* | 手动 ** | lemonbar | 
| conky | conky | conky | conky | conky | 
| dmenu | dmenu | dmenu | dmenu | dmenu | 
* 您可以使用您喜欢的 AUR 包装器。请参阅 paru 和 yay。
** 请参阅 git 页面(第一列中的链接)了解如何手动安装这些内容
使用包管理器安装
Gentoo (GURU)
sudo layman -a guru && sudo emerge --sync
sudo emerge --ask --verbose x11-wm/leftwm
Archlinux (AUR)
paru -S leftwm
paru 是一个类似于 yay 的 AUR 辅助工具,但它是用 Rust 编写的。
Fedora (copr)
sudo dnf copr enable th3-s4lm0n/leftwm -y && sudo dnf install leftwm
NetBSD (官方仓库)
pkgin install leftwm
或者,如果您更喜欢从源代码构建
cd /usr/pkgsrc/wm/leftwm
make install
Void (XBPS)
sudo xbps-install -S leftwm
Cargo (crates.io)
cargo install leftwm
如果您使用 crates.io 安装 LeftWM,则如果您想从显示管理器(GDM、SSDM、LightDM 等)登录 LeftWM,则需要链接到 xsession 桌面文件。
sudo cp PATH_TO_LEFTWM/leftwm.desktop /usr/share/xsessions
有关更多功能选项,请参阅 构建选项,特别是如果您不使用 systemd 或想使用自己的热键代理如 sxhkd。
OpenBSD (OpenBSD)
目前 LeftWM 不会与 OpenBSD 软件包管理器一起打包,但可以通过 Cargo 安装。
cargo install leftwm --no-default-features --features lefthk
leftwm-config尚未移植到OpenBSD,因为它需要每晚的Rust编译器来构建。默认配置是在LeftWM首次启动时生成的。
要使用xenodm启动LeftWM,请将以下内容添加到您的~/.xsession文件中。确保删除或注释掉之前窗口管理器的exec命令。
exec dbus-launch ~/.cargo/bin/leftwm >> ~/.cache/leftwm.log 2>&1
手动安装(无包管理器)
使用 LightDM、GDM、LXDM 等图形登录
- 
依赖项:Rust、Cargo 
- 
克隆仓库并进入目录 git clone https://github.com/leftwm/leftwm.git cd leftwm
- 
构建leftwm cargo build --profile optimized更多选项请参阅构建选项部分。 
- 
将leftwm可执行文件复制到/usr/bin文件夹 sudo install -s -Dm755 ./target/optimized/leftwm ./target/optimized/leftwm-worker ./target/optimized/lefthk-worker ./target/optimized/leftwm-state ./target/optimized/leftwm-check ./target/optimized/leftwm-command -t /usr/bin
- 
将leftwm.desktop复制到xsessions文件夹 sudo cp leftwm.desktop /usr/share/xsessions/
现在您应该在可用的窗口管理器列表中看到LeftWM。此时,登录时预期将只出现一个简单的黑色屏幕。为了更个性化的外观,请安装一个主题。
可选的开发安装
如果您目标是持续构建leftwm并保持最新版本,您可能更喜欢将leftwm可执行文件链接而不是复制。如果您选择这种方式安装,请确保不要移动构建目录,因为它会破坏您的安装。
注意,如果您想使用其他构建配置构建leftwm,您将必须更改--profile <配置名称>选项和目标文件夹到target/<配置名称-名称>。目前可用的是dev、release和optimized。
- 
依赖项:Rust、Cargo 
- 
克隆仓库并进入目录 git clone https://github.com/leftwm/leftwm.git cd leftwm
- 
构建leftwm # With systemd logging (view with 'journalctl -f -t leftwm-worker') cargo build --profile optimized更多选项请参阅下面的构建选项。 
- 
创建符号链接 sudo ln -s "$(pwd)"/target/optimized/leftwm /usr/bin/leftwm sudo ln -s "$(pwd)"/target/optimized/leftwm-worker /usr/bin/leftwm-worker sudo ln -s "$(pwd)"/target/optimized/lefthk-worker /usr/bin/lefthk-worker sudo ln -s "$(pwd)"/target/optimized/leftwm-state /usr/bin/leftwm-state sudo ln -s "$(pwd)"/target/optimized/leftwm-check /usr/bin/leftwm-check sudo ln -s "$(pwd)"/target/optimized/leftwm-command /usr/bin/leftwm-command
- 
将leftwm.desktop复制到xsessions文件夹 sudo cp leftwm.desktop /usr/share/xsessions/
现在您应该在可用的窗口管理器列表中看到LeftWM。此时,登录时预期将只出现一个简单的黑色屏幕。为了更个性化的外观,请安装一个主题。
重新构建开发安装
- 
现在,如果您想获取leftwm的最新版本,请从构建目录运行以下命令 git pull origin main
- 
构建leftwm # With systemd logging (view with 'journalctl -f -t leftwm-worker') cargo build --profile optimized
- 
然后按下以下快捷键以重新加载leftwm Mod + Shift + R
可选的构建功能
由于LeftWM的目标是越来越模块化,因此在编译时可以选定的功能有一些
使用带有附加标志--no-default-features --features=的cargo,然后从以下功能中选择一个或多个,用逗号分隔
| 功能 | 信息 | 默认 | 
|---|---|---|
| lefthk | 内置的热键守护程序,如果您没有构建它,请确保您有自己的(例如 sxhkd)来管理任何快捷键,如果您使用此选项构建,请确保安装了lefthk-worker二进制文件 | ✔ | 
| journald-log | 记录到 journald,依赖于systemd | ✔ | 
| sys-log | 使用标准系统日志 | ✘ | 
| file-log | 记录到 /tmp/leftwm/<启动时间戳的日志文件> | ✘ | 
示例
# With `lefthk` and logging to `sys-log`
cargo build --profile optimized --no-default-features --features=lefthk,sys-log
# Without `lefthk` and logging to file
cargo build --profile optimized --no-default-features --features=file-log
还有多个优化级别。这些由cargo配置指定,可用的是dev、release和optimized。dev和release配置是cargo使用的默认配置,而optimized配置建议用于生产构建。
示例
# With the dev profile
cargo build --profile dev
# With the release profile
cargo build --profile release
使用 Makefile
为了方便,我们还有一个包含以下规则的Makefile
| make ... | 信息 | 
|---|---|
| all | 意味着 build和test | 
| test | 运行与GitHub上的CI相同的测试 | 
| test-full | 与 test相同,但还包含严格的clippy lint | 
| test-full-nix | 与 test-full相同,但还编译nix包,从而在ci检查中获得完整表示 | 
| build | 默认使用 optimizedcargo配置进行构建;阅读构建输出了解如何更改配置。 | 
| clean | 清理所有构建文件 | 
| install | 通过将二进制文件复制到 /usr/bin进行安装,也将leftwm.desktop文件放置在/usr/share/xsession中,并清理构建文件 | 
| install-linked | 通过符号链接安装,复制 leftwm.desktop,无需清理 | 
| 卸载 | 从 /usr/bin删除leftwm-*文件,并删除leftwm.desktop文件 | 
注意,对于 build、install 和 install-linked,您可以通过添加 profile=<profile-name> 参数来指定要使用的构建配置。目前可用的有 dev、release 和 release-optimized。
使用 startx 或 slim 等登录
请确保以下内容位于您的 .xinitrc 文件末尾
# .xinitrc
exec dbus-launch leftwm
在某些发行版(如 Archlinux)中,环境变量是通过源文件 /etc/X11/xinit/xinitrc.d 来设置的,如 Arch 文档 中所述,请确保您像这样复制默认的 xinitrc
cp /etc/X11/xinit/xinitrc ~/.xinitrc
注意:在这种情况下,没有必要通过 dbus-launch 来启动 leftwm,甚至在某些情况下可能会导致像 gnome-keyring 这样的服务失败。在这种情况下,只需使用
# .xinitrc
exec leftwm
主题化
如果您想登录时看到比黑色屏幕更多的内容,请选择一个主题
使用 LeftWM-Theme
leftwm-theme update
leftwm-theme install NAME_OF_THEME_YOU_LIKE
leftwm-theme apply NAME_OF_THEME_YOU_LIKE
不使用 LeftWM-Theme
mkdir -p ~/.config/leftwm/themes
cd ~/.config/leftwm/themes
ln -s PATH_TO_THE_THEME_YOU_LIKE current
LeftWM 随附了一些默认主题。还有一个 社区仓库 供分享主题。
注意:leftwm 现在将 RON 作为其默认配置语言。请考虑迁移您的 toml 配置。
配置
您可以使用 LeftWM-Config 配置键绑定、默认 mod 键和许多其他选项
使用 LeftWM-Config
leftwm-config -n # Generate new config
leftwm-config    # Open configuration file in $EDITOR
leftwm-config -t # Edit configuration via TUI (Beta)
或通过编辑文件
~/.config/leftwm/config.ron
注意:当 leftwm 或 leftwm-check 首次运行时,将自动生成配置文件。
注意:leftwm 现在将 RON 作为其默认配置语言。请考虑迁移您的 toml 配置。
默认键
| 键绑定 | 描述 | 
|---|---|
| Mod + (1-9) | 切换到桌面/标签 | 
| Mod + Shift + (1-9) | 将焦点窗口移动到桌面/标签 | 
| Mod + W | 切换每个屏幕的桌面。桌面 [1][2] 切换到 [2][1] | 
| Mod + Shift + W | 将窗口移动到另一个桌面 | 
| Mod + (⬆️⬇️) | 在当前工作空间中聚焦不同的窗口 | 
| Mod + Shift + (⬆️⬇️) | 在当前工作空间中移动不同的窗口 | 
| Mod + Enter | 将选定的窗口移动到当前工作空间堆栈的顶部 | 
| Mod + Ctrl + (⬆️⬇️) | 在不同布局之间切换 | 
| Mod + Shift + (⬅➡) | 在不同工作空间之间切换 | 
| Mod + Shift + Enter | 打开终端 | 
| Mod + Ctrl + L | 锁定屏幕 | 
| Mod + Shift + X | 退出 LeftWM | 
| Mod + Shift + Q | 关闭当前窗口 | 
| Mod + Shift + R | 重新加载 LeftWM 和其配置 | 
| Mod + p | 使用 dmenu 启动应用程序 | 
注意:尽管我们鼓励您使用 Alacritty,但 LeftWM 会将默认终端设置为在此列表中找到的第一个终端(按顺序排列)
- Alacritty
- Termite
- Kitty
- URXVT
- RXVT
- ST
- ROXTerm
- Eterm
- XTerm
- Terminator
- Terminology
- Gnome Terminal
- XFCE4 终端
- Konsole
- UXTerm
- Guake
浮动窗口
您可以为任何窗口选择性地在平铺模式或浮动模式之间切换。
| 键绑定 | 描述 | 
|---|---|
| Mod + 鼠标拖动 | 将平铺窗口切换到浮动模式 | 
| Mod + 右键鼠标拖动 | 调整窗口大小 | 
| 将窗口拖动到平铺上 | 将浮动窗口切换到平铺模式 | 
| Mod + Shift + (1-9) | 将浮动窗口切换到平铺模式 | 
工作空间
默认情况下,工作空间与屏幕之间有一对一的关系,但这是可配置的。您可能有许多想要更改此设置的原因,但主要原因是针对超宽显示器。您可能希望在单个屏幕上拥有两个甚至三个工作空间。
以下是一个示例配置,用于更改工作空间定义的方式 (~/.config/leftwm/config.toml)
workspaces: [
    ( y: 0, x: 0, height: 1440, width: 1720 ),
    ( y: 0, x: 1720, height: 1440, width: 1720 ),
],
您可以选择为定义的工作空间指定一个ID。如果您想在主题中为每个工作空间分配不同的边距设置,这将很有帮助。
workspaces: [
    ( y: 0, x: 0, height: 1440, width: 1720, id: 0 ),
    ( y: 0, x: 1720, height: 1440, width: 1720, id: 1 ),
],
注意 您不需要为每个工作空间定义ID,但如果您为某个工作空间分配了ID,则随后定义的没有ID的工作空间将被分配一个ID,该ID从当前分配给任何工作空间的最大ID开始递增。在上面的示例中,如果第二个工作空间没有定义ID = 0,则它将被分配ID = 2。在创建或自定义主题时请记住这一点。
标签 / 桌面
默认标签为1-9。您可以在配置文件中设置标签列表来重命名它们。
以下是一个示例配置,用于更改可用标签列表。注意:基于标签名称的标签导航(Mod + #)不会更改。
tags: ["Web", "Code", "Shell", "Music", "Connect"],
布局
默认情况下,所有布局都启用。有很多布局,您可能只想启用您使用的布局。为此,请将布局部分添加到您的config.toml文件中。这将仅启用您指定的布局。
示例
layouts: ["MainAndHorizontalStack", "GridHorizontal", "Fibonacci", "EvenVertical", "EvenHorizontal", "CenterMain", "CenterMainFluid"],
布局也可以指定在单个工作空间上,这在您有不同宽高比或方向的显示器时很有用。
示例
workspaces: [
    ( id: 0, y: 480, x: 0, height: 1600, width: 3840,
      layouts = ["CenterMain", "CenterMainBalanced", "EvenHorizontal"]),
    ( id: 1, y: 0, x: 3840, height: 2560, width: 1440,
      layouts = ["MainAndHorizontalStack", "EvenVertical"]),
],
注意 在定义每个工作空间的布局时,您需要明确定义工作空间ID。
LeftWM符合EWMH
默认布局是Layout枚举中描述的所有类型。
故障排除
| 问题 | 描述 | 解决方案 | 
|---|---|---|
| LeftWM未在登录管理器中列出 | 您可能需要将xsessions文件添加到正确的文件夹中。 | 见安装 | 
| 不存在config.toml文件 | LeftWM并不总是包含一个 config.toml。您至少需要运行一次LeftWM才能生成它。 | 尝试以下操作: leftwm-worker | 
| 无法解析config.toml | LeftWM包含一个名为leftwm-check的二进制文件。它可能没有被AUR安装。 | 尝试以下操作: leftwm-check | 
| 快捷键不起作用 | 您可能需要指定一个值或存在拼写错误。 | 见Wiki | 
支持
LeftWM现在有一个Discord频道,用于更快速的帮助。
依赖关系
~6–16MB
~202K SLoC