A fast, modern archive manager built with Rust
ZipRS is a professional desktop archive manager inspired by WinRAR, built entirely in Rust for maximum performance. It features both a modern dark GUI powered by Tauri v2, Svelte 5, and TailwindCSS 4, and a powerful command-line interface for scripting and terminal workflows.
ziprs list — List archive contents with optional long format and filteringziprs extract — Extract all or specific files to a directoryziprs create — Create archives in any supported formatziprs add — Add files to an existing ZIP archiveziprs delete — Remove entries from a ZIP archiveziprs test — Verify archive integrityziprs info — Detailed archive information and statisticsziprs tree — Display contents as a visual tree with sizesziprs search — Find entries matching a pattern with highlightingziprs cat — Print file contents from archive to stdoutziprs convert — Convert between formats (e.g. ZIP to TAR.GZ)ziprs diff — Compare two archives and show differencesziprs stats — Size distribution, compression stats, top largest filesziprs types — File type breakdown with visual bar chart| Format | Browse | Extract | Add/Delete | Create |
|---|---|---|---|---|
| ZIP | Yes | Yes | Yes | Yes |
| TAR | Yes | Yes | No | Yes |
| TAR.GZ | Yes | Yes | No | Yes |
| TAR.BZ2 | Yes | Yes | No | Yes |
| TAR.ZST | Yes | Yes | No | Yes |
# Clone the repository
git clone https://github.com/CanReader/ZipRS.git
cd ZipRS
# Install frontend dependencies
npm install
# Build for production
npm run build
# The binary is at target/release/ziprs
# Symlink to your PATH
ln -sf $(pwd)/target/release/ziprs ~/.local/bin/ziprs
webkit2gtk-4.1 libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
# Launch the graphical interface
ziprs
# List archive contents
ziprs list archive.zip
ziprs list -l archive.tar.gz # detailed view
ziprs list archive.zip -f "*.rs" # filter by pattern
# Extract
ziprs extract archive.zip # extract to current dir
ziprs extract archive.zip -o ./output # extract to specific dir
ziprs extract archive.zip --files src/main.rs src/lib.rs
# Create
ziprs create backup.zip file1.txt dir/ # create ZIP
ziprs create backup.tar.gz src/ # create TAR.GZ
# Modify (ZIP only)
ziprs add archive.zip newfile.txt
ziprs delete archive.zip old/unwanted.txt
# Inspect
ziprs info archive.zip # format, size, compression ratio
ziprs tree archive.zip -s # visual tree with sizes
ziprs tree archive.zip -d 2 # tree limited to depth 2
ziprs stats archive.zip -n 5 # stats with top 5 largest files
ziprs types archive.zip # file type breakdown
# Search & View
ziprs search archive.zip "main" # find entries matching pattern
ziprs search archive.zip "config" -l # search with sizes and dates
ziprs cat archive.zip src/main.rs # print file to stdout
# Convert & Compare
ziprs convert data.zip data.tar.gz # convert between formats
ziprs diff v1.zip v2.zip # compare two archives
# Test
ziprs test archive.zip # verify integrity
All commands support -v for verbose progress output. Use ziprs help <command> for detailed usage.
| Shortcut | Action |
|---|---|
Ctrl+O |
Open archive |
Ctrl+N |
Create new archive |
Ctrl+E |
Extract all |
Ctrl+H |
Extract here |
Ctrl+T |
Test archive integrity |
Ctrl+A |
Select all |
Delete |
Delete selected entries |
Enter |
Open file / Navigate into folder |
Backspace |
Navigate up |
Alt+Left/Right |
Navigate back/forward |
Alt+Enter |
Properties |
F5 |
Refresh |
ZipRS/
├── src-tauri/ # Rust backend (Tauri v2)
│ └── src/
│ ├── main.rs # Entry point (CLI/GUI dispatch)
│ ├── lib.rs # Tauri builder & plugin setup
│ ├── cli.rs # CLI commands (clap)
│ ├── commands.rs # GUI IPC command handlers
│ ├── progress.rs # Progress trait (GUI events / CLI stderr)
│ └── archive/
│ ├── mod.rs # ArchiveBackend trait & format detection
│ ├── entry.rs # ArchiveEntry data model
│ ├── zip_backend.rs # ZIP (Zstd level 19)
│ └── tar_backend.rs # TAR / GZ / BZ2 / ZST
├── src/ # Svelte 5 frontend
│ ├── App.svelte # Main app component
│ ├── app.css # Dark theme & CSS variables
│ ├── main.ts # Svelte mount
│ └── lib/
│ ├── store.svelte.ts # Reactive state (Svelte 5 runes)
│ ├── types.ts # TypeScript interfaces
│ ├── utils.ts # Formatting & icon color helpers
│ └── components/
│ ├── WelcomeScreen.svelte
│ ├── Toolbar.svelte
│ ├── AddressBar.svelte
│ ├── FileTable.svelte
│ ├── StatusBar.svelte
│ ├── ContextMenu.svelte
│ ├── ProgressDialog.svelte
│ └── Dialogs.svelte
└── static/ # Static assets
npm install # install dependencies
npm run dev # development mode with hot reload
npm run build # production build
npm run check # type-check Svelte + Rust
npm run lint # run Clippy
npm run clean # remove build artifacts
MIT