# compat/ — Shims D-Bus systemd

**Propósito.** Permitir que software systemd-aware (GNOME, KDE,
PolicyKit, NetworkManager, etc.) corra sobre `arje-zero` sin systemd.
Cada shim es un binario standalone que se anuncia con un nombre
well-known D-Bus y traduce las llamadas al bus interno.

## Crates

| binario                     | reemplaza             | D-Bus name                          |
| --------------------------- | --------------------- | ----------------------------------- |
| `arje-logind-compat`        | systemd-logind        | `org.freedesktop.login1`            |
| `arje-hostnamed-compat`     | systemd-hostnamed     | `org.freedesktop.hostname1`         |
| `arje-timedated-compat`     | systemd-timedated     | `org.freedesktop.timedate1`         |
| `arje-localed-compat`       | systemd-localed       | `org.freedesktop.locale1`           |
| `arje-journald-compat`      | systemd-journald      | `org.freedesktop.LogControl1`       |
| `arje-resolved-compat`      | systemd-resolved      | `org.freedesktop.resolve1`          |
| `arje-polkit-compat`        | polkitd               | `org.freedesktop.PolicyKit1`        |
| `arje-machined-compat`      | systemd-machined      | `org.freedesktop.machine1`          |
| `arje-systemd1-compat`      | systemd Manager       | `org.freedesktop.systemd1`          |
| `arje-notify-compat`        | sd_notify socket      | `/run/systemd/notify` (datagram)    |
| `arje-timer-compat`         | systemd timers        | (cron-like, sin D-Bus)              |
| `arje-tmpfiles-compat`      | systemd-tmpfiles      | (aplica tmpfiles.d al boot)         |
| `arje-binfmt-compat`        | systemd-binfmt        | (registra handlers binfmt_misc)     |
| `arje-policy-provider`      | (interno)             | provider de decisiones polkit       |

## Dependencias

- Todos ← `zbus`, `arje-bus`, `protocol/brahman-card`. Sin tests
  (esperado: stubs D-Bus que delegan al bus interno).

## Patrón común

Cada shim:
1. Se conecta a `/run/brahman/bus`.
2. Reclama un well-known name vía zbus.
3. Implementa los métodos de la interfaz mínima usada por el ecosistema.
4. Loggea eventos al audit log de `arje-brain`.

## Estado

LOC ~5K total (~300 LOC c/u). Suficiente para que `desktop-file-utils`,
`xdg-open`, login managers, y CLIs systemd-aware no rompan. Pendiente:
cobertura de métodos avanzados (Inhibit en logind, SetVariable en localed).
