mirror of
https://github.com/JakeStanger/ironbar.git
synced 2026-07-11 15:15:21 +01:00
[GH-ISSUE #1287] Support for External Daemons as Backends for Media. #8816
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#8816
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?
Originally created by @Windblows2000 on GitHub (Dec 20, 2025).
Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/1287
Is your feature request related to a problem? Please describe.
I've been looking into the Music Module for a while now and I think it might benefit from a split in the logic. I was specifically using
player_type = "mpris"for clarity, as mpd seems to not be working properly on my system.Describe the solution you'd like
I believe the introduction of a backend that can separately handle the logic Ironbar is doing would be much healthier for Ironbar. A standalone daemon for handling the MPRIS clients and metadata would ideally lift off the weight from Ironbar., such as album art handling, metadata requests, timers, and proper tracking when multiple clients are active This actually occured to me while working on my own daemon for MPRIS clients interaction.
Describe alternatives you've considered
Additional context
I made a reference GUI implementation for the current code. its still unfinished and quite ugly, but it should help with clearing up the fog on whether this is worth pursuing or not.
even if the architectural shift isnt in line with what you expect from the project, I'd be more than willing to discuss what can actually be done to improve on it. Thank you for your time and efforts on Ironbar!
@JakeStanger commented on GitHub (Dec 22, 2025):
Okay there's a few things going on here, but the general consensus I'm getting is a few observed issues that a daemon probably would not help.
To start with, it's worth pointing out the current architecture already uses a daemon - media players speak to DBus over the MPRIS protocol, and Ironbar connects to DBus as a client to consume the metadata. All the MPRIS code in Ironbar is client code, and introducing yet another daemon would do very little to reduce this (we'd then need to pull all the same data out of that daemon).
This is more than likely an implementation detail in your MPRIS client. Ironbar listens to changes and won't clear this itself. I can't see a good way around this, because a player is going to clear its status when playback stops, so attempting to cache this would be nigh-impossible.
That's correct and a current limitation. Future versions will definitely include support for multiple players. Most of the work involved in that is more than likely going to be the UI and module code.
I'm not sure what you're getting at here. Ironbar pulls all that data because it needs that data to display it. Adding a separate process that Ironbar needs to communicate bidirectionally with to pull out all the same metadata will add much more overhead than handling it.
Why and how?
Introducing daemon support also adds overhead in the following way:
There's potentially an argument to be made that some of the client code could be split into its own library, but that would end up being a library which exists purely to consume existing high-level client libraries for Ironbar's specific needs. It'd serve little purpose to anybody else and create more work for me to maintain.