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 日

#979GUI

Download history 238/week @ 2024-04-02 180/week @ 2024-04-09 222/week @ 2024-04-16 103/week @ 2024-04-23 44/week @ 2024-04-30 115/week @ 2024-05-07 124/week @ 2024-05-14 154/week @ 2024-05-21 147/week @ 2024-05-28 136/week @ 2024-06-04 167/week @ 2024-06-11 188/week @ 2024-06-18 176/week @ 2024-06-25 176/week @ 2024-07-02 173/week @ 2024-07-09 179/week @ 2024-07-16

734 每月下载量
用于 3 个包

MIT 许可证

385KB
9K 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 了解更多信息。

目录

为什么选择左侧

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文件中。确保删除或注释掉之前窗口管理器的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的目标是越来越模块化,因此在编译时可以选定的功能有一些

使用带有附加标志--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配置指定,可用的是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 lint
test-full-nix test-full相同,但还编译nix包,从而在ci检查中获得完整表示
build 默认使用optimized cargo配置进行构建;阅读构建输出了解如何更改配置。
clean 清理所有构建文件
install 通过将二进制文件复制到/usr/bin进行安装,也将leftwm.desktop文件放置在/usr/share/xsession中,并清理构建文件
install-linked 通过符号链接安装,复制 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 配置。


配置

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

  1. Alacritty
  2. Termite
  3. Kitty
  4. URXVT
  5. RXVT
  6. ST
  7. ROXTerm
  8. Eterm
  9. XTerm
  10. Terminator
  11. Terminology
  12. Gnome Terminal
  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开始递增。在上面的示例中,如果第二个工作空间没有定义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频道,用于更快速的帮助。

依赖关系

~6–16MB
~202K SLoC