Documentation

Administrator Permissions

To gain administrator permission in any terminal session with TerminalNexus, you can adjust the shortcut's properties to run as an administrator. This will enable you to execute commands that require elevated privileges, and also prevent Windows from prompting you for additional permissions when launching TerminalNexus terminals.

Alternatively, you can fix the security prompts when opening Windows Terminal tabs when not an administrator, is to set TerminalNexus to launch automatically at Windows startup and access it from the system tray. This is the preferred usage of TerminalNexus as it allows for quick access to the terminal and lets you minimize it when not in use.
You can find this setting in the main tab of the Options screen.

Another way for a one time Admin run is to simply right click the shortcut and choose "Run as Administrator"

image-20220605212317316

Recommended Screen Layout

To maximize the usage and convenience of TerminalNexus, you can position and resize the main application window side-by-side with the Windows Terminal window.

To save the current window position, go to the View menu and select "Save Window Position". Both screen sizes and layouts will be remembered the next time you open TerminalNexus.

TerminalNexus was designed to run out of the system tray. This is the preferred usage of TerminalNexus as it will be very quick to render on the screen and to hide when minimized.

image-20220523234254276

Application Option Dialog

Backups

TerminalNexus has a single setting file where all project configuration is saved. To give you peace of mind about all your hand-crafted commands, the last 1000 versions of this file are saved. A new backup zip file is created on each application startup.

Additional files that are saved in the same zip file are the command notes and the project notes.

The backup copies are saved to the following Windows file system location:

"AppData\Roaming\TerminalNexus\Backup"

Restore

To restore your configuration from a backup, copy the contents of the zip file "settings.xml" and replace the files in the "AppData\Roaming\TerminalNexus\Backup" folders. Make sure the application is fully shut down before performing this operation.

Projects

Composition of a Project

Create, Edit or Delete a Project

Projects represent/point to a Git repository or a directory.

When deleting a project, the actual project directory the project points to and files within it are never deleted.

Projects are there to isolate a body of work and to provide the ability to create categories and to custom commands that can be executed on a repository or a directory.

Projects allow you to quickly navigate to a local code repository or a directory, and to execute commands on that directory.

Projects can be configured with a default set of commands that will be executed when navigating to that project.

Files or folders can be deleted using your configured commands. Pay close attention to the commands you are executing to avoid inadvertent mistakes or disasters. Please take the extra step to take advantage of the built-in prompts before executing more sensitive commands assigned to buttons. Each button configuration has a checkbox on the button configuration screen. This checkbox can prevent you from executing commands by accidentally clicking on a button.

There are two ways to invoke the project management screen:

  1. The "Manage" menu item
  2. The pencil icon next to the projects dropdown on the main screen
image-20210719232450823

Create or Edit a Project

Step 1

Create a new project or edit an existing project.

image-20220424210249834

Step 2

  1. Enter the project name — an alphanumeric field of 60 characters at the most.

  2. Enter the project path — the path where your directory/files reside — this can be a local Git repository or a plain non-Git directory.

  3. Enter any commands that you would like to be executed when you navigate to this project from the projects dropdown selection menu on the application main screen.

    Remember to use the command language that corresponds to your terminal shell selection. This is especially true when executing chained Git commands. All Git command samples in the Global Commands tab were written to work with Bash. You can use any terminal, but make sure the command formatting is correct for the Shell you are using.

    Git repositories get an extra safety feature which allows for validating command execution on the intended directory in case you navigate away from the repository main folder.

  4. If you would like to load this project when the application starts, please select the "Set as default project" checkbox.

    This setting can be overwritten within the setting in the Options dialog that can be configured to load the last used project on the next application startup.

  5. Click save and then you will be taken to the previous screen.

Step 3

Position your project within the project list that will be displayed in the projects dropdown menu on the main screen.

image-20220424210459344

Step 4

Click save to exit this dialog. Your new project will now be selectable from the projects dropdown menu on the main screen.

image-20220424210855627

Project Notes

You can add a more descriptive note to any project. This note can be created in the Rich Text Format (RTF).

It is possible to copy and paste RTF text into the project notes.

Each note is a file on the disk and you can basically create notes of any size.

Categories

Since the number of commands that TerminalNexus can process is so substantial, it became clear in the beginning that simply creating buttons for commands was not enough. There was a need to further associate and organize commands. A flat category list within each project was chosen over more convoluted nested tree style configurations. The issue with nested trees is that they hide data so they don't seem to be a good fit to quickly navigate and skim through commands. Too many nested levels of commands hidden behind more closed tree nodes do not offer the script learning experience that browsing through a flat list provides.

Composition of a Category

Project Categories Tab

Global Categories Tab

Favorite Category

A favorite category is a special type of category that can be quickly navigated to and that can execute your favorite commands.

A favorite category cannot be renamed, moved, deleted, or repositioned. It is always available and it is always on top of the category list.

A toolbar button is available for quick access to the favorite category.

The contents of the favorite category are fully editable and can be personalized as needed.

Create a Category

There are two ways to create a category

  1. Select the Manage/Manage Categories menu item.
  2. Click the manage button on any category .
image-20220424211504617 image-20210819211452169

Delete a Category

There is only one way to delete an existing category.

Click on the minus sign icon on the category you are attempting to delete. This icon is located on the main application screen.

This action will prompt you to confirm if you are sure you want to delete the category. Once deleted, there is a way to reverse this action, but only if it is a recent delete. Please refer to the backup section in this help guide.

image-20220424211618972

Rename a Category

There is only one way to rename a category.

Click on the pencil box icon within the category you would like to rename. This icon is located on the main application screen.

Import and Export a Category

The ability to import or to export a category is available from the File Menu and from the Manage Category screen.

Categories with their associated long description notes and settings can be imported and exported.

This option allows you to share your script commands with other team members.

This feature can be used as a quick versioned backup of category data as all exports are named with the category name followed by a sequential number.

Importing a duplicate category will show a category re-name dialog where you can specify a new name for the category being imported.

IMPORTANT!

Any link references to the commands in an exported category when the category is imported back will be broken as the commands will be assigned new unique identifiers. The link reference out of the category will work as expected. Links referencing any command in this category will not be resolved and you will need to adjust them manually.

What is not Exported to Protect your Data Safety and Privacy

image-20210819212005484

Sort Categories

Categories can be sorted within the current tab according to their level of importance.

  1. Click on the tree diagram icon which is the category management button to bring up the category management screen.
  2. Select the desired category.
  3. Use the up or down buttons to move the selected category within the list.
  4. Save your changes.
image-20210721234155190 image-20210721234907672

Color Code Categories

The currently selected category color is displayed as a vertical bar on the left side of the category management screen.

You can change the category color to better reflect the importance of the category commands.

All the command buttons within a category will inherit the category color.

The category color is also used across other screens when working with categories or command buttons. This will remind you of the importance of the commands you are working with. This feature is meant to function as an added layer of security making sure you are aware of the actions being performed by executing commands.

  1. Click on the category management button to bring up the category management screen.
  2. Set a new category color or change an existing category color by either clicking on the color button or the vertical color strip.
  3. Save your changes.
image-20210722001215161

Category View

By Category

The category commands can be sorted and presented in two ways:

image-20210819221531646

By Alphabetical Order

image-20210819222218029

Commands

Composition of a Command

Commands belong to categories and categories belong to projects.

Commands without UI placeholders can be scheduled.

Commands with Windows Terminal hotkeys cannot be scheduled.

It is not advisable, but it is possible to use non-unique command names.

An unlimited number of commands can be created.

Commands can be displayed in a category or in alphabetical order.

It is possible to manually sort/position commands within a category.

Commands may include custom TerminalNexus placeholders that resolve at the command execution time.

User input and the date picker will prompt the user for an entry. These commands cannot be scheduled.

It is possible to run Windows scripts or executable programs before and/or after the command execution.

Global Command Tab

This is a set of categories and commands that have already been pre-created for you. Global tab categories are customizable and always available across all projects. They can act as a starting point. Commands can be copied from the global categories to the projects where they are most often used.

In order to use global commands, you must first create a project. Projects are configurable to assist with command executions and add to the overall command execution experience.

Create a Command

To create a new command, click the plus sign button in any category group and refer to the topics in this section for naming and configuring the command properties.

Follow your best practices for naming commands. There is no limitation on command naming format or duplicate entry validation.

image-20211005210831377 image-20220424212043258

Naming Commands

Rename a Command

Copy / Move Commands

image-20210921135350668 image-20210921142232017

Delete Commands

Search for commands across categories and projects.

image-20210921185308517

Git Commands vs Other Commands

Git Commands:

Non-Git Commands:

TerminalNexus has a special command helper:

_sleep_#milliseconds

It can be used to pause between command executions outside of the context of the terminal.

For example:

Open new Bash tab
Wait 3oo milliseconds for the tab to fully load
Load Ubuntu
wait 5 seconds to let it finish loading
set up a variable and print it back to the screen.

ctrl+shift+4
_sleep_300
wsl --distribution Ubuntu-20.04
_sleep_5000
local_ip=127.0.0.1
echo $local_ip

Scheduling Commands

The schedules are executed behind the scenes using the Git executable.

Normally the required git.exe is located at:

"C:\Program Files\Git\bin\git.exe"

It may vary depending on your configuration.

image-paths.png

Requirements for Scheduling Commands

Types of Schedules

One-time Schedules

image-20210921223647467

Recurring Schedules

The start and the end time must be within the same day.
For example:
Start time: 9:00AM
End time: 11:59PM
The time goes forward 12:01AM to 11:59PM. If you need the schedule to cross over to the next day, please create another command schedule.

Example:

​ 5:00PM to 9:00AM will not work as it will cross over to the next day.

  1. Daily

    1. Select the day of the week for the schedule to run.
    2. Either select to run it once at a certain time or use the "Occurs every" option. This will run the schedule every number of hours, minutes or seconds.
    3. Enter the start and end time between which the schedule is valid.
      For example, you can set the schedule to run every 2 hours, but only between 9AM and 5PM.
  2. Weekly

    1. Select the day of the week for the schedule to run.
    2. Either select to run it once at a certain time or use the "Occurs every" option. This will run the schedule every number of hours, minutes or seconds.
    3. Enter the start and end time between which the schedule is valid.
      For example, you can set the schedule to run every 2 hours, but only between 9AM and 5PM.
  3. Monthly

    1. Select the day of the month for the schedule to run.
    2. Either select to run it once at a certain time or use the "Occurs every" option. This will run the schedule every number of hours, minutes or seconds.
    3. Enter the start and end time between which the schedule is valid.
      For example, you can set the schedule to run every 2 hours, but only between 9AM and 5PM.
image-20210921223410894 image-20210921224303190

View All Scheduled Commands across Projects

All schedules can be viewed on a single consolidated view.

This is especially helpful when there are multiple schedules across multiple projects and categories.

image-20210921224907192 image-20220428202844837

You can see the last 1000 executed commands and the last time they were executed on the scheduled commands history screen.

History / Log View of Scheduled Commands

The last 1000 scheduled commands that executed are recorded and can be inspected for errors or more details.

When the list reaches 1000, the last item is pushed out and the new item takes its place.

History filters:

image-20220426233501010

Configure Command Results Distribution

image-20220521221130638

Features and Usage

The command output distribution configuration can be tested by clicking the "Run Now" button. This will immediately run the command and automatically display the results in the popup window if checked. The email, Slack or Teams checkbox can be checked to test those distribution options as well. Keep in mind that the actual commands(s) will be executed.

Requirements and Supported Distribution Types

Implementation

Sorting Commands by Category

image-20211005205320374

Sorting Commands Alphabetically

image-20211005205522172

Using Command Placeholders

In order to use command placeholders, open the placeholders selection dropdown menu in the command properties screen.

Command Placeholder Types

image-20220424223620448

There are two special placeholders that invoke user interface screens to capture user command inputs. These are the "User input" placeholders and the "Date input" placeholders.

Placeholders are inserted directly into the command script and parsed out at the time of command execution. Placeholders should not be modified by hand until their special formatting and placement requirements are understood.

User Input Type Placeholder

How to use the user input placeholders
Sample commands utilizing user entry placeholder — the bold text is the placeholder entered data in the command.

git add . && git commit -m '[user_input`Enter the commit message``]'

git log -[user_input`Enter the number of last commits to list``]

Sample user input screen for the above commands — this input screen will be presented when the command is executed.
image-20211006113227005

The gray area shows the original command without the custom prompt message, this will help you see exactly what is being worked on and what part of the command will be affected.

The red text will be replaced by your entry in the final command.

If more than a single placeholder is present in the command each time you enter a value and click OK, the dialog will color the next command placeholder in red and replace the previous one with your last entry.

Date Input Type Placeholder

How to use the date input placeholders

The date input placeholder is very similar to the user input placeholder described before. The main difference is that the user input entry is a calendar date picker.

Sample commands utilizing the user date entry placeholder — the red bold text is the placeholder indicator in the command.

git --no-pager log --after="[date_input`Pick after date``]"

Sample date input screen for the above command — this input screen will appear when the command is executed.
image-20211006114945751

The gray area shows the original command without the custom prompt message, this will help you see exactly what is being worked on and what part of the command will be affected.

The red text will be replaced by your entry in the final command.

If more than a single placeholder is present in the command, each time you enter a value and click OK, the dialog will color the next command placeholder in red and replace the previous one with your last entry.

Before and After Command, File Execution

image-20220424225056025

Each command can execute a Windows batch or shell script file outside of the Git command script. This is accomplished by specifying the path and the file name of the script file. The script file will be executed on a separate thread, totally independent from the main Git command.

These executions can be configured to take place before or after the main command has finished executing.

Command Script

Large Command Input Screen

image-20220424225158106

A large script input screen is available when more space is needed to enter larger blocks of command script.

Command Format

Correct formatting is required for proper execution. The formatting must follow the type of shell script and language chosen.

Command placeholders are inserted into the command script, but are then removed at runtime after performing their job of replacing or adding parts of the command.

For example, using Bash will require Bash formatting and the correct command chaining delimiters. The Windows Command Prompt uses its own format and the PowerShell expands on that adding environment variables.

Special Cases

You cannot chain Git commands.
You can chain non-Git commands.
You can execute groups of commands separated by a newline.

Display Prompt Confirmation

This checkbox on the command button configuration screen can be checked to show a user prompt that will ask you to confirm if you really want to run the command. You can then cancel or confirm command execution.

This option is especially useful with commands that should be executed with caution.

Another useful function of this option is to prevent you from executing a command that may be incorrect in the context of the project at the time.

Checking this box will give you another layer of security before executing the command.

Clear Screen

It is possible to make sure that the terminal screen is cleared before executing a command. This will reduce the amount of information you have to look at after a command is executed.

Instead of typing Clear Screen into the terminal before each command, you can simply check a checkbox on the Command Configuration screen to have TerminalNexus clear the terminal for you before it executes the command.

Set the Focus to the Terminal Window

TerminalNexus will always steal the current focus after executing a command. This enables you to set the focus in the main window only once.

By selecting this option, the current focus will go immediately to the terminal window. This will allow you to execute a command and immediately be able to type in the terminal window instead of having to first click on it to establish the focus.

Command Description

You can add a more descriptive note to any command. This note can be created in the Rich Text Format (RTF).

It is possible to copy and paste RTF text into the notes.

Each description is a file on the disk and you can basically create descriptions of any size.

Copying/moving commands will also copy/move their notes.

Command Button References

Overview

Things to consider:

Command chaining must be correct. That means that you need to anticipate the references being pulled in and adjust the native shell chaining characters accordingly.

All command placeholders will be resolved as well, so if for example, you mean to run a command on a schedule, but one of the nested references includes a user prompt placeholder, that prompt will invalidate and break the command when executed on a schedule behind the scenes without a user interface. As powerful as the button chaining is, care must be taken to inspect all commands in a nested chain.

Creating a Reference to a Button

Step #1.

Open the configuration page for the button you would like to reference and click the link button to copy the button reference to the clipboard:

image-20220505213956107

Step #2

Paste the copied reference into a command script block as a new line.

You can double click the reference to display the original path and name of the command being referenced.

image-20220505214445720

Step #3

Reference indicator:

image-20220505212733306

Step #4

Look up a reference path by double clicking the reference script you pasted into the command script block:

image-20220505215201550

Keep Track of References

There are a number of aids to help keep track of references.

Discover which command buttons reference a button by viewing the list of all references for a given button.

image-20220505161046039

Types of terminal supported by TerminalNexus

Windows Terminal

Must be installed from Windows Store.
You will need to add it's executable name to the Windows Terminal options screen:

image-paths.png

Git for Schedules

You must specify the path to git.exe executable in order to enable the scheduling of Git commands.

The schedules are executed behind the scenes using the Git executable.

Normally the required git.exe is located here:

"C:\Program Files\Git\bin\git.exe"

It may vary depending on your configuration.

AI Integration

ChatGPT OpenAI API Key

Once you obtain your OpenAI API key, you can enter it in the options screen. This will allow you to access all TerminalNexus AI features.
Your API key will never be shared with our servers and it is encrypted while in the settings file on your workstation.

Type in the GPT model you'd like to use.

image-OpenAIOptions.png

Create a command on the fly

image-main-screen-ai.png

You can use natural language to describe a command and TerminalNexus will use AI to generate the command for your description.
Specify the terminal type at the beginning of your command description in order to generate the proper command for the terminal shell.

Example Git command:
git show me last 3 commits that include word bug in the commit message

The AI generated command will be:
git log -3 --grep="bugfix"

Example Bash command:
bash connect to my remote server using ssh and my pkey and display last 50 lines from nginx error log where the logs have error or crit in them

The AI generated command will be:
ssh -i @<remote_server_ip> "tail -n 50 /var/log/nginx/error.log | grep -E 'error|crit'"

If you would like to also see an AI generated description for this command, click the info button.

Here is the description for that command:
This command is used to connect to a remote server via SSH and display the last 50 lines of the Nginx error log that contain the words "error" or "crit". The command uses the SSH command to connect to the remote server using the provided private key (-i ) and username () and then uses the tail command to display the last 50 lines of the Nginx error log. The output is then piped to the grep command which filters the output to only show lines containing the words "error" or "crit".

image-main-command.png

Command Explanations: Getting Detailed Descriptions with AI

Get detailed descriptions for any command at the click of a button with our new artificial intelligence feature. The descriptions will be displayed in the command's notes section for easy reference and can be saved for later use, helping you to make the most of your monthly allocation of free AI words. Need to revisit a previously looked up command? Simply check the command notes section for a quick reference. Whether you are a beginner or an experienced user, AI is here to help you get the most out of TerminalNexus.

image-20230103011656917

Generating a List of Similar Commands

TerminalNexus's AI feature allows users to generate lists of similar commands based on the command clicked and save them for future reference. By simply clicking on a command, users can easily find related commands that may be useful in their workflow and save them for later use. This can be particularly helpful for those who are new to the application or for those who want to discover new commands that can help them work more efficiently. With the ability to generate and save lists of similar commands, TerminalNexus makes it easy for users to find the information they need and get the most out of the application.

image-20221227212458012

Generating Custom Commands with AI: Simply Describe Your Desired Outcome

Generate new commands simply by describing the desired outcome. Whether you are an experienced user or new to the application, you can easily create custom commands by writing a description of the command you need. Simply type in a brief description of what you want the command to do, and TerminalNexus's AI will generate a single, relevant command that can help you achieve your desired result. This innovative feature makes it easy for users to create custom commands that are tailored to their specific needs, saving time and effort in the process.

image-20221227213402160

Improve Your Writing: Use AI to Correct Grammar, Spelling, and Sentence Mechanics

A helpful feature for users who want to improve the quality of their writing when using the application. Whether you're creating a new commit message or inputting data for any other command using a command placeholder, you can use the AI-assisted grammar, spelling, and sentence mechanics correction tool to enhance your inputs. Simply type in your text, and a button will be available to rewrite and correct your sentences for concision and grammar. You can use this function to try different versions of your sentences until you find the one that works best. This innovative feature can be a game-changer for those who want to communicate clearly and effectively when using TerminalNexus.

image-20221227220610035

Summary of Git Repository Changes Feature

The summary of Git repo changes" feature uses AI to provide a concise overview of changes in your Git repository. You can choose between a professional or casual tone to tailor the summary to your preference.

Usage Instructions

Accessing the Feature: Navigate to the "Git" menu in TerminalNexus, then select "AI Summary of Git Repo Changes."

Selecting Your Tone

Choose either "Professional" or "Casual" to generate a summary in your preferred tone.

AI Integration

This feature relies on AI. To use it, enter your OpenAI API key in the settings.

Regenerating the Summary

If you want to change the tone or rephrase the summary, you can regenerate it. This won't reevaluate your changes but will rewrite the existing summary on the screen, allowing you to select a different tone.

Editing the Summary

Once generated, the summary is not a read-only field. You are free to modify the text as needed.

API Usage and Costs

OpenAI's services are not free, and using this feature will consume your API allowance. Depending on the number of changes, multiple queries may be made to OpenAI to compile the summary, affecting your API.

Communication and Token Limits

API Communication with Backoff

The feature uses a backoff coefficient to handle API rate limits. If the API responds with a "Too Many Requests" error, the system retries the query with increasing delays, ensuring robust communication without exceeding rate limits.

File Change Length Limit

Summaries are generated per file to ensure each summary is clear, cohesive, and contextually relevant.
The OpenAI API has a 4096-token limit per request. If the data for a single file exceeds this limit, the summary for that file may be truncated by the API.

Pre-Created Global Categories and Commands

The global categories and commands that are already pre-created are there to function as an example and can be modified to work in your specific environment. They may not fit all Git branching or naming standards in your existing configuration, but may be used as a starting point. Please make any changes you would like and copy/move/organize them as you see fit. Copying commands from global categories should help you in creating new projects and provide you with some guidance about the function and usage of this software.

The pre-created commands are there to help you along the way, but you should still exercise care and your discretion when executing any commands.

Recommended initial steps:

Before using TerminalNexus, make sure to complete the following:

  1. Install Git (including Git Bash, if desired).
  2. Note that most sample commands are designed to work with Git Bash unless otherwise specified.