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
每月下载量 140
525KB
11K SLoC
重要提示: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 包装器。请参阅 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
中。请确保删除或取消注释之前 WM 的 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
旨在更加模块化,因此在编译时可以选择一些功能
使用 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 配置指定,可用的有 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 检查 |
test-full-nix | 与 test-full 相同,但还编译了 nix 软件包,从而全面表示 CI 检查 |
build | 默认使用optimized 配置文件进行构建;阅读构建输出了解如何更改配置文件。 |
清理 | 清理所有构建文件 |
安装 | 通过将二进制文件复制到/usr/bin 进行安装,也将leftwm.desktop 文件放置到/usr/share/xsession 并清理构建文件 |
安装链接 | 通过符号链接安装,复制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配置。
配置
您可以配置键绑定、默认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终端
- 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 = 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频道,可以更快地获得帮助。
依赖关系
~16–30MB
~400K SLoC