# Resources and I/O Verify these APIs against the installed-version type pages before using them. ## Paths - `Qt.resolvedUrl("asset.png")` resolves relative to the current QML file. - `Quickshell.cachePath(...)`, `dataPath(...)`, and `statePath(...)` return shell-specific paths when exposed by the installed version. - `Quickshell.env("NAME")` reads an environment variable. Choose cache, data, and state according to XDG semantics. Do not claim that a path helper itself persists QML properties. ## Icons ```qml import Quickshell.Widgets IconImage { source: Quickshell.iconPath("audio-volume-high-symbolic") implicitSize: 24 } ``` Check the installed `Quickshell.iconPath` overloads before adding fallback behavior. An icon name still depends on the active icon theme. ## FileView and JsonAdapter `JsonAdapter` is an adapter owned by `FileView`. It does not have a `path` property and does not infer arbitrary properties from a JSON file. Declare the adapter properties explicitly. ```qml import Quickshell.Io FileView { path: Qt.resolvedUrl("config.json") watchChanges: true onFileChanged: reload() JsonAdapter { property string accent: "blue" } } ``` Read the installed `FileView` and `JsonAdapter` pages before enabling writes. Writing configuration requires an explicit save policy and data-loss handling. ## Reload state `PersistentProperties` carries declared properties across a Quickshell configuration reload. It does not provide durable persistence across process restarts. Use its documented `reloadableId` behavior and do not describe it as disk storage. ## IPC `IpcHandler` exposes explicitly typed functions, properties, and signals through `qs ipc`. ```qml import Quickshell.Io IpcHandler { target: "mybar" function setText(value: string): void { label.text = value } signal changed(value: string) } ``` - Inspect registrations with `qs ipc show`. - Call functions with `qs ipc call mybar setText "value"`. - Observe exported signals with the installed CLI's `qs ipc wait` or `qs ipc listen` commands. - Do not invent an `IpcHandler.ipcBus` singleton or use `Connections` as cross-process IPC. Function argument and return types must be explicit and supported by the installed version.