Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

File Manager in C — Built on Raw System Calls

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)

Operations → system calls

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)

Build & run (macOS)

brew install gtk+3 libzip pkg-config
make
./filemanager

Layout

File Purpose
main.c GTK3 UI: sidebar, path bar, TreeView listing, context menu, dialogs
backend.c / backend.h All file operations on POSIX syscalls + libzip
Makefile Build (pkg-config based)

Notes

  • Written for macOS with Homebrew GTK (Makefile points at /opt/homebrew); on Linux just install gtk+3/libzip through your package manager and drop the Homebrew include paths.
  • Heavily commented — it doubles as a reference for how each syscall behaves.

About

Dual-pane GTK3 file manager in C — listing, mkdir, rename, recursive delete, copy and zip implemented directly on POSIX system calls + libzip

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages