panel: Integrate KConfig for settings #1

Open
opened 2026-02-10 23:24:39 +01:00 by JoshStrobl · 1 comment
Owner

Based on similar work done for magpie, this is a task for integration of KConfig into panel. This may be done in the following ways:

  1. Creating of a panel.kcfg and use of kconfig_target_kcfg_file to generate a PanelKCfg class.
  2. Implementing a PanelConfig class (similar to how Magpie has its Config class with a KCfg backing class)
  3. Ensuring we tie configuration changes into position, sizing, extension position logic.

Examples groups and keys:

  • Appearance
    • AutoHide enum (None, Dodge, Automatic?) - Mostly a no-op, maybe have a budgie Wayland protocol that enables a given surface to know it is being intersected with another)
    • Dock: bool
    • Size: int
    • Transparency: bool
  • Layout
    • Output: QString of serial. If null, attempts placement on 0. Pending #2
    • Output: int (just so we don't have something hardcoded here)
    • Position: ScreenEdge enum, default to Bottom
  • Extensions
    • (Start/Center/End)Region: QStringList (though technically it'd be a QList). Position in list dictates position on panel.
  • Locked: bool (whether panel is locked / can be modified), default false -> This might not be necessary depending on what we have at our disposal with KConfig
Based on similar work done for magpie, this is a task for integration of KConfig into panel. This _may_ be done in the following ways: 1. Creating of a `panel.kcfg` and use of `kconfig_target_kcfg_file` to generate a PanelKCfg class. 2. Implementing a PanelConfig class (similar to how Magpie has its `Config` class with a `KCfg` backing class) 3. Ensuring we tie configuration changes into position, sizing, extension position logic. Examples groups and keys: - Appearance - AutoHide enum (None, Dodge, Automatic?) - Mostly a no-op, maybe have a budgie Wayland protocol that enables a given surface to know it is being intersected with another) - Dock: bool - Size: int - Transparency: bool - Layout - ~~Output: QString of serial. If null, attempts placement on 0.~~ Pending #2 - Output: int (just so we don't have _something_ hardcoded here) - Position: ScreenEdge enum, default to Bottom - Extensions - (Start/Center/End)Region: QStringList (though technically it'd be a QList<QUuid>). Position in list dictates position on panel. - Locked: bool (whether panel is locked / can be modified), default false -> This might not be necessary depending on what we have at our disposal with KConfig
JoshStrobl changed title from Integrate KConfig into panel for settings to panel: Integrate KConfig for settings 2026-02-10 23:52:26 +01:00
Author
Owner

For now, I'll have Output be an integer so we don't have to use a hardcoded value that either places it on the wrong monitor for me, or the wrong one for Evan 😁

Proper support will be in #2

For now, I'll have Output be an integer so we don't have to use a hardcoded value that either places it on the wrong monitor for me, or the wrong one for Evan 😁 Proper support will be in #2
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
BuddiesOfBudgie/budgie-shell#1
No description provided.