/Linux-Auto-Customizer

bash scripts to automatize the installation and uninstallation of a batch of precoded features in a Linux environment.

Primary LanguageShellGNU General Public License v3.0GPL-3.0

Codacy Badge GitHub top language Lines of code GitHub commits since tagged version GitHub commit activity (branch) GitHub last commit Buy Me A Coffee GitHub Repo stars

bash scripts to automatize the installation and uninstallation of a batch of precoded features in a Linux environment.

Customizer

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! ๐Ÿค–

โŒจ๏ธ Description

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.

๐Ÿ› ๏ธ Configuration

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.

๐Ÿš€ Usage

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

โš™๏ธ Feature arguments

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

โš™๏ธ Wrapper arguments (for selecting multiple features)

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

โš™๏ธ Behavioural arguments

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.

Verbosity

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

๐Ÿ”ง Full installation / uninstallation

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.

alt text

๐Ÿ“Œ Capabilities

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 commands cp or ls.
  • 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.

๐Ÿ“– Motivation

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.

โœ’๏ธ Credits

๐Ÿ–‡๏ธ Contributing

  • Please read CONTRIBUTING.md for more details about our code of conduct, and the process for submitting pull requests.

๐Ÿ“‹ Licensing

  • 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