File explorer GUI
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Bryan 9c2163d57a README: self-contained wording, no pointers to other documents or working notes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 11:03:21 +01:00
examples files: regress images retaken, drive script adjusted for sans-12 2026-10-25 10:20:16 +01:00
scripts files: a window on the file system -- Back, Up, the path, the list with icons, a status bar 2026-10-24 16:19:57 +02:00
.gitignore files: a window on the file system -- Back, Up, the path, the list with icons, a status bar 2026-10-24 16:19:57 +02:00
files.talc files: a window on the file system -- Back, Up, the path, the list with icons, a status bar 2026-10-24 16:19:57 +02:00
README README: self-contained wording, no pointers to other documents or working notes 2026-10-25 11:03:21 +01:00
VERSION files: a window on the file system -- Back, Up, the path, the list with icons, a status bar 2026-10-24 16:19:57 +02:00

files: a window on the file system -- the directory's path across the
top with Back and Up beside it, what the directory holds in a list
below, each entry with the icon for what it is, and a status bar along
the bottom. The shape of PCManFM cut down to exploring: no bookmarks,
no side pane, no tabs, nothing copied, moved or renamed. A program in a
repository of its own, built against the libraries beside it --
../canvas for drawing, ../look for the theme and the icons, ../toolkit
for the parts and the run loop -- the way any program with a window is
meant to be.

  files.talc            the program: Back, Up and the path field in a
                        row, the list in a frame, the status bar; what
                        a press and the keys do
  examples/tree/        a small file system the regress explores: bin/
                        with an executable, etc/ with a file, home/bryan
                        with a talc file, a text file and a hidden
                        directory
  examples/drive.talc   what the regress plays at it: home and bryan
                        entered, a file pressed for its details, hidden
                        files shown, Up, Back, a relative path typed
  examples/drive-classic.talc   one step again, in the classic look
  examples/*.ppm        the pictures expected at each step
  scripts/build.sh      builds files.talc into bin/files
  scripts/regress.sh    runs it under ../screen with no card on a copy of
                        examples/tree, twice (the built-in look, the
                        classic one), and compares the pictures

Build:

  scripts/build.sh
  scripts/regress.sh

which need the installed toolchain (compiler on PATH), ../canvas built
(its fonts), ../look (its example themes and its icons), ../toolkit,
and for the regress ../screen built. Start it from the launcher
(`files`) or the screen's -run; ../vm/scripts/build.sh puts it at
/bin/files in the machine.

  files [-font <name>] [path]

Shows / with no path, else the directory given; a path that is not a
directory is an error on the error stream and exit 2. The list is
drawn in the theme's font unless -font names another. The window
begins at 48 by 20 cells of the theme's font and follows the screen
from then on.

THE WINDOW. A row across the top: Back, which returns to the directory
left last; Up, which goes to the parent; and the path, in a field that
takes the rest of the row and can be typed into. Under it the list in
a frame, taking the height: the directories first, then the files, as
the system sorts them, each with the icon for what it is -- a folder,
a talc file, a file that may be run, any other file -- from the pack
the theme names ((look icons), ../look/README), when the screen was
started with an icons directory. Along the bottom the status bar: how
many items there are, and how many names beginning with a dot were
left out, until ctrl+h shows them.

A PRESS on a directory (or return, with the focus in the list, which
has it when the window opens) enters it. A press on a file puts its
details in the status bar -- its size, when it changed, what it holds
when it is a link -- and a press on the file the status bar already
shows opens it in the editor (`editor <path>`, by name on PATH, with
this program's environment, so it comes up on the same screen); when
the editor cannot be started the status bar says so. So press-press
opens a file, as does press-return, and one press tells you about it.
A directory that refuses to be read is said in the status bar and the
list stays where it was.

THE KEYS. Backspace in the list goes up one directory; alt+left goes
back; ctrl+l puts the cursor in the path field with its text selected,
and return there goes to the directory typed, relative to the one
shown when it does not begin with a slash (".." and "." are taken
into the path, so the field shows where one is); a path that is not a
directory is said in the status bar and the field put back; ctrl+h
shows the names beginning with a dot, and hides them again; F5 reads
the directory again (nothing watches it); tab moves the focus round
the buttons, the field and the list. The icons are taken again when
the look changes.

Exit codes: 0 the window was closed; 1 the screen or the font refused
something; 2 the arguments were wrong.

NOT HERE: forward, a home button, bookmarks and a places pane; an icon
view, columns for size and date, sorting by them; a context menu,
copying, moving, renaming, deleting, making a directory; opening a
file with anything but the editor.