bash
scripts to automatize the installation and uninstallation of a batch of precoded features in a Linux environment.
Customizer is a software to automatize installations and customizations in a Linux environment. It is purely written in
bash
and already contains more than 200 pre-coded automatic features ready to be
installed. Enjoy! ๐ค
These bash
scripts can automate the installation and uninstallation of a batch of preset
features in most Linux environments. These features include GNU software, programming languages,
IDEs, text editors, media players, games, Internet applications, file templates, wallpapers,
environment aliases, environment functions and terminal personalization.
All installations are cleaner, faster and fancier than a manual installation, and of course all installations are completely unattended. You just need to specify via arguments the features that you want, and they will be installed without requiring any more prompt.
Also, many behavioural arguments are available, allowing extra flexibility on the installation of each feature such as verbosity, error tolerance, skipping already installed features, autorun programs at system start, add automatically a program to dashboard or associate keybindings for a command.
To install this software you must begin cloning this repository to you computer. You can either
download a .zip
file containing the repository from GitHub clicking here.
Decompress the file and open a terminal in that directory.
You can also clone the repository using directly terminal. To do the last option, you must have installed
git
. If you don't have it, you can install it if you have sudo
access by opening a terminal and typing the
following:
sudo apt install git
Then, navigate to the directory where you want to clone the repository using cd
. Anywhere in your user folder will be fine.
Then clone the repository with git clone
:
git clone https://github.com/AleixMT/Linux-Auto-Customizer
Navigate to the interior of the repository with cd:
cd Linux-Auto-Customizer
Now that the current directory is the repository we can call the main scripts directly without specifying an absolute path. This will be the expected situation in the following explanations.
You can also install the customizer by using:
sudo bash src/core/install.sh customizer
This will give you the global command customizer-install
that you can use anywhere in your system to access the
features in install.sh
script. This command has autocompletion features.
The commands customizer-install
and customizer-uninstall
have the same identical arguments, but behave in
the opposite way:
customizer-install
will install the features selected by the arguments while customizer-uninstall
will
uninstall them, using the same identical arguments. They also share their vast majority of behavioural arguments,
used to modify the way in which one or more features are installed.
See FEATURES.md
to see a full list of all
the already pre-coded features in customizer ready to install / uninstall. You can also issue the command to show the
full help, which contains a table with all the available arguments and its corresponding features.
customizer-install -H
You can install or uninstall features easily by passing the feature keynames by argument:
customizer-install discord
customizer-uninstall discord
You can install or uninstall multiple features at once:
customizer-install pycharm intellij wallpapers
customizer-uninstall pycharm intellij wallpapers
You will need to use sudo
to install or uninstall some features, since elevated privileges are required:
sudo customizer-install skype steam parallel lolcat dia
sudo customizer-uninstall skype steam parallel lolcat dia
Features that do not require elevated privileges can also be installed or uninstalled with elevated privileges:
customizer-install pycharmpro intellijultimate
customizer-uninstall pycharmpro intellijultimate
There are some special arguments called wrappers that select the installation / uninstallation of a set of features:
customizer-install gitbashfunctions bashfunctions
customizer-uninstall gitbashfunctions bashfunctions
This is equivalent to:
customizer-install pull push dummycommit commit checkout clone branch status add hard fetch a b c e f h j k L l o q s u x
customizer-uninstall pull push dummycommit commit checkout clone branch status add hard fetch a b c e f h j k L l o q s u x
You can use different arguments to change the way in which each installation behaves, including verbosity, error tolerance, checking if the installation is already present.
Installs Telegram showing all the output from the internal commands:
customizer-install-v telegram
Installs firefox and gpaint without showing any output.
sudo customizer-install -q firefox gpaint
Each behaviour is maintained until the end of the execution or until it is changed by another behavioural argument. In this case the program cheese and the program dia are installed without showing any output, but spotify is on full verbose mode.
sudo customizer-install -q cheese dia -v spotify
To install ALL the features available for the root user in the script you must type in a terminal:
sudo customizer-install --root
To install ALL the features available for the normal user in the script you must type in a terminal:
bash customizer-install --user
๐ Summarizing: to install ALL the features available in the script you must type in a terminal:
sudo customizer-install --root && bash install.sh --user
This command will install all root features first while asking for elevated privileges, and then it will install all the local user features.
To uninstall ALL the features available for the root user in the script you must type in a terminal:
sudo customizer-uninstall --root
To uninstall ALL the features available for the normal user in the script you must type in a terminal:
customizer-uninstall --user
๐ Summarizing: to uninstall ALL the features available in the script you must type in a terminal:
sudo customizer-uninstall --root && customizer-uninstall --user
This command will uninstall all root features first while asking for elevated privileges, and then it will uninstall all the local user features.
All features available follow a common behaviour:
- The permissions needed for the features to be installed are the minimum. As such, we have many installation
available even if you do not have
root
permissions on your machine. - All installations are completely unattended and do not require any extra prompt.
- Software and command-line utilities are intended to appear as a valid binary in your
PATH
, so you can directly call the program as you would do with the commandscp
orls
. - Software with GUI creates its own launcher in the desktop and in the dashboard.
- Most of the software with GUI contains also a decorator
bash
function to call directly the program in the terminal without seeing any annoying output. - Software that reads or recognizes files are configured to be the default application for their recognized file types.
- The installation of a feature will be skipped if the current privileges does not match the needed privileges for that feature.
- The code is written following the Google Bash Style Guide to standardize the code.
If you are a developer that uses a lot of software (most of us do) this tool can save you a lot of time: Usually we need to set up new programming or production environments in Linux losing a lot of time installing manually all of our programs and personal customizations. With this software you just need to write your scripts once, and they will be ready to install in any new machine forever.
There are many good reasons for which you would prefer to execute a software that installs the
exact features that you want automatically, instead of saving environment scripts such as .bashrc
or .bash_aliases
where you have all your customizations:
- Optimizing your time because you can install them in a batch without needing any posterior input.
- Programs and functions ready to use by resolving automatically dependencies.
- Be able to select which features you desire, instead of having them all at once.
- Flexibility, since not all the features that we could desire can be activated using an environment script, or is actually not desirable to execute some type of code in those scripts because our environment gets cluttered.
- Easy and clean uninstallation to avoid cluttering and disk space consumption.
- Author & Maintainer: Aleix Marinรฉ - AleixMT aleix.marine@estudiants.urv.cat
- Tester & Feature requester: Axel Fernandez - Axlfc axelfernandezcurros@gmail.com
- Please read CONTRIBUTING.md for more details about our code of conduct, and the process for submitting pull requests.
- You can use this software for free.
- You can not sell or redistribute this software.
- You may fork this software, but you have to maintain the same therms stated in this license and give credit to the original author(s).
- We do not take any responsibility of the usage of this software or any harm that could be derived from it.
- Have a look at the file LICENSE.md for more details.
- ๐ขTell others about this project
- Invite a ๐บ beer or a โ coffee
(more than one might be accepted)
to the members of this team. - We cannot thank you enough for your attention, enjoy your customized Linux system and don't doubt contacting our team with any trouble using this software ๐ค.
Best regards, and happy coding :)
- The Linux-Auto-Customizer Team