# Reproduction guide — "switching the background / dragging blur does nothing" > Applies when the theme **is** working (palette and glass effects are visible) but: > ① picking another built-in background does nothing; ② dragging the blur slider does nothing; ③ uploaded images never show. > > One-line diagnosis: **the settings are saved correctly — what you see is not the theme's background, but a layer stacked on top of it.** [English](repro-background-not-changing.md) | [中文](repro-background-not-changing.zh-CN.md) --- ## 0. Ten-second check (do this first) Open the GUI, press F12 → Console, paste these three lines: ```js // A. is there a foreign full-screen layer covering the theme background? document.querySelectorAll('body > *').length && !![...document.querySelectorAll('body > *')] .find(e => /wall|bg|backdrop|cover/i.test(e.id + ' ' + e.className)) // B. does the theme background layer exist, and what is its z-index? getComputedStyle(document.querySelector('.colu-bg')).zIndex // C. is the theme background image actually set? document.querySelector('.colu-bg-img[data-active="1"]')?.style.backgroundImage ``` Interpretation: | A | B | C | Conclusion | |---|---|---|---| | `true` (foreign layer present, usually `dsh-wall-layer`) | `-1` | a URL | ✅ **this guide's bug** → go to §1 | | `false` | `-1` | a URL | Not an overlay problem; check whether CSS is swallowed by a `prefers-color-scheme` branch → §3 | | any | `null` (element missing) | empty | Theme not enabled, or `data-columbina-skin` is not `on` → §3 | --- ## 1. Reproduction (100% deterministic) Environment: Linux, `dsh 0.2.0-rc.2`, `dsh web --port
`; Chromium-based browser.
1. Install (from a local folder):
```bash
dsh plugin --profile web add /path/to/dsh-columbina-theme-sn
```
> `spawn pnpm ENOENT` → `corepack enable pnpm`
> `Cannot validate installed package … SyntaxError: Unexpected token '\uFEFF'` → `package.json` has a BOM, see §4
2. Restart `dsh web` (the host half loads at startup), then F5 in the browser.
3. Confirm the theme is active: `document.body.dataset.dshColumbina` should be `""` (attribute present), and the palette turns silver-blue.
4. **Create the overlay** (this mirrors the real machine; a host that ships its own wallpaper layer has it already):
```js
const l = document.createElement('div');
l.id = 'dsh-wall-layer';
l.style.cssText = 'position:fixed;inset:0;z-index:0;background:#04060c;pointer-events:none';
document.body.insertBefore(l, document.body.firstChild);
```
5. Open the theme panel → **pick another built-in background** → **nothing changes** ❌
6. **Drag blur to 30** → **nothing changes** ❌
- Yet `GET /columbina/state` already reports `background.blur = 30` (**persistence is fine**)
- `.colu-bg-img`'s rect does change with `--colu-bg-scale` (1536×(1+30/200) ≈ 1766) → **the variable works, you just cannot see it**
7. Remove the layer and try again: `document.getElementById('dsh-wall-layer').remove()` → **background and blur work immediately** ✅
— this step is the direct proof of the root cause.
---
## 2. Root cause and fix
```css
/* foreign layer (host wallpaper): opaque, z-index:0 */
#dsh-wall-layer{ position:fixed; inset:0; z-index:0; background:#04060c }
/* theme background layer: underneath it */
.colu-bg{ position:fixed; inset:0; z-index:-1; }
```
`-1 < 0` plus opacity ⇒ the whole theme background layer is covered. Typical source: a locally patched or vendor-modified frontend that injects a full-screen wallpaper layer unconditionally on page load (an element with `position:fixed; inset:0; z-index:0` and an opaque background).
Fix (shipped since v0.2.2, client CSS only):
```css
body[data-dsh-columbina][data-columbina-skin="on"][data-colu-bg="on"] #dsh-wall-layer{
display:none !important;
}
```
- Only applies when "theme on + background enabled"; plain mode (no image) brings the foreign layer back
- Client-only ⇒ **F5 is enough**, no `dsh web` restart
**Temporary workaround (without patching)**: turn the host's wallpaper layer off — use its own menu/setting, or whatever switch it exposes (some builds keep it in `localStorage` and re-read it on load).
---
## 3. If it is not an overlay problem, check in this order
| # | Check | Command / code | Expected |
|---|---|---|---|
| 1 | Theme really enabled | `document.body.dataset.columbinaSkin` | `'on'` |
| 2 | Background switch on | `document.body.dataset.coluBg` | `'on'` |
| 3 | State persisted | `curl -s