hdev
TUI Code Editor dla HackerOS  ·  inspirowany Visual Studio Code  ·  Rust + Ratatui
v0.1.0 Rust + Ratatui HackerOS-first 28+ języków Marketplace (placeholder) .hk plugins

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.

💡 Zalecany terminal hdev używa kolorów 24-bit (true color). Zalecamy: kitty, alacritty, wezterm, foot lub gnome-terminal ≥ 3.36.
hdev │ main.hl ● │ Hacker Lang Ctrl+Q quit HL main.hl ● RS lib.rs JS index.js JSON config.json ┌────────────────────────┐ ▾ my-project 1 ;;; Główny skrypt HackerOS ▾ scripts 2 ◈ main.hl ● 3 // curl ◈ audit.hl 4 ▸ src 5 % name = HackerOS README.md 6 % version = 0.3 Cargo.toml 7 └────────────────────────┘ 8 ~> Witaj w @name v@version! 9 10 : greet def 11 ~> Kernel: 12 > uname -r 13 done ──────────────────────────── terminal ──────────────────────────────── Ctrl+B ~ ❯ hl main.hl Witaj w HackerOS v0.3! Kernel: 6.1.0-hackeros NORMAL main.hl ● Hacker Lang Ln 8, Col 24 · 13 lines

Instalacja

Wymagania systemowe

ZależnośćMin. wersjaUwagi
Rust1.75Wymagany do budowania ze źródeł (rustup.rs)
Cargo1.75Dołączony do Rust toolchain
TerminalZalecany 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:

OpcjaAkcja
New FileUtwórz nowy plik w bieżącym katalogu
Open FolderWpisz ścieżkę do folderu
TerminalPrzejdź bezpośrednio do terminala hsh
MarketplacePrzeglądaj rozszerzenia
SettingsUstawienia edytora
Recent FilesOstatnio otwierane pliki (z sesji)

Layout ekranu

hdev v0.1.0 │ filename.rs ● │ Rust ← Title bar RS filename.rs ● PY script.py SH run.sh ← Tab bar ┌───────────────────────┬──────────────────────────────────────────────┐ │ File Tree │ Line numbers │ Editor area │ │ │ │ │ │ ▾ project │ 1 │ fn main() { │ │ ▾ src │ 2 │ println!("HackerOS"); │ │ 🦀 main.rs ● │ 3 ◀cursor │ } │ │ 🦀 lib.rs │ │ │ │ 📝 README.md │ │ │ └───────────────────────┴──────────────────────────────────────────────┤ ❯ terminal panel (Ctrl+B) │ ~ ❯ cargo run │ Compiling hdev v0.1.0 │ Finished release [optimized] │ ├────────────────────────────────────────────────────────────────────────┤ NORMAL main.rs Rust Ctrl+S Save Ln 3, Col 2 · 10 lines
StrefaOpis
Title barNazwa pliku, język, modyfikacja (●), globalne info
Tab barOtwarte pliki jako zakładki z ikoną języka
File TreeDrzewo plików bieżącego folderu (Ctrl+R odśwież)
EditorNumeracja linii + główny obszar edycji z podświetlaniem
Terminal PanelZintegrowany terminal hsh (Ctrl+B toggle)
Status barTryb edycji, nazwa pliku, język, pozycja kursora

Skróty klawiszowe

Globalne

SkrótAkcja
Ctrl+QWyjdź z hdev (sesja jest zapisywana)
F1Pomoc — lista skrótów (toggle overlay)
EscZamknij overlay / wróć do edytora

Pliki i zakładki

SkrótAkcja
Ctrl+TNowy plik (pyta o nazwę, tworzy w bieżącym katalogu)
Ctrl+WZamknij zakładkę / usuń zaznaczony plik z drzewa
Ctrl+SZapisz plik
Ctrl+Shift+SZapisz jako… (podaj nową ścieżkę)
Ctrl+OOtwórz plik lub folder (dialog)
Ctrl+NNastępna zakładka
Ctrl+PPoprzednia zakładka
Alt+1Alt+9Skocz do zakładki nr 1–9

Widok i panele

SkrótAkcja
Ctrl+BOtwórz / zamknij terminal panel (jak VSCode)
Ctrl+ROdśwież drzewo plików
Ctrl+MOtwórz Marketplace
Ctrl+,Otwórz Ustawienia

Nawigacja w edytorze

SkrótAkcja
↑ ↓ ← →Porusz kursorem
Ctrl+← / Ctrl+→Skocz o jedno słowo
HomePoczątek linii
EndKoniec linii
PgUp / PgDnPrzewiń o ekran

Edycja tekstu

SkrótAkcja
EnterNowa linia z automatycznym wcięciem
TabWstaw wcięcie (spacje, rozmiar z config)
BackspaceUsuń znak przed kursorem
DeleteUsuń znak za kursorem
Ctrl+ZCofnij (Undo) — do 200 kroków
Ctrl+Y lub Ctrl+Shift+ZPonów (Redo)
Ctrl+DZduplikuj bieżącą linię poniżej
SkrótAkcja
Ctrl+FOtwórz pasek wyszukiwania
Enter (w search)Następne wystąpienie
F3Następne wystąpienie
EscZamknij wyszukiwanie, wyczyść zaznaczenia

Wyszukiwanie podświetla wszystkie wystąpienia frazy w pliku na żółto. Licznik pokazuje n/total w rogu paska.

Drzewo plików

AkcjaEfekt
Klik Enter na plikuOtwórz plik w nowej zakładce
Klik Enter na folderzeRozwiń / zwiń folder
Ctrl+TNowy plik w wybranym folderze
Ctrl+WUsuń zaznaczony plik (z potwierdzeniem)
Ctrl+ROdśwież całe drzewo
⚠ Usuwanie pliku 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 znakAutomatycznie 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.

──────────────────────────────────────────────────────────────────────────── ╭─ ❯ terminal hsh Ctrl+B to close ─────────────────────────────────────────╮ │ ⚙ hdev terminal — cwd: ~/projects/my-app │ │ ⚙ Type commands. They run via: hsh -c "<cmd>" │ │ ───────────────────────────────────────────────────────────────────────── │ │ ❯ hl audit.hl │ │ Skanowanie 192.168.1.1:22... │ │ ✗ Brak odpowiedzi │ │ ❯ ls -la │ │ total 48 │ │ drwxr-xr-x 4 user user 4096 Jan 1 12:00 . │ │ ~/projects/my-app ❯ █ │ ╰─────────────────────────────────────────────────────────────────────────────╯

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
EnterWykonaj wpisaną komendę
/ Historia komend (do 500 wpisów)
PgUp / PgDnPrzewiń output (po 5 linii)
BackspaceUsuń znak z inputu
Ctrl+BZamknij terminal panel
EscWróć fokus do edytora (terminal zostaje otwarty)
ℹ cd i clear Komendy 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.

HL
Hacker Lang
.hl
HL+
Hacker Lang++
.hlpp  BETA
H#
H Sharp
.hs
RS
Rust
.rs
GO
Go
.go
C
C
.c  .h
C+
C++
.cpp .cc .cxx
PY
Python
.py
OD
Odin
.odin
CR
Crystal
.cr
SH
Shell
.sh .bash .zsh
VL
Vala
.vala
NM
Nim
.nim
HT
HTML
.html .htm
CS
CSS
.css
JS
JavaScript
.js
TS
TypeScript
.ts
DT
Dart
.dart
KT
Kotlin
.kt .kts
LU
Lua
.lua
JV
Java
.java

Formaty konfiguracyjne

YM
YAML
.yaml .yml
JN
JSON
.json
TM
TOML
.toml
HC
HCL / Terraform
.hcl .tf
XM
XML
.xml
HK
HK Plugin
.hk

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.

ElementKolorPrzykład
Operatory specjalne■ zielony~> :: -> ^> ->> ^>>
Zmienne @■ jasny@name @target @HL_VERSION
Deklaracje %■ pomarańczowy% host = 10.0.0.1
Słowa kluczowe■ fioletowydef 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łoty42   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.

⚠ BETA Hacker Lang++ zmienia się dynamicznie. Składnia może być niekompatybilna z wersją .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:

ElementKolorPrzykład
Słowa kluczowe■ fioletowyfn let mut if else match struct impl trait
Typy wbudowane■ cyjani32 u64 f64 bool str String
Nazwy typów (Uppercase)■ cyjanMyStruct ScanResult
Wywołania funkcji■ niebieskiscan() parse_input()
Komentarze■ szary// komentarz
Specjalne słowa■ fioletowyunsafe 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:

ElementKolorPrzykład
Sekcje [...]■ turkusowy[metadata] [hooks]
Klucze■ niebieskiname = 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.

◎ hdev Marketplace — plugins & extensions for HackerOS All Installed HackerOS Languages Themes ┌──────────────────────────┬───────────────────────────────────────────────┐ │ HackerOS Hacker Lang+ │ │ │ h4ck3r · ★★★★★ │ Hacker Lang Enhanced v1.0.0 │ │ HackerOS HSH Runner │ HackerOS · HackerOS Team │ │ HackerOS · ★★★★½ │ │ │ Theme Matrix Theme │ ★★★★★ ⬇ 1200 │ │ neon_dev · ★★★★½ │ │ │ Git Git Panel │ Advanced Hacker Lang support: snippets, │ │ devtools · ★★★★★ │ REPL integration, linter overlay. │ │ Language Rust Analyzer │ │ │ rust_tools · ★★★★★ │ Tags hacker-lang hl │ │ │ │ │ │ [ Enter → Install ] (placeholder) │ │ │ │ │ │ ⚠ Plugin support jest placeholderem. │ │ │ Pełna integracja .hk w przyszłości. │ └──────────────────────────┴───────────────────────────────────────────────┘ Tab/Shift+Tab kategoria ↑↓ nawiguj Enter instaluj/odinstaluj Esc wróć
Klawisz (w Marketplace)Akcja
/ Nawiguj po liście pluginów
TabNastępna kategoria
Shift+TabPoprzednia kategoria
EnterZainstaluj / odinstaluj plugin (placeholder)
EscWróć do edytora

Kategorie pluginów

KategoriaOpis
HackerOSPluginy natywne dla HackerOS (HL, H#, hsh)
LanguageObsługa języków, LSP, snippety
ThemeMotywy kolorystyczne
FormatterAutomatyczne formatowanie kodu
LinterAnaliza błędów i ostrzeżeń
GitIntegracja z systemem kontroli wersji
ProductivityAuto-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
ℹ Restart po instalacji Pluginy są skanowane przy starcie hdev. Po skopiowaniu pliku .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żkaZawartość
Konfiguracja~/.cache/HackerOS/hdev/config.jsonWszystkie ustawienia edytora
Sesja~/.cache/HackerOS/hdev/session.jsonOstatnio 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
KluczTypDomyślnieOpis
themestring"hacker-dark"Nazwa motywu
tab_sizenumber4Liczba spacji na Tab
auto_savebooltrueAutomatyczne zapisywanie
show_line_numbersbooltrueNumeracja linii
show_file_treebooltrueWidoczność drzewa plików
word_wrapboolfalseZawijanie długich linii
terminal_shellstring"hsh"Shell dla terminala
recent_filesarray[]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ł

hdev/ ├── Cargo.toml — zależności Rust ├── src/ │ ├── main.rs — punkt wejścia │ ├── app.rs — główna logika, pętla zdarzeń │ ├── ui.rs — renderowanie TUI (Ratatui) │ ├── editor.rs — bufor edytora, kursor, undo │ ├── highlight.rs — silnik podświetlania składni │ ├── languages.rs — definicje języków, słowa kluczowe │ ├── filetree.rs — drzewo plików │ ├── terminal_panel.rs — panel terminala + hsh │ ├── marketplace.rs — Marketplace (UI + placeholder) │ ├── plugins.rs — system pluginów .hk │ ├── welcome.rs — ekran powitalny │ ├── keybinds.rs — mapowanie klawiszy → akcje │ ├── config.rs — konfiguracja JSON │ └── utils.rs — narzędzia pomocnicze └── docs/ └── index.html — ta dokumentacja
# 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.

crossterm Events
KeyEvent, Mouse, Resize
App::handle_key()
app.rs — dispatch
EditorBuffer
editor.rs
FileTree
filetree.rs
TerminalPanel
terminal_panel.rs
Marketplace
marketplace.rs
Highlighter
highlight.rs
Language
languages.rs
Config / Session
config.rs
PluginManager
plugins.rs
ui::draw() — Ratatui
ui.rs — Frame rendering
ModułOdpowiedzialność
app.rsCentralny stan aplikacji, event loop, dispatcher akcji
ui.rsCałe renderowanie TUI — wszystkie ekrany, overlaye, statusbar
editor.rsBufor tekstu, kursor, scroll, undo/redo, wyszukiwanie
highlight.rsSilnik podświetlania — tokenizacja na styl span-ów Ratatui
languages.rsDefinicje języków: rozszerzenia, słowa kluczowe, kolory, ikony
filetree.rsDrzewo katalogów, expand/collapse, tworzenie/usuwanie plików
terminal_panel.rsEmulacja terminala, wywołania hsh, historia komend
marketplace.rsUI marketplace, lista pluginów, kategorie, placeholder install
plugins.rsSkanowanie .hk plików, ładowanie metadanych
config.rsSerializacja/deserializacja config.json i session.json
keybinds.rsMapowanie KeyEvent → Action enum
welcome.rsLogika 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?

  1. Dodaj wariant do enum Language w languages.rs
  2. Dodaj rozszerzenie w Language::from_extension()
  3. Uzupełnij display_name(), icon(), icon_color(), keywords(), comment_single()
  4. Jeśli potrzebujesz specjalnego tokenizatora — dodaj funkcję w highlight.rs i wywołaj ją w Highlighter::highlight_line()
  5. Przetestuj otwierając plik z nowym rozszerzeniem
💡 Zgłoś bug / feature Otwórz issue na GitHub → HackerOS-Linux-System. Dla błędów podaj: wersję hdev, terminal, OS, kroki do reprodukcji.



hdev v0.1.0  ·  HackerOS Project  ·  Dokumentacja wygenerowana dla Hacker Lang, H#, i ekosystemu HackerOS  ·  hackeros website ↗