A dual-pane GTK3 file manager written in C, where every file operation is implemented directly on POSIX system calls (no high-level file libraries) — the point of the project was to use the OS interface itself, not wrap it.
┌──────────────┬──────────────┐
│ sidebar │ path bar │
│ favourites ├──────────────┤
│ │ file list │
│ │ (Treeview) │
└──────────────┴──────────────┘
right-click → context menu (copy / move / rename / delete / zip)
| Operation | Implementation |
|---|---|
| List directory | opendir / readdir / closedir |
| File metadata (size, type, modified, inode) | stat |
| New folder | mkdir(path, 0755) |
| New file | open with O_CREAT |
| Move / rename | rename (atomic) |
| Delete (incl. recursive) | remove + nftw tree walk |
| Recursive copy | manual byte-wise open/read/write traversal |
| Compress folder to ZIP | libzip |
| Open with default app | system("open …") (macOS) |
brew install gtk+3 libzip pkg-config
make
./filemanager- Written for macOS with Homebrew GTK (Makefile points at
/opt/homebrew); on Linux just installgtk+3/libzipthrough your package manager and drop the Homebrew include paths. - Heavily commented — it doubles as a reference for how each syscall behaves.
