#i3 #focused #css #decorating #customization #i3-sway #decorations

app glimmer

一个用于装饰i3/Sway聚焦窗口的工具

5个版本

0.0.6 2022年11月22日
0.0.5 2022年11月22日
0.0.4 2022年11月22日
0.0.3-alpha.02022年11月20日
0.0.1 2021年7月10日

#488 in GUI

MIT 许可证

17KB
384 代码行

glimmer

是什么

一个用于在窗口聚焦时装饰i3窗口的工具,用Rust编写。

https://user-images.githubusercontent.com/4857535/124782646-61e90a80-df12-11eb-8930-a321ecffbee1.mp4

为什么

在使用i3-gaps时,我遇到了以下问题。

  • 当使用常规边框和标题栏时,会出现一些瑕疵,这些瑕疵在背景中显示(如此处所述),据我所知,这些问题尚未得到解决。
  • 上述问题意味着通常需要依赖透明度或降低亮度来实现“突出显示”状态,至少对我来说,这违背了所有窗口以平铺方式排列的目的。为了获得突出显示效果,必须降低不透明度或将其调暗到难以阅读的程度。
  • 即使边框和标题栏确实能够正常工作。但无论如何,它们与a e s t h e t i c的契合度并不高。

最终,我放弃了,继续使用vanilla i3,但这个想法一直在我的脑海中。它专注于这些不足之处。它是否解决了这些问题?我自己也不是很确定,但这确实是一次有趣的实验。

要求

  • i3(注意,目前不支持Sway)
  • 一个合成器,因为它实际上是在您的窗口上绘制窗口。
  • 构建此应用程序需要系统上有GTK,请按照此处的说明操作

构建

  • Rust v1.5x,目前仅测试了v1.53.0
cargo build && cargo run

安装

预构建的二进制文件

您可以从发布页面下载预构建的二进制文件

Cargo

请记住阅读上述要求!

cargo install glimmer

运行和自定义

glimmer --styles=./path/to/your/theme.css

CSS文件决定了窗口装饰的外观,它们有2个元素可以自定义,即代表窗口边界的#box和代表窗口标题的#label。此外,还有一个应用于父元素的.animate类,可以帮助触发框和标签的动画。

themes目录中有一些这个的示例。请随时贡献更多!

请注意,CSS不是完整的规范,您可以在此处查看GTK支持的属性

使用转换进行动画的一个简单示例

#box {
  background: rgba(255, 200, 0, 0.2);
  transition: background 2s ease, margin 0.2s ease;
  margin: 10px;
}

.animate #box {
  background: transparent;
  margin: 0px;
}

#label {
  opacity: 0; /* Hide the label */
}

这将产生以下结果

https://user-images.githubusercontent.com/4857535/124782792-8349f680-df12-11eb-8231-4a356d33f066.mp4

依赖关系

~21–35MB
~580K SLoC