{"id":23803412,"url":"https://github.com/rushsteve1/trash-d","last_synced_at":"2026-02-28T22:02:39.375Z","repository":{"id":37698872,"uuid":"395746643","full_name":"rushsteve1/trash-d","owner":"rushsteve1","description":"A near drop-in replacement for rm that uses the trash bin. Written in D","archived":false,"fork":false,"pushed_at":"2025-12-24T20:07:51.000Z","size":128,"stargazers_count":135,"open_issues_count":3,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-12-26T10:29:12.385Z","etag":null,"topics":["cli","dlang","dub","freedesktop","linux","trash"],"latest_commit_sha":null,"homepage":"","language":"D","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/rushsteve1.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":"2021-08-13T17:59:10.000Z","updated_at":"2025-12-24T20:07:55.000Z","dependencies_parsed_at":"2023-01-31T02:30:26.907Z","dependency_job_id":"c6f375e7-499a-4139-ab01-c96a18896486","html_url":"https://github.com/rushsteve1/trash-d","commit_stats":{"total_commits":71,"total_committers":5,"mean_commits":14.2,"dds":"0.18309859154929575","last_synced_commit":"d88bb672612761c8e299e717857bf9c85a903e99"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/rushsteve1/trash-d","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushsteve1%2Ftrash-d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushsteve1%2Ftrash-d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushsteve1%2Ftrash-d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushsteve1%2Ftrash-d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rushsteve1","download_url":"https://codeload.github.com/rushsteve1/trash-d/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rushsteve1%2Ftrash-d/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29953212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cli","dlang","dub","freedesktop","linux","trash"],"created_at":"2025-01-01T22:31:20.880Z","updated_at":"2026-02-28T22:02:34.357Z","avatar_url":"https://github.com/rushsteve1.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"# trash-d\n\n[![License](https://img.shields.io/github/license/rushsteve1/trash-d)](https://github.com/rushsteve1/trash-d/blob/main/LICENSE)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/rushsteve1/trash-d/d.yml?branch=main)](https://github.com/rushsteve1/trash-d/actions)\n[![GitHub last commit (branch)](https://img.shields.io/github/last-commit/rushsteve1/trash-d/main)](https://github.com/rushsteve1/trash-d/commits/main)\n[![GitHub tag (latest SemVer pre-release)](https://img.shields.io/github/v/tag/rushsteve1/trash-d?label=version)](https://github.com/rushsteve1/trash-d/releases)\n\nA near drop-in replacement for `rm` that uses the\n[FreeDesktop trash bin](https://specifications.freedesktop.org/trash-spec/trashspec-latest.html).\nWritten in the [D programming language](https://dlang.org/)\nusing only D's Phobos standard library, and can be compiled with any recent D\ncompiler. This includes GCC, so `trash-d` should run on any *NIX platform that\nGCC supports.\n\nSaid like \"trashed\".\n\n**ONLY LINUX AND BSD ARE CURRENTLY SUPPORTED!**\n\nWindows won't work at all, ~~and MacOS probably won't either~~ (see note below).\nAny POSIX and FreeDesktop compliant system should work fine. For rarer *NIXs like\nSolaris or AIX, you're on your own though. PRs for expanding support are very welcome!\n\nYou can install a pre-built statically-linked version (`x86_64-linux`) from the\n[GitHub releases page](https://github.com/rushsteve1/trash-d/releases)\n\n**MacOS Note:** As of v18 MacOS is semi-supported. It builds and passes all\ntests on MacOS 13.1 (and likely will on most earlier versions too).\nHowever it still uses the FreeDesktop trash bin which is not \"native\" to MacOS.\nContributions to improve this would be appreciated!\n\nThere are also several\n[posts on the D forums](https://forum.dlang.org/search?q=\u0026exact=trash-d\u0026newthread=y)\nabout `trash-d`, if you want to give those a read.\n\n## Maintenance Status: Stable\n\ntrash-d is reasonable stable and feature complete, so updates might be slow.\nBut it is still maintained and bug reports are welcome!\n\n## Installing\n\nSimply drop the `trash` binary somewhere on your `$PATH` such as\n`$HOME/.local/bin`, or use the provided DEB and RPM packages\nfrom the [releases page](https://github.com/rushsteve1/trash-d/releases).\n\nYou can install on Mac or Linux using Homebrew with...\n```\nbrew install rushsteve1/pkgs/trash-d\n```\n\nAlternatively if there is a package for your OS you should probably use that.\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/trash-d.svg)](https://repology.org/project/trash-d/versions)\n\nOptionally set `alias rm=trash` in your shell config to replace usages of `rm`\nwith `trash-d`.\n\n## Usage\n\nUsing `trash-d` is the same as most other command line utilities, and\nintentionally very similar to `rm`.\n\nSee the [manual for more information](./MANUAL.scd).\n\n## Building\n\n`trash-d` can be built using any D compiler, but it uses Dub and DMD by default.\nYou may need to adapt the build scripts, but the code should be completely\nportable.\n\nYou can build it with Dub using `dub build` and run tests with `dub test`.\n\nCMake build files can be generated using `dub generate cmake`.\n\n### Using Just\n\n`trash-d` uses\n[Just](https://just.systems)\nfor it's build tooling. This is technically optional and is not required to\nactually build the project (only D compiler is), but make things easier.\nUse `just` to list all the available tasks.\n\n[scdoc](https://git.sr.ht/~sircmpwn/scdoc)\nis required to build the manual page file,\nand can easily be built with `just manpage`.\n\n### Packaging\n\nPackages are built using\n[nFPM](https://nfpm.goreleaser.com) and requires the\n[`jq` tool](https://jqlang.org).\n\n## Contributing\n\nContributions welcome! Please come help me clean up my D code, and otherwise\nmake `trash-d` more useful!\n\nIn particular help with packaging `trash-d` for various distros\nand expanding support for other operating systems would be greatly appreciated!\n\nHowever keep in mind that this is a simple tool with a simple job, so it's never\ngoing to do *that* much.\n\nPatches are also accepted via email if that's more your jam,\nsee [Contact below](#Contact) for more info.\n\n## Version Numbers\n\nVersions of `trash-d` are numbered sequentially with a bump every time I change\nsome functionality. Consider every change to be a breaking change, and be\nhappily surprised when it's not!\nI have a bad habit of bumping the number with one commit, only to immediately\nbump it again before tagging a release. So the releases might have some gaps.\nSorry about that...\n\nVersion names are changed whenever something major has changed. Don't treat\nthese like actual version indicators, they're just something fun.\n\n## License\n\n`trash-d` is licensed under the terms of the [MIT License](./LICENSE).\nYou are free to use it for any purpose under the terms of that license.\n\n## Similar Projects\n\n- https://github.com/andreafrancia/trash-cli\n- https://github.com/sindresorhus/trash\n- https://github.com/theimpossibleastronaut/rmw/\n- https://github.com/alphapapa/rubbish.py\n- https://github.com/kaelzhang/shell-safe-rm\n- https://github.com/nateshmbhat/rm-trash\n- https://github.com/PhrozenByte/rmtrash\n- https://github.com/icyphox/crap\n- https://github.com/ali-rantakari/trash\n\nUnlike many of these, `trash-d` does not require an interpreter like Bash or\nPython, so is more easily portable to new systems.\n\n## Contact\n\nYou can email me at \u003cmailto:rushsteve1@rushsteve1.us\u003e or open an issue here on\nGitHub if you need to reach me for whatever reason.\n\nWe do not have a mailing list or anything of that sort, but there is an\n[ATOM feed of releases](https://github.com/rushsteve1/trash-d/releases.atom).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushsteve1%2Ftrash-d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frushsteve1%2Ftrash-d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frushsteve1%2Ftrash-d/lists"}