Dynisland
A dynamic and extensible GTK4 layer-shell, written in Rust.
Install / Use
/learn @cr3eperall/DynislandREADME
Dynisland
A dynamic and extensible GTK4 bar for compositors implementing wlr-layer-shell, written in Rust.
Dynisland is designed to look and feel like Apple's Dynamic Island.
Demo
https://github.com/user-attachments/assets/3a8ae42e-a688-48d9-b76b-9d8292d7d9a7
Status
This project is still in early development; There will likely be bugs and breaking changes, including changes to the config format.
Features
- Easy to configure with a dynamically generated default config
- Animated transitions
- Themeable with hot loaded css
- Extensible with third party Rust modules and layout managers
- multi-monitor support
Usage
Start/restart the daemon
dynisland daemon
# or
dynisland restart
Open the gtk debugger
dynisland inspector
- this can be useful for css theming
Dependencies
- gtk4
- gtk4-layer-shell
Installation
Using cargo
cargo install dynisland
Arch Linux
yay -S dynisland-git
Configuration
Create the directory structure
mkdir -p ~/.config/dynisland/{modules,layouts}
Generate the default config file
dynisland default-config >> ~/.config/dynisland/dynisland.ron
touch ~/.config/dynisland/dynisland.scss
See the Wiki for the main config options
See dynisland-modules for the module specific configs
Then edit the configs and scss to your liking.
Building
Building with all the modules included
git clone --recursive https://github.com/cr3eperall/dynisland
cd dynisland
cargo build --release --features completions
cd target/release
install -Dm755 dynisland ~/.local/bin/dynisland
Install shell completions
install -Dm644 "target/_dynisland" "/usr/share/zsh/site-functions/_dynisland"
install -Dm644 "target/dynisland.bash" "/usr/share/bash-completion/completions/dynisland.bash"
install -Dm644 "target/dynisland.fish" "/usr/share/fish/vendor_completions.d/dynisland.fish"
Building without including the modules
git clone https://github.com/cr3eperall/dynisland
cd dynisland
cargo build --release --no-default-features --features completions
cd target/release
install dynisland ~/.local/bin/dynisland
[!NOTE] When compiled with the
embed_modulesordefaultfeature the official modules are already included in the binary and this part can be skipped
Download or compile the external modules and put them in the modules directory
Download the precompiled modules from the Release page
mv Download/libmusic_module.so Download/libscript_module.so Download/libclock_module.so ~/.config/dynisland/modules
mv Download/libdynamic_layoutmanager.so ~/.config/dynisland/layouts
Or build the modules from source
git clone --recursive https://github.com/cr3eperall/dynisland
cargo build --release --no-default-features --package dynisland_clock_module --package dynisland_dynamic_layoutmanager --package dynisland_music_module --package dynisland_script_module
mv target/release/libmusic_module.so target/release/libscript_module.so target/release/libclock_module.so ~/.config/dynisland/modules
mv target/release/libdynamic_layoutmanager.so ~/.config/dynisland/layouts
Acknowledgements
Related Skills
himalaya
352.2kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
taskflow
352.2kname: taskflow description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layer
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
