{"id":13559560,"url":"https://github.com/SuperCuber/dotter","last_synced_at":"2025-04-03T15:30:36.757Z","repository":{"id":40533350,"uuid":"90471343","full_name":"SuperCuber/dotter","owner":"SuperCuber","description":"A dotfile manager and templater written in rust 🦀","archived":false,"fork":false,"pushed_at":"2024-07-13T21:11:17.000Z","size":538,"stargazers_count":832,"open_issues_count":23,"forks_count":44,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-07-31T09:32:09.287Z","etag":null,"topics":["aur","aur-packages","configuration","dotfile","dotfile-management","dotfile-manager","dotter","linux","multiple-machines","rust","stow","windows"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SuperCuber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2017-05-06T15:10:54.000Z","updated_at":"2024-08-01T13:15:28.107Z","dependencies_parsed_at":"2023-02-18T12:46:07.849Z","dependency_job_id":"1887c1de-9ec8-4416-9d07-24184346ec38","html_url":"https://github.com/SuperCuber/dotter","commit_stats":{"total_commits":495,"total_committers":23,"mean_commits":21.52173913043478,"dds":0.202020202020202,"last_synced_commit":"e262fa95c70b610fe6ee36bbfba78670ad6e8a9d"},"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperCuber%2Fdotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperCuber%2Fdotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperCuber%2Fdotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperCuber%2Fdotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SuperCuber","download_url":"https://codeload.github.com/SuperCuber/dotter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247027671,"owners_count":20871571,"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","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":["aur","aur-packages","configuration","dotfile","dotfile-management","dotfile-manager","dotter","linux","multiple-machines","rust","stow","windows"],"created_at":"2024-08-01T13:00:29.178Z","updated_at":"2025-04-03T15:30:35.992Z","avatar_url":"https://github.com/SuperCuber.png","language":"Rust","readme":"# What is Dotter?\nDotter is a dotfile manager and templater.\n\nDotfiles are *configuration* files that usually live in the home directory and start with a dot.\nOften times, it is desirable to have a backup of all the configurations on your system, which is why a lot of users have their dotfiles saved in a git repository, then symlinking them to their target locations using `ln -s`.\n\nHowever, there are several issues with that barebones approach:\n- Hard to keep track of what comes from where once you have more than a handful of dotfiles\n- Tedious to setup on a new machine - you need to manually create every single link\n- No real way to handle differences between machines - say you want the battery meter on your bar to not appear on your desktop machine\n\nDotter aims to solve all those problems by providing a flexible configuration and automatic templating or symlinking to the target locations.\n\n# Installation\n## Mac (Homebrew)\nDotter is available on homebrew using `brew install dotter`\n\n## Arch Linux\nThe following AUR packages are available:\n- [dotter-rs-bin](https://aur.archlinux.org/packages/dotter-rs-bin) for a precompiled version of the latest release\n- [dotter-rs](https://aur.archlinux.org/packages/dotter-rs) for the latest release's source that is built on your machine\n- [dotter-rs-git](https://aur.archlinux.org/packages/dotter-rs-git) for the latest commit on master that is built on your machine\n\nAll of those are maintained by [orhun](https://github.com/orhun/) - huge thanks to him!\n\n## Windows\nDotter is available on [Scoop](https://scoop.sh). Run `scoop install dotter` to install the latest release.\n\n## Others\n\nDownload the binary for your platform from the latest release and then put it in your `$PATH` or in your dotfile repository (then you'd run it with `./dotter`).\nAlternatively, Dotter is on [crates.io](https://crates.io/crates/dotter), so if you have Rustup installed, run `cargo install dotter`.\n\n# Wiki\nCheck out [the wiki](https://github.com/SuperCuber/dotter/wiki) for more information.\nAmong other things, it explains how to setup and configure Dotter, as well as giving insight on how the templating and deployment works.\n\n# Usage\nNow that you've configured all the global and local file sections, you can simply run `dotter` from within your repository.\\\nAll the files will be deployed to their target locations.\n\nCheck out `dotter -h` for the command-line flags that Dotter supports:\n\n```\nA dotfile manager and templater written in rust\n\nUsage: dotter [OPTIONS] [COMMAND]\n\nCommands:\n  deploy           Deploy the files to their respective targets. This is the default subcommand\n  undeploy         Delete all deployed files from their target locations. Note that this operates on all files that are currently in cache\n  init             Initialize global.toml with a single package containing all the files in the current directory pointing to a dummy value and a local.toml that selects that package\n  watch            Run continuously, watching the repository for changes and deploying as soon as they happen. Can be ran with `--dry-run`\n  gen-completions  Generate shell completions\n  help             Print this message or the help of the given subcommand(s)\n\nOptions:\n  -g, --global-config \u003cGLOBAL_CONFIG\u003e\n          Location of the global configuration [default: .dotter/global.toml]\n  -l, --local-config \u003cLOCAL_CONFIG\u003e\n          Location of the local configuration [default: .dotter/local.toml]\n      --cache-file \u003cCACHE_FILE\u003e\n          Location of cache file [default: .dotter/cache.toml]\n      --cache-directory \u003cCACHE_DIRECTORY\u003e\n          Directory to cache into [default: .dotter/cache]\n      --pre-deploy \u003cPRE_DEPLOY\u003e\n          Location of optional pre-deploy hook [default: .dotter/pre_deploy.sh]\n      --post-deploy \u003cPOST_DEPLOY\u003e\n          Location of optional post-deploy hook [default: .dotter/post_deploy.sh]\n      --pre-undeploy \u003cPRE_UNDEPLOY\u003e\n          Location of optional pre-undeploy hook [default: .dotter/pre_undeploy.sh]\n      --post-undeploy \u003cPOST_UNDEPLOY\u003e\n          Location of optional post-undeploy hook [default: .dotter/post_undeploy.sh]\n  -d, --dry-run\n          Dry run - don't do anything, only print information. Implies -v at least once\n  -v, --verbose...\n          Verbosity level - specify up to 3 times to get more detailed output. Specifying at least once prints the differences between what was before and after Dotter's run\n  -q, --quiet\n          Quiet - only print errors\n  -f, --force\n          Force - instead of skipping, overwrite target files if their content is unexpected. Overrides --dry-run\n  -y, --noconfirm\n          Assume \"yes\" instead of prompting when removing empty directories\n  -p, --patch\n          Take standard input as an additional files/variables patch, added after evaluating `local.toml`. Assumes --noconfirm flag because all of stdin is taken as the patch\n      --diff-context-lines \u003cDIFF_CONTEXT_LINES\u003e\n          Amount of lines that are printed before and after a diff hunk [default: 3]\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n```\n\n# Contributing\nContributions to Dotter are welcome, whether in the form of a pull request or an issue (for bug repots, feature requests, or other helpful comments)\n\n# Support\nLike what I do and want to encourage me to continue?\\\nYou can donate a small amount via [Paypal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=329HKDXK9UB84).\\\nDonations are not expected but greatly appreciated.\n","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=329HKDXK9UB84"],"categories":["Rust","Dev-Utilities"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSuperCuber%2Fdotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSuperCuber%2Fdotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSuperCuber%2Fdotter/lists"}