{"id":13599184,"url":"https://github.com/rtkay123/mirro-rs","last_synced_at":"2025-08-13T12:06:15.290Z","repository":{"id":65329923,"uuid":"580838030","full_name":"rtkay123/mirro-rs","owner":"rtkay123","description":"An Arch Linux mirrorlist manager with a TUI","archived":false,"fork":false,"pushed_at":"2024-10-24T07:27:43.000Z","size":548,"stargazers_count":81,"open_issues_count":9,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-25T06:08:41.076Z","etag":null,"topics":["archlinux","package-manager"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rtkay123.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2022-12-21T15:20:55.000Z","updated_at":"2024-10-24T07:27:45.000Z","dependencies_parsed_at":"2023-07-14T09:22:30.113Z","dependency_job_id":"c2398bb4-1e24-4abc-a964-789bdc602ef8","html_url":"https://github.com/rtkay123/mirro-rs","commit_stats":null,"previous_names":["rtkay123/mirro-rs","kawaki-san/mirro-rs"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtkay123%2Fmirro-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtkay123%2Fmirro-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtkay123%2Fmirro-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtkay123%2Fmirro-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rtkay123","download_url":"https://codeload.github.com/rtkay123/mirro-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248217130,"owners_count":21066633,"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":["archlinux","package-manager"],"created_at":"2024-08-01T17:01:00.593Z","updated_at":"2025-04-10T12:31:40.805Z","avatar_url":"https://github.com/rtkay123.png","language":"Rust","funding_links":[],"categories":["💻 Apps"],"sub_categories":["👨‍💻 System Administration"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/rtkay123/mirro-rs/ci.yml?label=build\"\u003e\n  \u003cimg alt=\"Crates.io\" src=\"https://img.shields.io/crates/l/mirro-rs\"\u003e\n  \u003cimg alt=\"Crates.io\" src=\"https://img.shields.io/crates/v/mirro-rs\"\u003e\n  \u003cimg alt=\"msrv\" src=\"https://img.shields.io/badge/msrv-1.74.0-blue\"/\u003e\n\u003c/div\u003e\n\u003ch3 align=\"center\"\u003emirro-rs\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\nA mirrorlist manager for Arch Linux systems\n\u003cbr /\u003e\n\u003ca href=\"#usage\"\u003e\u003cstrong\u003eView usage examples »\u003c/strong\u003e\u003c/a\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003ca href=\"https://github.com/rtkay123/mirro-rs/issues\"\u003eReport Bug\u003c/a\u003e\n·\n\u003ca href=\"https://github.com/rtkay123/mirro-rs/issues\"\u003eRequest Feature\u003c/a\u003e\n\u003c/p\u003e\n\n![app](https://github.com/rtkay123/mirro-rs/assets/70331483/03acce81-6dd5-4fc8-b9a1-1709762d53b6)\n\n\u003cp align=\"center\"\u003emirro-rs provides a TUI to help you better visualise managing your mirrorlist.\u003c/p\u003e\n\n## Features\n\n- Sorting\n  - Completion - The number of mirror checks (as a percentage) that have successfully connected and disconnected from the given URL. If this is below 100%, the mirror may be unreliable.\n  - Score - It is currently calculated as (hours delay + average duration + standard deviation) / completion percentage. _Lower is better_.\n  - Standard deviation - The standard deviation of the connect and retrieval time. A high standard deviation can indicate an unstable or overloaded mirror.\n  - Delay - The mean value of last check − last sync for each check of this mirror URL. Due to the timing of mirror checks, any value under one hour should be viewed as ideal.\n  - Rate - sort by download speed\n- Filtering\n  - Age\n  - Country\n  - ipv4, ipv6, isos\n  - Protocol - `http`, `https`, `ftp` or `rsync`\n  - Completion Percentage\n\n## Getting Started\n\n### Installation\n\nInstall from the Arch Linux official repository:\n\n```sh\npacman -S mirro-rs\n```\n\n`mirro-rs` is also available in the AUR. If you're using `paru`:\n\n```sh\nparu -S mirro-rs-git\n```\n\n\u003e **Note**\n\u003e By default, this enables [configuration](#configuration) through `toml` files. You should edit the `PKGBUILD` if you prefer another configuration format (or to disable configuration files altogether).\n\n### Manual Compilation\n\n- cargo\n\n  You need to have `cargo` installed to build the application. The easiest way to set this up is installing `rustup`.\n\n  ```sh\n  pacman -S rustup\n  ```\n\n  Install a rust toolchain:\n\n  ```sh\n  rustup install stable\n  ```\n\n- git\n\n  Clone the repository:\n\n  ```sh\n  git clone https://github.com/rtkay123/mirro-rs\n  ```\n\n  You may then build the release target:\n\n```sh\ncargo build --release\n```\n\n### Usage\n\nPass the `-h` or `--help` flag to mirro-rs to view configuration parameters.\nTo preview `http` or `https` mirrors that were successfully synchronised in the last 24 hours and use `/home/user/mirrorlist` as an export location for the best (at max) 50:\n\n```sh\nmirro-rs --export 50 --protocols https --protocols http --age 24 --outfile \"/home/user/mirrorlist\"\n```\n\nTo do the same but restrict the sources to be from France and the UK:\n\n```sh\nmirro-rs --export 50 --protocols https --protocols http --age 24 --outfile \"/home/user/mirrorlist\" -c France -c \"United Kingdom\"\n```\n\n#### Configuration\n\nFor convenience, mirro-rs optionally supports reading a configuration `[default: $XDG_CONFIG_HOME/mirro-rs/mirro-rs.toml]` for general preferences. If none is available, `[default: $XDG_CONFIG_HOME/mirro-rs.toml]` will be used. If both are available, the former takes priority.\n\nFor `toml` support:\n\n```sh\ncargo build --release --features toml\n```\n\nFor `json` support:\n\n```sh\ncargo build --release --features json\n```\n\nLikewise, for `yaml` support:\n\n```sh\ncargo build --release --features yaml\n```\n\n\u003e **Note**\n\u003e If you enable all configuration file features, if the configuration directory contains more than one valid file format, the order of priority goes from `toml` -\u003e `json` -\u003e `yaml`.\n\nSample configuration files are provided in the [examples](examples) folder.\n\nA minimal `mirro-rs.toml` config file could look like:\n\n```toml\ncache-ttl = 24\ntimeout = 10\n```\n\n\u003e **Note**\n\u003e Changing the configuration file at runtime will overwrite the parameters that were set as CLI arguments\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall\nbe dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtkay123%2Fmirro-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frtkay123%2Fmirro-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtkay123%2Fmirro-rs/lists"}