# Game Bar An overlay for [DankMaterialShell](https://danklinux.com/docs/dankmaterialshell/plugins-overview). ## Widgets | Widget | Contents | |---|---| | **Audio** | Master output volume + mute, output device switching, microphone volume + mute, input device switching | | **Apps** | Per-application volume sliders with individual mute, app icon and what is playing | | **Media** | Now playing with album art, seek bar, previous/play/next, and a chip per MPRIS source to switch between players | | **Capture** | Record the focused monitor, arm a replay buffer and save the last N seconds, or hand a screenshot to the quickCapture plugin (needs `gpu-screen-recorder`) | | **Visualiser** | Bars driven by whatever is actually playing out of this machine (needs `cava`) | | **Bluetooth** | Paired devices with battery, connect/disconnect, adapter and scan toggles | | **Notes** | The shell's notepad scratch tab, editable in place; file-backed tabs are shown read-only | | **Performance** | CPU (usage, temperature), memory (used / total), network (rx/tx), disk (root usage, read/write) | | **Home** | Home Assistant entities you pick: lights (toggle + brightness), numbers (slider over the entity's own min/max/step), switches/fans, media players (volume, mute, play/pause), covers, scenes and scripts, plus read-only sensors | ## Home Assistant Settings → Plugins → Game Bar: 1. **Home Assistant URL**, e.g. `http://homeassistant.local:8123` 2. **Long-lived access token** — HA profile page → *Security* → *Create token*. It is stored in `plugin_settings.json`, which is world-readable by default (`chmod 600` it if that matters to you). 3. **Refresh**, then tick the entities you want in the Home widget. State is polled (default every 5 s) only while the Home widget is open. The token is handed to `curl` through the process environment, so it never shows up in the process list. If a refresh fails, `dms ipc call gameBar homeStatus` shows what the plugin actually sent and got back. A `401` means Home Assistant rejected the token; compare with ```bash curl -H "Authorization: Bearer " https://your-ha/api/ ``` Note that editing `plugin_settings.json` by hand does not reach a running shell. ### IPC commands | Command | Effect | |---|---| | `dms ipc call gameBar toggle` | Toggle the overlay | | `dms ipc call gameBar open` | Open the overlay | | `dms ipc call gameBar close` | Close the overlay | | `dms ipc call gameBar widget audio\|apps\|media\|home\|system` | Show/hide one widget | | `dms ipc call gameBar homeToggle ` | Toggle an entity (activates a scene/script/button) | | `dms ipc call gameBar homeRefresh` | Re-poll Home Assistant now | | `dms ipc call gameBar homeStatus` | Print URL, token length, HTTP status, entity/picked counts and last error | | `dms ipc call gameBar record` | Start/stop recording the focused monitor | | `dms ipc call gameBar replay` | Arm/disarm the replay buffer | | `dms ipc call gameBar saveReplay` | Write the last N seconds to disk | | `dms ipc call gameBar captureStatus` | Print recorder mode, monitor, elapsed time and last file | | `dms ipc call gameBar brightnessStatus` | Print the display→DDC map, pins and resolved brightness per screen | | `dms ipc call gameBar layoutStatus` | Print each screen's layout key and where every widget resolves | | `dms ipc call gameBar resetLayout` | Forget all saved widget positions | ## Settings Settings → Plugins → Game Bar (gear icon): - **Background dimming** — how dark the desktop behind the overlay gets (0–95%). - **Capture** — folder, frame rate, quality, replay buffer length and the recorded audio source (a `gpu-screen-recorder` device name, e.g. `default_output`; `gpu-screen-recorder --list-audio-devices`). - **Home Assistant** — URL, access token, refresh interval, and the entity picker. - **Reset widget positions** — back to the default arrangement on every monitor. ## License MIT