{"id":22069402,"url":"https://github.com/abhinandh-s/roxide","last_synced_at":"2025-10-06T17:13:16.093Z","repository":{"id":262925916,"uuid":"888817667","full_name":"abhinandh-s/roxide","owner":"abhinandh-s","description":"A better rm command for your terminal","archived":false,"fork":false,"pushed_at":"2025-09-01T03:39:51.000Z","size":588,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-03T07:24:02.058Z","etag":null,"topics":["cli","filesystem","shell","tool","utility"],"latest_commit_sha":null,"homepage":"https://abhinandhs.in/articles/roxide","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/abhinandh-s.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2024-11-15T04:04:04.000Z","updated_at":"2025-09-01T03:39:48.000Z","dependencies_parsed_at":"2024-11-15T04:17:57.107Z","dependency_job_id":"dff1d6e2-e081-4ef7-bd0c-af1e350a08cf","html_url":"https://github.com/abhinandh-s/roxide","commit_stats":null,"previous_names":["abhi-xyz/roxide","abhinandh-s/roxide"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/abhinandh-s/roxide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhinandh-s%2Froxide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhinandh-s%2Froxide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhinandh-s%2Froxide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhinandh-s%2Froxide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhinandh-s","download_url":"https://codeload.github.com/abhinandh-s/roxide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhinandh-s%2Froxide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278572001,"owners_count":26008686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","filesystem","shell","tool","utility"],"created_at":"2024-11-30T20:09:09.707Z","updated_at":"2025-10-06T17:13:16.078Z","avatar_url":"https://github.com/abhinandh-s.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"header\" align=\"center\"\u003e\n  \u003cimg src=\"./assets/roxide_logo.webp\" width=\"300\"/\u003e\n\u003c/div\u003e\n\n# roxide\n\n\u003cdiv\u003e\n\n![Crates.io Total Downloads](https://img.shields.io/crates/d/roxide)\n\n\u003c/div\u003e\n\n\n`roxide` is a lightweight, high-performance alternative to the traditional `rm` command, designed with an emphasis on speed and data preservation. Unlike standard rm, which permanently deletes files, roxide safely moves them to a designated \"`trash`\" directory. This approach enables efficient and fast file removal without risking unintended data loss.\n\n## Getting started\n\n- `roxide file.txt`: files will moved to `trash dir`. ie, $HOME/.local/share/Trash/files/\n- `roxide revert` : restores perviously removed file/directory to its pervious path \n- `roxide -r | --recursive` : Remove directories and their contents recursively\n- `roxide -f | --force` : Remove without moving to trash directory\n- `roxide -d | --dir` : Removes empty directories\n- `roxide -v | --verbose` : will print the file name and its out path\n- `roxide some/dir/ -p .pdf`: will remove files matching the pattern from some/dir\n- `roxide some/dir/ -rp .pdf`: will recursively remove files matching the pattern from some/dir\n- `roxide some/dir/ -rp .pdf -l`: will list files, like dry run\n- `roxide some/* -i never`: will never prompt\n- `roxide some/* -i once`: Prompt once before removing more than three files or when removing recursivly\n- `roxide some/* -i always`: Prompt before every removal\n- `roxide some/* -p .pdf -i always`: Prompt before every removal\n- `sudo roxide`: will delete files/directories permanently\n\n\u003e [!WARNING]\n\u003e 2. It wont warn about write protected contents (wip)\n\u003e 3. It is not possible to bring back files removed using patterns with `revert` flag but you can still access it from Trash dir\n\nconfig file `$HOME`/.config/roxide/config.toml\n```toml\n[settings]\ncheck_sha256 = true # checks the hash of given file and the file in trash directory, permanently deletes file if hash matches.\n```\n\n## Installation\n\n### Build\n\n```bash\ngit clone https://github.com/abhi-xyz/roxide.git --depth=1 \ncd roxide\ncargo build --release\ncp target/release/roxide /usr/local/bin/\n```\n\n### cargo\n\n```bash\ncargo install roxide\n```\n\n### Nixos\n\nAdd `roxide` as a flake input: In your flake.nix file, add the roxide input pointing to its GitHub repository.\n```nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS/nixpkgs\";\n    roxide = {\n      url = \"github:abhi-xyz/roxide\";\n      inputs.nixpkgs.follows = \"nixpkgs\"; # Follows the nixpkgs input\n    };\n  };\n\n  outputs = { self, roxide, nixpkgs, ... }@inputs:\n  {\n    # Your NixOS configuration or other settings\n  };\n}\n```\n\nInclude roxide in NixOS configuration: In the outputs section, set up nixosConfigurations and add roxide as a module to enable it within your system configuration.\n```nix\n{\n  outputs = { self, roxide, nixpkgs, ... }@inputs:\n  {\n    nixosConfigurations.\"my-nixos-host\" = nixpkgs.lib.nixosSystem {\n      system = \"x86_64-linux\";\n      specialArgs = { inherit inputs; };\n      modules = [\n        ./hosts/configuration.nix # Main NixOS configuration file\n        roxide.nixosModules.roxide      # Enable the \"roxide\" module from the flake\n      ];\n    };\n  };\n}\n```\nActivate \"roxide\" in configuration.nix: Within configuration.nix, enable the \"roxide\" program:\n```nix\n{\n  # Other configurations...\n  \n  program.roxide.enable = true; # note: its program not programs\n}\n```\nApply Configuration: After updating your configuration, apply it with:\n```bash\nsudo nixos-rebuild switch --flake .\n```\n\n## known bugs\n- won't warn about git directory\n- can't use sudo \n- ~~golb pattern isn't working~~\n- ~~pattern -flag interfering with other flags~~\n- ~~cant remove a directory which is inside a directory~~\n\n## Planned Features\n- ~~roxide revert:  Restores files from the trash directory to their original location.~~\n- roxide --gc \u003cTIME_PERIOD\u003e:  Performs garbage collection on trashed files, automatically clearing files older than a specified period.\n- ~~roxide -f:  Forces deletion without moving files to the trash directory.~~\n- roxide -s:  Shreds files for secure deletion.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhinandh-s%2Froxide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhinandh-s%2Froxide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhinandh-s%2Froxide/lists"}