Czym jest hdev?
hdev to edytor kodu działający w terminalu (TUI — Terminal User Interface), zaprojektowany jako natywny edytor systemu HackerOS. Wzorowany na Visual Studio Code, oferuje zakładki plików, panel drzewa plików, pełne podświetlanie składni, zintegrowany terminal i rynek rozszerzeń — wszystko wewnątrz terminala, bez GUI.
Napisany w Rust z biblioteką Ratatui, co zapewnia maksymalną wydajność, małe zużycie pamięci i pełną kontrolę nad każdym pikselem renderowania.
kitty, alacritty,
wezterm, foot lub gnome-terminal ≥ 3.36.
Instalacja
Wymagania systemowe
| Zależność | Min. wersja | Uwagi |
|---|---|---|
| Rust | 1.75 | Wymagany do budowania ze źródeł (rustup.rs) |
| Cargo | 1.75 | Dołączony do Rust toolchain |
| Terminal | — | Zalecany true-color (24-bit RGB) |
| hsh (opcja) | — | Shell HackerOS — terminal panel używa go automatycznie |
Budowanie i instalacja
# 1. Zainstaluj Rust (jeśli brak) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 2. Pobierz hdev git clone https://github.com/HackerOS-Linux-System/hdev cd hdev # 3. Zbuduj wersję release cargo build --release # 4. Zainstaluj globalnie sudo cp target/release/hdev /usr/local/bin/ # 5. Sprawdź instalację hdev --version bash
HackerOS (paczka systemowa)
# W HackerOS hdev jest częścią systemu hpkg install hdev # przez menadżer pakietów HackerOS hsh
Szybki start
# Otwórz hdev w bieżącym katalogu hdev # Otwórz konkretny plik hdev src/main.rs # Otwórz folder (ładuje drzewo plików) hdev ~/projects/my-hackeros-app # Wyjdź z hdev Ctrl+Q bash
Po uruchomieniu bez argumentu pojawia się Welcome Screen. Nawigujesz strzałkami ↑ ↓, wybierasz Enter:
| Opcja | Akcja |
|---|---|
| New File | Utwórz nowy plik w bieżącym katalogu |
| Open Folder | Wpisz ścieżkę do folderu |
| Terminal | Przejdź bezpośrednio do terminala hsh |
| Marketplace | Przeglądaj rozszerzenia |
| Settings | Ustawienia edytora |
| Recent Files | Ostatnio otwierane pliki (z sesji) |
Layout ekranu
| Strefa | Opis |
|---|---|
| Title bar | Nazwa pliku, język, modyfikacja (●), globalne info |
| Tab bar | Otwarte pliki jako zakładki z ikoną języka |
| File Tree | Drzewo plików bieżącego folderu (Ctrl+R odśwież) |
| Editor | Numeracja linii + główny obszar edycji z podświetlaniem |
| Terminal Panel | Zintegrowany terminal hsh (Ctrl+B toggle) |
| Status bar | Tryb edycji, nazwa pliku, język, pozycja kursora |
Skróty klawiszowe
Globalne
| Skrót | Akcja |
|---|---|
Ctrl+Q | Wyjdź z hdev (sesja jest zapisywana) |
F1 | Pomoc — lista skrótów (toggle overlay) |
Esc | Zamknij overlay / wróć do edytora |
Pliki i zakładki
| Skrót | Akcja |
|---|---|
Ctrl+T | Nowy plik (pyta o nazwę, tworzy w bieżącym katalogu) |
Ctrl+W | Zamknij zakładkę / usuń zaznaczony plik z drzewa |
Ctrl+S | Zapisz plik |
Ctrl+Shift+S | Zapisz jako… (podaj nową ścieżkę) |
Ctrl+O | Otwórz plik lub folder (dialog) |
Ctrl+N | Następna zakładka |
Ctrl+P | Poprzednia zakładka |
Alt+1 – Alt+9 | Skocz do zakładki nr 1–9 |
Widok i panele
| Skrót | Akcja |
|---|---|
Ctrl+B | Otwórz / zamknij terminal panel (jak VSCode) |
Ctrl+R | Odśwież drzewo plików |
Ctrl+M | Otwórz Marketplace |
Ctrl+, | Otwórz Ustawienia |
Nawigacja w edytorze
| Skrót | Akcja |
|---|---|
↑ ↓ ← → | Porusz kursorem |
Ctrl+← / Ctrl+→ | Skocz o jedno słowo |
Home | Początek linii |
End | Koniec linii |
PgUp / PgDn | Przewiń o ekran |
Edycja tekstu
| Skrót | Akcja |
|---|---|
Enter | Nowa linia z automatycznym wcięciem |
Tab | Wstaw wcięcie (spacje, rozmiar z config) |
Backspace | Usuń znak przed kursorem |
Delete | Usuń znak za kursorem |
Ctrl+Z | Cofnij (Undo) — do 200 kroków |
Ctrl+Y lub Ctrl+Shift+Z | Ponów (Redo) |
Ctrl+D | Zduplikuj bieżącą linię poniżej |
Wyszukiwanie
| Skrót | Akcja |
|---|---|
Ctrl+F | Otwórz pasek wyszukiwania |
Enter (w search) | Następne wystąpienie |
F3 | Następne wystąpienie |
Esc | Zamknij wyszukiwanie, wyczyść zaznaczenia |
Wyszukiwanie podświetla wszystkie wystąpienia frazy w pliku na żółto.
Licznik pokazuje n/total w rogu paska.
Drzewo plików
| Akcja | Efekt |
|---|---|
| Klik Enter na pliku | Otwórz plik w nowej zakładce |
| Klik Enter na folderze | Rozwiń / zwiń folder |
Ctrl+T | Nowy plik w wybranym folderze |
Ctrl+W | Usuń zaznaczony plik (z potwierdzeniem) |
Ctrl+R | Odśwież całe drzewo |
Ctrl+W gdy zaznaczony jest plik w drzewie — pojawia się dialog potwierdzenia.
Usunięcie jest nieodwracalne (plik trafia do kosza systemowego jeśli dostępny).
Auto-pair
hdev automatycznie zamyka nawiasy i cudzysłowy:
| Wpisany znak | Automatycznie dodawane |
|---|---|
( | ) |
[ | ] |
{ | } |
" | " |
' | ' |
` | ` |
Undo / Redo
Historia cofania jest przechowywana na stosie do 200 wpisów per bufor. Każda zmiana tekstu (znak, newline, tab, delete) tworzy wpis. Undo i Redo nie są kasowane przez nawigację kursora — tylko przez nowe zmiany po Undo.
Panel terminala
Naciśnięcie Ctrl+B otwiera panel terminala na dole ekranu — identycznie jak w Visual Studio Code. Ponowne Ctrl+B zamyka panel.
Integracja z hsh
Każda komenda wpisana w terminalu hdev jest wykonywana przez hsh (shell HackerOS).
Jeśli hsh nie jest zainstalowany, hdev używa /bin/sh jako fallback.
# Sposób wywołania komendy: hsh -c "twoja komenda tutaj" # Przykłady działające w terminalu hdev: hl skrypt.hl # uruchom Hacker Lang cargo build --release # buduj Rust python3 main.py # uruchom Python git status # git cd ../inny-projekt # zmień katalog (wbudowane) clear # wyczyść output hsh
| Skrót (terminal aktywny) | Akcja |
|---|---|
Enter | Wykonaj wpisaną komendę |
↑ / ↓ | Historia komend (do 500 wpisów) |
PgUp / PgDn | Przewiń output (po 5 linii) |
Backspace | Usuń znak z inputu |
Ctrl+B | Zamknij terminal panel |
Esc | Wróć fokus do edytora (terminal zostaje otwarty) |
cd i clear są obsługiwane wewnętrznie przez hdev —
cd zmienia katalog roboczy dla kolejnych komend, clear czyści historię outputu.
Obsługiwane języki
hdev rozpoznaje języki automatycznie na podstawie rozszerzenia pliku i podświetla składnię z użyciem wbudowanego silnika leksykalnego.
Formaty konfiguracyjne
Hacker Lang (.hl)
hdev ma wbudowaną pełną obsługę Hacker Lang v0.3 — natywnego języka skryptowego HackerOS. Silnik podświetlania rozpoznaje wszystkie operatory, zmienne, komentarze i słowa kluczowe.
| Element | Kolor | Przykład |
|---|---|---|
| Operatory specjalne | ■ zielony | ~> :: -> ^> ->> ^>> |
Zmienne @ | ■ jasny | @name @target @HL_VERSION |
Deklaracje % | ■ pomarańczowy | % host = 10.0.0.1 |
| Słowa kluczowe | ■ fioletowy | def done ok err true false |
Komentarze ;; | ■ szary kursywa | ;; to jest komentarz |
| Komentarz dokumentacji | ■ szary kursywa | ;;; wieloliniowy opis |
| Ciągi znaków | ■ zielony | "hello world" |
| Liczby | ■ złoty | 42 3.14 0 |
;;; Przykład pełnego skryptu Hacker Lang // curl % target = 192.168.1.1 % port = 22 % debug = true : scan def ~> Skanowanie @target:@port... ::hr 40 >> nmap -p @port @target ? ok ::green Port otwarty! done ? err ::red Błąd skanowania. done done -- scan .hl
Hacker Lang++ (.hlpp) — BETA
Hacker Lang++ to rozszerzona wersja Hacker Lang, aktualnie w intensywnym rozwoju.
hdev obsługuje pliki .hlpp i stosuje do nich te same reguły podświetlania co dla .hl,
z dodatkowym oznaczeniem BETA na pasku statusu.
.hl.
Śledź oficjalną dokumentację HL++.
H# (.hs)
H# to kompilowany język programowania napisany w Rust, przeznaczony dla HackerOS. hdev rozpoznaje składnię H# v0.2 i podświetla:
| Element | Kolor | Przykład |
|---|---|---|
| Słowa kluczowe | ■ fioletowy | fn let mut if else match struct impl trait |
| Typy wbudowane | ■ cyjan | i32 u64 f64 bool str String |
| Nazwy typów (Uppercase) | ■ cyjan | MyStruct ScanResult |
| Wywołania funkcji | ■ niebieski | scan() parse_input() |
| Komentarze | ■ szary | // komentarz |
| Specjalne słowa | ■ fioletowy | unsafe arena optional spawn |
// H# — przykład prostego programu use std::net; struct Scanner { target: String, port: u16, } impl Scanner { fn run(&self) -> bool { let result = net::connect(&self.target, self.port); match result { Ok(_) => true, Err(_) => false, } } } fn main() { let s = Scanner { target: "192.168.1.1".into(), port: 22 }; println("Otwarty: {}", s.run()); } .hs
Formaty konfiguracyjne
JSON
Klucze podświetlone na niebiesko, wartości na zielono, typy (true/false/null) na fioletowo.
{
"name": "HackerOS",
"version": 0.3,
"debug": true,
"plugins": ["hl-support", "git-panel"]
}
.json
YAML
Klucze na niebiesko, wartości na zielono, komentarze # na szaro, sekcje pogrubione.
# Konfiguracja serwera server: host: 0.0.0.0 port: 8080 tls: true database: url: postgres://localhost/hackeros .yaml
TOML
# hdev config [package] name = "hdev" version = "0.1.0" [dependencies] ratatui = "0.29" crossterm = "0.28" .toml
Format .hk (Plugin)
Pliki .hk to format pluginów hdev, parsowany przez
hk-parser.
hdev stosuje specjalne podświetlanie dedykowane dla tego formatu:
| Element | Kolor | Przykład |
|---|---|---|
Sekcje [...] | ■ turkusowy | [metadata] [hooks] |
| Klucze | ■ niebieski | name = version = |
| Wartości | ■ zielony | "mój plugin" |
Komentarze # | ■ szary | # opis |
# Plugin hdev — przykład [metadata] name = "hl-enhanced" version = "1.0.0" author = "HackerOS Team" description = "Enhanced Hacker Lang support" [hooks] on_file_open = "hl_check $FILE" on_save = "hl_lint $FILE" [syntax] extensions = ".hl .hlpp" comment = ";;" .hk
Marketplace
Marketplace (Ctrl+M) to panel do przeglądania i instalowania rozszerzeń hdev. W wersji v0.1.0 pełna funkcjonalność jest placeholderem — interfejs jest gotowy, a backend do pobierania i instalowania pluginów jest planowany w przyszłych wersjach.
| Klawisz (w Marketplace) | Akcja |
|---|---|
↑ / ↓ | Nawiguj po liście pluginów |
Tab | Następna kategoria |
Shift+Tab | Poprzednia kategoria |
Enter | Zainstaluj / odinstaluj plugin (placeholder) |
Esc | Wróć do edytora |
Kategorie pluginów
| Kategoria | Opis |
|---|---|
| HackerOS | Pluginy natywne dla HackerOS (HL, H#, hsh) |
| Language | Obsługa języków, LSP, snippety |
| Theme | Motywy kolorystyczne |
| Formatter | Automatyczne formatowanie kodu |
| Linter | Analiza błędów i ostrzeżeń |
| Git | Integracja z systemem kontroli wersji |
| Productivity | Auto-pairs, snippety, motywacja |
System pluginów (.hk)
Pluginy hdev są plikami w formacie .hk — parsowanymi przez bibliotekę
hk-parser.
Plik pluginu opisuje metadane, hooki i konfigurację rozszerzenia.
Instalacja pluginów
Pluginy instaluje się ręcznie (do momentu uruchomienia pełnego Marketplace):
# Folder pluginów hdev ~/.cache/HackerOS/hdev/plugins/ # Skopiuj plik .hk do folderu cp mój-plugin.hk ~/.cache/HackerOS/hdev/plugins/ # Odśwież hdev (Ctrl+R lub restart) bash
.hk
uruchom hdev ponownie lub naciśnij Ctrl+R by odświeżyć środowisko.
Tworzenie pluginu
# Minimalna struktura pliku .hk [metadata] name = "mój-plugin" version = "0.1.0" author = "Twoje Imię" description = "Krótki opis pluginu" hdev_min = "0.1.0" [syntax] extensions = ".myext" comment = "#" keywords = "begin end if else" [hooks] on_save = "mylinter $FILE" on_open = "echo 'otwarto plik'" .hk
Konfiguracja (config.json)
Wszystkie ustawienia hdev są przechowywane w pliku JSON. Możesz je edytować przez panel Ustawień (Ctrl+,) lub bezpośrednio w pliku.
Ścieżki plików
| Plik | Ścieżka | Zawartość |
|---|---|---|
| Konfiguracja | ~/.cache/HackerOS/hdev/config.json | Wszystkie ustawienia edytora |
| Sesja | ~/.cache/HackerOS/hdev/session.json | Ostatnio otwarte pliki, zakładki |
| Pluginy | ~/.cache/HackerOS/hdev/plugins/ | Pliki .hk |
Pełny plik config.json
{
"theme": "hacker-dark",
"font_size": 14,
"tab_size": 4,
"auto_save": true,
"show_line_numbers": true,
"show_file_tree": true,
"word_wrap": false,
"last_opened_path": null,
"recent_files": ["~/projects/main.hl"],
"installed_plugins": ["hl-support"],
"marketplace_url": "https://marketplace.hackeros.dev",
"terminal_shell": "hsh"
}
json
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
theme | string | "hacker-dark" | Nazwa motywu |
tab_size | number | 4 | Liczba spacji na Tab |
auto_save | bool | true | Automatyczne zapisywanie |
show_line_numbers | bool | true | Numeracja linii |
show_file_tree | bool | true | Widoczność drzewa plików |
word_wrap | bool | false | Zawijanie długich linii |
terminal_shell | string | "hsh" | Shell dla terminala |
recent_files | array | [] | Ostatnio otwarte pliki (max 20) |
Sesja
Przy zamknięciu hdev zapisuje do session.json listę otwartych plików.
Przy następnym uruchomieniu bez argumentów hdev nie przywraca automatycznie
sesji — pliki są dostępne w sekcji Recent na Welcome Screen.
Budowanie ze źródeł
# Debug (szybki build, bez optymalizacji) cargo build # Release (pełna optymalizacja) cargo build --release # Uruchom bez instalacji cargo run -- /ścieżka/do/pliku # Sprawdź błędy (bez budowania) cargo check # Linter cargo clippy bash
Architektura
hdev używa modelu event loop opartego na crossterm — bez async/tokio, co zapewnia deterministyczne zachowanie i minimalny overhead.
KeyEvent, Mouse, Resize
app.rs — dispatch
editor.rs
filetree.rs
terminal_panel.rs
marketplace.rs
highlight.rs
languages.rs
config.rs
plugins.rs
ui.rs — Frame rendering
| Moduł | Odpowiedzialność |
|---|---|
app.rs | Centralny stan aplikacji, event loop, dispatcher akcji |
ui.rs | Całe renderowanie TUI — wszystkie ekrany, overlaye, statusbar |
editor.rs | Bufor tekstu, kursor, scroll, undo/redo, wyszukiwanie |
highlight.rs | Silnik podświetlania — tokenizacja na styl span-ów Ratatui |
languages.rs | Definicje języków: rozszerzenia, słowa kluczowe, kolory, ikony |
filetree.rs | Drzewo katalogów, expand/collapse, tworzenie/usuwanie plików |
terminal_panel.rs | Emulacja terminala, wywołania hsh, historia komend |
marketplace.rs | UI marketplace, lista pluginów, kategorie, placeholder install |
plugins.rs | Skanowanie .hk plików, ładowanie metadanych |
config.rs | Serializacja/deserializacja config.json i session.json |
keybinds.rs | Mapowanie KeyEvent → Action enum |
welcome.rs | Logika Welcome Screen, menu startowe |
Contributing
hdev jest częścią ekosystemu HackerOS. Wkład jest mile widziany przez pull requesty na GitHubie.
Jak dodać nowy język?
- Dodaj wariant do
enum Languagewlanguages.rs - Dodaj rozszerzenie w
Language::from_extension() - Uzupełnij
display_name(),icon(),icon_color(),keywords(),comment_single() - Jeśli potrzebujesz specjalnego tokenizatora — dodaj funkcję w
highlight.rsi wywołaj ją wHighlighter::highlight_line() - Przetestuj otwierając plik z nowym rozszerzeniem
hdev v0.1.0 · HackerOS Project · Dokumentacja wygenerowana dla Hacker Lang, H#, i ekosystemu HackerOS · hackeros website ↗