mirror of
https://github.com/JakeStanger/ironbar.git
synced 2026-07-11 08:15:21 +01:00
[GH-ISSUE #933] Port to GTK4 #4500
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#4500
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 @JakeStanger on GitHub (Apr 9, 2025).
Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/933
As the GTK3
gtkandgtk-layer-shellcrates are now deprecated, there is a need to move to GTK4.This is a tracking issue for the port. Issues requiring GTK4 will be linked as as child - these are not required for the port.
Progress document: https://github.com/JakeStanger/ironbar/wiki/gtk4
Pull request: https://github.com/JakeStanger/ironbar/pull/112
@JakeStanger commented on GitHub (Sep 15, 2025):
All modules are now ported across! While there are still some rough edges, the bar is now in a usable state in GTK4 and is in a great place for people to start testing.
The progress document is being kept up to date with known issues, but I've included these below in more detail.
If you'd like to contribute, there's a few ways:
Config - Format
GTK 4 does away with the "angle" property on widgets. This has two effects:
orientationproperty on a widget will no longer rotate it.Instead, rotation is now handled in CSS.
IPC
All commands related to opening popups are currently unimplemented. Closing works as expected. All other commands should work as expected.ResolvedMenu module
Occasionally on startup all sub-menus for all categories will show, creating a very wide mega-menu.There are major issues related to specifying the width/height in the config. Setting the height causes the widget width to shrink to the minimum, and setting the width appears to have no effect. This results in menus being inaccessible.RESOLVED
Tray module
The current (GTK3) implementation makes use of
libdbusmenu-gtk3, a library that handles all of the hard work around listening to DBus and converting that into a GTK3 menu widget. GTK4 however threw two problems at us:This means the entire client code and process has been implemented from scratch, without a library. The UI works great thanks to @tglman,
but the client code has known problems.This is technically using client code from my
system_traycrate, which previous versions of Ironbar also made use of.The switch away was made due to long-standing evasive bugs related to activating some menu items. It is known, for example, that if you interact with VLC through its UI and then attempt to control it via its tray icon, the entire tray client will lock up until Ironbar restarts.RESOLVED 🎉GTK 4 also removes the ability to show both an icon and label on a menu item, for some reason. This means that menu items will not have their icons show.
For the most part though, it should work as expected.
@JakeStanger commented on GitHub (Sep 28, 2025):
I will be aiming to merge the PR next weekend.
Before merging, I will create a release to represent the last GTK3 version as a "stable" fallback in case there are any issues with the GTK 4 build. There will then be a period of a few weeks where any fixes are prioritised, and as soon as the GTK
4 version is stable, I will create another baseline release.
Once there is a GTK 4 release in place, focus on general bugfixes and feature requests will resume.