Direkt zum Inhalt
ColliePWA

Themes: Wähle ein Erscheinungsbild oder bring dein eigenes mit.

Ein Theme ist eine einzelne kleine JSON-Datei. Sie enthält Farben, Schrift, Form, Erscheinungsbild und eine Terminalpalette. ColliePWA liefert vier davon mit, und du kannst weitere aus einer Datei auf deinem Telefon importieren.

01/Was es ist

Ein Theme ist eine Datei für das Erscheinungsbild.

Ein Theme benennt die Farben der App, einmal für eine helle Hälfte und einmal für eine dunkle Hälfte. Es kann auch eine Schriftart, eine Schriftart für Titel, eine Form, ein Erscheinungsbild und die Farben der Terminal-Spiegelung benennen. Form und Erscheinungsbild sind zehn Wörter, etwa radius, shadow und density. Das Layout, die Tippflächen und die Bedeutung eines Status bleiben, wie sie sind; blockiert ist also in jedem Theme weiterhin blockiert.

Jeder Wert in einer Datei ist ein festgelegtes Wort oder eine geprüfte Farbe. Die Datei kann keinen Code ausführen, und sie kann keine Datei, keine Schriftart und kein Bild laden.

Ein Theme und Darstellung sind zwei Einstellungen. Das Theme legt fest, welche Farben verwendet werden. Darstellung legt fest, welche Hälfte angezeigt wird: System, Hell oder Dunkel.

02/Auswählen

Wähle ein Theme in den Einstellungen aus.

Öffne die Einstellungen, dann Darstellung, und tippe auf ein Theme. Es wird sofort ohne Neuladen angewendet, und beim nächsten Öffnen von ColliePWA ist bereits das erste Bild in diesem Theme. Ein Fingertipp auf Collie stellt den Standard wieder her.

Ein Theme, das eine Schriftart benennt, legt deine Schriftart einmalig fest. Du kannst sie danach weiterhin auf der Karte Schriftart ändern.

Collie

Schriftart: Aldrich

Das vertraute Erscheinungsbild: neutrale Grautöne, mit Aldrich als Schriftart.

Nightwatch

Schriftart: IBM Plex Sans

flat · bold · strong · band · heavy

Für das Telefon im nächtlichen Bereitschaftsdienst. Eine echt schwarze dunkle Hälfte, flach und kantig, mit dicken Linien, einem gedämpften Bernstein-Akzent und einem gedämpften Bernstein-Band hinter der Kopfzeile und den Leisten.

Terminalpalette

Daylight

Schriftart: Geist

Titel: Atkinson Hyperlegible Next

round · lifted · roomy · gradient · cards · sentence

Für helle Sonne und Sehschwächen. Fließtext mit AAA-Kontrast, runde geräumige Karten, eine Seite, die sich zum Fuß hin verschiebt, und Statusfarben von Blau bis Orange statt von Rot bis Grün.

Terminalpalette

Harbour

Schriftart: Atkinson Hyperlegible Next

Titel: Space Grotesk

soft · lifted · grain · thin

Für Leute, die aus dem Terminal kommen. Kaltes Blaugrau mit einem blaugrünen Akzent, weiche Ecken, eine feine Körnung und dünne Symbole sowie eine Solarized-basierte Terminalpalette auf einem fast schwarzen Blau.

Terminalpalette

03/Importieren

Importiere ein Theme aus einer Datei.

  1. 1Lege eine Theme-Datei auf deinem Telefon ab. Sie endet auf .json und ist kleiner als 64 KiB.
  2. 2Öffne in den Einstellungen unter Erscheinungsbild die Theme-Karte, tippe auf Importieren und wähle die Datei aus.
  3. 3Lies die Vorschau. Sie zeigt die Farben beider Hälften, die Form, die Terminalfarben und einen Kontrastbericht. Ein schwacher Kontrast zeigt eine Warnung, und du kannst das Theme trotzdem anwenden. Eine Datei, die gegen die Regeln verstößt, wird abgelehnt, und nichts ändert sich.

Ein Theme ändert, wie die App aussieht, und sonst nichts. Es kann keinen Code ausführen, keine Dateien laden und keinen Server erreichen.

Ein Gerät speichert bis zu acht importierte Themes. Es gibt keinen Import über einen Link, und Themes synchronisieren sich nicht zwischen Geräten.

04/Schreiben

Schreibe dein eigenes.

Der schnellste Start ist ein mitgeliefertes Theme. Exportiere es, ändere id und name, bearbeite die Farben, die Form-Wörter oder die Terminalpalette und importiere es wieder. Ein importiertes Theme kann nicht die ID eines mitgelieferten Themes verwenden.

Dies ist eine gekürzte harbour.json, eine Datei der Version 2. Die ...-Zeilen stehen für die ausgelassenen Teile.

{
  "version": 2,
  "id": "harbour",
  "name": "Harbour",
  "author": "Collie",
  "light": {
    "background": "oklch(0.95 0.01 235)",
    "foreground": "oklch(0.26 0.025 250)",
    "card": "oklch(0.985 0.004 235)",
    "...": "..."
  },
  "dark": {
    "background": "oklch(0.21 0.018 250)",
    "foreground": "oklch(0.93 0.012 240)",
    "card": "oklch(0.255 0.02 252)",
    "...": "..."
  },
  "fonts": { "ui": "atkinson", "display": "grotesk" },
  "surface": {
    "radius": "soft",
    "shadow": "lifted",
    "density": "default",
    "weight": "default",
    "border": "default",
    "ground": "grain",
    "chrome": "page",
    "rows": "rules",
    "icons": "thin",
    "labels": "caps"
  },
  "ansi": {
    "0": "#073642",
    "1": "#f0504a",
    "2": "#859900",
    "...": "..."
  }
}

Die 43 Token

Eine Theme-Datei darf nur diese Token in vier Gruppen benennen. Eine Datei mit einem anderen Schlüssel wird abgelehnt.

GruppeWas sie färbtToken
Oberflächen und Textfarben21Die Seite, Karten, Kopf- und Leistenbereiche, Text, Schaltflächen, Rahmen und der Fokusring.
  • background
  • foreground
  • card
  • card-foreground
  • chrome
  • primary
  • primary-foreground
  • secondary
  • secondary-foreground
  • muted
  • muted-foreground
  • accent
  • accent-foreground
  • control-on
  • control-on-foreground
  • destructive
  • destructive-foreground
  • border
  • input
  • rule
  • ring
Status6Die Agentenzustände und die Info-Farbe.
  • status-blocked
  • status-working
  • status-done
  • status-idle
  • status-unknown
  • status-info
Syntax6Die Textfarben in Diffs und Code.
  • syntax-keyword
  • syntax-string
  • syntax-constant
  • syntax-property
  • syntax-entity
  • syntax-comment
Host-Identität10Die Farben, die deine Rechner voneinander unterscheiden.
  • host-0
  • host-1
  • host-2
  • host-3
  • host-4
  • host-5
  • host-6
  • host-7
  • host-8
  • host-9

Form und Erscheinungsbild

Der surface-Block enthält zehn Wörter. Jedes stammt aus einer festen Liste, und ein weggelassenes Token behält seinen Standardwert, das erste Wort seiner Liste. Eine freie Zahl wird nie akzeptiert, ein Theme kann also keine Tippfläche beschädigen.

radius
Die Ecke einer Karte, einer Zeile, eines Felds und einer Schaltfläche.
  • sharp
  • soft
  • round
shadow
Der Schatten unter hervorgehobenen Bedienfeldern.
  • default
  • flat
  • lifted
density
Wie viel Platz innerhalb und zwischen Steuerelementen liegt.
  • default
  • roomy
weight
Wie dick Text in Medium und Semibold dargestellt wird.
  • default
  • bold
border
Die Breite einer Haarlinie.
  • default
  • strong
ground
Die Seite hinter allem: flach, ein weicher Verlauf oder eine feine Körnung.
  • flat
  • gradient
  • grain
chrome
Die Kopfzeile und die Leisten: auf der Seitenfarbe oder auf einem eigenen Band.
  • page
  • band
rows
Eine Liste als eine umrahmte Gruppe mit Trennlinien oder als eine Karte für jede Zeile.
  • rules
  • cards
icons
Die Strichstärke jedes Symbols.
  • default
  • thin
  • heavy
labels
Kleine Abschnittsbeschriftungen, in Großbuchstaben oder mit großem Anfangsbuchstaben.
  • caps
  • sentence

Terminalpalette

Der ansi-Block enthält 18 Farben oder keine: die 16 Terminalfarben, ink und ground. Jede ist #rrggbb oder oklch(L C H), und jede durchläuft eine Prüfung.

Werte
Ein Wert ist eine Farbe: #rrggbb, #rrggbbaa oder oklch(L C H), mit / A für die Deckkraft. L reicht von 0 bis 1, C von 0 bis 0.5 und H von 0 bis 360, jeweils als reine Zahlen.
Hälften
Gib light, dark oder beides an. Eine Hälfte, die du auslässt, wird Token für Token aus Collie ergänzt.
Schriftarten
Das optionale fonts.ui benennt eine der Schriftarten, die ColliePWA mitbringt. Das optionale fonts.display benennt eine für Titel. Keine andere Schriftart wird akzeptiert.
Was abgelehnt wird
Ein Schlüssel außerhalb der Liste, eine andere Version als 1 oder 2, ein Wert, der keine Farbe und kein Form-Wort ist, var(), url() oder eine andere Funktion, die ID eines mitgelieferten Themes und eine Datei über 64 KiB. Die Meldung benennt die Ursache, und nichts wird angewendet.
Version
version ist 1 oder 2. Eine Datei mit einem surface-Block, einem fonts.display-Schriftschnitt oder einem ansi-Block gibt 2 an. Eine version-2-Datei erfordert ColliePWA 1.22.0 oder neuer.

05/Teilen

Exportieren und teilen.

Der Export schreibt das aktive Theme als .collie-theme.json-Datei. Sende sie an jemanden oder bewahre sie in einem Repository auf, und die Person importiert sie auf dieselbe Weise wie du.

Details in Farbschemata