I’ve made a little fun experiment this weekend by trying to make a unified package manager user interface. The idea was to design the simplest package manager UI possible. And I’ve come up with something that I really like.
I’ve named the project ‘x’ (I am tired in finding meaningful name derive from Greek god or anything…). Here’s how it works:
The program read a sequence of operations to apply. Each operation is prefixed by a token indicate what the operation kind (install, update or remove).
- + is used to install a program
- - is used to remove a program
- ^ is used to update a program
Install a program⌗
Let’s say we want to install vim:
$ x +vim
Remove a program⌗
Let’s say we want to remove neofetch:
$ x -neofetch
Update a program⌗
Let’s say we want to update gcc:
$ x ^gcc
What if we want to update all packages?
This is sufficient:
$ x ^
What if we want to perform multiple operations?
$ x +vim -neofetch ^gcc
Yes, this works!
The idea was looking great, so I’ve decided to implement it (first in C, then refactoring in Rust).
X is available on MacOS, Windows, and Linux, and simply wrap an underlying package manager (APT, Brew, Chocolatey).
The source code is available on Github.