{"id":49914628,"url":"https://github.com/canreader/ziprs","last_synced_at":"2026-05-16T15:10:24.010Z","repository":{"id":344483159,"uuid":"1179673937","full_name":"CanReader/ZipRS","owner":"CanReader","description":"A fast, modern archive manager built with Rust + Tauri + Svelte","archived":false,"fork":false,"pushed_at":"2026-03-15T00:05:52.000Z","size":3350,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-15T08:29:15.984Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CanReader.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-12T09:08:28.000Z","updated_at":"2026-03-15T00:05:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CanReader/ZipRS","commit_stats":null,"previous_names":["canreader/ziprs"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CanReader/ZipRS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanReader%2FZipRS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanReader%2FZipRS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanReader%2FZipRS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanReader%2FZipRS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CanReader","download_url":"https://codeload.github.com/CanReader/ZipRS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanReader%2FZipRS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33107644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-16T15:10:13.518Z","updated_at":"2026-05-16T15:10:24.004Z","avatar_url":"https://github.com/CanReader.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"icons/Logo.png\" alt=\"ZipRS Logo\" width=\"140\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eZipRS\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA fast, modern archive manager built with Rust\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/rust-1.75+-orange?logo=rust\" alt=\"Rust\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tauri-v2-blue?logo=tauri\" alt=\"Tauri v2\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/svelte-5-ff3e00?logo=svelte\" alt=\"Svelte 5\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tailwindcss-4-38bdf8?logo=tailwindcss\" alt=\"TailwindCSS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"MIT License\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Screenshot.jpg\" alt=\"ZipRS Screenshot\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n## About\n\nZipRS 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.\n\n## Features\n\n### GUI\n- **Multi-format support** — ZIP, TAR, TAR.GZ, TAR.BZ2, TAR.ZST\n- **Full archive operations** — Open, browse, extract, add, delete, create, test\n- **ZIP with Zstd compression** — Level 19 for maximum compression ratio\n- **Folder navigation** — Breadcrumb address bar with back/forward/up history\n- **File table** — Sortable columns, multi-select (Ctrl+Click, Shift+Click), colored file-type icons\n- **Drag \u0026 drop** — Drop archives onto the window to open them\n- **Drag out** — Extract files by dragging them out to your file manager\n- **Context menu** — Right-click for quick actions on selected entries\n- **Keyboard shortcuts** — Ctrl+O, Ctrl+N, Ctrl+E, Ctrl+T, Delete, F5, and more\n- **Progress tracking** — Real-time progress bar for all archive operations\n- **Properties panel** — Detailed file info including CRC-32, compression ratio, method\n- **Integrity testing** — Verify archive contents with one click\n\n### CLI\n- **`ziprs list`** — List archive contents with optional long format and filtering\n- **`ziprs extract`** — Extract all or specific files to a directory\n- **`ziprs create`** — Create archives in any supported format\n- **`ziprs add`** — Add files to an existing ZIP archive\n- **`ziprs delete`** — Remove entries from a ZIP archive\n- **`ziprs test`** — Verify archive integrity\n- **`ziprs info`** — Detailed archive information and statistics\n- **`ziprs tree`** — Display contents as a visual tree with sizes\n- **`ziprs search`** — Find entries matching a pattern with highlighting\n- **`ziprs cat`** — Print file contents from archive to stdout\n- **`ziprs convert`** — Convert between formats (e.g. ZIP to TAR.GZ)\n- **`ziprs diff`** — Compare two archives and show differences\n- **`ziprs stats`** — Size distribution, compression stats, top largest files\n- **`ziprs types`** — File type breakdown with visual bar chart\n\n## Supported Formats\n\n| Format | Browse | Extract | Add/Delete | Create |\n|--------|--------|---------|------------|--------|\n| ZIP    | Yes    | Yes     | Yes        | Yes    |\n| TAR    | Yes    | Yes     | No         | Yes    |\n| TAR.GZ | Yes    | Yes     | No         | Yes    |\n| TAR.BZ2| Yes    | Yes     | No         | Yes    |\n| TAR.ZST| Yes    | Yes     | No         | Yes    |\n\n## Installation\n\n### From Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/CanReader/ZipRS.git\ncd ZipRS\n\n# Install frontend dependencies\nnpm install\n\n# Build for production\nnpm run build\n\n# The binary is at target/release/ziprs\n```\n\n### Install Locally\n\n```bash\n# Symlink to your PATH\nln -sf $(pwd)/target/release/ziprs ~/.local/bin/ziprs\n```\n\n### System Dependencies (Linux)\n\n```\nwebkit2gtk-4.1 libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev\n```\n\n### Optional\n\n- [ripdrag](https://github.com/nik012003/ripdrag) — enables drag-out file extraction from the GUI\n\n## Usage\n\n### GUI Mode\n\n```bash\n# Launch the graphical interface\nziprs\n```\n\n### CLI Mode\n\n```bash\n# List archive contents\nziprs list archive.zip\nziprs list -l archive.tar.gz            # detailed view\nziprs list archive.zip -f \"*.rs\"         # filter by pattern\n\n# Extract\nziprs extract archive.zip                # extract to current dir\nziprs extract archive.zip -o ./output    # extract to specific dir\nziprs extract archive.zip --files src/main.rs src/lib.rs\n\n# Create\nziprs create backup.zip file1.txt dir/   # create ZIP\nziprs create backup.tar.gz src/          # create TAR.GZ\n\n# Modify (ZIP only)\nziprs add archive.zip newfile.txt\nziprs delete archive.zip old/unwanted.txt\n\n# Inspect\nziprs info archive.zip                   # format, size, compression ratio\nziprs tree archive.zip -s                # visual tree with sizes\nziprs tree archive.zip -d 2             # tree limited to depth 2\nziprs stats archive.zip -n 5             # stats with top 5 largest files\nziprs types archive.zip                  # file type breakdown\n\n# Search \u0026 View\nziprs search archive.zip \"main\"          # find entries matching pattern\nziprs search archive.zip \"config\" -l     # search with sizes and dates\nziprs cat archive.zip src/main.rs        # print file to stdout\n\n# Convert \u0026 Compare\nziprs convert data.zip data.tar.gz       # convert between formats\nziprs diff v1.zip v2.zip                 # compare two archives\n\n# Test\nziprs test archive.zip                   # verify integrity\n```\n\nAll commands support `-v` for verbose progress output. Use `ziprs help \u003ccommand\u003e` for detailed usage.\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|----------|--------|\n| `Ctrl+O` | Open archive |\n| `Ctrl+N` | Create new archive |\n| `Ctrl+E` | Extract all |\n| `Ctrl+H` | Extract here |\n| `Ctrl+T` | Test archive integrity |\n| `Ctrl+A` | Select all |\n| `Delete` | Delete selected entries |\n| `Enter` | Open file / Navigate into folder |\n| `Backspace` | Navigate up |\n| `Alt+Left/Right` | Navigate back/forward |\n| `Alt+Enter` | Properties |\n| `F5` | Refresh |\n\n## Architecture\n\n```\nZipRS/\n├── src-tauri/                # Rust backend (Tauri v2)\n│   └── src/\n│       ├── main.rs           # Entry point (CLI/GUI dispatch)\n│       ├── lib.rs            # Tauri builder \u0026 plugin setup\n│       ├── cli.rs            # CLI commands (clap)\n│       ├── commands.rs       # GUI IPC command handlers\n│       ├── progress.rs       # Progress trait (GUI events / CLI stderr)\n│       └── archive/\n│           ├── mod.rs        # ArchiveBackend trait \u0026 format detection\n│           ├── entry.rs      # ArchiveEntry data model\n│           ├── zip_backend.rs    # ZIP (Zstd level 19)\n│           └── tar_backend.rs    # TAR / GZ / BZ2 / ZST\n├── src/                      # Svelte 5 frontend\n│   ├── App.svelte            # Main app component\n│   ├── app.css               # Dark theme \u0026 CSS variables\n│   ├── main.ts               # Svelte mount\n│   └── lib/\n│       ├── store.svelte.ts   # Reactive state (Svelte 5 runes)\n│       ├── types.ts          # TypeScript interfaces\n│       ├── utils.ts          # Formatting \u0026 icon color helpers\n│       └── components/\n│           ├── WelcomeScreen.svelte\n│           ├── Toolbar.svelte\n│           ├── AddressBar.svelte\n│           ├── FileTable.svelte\n│           ├── StatusBar.svelte\n│           ├── ContextMenu.svelte\n│           ├── ProgressDialog.svelte\n│           └── Dialogs.svelte\n└── static/                   # Static assets\n```\n\n## Development\n\n```bash\nnpm install          # install dependencies\nnpm run dev          # development mode with hot reload\nnpm run build        # production build\nnpm run check        # type-check Svelte + Rust\nnpm run lint         # run Clippy\nnpm run clean        # remove build artifacts\n```\n\n## Tech Stack\n\n- **Backend** — Rust, Tauri v2, Tokio, clap, zip, tar, flate2, bzip2, zstd, colored\n- **Frontend** — Svelte 5, TailwindCSS 4, Lucide icons, TypeScript\n- **Build** — Vite 7, Tauri CLI\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanreader%2Fziprs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanreader%2Fziprs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanreader%2Fziprs/lists"}