Git/CLI Commands; One GUI to rule them all!
Tags: git, cli, softwaredevelopment, powershell
Published: 2024-04-20 05:32:11

After working with CLI commands including Git, Linux, WSL and even Windows, I realized it was impossible to keep track of them all across notes tools. Not to mention that copy and paste was getting tiresome. Besides replacing parameters proved to be quite error-prone, and I was always worried that I could inadvertently execute the wrong command or replace the wrong parameter (and this happened on many occasions).

To many, command line interfaces were always a bit overwhelming and unapproachable.

I decided to try to solve this by implementing what everyone already loved in the Windows environment - the GUI. I wanted to create an app that used a configurable graphical interface with the ability to attach CLI commands to buttons and execute them directly in the Windows Terminal app.

I've been literally using it on a daily basis for everything I can think of, from checking my Git repo state when I first open the app to switching projects and running commands on remote machines using WSL. I use it for checking the state of my servers as well as switching Docker containers on the fly for a given project. I start and stop my containerized databases depending on the project I'm working on. It helps that a single click on the tray icon opens my app and the Windows Terminal side by side and displays the results of project commands that already executed in the configured terminal tab.

Since the possibilities are endless for what can be automated using this approach, I thought I'd post about it here just to let you guys know that it's available. I don't want to sound spammy, but it's been super useful, so I just wanted to get this out there.

Here is a list of some of the things you can do with [CommandGit](https://commandgit.com). It took me a long time to get it to this point on my own, so that's why I didn't open source it.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pj4fgym8timj6qw69b1u.png)

- Distributing command output via popular platforms like Slack, Microsoft Teams, or email.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/16y7cvrcoacytjaydr3k.png)

- 
Ability to insert user input at any point of a command via configurable user input prompts, with any number of custom screens per command. Super useful if you have a Git command where you need to pass in a Jira ticket#. You can configure a button with a Git command and add a user input capture to prompt for the ticket number when you execute the command.

- 
A date picker capture screen for embedding dates into commands before they execute.

- 
Run multiple commands from a single button. This means that you can, for example, run git fetch and git status with one click. This applies to any CLI command, and also any number of commands can be grouped.

- 
Configure scripts to run with a button click. Bash, Python, Go, etc...

- 
AI-powered (ChatGPT) features for explaining commands, listing similar commands, creating commands from descriptions, and correcting commit messages.

- 
Grouping commands into projects and categories within projects.

- 
Capture project notes and command descriptions. Command titles are also saved next to commands for easy recognition.

- 
Copy and move commands across projects and categories. Sort commands alphabetically or as added to the category.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jan56x0lr6dfwkk8moff.png)

- 
Link commands across projects and categories to prevent duplication of commands. A report of all the linked commands across all projects and categories is also available.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7zycabu2n5oudrpbvcqj.png)

- 
Since CommandGit works by inserting commands into the Windows Terminal, you can use any terminal screen to run commands in. You can, for example, use a button that will open a Linux tab and send commands to it. The next button can send commands to PowerShell by auto-opening that tab and running a Windows command. You can also put this in a single button and open tabs as the commands are executed. I also added a built-in sleep command that does not get interpreted by the terminal but only within CommandGit. It's ideal for waiting between commands. Let's say, wait 300 milliseconds to open another tab and start sending commands to it.

- 
Warning before executing sensitive commands. This saved me many times. Click a button and receive a message box warning, asking if you really want to execute that command. This is a configurable property for each command. The main screen has indicators for different command properties, so you can see at a glance which commands have warning prompts set or which have a user input box configured.

- 
Execute an external application before and after command execution.

- 
Menu options for quickly creating Git repositories.

- 
Information screens showing all linked commands across projects and categories.

- 
View reports of all scheduled commands. Easily see what commands run on a schedule across all your projects and categories. Super useful to find that pesky command that still runs after you thought you disabled it and forgot on which command it was set.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/snrbg3tfkwhzdp3zr3l8.png)

- 
Ability to set a default project to navigate to when the application starts or navigate to the last opened project on startup.

- 
Ability to configure multiple commands on a project level that execute when you navigate to that project in CommandGit. This is great when you want to see the state of the project's repo just by navigating to it.

- 
Favorite category feature for easy access to frequently used commands.

- 
Solo mode for clean navigation through categories. Always collapsed or expanded.

- 
I wrote and tested over 400 CLI commands that are now built-in and ready for use with any project. You can copy, move or modify them to your heart's content.

- 
Supported distribution of command output based on configured criteria, such as search terms, regular expressions, and case sensitivity, with options for distribution via Teams, Slack, email, or a pop-up dialog box on the screen.

- 
Ability for the application to start with Windows startup and be ready for commands in seconds. Access to the main window from the system tray.

- 
Option to save the screen position of the terminal window and the application main window for the next startup.

- 
Tray icon notifications when commands execute on schedule in the background.

- 
Spell checker for all user input boxes.

- 
Save the state of all commands, projects, and category settings for the last 1000 application startups for peace of mind. This serves as a quick backup of the last 1000 changes.

- 
Easy access to most application features through an intuitive user interface.

- 
Intuitive search for commands across projects and categories.

- 
Optional background command desktop popup to view command results.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n09cwc1io8k2kw8fexsr.png)



I hope you find this useful.

[CommandGit.com](https://commandgit.com)

Thanks