Hey fellow Manjaro users
I basically rewrote pacman-mirrors in Rust, but it’s not just rewrite for the sake of it.
shiny-mirrors is more user oriented compared to pacman-mirrors.
I tried to make it more user-friendly not sure if i succeeded, haven’t got much of input so far so I am not 100% how should I shape it further.
The English grammar may be very very bad so… if you want to you can improve that, feel free to create PR.
My mother language is not English.
I added bunch of useful features as IPv filtering, measure method(total - includes DNS query, establishing a connection, transfer - only download itself), option to choose file size to measure with and much more.
It should be able to handle more possible errors, it shouldn’t bail on you as much as pacman-mirrors, therefore you having more chance at getting mirrors, for example with pacman-mirrors it’s happening often it can’t find any mirrors, that shouldn’t happen almost at all with shiny-mirrors, if there is mirror in the selected or gotten country from IP endpoint then it finds in what continent the country is and tries to get mirrors from that continent.
I kinda went the way by default to find the most quality mirrors and not the most recently updated as pacman-mirrors but if you want to do that you can add after refresh
subcommand arg flag -u
.
It’s pacman-mirrors with bunch of additional features, better error handling, type safety and much more thanks to it being written in Rust Lang.
It has autocompletion for Zsh, Fish and of course Bash.
It comes with systemd service, timer which you can enable to refresh mirrors weekly in the background. (if using shiny-mirrors service I recommend disabling the pamac-mirrorlist.timer,service)
When running first time it will find your branch from current mirrorlist, if it can’t find the branch in the mirrorlist it will ask the person with an interactive text menu.
There is also manual page man shiny-mirrors
and much more…
If you encounter any issue or have an idea for improvement don’t worry to create a ticket on the repo.
In the last commits(Already in all branches) I reworked the CLI part because Clap as of 3.0 version there become available new type based construction of the “CLI” and I decided it would be nice to make a post about shiny-mirrors on the forum because it feels much more robust with the type based CLI construction.
Examples:
My favorite command: sudo shiny-mirrors refresh -f medium -M transfer
shiny-mirrors status
/ shiny-mirrors
– Show the status of mirrors you are using
sudo shiny-mirrors config --branch
– Open TUI to change the branch
sudo shiny-mirrors refresh
– Generate a mirror list for Manjaro Linux with the default behavior
shiny-mirrors config
/ shiny-mirrors config show
– Show the settings it was able to parse from the settings file
On every subcommand you can use --help
WARNING: Don’t use the shiny-mirrors from AUR, that version is made for distros that are using Arch mirrors, so it will retrieve Arch mirrors and if you try to system update with that mirrors in local mirrorlist it can potentially break your system.
Repository: Arisa Snowbell / Shiny Mirrors · GitLab