#窗口管理器 #窗口 #管理器 #wm

leftwm-macros

冒险者使用的窗口管理器

1 个不稳定版本

0.5.0 2023 年 11 月 15 日

#20#wm


leftwm 中使用

MIT 许可证

32KB
58

LeftWM

冒险者使用的窗口管理器

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

Screenshot of LeftWM in action

重要提示:LeftWM 从 0.4.0 版本开始将配置语言从 TOML 更改为 RON。请使用 leftwm-check --migrate-toml-to-ron 来迁移您的配置,并访问 wiki 了解更多信息。

目录

为什么选择 Left

LeftWM 是一个用 Rust 编写的平铺窗口管理器,旨在稳定且高效。LeftWM 被设计为 只做一件事,做好这件事成为窗口管理器。LeftWM 遵循以下座右铭

LeftWM 不是一个合成器。
LeftWM 不是一个锁屏。
LeftWM 不是一个栏。但,有很多好的栏。通过主题,选择一个就像设置一个符号链接一样简单。

因为您可能想要的不仅仅是黑色屏幕,LeftWM 围绕主题的概念构建。通过主题,您可以选择不同的栏、合成器、背景、颜色、 dock 和任何让您快乐的东西。

LeftWM 从一开始就是为了支持多个屏幕和超宽显示器而构建的。默认键绑定支持超宽显示器和多个屏幕。

LeftWM 的核心概念/功能之一是主题化

LeftWM 有两种配置文件

  • LeftWM 配置文件: LeftWM 的配置针对您个人,不会因不同的主题而改变。这些设置包括键绑定、工作区位置和桌面/标签的名称。这些设置可以在 ~/.config/leftwm/config.toml 中找到。

  • 主题配置文件: 您桌面的外观是不同的。尝试新的外观和感觉很有趣。调整和自定义外观(也就是所谓的 ricing)很有趣。与他人分享,让他们也能体验您出色的桌面!LeftWM 就是围绕这个概念构建的。通过将这些设置抽离到主题中,您现在可以轻松地调整、切换和分享您的体验。此配置分散在 theme.toml 和主题文件夹内相关的文件中。

注意: 一些示例配置和主题可以在共享目录中找到,例如 /usr/share/leftwm,适用于基于 Arch 的 disros。

依赖项

虽然 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/<配置文件名-name>。当前可用的有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 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

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 Terminal
  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频道,以获得更快的帮助。

依赖项

~265–710KB
~17K SLoC