Bifrost to paleta barw projektu Nine Realms: grimdarkowe zestawienie ze styku mitologii nordyckiej i Warhammera 40K, żelazna noc, święte złoto, ofiarna krew, szron i patyna. Ma dwa warianty: Void (ciemny) i Snow (jasny); przełącznik w prawym górnym rogu pokazuje oba. Nazwy tokenów opisują barwę i rolę (violet, teal-light, success), a nazwy mitologiczne są zarezerwowane dla modułów i motywów. Kolory na tej stronie są pokazane próbkami, bez wartości liczbowych.
Akcent interfejsu
Żaden pojedynczy kolor nie czyta się dobrze jednocześnie na Void i Snow, więc akcent interfejsu ma osobny ton w każdym wariancie: jaśniejszy fiolet na Void, ciemniejszy na Snow. Fiolet zamiast błękitu wybrano świadomie: większość interfejsów prowadzi błękit, a fiolet od razu odróżnia projekt i nie koliduje z kolorowaniem kodu.
Dziesięć akcentów
Barwy bazowe palety. Wartość akcentu to ciemniejszy ton jego rampy (dla pink jaśniejszy). Każdy ma przypisaną rolę w interfejsie albo w kolorowaniu kodu.
Rampy tonalne
Siedemnaście barw po cztery tony: lightest, light, dark, darkest. Dwa środkowe to zwykłe wartości ciemnego motywu, ton najjaśniejszy służy stanom hover i podświetleniom, a najciemniejszy daje czytelny wariant tego samego akcentu na jasnym tle.
Stany funkcjonalne
Sukces, ostrzeżenie, błąd i informacja, każdy wzięty z jednej z ramp i z osobną wartością dla Void i Snow.
Violet: dwanaście odcieni
Rozwinięcie fioletu do ogólnego użytku: włosy i stroje postaci, kolor czcionki, barwy drużyn, ikony i efekty. Cztery wykończenia, od matu przez satynę i połysk po metal, po trzy tony w każdym. Każdy odcień ma bazę oraz ton światła i cienia, więc od razu nadaje się do cieniowania; próbki pokazują gradient wykończenia. Drużyny przeciwne rozróżniaj przede wszystkim jasnością, bo wszystkie odcienie mają ten sam fioletowy ton.
Mat · Rozproszone światło bez blików: pastele, popiół, wełna, skóra.
Satyna · Szeroki, miękki połysk jak na jedwabiu, piórach i zadbanych włosach.
Połysk · Nasycony kolor pod wąskim, niemal białym blikiem: szkło, lakier, mokre włosy, klejnoty.
Metal · Blik barwiony kolorem samego metalu i ostre pasma odbić.
Fimbulvetr, „zima przed zmierzchem bogów”, to motyw dla VS Code i Zed zbudowany z palety Bifrost: żelazna noc, święte złoto, ofiarna krew, szron i patyna. Interfejs prowadzi fiolet, kod dostaje piętnaście akcentów edytora, a każdy kolor tekstu w kodzie ma kontrast co najmniej 4,5:1 wobec tła edytora. Dwa warianty: Void (ciemny) i Snow (jasny). Przełącznik w prawym górnym rogu przełącza także podgląd kodu na tej stronie.
Kolorowanie składni
Każda rola ma osobną wartość dla Void i Snow, bo kod na niemal czarnym tle potrzebuje jaśniejszych i bardziej nasyconych barw niż na jasnym. Lewa połowa próbki to Void, prawa to Snow. Styl pisma (kursywa, pogrubienie) jest częścią motywu.
Interfejs edytora
Kolory okna poza kodem. Każda para próbek to Void i Snow.
Zwykłe kolory to akcenty edytora, jasne to ich żywsze odpowiedniki z ramp: żółty jest miedzią, a jasny żółty złotem. Paleta podąża za motywem strony.
Podgląd kodu
Te same role w siedmiu gramatykach, w bieżącym motywie strony.
1package bifrost 2 3import "fmt" 4 5// Guardian strzeże mostu między światami. 6type Guardian struct { 7 Name string 8 awake bool 9} 10const MaxRealms = 9 11 12func (g *Guardian) Watch(realms []Realm) error { 13 for _, r := range realms { 14 if !r.Reachable() { 15 return fmt.Errorf("realm %q is dark", r.Name) 16 } 17 } 18 g.awake = true 19 return nil 20}
1#[derive(Debug, Clone)] 2pub struct Realm<'a> { 3 name: &'a str, 4 frost: f32, 5} 6 7impl<'a> Realm<'a> { 8 /// Trzy zimy bez lata. 9 pub fn freeze(&mut self, winters: u8) -> Result<(), String> { 10 if winters < 3 { 11 return Err(format!("{} needs 3 winters", self.name)); 12 } 13 self.frost = winters as f32 * 0.5; 14 println!("{:?}", self); 15 Ok(()) 16 } 17}
1from dataclasses import dataclass, field 2import re 3 4RUNE = re.compile(r"[ᚠ-]+") 5 6@dataclass(frozen=True) 7class Edda(Saga): 8 """Zbiór pieśni o końcu świata.""" 9 10 title: str 11 verses: list[str] = field(default_factory=list) 12 13 def runes(self, text: str) -> int: 14 """Policz runy w tekście.""" 15 count = len(RUNE.findall(text)) 16 if count == 0 and self.verses is not None: 17 print(f"{self.title}: brak run") 18 return count
1-- Światy osiągalne przed długą zimą 2WITH frozen AS ( 3 SELECT realm_id, MAX(frost) AS frost 4 FROM weather 5 WHERE recorded_at >= DATE '2026-10-01' 6 GROUP BY realm_id 7) 8SELECT r.name, f.frost, 9 CASE WHEN f.frost > 0.5 THEN 'zima' ELSE 'odwilż' END AS season 10FROM realms r 11JOIN frozen f ON f.realm_id = r.id 12WHERE r.reachable IS TRUE 13ORDER BY f.frost DESC 14LIMIT 9;
1# Fimbulvetr 2 3Trzy zimy bez lata, **zanim** nadejdzie *Ragnarök*. 4 5## Instalacja 6 71. Pobierz `fimbulvetr_theme_1.0.1.vsix` 82. Uruchom `code --install-extension` 9 10> Zima nadchodzi z północy. 11 12- [Bifrost](https://codeheim.dev/#bifrost) 13- ~~Draupnir~~ Fimbulvetr 14 15| Wariant | Tło | 16|---------|--------| 17| Void | ciemne |
1# Fimbulvetr: zima przed zmierzchem bogów 2name: fimbulvetr 3version: "1.0.1" 4winters: 3 5summer: false 6realms: 7 - name: Midgard 8 frost: 0.8 9 reachable: true 10 - name: Niflheim 11 frost: 1.0 12 reachable: ~ 13defaults: &defaults 14 retries: 3 15jotunheim: 16 <<: *defaults 17 message: "Śnieg \"z północy\""
1#!/usr/bin/env bash 2set -euo pipefail 3 4THEME_DIR="${HOME}/.vscode/extensions" 5VERSION="1.0.1" 6 7install_theme() { 8 local vsix="fimbulvetr_theme_${VERSION}.vsix" 9 if [[ ! -f "$vsix" ]]; then 10 echo "brak pliku: $vsix" >&2 11 return 1 12 fi 13 code --install-extension "$vsix" 14 echo "zainstalowano $(basename "$vsix")" 15} 16 17for realm in midgard asgard; do 18 install_theme || exit $? 19done
Gleipnir to lina, którymi bogowie związali wilka Fenrira: cienkie jak jedwabna wstęga, a mocniejsze od każdego łańcucha. Tutaj to motyw znaku zachęty dla oh-my-posh, zbudowany z palety Bifrost: jedna linia, która wiąże powłokę z katalogiem, repozytorium i narzędziami projektu. Segmenty mają kształt zaokrąglonych diamentów, każdy z własną parą tła i tekstu oraz ikoną w żywszym tonie tej samej rampy. Dwa warianty, Void (ciemny) i Snow (jasny), wybiera zmienna środowiskowa NINE_REALMS; przełącznik w prawym górnym rogu przełącza także podgląd na tej stronie.
Segmenty
Lewa strona linii idzie od uprawnień przez katalog do stanu repozytorium; prawa, dosunięta do krawędzi, pokazuje kontekst narzędzi i znika na wąskich oknach. Każdy segment ma trójkę barw: tło, tekst i ikonę. Lewa połowa próbki to Void, prawa to Snow; pokazane jest tło segmentu.
Ścieżki
Segment ścieżki rozpoznaje, gdzie jesteś, i zmienia ikonę. Rozumie polskie i angielskie nazwy katalogów użytkownika, także pod OneDrive, i rozróżnia wielkość liter dopiero po ich zrównaniu. Gdy pasuje kilka reguł, wygrywa pierwsza z poniższej kolejności: kłódka przed domem, dom przed repozytorium, repozytorium przed wszystkim innym.
GLEIPNIR_COLS) początek zwija się do wielokropka; koniec ścieżki zostaje.pushd na końcu segmentu pojawia się liczba odłożonych katalogów.Podgląd znaku zachęty
Sześć stanów tej samej sesji w bieżącym motywie strony. Pierwsza linia każdego panelu to zwinięty poprzedni znak zachęty, poniżej wynik polecenia i pełny znak zachęty dla nowego stanu. Ikony są przybliżeniem glifów Nerd Font.
Zwinięty znak zachęty zostawia tylko nazwę katalogu i szewron, czerwony po błędzie, z „^C” po przerwaniu. Druga linia wielowierszowego polecenia dostaje trzy kropki w najcichszym tonie, a błędy składni powłoki wypisuje linia błędu w czerwieni. Tytuł okna terminala to nazwa katalogu i gałąź w nawiasie.