#sway #position #dsl #layout #relative #output #pixel

bin+lib layaway

通过相对和可读的 DSL 创建 Sway 的布局

4 个版本

0.1.5 2024 年 5 月 26 日
0.1.4 2024 年 5 月 22 日
0.1.3 2024 年 5 月 21 日
0.1.2 2024 年 5 月 21 日

#147配置

Download history 206/week @ 2024-05-17 119/week @ 2024-05-24 12/week @ 2024-05-31 3/week @ 2024-06-07 2/week @ 2024-06-28 17/week @ 2024-07-05

每月 155 次下载

MIT/Apache

53KB
1K SLoC

layaway

嘿,想象一下你会在笔记本电脑上使用 Sway,并且经常出差。出差时,人们经常需要将外接的输出/屏幕临时连接到笔记本电脑!

但是,哦不,等待着你的是什么呢?仅使用 Sway 的机制,你需要自己计算每个输出的确切像素位置!

不用担心,因为这个过度设计的项目旨在减轻你的痛苦:通过 DSL 指定 相对 逻辑位置,而不是指定 绝对 像素位置,例如“eDP-1 输出在 DP-3 下方居中”,通过 DSL。实际上,这种情况在 DSL 中看起来是这样的

dp3 + edp/bottom

砰!这就是本项目的所有需求,因为它从 Sway 中获取所有需要的详细信息。作为 shell 命令,这足以

layaway 'dp3 + edp/bottom'

安装

从最新版本

查看 https://github.com/MultisampledNight/layaway/releases/latest,它列出了要运行的 shell 命令!

从源代码

  1. 安装 Rust
  2. 运行 cargo install layaway
  3. 按需使用 layaway

[!WARNING] 只支持 Unixalike 上的 Sway。如果你想查看 comms 模块并为此打开一个问题或甚至 PR,请随意查看!

使用说明

查看 parse::dsl 模块以获取 DSL 的工作方式(包括 ABNF 正式化!)的详细描述。

您可以通过两种方式指定要使用的布局:通过命令行(CLI)强制执行,如果两者都指定,则优先,或者通过配置文件声明性指定,允许特定于机器的配置。

配置文件

由于在启动时再次键入布局很少是期望的,因此可以通过配置文件定义每个机器上要使用的布局。在这种情况下,应用布局所需做的就是运行 layaway,它将查找该主机名的布局并应用它!

配置文件的位置是通过 directories-next 确定的,但实际上归结为 ~/.config/layaway/config.toml(符合XDG规范,如果设置了适当的env变量则尊重它们)。

它使用TOML编写,包含一个名为 [machines] 的单张表。每个键值对对应一台机器。键指定了要使用的计算机的名称,值是上述DSL中实际布局。

例如,这是我为我的两台机器使用的配置文件

[machines]
destined = "dp + edp/bottom"
overloaded = "dp3 + hdmia/right,bottom"

如果机器的主机名为 destined,则使用 dp + edp/bottom;如果机器的主机名为 overloaded,则使用 dp3 + hdmia/right,bottom

如果机器的主机名不在配置文件中,则需要将其添加到配置文件中或通过CLI指定布局描述。

无应用

如果您不想直接应用布局,而只是查看它或将它包含到您的 Sway 配置文件中,您也可以选择将 --no-apply 标志传递给CLI,以便将将要运行的所有命令打印到stdout。

许可

根据您的要求,许可方式为以下之一

任选其一。

贡献

请随时提出您想要看到或希望看到的问题或PR!然而:除非您明确声明,否则根据Apache-2.0许可中定义的,您提交的任何有意包含在作品中的贡献都应按照上述方式双许可,没有任何附加条款或条件。

依赖项

~4–29MB
~408K SLoC