23 个版本

0.5.1 2023 年 11 月 16 日
0.4.2 2023 年 6 月 17 日
0.4.1 2022 年 12 月 26 日
0.4.0 2022 年 10 月 1 日
0.1.10 2019 年 6 月 16 日

GUI 中排名 65

Download history 37/week @ 2024-04-15 9/week @ 2024-04-22 5/week @ 2024-04-29 15/week @ 2024-05-20 10/week @ 2024-05-27 16/week @ 2024-06-03 16/week @ 2024-06-10 15/week @ 2024-06-17 12/week @ 2024-06-24 5/week @ 2024-07-15 121/week @ 2024-07-22 14/week @ 2024-07-29

每月下载量 140

MIT 许可证 MIT

525KB
11K SLoC

LeftWM

探险家使用的窗口管理器

build status wiki Documentation
discord Matrix Chat: Announcements Matrix Chat: General Matrix Chat: Support

Screenshot of LeftWM in action

重要提示:LeftWM 在 0.4.0.0 版本中已将配置语言从 TOML 更改为 RON。请使用 leftwm-check --migrate-toml-to-ron 来迁移您的配置,并访问 wiki 获取更多信息。

目录

为什么选择 Left

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 包装器。请参阅 paruyay
** 请参阅 git 页面(第一列中的链接)了解如何手动安装这些软件

使用包管理器安装

Packaging status

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 中。请确保删除或取消注释之前 WM 的 exec

exec dbus-launch ~/.cargo/bin/leftwm >> ~/.cache/leftwm.log 2>&1

手动安装(无包管理器)

使用 LightDM、GDM、LXDM 等图形登录

  1. 依赖项:Rust,Cargo

  2. 克隆仓库并进入目录

    git clone https://github.com/leftwm/leftwm.git
    cd leftwm
    
  3. 构建 leftwm

    cargo build --profile optimized
    

    有关更多选项,请参阅 构建选项 部分。

  4. 将 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
    
  5. 将 leftwm.desktop 复制到 xsessions 文件夹

    sudo cp leftwm.desktop /usr/share/xsessions/
    

现在,您应该在可用的窗口管理器列表中看到 LeftWM。此时,登录时可能只会看到简单的黑色屏幕。为了获得更个性化的外观,请安装一个主题。

可选的开发安装

如果您的目标是持续构建 leftwm 并保持与最新版本的同步,您可能更喜欢将 leftwm 可执行文件链接而不是复制。如果您选择以这种方式安装,请确保不要移动构建目录,因为它会破坏您的安装。

请注意,如果您想以其他构建配置构建 leftwm,您必须更改 --profile <配置名称> 选项以及目标文件夹到 target/<配置名称-名称>。目前可用的配置有 devreleaseoptimized

  1. 依赖项:Rust,Cargo

  2. 克隆仓库并进入目录

    git clone https://github.com/leftwm/leftwm.git
    cd leftwm
    
  3. 构建 leftwm

    # With systemd logging (view with 'journalctl -f -t leftwm-worker')
    cargo build --profile optimized
    

    有关更多选项,请参阅以下 构建选项

  4. 创建符号链接

    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
    
  5. 将 leftwm.desktop 复制到 xsessions 文件夹

    sudo cp leftwm.desktop /usr/share/xsessions/
    

现在,您应该在可用的窗口管理器列表中看到 LeftWM。此时,登录时可能只会看到简单的黑色屏幕。为了获得更个性化的外观,请安装一个主题。

重新构建开发安装

  1. 现在,如果您想获取 leftwm 的最新版本,请从您的构建目录运行此命令

    git pull origin main
    
  2. 构建 leftwm

    # With systemd logging (view with 'journalctl -f -t leftwm-worker')
    cargo build --profile optimized
    
  3. 然后按下以下快捷键来重新加载 leftwm

    Mod + Shift + R
    

可选的构建功能

由于 LeftWM 旨在更加模块化,因此在编译时可以选择一些功能

使用 cargo 并附加标志 --no-default-features --features=,然后从以下功能中选择一个,以逗号分隔

功能 信息 默认
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 配置指定,可用的有 devreleaseoptimized。dev 和 release 配置是 cargo 的默认配置,而 optimized 配置建议用于生产构建。

示例

# With the dev profile
cargo build --profile dev

# With the release profile
cargo build --profile release

使用 Makefile

为了方便,我们还提供了一个包含以下规则的 Makefile

make ... 信息
all 意味着 buildtest
test 运行与 GitHub 上的 CI 相同的测试
test-full test 相同,但还附加了严格的 clippy 检查
test-full-nix test-full 相同,但还编译了 nix 软件包,从而全面表示 CI 检查
build 默认使用optimized配置文件进行构建;阅读构建输出了解如何更改配置文件。
清理 清理所有构建文件
安装 通过将二进制文件复制到/usr/bin进行安装,也将leftwm.desktop文件放置到/usr/share/xsession并清理构建文件
安装链接 通过符号链接安装,复制leftwm.desktop,不进行清理
卸载 /usr/bin移除leftwm-*文件和leftwm.desktop文件

请注意,对于buildinstallinstall-linked,您可以通过添加profile=<profile-name>参数来指定要使用的构建配置文件。目前可用的是devreleaserelease-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包含一些默认主题。还有一个社区仓库用于共享主题。

有关主题的更多信息,请参阅我们的主题指南wiki


注意:leftwm现在使用RON作为其默认配置语言。请考虑迁移您的toml配置。


配置

您可以配置键绑定、默认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会将默认终端设置为在此列表中找到的第一个终端(按顺序排列)

  1. Alacritty
  2. Termite
  3. Kitty
  4. URXVT
  5. RXVT
  6. ST
  7. ROXTerm
  8. Eterm
  9. XTerm
  10. Terminator
  11. Terminology
  12. Gnome终端
  13. XFCE4终端
  14. Konsole
  15. UXTerm
  16. 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 = 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。

更详细的配置信息可以在Wiki中找到。

LeftWM符合EWMH

默认布局是Layout枚举中描述的所有类型

故障排除

问题 描述 解决方案
LeftWM未列在登录管理器中 您可能需要将xsessions文件添加到正确的文件夹中。 安装
没有config.toml文件存在 LeftWM并不总是包含config.toml。您至少需要运行一次LeftWM才能生成一个。 尝试以下操作:leftwm-worker
Config.toml未解析 LeftWM附带一个名为leftwm-check的二进制文件。它可能未通过AUR安装。 尝试以下操作:leftwm-check
快捷键不起作用 您可能需要指定一个值或存在输入错误。 见Wiki

支持

LeftWM现在有一个Discord频道,可以更快地获得帮助。

依赖关系

~16–30MB
~400K SLoC