SmarTTY 3.0 is out

Today we are proud to release SmarTTY 3.0 – our free multi-tabbed SSH client. In this version we have redesigned the main window to look better on modern high resolution displays and introduced the new smart terminal mode that greatly boosts the productivity of work done over SSH by extending the normal terminal experience with a few useful graphical elements:main

In this post I will give you an overview of the new features.

Windows-like Command Line Editing

The text editing experience in a Linux console is different from editing a text document in a Windows editor like Notepad++: different keyboard shortcuts, limited mouse support, and small annoyances like line breaks interfering with copy/pasting commands. We decided to solve this once and for all and added a new Smart Tab mode to SmarTTY 3.0.  Unlike the regular SSH tabs where SmarTTY simply forwards your keyboard and mouse events to the Linux system and expects it to handle them, Smart Tabs work in a more clever way.

When a Smart Tab is open, SmarTTY will understand whether you are editing a command line, or running a command via SSH. When you are editing a command line, smart tabs will offer you the regular Windows text editing experience with selecting words via Ctrl+Shift+Arrow, using mouse to move the cursor, undo/redo shortcuts, etc. SmarTTY knows exactly where the command line area starts and the output of the previous command ends and won’t let you accidentally cross that boundary. E.g. pressing Ctrl-A will select the entire command line, but not the any other text:ctrla

Once you hit Enter, SmarTTY will switch into the command running mode, offering the regular terminal emulation just like any other SSH client. This is possible because the SSH protocol allows running individual commands and reports exactly when a command exits.

Smart Command Completion

As the Smart Tabs have a good understanding of the commands you type, and have the ability to run commands like “ls” in the background, they will provide instant suggestion popups with commands and file names, similar to modern code editors:01-popupIf you are entering an absolute or a relative path, SmarTTY can again fully understand it and will display the directories and files matching the entered text:02-substrIf you often use Linux commands with numerous command-line switches and don’t want to lookup their meaning in man pages, SmarTTY lets you define custom per-command suggestions by editing the CommandCompletions.xml file. Here’s a basic example of suggestions for the mkdir command:

<?xml version="1.0"?>
<CommandCompletionDatabase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Completions>
 <CommandCompletion>
 <Command>mkdir</Command>
 <Description>create a directory</Description>
 <SuppressAutoTriggers>true</SuppressAutoTriggers>
 <Options>
 <Option>
 <Value>-m</Value>
 <ShortDescription>set file mode</ShortDescription>
 <LongDescription>
 <Summary>-m, --mode=MODE</Summary>
 <Info>set a file mode (as in chmod)</Info>
 </LongDescription>
 <LongDescription2></LongDescription2>
 </Option>
 <Option>
 <Value>-p</Value>
 <ShortDescription>make parent directories</ShortDescription>
 <LongDescription>
 <Summary>-p, --parents</Summary>
 <Info>no error if existing, make parent directories as needed</Info>
 </LongDescription>
 </Option>
 <Option>
 <Value>-v</Value>
 <ShortDescription>verbose mode</ShortDescription>
 <LongDescription>
 <Summary>-v, --verbose</Summary>
 <Info>print a message for each created directory</Info>
 </LongDescription>
 </Option>
 </Options>
 </CommandCompletion>
 </Completions>
</CommandCompletionDatabase>

Next time you type ‘-‘ while editing an “mkdir” command line, SmarTTY will recognize it and show relevant suggestions:03-mkdir

You can customize various suggestion-related settings to set when exactly should SmarTTY display its prompts:06-smart

Clickable File Links

As SmarTTY knows the directory where each of your commands is launched, it can understand the context of its output and save you some time interpreting it. Each time it sees a string that looks like a fully qualified Linux path (or a relative path with one of the common extensions), it replaces it with a clickable link:04-link

Clicking on that link opens the remote file in a separate tab (and navigates to the line/column if they were printed), so you can quickly understand what is going on:05-openedYou can customize the list of file extensions used in link detection via SmarTTY settings.

File Pane

As the smart tabs track the current working directory of each tab, they can do another useful thing with it – show you a list of current files and directories. The list work similar to Windows Explorer GUI – you can open subdirectories by double-clicking or pressing Enter and open files for editing or download them.07-files

The file list directory is always synchronized with the working directory of the terminal.

Package Manager GUI

If you ever had to search online for an exact package name of a certain Linux tool or library, or try to make sense of the bulky output of apt-cache, SmarTTY can simplify this for you by providing a responsive GUI for the APT and YUM package managers. Simply open it via Tools->Manage Linux Packages and use the filter + mouse to quickly locate what you want:08-pkg

Easy Connection List

SmarTTY 3.0 also features a new connection list window that provides various sorting and filtering options and lets you define custom icons for connections:connlist

You can choose between the dark and light themes for most common Windows via SmarTTY settings.

Try It Out

SmarTTY is completely free for both individual and company use. You can download the latest version here: http://sysprogs.com/SmarTTY/download/. If you like it, check out VisualGDB – our Visual Studio extension for advanced cross-platform development.