3 个版本

新增 0.1.2 2024年8月28日
0.1.1 2024年8月26日
0.1.0 2024年8月26日

#1 in #island

Download history · Rust 包仓库 182/week @ 2024-08-21 · Rust 包仓库

每月下载量:182

MIT 许可证

79KB
1.5K SLoC

Dynisland

Dynisland 是一个用于实现 wlr-layer-shell 的合成器的动态和可扩展的 GTK4 栏,使用 Rust 编写。

Dynisland 设计得与苹果的动态岛屿相似。

演示

https://github.com/user-attachments/assets/3a8ae42e-a688-48d9-b76b-9d8292d7d9a7

功能

  • 易于配置,具有动态生成的默认配置
  • 动画过渡
  • 可使用热加载 CSS 主题化
  • 可通过第三方 Rust 模块和布局管理器扩展

计划中的功能

  • 多显示器支持
  • 启动后加载模块
  • ? 在运行时卸载模块
  • ? 使用 lua 定制小部件

使用方法

启动/重启守护进程

dynisland daemon

dynisland restart

打开 gtk 调试器

dynisland inspector
  • 这可以用于 CSS 主题化

依赖项

  • gtk4
  • gtk4-layer-shell

安装

cargo install dynisland

配置

创建目录结构

mkdir ~/.config/dynisland
mkdir ~/.config/dynisland/modules
mkdir ~/.config/dynisland/layouts

下载或编译模块并将它们放入模块目录

[!NOTE] 如果 dynisland 是使用 embed_modules 功能编译的(dynisland v0.1.2 将此作为默认值),则官方模块已经包含在二进制文件中。只有当您想使用第三方模块时才需要这样做。

发布页面 下载预编译的模块

mv Download/libmusic_module.so Download/libscript_module.so Download/libclock_module.so ~/.config/dynisland/modules
mv Download/libdynamic_layoutmanager.so ~/.config/dynisland/layouts

或从源代码构建模块

git clone --recursive https://github.com/cr3eperall/dynisland-modules
cd dynisland-modules
cargo build --release --target-dir ./target --manifest-path ./clock-module/Cargo.toml
cargo build --release --target-dir ./target --manifest-path ./dynamic-layout/Cargo.toml
cargo build --release --target-dir ./target --manifest-path ./music-module/Cargo.toml
cargo build --release --target-dir ./target --manifest-path ./script-module/Cargo.toml
mv target/release/libmusic_module.so target/release/libscript_module.so target/release/libclock_module.so ~/.config/dynisland/modules
mv targer/release/libdynamic_layoutmanager.so ~/.config/dynisland/layouts

生成默认配置文件

dynisland default-config >> ~/.config/dynisland/dynisland.ron
touch ~/.config/dynisland/dynisland.scss

然后编辑配置和 scss 以满足您的需求。

构建

不包含模块

git clone https://github.com/cr3eperall/dynisland
cd dynisland
cargo build --release
cd target/release
install dynisland ~/.local/bin/dynisland

包含模块

git clone https://github.com/cr3eperall/dynisland
git clone https://github.com/cr3eperall/dynisland-modules
cd dynisland
cargo build --release --features embed_modules
cd target/release
install dynisland ~/.local/bin/dynisland

状态

此项目仍在早期开发阶段;可能会出现错误和破坏性更改。

致谢

  • eww - 关于如何进行 IPC 和自定义 gtk 小部件的参考
  • Nullderef - 关于如何在 Rust 中实现插件系统的深入探讨

依赖项

~28–45MB
~775K SLoC