Nowoczesny terminal dla HackerOS — płynne animacje, pełne truecolor, obsługa zakładek i rozbudowana konfiguracja.
Hacker Term jest domyślnym, wbudowanym emulatorem terminala systemu HackerOS. Działa obok Alacritty i jest zoptymalizowany pod kątem estetyki hakerskiej — neonowe poświaty, animowane tło, efekt CRT i płynny kursor interpolowany w czasie rzeczywistym.
Pasek tytułowy i zakładki ze szklanym efektem. Animowane neony w tle reagują na czas.
Differential rendering rysuje tylko zmienione komórki. Motion blur wygładza szybkie zmiany.
Pełna obsługa 24-bit RGB i protokołu Sixel — wyświetlaj obrazy bezpośrednio w terminalu.
Nieskończona liczba zakładek, przeciąganie, sesje — stan zapisywany automatycznie.
Plik config.hk pozwala dostosować każdy szczegół — kolory, efekty, skróty, czcionki.
Prostokątne zaznaczanie tekstu, automatyczne kopiowanie do schowka po puszczeniu przycisku.
Konfiguracja znajduje się w:
~/.config/hacker-term/config.hk
Jeśli plik nie istnieje, zostanie użyta konfiguracja domyślna.
Format .hk obsługuje komentarze, interpolacje zmiennych i sekcje.
# ── Hacker Term — plik konfiguracyjny ──────────────────────────────────── general { font_size = 14.5 shell = "/bin/zsh" padding = 12 window_transparency = 255 # 0-255, 255 = nieprzezroczyste motion_blur_strength = 0.18 # 0.0 = wyłączone, 1.0 = maksymalne throttle_keyboard_ms = 8 scrollback_lines = 10000 tab_bar_style = "glass" # glass | flat } font { path = "" # pusta = auto-detect; np. "/usr/share/fonts/TTF/Hack-Regular.ttf" size = 14.5 bold_size = 14.5 italic = true } colors { bg = "#0F0F1A" fg = "#E2E8FF" cursor = "#00FFD9" glow1 = "#00FFD9" # kolor neonu nr 1 (tło + ramka) glow2 = "#AA66FF" # kolor neonu nr 2 selection = "#3366FF" selection_alpha = 90 # 0-255 tab_active = "#00FFD9" tab_inactive = "#3D3D5C" ansi = [ # normalne 0-7 "#0F0F1A", "#FF3D5C", "#00FF88", "#FFD700", "#3399FF", "#D94FFF", "#00E5FF", "#CCD6FF", # jasne 8-15 "#3D3D5C", "#FF6680", "#33FFAA", "#FFE033", "#66BBFF", "#E580FF", "#33EEFF", "#FFFFFF", ] } effects { scanlines = true scanline_opacity = 28 # 0-255, intensywność linii CRT border_glow = true border_glow_strength = 90 # 0-255 vignette = true vignette_strength = 140 # 0-255, ciemnienie rogów bg_animation_speed = 0.3 # prędkość animacji tła (0 = zatrzymane) bg_glow_intensity = 60 # intensywność poświaty tła glow_pulse_freq = 0.6 # Hz pulsowania ramki cursor_style = "block" # block | beam | underline cursor_blink_freq = 0.75 # Hz mrugania kursora cursor_lerp_speed = 0.35 # płynność ruchu kursora (0.1 slow – 1.0 instant) } keybindings { scroll_up = ["Ctrl+Up", "Shift+Up"] scroll_down = ["Ctrl+Down", "Shift+Down"] scroll_page_up = ["Shift+PageUp"] scroll_page_down = ["Shift+PageDown"] scroll_to_top = ["Shift+Home"] scroll_to_bottom = ["Shift+End"] new_tab = ["Ctrl+t"] close_tab = ["Ctrl+w"] next_tab = ["Ctrl+Tab"] prev_tab = ["Ctrl+Shift+Tab"] copy = ["Ctrl+Shift+c"] paste = ["Ctrl+Shift+v"] zoom_in = ["Ctrl++"] zoom_out = ["Ctrl+-"] zoom_reset = ["Ctrl+0"] } sixel { enabled = true max_width = 1920 max_height = 1080 }
general| Klucz | Opis | Domyślnie |
|---|---|---|
| font_size | Rozmiar czcionki w punktach | 14.5 |
| shell | Powłoka do uruchomienia (zsh, bash, fish…) | $SHELL |
| padding | Wewnętrzny margines w pikselach | 12 |
| window_transparency | Przezroczystość okna 0-255 | 255 |
| motion_blur_strength | Siła motion blur 0.0–1.0 | 0.18 |
| throttle_keyboard_ms | Debounce klawiatury w ms | 8 |
| scrollback_lines | Pojemność bufora przewijania | 10000 |
| tab_bar_style | glass lub flat | "glass" |
effects| Klucz | Opis | Domyślnie |
|---|---|---|
| scanlines | Linie CRT co drugi wiersz pikseli | true |
| scanline_opacity | Przyciemnienie linii CRT (0-255) | 28 |
| border_glow | Neonowa poświata wokół okna | true |
| border_glow_strength | Intensywność poświaty krawędzi | 90 |
| vignette | Ciemne rogi (efekt winiety) | true |
| vignette_strength | Siła winiety (0-255) | 140 |
| bg_animation_speed | Prędkość animacji tła (0 = stop) | 0.3 |
| bg_glow_intensity | Jasność neonowych obszarów tła | 60 |
| glow_pulse_freq | Częstotliwość pulsowania ramki (Hz) | 0.6 |
| cursor_style | block, beam, underline | "block" |
| cursor_blink_freq | Częstotliwość mrugania kursora (Hz) | 0.75 |
| cursor_lerp_speed | Płynność ruchu kursora (0.1–1.0) | 0.35 |
Wszystkie skróty można nadpisać w sekcji keybindings pliku konfiguracyjnego. Każda akcja przyjmuje listę kombinacji.
| Akcja | Domyślny skrót | Opis |
|---|---|---|
| Nowa zakładka | Ctrl+T | Otwiera nową zakładkę z powłoką |
| Zamknij zakładkę | Ctrl+W | Zamyka bieżącą zakładkę |
| Następna zakładka | Ctrl+Tab | Przełącza na kolejną zakładkę |
| Poprzednia zakładka | Ctrl+Shift+Tab | Przełącza na poprzednią zakładkę |
| Kopiuj | Ctrl+Shift+C | Kopiuje zaznaczenie do schowka |
| Wklej | Ctrl+Shift+V | Wkleja ze schowka systemowego |
| Przewiń w górę | Ctrl+↑ lub Shift+↑ | Przewija bufor o 5 linii |
| Przewiń w dół | Ctrl+↓ lub Shift+↓ | Przewija bufor o 5 linii |
| Strona w górę | Shift+Page Up | Przewija o jedną stronę |
| Strona w dół | Shift+Page Down | Przewija o jedną stronę |
| Skocz na górę | Shift+Home | Przeskakuje na początek bufora |
| Skocz na dół | Shift+End | Wraca na koniec (bieżące wyjście) |
| Powiększ | Ctrl++ | Zwiększa rozmiar czcionki |
| Pomniejsz | Ctrl+- | Zmniejsza rozmiar czcionki |
| Resetuj zoom | Ctrl+0 | Przywraca domyślny rozmiar |
Przytrzymaj lewy przycisk myszy i przeciągnij, aby zaznaczyć tekst prostokątnie. Puszczenie przycisku automatycznie kopiuje tekst do schowka systemowego. Kółko myszy przewija bufor historii.
Dwa punkty neonowej poświaty powoli dryfują po tle, tworząc efekt żywej nebuli. Kontrolowane przez bg_animation_speed i bg_glow_intensity.
Co drugi rząd pikseli jest lekko przyciemniony, symulując linie skanowania starego monitora. Intensywność: scanline_opacity.
Krawędź okna pulsuje neonowym kolorem (glow1). Częstotliwość i intensywność w pełni konfigurowalna.
Rogi ekranu stopniowo ciemnieją, skupiając wzrok na centrum terminala. Siła kontrolowana przez vignette_strength.
Kursor płynnie interpoluje między pozycjami (lerp). Prędkość interpolacji oraz styl (block, beam, underline) są konfigurowalne.
Klatki mieszają się ze sobą, łagodząc gwałtowne zmiany zawartości (np. szybki scroll). Przy 0.0 efekt jest wyłączony.
Skopiuj jeden z poniższych bloków do sekcji effects:
effects { scanlines = false border_glow = false vignette = false bg_animation_speed = 0.0 bg_glow_intensity = 20 cursor_style = "beam" cursor_lerp_speed = 1.0 }
effects { scanlines = true scanline_opacity = 45 border_glow = true border_glow_strength = 140 vignette = true vignette_strength = 200 bg_animation_speed = 0.6 bg_glow_intensity = 100 glow_pulse_freq = 1.2 cursor_style = "block" cursor_blink_freq = 1.5 cursor_lerp_speed = 0.2 }
Zamień sekcję colors na jeden z poniższych motywów.
colors { bg = "#0F0F1A" fg = "#E2E8FF" cursor = "#00FFD9" glow1 = "#00FFD9" glow2 = "#AA66FF" }
colors { bg = "#020A02" fg = "#33FF44" cursor = "#55FF66" glow1 = "#00FF44" glow2 = "#004400" }
colors { bg = "#13001F" fg = "#F0D0FF" cursor = "#FF00AA" glow1 = "#FF00AA" glow2 = "#00BBFF" }
colors { bg = "#15080A" fg = "#FFE0CC" cursor = "#FF8833" glow1 = "#FF6600" glow2 = "#FF0055" }
Hacker Term obsługuje wyświetlanie obrazów bezpośrednio w terminalu poprzez protokół Sixel (DEC). Działa z aplikacjami takimi jak img2sixel, gnuplot, ranger z odpowiednimi wtyczkami i wieloma innymi.
# Instalacja img2sixel (libsixel) $ sudo apt install libsixel-bin # Wyświetl obraz w terminalu $ img2sixel zdjecie.png # Skaluj do konkretnej szerokości $ img2sixel -w 400 zdjecie.jpg # Wykresy w gnuplot $ gnuplot -e "set terminal sixel; plot sin(x)"
sixel.max_width i sixel.max_height. Obrazy większe niż limit będą ignorowane (nie skalowane). Ustaw wyższe wartości dla monitorów 4K.
Hacker Term jest wbudowany w każdą edycję HackerOS. Uruchom go z doku, menu aplikacji lub poleceniem hacker-term z innego terminala (np. Alacritty).
Tak. W sekcji font ustaw path na pełną ścieżkę do pliku .ttf lub .otf. Działa każda czcionka monospace. Jeśli ścieżka jest pusta, Hacker Term wykrywa czcionkę automatycznie (Hack → FiraCode → JetBrains Mono → DejaVu).
Alacritty jest terminalem GPU-accelerated, minimalistycznym i konfigurowanym przez YAML. Hacker Term skupia się na estetyce hakerskiej z animowanym tłem, CRT scanlines, glassmorphism UI i zintegrowaną obsługą Sixel. Oba terminale mogą działać jednocześnie.
Wyłącz efekty: ustaw motion_blur_strength = 0.0, bg_animation_speed = 0.0, scanlines = false, vignette = false. Zwiększ throttle_keyboard_ms do 16. Differential rendering jest domyślnie aktywny.
Stan zakładek jest zapisywany automatycznie przy zamknięciu do ~/.config/hacker-term/session.hk i przywracany przy następnym uruchomieniu.
Hacker Term emuluje xterm-256color z obsługą CSI, OSC (tytuł okna), DCS (Sixel), truecolor (38;2;r;g;b), alt-screen, bracketed paste, mouse reporting (podstawowy) i większości standardowych sekwencji VT100/VT220.