mirror of
https://github.com/JakeStanger/ironbar.git
synced 2026-07-11 07:15:19 +01:00
[PR #1345] feat(config): dynamic hot reloading #6938
Labels
No labels
A:Build
A:CI
A:Client
A:Config
A:Core
A:Documentation
A:Documentation
A:IPC
A:Testing
A:UX/UI
blocked
BREAKING CHANGE
duplicate
good first issue
GTK4
help wanted
invalid
M:Battery
M:Battery
M:Bindmode
M:Bluetooth
M:Brightness
M:Cairo
M:Clipboard
M:Clock
M:Clock
M:Custom
M:Focused
M:Keyboard
M:Launcher
M:Menu
M:Music
M:Music
M:Music
M:Network Manager
M:Notifications
M:SysInfo
M:Tray
M:Volume
M:Workspaces
partially resolved
P:Critical
P:High
P:Low
P:Medium
pull-request
T:Bug
T:Bug
T:Core Enhancement
T:Module Enhancement
T:New Module
T:Question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
JakeStanger/ironbar#6938
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/JakeStanger/ironbar/pull/1345
Author: @JakeStanger
Created: 1/25/2026
Status: 🔄 Open
Base:
master← Head:feat/hot-reload📝 Commits (1)
3d28aa0feat(config): dynamic hot reloading📊 Changes
48 files changed (+862 additions, -188 deletions)
View changed files
📝
docs/Configuration guide.md(+3 -0)📝
docs/Development guide.md(+1 -1)📝
src/bar.rs(+151 -60)📝
src/clients/outputs.rs(+6 -6)📝
src/config/common.rs(+4 -4)➕
src/config/diff.rs(+215 -0)➕
src/config/hot_reload.rs(+287 -0)📝
src/config/layout.rs(+1 -1)📝
src/config/marquee.rs(+1 -1)📝
src/config/mod.rs(+57 -3)📝
src/config/profiles.rs(+3 -3)📝
src/config/truncate.rs(+2 -2)📝
src/dynamic_value/dynamic_bool.rs(+1 -1)📝
src/ipc/server/bar.rs(+1 -2)📝
src/ipc/server/style.rs(+2 -1)📝
src/main.rs(+57 -35)📝
src/modules/battery.rs(+2 -2)📝
src/modules/bindmode.rs(+1 -1)📝
src/modules/bluetooth/config.rs(+7 -7)📝
src/modules/brightness.rs(+3 -3)...and 28 more files
📄 Description
At long last, config hot reloading! This introduces a config diffing system that tries to minimise the amount of reloading that needs to take place, according to the following rules:
This means that you can add, remove and change entire monitor configurations, individual bars, and modules and Ironbar will do its best to minimise the impact.
Hot-reloading does not currently support top-level config options other than
barandmonitors. Some of these are likely to never be supported but this still requires exploration.This also adds a new top-level
hot_reloadoption, which takes two formats:hot_reload: <true/false>- enables/disables for both config and styles.hot_reload.configandhot_reload.stylewhich can be used to toggle each system separately.The code for this is still a little messy and prototypal, and I'm not sure I've caught every edge case yet, so leaving as draft for now. This does work for the most part though, so publishing for others to test and play with.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.