{"id":15116962,"url":"https://github.com/cr3eperall/dynisland","last_synced_at":"2025-04-09T06:11:13.260Z","repository":{"id":255036522,"uuid":"714413461","full_name":"cr3eperall/dynisland","owner":"cr3eperall","description":"A dynamic and extensible GTK4 layer-shell, written in Rust.","archived":false,"fork":false,"pushed_at":"2024-09-26T15:57:41.000Z","size":617,"stargazers_count":172,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-25T09:13:21.871Z","etag":null,"topics":["bar","gtk","gtk4","layer-shell","linux","rust","wayland"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cr3eperall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-04T20:33:41.000Z","updated_at":"2024-10-23T13:47:37.000Z","dependencies_parsed_at":"2024-10-24T19:33:47.297Z","dependency_job_id":null,"html_url":"https://github.com/cr3eperall/dynisland","commit_stats":{"total_commits":93,"total_committers":3,"mean_commits":31.0,"dds":"0.021505376344086002","last_synced_commit":"8ba41ee72365ed82d76c49bda038030baad00ed1"},"previous_names":["cr3eperall/dynisland"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr3eperall%2Fdynisland","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr3eperall%2Fdynisland/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr3eperall%2Fdynisland/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cr3eperall%2Fdynisland/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cr3eperall","download_url":"https://codeload.github.com/cr3eperall/dynisland/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bar","gtk","gtk4","layer-shell","linux","rust","wayland"],"created_at":"2024-09-26T01:45:27.126Z","updated_at":"2025-04-09T06:11:13.238Z","avatar_url":"https://github.com/cr3eperall.png","language":"Rust","funding_links":[],"categories":["Linux"],"sub_categories":["Other"],"readme":"# Dynisland\n\nA dynamic and extensible GTK4 bar for compositors implementing wlr-layer-shell, written in Rust.\n\nDynisland is designed to look and feel like Apple's Dynamic Island.\n\n## Demo\n\n\u003chttps://github.com/user-attachments/assets/3a8ae42e-a688-48d9-b76b-9d8292d7d9a7\u003e\n\n## Status\n\nThis project is still in early development; There will likely be bugs and breaking changes, including changes to the config format.\n\n## Features\n\n- Easy to configure with a dynamically generated default config\n- Animated transitions\n- Themable with hot loaded css\n- Extensible with third party Rust modules and layout managers\n- multi-monitor support\n\n**Planned features:**\n\n- [ ] loading modules after startup\n- [ ] ? unload modules at runtime\n- [ ] ? custom widgets in lua\n\n## Usage\n\n### Start/restart the daemon\n\n```bash\ndynisland daemon\n# or\ndynisland restart\n```\n\n### Open the gtk debugger\n\n```bash\ndynisland inspector\n```\n\n- this can be useful for css theming\n\n## Dependencies\n\n- gtk4\n- gtk4-layer-shell\n\n## Installation\n\n### Using cargo\n\n```bash\ncargo install dynisland\n```\n\n### Arch Linux\n\n```bash\nyay -S dynisland-git\n```\n\n## Configuration\n\n### Create the directory structure\n\n```bash\nmkdir -p ~/.config/dynisland/{modules,layouts}\n```\n\n### Download or compile the modules and put them in the modules directory\n\n\u003e [!NOTE]\n\u003e If dynisland was compiled with the `embed_modules` feature (dynisland v0.1.2 has this as the default), the [official](https://github.com/cr3eperall/dynisland-modules) modules are already included in the binary.\n\u003e You would only have to do this if you want to use third party modules.\n\nDownload the precompiled modules from the [Release page](https://github.com/cr3eperall/dynisland-modules/releases/latest)\n\n```bash\nmv Download/libmusic_module.so Download/libscript_module.so Download/libclock_module.so ~/.config/dynisland/modules\nmv Download/libdynamic_layoutmanager.so ~/.config/dynisland/layouts\n```\n\nOr build the modules from source\n\n```bash\ngit clone --recursive https://github.com/cr3eperall/dynisland\ncd dynisland\ncargo build --release --no-default-features --package dynisland_clock_module --package dynisland_dynamic_layoutmanager --package dynisland_music_module --package dynisland_script_module\nmv target/release/libmusic_module.so target/release/libscript_module.so target/release/libclock_module.so ~/.config/dynisland/modules\nmv target/release/libdynamic_layoutmanager.so ~/.config/dynisland/layouts\n```\n\n### Generate the default config file\n\n```bash\ndynisland default-config \u003e\u003e ~/.config/dynisland/dynisland.ron\ntouch ~/.config/dynisland/dynisland.scss\n```\n\n### See the [Wiki](https://github.com/cr3eperall/dynisland/wiki) for the main config options\n\n### See [dynisland-modules](https://github.com/cr3eperall/dynisland-modules) for the module specific configs\n\nThen edit the configs and scss to your liking.\n\n## Building\n\n### Without including the modules\n\n```bash\ngit clone https://github.com/cr3eperall/dynisland\ncd dynisland\ncargo build --release --no-default-features --features completions\ncd target/release\ninstall dynisland ~/.local/bin/dynisland\n```\n\n### Including the modules\n\n```bash\ngit clone --recursive https://github.com/cr3eperall/dynisland\ncd dynisland\ncargo build --release --features completions\ncd target/release\ninstall -Dm755 dynisland ~/.local/bin/dynisland\n```\n\n### Install shell completions\n\n```bash\ninstall -Dm644 \"target/_dynisland\" \"/usr/share/zsh/site-functions/_dynisland\"\n\ninstall -Dm644 \"target/dynisland.bash\" \"/usr/share/bash-completion/completions/dynisland.bash\"\n\ninstall -Dm644 \"target/dynisland.fish\" \"/usr/share/fish/vendor_completions.d/dynisland.fish\"\n```\n\n## Acknowledgements\n\n- [eww](https://github.com/elkowar/eww) - For reference on how to do IPC, custom gtk widgets and some of the systray code\n- [Nullderef](https://nullderef.com/) - For a deep dive on how to implement a plugin system in rust\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcr3eperall%2Fdynisland","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcr3eperall%2Fdynisland","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcr3eperall%2Fdynisland/lists"}