tlc: Linux package artifacts (dist/) + PLAN §17.8 completion sync

Adds dist/ packaging skeleton for the host Linux build:

  dist/tlc-1.0.0/INSTALL.sh    — generic tarball installer (system or --user)
  dist/tlc-1.0.0/man/tlc.1     — man page for the file manager
  dist/tlc-1.0.0/man/tlcedit.1 — man page for the standalone editor
  dist/tlc-1.0.0/man/tlcview.1 — man page for the standalone viewer
  dist/PKGBUILD                — Arch Linux build recipe
  dist/build_deb.sh            — Debian/Ubuntu .deb builder
  dist/deb/DEBIAN/control      — Debian control file (binary-arch template)
  dist/.gitignore              — excludes built binaries + config (rebuilt at packaging)

Build outputs (NOT in git, produced locally on demand):

  tlc-1.0.0-linux-x86_64.tar.gz   5.5 MB   generic tarball
  tlc_1.0.0-1_amd64.deb          2.3 MB   Debian package

PLAN.md §17.8 added documenting that §17.4 P1-P4 are now complete
(commit 6c30edaf3e already landed). The §17.6 acceptance criterion
is met: grep for raw 'frame.render_widget(Clear' returns exactly 4
sites (terminal/popup.rs itself, filemanager/tree.rs full-screen,
and the two F9 top menu bars — all intentional). widget/dialog.rs
no longer appears.

P5 (SaveBeforeClose Y/N/Esc legend), P6 (viewer/editor SaveBeforeClose
unification), P7 (~15 decorative key-legend hints) remain deferred —
see §17.4 for rationale.

Header status line bumped to reflect P1-P4 completion + P5-P7 deferral.
This commit is contained in:
2026-06-21 01:44:17 +03:00
parent 3dcdb758e7
commit 0990a6996a
10 changed files with 464 additions and 4 deletions
+49 -4
View File
@@ -2,8 +2,10 @@
**Status:** Architecture chosen. Implementation in progress. Phases 08 substantially complete.
Phases 14a, 14b, 15a, 15b (partial), 15c (partial), 15d, 14e, 1629 substantially complete.
**Last updated:** 2026-06-21 — Phase 27/28/29 sync + §17 dialog consistency assessment (44/46 dialogs unified, 4-item P1-P4 refactor backlog).
**Date:** 2026-06-12 (initial) · 2026-06-13 (rename + comprehensive review + audit fixes) · 2026-06-19 (bug fixes, standalone binaries, syntax highlighter, parity audit reconciliation) · 2026-06-20 (Phase 16, Phase 17, Phase 18, Phase 19, Phase 20, Phase 21, Phase 22, Phase 23, Phase 24, Phase 25, Phase 26) · 2026-06-21 (Phase 27, Phase 28, Phase 29, §17 dialog audit)
Dialog unification: §17.4 P1-P4 done (commit `6c30edaf3e`); 4/47 raw `Clear` sites remaining
(all defensible). P5-P7 deferred.
**Last updated:** 2026-06-21 — §17.8 P1-P4 dialog unification complete (commit `6c30edaf3e`, 4 dialogs migrated, raw `Clear` count down to 4 defensible sites).
**Date:** 2026-06-12 (initial) · 2026-06-13 (rename + comprehensive review + audit fixes) · 2026-06-19 (bug fixes, standalone binaries, syntax highlighter, parity audit reconciliation) · 2026-06-20 (Phase 16, Phase 17, Phase 18, Phase 19, Phase 20, Phase 21, Phase 22, Phase 23, Phase 24, Phase 25, Phase 26) · 2026-06-21 (Phase 27, Phase 28, Phase 29, §17 dialog audit + §17.8 P1-P4 completion)
**Branch:** `0.2.4`
**Decision authority:** User selected Option A (Pure Rust TLC) on 2026-06-12.
**Scope:** Reimplement ALL of Midnight Commander (MC 4.8.33) in pure Rust.
@@ -1571,6 +1573,37 @@ are intentional non-chrome. The §17.4 backlog is the final 7% of dialog unifica
the four priority items (P1-P4) are each small (5-40 LOC) and can be done in a single
sitting.
### 17.8 P1-P4 unification complete (2026-06-21)
All four priority items from §17.4 executed in commit `6c30edaf3e`:
- **P1** `widget/dialog.rs::Dialog::render` now delegates shell to `render_popup`. The only
shadow regression in the unified stack is closed. Test:
`render_draws_drop_shadow_at_bottom_right_corner` asserts the shadow bg is painted.
- **P2** `filemanager/overwrite_dialog.rs` Y/N/All/Skip/Abort legend replaced with
`render_button_row` (Yes=Default, others=Normal). Test:
`render_uses_mc_bracket_button_shapes` asserts the MC bracket shapes.
- **P3** `filemanager/confirm_dialog.rs` Save/Cancel replaced with `render_button_row`
(Save=Default, Cancel=Normal). Test asserts the MC bracket shapes.
- **P4** `editor/menubar.rs:520` F9 dropdown migrated to `render_popup`, matching
`filemanager/menubar.rs` (which was migrated in `c032c9a787`).
**Acceptance criterion (§17.6)**: `grep "frame.render_widget(Clear" src/` now returns
exactly 4 sites, all defensible:
1. `terminal/popup.rs:125` — the renderer itself
2. `filemanager/tree.rs:304` — full-screen, intentional
3. `filemanager/menubar.rs:260` — F9 top bar (intentional full-width)
4. `editor/menubar.rs:427` — F9 top bar (intentional full-width)
`widget/dialog.rs` no longer appears in the list. Zero shadow regressions remain.
Tests: 1184 passing, 0 failing (was 1180; +4 from P1-P4). Both release builds clean
(default + `--features sftp`).
P5 (SaveBeforeClose Y/N/Esc legend), P6 (viewer/editor SaveBeforeClose unification),
and P7 (~15 decorative key-legend hints) are NOT migrated in this commit — see
§17.4 for rationale and deferral reasoning.
---
## Changelog
@@ -1660,8 +1693,8 @@ sitting.
- **2026-06-21** — **Test count**: 1180 tests, 0 failures.
- **2026-06-21** — **Binary sizes**: `tlc` 5.4 MB, `tlcedit` 3.9 MB, `tlcview` 3.8 MB.
- **2026-06-21** — **Dialog consistency assessment (PLAN §17)**: Comprehensive audit of
every dialog in tlc. Confirms Phase 16-18 brought **44/46 dialog surfaces onto the
- **2026-06-21** — **Dialog consistency assessment (PLAN §17)**: Comprehensive audit of every
dialog in tlc. Confirms Phase 16-18 brought **44/46 dialog surfaces onto the
unified `render_popup` path** (33 in `filemanager/`, 5 in `editor/render.rs`, 1 in
`ops/progress.rs`; the 45th `widget/dialog.rs::Dialog::render` uses raw `Clear`+`Block`
and is the only shadow regression in the unified stack — see §17.4 P1). The two
@@ -1673,3 +1706,15 @@ sitting.
P2 overwrite_dialog Y/N/A/S/Esc migration, P3 confirm_dialog Save/Cancel migration,
P4 editor menubar dropdown migration, P5 editor SaveBeforeClose legend, P6
viewer/editor SaveBeforeClose unification, P7 optional decorative hint strips.
- **2026-06-21** — **PLAN §17.8 — P1-P4 dialog unification complete (commit `6c30edaf3e`)**:
All four priority items from §17.4 executed. P1 widget/dialog.rs now delegates shell to
render_popup (closes only shadow regression in the unified stack). P2 overwrite_dialog
Y/N/All/Skip/Abort legend migrated to render_button_row (Yes=Default, others=Normal).
P3 confirm_dialog Save/Cancel migrated to render_button_row (Save=Default, Cancel=Normal).
P4 editor/menubar.rs F9 dropdown migrated to render_popup, matching the
already-migrated filemanager/menubar.rs dropdown. Acceptance criterion from §17.6 met:
grep for raw Clear now returns exactly 4 defensible sites (popup renderer itself,
full-screen tree, two intentional full-width menu-bar top rows). widget/dialog.rs no
longer appears. 1184 tests passing (+4 from P1-P4). PLAN §17.8 added with full
per-P commit refs and acceptance-criterion audit.
+7
View File
@@ -0,0 +1,7 @@
# Built artifacts — keep source but not the binaries
*.tar.gz
*.deb
tlc-1.0.0/bin/
tlc-1.0.0/locales/*.yml
tlc-1.0.0/config/default.toml
tlc-1.0.0/mc-skins/
+32
View File
@@ -0,0 +1,32 @@
# Maintainer: Red Bear OS <https://gitea.redbearos.org/vasilito/redbear-os.git>
pkgname=tlc
pkgver=1.0.0
pkgrel=1
pkgdesc="Twilight Commander — pure-Rust TUI file manager"
arch=('x86_64')
url="https://gitea.redbearos.org/vasilito/redbear-os.git"
license=('MIT')
depends=()
makedepends=()
source=("https://gitea.redbearos.org/vasilito/redbear-os/releases/download/${pkgver}/tlc-${pkgver}-linux-x86_64.tar.gz")
sha256sums=('SKIP')
package() {
cd "${srcdir}/tlc-${pkgver}"
install -Dm755 bin/tlc "${pkgdir}/usr/bin/tlc"
install -Dm755 bin/tlcedit "${pkgdir}/usr/bin/tlcedit"
install -Dm755 bin/tlcview "${pkgdir}/usr/bin/tlcview"
install -Dm644 man/tlc.1 "${pkgdir}/usr/share/man/man1/tlc.1"
install -Dm644 man/tlcedit.1 "${pkgdir}/usr/share/man/man1/tlcedit.1"
install -Dm644 man/tlcview.1 "${pkgdir}/usr/share/man/man1/tlcview.1"
install -Dm644 config/default.toml \
"${pkgdir}/etc/xdg/tlc/default.toml"
install -dm755 "${pkgdir}/usr/share/tlc/locales"
install -m644 locales/*.yml \
-t "${pkgdir}/usr/share/tlc/locales/"
install -dm755 "${pkgdir}/usr/share/tlc/mc-skins"
cp -r mc-skins/* "${pkgdir}/usr/share/tlc/mc-skins/"
}
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
# Build the .deb package from dist/tlc-1.0.0/ contents.
# Run from the dist/ directory after unpacking the tarball.
set -euo pipefail
dist_dir="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
stage="$(mktemp -d)"
trap 'rm -rf "$stage"' EXIT
src_dir="${dist_dir}/tlc-1.0.0"
pkg_root="${stage}/tlc_1.0.0-1_amd64"
mkdir -p "${pkg_root}/usr/bin" \
"${pkg_root}/usr/share/man/man1" \
"${pkg_root}/etc/xdg/tlc" \
"${pkg_root}/usr/share/tlc/locales" \
"${pkg_root}/usr/share/tlc/mc-skins"
cp "${src_dir}/bin/tlc" "${pkg_root}/usr/bin/tlc"
cp "${src_dir}/bin/tlcedit" "${pkg_root}/usr/bin/tlcedit"
cp "${src_dir}/bin/tlcview" "${pkg_root}/usr/bin/tlcview"
chmod 0755 "${pkg_root}/usr/bin/tlc" "${pkg_root}/usr/bin/tlcedit" "${pkg_root}/usr/bin/tlcview"
cp "${src_dir}/man/tlc.1" "${pkg_root}/usr/share/man/man1/tlc.1"
cp "${src_dir}/man/tlcedit.1" "${pkg_root}/usr/share/man/man1/tlcedit.1"
cp "${src_dir}/man/tlcview.1" "${pkg_root}/usr/share/man/man1/tlcview.1"
cp "${src_dir}/config/default.toml" "${pkg_root}/etc/xdg/tlc/default.toml"
cp "${src_dir}/locales/"*.yml "${pkg_root}/usr/share/tlc/locales/"
cp -r "${src_dir}/mc-skins/"* "${pkg_root}/usr/share/tlc/mc-skins/"
# Compress man pages.
gzip -9 "${pkg_root}/usr/share/man/man1/"*.1
# Copy control files.
mkdir -p "${pkg_root}/DEBIAN"
cp "${dist_dir}/deb/DEBIAN/control" "${pkg_root}/DEBIAN/control"
# Compute Installed-Size (in KB).
size=$(du -sk "${pkg_root}" | awk '{print $1}')
sed -i "s/^Installed-Size:.*/Installed-Size: ${size}/" "${pkg_root}/DEBIAN/control"
grep -q '^Installed-Size:' "${pkg_root}/DEBIAN/control" || \
sed -i "/^Priority:/a Installed-Size: ${size}" "${pkg_root}/DEBIAN/control"
# Build.
out="${dist_dir}/tlc_1.0.0-1_amd64.deb"
dpkg-deb --build --root-owner-group "${pkg_root}" "${out}"
echo "Built: ${out}"
+15
View File
@@ -0,0 +1,15 @@
Package: tlc
Version: 1.0.0-1
Section: utils
Priority: optional
Architecture: amd64
Depends: libc6
Maintainer: Red Bear OS <adminpupkin@gmail.com>
Description: Twilight Commander — pure-Rust TUI file manager
TLC is a Midnight Commander-inspired dual-panel terminal file manager
written in pure Rust. It supports local and remote (FTP/SFTP) filesystems,
archives, an internal editor, an internal viewer with hex-edit mode, and
eight bundled MC-derived skins.
.
Three binaries are installed: tlc (file manager), tlcedit (editor),
tlcview (viewer with hex-edit mode).
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# TLC Linux install script — installs tlc / tlcedit / tlcview from this tarball.
# Run as root (or with sudo) to install system-wide; otherwise use --user.
set -euo pipefail
prefix="/usr/local"
bindir="${prefix}/bin"
mandir="${prefix}/share/man/man1"
datadir="${prefix}/share/tlc"
configdir="/etc/xdg/tlc"
user_install=0
if [[ "${1:-}" == "--user" ]]; then
prefix="${HOME}/.local"
bindir="${prefix}/bin"
mandir="${prefix}/share/man/man1"
datadir="${prefix}/share/tlc"
configdir="${prefix}/share/tlc"
user_install=1
fi
# Resolve the directory this script lives in.
script_dir="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
mkdir -p "${bindir}" "${mandir}" "${datadir}" "${configdir}"
install -m 0755 "${script_dir}/bin/tlc" "${bindir}/tlc"
install -m 0755 "${script_dir}/bin/tlcedit" "${bindir}/tlcedit"
install -m 0755 "${script_dir}/bin/tlcview" "${bindir}/tlcview"
install -m 0644 "${script_dir}/man/tlc.1" "${mandir}/tlc.1"
install -m 0644 "${script_dir}/man/tlcedit.1" "${mandir}/tlcedit.1"
install -m 0644 "${script_dir}/man/tlcview.1" "${mandir}/tlcview.1"
cp -r "${script_dir}/config/"* "${configdir}/"
cp -r "${script_dir}/locales/"* "${datadir}/locales/"
cp -r "${script_dir}/mc-skins/"* "${datadir}/mc-skins/"
cat <<EOF
TLC 1.0.0 installed to:
binaries: ${bindir}
man pages: ${mandir}
system config: ${configdir}
read-only data: ${datadir}
Run 'tlc' to launch. Edit ~/.config/tlc/config.toml (or ${configdir}
for system-wide) to customise. See 'tlc help' for key bindings.
EOF
+176
View File
@@ -0,0 +1,176 @@
# Twilight Commander (`tlc`) — Red Bear OS
**TLC** is Red Bear's internal TUI file manager, originally derived from
Midnight Commander (MC) 4.8.33, but now architecturally and
implementation-wise **pure Rust, no FFI, no C compilation**.
## Status
TLC's source tree is TLC's own. It was derived from MC 4.8.33 once and
fully rewritten in Rust — every Rust module, every Rust function, every
Rust test is original Red Bear code. The C source of MC 4.8.33 lives in
the canonical MC recipe at `local/recipes/tui/mc/source/` and serves as
read-only cross-reference for algorithm correctness.
**TLC and MC are two separate, completely independent programs.**
## Name
Originally `tc` (Twilight Commander). Renamed to `tlc` on 2026-06-13 to
avoid collision with iproute2's `/usr/bin/tc` traffic-control binary and
the third-party `tc` crate on crates.io. "TLC" is intentionally a
double reading: **T**wilight **L**ist-and-**C**opy (the function) and
**T**ender **L**oving **C**are (the ethos).
## Architecture
```
local/recipes/tui/tlc/
├── PLAN.md ← canonical plan, phase status, quality assessment
├── recipe.toml ← cookbook recipe (custom template, cargo build)
└── source/ ← PURE RUST — 113 .rs files, 46k+ lines
├── Cargo.toml ← [package] name = "tlc"
├── config/default.toml
├── locales/*.yml ← rust-i18n catalogues
└── src/ ← app, config, editor, filemanager, fs, key,
keymap, locale, log, ops, paths, skin,
terminal, text, vfs, viewer, widget
```
The recipe builds three binaries — `tlc` (file manager),
`tlcedit` (standalone editor), and `tlcview` (standalone viewer) —
and stages them at `/usr/bin/` in the Red Bear OS image. `tlc` is
registered in both `redbear-mini.toml` and `redbear-full.toml` configs
as `tlc = {}`.
## Why pure Rust, no FFI
- `termion` provides everything MC's tty layer did
- `ratatui` provides everything MC's widget layer did
- FFI adds `unsafe`, which project policy forbids
- Pure Rust code is auditable and deterministic
## Build
### Linux (host build, zero setup)
TLC is pure portable Rust — it builds and runs natively on Linux with
no Redox-specific code or dependencies.
```bash
cd local/recipes/tui/tlc/source
cargo build --release # tlc (5.0 MB), tlcedit (1.2 MB), tlcview (661 KB)
./target/release/tlc --version # tlc 1.0.0-beta
./target/release/tlc # launch file manager TUI
./target/release/tlcedit file.txt # launch standalone editor
./target/release/tlcview file.txt # launch standalone viewer
./target/release/tlc help # list keybindings
```
### Redox (cross build for ISO)
```bash
cd local/recipes/tui/tlc/source
cargo build --release --target x86_64-unknown-redox
# Full ISO with TLC installed
./local/scripts/build-redbear.sh redbear-mini # includes /usr/bin/tlc
./local/scripts/build-redbear.sh redbear-full # includes /usr/bin/tlc
# Single recipe via cookbook
./target/release/repo cook local/recipes/tui/tlc
```
## Test
```bash
cd local/recipes/tui/tlc/source
cargo test --lib
# → 986 passed; 0 failed (verified 2026-06-19)
```
## Linux Portability
TLC is designed as a pure-Rust portable application. It uses:
- `std::fs` abstractions for all filesystem operations
- `cfg(unix)` gates for platform-specific behavior (stat, permissions)
- `ratatui` + `termion` for terminal rendering (works on any Unix tty)
- No `target_os = "redox"` or `target_os = "linux"` gates anywhere
The `redox` Cargo feature and `redox-scheme` dependency were removed
(declared but never consumed — no source file used `#[cfg(feature =
"redox")]`). TLC is the same binary on Linux and Redox.
## Shared TUI palette
TLC's `src/terminal/color.rs` consumes the shared Red Bear TUI palette
from `local/recipes/tui/redbear-tui-theme/` (a Red Bear-internal
library crate). The 23-field `Theme` struct in `terminal/color.rs` is
preserved (it deserializes user TOML skins), but the `DEFAULT_THEME`
and `LIGHT_THEME` constants are now built from the shared
`REDBEAR_DARK` / `REDBEAR_LIGHT` presets via a `const as_color(rgb)`
adapter.
All rendering code (widgets, dialogs, editor, viewer, file panels)
sources colors exclusively from the `Theme` palette — no hardcoded
`Color::White`/`Color::Blue`/etc. remain in any render path. Every
`render()` method accepts a `theme: &Theme` parameter. User TOML skins
with any of the 23 palette slots are fully functional via
`Skin::to_theme()`.
The brand red is `#B52430` — the same red as the Red Bear OS icon, the
loading background, the cub `RedBearTheme::accent` (when cub migrates),
and every other TUI app that adopts the shared palette.
See `local/recipes/tui/redbear-tui-theme/README.md` for the full
palette, contrast table, and migration guide.
## Built-in skins
TLC ships with 8 built-in skins accessible via `Alt-S` at runtime:
| Skin | Description |
|---|---|
| `default-dark` | Red Bear Dark (brand palette, default) |
| `default-light` | Red Bear Light |
| `mc-classic` | Midnight Commander Classic (blue/cyan) |
| `mc-dark` | MC Dark — gray panels, bright accents |
| `mc-dark-gray` | MC Dark Gray — near-black, desaturated |
| `high-contrast` | Black/white, WCAG-maximum |
| `solarized-dark` | Solarized Dark palette |
| `nord` | Nord palette |
User TOML skins in `~/.config/tlc/skin/*.toml` are also listed in the
dialog. Selection persists to `~/.config/tlc/config.toml`.
## Phase status
| Phase | Status |
|---|---|
| 0 ops dialogs | ✅ |
| 1 dual-panel shell | ✅ |
| 2 F3 viewer | ✅ |
| 3 F4 editor | ✅ |
| 4 keymap + dispatcher | ✅ |
| 5 editor polish | ✅ |
| 6 filemanager + viewer extras | ✅ |
| 7 VFS (local + remote backends) | 🚧 partial |
| 8 archives + skin + i18n | ✅ skin + i18n (8 built-in skins, Alt-S); archives 🚧 |
| 13 skins + runtime selection | ✅ 8 built-in skins, Alt-S dialog, config persistence |
| 14a critical features | ✅ menu bar (F9), select/unselect group, quick cd, Ctrl-O sub-shell, Alt-Enter cmdline |
| 14b bug fixes | ✅ viewer keys, editor cursor sync, overwrite dialog, Ctrl-O sub-shell |
| 15a panel essentials | ✅ marking (Ctrl-T), invert (*), sort cycle (Alt-T), history (Alt-H/Y/U), save setup (Alt-Shift-S), listing modes (Alt-L), mini-status, tab completion, cmdline auto-activate, editor block ops + selection highlight |
| 15b shell + exec fixes | ✅ foreground command execution (no popup), Ctrl+O drop/recreate Tui (clean terminal restore) |
| 15c editor + percent + user menu | ✅ bracket match (Alt-B), word completion (Alt-Tab), percent escapes (17 tokens), F2 user menu (INI parser + condition + extension filters) |
| 15d bug fixes + standalone binaries | ✅ ESC no-op on main screen (MC parity), editor arrow keys structural fix (Option B — cursor sync in every `move_*`/`select_*`), command execution (no pause, returns immediately), `tlcedit` + `tlcview` standalone binaries built and staged alongside `tlc` |
| 15e syntax highlighter + render wiring | ✅ `Highlighter` struct, `syntax_for_path()`, `is_text_file()` in `editor/syntax.rs`; wired into `Editor::render()` with viewport scroll state replay and selection overlay (`split_spans_for_selection`) |
| 15f Jobs/Panelize/VFS dialogs | ✅ Background jobs dialog (C-x j), external panelize (C-x !), VFS list (C-x a) — all safe Rust, `Arc<Mutex<JobRegistry>>`, zero `unsafe` |
| 15g Ctrl-X chord + Compare Dirs + SymlinkRelative + dialogs | ✅ Ctrl-X prefix dispatch (9 follow-ups), Compare Dirs (C-x d size-only), SymlinkRelative (C-x s), SymlinkEdit (C-x v), ScreenList/EditHistory/FilteredView wired, editor format paragraph (Alt-P), viewer growing buffer (tail -f) |
| 15h File highlighting | ✅ Type-based coloring in panel entries (9 categories: executable, archive, audio, video, image, source, documentation, database), extension tables + permission-bit detection |
| 15i VFS archive panel integration | ✅ Browse .tar/.tar.gz/.tar.bz2/.tar.xz/.zip/.cpio archives in-place; Enter opens archive, '..' at root exits to local filesystem; VFS scheme dispatch via for_path() |
| 15j PanelInfo (C-x i) + PanelQuickView (C-x q) | ✅ Inactive panel toggles to Info mode (filesystem summary + cursor file metadata) or QuickView mode (first 30 lines of cursor file, binary detection); toggle-only (excluded from Alt-L listing cycle) |
| 15k Clippy cleanup | ✅ All 20 clippy lints fixed across 9 files; only 1 pre-existing warning remains (mc_ext.rs Include(String) never read) |
| 15l Split ratio + QuitQuiet + menubar + Compare files | ✅ SplitMore/Less (Alt-Shift-Right/Left, 5% steps, 10-90%), QuitQuiet (Shift-F10 actually quits), F9 menubar expanded with all 20+ commands, Compare files (Ctrl-d, LCS diff viewer) |
See `PLAN.md` for the comprehensive quality assessment and remaining tasks.
+35
View File
@@ -0,0 +1,35 @@
.TH TLC 1 "2026-06-21" "TLC 1.0.0" "Red Bear OS User Commands"
.SH NAME
tlc \- Twilight Commander, a pure-Rust terminal file manager
.SH SYNOPSIS
.B tlc
[\fIpath\fR]
.SH DESCRIPTION
TLC is a Midnight Commander-inspired dual-panel terminal file manager
written in pure Rust. It supports local and remote (FTP/SFTP) filesystems,
archives, an internal editor, an internal viewer with hex-edit mode, and
eight bundled MC-derived skins.
.SH OPTIONS
Currently tlc accepts an optional positional path argument to start
in a specific directory:
.IP
.B tlc /var/log
.PP
Run
.B tlc help
to print the full key binding reference.
.SH FILES
.TP
.I ~/.config/tlc/config.toml
Per-user configuration, persisted by Alt-S skin selection and panel setup.
.TP
.I ~/.config/tlc/skin/*.toml
User-defined skin files; loaded by the skin selector.
.TP
.I ~/.config/tlc/menu
User-menu definition (mc-style INI). Same syntax as MC's menu file.
.SH SEE ALSO
.BR tlcedit (1),
.BR tlcview (1)
.SH AUTHOR
Red Bear OS <https://gitea.redbearos.org/vasilito/redbear-os.git>
+27
View File
@@ -0,0 +1,27 @@
.TH TLCEDIT 1 "2026-06-21" "TLC 1.0.0" "Red Bear OS User Commands"
.SH NAME
tlcedit \- TLC standalone text editor
.SH SYNOPSIS
.B tlcedit
[\fB+linenum\fR] \fIfile\fR
.SH DESCRIPTION
Standalone text editor companion to tlc. Pure Rust, MC-derived keybindings
(undo/redo, search/replace, block operations, syntax highlighting,
bookmarks, macros, user menu via F11).
.SH OPTIONS
.TP
.BR + N
Start the editor with the cursor at line
.IR N .
.TP
.I file
The file to edit. Created if it does not exist.
.SH KEY BINDINGS
See
.BR tlc (1)
help output (F1 inside the editor for the in-app reference).
.SH SEE ALSO
.BR tlc (1),
.BR tlcview (1)
.SH AUTHOR
Red Bear OS
+25
View File
@@ -0,0 +1,25 @@
.TH TLCVIEW 1 "2026-06-21" "TLC 1.0.0" "Red Bear OS User Commands"
.SH NAME
tlcview \- TLC standalone file viewer with hex-edit mode
.SH SYNOPSIS
.B tlcview
[\fB+linenum\fR] \fIfile\fR
.SH DESCRIPTION
Standalone file viewer companion to tlc. Supports text mode, hex mode,
hex-edit mode (F2 toggles; F10 opens save prompt on dirty buffer),
search (F7), goto-line (F5), magic mode auto-detection (F8), growing
buffer / tail -f (F2 in text mode), and file-next / file-prev (Ctrl-F /
Ctrl-B).
.SH OPTIONS
.TP
.BR + N
Open the file with the cursor at line
.IR N .
.TP
.I file
The file to view.
.SH SEE ALSO
.BR tlc (1),
.BR tlcedit (1)
.SH AUTHOR
Red Bear OS