Fork the desktop off Omarchy as a self-contained system
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import QtQuick
|
||||
import qs.Commons
|
||||
|
||||
// Base item every bar widget extends. Codifies the three properties the
|
||||
// bar host injects into each widget slot:
|
||||
// bar - the host Bar instance (foreground/background/run/etc).
|
||||
// moduleName - widget's canonical id, used by the host registry to look
|
||||
// up settings and to disambiguate inline IPC routes.
|
||||
// settings - per-widget overrides read from shell.json's layout entry.
|
||||
//
|
||||
// Widgets are free to add their own properties, signals, and child items.
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property QtObject bar: null
|
||||
property string moduleName: ""
|
||||
property var settings: ({})
|
||||
|
||||
// Bar geometry, lifted off the host. Widgets read these constantly to pick
|
||||
// between horizontal/vertical layouts; defining them on the base keeps the
|
||||
// `bar ? bar.x : fallback` ternary out of every widget body.
|
||||
readonly property bool vertical: bar ? bar.vertical : false
|
||||
readonly property int barSize: bar ? bar.barSize : Style.bar.sizeHorizontal
|
||||
|
||||
// Run `method` on every live instance of this widget. An IPC target only
|
||||
// ever routes to one handler, but a bar surface exists per monitor, so the
|
||||
// instance that owns the target relays the call to its peers — otherwise a
|
||||
// refresh would land on a single screen and leave the others stale.
|
||||
function broadcast(method) {
|
||||
var items = bar && typeof bar.moduleWidgets === "function"
|
||||
? bar.moduleWidgets(moduleName) : [root]
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i] && typeof items[i][method] === "function") items[i][method]()
|
||||
}
|
||||
}
|
||||
|
||||
// Read a single value from this widget's inline shell.json entry, with a
|
||||
// fallback for missing/null values. Every widget that takes user-tunable
|
||||
// settings needs this; defining it once on the base keeps the wiring
|
||||
// consistent.
|
||||
function setting(name, fallback) {
|
||||
var value = settings ? settings[name] : undefined
|
||||
return value === undefined || value === null ? fallback : value
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user