infrastructure/skills/dbus-layer/SKILL.md
D-Bus session bus for inter-process communication inside containers. Use when working with D-Bus, desktop services, Wayland compositor dependencies, or the `dbus:` check verb.
npx skillsauth add overthinkos/overthink-plugins dbus-layerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | supervisord |
| Service | dbus (supervisord, priority 2) |
| Install files | task: |
| Variable | Value |
|----------|-------|
| DBUS_SESSION_BUS_ADDRESS | unix:path=/tmp/dbus-session |
dbus-daemon (RPM)RPM: dbus-daemon (Fedora) · PAC: dbus (Arch) · DEB: dbus (Debian/Ubuntu). Full parity — same DBUS_SESSION_BUS_ADDRESS env, same supervisord fragment, identical behavior downstream.
# charly.yml -- now included in all images with supervisord
my-image:
candy:
- dbus
dbus: check verbThe dbus: check verb drives this session bus from a candy/box plan. It is a
declarative verb served out-of-process by candy/plugin-dbus (EXEC-based: the
plugin drives gdbus from glib2 over charly's DeployExecutor reverse channel);
there is no host charly check dbus subcommand. Author dbus: list/call/
introspect/notify steps with context: [deploy] and run them with
charly check live <image> --filter dbus. See /charly-check:dbus for the full
method catalog and YAML shape.
charly cmd/charly tmux cmd → sendVenueNotification() → gdbus call ... org.freedesktop.Notifications.Notify → swaync/mako → desktop popup
For notifications to work, the box needs:
dbus candy — D-Bus session bus (this candy)swaync candy — notification daemongdbus (from glib2) in the venue — the host drives it over the reverse channelcharly status ProbeThe dbus probe checks:
dbus-daemon process is runningShows as dbus:ok (notify:swaync) in charly status detail view.
sway in all desktop boxes/charly-infrastructure:supervisord -- process manager dependency/charly-selkies:sway -- primary consumer (Sway depends on dbus)/charly-selkies:swaync -- notification daemon (depends on dbus)/charly-selkies:libnotify -- notify-send CLI tool (depends on dbus)/charly-check:dbus — the declarative dbus: check verb (notify, list, call, introspect), served out-of-process by candy/plugin-dbusUse when the user asks about:
DBUS_SESSION_BUS_ADDRESS environment variabledbus: check verb (notify, call, list, introspect)/charly-image:layer — candy authoring reference (charly.yml schema, task verbs, service declarations)/charly-check:check — declarative testing (check: block, charly check box, charly check live)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).