Vish is a graphical editor for creating and managing Bash scripts using a node-based interface. It allows users to visually design their scripts by connecting various nodes that represent different Bash commands and constructs.
- Complete node-based experience for Bash scripting
- Intuitive drag-and-drop interface
- Easy visualization of script flow and logic
- Run generated Bash scripts directly from the editor
- Save and load visual scripts in JSON format
- Various user friendly features to enhance the scripting experience
- Themes support (Light/Dark/Purple)
- Multi-language support
- Settings to customize the editor behavior and appearance
- Partial Windows support (some features may be limited or unavailable on Windows)
Vish is made for educational purposes and to simplify the process of creating Bash scripts. It is not intended to replace traditional text-based scripting but rather to provide an alternative way to visualize and construct scripts.
It can help beginners understand the structure and flow of Bash scripts, making it easier to learn scripting concepts.
For more detailed information about Vish, including installation instructions, usage guides, and troubleshooting tips, please visit the Wiki.
You can install Vish directly from Flathub: https://flathub.org/apps/io.github.lluciocc.Vish
You can install Vish from a self hosted source using the following command:
flatpak install --from https://flatpak.lluciocc.fr/vish.flatpakrefYou can download the latest AppImage from the releases page. After downloading, make the AppImage executable and run it:
chmod +x Vish-*.AppImage
./Vish-*.AppImageContributions are welcome! If you would like to contribute to Vish, please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature-branch) - Make your changes and commit them (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature-branch) - Create a new Pull Request
- Optional: Consider adding a screenshot of your work in the PR description.
Note: Please ensure your code adheres to the existing coding style and includes appropriate tests.- This project is in active development. Features may change, and bugs may be present.
An other way to contribute Vish is to help translating it in other languages. If you want to contribute to the translation of Vish, please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b translation-branch) - Create a new translation file in
assets/model/{language}.jsonto add translations for the new language you want to add. You can use the existing translations as a reference. - Add the translations for the new language in the newly created file (Use a basic translator if you don't know the language, but please try to be as accurate as possible) and make sure to include translations for the language name (e.g. "lang_en", "lang_fr", etc.) so that it can be displayed in the settings.
- Add the new language to the language combo box in
ui/settings.py(You should update_build_language_sectionto add the new language to the combo box and also updaterefresh_ui_textsfunction to update the language name in the combo box when the language is changed withupdate_combo_itemfunction) - Commit your changes (
git commit -am 'Add translation for [Language]') - Push to the branch (
git push origin translation-branch) - Create a new Pull Request
To simplify discussions about existing and new nodes, Vish uses a standardized node signature notation.
The format is:
<Inputs> - <Outputs>
Each side describes the number and type of pins using the following identifiers:
| Identifier | Type |
|---|---|
| E | Execution / Control Flow |
| S | String |
| I | Integer |
| B | Boolean |
| P | Path |
| V | Variable |
| C | Condition |
| n | any number possible |
| m | minimum required number |
| x | maximum allowed number |
| a | Array |
1S-2S→ 1 String input, 2 String outputs1E-3E→ 1 Execution input, 3 Execution outputs2S1I-1S→ 2 String inputs, 1 Integer input, 1 String output1E-nE→ 1 Execution input, Any number of outputs possible.
This notation is used for documentation and design discussions only.
It reflects the internal type system and ensures consistency across the project.
You can find the list of contributors and acknowledgements in the CREDITS file.
This project is licensed under the MIT License. See the LICENSE file for details

