5个版本
0.0.6 | 2022年11月22日 |
---|---|
0.0.5 | 2022年11月22日 |
0.0.4 | 2022年11月22日 |
0.0.3-alpha.0 | 2022年11月20日 |
0.0.1 | 2021年7月10日 |
#488 in GUI
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