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 | 默认使用optimized cargo配置进行构建;阅读构建输出了解如何更改配置。 |
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