Passer au contenu principal
D

dsh-plugin-gemini-theme

dingyi580/dsh-plugin-gemini-theme

Thème inspiré de Gemini qui restyle le fond de conversation, les lignes de la barre latérale, le message d’accueil héro et le composer via une seule feuille de style sur les tokens --dsw-*, en clair et sombre.

Installer

dsh plugin --profile web add github:dingyi580/dsh-plugin-gemini-theme

README

dsh-plugin-gemini-theme

English | 中文

A Gemini-styled skin for the DeepSeek Harness web client.

One stylesheet, layered over the client's own --dsw-* design tokens. The plugin contributes no DOM, no slot occupant and no service — installing it changes how the client looks, removing it restores the stock appearance, and nothing else in the stack knows the difference.

The hero screen

Install

dsh plugin --profile web add dsh-plugin-gemini-theme

Restart dsh web afterwards. Remove it the same way:

dsh plugin --profile web remove dsh-plugin-gemini-theme

What it restyles

The conversation ground and sidebar fill, the sidebar's capsule rows and round icon buttons, the new-chat pill, the hero greeting's scale, the composer's radius, fill and elevation, the blue backdrop glow behind it, the entrance animation when a blank session opens, and the fades at both ends of the scrolling regions.

Light and dark are both covered; the sheet follows whichever the client resolves.

A conversation

How it works

The sheet mounts as a <style> tag under the plugin's own lifetime. Rules reach their targets through the class form CSS modules compile to — [hash]_[local], so a rule is written [class*="_local"] — which is what lets a skin live outside the packages it restyles. It loads before every feature package's own stylesheet, so its component rules carry !important.

That substring match is also the main hazard: _local matches any module that happens to name a class the same way. Rules that could reach a second component are narrowed by a tag qualifier, a :has() on something only the intended target contains, or an ancestor only the intended tree has.

Colours and sizes were sampled per-pixel from a reference rather than estimated; the comments in the sheet record where each number came from.

Limitations

Anything needing new DOM is out of scope for a stylesheet and is not here:

  • The session header keeps its stock strip (title, mode chip, view tabs) rather than filing them behind one control.
  • The hero greeting is the client's own line, not a rotating one.
  • The sidebar opens in whatever state the client decides; the skin does not change its boot posture or width.
  • No top progress bar during a turn — that needs a DOM signal the client does not publish.

License

MIT

Plugins associés