ngt night
ngt (night) to dwupanelowy menedżer plików dla terminala, zbudowany w Go z wykorzystaniem biblioteki Bubble Tea. Zaprojektowany jako pierwszoklasowe narzędzie ekosystemu HackerOS — szybki, rozszerzalny i wygodny w pracy z lokalnymi, zdalnymi i kontenerowymi systemami plików.
Błyskawiczny
Napisany w Go, renderuje pełny UI w milisekundach. Zero opóźnień nawet na dużych katalogach.
Podman-native
Przeglądaj system plików działających kontenerów bezpośrednio z ngt — bez exec shell.
Multi-VFS
Lokalne, SFTP, ZIP, TAR, TAR.GZ — wszystkie w jednym interfejsie. Kopiowanie między VFS.
Podświetlanie składni
Podgląd plików z pełnym podświetlaniem Chroma — ponad 300 języków.
Fuzzy Search
Przeszukuj drzewa katalogów w czasie rzeczywistym przez Ctrl+P.
Git-aware
Status M/A/D widoczny bezpośrednio na liście plików. Gałąź wyświetlona w pasku ścieżki.
Installation
W dystrybucji HackerOS ngt jest dostępny bezpośrednio z repozytorium systemowego:
Zależności
| Pakiet | Wersja | Cel |
|---|---|---|
charmbracelet/bubbletea | ≥ 0.25 | TUI framework |
charmbracelet/lipgloss | ≥ 0.9 | Stylowanie terminala |
alecthomas/chroma/v2 | ≥ 2.23 | Podświetlanie składni |
pkg/sftp | ≥ 1.13 | SFTP VFS |
golang.org/x/crypto | ≥ 0.22 | SSH transport |
golang.org/x/sync | ≥ 0.7 | Kopiowanie równoległe |
podman (system) | ≥ 4.0 | Podman VFS (opcjonalne) |
Quick Start
# Uruchom w konkretnym katalogu
$ ngt /home/user/projekty
Po uruchomieniu zobaczysz dwa panele plików. Aktywny panel ma niebieską ramkę. Przełączaj się między nimi klawiszem Tab.
cd katalog, mkdir nowy,
sftp://user@host. Naciśnij Enter, aby wykonać.
Interface
┌─────────────────────────────┬──────────────────────────────┐
│ local ~/projekty main Name │ local ~/dokumenty Name │
│ ▶ src/ │ docs/ │
│ main.go 12.3 kB │ README.md 2.1 kB │
│ config.yaml 1.0 kB │ notes.txt 500 B │
│ go.mod 400 B │ │
│ │ │
└───────────────────────────────┴───────────────────────────────┘
› _
✓ Panel refreshed
F1Help F5Copy F6Move F8Delete ^PFuzzy ^RRename QQuit
Elementy interfejsu
| Element | Opis |
|---|---|
| Pasek tytułu | Nazwa aplikacji, wersja, nazwa dystrybucji HackerOS |
| Pasek ścieżki | Tag VFS, bieżący katalog, gałąź Git, aktualny tryb sortowania |
| Panele plików | Dwukolumnowa lista. Aktywny panel — niebieska ramka, nieaktywny — szara |
| Pasek poleceń | Wiersz z promptem › — wpisuj polecenia jak w shellu |
| Pasek statusu | Wynik ostatniej operacji (zielony = OK, czerwony = błąd) |
| Pasek funkcyjny | Skróty F-key widoczne na dole ekranu |
Virtual File Systems
ngt obsługuje wiele wirtualnych systemów plików przez jednolity interfejs. Możesz kopiować pliki między dowolnymi dwoma VFS — np. z SFTP do lokalnego archiwum ZIP.
| VFS | Schemat URL | Tryb | Opis |
|---|---|---|---|
| Local | local |
RW | Standardowy system plików hosta. Pełne wsparcie odczytu i zapisu. |
| SFTP | sftp:// |
RW | Zdalny serwer przez SSH/SFTP. Tworzenie, usuwanie, przenoszenie plików. |
| Podman | podman:// |
RW | System plików działającego kontenera Podman. Odczyt i zapis przez podman exec. |
| ZIP | zip:// |
R | Przeglądanie zawartości archiwum ZIP. Mount przez naciśnięcie Enter na pliku. |
| TAR / TAR.GZ | tar:// |
R | Przeglądanie archiwów TAR i TAR.GZ. Mount automatyczny. |
› sftp://admin:haslo@192.168.1.10:22
# Otwarcie archiwum ZIP (Enter na pliku w panelu)
› deploy.zip ← naciśnij Enter
# Połączenie z kontenerem Podman
› podman my-container
# Lista działających kontenerów
› podmanls
Podman Integration
ngt ma natywne wsparcie dla Podmana — możesz przeglądać i edytować system plików działającego kontenera bez wychodzenia z menedżera.
Przeglądarka kontenerów
Naciśnij Ctrl+D, aby otworzyć listę działających kontenerów Podman. Naciśnij Enter na wybranym kontenerze, by podmontować jego system plików w aktywnym panelu.
┌─────────────────────────────────────────────────────────────┐
▶ a3f5c8d1 web-app Up 2 hours
b7e2a094 db-postgres Up 5 hours
c1d4f832 redis-cache Up 1 day
└─────────────────────────────────────────────────────────────┘
Operacje na plikach kontenera
| Operacja | Jak działa |
|---|---|
| Przeglądanie | podman exec CONTAINER ls -la DIR |
| Odczyt pliku | podman exec CONTAINER cat FILE |
| Zapis pliku | podman exec -i CONTAINER tee FILE |
| Usunięcie | podman exec CONTAINER rm -rf PATH |
| Przeniesienie | podman exec CONTAINER mv SRC DST |
| Tworzenie katalogu | podman exec CONTAINER mkdir -p PATH |
Keybindings
Nawigacja
| Klawisz | Akcja |
|---|---|
| j / ↓ | Przesuń kursor w dół |
| k / ↑ | Przesuń kursor w górę |
| Enter / l | Otwórz katalog / plik / archiwum |
| Backspace / h | Przejdź do katalogu nadrzędnego (cd ..) |
| Tab | Przełącz aktywny panel |
| r | Odśwież bieżący panel |
Operacje na plikach
| Klawisz | Akcja |
|---|---|
| Space | Zaznacz / odznacz plik |
| F5 | Kopiuj zaznaczone do drugiego panelu |
| F6 | Przenieś zaznaczone do drugiego panelu |
| F8 | Usuń zaznaczone (z potwierdzeniem) |
| Ctrl+U | Duplikuj zaznaczony plik (_copy) |
Narzędzia
| Klawisz | Akcja |
|---|---|
| Ctrl+P | Fuzzy search w bieżącym drzewie |
| Ctrl+R | Bulk rename z wyrażeniami regularnymi |
| Ctrl+S | Cykl trybów sortowania (Nazwa → Rozmiar → Data → Rozszerzenie) |
| Ctrl+D | Otwórz przeglądarkę kontenerów Podman |
| Ctrl+O | Otwórz pod-shell w bieżącym katalogu |
| Ctrl+Z | Zawieś ngt (SIGTSTP) |
| F1 | Pokaż pomoc w pasku statusu |
| q / Ctrl+C | Wyjście z ngt |
Edytor wbudowany
| Klawisz | Akcja |
|---|---|
| Ctrl+S | Zapisz plik |
| Esc | Wyjdź z edytora bez zapisywania |
Commands
Wpisz polecenie w pasku poleceń (›) i naciśnij Enter.
Obsługiwane jest uzupełnianie klawiszem Tab.
| Polecenie | Składnia | Opis |
|---|---|---|
cd | cd <ścieżka> | Zmień katalog (ścieżki względne i bezwzględne) |
cp | cp <src> <dst> | Skopiuj plik (lub użyj F5 dla zaznaczonych) |
mv | mv <src> <dst> | Przenieś plik (lub F6) |
rm | rm | Usuń zaznaczone pliki (wymaga potwierdzenia) |
mkdir | mkdir <nazwa> | Utwórz katalog |
touch | touch <plik> | Utwórz pusty plik |
hedit | hedit <plik> | Otwórz plik w wbudowanym edytorze (lub Enter na pliku) |
sftp | sftp://user:pass@host | Podłącz SFTP w aktywnym panelu |
podman | podman <id/nazwa> | Podłącz system plików kontenera Podman |
podmanls | podmanls | Wyświetl przeglądarkę działających kontenerów |
Built-in Editor
ngt posiada wbudowany edytor tekstu — naciśnij Enter na pliku tekstowym
lub wpisz hedit <plik>.
- Limit rozmiaru pliku: 10 MB
- Zapis: Ctrl+S
- Anulowanie: Esc (bez zapisywania)
- Działa na wszystkich VFS obsługujących zapis (local, SFTP, Podman)
Fuzzy Search
Naciśnij Ctrl+P, aby otworzyć tryb fuzzy search. ngt rekurencyjnie przeszukuje bieżące drzewo katalogów i filtruje wyniki w czasie rzeczywistym.
┌────────────────────────────────────────┐
▶ src/main.go
cmd/main_test.go
internal/main_loop.go
└────────────────────────────────────────┘
3 results • Enter: navigate • Esc: cancel
Naciśnij Enter na wyniku, by przejść do katalogu zawierającego ten plik.
Bulk Rename
Zaznacz pliki (Space), a następnie naciśnij Ctrl+R. Rename przebiega w dwóch krokach:
- Podaj wyrażenie regularne do dopasowania
- Podaj ciąg zastępczy (obsługiwane grupy
$1,$2)
› ^report_(.+)$
Step 2/2: replacement string
› summary_$1
✓ Renamed 5 file(s)
Git Status
W katalogach będących repozytoriami Git, ngt automatycznie pokazuje status plików i nazwę bieżącej gałęzi:
| Kolor | Status Git | Znaczenie |
|---|---|---|
| ■ Żółty | M |
Plik zmodyfikowany (Modified) |
| ■ Zielony | A |
Plik dodany do staging (Added) |
| ■ Czerwony | D |
Plik usunięty (Deleted) |
Gałąź widoczna jest w pasku ścieżki nad panelem jako zielony badge.
Configuration
W tej wersji ngt nie wymaga pliku konfiguracyjnego — wszystko jest dostępne
przez klawiaturę. Planowane wsparcie dla ~/.config/ngt/config.yaml w v0.4.
VFS Reference
Interfejs vfsHandler implementowany przez wszystkie VFS:
// Odczyt
ReadDir(dir string) ([]fs.DirEntry, error)
Open(file string) (fs.File, error)
Stat(file string) (fs.FileInfo, error)
Chdir(dir string) error
Getwd() (string, error)
// Zapis
Remove(path string) error
Rename(src, dst string) error
MkdirAll(path string, perm fs.FileMode) error
Create(path string) (io.WriteCloser, error)
// Metadata
VFSName() string
}
FAQ
Podman nie jest dostępny — co robić?
Upewnij się, że podman jest w PATH i działa jako bieżący użytkownik
(rootless Podman). Przetestuj: podman ps.
Nie widzę podświetlania składni
Podświetlanie wymaga terminala z obsługą 256 kolorów lub TrueColor.
Sprawdź zmienną $TERM — powinna zawierać 256color lub truecolor.
Jak wrócić z VFS SFTP/Podman do lokalnego systemu plików?
Wpisz cd /dowolna/sciezka/lokalna — ngt automatycznie przełączy
się na lokalny VFS jeśli ścieżka istnieje na hoście. (Planowane: local
komenda w v0.4.)
Czy ngt działa na macOS / Windows?
ngt jest zoptymalizowany pod HackerOS (Linux). Na macOS powinien działać poprawnie z wyjątkiem integracji Podman. Windows nie jest obsługiwany.
Jak zgłosić błąd?
Użyj trackera na https://git.hackeros.local/tools/ngt/issues.