{"id":13610195,"url":"https://github.com/andresgongora/synth-shell","last_synced_at":"2026-01-12T00:58:45.048Z","repository":{"id":34701119,"uuid":"111103465","full_name":"andresgongora/synth-shell","owner":"andresgongora","description":"Boost your terminal, script by script","archived":false,"fork":false,"pushed_at":"2024-10-23T14:39:24.000Z","size":2562,"stargazers_count":998,"open_issues_count":20,"forks_count":243,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-10-23T17:41:54.118Z","etag":null,"topics":["eye-candy","hackerman","maintenance","productivity","system-administration","terminal","utility"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresgongora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-17T12:55:30.000Z","updated_at":"2024-10-23T14:39:45.000Z","dependencies_parsed_at":"2023-10-02T17:56:48.731Z","dependency_job_id":"b5e363af-f67e-4e64-8322-161ccdb32d4d","html_url":"https://github.com/andresgongora/synth-shell","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresgongora%2Fsynth-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresgongora%2Fsynth-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresgongora%2Fsynth-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresgongora%2Fsynth-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresgongora","download_url":"https://codeload.github.com/andresgongora/synth-shell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223549137,"owners_count":17163602,"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":["eye-candy","hackerman","maintenance","productivity","system-administration","terminal","utility"],"created_at":"2024-08-01T19:01:42.338Z","updated_at":"2026-01-12T00:58:45.000Z","avatar_url":"https://github.com/andresgongora.png","language":"Shell","funding_links":[],"categories":["Shell","terminal","Packages","Customization"],"sub_categories":["Prompts","Directory Navigation"],"readme":"![synth-shell](doc/synth-shell.jpg)\n\n**synth-shell** improves your terminal experience and productivity by adding color, extra info, and\nconvenience. It is not a single tool, but a collection of scripts and aliases (feel free to install\nonly those you want) all written in bash. See the [overview section](#overview) for a detailed list\nand options.\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                            Quick setup\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\nThis section covers the vary basics if you want to get started as fast as possible. See the\n[setup section](#setup) of this file for more details. Also, before you get started, and to get the\nbest possible experience **there are important considerations**:\n\n* **power-line fonts**: install package `powerline-fonts` on Arch or `fonts-powerline` on Ubuntu.\n\n* **terminal font**: configure your terminal emulator to use a nice font. We recommend\n[hack-ttf](https://sourcefoundry.org/hack/) which you can install for most distros under that name.\n\n* **Remember that support for Windows is not guaranteed**. But feel free to fix any bug you\nencounter and contribute to this project.\n\n* **Clone this repository recursively** since there are git submodules in it (you only have to copy\npaste the commands down below as they are).\n\nOnce everything is ready, it is as easy as copy-pasting the following commands to run the included\nsetup script.\n\n```\ngit clone --recursive https://github.com/andresgongora/synth-shell.git\ncd synth-shell\n./setup.sh\n```\n\nWhen prompted, select **install** (default) and **user** (default). Afterwards, you might need to\nopen a new terminal. Afterwards, you can\n[customize everything to your liking](#configurationcustomization).\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                             Overview\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\nThe following tools and scripts are included in the **synth-shell** package:\n\n- **System status report** (aka [synth-shell-greeter](https://github.com/andresgongora/synth-shell-greeter)):\n  - Shows for every new terminal session (local, SSH, ...).\n  - Monitor your servers, RaspberryPis, and workstations. All system info you need at a glance (e.g. external IP address, CPU temperature, etc.).\n  - Detect broken services or CPU hogs by printing extra diagnostic data, but only when needed.\n  - Print your own ASCII logo every time you log in or, if none specified, your distro's logo.\n\n- **Fancy bash prompt** (aka [synth-shell-prompt](https://github.com/andresgongora/synth-shell-prompt)):\n  - Configurable colors and aesthetics.\n  - Git statuses (requires pull/push, is dirty, etc.) if inside a directory that is part of a git repository.\n  - Better separation between user input and command outputs.\n\n- **better ls**: an `ls -la` on steroids alternative.\n\n- **alias**: add colors and a nicer behaviour to basic commands.\n  - `grep`.\n  - `pacman`.\n  - `tree`.\n  - `dmesg`.\n  - `free`.\n  - `sudo`: autocomplete commands.\n  - `history`: nicer format and no duplicate (consecutively the same) commands.\n\n![Example with status.sh and fancy-bash-prompt.sh](doc/screenshot.png)\n\nAll features are optional, and most can also be customized to your liking. Once installed, the\nscripts are called from within you `.bashrc` file and become part of the bash session. Everything is\nwritten in bash and should work out of the box on almost any Linux system (you might need to install\nsome dependencies, but that is all).\n\n### status.sh\n`status.sh` provides a summarized system report at a single glance every time you open up a new\nterminal. If it detects that any system parameter (e.g. CPU load, memory, etc.) is over a critical\nthreshold, it will provide a warning and additional information about the cause. Last but not least,\nit prints a user-configurable ASCII logo to impress your crush from the library with how awesome you\nare.\n\nFeel free to customize your status report through the many available options in\n`~/.config/synth-shell/status.config` (user-only install) or `/etc/synth-shell/status.config`\n(system-wide install),or by replacing their content with the examples files you can find under the\nsame directory.\n\n![status configuration options](doc/status_config_preview.png)\n\n### fancy-bash-prompt.sh\nAdds colors and triangular separators to your bash prompt, and if the current working directory is\npart of a git repository, also git statuses and branches. For best results, consider installing (and\ntelling your terminal to use) the `hack-ttf` font alongside the powerline-fonts (the later is\nrequired for the separators).\n\nAs for the git status info, `fancy-bash-prompt.sh` prints an additional, fourth separator with the\nname of the current branch and one of the following icons to indicate the state of the repository\n(can be changed in the config file):\n\n|          Local-Upstream          | Local branch has no changes | Local branch is dirty |\n|:--------------------------------:|:---------------------------:|:---------------------:|\n|            Up to date            |                             |           !           |\n|     Ahead (you have to push)     |              △              |           ▲           |\n|     Behind (you have to pull)    |              ▽              |           ▼           |\n| Diverged (you have to pull-push) |              ○              |           ●           |\n\n### better-ls.sh\nMakes `ls` print more text, but nicely formatted. When called, `ls` will now list all files (`-la`),\nsort folders first, add colors to output, and list hidden files last after a quick separator.\nHowever, if you chose to call `ls` with your  own parameters (e.g. `ls -l`) it will revert to the\ndefault behavior except for color and sorting options.\n\n### Alias\n\n- `grep` to `grep --color=auto`.\n- `pacman` to `pacman --color=auto`.\n- `tree` to `tree --dirsfirst -C`.\n- `dmesg` to `dmesg --color=auto --reltime --human --nopager --decode`.\n- `free` to `free -mht`.\n- `sudo` adds `complete -cf sudo` to auto-complete commands.\n- `history` various changes.\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                              Setup\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\n### Automatic setup\n\nThe included [setup script](setup.sh) will guide you step by step through the\nprocess and let you choose what features to install. During this setup, you can\nchoose to install synth-shell for your user only (recommended) or system-wide\n(superuser privileges required). To proceed,\n[open and play this link in a separate tab](https://www.youtube.com/embed/MpN91wHAr1k)\nand enter the following into your terminal:\n```\ngit clone --recursive https://github.com/andresgongora/synth-shell.git\nchmod +x synth-shell/setup.sh\ncd synth-shell\n./setup.sh\n```\n\nNote that for `fancy-bash-prompt.sh` you might also need\n[power-line fonts](https://github.com/powerline/fonts). You can install it\nas follows (the exact name of the package varies from distro to distro):\n\n* ArchLinux: `sudo pacman -S powerline-fonts`\n* Debian/Ubuntu: `sudo apt install fonts-powerline`\n\nFinally, open up a new terminal and test that everything works. Sometimes,\ndespite power-line fonts being properly installed, the triangle separator\nfor `fancy-bash-prompt.sh` (if installed) might still not show. In this case,\nmake sure that your `locale` is set to UTF-8 by editing `/etc/locale.conf` file\n(select your language but in UTF-8 format) and running `sudo locale-gen`.\n[More info on locale](https://wiki.archlinux.org/index.php/locale).\nAlternatively, try a different font in your terminal emulator. Some fonts\ndo not support special characters. We get the best results with\n[hack-ttf](https://sourcefoundry.org/hack/).\n\n\n\n### Configuration/customization\nYou can configure your scripts by modifying the corresponding configuration\nfiles. You can find them, along the example configuration files, in the\nfollowing folders depending on how you installed **synth-shell**:\n\n* Current-user only: `~/.config/synth-shell/`\n* System wide: `/etc/synth-shell/`\n\n\n\n### Uninstallation\n1. Edit `~/.bashrc` and remove the lines referring to synth-shell, usually\nat the bottom of the file. If you want to temporarily disable the script, you can\njust comment them by placing `#` in front.\n```\nnano ~/.bashrc\n```\n\n2. Remove the folder containing the script, usually in your home folder under\n`~/.config/synth-shell/`.\n```\nrm -r ~/.config/synth-shell/\n```\n\n\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                            Contribute\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\nThis project is only possible thanks to the effort and passion of many, \nincluding developers, testers, and of course, our beloved coffee machine.\nYou can find a detailed list of everyone involved in the development\nin [AUTHORS.md](AUTHORS.md). Thanks to all of you!\n\nIf you like this project and want to contribute, you are most welcome to do so.\n\n\n\n### Help us improve\n\n* [Report a bug](https://github.com/andresgongora/synth-shell/issues/new/choose): \n  if you notice that something isn't working properly, tell us. We'll try to fix it ASAP.\n* Suggest an idea you would like to see in the next release: send us\n  and email or open an [issue](https://github.com/andresgongora/synth-shell/issues)!\n* Become a developer: fork this repo and become an active developer!\n  Take a look at the [issues](https://github.com/andresgongora/synth-shell/issues)\n  for suggestions of where to start. Also, take a look at our\n  [coding style](/doc/coding_style.md).\n* Spread the word: telling your friends is the fastest way to get this code to\n  the people who might enjoy it!\n\n\n\n### Git branches\n\nThere are two branches in this repository:\n\n* **master**: this is the main branch, and thus contains fully functional\n  scripts. When you want to use the scripts as a _user_,\n  this is the branch you want to clone or download.\n* **develop**: this branch contains all the new features and most recent\n  contributions. It is always _stable_, in the sense that you can use it\n  without major inconveniences. \n  However, it's very prone to have undetected bugs and it might be subject to major\n  unannounced changes. If you want to contribute, this is the branch \n  you should pull-request to.\n\n\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                               About\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\n**synth-shell** started as a loose collection of (very simple) bash scripts I\nused for system maintenance. In the beginning, they were simple aids to make my\nlife easier, but as I progressively got the hang out of bash, I also wanted them\nto print some nice output to the terminal.\n\nThis repository was quite different at the beginning. The content of most\nscripts were loose snippets from third parties that were somehow smashed\ntogether. They worked, but not exactly the way I wanted. So, over time I have\nrewritten most scripts from scratch, removed fluff, and teamed up with\nsuper-friendly and engaged [contributors](AUTHORS.md). The result is what you\nsee today. I admit it, it's nothing fancy. But it was real fun working on the\nscripts.\n\nAnd the name? That's quite easy. I spent most of my coding frenzy\nlistening to [SynthWave](https://en.wikipedia.org/wiki/Synthwave) to feel like\n[Hackerman](https://www.youtube.com/watch?v=KEkrWRHCDQU).\n\n\n\n\u003cbr/\u003e\u003cbr/\u003e\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n##                                             License\n\u003c!------------------------------------------------+------------------------------------------------\u003e\n\nCopyright (c) 2014-2021, Andres Gongora - www.andresgongora.com\n\n* This software is released under a GPLv3 license.\n  Read [license-GPLv3.txt](LICENSE),\n  or if not present, \u003chttp://www.gnu.org/licenses/\u003e.\n* If you need a closed-source version of this software\n  for commercial purposes, please contact the [authors](AUTHORS.md).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresgongora%2Fsynth-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresgongora%2Fsynth-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresgongora%2Fsynth-shell/lists"}