initial commit [141.14.140.180,mike]

This commit is contained in:
2026-08-16 13:06:32 +02:00
commit b1ed54da53
18 changed files with 2040 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
.DS_Store
.AppleDouble
.LSOverride
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
+240
View File
@@ -0,0 +1,240 @@
# mwxcol
Eine Farbpalette und die Themes, die sie auf die benutzten Werkzeuge übertragen.
Quelle der Wahrheit ist `mwxcol.go` — alles andere ist davon abgeleitet.
`go run mwxcol.go` druckt die Palette zur Sichtprüfung ins Terminal.
## Palette
| Name | Hex | Dezimal | Rolle |
|--------|-----------|---------------|-------|
| white | `#F0F0EA` | 240,240,234 | normaler Text, Vordergrund |
| yellow | `#F9E2AF` | 249,226,175 | Änderung, Warnung, Build-Dateien |
| orange | `#FAB387` | 250,179,135 | Archive, Präprozessor |
| red | `#F38BA8` | 243,139,168 | Fehler, Löschung, Strings |
| green | `#94E2D5` | 148,226,213 | ausführbar, neu, ok (eigentlich ein Mint/Teal) |
| blue | `#B4BEFE` | 180,190,254 | Verzeichnisse, Quelltext, Datum |
| pink | `#F5B2F7` | 245,178,247 | Symlinks, Keywords, Treffer |
| violet | `#CBA6F7` | 203,166,247 | Typen, Bilder, Sonderdateien |
| grey | `#AAAABB` | 170,170,187 | Sekundärtext, Kommentare |
| dark | `#777788` | 119,119,136 | Attribute, deaktiviert |
| darker | `#444455` | 68,68,85 | Trenner, Rahmen, Hintergrundakzent |
Die Palette enthält **keine Hintergrundfarbe**. Als Terminal-Hintergrund dient
`#252528` (iTerm2-Profil „Default"); wo ein Theme einen Hintergrund braucht,
steht dieser Wert oder `darker`.
## Installation auf einem neuen Rechner
```sh
git clone <repo> ~/src/mwxcol
cd ~/src/mwxcol
./install.sh --check # zeigt erst, was passieren würde
./install.sh # kopiert, sichert Vorhandenes nach .bak
exec zsh
```
`./install.sh --link` symlinkt statt zu kopieren. Das ist die bessere Variante,
wenn das Repo dauerhaft an seinem Platz bleibt: dann können installierte Datei
und Repo-Kopie nicht mehr auseinanderlaufen. `--check` sagt jederzeit, ob sie
es doch getan haben.
Nova muss nach der Installation einmal neu gestartet werden; das Theme steht
dann unter *Einstellungen > Themes > mwx*.
## Was wo landet
| Werkzeug | Repo | Ziel | Wie es geladen wird |
|---|---|---|---|
| eza | `themes/eza/theme.yml` | `~/.config/eza/theme.yml` | automatisch aus dem Config-Verzeichnis |
| joe | `themes/joe/default.jcf` | `~/.joe/colors/default.jcf` | Schema `default`, verdeckt die System-Version |
| fzf | `themes/fzf/colors.zsh` | `~/.config/mwxcol/fzf-colors.zsh` | `source` in `~/.zshrc` → `FZF_DEFAULT_OPTS` |
| iTerm2 | `themes/iterm/mwxcol.itermcolors` | `~/.config/mwxcol/mwxcol.itermcolors` | einmalig importieren, siehe unten |
| Nova | `themes/nova/mwx.novaextension` | `~/Library/.../Nova/Extensions/org.mwx` | Nova-Extension, Theme `mwx` |
| Xcode | `themes/xcode/mwxcol.xccolortheme` | `~/Library/Developer/Xcode/UserData/FontAndColorThemes/` | Theme `mwxcol`, einmal auswählen, siehe unten |
| Claude Code | `themes/claude-code/mwxcol.json` | `~/.claude/themes/mwxcol.json` | `"theme": "custom:mwxcol"` in `settings.json` |
Getestet mit eza 0.23.5, joe 4.6, fzf 0.70.0 (und 0.58.0), iTerm2 3.6.11,
Nova, Xcode 26.6 und Claude Code 2.1.220 auf macOS.
## iTerm2
Die Palette deckt die 16 ANSI-Slots nicht von sich aus ab: ein Cyan fehlt, und
eigene bright-Varianten gibt es auch nicht. Die fehlenden sechs Werte sind
**nicht neu erfunden**, sondern wörtlich aus dem Nova-Theme übernommen, das
dieselbe Lücke bereits geschlossen hatte — dadurch sehen Novas Terminal und
iTerm2 identisch aus. Abgeleitete Werte sind unten mit \* markiert.
| Slot | Farbe | | Slot | Farbe | |
|---|---|---|---|---|---|
| 0 black | `#444455` | darker | 8 br-black | `#777788` | dark |
| 1 red | `#F38BA8` | red | 9 br-red | `#F7B5C8` | \* |
| 2 green | `#94E2D5` | green | 10 br-green | `#B8EAE1` | \* |
| 3 yellow | `#F9E2AF` | yellow | 11 br-yellow | `#FCEECB` | \* |
| 4 blue | `#B4BEFE` | blue | 12 br-blue | `#CDD4FE` | \* |
| 5 magenta | `#CBA6F7` | violet | 13 br-magenta| `#F5B2F7` | pink |
| 6 cyan | `#94DAE0` | \* | 14 br-cyan | `#B8E7EB` | \* |
| 7 white | `#AAAABB` | grey | 15 br-white | `#F0F0EA` | white |
Dazu Vordergrund `white`, Hintergrund `#252528` (unverändert), Cursor `red` mit
dunklem Cursor-Text, Auswahl `darker`, Links `blue`.
**Import** — iTerm2 hält seine Einstellungen im Speicher und schreibt sie beim
Beenden zurück. Eine direkt bearbeitete Plist wäre also wieder weg; der Import
muss durch die Oberfläche:
Einstellungen > Profiles > Colors > Color Presets… > Import…
~/.config/mwxcol/mwxcol.itermcolors
Danach im selben Menü `mwxcol` auswählen. Der Preset-Name kommt aus dem
Dateinamen. Die älteren Presets `mwx` und `mwxdark` bleiben unangetastet — sie
tragen noch die grellen Standard-ANSI-Töne und sind *nicht* diese Palette.
`themes/iterm/preview.sh` setzt die Palette per Escape-Sequenz in der laufenden
Session, ohne etwas zu speichern — zum Ansehen vor dem Import. Ein neuer Tab
hat wieder die alten Farben.
## Xcode
Xcode liest jede `.xccolortheme` aus dem Ordner oben und zeigt sie unter dem
Dateinamen an — das Theme heißt also `mwxcol`, wie das iTerm2-Preset. Die
älteren Themes `mwx` und `mwxdark` bleiben unangetastet.
Auswählen: **Einstellungen > Themes > mwxcol**. Xcode führt hell und dunkel
getrennt (`XCFontAndColorCurrentTheme` bzw. `…CurrentDarkTheme`), das Theme
also in beiden Erscheinungsbildern wählen, wenn es überall gelten soll.
`./install.sh --check` liest beide Werte und sagt, was gerade aktiv ist.
Ein laufendes Xcode sieht die neue Datei erst nach einem Neustart.
Die Zuordnung folgt dem Nova-Theme, damit beide Editoren gleich aussehen:
| Xcode-Element | Farbe | | Xcode-Element | Farbe |
|---|---|---|---|---|
| Plain Text, Variablen | white | | Keywords | violet |
| Kommentare, Doc-Kommentare | dark | | Strings | green |
| Doc-Schlüsselwörter, `MARK:` | grey | | Attribute (`@State`) | green |
| Typen und Klassen | yellow | | Zahlen, Zeichen | orange |
| Typ-Deklaration | yellow | | Präprozessor, Makros | orange |
| Funktionen, andere Deklarationen | blue | | Konstanten | orange |
| URLs | blue | | Reguläre Ausdrücke | pink |
Unsichtbare Zeichen sind `darker`, der Cursor ist `red` wie im iTerm2-Preset,
die Zeile mit dem Debugger `green` mit 25 % Deckkraft. Marker im Scrollbalken
folgen der Palette: Fehler `red`, Warnung `yellow`, Laufzeitproblem `orange`,
Analyzer `violet`, Breakpoint `blue`, Diff `grey`.
Die Flächen sind die einzigen Werte außerhalb der Palette. Der Editor ist
`#15151C` — dunkler als der Terminal-Hintergrund und anders als überall sonst
hier, weil er in Xcode so eingestellt wurde; Auswahl und aktuelle Zeile sind
`#20202B`, die Konsole behält `#252528` aus dem iTerm2-Profil und der
Quick-Help-Kasten `#2E2E35` (`darker` mit 30 % über `#252528`).
Drei Dinge, die man beim Anpassen wissen muss:
**Xcode unterscheidet eigene und fremde Symbole, dieses Theme nicht.** Für
Klassen, Typen, Funktionen, Variablen, Konstanten und Makros gibt es jeweils
einen Schlüssel für Projekt-Symbole und einen mit `.system` für Symbole aus
Frameworks. Beide tragen hier denselben Wert, weil die Palette keine freien
Farbtöne mehr hat, mit denen die Unterscheidung nicht wie eine zweite Bedeutung
aussähe. Wer sie doch will, setzt die sechs `.system`-Schlüssel auf `violet`
`#CBA6F7` — dann sind Framework-Symbole durchgehend violett wie in Xcodes
eigenem Dark-Theme, kollidieren aber mit den Keywords.
**Schriften stehen mit im Theme, nicht nur Farben.** Alle Syntax-Schlüssel
tragen `HackNFM-Regular - 15.0` (Hack Nerd Font Mono), der Quick-Help-Text
`.SFNS-Regular - 14.0`. Andere Schrift gewünscht: die Werte in
`DVTSourceTextSyntaxFonts` ersetzen — Xcode erwartet den PostScript-Namen
(`HackNFM-Regular`), nicht den Anzeigenamen („Hack Nerd Font Mono"). Fette
Schnitte für Keywords und Deklarationen hat das Theme absichtlich nicht mehr:
Xcode ebnet sie beim nächsten Zurückschreiben ohnehin ein, siehe unten.
**Wer das Theme in den Einstellungen anfasst, schreibt die Datei um.** Xcode
speichert dann seine eigene Fassung, und die ist nicht nur ohne Kommentare —
beobachtet an Xcode 26.6 nach einer Größenänderung in der Oberfläche:
* `DVTFontSizeModifier` verschwindet und wird in die Schriftgrößen eingerechnet,
* die Schnitte werden eingeebnet, `HackNFM-Bold` wird überall zu `-Regular`,
* Schlüssel, die Xcodes eigenes Theme-Modell nicht führt, fallen heraus —
hier `xcode.syntax.markup.aside.kind` und `DVTDebuggerInstructionPointerColor`
(letzterer steht nur im Theme der `SourceEditor.framework`).
`--check` meldet die installierte Datei danach als „WEICHT AB"; wer die
Änderung behalten will, überträgt sie von Hand ins Repo, sonst überschreibt der
nächste `./install.sh` sie kommentarlos (das Backup liegt als `.bak` daneben).
Bei `--link` ersetzt Xcode womöglich den Symlink durch eine echte Datei, dann
ist die Verbindung ganz aufgehoben.
## Claude Code
Ab Version 2.1.220 liest Claude Code eigene Themes aus `~/.claude/themes/*.json`
(mit `CLAUDE_CONFIG_DIR` verschiebt sich das Verzeichnis mit). Aufbau:
```json
{ "name": "mwxcol", "base": "dark", "overrides": { "text": "#F0F0EA", … } }
```
`base` ist eines der eingebauten Themes, `overrides` überschreibt einzelne
Farbschlüssel davon. Erlaubt sind `#RRGGBB`, `#RGB`, `rgb(r,g,b)`, `ansi256(n)`
und `ansi:<name>`; unbekannte Schlüssel und ungültige Werte werden still
verworfen. Ausgewählt wird das Theme über `/theme` oder direkt mit
`"theme": "custom:mwxcol"` in `~/.claude/settings.json` — der Dateiname ist der
Slug. Claude Code beobachtet das Verzeichnis, Änderungen greifen sofort.
Dieses Theme setzt **alle** 72 Schlüssel des `dark`-Themes, damit keine Farbe
aus dem Original durchschlägt:
| Element | Farbe | | Element | Farbe |
|---|---|---|---|---|
| Fließtext | white | | Erfolg, Plan-Modus | green |
| Sekundärtext, inaktiv | grey | | Fehler | red |
| Prompt-Rahmen | dark | | Warnung | yellow |
| Auswahl, Flächen | darker | | Claude selbst, Fast Mode | orange |
| Rechte, Vorschläge, IDE | blue | | Bash-Rahmen | pink |
| Auto-Accept, Skills | violet | | | |
Die Shimmer-Varianten (die hellere Farbe der Laufanimation) nehmen, wo es sie
gibt, die abgeleiteten Hellwerte aus der iTerm2-Tabelle oben — `blue` schimmert
also nach `#CDD4FE`, `violet` nach `pink`.
Die Diff-Hintergründe sind die einzigen gemischten Werte: `green` bzw. `red`
mit 30 % Deckkraft über `#252528` (`#465E5C` / `#63444E`), auf Wortebene mit
50 %, für die gedimmte Fassung mit 15 %. Nachrichtenflächen sind `darker` mit
30 % über `#252528` (`#2E2E35`).
**Ein einfacherer Weg, der die Palette nicht braucht:** das eingebaute Theme
`dark-ansi` nimmt die 16 ANSI-Farben des Terminals — nach dem iTerm2-Import
sind das ohnehin die Farben von hier, dann aber gerundet auf die 16 Slots.
`custom:mwxcol` ist genauer und gilt auch in Terminals ohne das Preset.
## Fallstricke
Vier Dinge, die beim Übertragen Zeit gekostet haben und beim nächsten Mal Zeit
sparen:
**eza mergt über sein eingebautes Theme, es ersetzt es nicht.** Wer nur
`foreground` setzt, erbt `is_bold` und `is_underline` aus eza's Default. Genau
so entstand die Unterstreichung bei `README.md` und `Makefile` — die stecken in
`file_type: build`, und dessen Default ist *bold + underline*. Deshalb steht im
Theme an mehreren Stellen ein explizites `is_underline: false`, das sonst
überflüssig aussähe. Beim Ergänzen neuer Klassen daran denken.
**joes Statuszeile bleibt invers, egal was `-status` sagt.** Das kommt aus dem
`\i` (= Inverse, joe(1)) am Anfang von `-lmsg` in `~/.joerc`. Wer dort die
Palette sehen will, muss das `\i` entfernen — nicht am Theme drehen.
**`FZF_DEFAULT_OPTS` hängt an, es überschreibt nicht.** Die Zeile lautet
`FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS'…'`. Zweimal sourcen hängt den Block zweimal
an; funktional gewinnt zwar das letzte `--color`, sauber ist es nicht. Nach
Änderungen `exec zsh` statt `source ~/.zshrc`.
**joe `-term 0..15` reicht auf die Terminal-Palette durch.** Das Theme lässt die
16 nummerierten Farben absichtlich auf der Identität (`-term 0 0` …), damit alte
Syntax-Dateien, die Farben per Nummer angeben, die Terminal-Palette benutzen.
Das ist erst korrekt, *nachdem* das iTerm2-Preset importiert ist — vorher landen
solche Dateien auf den grellen Standard-ANSI-Tönen. Auf einem Rechner mit einem
anderen, nicht angepassten Terminal gilt dasselbe: dann entweder dort die
Palette setzen oder im joe-Theme `-term 1 $F38BA8`, `-term 2 $94E2D5` usw. auf
Hex ziehen. Betroffen sind wenige Dateitypen — die mitgelieferten Syntax-Dateien
von joe 4.6 benutzen überwiegend Klassennamen statt Nummern.
Executable
BIN
View File
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
module mwxcol
go 1.26.1
require (
github.com/fatih/color v1.19.0 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
golang.org/x/sys v0.42.0 // indirect
)
+9
View File
@@ -0,0 +1,9 @@
github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w=
github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
Executable
+214
View File
@@ -0,0 +1,214 @@
#!/bin/sh
# mwxcol — Farbschema auf diesem Rechner installieren.
# Siehe README.md für die Palette und die einzelnen Zuordnungen.
set -eu
REPO=$(cd "$(dirname "$0")" && pwd)
MODE=install
USE_LINK=0
usage() {
cat <<EOF
mwxcol — Farbschema installieren
./install.sh Themes kopieren (vorhandene Dateien nach .bak sichern)
./install.sh --link statt kopieren ins Repo symlinken — dann kann
nichts mehr auseinanderlaufen, das Repo muss aber
an seinem Platz bleiben ($REPO)
./install.sh --check nur vergleichen, nichts verändern
./install.sh --help
Ziele:
eza ~/.config/eza/theme.yml
joe ~/.joe/colors/default.jcf
fzf ~/.config/mwxcol/fzf-colors.zsh (+ eine source-Zeile in ~/.zshrc)
iTerm ~/.config/mwxcol/mwxcol.itermcolors (danach einmal importieren)
Nova ~/Library/Application Support/Nova/Extensions/org.mwx (nur macOS)
Xcode ~/Library/Developer/Xcode/UserData/FontAndColorThemes/mwxcol.xccolortheme
cc ~/.claude/themes/mwxcol.json (Claude Code, danach /theme)
EOF
}
while [ $# -gt 0 ]; do
case "$1" in
--link) USE_LINK=1 ;;
--check) MODE=check ;;
--help|-h) usage; exit 0 ;;
*) echo "unbekannte Option: $1" >&2; usage >&2; exit 2 ;;
esac
shift
done
say() { printf ' %-6s %-46s %s\n' "$1" "$2" "$3"; }
# Kürzt $HOME zu ~ für die Ausgabe.
tilde() { printf '%s' "$1" | sed "s|^$HOME|~|"; }
# install_path <name> <quelle-im-repo> <ziel>
# Funktioniert für Dateien und Verzeichnisse.
install_path() {
name=$1; src=$2; dst=$3
short=$(tilde "$dst")
if [ ! -e "$src" ]; then
say "$name" "$short" "QUELLE FEHLT: $src"
return 0
fi
if [ -L "$dst" ] && [ "$(readlink "$dst")" = "$src" ]; then
say "$name" "$short" "ok (Symlink ins Repo)"
[ "$MODE" = check ] && return 0
[ "$USE_LINK" = 1 ] && return 0
fi
if [ -e "$dst" ] && diff -r -q "$src" "$dst" >/dev/null 2>&1; then
say "$name" "$short" "ok (identisch)"
[ "$MODE" = check ] && return 0
[ "$USE_LINK" = 0 ] && return 0
fi
if [ "$MODE" = check ]; then
if [ -e "$dst" ]; then
say "$name" "$short" "WEICHT AB"
else
say "$name" "$short" "fehlt"
fi
return 0
fi
mkdir -p "$(dirname "$dst")"
if [ -e "$dst" ] && [ ! -L "$dst" ]; then
rm -rf "$dst.bak"
cp -R "$dst" "$dst.bak"
note="Backup: $(basename "$dst").bak"
else
note=""
fi
rm -rf "$dst"
if [ "$USE_LINK" = 1 ]; then
ln -sfn "$src" "$dst"
say "$name" "$short" "verlinkt $note"
else
cp -R "$src" "$dst"
say "$name" "$short" "kopiert $note"
fi
}
echo "mwxcol aus $REPO"
[ "$MODE" = check ] && echo "(nur Prüfung — es wird nichts verändert)"
echo
install_path eza "$REPO/themes/eza/theme.yml" "$HOME/.config/eza/theme.yml"
install_path joe "$REPO/themes/joe/default.jcf" "$HOME/.joe/colors/default.jcf"
install_path fzf "$REPO/themes/fzf/colors.zsh" "$HOME/.config/mwxcol/fzf-colors.zsh"
if [ "$(uname)" = "Darwin" ]; then
install_path iterm "$REPO/themes/iterm/mwxcol.itermcolors" \
"$HOME/.config/mwxcol/mwxcol.itermcolors"
else
say iterm "-" "übersprungen (nur macOS)"
fi
if [ "$(uname)" = "Darwin" ]; then
install_path nova "$REPO/themes/nova/mwx.novaextension" \
"$HOME/Library/Application Support/Nova/Extensions/org.mwx"
else
say nova "-" "übersprungen (nur macOS)"
fi
if [ "$(uname)" = "Darwin" ]; then
install_path xcode "$REPO/themes/xcode/mwxcol.xccolortheme" \
"$HOME/Library/Developer/Xcode/UserData/FontAndColorThemes/mwxcol.xccolortheme"
else
say xcode "-" "übersprungen (nur macOS)"
fi
# Claude Code liest ~/.claude/themes/*.json und benennt das Theme nach dem
# Dateinamen; CLAUDE_CONFIG_DIR verschiebt das Verzeichnis.
install_path cc "$REPO/themes/claude-code/mwxcol.json" \
"${CLAUDE_CONFIG_DIR:-$HOME/.claude}/themes/mwxcol.json"
# fzf wird nicht über eine Theme-Datei geladen, sondern über eine Umgebungs-
# variable — die Datei oben muss also von der Shell gesourct werden.
echo
SRC_LINE='[ -f ~/.config/mwxcol/fzf-colors.zsh ] && source ~/.config/mwxcol/fzf-colors.zsh'
if [ -f "$HOME/.zshrc" ] && grep -q 'mwxcol/fzf-colors.zsh' "$HOME/.zshrc"; then
echo "fzf: ~/.zshrc sourct die Farbdatei bereits."
elif [ -f "$HOME/.zshrc" ] && grep -q '# fzf — Palette aus mwxcol.go' "$HOME/.zshrc"; then
echo "fzf: ~/.zshrc enthält den Farbblock bereits direkt — nichts zu tun."
echo " (Wer stattdessen die Repo-Datei sourcen will: Block löschen und"
echo " diese Zeile eintragen)"
echo " $SRC_LINE"
else
echo "fzf: noch nicht in ~/.zshrc verdrahtet. Diese Zeile eintragen:"
echo " $SRC_LINE"
fi
# iTerm2 hält seine Einstellungen im Speicher und schreibt sie beim Beenden
# zurück — eine direkt bearbeitete Plist wäre also wieder weg. Deshalb wird
# das Preset nur bereitgelegt und einmalig von Hand importiert.
if [ "$(uname)" = "Darwin" ] && [ -e "$HOME/Library/Preferences/com.googlecode.iterm2.plist" ]; then
echo
themed=$(python3 - <<'PY' 2>/dev/null || true
import plistlib, subprocess, os
p = os.path.expanduser("~/Library/Preferences/com.googlecode.iterm2.plist")
xml = subprocess.run(["plutil","-convert","xml1","-o","-",p],
capture_output=True).stdout
d = plistlib.loads(xml)
for prof in d.get("New Bookmarks", []):
if prof.get("Name") != "Default":
continue
c = prof.get("Ansi 1 Color") or {}
hx = "%02X%02X%02X" % tuple(round(c.get(k, 0) * 255)
for k in ("Red Component", "Green Component", "Blue Component"))
print("ja" if hx == "F38BA8" else "nein")
PY
)
if [ "$themed" = "ja" ]; then
echo "iTerm2: Profil \"Default\" trägt die Palette bereits."
else
echo "iTerm2: Profil \"Default\" trägt noch nicht die Palette. Einmalig:"
echo " Einstellungen > Profiles > Colors > Color Presets… > Import…"
echo " $(tilde "$HOME/.config/mwxcol/mwxcol.itermcolors")"
echo " danach im selben Menü \"mwxcol\" auswählen."
echo " Vorher ansehen: $(tilde "$REPO")/themes/iterm/preview.sh"
fi
fi
# Claude Code merkt sich das Theme in den Settings, nicht am Dateinamen.
CC_SETTINGS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/settings.json"
if [ -f "$CC_SETTINGS" ]; then
echo
if grep -q '"theme"[[:space:]]*:[[:space:]]*"custom:mwxcol"' "$CC_SETTINGS"; then
echo "Claude Code: Theme mwxcol ist gewählt."
else
echo "Claude Code: Theme noch nicht gewählt — /theme > mwxcol, oder in"
echo " $(tilde "$CC_SETTINGS") eintragen: \"theme\": \"custom:mwxcol\""
fi
fi
# Xcode führt hell und dunkel getrennt (XCFontAndColorCurrentTheme und
# …CurrentDarkTheme). Die Datei bereitzulegen reicht also nicht, sie muss in
# den Einstellungen ausgewählt werden — und ein laufendes Xcode sieht eine neu
# hinzugekommene Theme-Datei erst nach dem Neustart.
if [ "$(uname)" = "Darwin" ] && [ -d "$HOME/Library/Developer/Xcode" ]; then
echo
light=$(defaults read com.apple.dt.Xcode XCFontAndColorCurrentTheme 2>/dev/null || echo "—")
dark=$(defaults read com.apple.dt.Xcode XCFontAndColorCurrentDarkTheme 2>/dev/null || echo "—")
if [ "$light" = "mwxcol.xccolortheme" ] && [ "$dark" = "mwxcol.xccolortheme" ]; then
echo "Xcode: mwxcol ist gewählt (hell und dunkel)."
else
echo "Xcode: mwxcol noch nicht überall gewählt."
echo " aktuell hell: $light"
echo " aktuell dunkel: $dark"
echo " Einstellungen > Themes > mwxcol (Xcode ggf. vorher neu starten)."
fi
fi
if [ "$MODE" != check ]; then
echo
echo "Danach: exec zsh — Nova-Theme unter Einstellungen > Themes > mwx wählen."
fi
Executable
BIN
View File
Binary file not shown.
+58
View File
@@ -0,0 +1,58 @@
package main
import (
"fmt"
"github.com/fatih/color"
)
type rgb struct{ r, g, b int }
func (c rgb) hex() string { return fmt.Sprintf("#%02X%02X%02X", c.r, c.g, c.b) }
func (c rgb) dec() string { return fmt.Sprintf("%d,%d,%d", c.r, c.g, c.b) }
func main() {
var white = rgb{0xf0, 0xf0, 0xea}
var yellow = rgb{0xf9, 0xe2, 0xaf}
var orange = rgb{0xfa, 0xb3, 0x87}
var red = rgb{0xf3, 0x8b, 0xa8}
var green = rgb{0x94, 0xe2, 0xd5}
var blue = rgb{0xb4, 0xbe, 0xfe}
var pink = rgb{0xf5, 0xb2, 0xf7}
var violet = rgb{0xcb, 0xa6, 0xf7}
var grey = rgb{0xaa, 0xaa, 0xbb}
var dark = rgb{0x77, 0x77, 0x88}
var darker = rgb{0x44, 0x44, 0x55}
mwxcol(white, "white")
mwxcol(yellow, "yellow")
mwxcol(orange, "orange")
mwxcol(red, "red")
mwxcol(green, "green")
mwxcol(blue, "blue")
mwxcol(pink, "pink")
mwxcol(violet, "violet")
mwxcol(grey, "grey")
mwxcol(dark, "dark")
mwxcol(darker, "darker")
}
func mwxcol(col rgb, txt string) {
c := color.RGB(col.r,col.g,col.b)
bc := color.New(color.Bold).AddRGB(col.r,col.g,col.b)
bc.Printf("%-8s",txt)
c.Printf(" %s ", col.hex())
c.Printf(" %-11s ", col.dec())
c.Print(" Hallo World 1234567890._\\/^:|!@#$€π ")
bc.Println("BOLD world")
}
+78
View File
@@ -0,0 +1,78 @@
{
"name": "mwxcol",
"base": "dark",
"overrides": {
"autoAccept": "#CBA6F7",
"autoAcceptShimmer": "#F5B2F7",
"background": "#94DAE0",
"bashBorder": "#F5B2F7",
"bashMessageBackgroundColor": "#3E3641",
"blue_FOR_SUBAGENTS_ONLY": "#B4BEFE",
"briefLabelClaude": "#FAB387",
"briefLabelYou": "#B4BEFE",
"chromeYellow": "#F9E2AF",
"claude": "#FAB387",
"claudeBlueShimmer_FOR_SYSTEM_SPINNER": "#CDD4FE",
"claudeBlue_FOR_SYSTEM_SPINNER": "#B4BEFE",
"claudeShimmer": "#F9E2AF",
"clawd_background": "#252528",
"clawd_body": "#FAB387",
"composerSidebarBackground": "#2E2E35",
"cyan_FOR_SUBAGENTS_ONLY": "#94DAE0",
"diffAdded": "#465E5C",
"diffAddedDimmed": "#364142",
"diffAddedWord": "#5C847E",
"diffRemoved": "#63444E",
"diffRemovedDimmed": "#44343B",
"diffRemovedWord": "#8C5868",
"effortUltra": "#CBA6F7",
"error": "#F38BA8",
"fastMode": "#FAB387",
"fastModeShimmer": "#F9E2AF",
"green_FOR_SUBAGENTS_ONLY": "#94E2D5",
"ide": "#B4BEFE",
"inactive": "#AAAABB",
"inactiveShimmer": "#F0F0EA",
"inverseText": "#252528",
"memoryBackgroundColor": "#363742",
"merged": "#CBA6F7",
"orange_FOR_SUBAGENTS_ONLY": "#FAB387",
"permission": "#B4BEFE",
"permissionShimmer": "#CDD4FE",
"pink_FOR_SUBAGENTS_ONLY": "#F5B2F7",
"planMode": "#94E2D5",
"professionalBlue": "#B4BEFE",
"promptBorder": "#777788",
"promptBorderShimmer": "#AAAABB",
"purple_FOR_SUBAGENTS_ONLY": "#CBA6F7",
"rainbow_blue": "#B4BEFE",
"rainbow_blue_shimmer": "#CDD4FE",
"rainbow_green": "#94E2D5",
"rainbow_green_shimmer": "#B8EAE1",
"rainbow_indigo": "#CBA6F7",
"rainbow_indigo_shimmer": "#F5B2F7",
"rainbow_orange": "#FAB387",
"rainbow_orange_shimmer": "#F9E2AF",
"rainbow_red": "#F38BA8",
"rainbow_red_shimmer": "#F7B5C8",
"rainbow_violet": "#F5B2F7",
"rainbow_violet_shimmer": "#F5B2F7",
"rainbow_yellow": "#F9E2AF",
"rainbow_yellow_shimmer": "#FCEECB",
"rate_limit_empty": "#444455",
"rate_limit_fill": "#B4BEFE",
"red_FOR_SUBAGENTS_ONLY": "#F38BA8",
"remember": "#B4BEFE",
"selectionBg": "#444455",
"skill": "#CBA6F7",
"subtle": "#777788",
"success": "#94E2D5",
"suggestion": "#B4BEFE",
"text": "#F0F0EA",
"userMessageBackground": "#2E2E35",
"userMessageBackgroundHover": "#444455",
"warning": "#F9E2AF",
"warningShimmer": "#FCEECB",
"yellow_FOR_SUBAGENTS_ONLY": "#F9E2AF"
}
}
+123
View File
@@ -0,0 +1,123 @@
# eza theme — Palette aus coltest.go
#
# white #F0F0EA pink #F5B2F7
# yellow #F9E2AF violet #CBA6F7
# orange #FAB387 grey #AAAABB
# red #F38BA8 dark #777788
# green #94E2D5 darker #444455
# blue #B4BEFE
#
# Ort: ~/.config/eza/theme.yml (oder $EZA_CONFIG_DIR/theme.yml)
# Getestet mit eza 0.23.5.
colourful: true
filekinds:
normal: {foreground: "#F0F0EA"} # white
directory: {foreground: "#B4BEFE", is_bold: true} # blue
symlink: {foreground: "#F5B2F7", is_underline: false} # pink
pipe: {foreground: "#CBA6F7"} # violet
block_device: {foreground: "#FAB387"} # orange
char_device: {foreground: "#F9E2AF"} # yellow
socket: {foreground: "#F5B2F7", is_bold: true} # pink
special: {foreground: "#CBA6F7"} # violet
executable: {foreground: "#94E2D5", is_bold: true} # green
mount_point: {foreground: "#B4BEFE", is_underline: false}
perms:
user_read: {foreground: "#94E2D5"} # green
user_write: {foreground: "#F9E2AF"} # yellow
user_execute_file: {foreground: "#F38BA8", is_underline: false} # red
user_execute_other: {foreground: "#F38BA8", is_underline: false} # red
group_read: {foreground: "#94E2D5"}
group_write: {foreground: "#F9E2AF"}
group_execute: {foreground: "#F38BA8", is_underline: false}
other_read: {foreground: "#94E2D5"}
other_write: {foreground: "#F9E2AF"}
other_execute: {foreground: "#F38BA8", is_underline: false}
special_user_file: {foreground: "#F5B2F7", is_underline: false} # pink — setuid
special_other: {foreground: "#F5B2F7", is_underline: false} # pink
attribute: {foreground: "#777788"} # dark — @ / xattr
size:
number_byte: {foreground: "#94E2D5"} # green
number_kilo: {foreground: "#94E2D5"}
number_mega: {foreground: "#F9E2AF"} # yellow
number_giga: {foreground: "#FAB387"} # orange
number_huge: {foreground: "#F38BA8"} # red
unit_byte: {foreground: "#94E2D5"}
unit_kilo: {foreground: "#94E2D5"}
unit_mega: {foreground: "#F9E2AF"}
unit_giga: {foreground: "#FAB387"}
unit_huge: {foreground: "#F38BA8"}
major: {foreground: "#CBA6F7"} # violet — Device-Nummern
minor: {foreground: "#F5B2F7"} # pink
users:
user_you: {foreground: "#F0F0EA"} # white
user_root: {foreground: "#F38BA8"} # red
user_other: {foreground: "#AAAABB"} # grey
group_yours: {foreground: "#AAAABB"} # grey
group_other: {foreground: "#777788"} # dark
group_root: {foreground: "#F38BA8"} # red
links:
normal: {foreground: "#F5B2F7"} # pink
multi_link_file: {foreground: "#CBA6F7"} # violet
git:
new: {foreground: "#94E2D5"} # green
modified: {foreground: "#F9E2AF"} # yellow
deleted: {foreground: "#F38BA8"} # red
renamed: {foreground: "#CBA6F7"} # violet
typechange: {foreground: "#FAB387"} # orange
ignored: {foreground: "#444455"} # darker
conflicted: {foreground: "#F5B2F7"} # pink
git_repo:
branch_main: {foreground: "#94E2D5"} # green
branch_other: {foreground: "#CBA6F7"} # violet
git_clean: {foreground: "#94E2D5"} # green
git_dirty: {foreground: "#F9E2AF"} # yellow
security_context:
none: {foreground: "#777788"} # dark
selinux:
colon: {foreground: "#444455"}
user: {foreground: "#B4BEFE"}
role: {foreground: "#CBA6F7"}
typ: {foreground: "#F5B2F7"}
range: {foreground: "#F9E2AF"}
file_type:
image: {foreground: "#CBA6F7"} # violet
video: {foreground: "#F5B2F7"} # pink
music: {foreground: "#94E2D5"} # green
lossless: {foreground: "#94E2D5"} # green
crypto: {foreground: "#F38BA8"} # red
document: {foreground: "#F0F0EA"} # white
compressed: {foreground: "#FAB387"} # orange
temp: {foreground: "#444455"} # darker
compiled: {foreground: "#AAAABB"} # grey
build: {foreground: "#F9E2AF", is_underline: false} # yellow — README, Makefile, …
source: {foreground: "#B4BEFE"} # blue
punctuation: {foreground: "#444455"} # darker — die - in rwx
date: {foreground: "#B4BEFE"} # blue
inode: {foreground: "#F5B2F7"} # pink
blocks: {foreground: "#777788"} # dark
header: {foreground: "#AAAABB", is_underline: false} # grey
octal: {foreground: "#777788"} # dark
flags: {foreground: "#FAB387"} # orange
symlink_path: {foreground: "#CBA6F7", is_underline: false} # violet
control_char: {foreground: "#F38BA8"} # red
broken_symlink: {foreground: "#F38BA8", is_underline: false} # red
broken_path_overlay: {foreground: "#F38BA8", is_underline: false}
# Eigene Regeln pro Dateiname / Endung — das, was lsd nicht kann:
#
# filenames:
# Makefile: {filename: {foreground: "#F38BA8", is_bold: true}}
# extensions:
# go: {filename: {foreground: "#94E2D5"}}
# md: {filename: {foreground: "#B4BEFE"}}
+9
View File
@@ -0,0 +1,9 @@
# fzf — Palette aus mwxcol.go
export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS'
--color=fg:#AAAABB,bg:#252528,hl:#F5B2F7
--color=fg+:#F0F0EA,bg+:#444455,hl+:#F5B2F7
--color=info:#94E2D5,prompt:#F38BA8,pointer:#CBA6F7
--color=marker:#94E2D5,spinner:#CBA6F7,header:#AAAABB
--color=query:#F0F0EA,disabled:#777788,gutter:#252528
--color=border:#444455,separator:#444455,scrollbar:#777788
--color=label:#AAAABB,preview-fg:#F0F0EA,preview-bg:#252528'
+357
View File
@@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.3333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.26666666666666666</real>
<key>Red Component</key>
<real>0.26666666666666666</real>
</dict>
<key>Ansi 1 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.6588235294117647</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.5450980392156862</real>
<key>Red Component</key>
<real>0.9529411764705882</real>
</dict>
<key>Ansi 10 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.8823529411764706</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9176470588235294</real>
<key>Red Component</key>
<real>0.7215686274509804</real>
</dict>
<key>Ansi 11 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.796078431372549</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9333333333333333</real>
<key>Red Component</key>
<real>0.9882352941176471</real>
</dict>
<key>Ansi 12 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.996078431372549</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.8313725490196079</real>
<key>Red Component</key>
<real>0.803921568627451</real>
</dict>
<key>Ansi 13 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9686274509803922</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.6980392156862745</real>
<key>Red Component</key>
<real>0.9607843137254902</real>
</dict>
<key>Ansi 14 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9215686274509803</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9058823529411765</real>
<key>Red Component</key>
<real>0.7215686274509804</real>
</dict>
<key>Ansi 15 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9176470588235294</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9411764705882353</real>
<key>Red Component</key>
<real>0.9411764705882353</real>
</dict>
<key>Ansi 2 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.8352941176470589</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.8862745098039215</real>
<key>Red Component</key>
<real>0.5803921568627451</real>
</dict>
<key>Ansi 3 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.6862745098039216</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.8862745098039215</real>
<key>Red Component</key>
<real>0.9764705882352941</real>
</dict>
<key>Ansi 4 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.996078431372549</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.7450980392156863</real>
<key>Red Component</key>
<real>0.7058823529411765</real>
</dict>
<key>Ansi 5 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9686274509803922</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.6509803921568628</real>
<key>Red Component</key>
<real>0.796078431372549</real>
</dict>
<key>Ansi 6 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.8784313725490196</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.8549019607843137</real>
<key>Red Component</key>
<real>0.5803921568627451</real>
</dict>
<key>Ansi 7 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.7333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.6666666666666666</real>
<key>Red Component</key>
<real>0.6666666666666666</real>
</dict>
<key>Ansi 8 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.5333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.4666666666666667</real>
<key>Red Component</key>
<real>0.4666666666666667</real>
</dict>
<key>Ansi 9 Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.7843137254901961</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.7098039215686275</real>
<key>Red Component</key>
<real>0.9686274509803922</real>
</dict>
<key>Background Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.1568627450980392</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.1450980392156863</real>
<key>Red Component</key>
<real>0.1450980392156863</real>
</dict>
<key>Badge Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.6588235294117647</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.5450980392156862</real>
<key>Red Component</key>
<real>0.9529411764705882</real>
</dict>
<key>Bold Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9176470588235294</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9411764705882353</real>
<key>Red Component</key>
<real>0.9411764705882353</real>
</dict>
<key>Cursor Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.6588235294117647</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.5450980392156862</real>
<key>Red Component</key>
<real>0.9529411764705882</real>
</dict>
<key>Cursor Guide Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.3333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.26666666666666666</real>
<key>Red Component</key>
<real>0.26666666666666666</real>
</dict>
<key>Cursor Text Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.1568627450980392</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.1450980392156863</real>
<key>Red Component</key>
<real>0.1450980392156863</real>
</dict>
<key>Foreground Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9176470588235294</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9411764705882353</real>
<key>Red Component</key>
<real>0.9411764705882353</real>
</dict>
<key>Link Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.996078431372549</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.7450980392156863</real>
<key>Red Component</key>
<real>0.7058823529411765</real>
</dict>
<key>Selected Text Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.9176470588235294</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.9411764705882353</real>
<key>Red Component</key>
<real>0.9411764705882353</real>
</dict>
<key>Selection Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.3333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.26666666666666666</real>
<key>Red Component</key>
<real>0.26666666666666666</real>
</dict>
<key>Tab Color</key>
<dict>
<key>Alpha Component</key>
<real>1.0</real>
<key>Blue Component</key>
<real>0.3333333333333333</real>
<key>Color Space</key>
<string>sRGB</string>
<key>Green Component</key>
<real>0.26666666666666666</real>
<key>Red Component</key>
<real>0.26666666666666666</real>
</dict>
</dict>
</plist>
+48
View File
@@ -0,0 +1,48 @@
#!/bin/sh
# Setzt die mwxcol-Palette per Escape-Sequenz in der LAUFENDEN iTerm2-Session.
# Nur zum Ansehen: nichts wird gespeichert, ein neuer Tab hat wieder die alten
# Farben. Für dauerhaft siehe mwxcol.itermcolors + README.
set -eu
[ "${TERM_PROGRAM:-}" = "iTerm.app" ] || {
echo "Das ist keine iTerm2-Session (TERM_PROGRAM=${TERM_PROGRAM:-leer})." >&2
exit 1
}
set_color() { printf '\033]1337;SetColors=%s=%s\a' "$1" "$2"; }
set_color black 444455
set_color red F38BA8
set_color green 94E2D5
set_color yellow F9E2AF
set_color blue B4BEFE
set_color magenta CBA6F7
set_color cyan 94DAE0
set_color white AAAABB
set_color br_black 777788
set_color br_red F7B5C8
set_color br_green B8EAE1
set_color br_yellow FCEECB
set_color br_blue CDD4FE
set_color br_magenta F5B2F7
set_color br_cyan B8E7EB
set_color br_white F0F0EA
set_color fg F0F0EA
set_color bg 252528
set_color bold F0F0EA
set_color link B4BEFE
set_color curbg F38BA8
set_color curfg 252528
set_color selbg 444455
set_color selfg F0F0EA
echo "mwxcol-Vorschau aktiv — nur diese Session."
echo
i=0
while [ $i -lt 8 ]; do printf '\033[4%dm \033[0m' $i; i=$((i+1)); done
printf ' normal\n'
i=0
while [ $i -lt 8 ]; do printf '\033[10%dm \033[0m' $i; i=$((i+1)); done
printf ' bright\n'
@@ -0,0 +1,3 @@
## Version 1.0
Erste Fassung: dunkles Theme aus der mwxcol-Palette, inkl. Terminal-Farben.
+48
View File
@@ -0,0 +1,48 @@
# mwx — Nova Theme
Dunkles Theme für [Nova](https://nova.app) mit der Palette aus `mwxcol.go`
(dieselben Farben wie das eza-Theme in `root@eternity`).
| Name | Hex | Einsatz im Theme |
| ------ | --------- | ------------------------------------------------------- |
| white | `#F0F0EA` | Fließtext, Variablen, Element-Selektoren |
| yellow | `#F9E2AF` | Typen, Attributnamen, CSS-Klassen, `markup.bold` |
| orange | `#FAB387` | Zahlen, Konstanten, Listenpunkte, CSS-IDs |
| red | `#F38BA8` | `self`/`this`, Argumente, Regex-Escapes, `invalid` |
| green | `#94E2D5` | Strings, Dekoratoren, Farbwerte, `markup.italic` |
| blue | `#B4BEFE` | Funktionen/Methoden, Tag-Namen, Links |
| pink | `#F5B2F7` | Properties/Keys, String-Escapes, Regex, Cursor |
| violet | `#CBA6F7` | Schlüsselwörter, Überschriften, `@`-Regeln |
| grey | `#AAAABB` | Operatoren, Klammern, Präfixe, Titelleiste |
| dark | `#777788` | Kommentare, Zeilennummern, Tag-Klammern |
| darker | `#444455` | Unsichtbare Zeichen, Einrückungshilfen, Terminal-Schwarz |
Hintergründe setzen die Reihe unterhalb von `darker` fort (alle Hue 240):
`#33333F` Ränder · `#26262F` Fenster · `#24242E` aktuelle Zeile ·
`#1C1C25` Editor · `#14141B` Textfelder · `#35354F` Auswahl.
Für die 16 Terminal-Slots fehlen der Palette ein Cyan und die hellen
Varianten — die sind aus den Palettenfarben abgeleitet (gleicher Farbton,
höhere Helligkeit) und in `Themes/mwx.css` als `abgeleitet` markiert.
## Installieren
Ordner in Nova öffnen und im Menü **Extensions → Activate Project as Extension**
wählen. Danach unter **Settings → Themes** „mwx" auswählen.
Alternativ dauerhaft ablegen:
```sh
cp -R mwx.novaextension ~/Library/"Application Support"/Nova/Extensions/org.mwx
```
(Nova danach neu starten.)
Achtung: Bezeichner und Zielordner sind identisch mit der bereits installierten
Extension `org.mwx` — der Kopierbefehl überschreibt das dortige `Themes/mwx.css`.
## Anpassen
Alle Farben stehen direkt als Hex-Werte in `Themes/mwx.css`, gruppiert nach
Fenster, Dokument, Syntax und Terminal. Bei aktiviertem „Activate Project as
Extension" übernimmt Nova Änderungen an der CSS-Datei sofort.
@@ -0,0 +1,563 @@
/*
* mwx — Nova Theme, Palette aus mwxcol.go
*
* white #F0F0EA pink #F5B2F7
* yellow #F9E2AF violet #CBA6F7
* orange #FAB387 grey #AAAABB
* red #F38BA8 dark #777788
* green #94E2D5 darker #444455
* blue #B4BEFE
*
* Hintergrundstufen (aus darker #444455 nach unten fortgesetzt, Hue 240):
* #33333F Ränder, Buttons
* #26262F Fensterhintergrund (Sidebar, Titelleiste)
* #24242E aktuelle Zeile
* #1C1C25 Editor / Dokument
* #14141B Textfelder
* #35354F Auswahl
*
* Terminal-Slots ohne Entsprechung in der Palette sind als "abgeleitet"
* markiert (cyan sowie alle bright-Varianten der Buntfarben).
*/
meta {
-theme-display-name: "mwx";
-theme-interface-style: dark;
-theme-vibrancy: none;
-theme-accent-color: auto;
}
/*
* Fenster
*/
meta.window {
background-color: #26262F;
border-color: #14141B;
}
meta.titlebar {
color: #AAAABB;
background-color: #26262F;
border-color: #14141B;
}
meta.titlebar.inactive {
color: #777788;
}
meta.divider {
border-color: #14141B;
}
meta.button {
background: linear-gradient(#33333F, #2B2B36);
border: linear-gradient(#191921, #14141B);
color: #F0F0EA;
}
meta.button.highlighted {
background: linear-gradient(#3E3E4C, #35354F);
color: #F0F0EA;
}
meta.button.selected {
color: #F0F0EA;
}
meta.button.highlighted.selected {
color: #F0F0EA;
}
meta.button.disabled {
color: #777788;
}
meta.textfield {
background-color: #14141B;
border-color: #33333F;
}
meta.textfield.highlighted {
background-color: #14141B;
border-color: #444455;
}
/*
* Dokument
*/
meta.document {
background-color: #1C1C25;
border-color: #14141B;
}
meta.document.button {
background: linear-gradient(#2B2B36, #24242E);
border: linear-gradient(#191921, #14141B);
color: #F0F0EA;
}
meta.document.button.disabled {
background: linear-gradient(rgba(43, 43, 54, 0.3), rgba(36, 36, 46, 0.3));
color: #777788;
}
meta.document.button.highlighted {
background: linear-gradient(#3E3E4C, #33333F);
}
meta.document.textfield {
background-color: #14141B;
border-color: #33333F;
}
meta.document.textfield.highlighted {
background-color: #14141B;
border-color: #444455;
}
/* Text */
meta.text {
color: #F0F0EA;
}
meta.text.invisible {
color: #444455;
}
meta.text.selected {
background-color: #35354F;
}
/* Aktuelle Zeile + Cursor */
meta.cursor {
background-color: #24242E;
border-color: #F5B2F7;
}
/* Einrückungshilfen */
meta.indentguide {
border-color: rgba(68, 68, 85, 0.7);
}
/* Zeilennummern */
meta.gutter {
color: #777788;
}
meta.gutter.selected {
background-color: #24242E;
color: #F0F0EA;
}
/*
* Syntax
*/
comment {
color: #777788;
}
comment.delimiter {
color: #444455;
}
comment.doctag {
color: #AAAABB;
}
processing {
color: #FAB387;
}
processing.argument {
color: #F9E2AF;
}
declaration {
color: #777788;
}
bracket {
color: #AAAABB;
}
operator {
color: #AAAABB;
}
link {
color: #B4BEFE;
}
invalid {
background-color: rgba(243, 139, 168, 0.2);
color: #F38BA8;
}
/* Schlüsselwörter */
keyword {
color: #CBA6F7;
}
keyword.modifier {
color: #CBA6F7;
font-style: italic;
}
keyword.condition {
color: #CBA6F7;
}
keyword.construct {
color: #CBA6F7;
}
keyword.statement {
color: #CBA6F7;
}
keyword.self {
color: #F38BA8;
}
keyword.self.prefix {
color: #F5B2F7;
}
/* Werte */
value.boolean {
color: #FAB387;
}
value.null {
color: #FAB387;
}
value.number {
color: #FAB387;
}
value.number.prefix {
color: #777788;
}
value.entity {
color: #FAB387;
}
value.symbol {
color: #FAB387;
}
/* Bezeichner */
identifier.type {
color: #F9E2AF;
}
identifier.type.declare {
color: #F9E2AF;
font-weight: bold;
}
identifier.variable {
color: #F0F0EA;
}
identifier.variable.prefix {
color: #AAAABB;
}
identifier.constant {
color: #FAB387;
}
identifier.constant.prefix {
color: #AAAABB;
}
identifier.global {
color: #F5B2F7;
}
identifier.global.prefix {
color: #AAAABB;
}
identifier.property {
color: #F5B2F7;
}
identifier.property.prefix {
color: #AAAABB;
}
identifier.key {
color: #F5B2F7;
}
identifier.argument {
color: #F38BA8;
}
identifier.argument.prefix {
color: #AAAABB;
}
identifier.decorator {
color: #94E2D5;
}
identifier.decorator.prefix {
color: #94E2D5;
}
identifier.function,
identifier.method {
color: #B4BEFE;
}
identifier.function.prefix,
identifier.method.prefix {
color: #AAAABB;
}
/* Strings */
string {
color: #94E2D5;
}
string.delimiter {
color: #94E2D5;
}
string.escape {
color: #F5B2F7;
}
string.key {
color: #F5B2F7;
}
string-keyword {
color: #F9E2AF;
}
string-template {
color: #F9E2AF;
}
regex {
color: #F5B2F7;
}
regex.bracket {
color: #CBA6F7;
}
regex.character {
color: #94E2D5;
}
regex.delimiter {
color: #CBA6F7;
}
regex.escape {
color: #F38BA8;
}
regex.operator {
color: #CBA6F7;
}
/* Markup */
markup.heading {
color: #CBA6F7;
font-weight: bold;
}
markup.heading.prefix {
color: #777788;
}
markup.line {
color: #777788;
}
markup.bold {
color: #F9E2AF;
font-weight: bold;
}
markup.bold.delimiter {
color: #777788;
}
markup.italic {
color: #94E2D5;
font-style: italic;
}
markup.italic.delimiter {
color: #777788;
}
markup.strikethrough {
color: #777788;
text-decoration: line-through rgba(119, 119, 136, 0.7);
}
markup.strikethrough.delimiter {
color: #444455;
}
markup.list.item {
color: #FAB387;
}
markup.code {
background-color: rgba(68, 68, 85, 0.5);
color: #F0F0EA;
}
markup.code.delimiter {
color: #777788;
}
markup.code-block.delimiter {
color: #777788;
}
markup.code-block.language {
color: #CBA6F7;
}
markup.link {
color: #B4BEFE;
}
markup.link-label {
color: #F5B2F7;
}
markup.link-label.bracket {
color: #777788;
}
markup.link-label.value.number {
color: #FAB387;
}
/* Definitionen */
definition.class.name,
definition.type.name,
definition.package.name,
definition.enum.name,
definition.union.name,
definition.struct.name {
color: #F9E2AF;
font-weight: bold;
}
definition.property.name {
color: #F5B2F7;
}
definition.function.name,
definition.method.name {
color: #B4BEFE;
font-weight: bold;
}
/* Tags */
tag {
color: #777788;
}
tag.name {
color: #B4BEFE;
}
tag.attribute.name {
color: #F9E2AF;
}
tag.attribute.operator {
color: #AAAABB;
}
tag.attribute.value {
color: #94E2D5;
}
tag.attribute.value.delimiter {
color: #94E2D5;
}
tag.attribute.value.link {
color: #B4BEFE;
}
tag.framework {
color: #777788;
}
tag.framework.name {
color: #CBA6F7;
}
tag.framework.name.prefix {
color: #F5B2F7;
}
tag.framework.attribute.name {
color: #F5B2F7;
}
cdata {
color: #94E2D5;
}
cdata.delimiter {
color: #777788;
}
cdata.label {
color: #CBA6F7;
}
/* Stylesheets */
style.at {
color: #CBA6F7;
font-weight: bold;
}
style.selector.universal {
color: #AAAABB;
}
style.selector.nesting {
color: #AAAABB;
}
style.selector.element {
color: #F0F0EA;
font-weight: bold;
}
style.selector.id,
style.selector.identifier.id {
color: #FAB387;
}
style.selector.id.prefix {
color: #FAB387;
}
style.selector.class,
style.selector.identifier.class {
color: #F9E2AF;
}
style.selector.class.prefix {
color: #F9E2AF;
}
style.selector.pseudoclass {
color: #F5B2F7;
}
style.selector.pseudoclass.prefix {
color: #F5B2F7;
}
style.selector.pseudoelement {
color: #CBA6F7;
}
style.selector.pseudoelement.prefix {
color: #CBA6F7;
}
style.selector.placeholder {
color: #B4BEFE;
}
style.selector.placeholder.prefix {
color: #B4BEFE;
}
style.attribute.name {
color: #B4BEFE;
}
style.value.number {
color: #FAB387;
}
style.value.number.unit {
color: #777788;
}
style.value.color.hex {
color: #94E2D5;
}
style.value.color.hex.prefix {
color: #94E2D5;
}
style.value.color.named {
color: #94E2D5;
}
style.value.keyword {
color: #CBA6F7;
}
style.value.identifier.function {
color: #B4BEFE;
}
/*
* Terminal
*/
terminal.black {
color: #444455; /* darker */
}
terminal.red {
color: #F38BA8; /* red */
}
terminal.green {
color: #94E2D5; /* green */
}
terminal.yellow {
color: #F9E2AF; /* yellow */
}
terminal.blue {
color: #B4BEFE; /* blue */
}
terminal.magenta {
color: #CBA6F7; /* violet */
}
terminal.cyan {
color: #94DAE0; /* abgeleitet: green nach cyan gedreht */
}
terminal.white {
color: #AAAABB; /* grey */
}
terminal.bright-black {
color: #777788; /* dark */
}
terminal.bright-red {
color: #F7B5C8; /* abgeleitet: red heller */
}
terminal.bright-green {
color: #B8EAE1; /* abgeleitet: green heller */
}
terminal.bright-yellow {
color: #FCEECB; /* abgeleitet: yellow heller */
}
terminal.bright-blue {
color: #CDD4FE; /* abgeleitet: blue heller */
}
terminal.bright-magenta {
color: #F5B2F7; /* pink */
}
terminal.bright-cyan {
color: #B8E7EB; /* abgeleitet: cyan heller */
}
terminal.bright-white {
color: #F0F0EA; /* white */
}
@@ -0,0 +1,8 @@
{
"identifier": "org.mwx",
"name": "mwx",
"organization": "mwx",
"description": "Dunkles Theme auf Basis der mwxcol-Palette — Fenster, Editor, Syntax und Terminal.",
"version": "1.0",
"categories": ["themes"]
}
+263
View File
@@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
mwxcol — Xcode-Theme, Palette aus mwxcol.go
white #F0F0EA 0.941176 0.941176 0.917647
yellow #F9E2AF 0.976471 0.886275 0.686275
orange #FAB387 0.980392 0.701961 0.529412
red #F38BA8 0.952941 0.545098 0.658824
green #94E2D5 0.580392 0.886275 0.835294
blue #B4BEFE 0.705882 0.745098 0.996078
pink #F5B2F7 0.960784 0.698039 0.968627
violet #CBA6F7 0.796078 0.65098 0.968627
grey #AAAABB 0.666667 0.666667 0.733333
dark #777788 0.466667 0.466667 0.533333
darker #444455 0.266667 0.266667 0.333333
Flächen (die einzigen Werte außerhalb der Palette):
#15151C Editor — dunkler als der Terminal-Hintergrund, in Xcode gewählt
#20202B Auswahl und aktuelle Zeile
#252528 Konsole — der Terminal-Hintergrund aus dem iTerm2-Profil
#2E2E35 Quick-Help-Kasten (darker mit 30 % über #252528)
Die Schlüssel stehen alphabetisch, so wie Xcode sie selbst schreibt —
wer das Theme in den Einstellungen anfasst, bekommt die Datei ohne diese
Kommentare zurückgeschrieben. Siehe README.md, Abschnitt Xcode.
-->
<plist version="1.0">
<dict>
<key>DVTConsoleDebuggerInputTextColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTConsoleDebuggerInputTextFont</key>
<string>HackNFM-Regular - 15.0</string>
<key>DVTConsoleDebuggerOutputTextColor</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>DVTConsoleDebuggerOutputTextFont</key>
<string>HackNFM-Regular - 15.0</string>
<key>DVTConsoleDebuggerPromptTextColor</key>
<string>0.580392 0.886275 0.835294 1</string> <!-- green -->
<key>DVTConsoleDebuggerPromptTextFont</key>
<string>HackNFM-Regular - 15.0</string>
<key>DVTConsoleExectuableInputTextColor</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>DVTConsoleExectuableInputTextFont</key>
<string>HackNFM-Regular - 15.0</string>
<key>DVTConsoleExectuableOutputTextColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTConsoleExectuableOutputTextFont</key>
<string>HackNFM-Regular - 15.0</string>
<key>DVTConsoleTextBackgroundColor</key>
<string>0.145098 0.145098 0.156863 1</string> <!-- #252528 -->
<key>DVTConsoleTextInsertionPointColor</key>
<string>0.952941 0.545098 0.658824 1</string> <!-- red -->
<key>DVTConsoleTextSelectionColor</key>
<string>0.266667 0.266667 0.333333 1</string> <!-- darker -->
<key>DVTDebuggerInstructionPointerColor</key>
<string>0.580392 0.886275 0.835294 0.25</string> <!-- green, 25 % -->
<key>DVTFontAndColorVersion</key>
<integer>1</integer>
<key>DVTLineSpacing</key>
<real>1</real>
<key>DVTMarkupTextBackgroundColor</key>
<string>0.180392 0.180392 0.207843 1</string> <!-- #2E2E35 -->
<key>DVTMarkupTextBorderColor</key>
<string>0.266667 0.266667 0.333333 1</string> <!-- darker -->
<key>DVTMarkupTextCodeFont</key>
<string>HackNFM-Regular - 14.0</string>
<key>DVTMarkupTextEmphasisColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTMarkupTextEmphasisFont</key>
<string>.SFNS-RegularItalic - 14.0</string>
<key>DVTMarkupTextInlineCodeColor</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>DVTMarkupTextLinkColor</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
<key>DVTMarkupTextLinkFont</key>
<string>.SFNS-Regular - 14.0</string>
<key>DVTMarkupTextNormalColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTMarkupTextNormalFont</key>
<string>.SFNS-Regular - 14.0</string>
<key>DVTMarkupTextOtherHeadingColor</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>DVTMarkupTextOtherHeadingFont</key>
<string>.SFNS-Regular - 19.2</string>
<key>DVTMarkupTextPrimaryHeadingColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTMarkupTextPrimaryHeadingFont</key>
<string>.SFNS-Regular - 32.2</string>
<key>DVTMarkupTextSecondaryHeadingColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTMarkupTextSecondaryHeadingFont</key>
<string>.SFNS-Regular - 24.4</string>
<key>DVTMarkupTextStrongColor</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>DVTMarkupTextStrongFont</key>
<string>.SFNS-Bold - 14.0</string>
<key>DVTScrollbarMarkerAnalyzerColor</key>
<string>0.796078 0.65098 0.968627 1</string> <!-- violet -->
<key>DVTScrollbarMarkerBreakpointColor</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
<key>DVTScrollbarMarkerDiffColor</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>DVTScrollbarMarkerDiffConflictColor</key>
<string>0.952941 0.545098 0.658824 1</string> <!-- red -->
<key>DVTScrollbarMarkerErrorColor</key>
<string>0.952941 0.545098 0.658824 1</string> <!-- red -->
<key>DVTScrollbarMarkerRuntimeIssueColor</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>DVTScrollbarMarkerWarningColor</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>DVTSourceTextBackground</key>
<string>0.082353 0.082353 0.109804 1</string> <!-- #15151C -->
<key>DVTSourceTextBlockDimBackgroundColor</key>
<string>0.466667 0.466667 0.533333 1</string> <!-- dark -->
<key>DVTSourceTextCurrentLineHighlightColor</key>
<string>0.125490 0.125490 0.168627 1</string> <!-- #20202B -->
<key>DVTSourceTextInsertionPointColor</key>
<string>0.952941 0.545098 0.658824 1</string> <!-- red -->
<key>DVTSourceTextInvisiblesColor</key>
<string>0.266667 0.266667 0.333333 1</string> <!-- darker -->
<key>DVTSourceTextSelectionColor</key>
<string>0.125490 0.125490 0.168627 1</string> <!-- #20202B -->
<key>DVTSourceTextSyntaxColors</key>
<dict>
<key>xcode.syntax.attribute</key>
<string>0.580392 0.886275 0.835294 1</string> <!-- green -->
<key>xcode.syntax.character</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.comment</key>
<string>0.466667 0.466667 0.533333 1</string> <!-- dark -->
<key>xcode.syntax.comment.doc</key>
<string>0.466667 0.466667 0.533333 1</string> <!-- dark -->
<key>xcode.syntax.comment.doc.keyword</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>xcode.syntax.declaration.other</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
<key>xcode.syntax.declaration.type</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.identifier.class</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.identifier.class.system</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.identifier.constant</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.identifier.constant.system</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.identifier.function</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
<key>xcode.syntax.identifier.function.system</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
<key>xcode.syntax.identifier.macro</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.identifier.macro.system</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.identifier.type</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.identifier.type.system</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.identifier.variable</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>xcode.syntax.identifier.variable.system</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>xcode.syntax.keyword</key>
<string>0.796078 0.65098 0.968627 1</string> <!-- violet -->
<key>xcode.syntax.mark</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>xcode.syntax.markup.aside.kind</key>
<string>0.976471 0.886275 0.686275 1</string> <!-- yellow -->
<key>xcode.syntax.markup.code</key>
<string>0.666667 0.666667 0.733333 1</string> <!-- grey -->
<key>xcode.syntax.number</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.plain</key>
<string>0.941176 0.941176 0.917647 1</string> <!-- white -->
<key>xcode.syntax.preprocessor</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.regex</key>
<string>0.960784 0.698039 0.968627 1</string> <!-- pink -->
<key>xcode.syntax.regex.capturename</key>
<string>0.580392 0.886275 0.835294 1</string> <!-- green -->
<key>xcode.syntax.regex.charname</key>
<string>0.952941 0.545098 0.658824 1</string> <!-- red -->
<key>xcode.syntax.regex.number</key>
<string>0.980392 0.701961 0.529412 1</string> <!-- orange -->
<key>xcode.syntax.regex.other</key>
<string>0.796078 0.65098 0.968627 1</string> <!-- violet -->
<key>xcode.syntax.string</key>
<string>0.580392 0.886275 0.835294 1</string> <!-- green -->
<key>xcode.syntax.url</key>
<string>0.705882 0.745098 0.996078 1</string> <!-- blue -->
</dict>
<key>DVTSourceTextSyntaxFonts</key>
<dict>
<key>xcode.syntax.attribute</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.character</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.comment</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.comment.doc</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.comment.doc.keyword</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.declaration.other</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.declaration.type</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.class</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.class.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.constant</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.constant.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.function</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.function.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.macro</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.macro.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.type</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.type.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.variable</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.identifier.variable.system</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.keyword</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.mark</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.markup.aside.kind</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.markup.code</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.number</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.plain</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.preprocessor</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.regex</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.regex.capturename</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.regex.charname</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.regex.number</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.regex.other</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.string</key>
<string>HackNFM-Regular - 15.0</string>
<key>xcode.syntax.url</key>
<string>HackNFM-Regular - 15.0</string>
</dict>
</dict>
</plist>