Conman
Conman is a RDP, SSH and VNC connection manager
Created Aug 1, 2024 - Last updated: Aug 1, 2024
Intro
Conman was created because I wanted a simple solution to have a list of different servers/machines that I needed to connect to regularly.
Many connection managers exist and many even support RDP, SSH and VNC, and I have tried many of them, but they all had one or more issues that annoyed me.
So the result was this application.

Features
- Single list of all the connections, with a Name, Tags and a Type field.
- Searchable by simply starting to type, search is case-insensitive.
- Controllable completely with keyboard.
- Supports opening connections to RDP, SSH and VNC.
- Each connection have their own independent window/process.
- Auto login to RDP, SSH and VNC.
- Configuration handled with simple json files.
- Configurations can be placed in alternative location from the application, to support sharing the configuration across multiple computers.
Requirements
- Operating systems
- Windows, x64
- .NET 6+ runtime
Usage
Application can be started in two ways.
Directly call the conman.exe
or with a shortcut, in this case conman will look for the config.json
file in the same folder as conman.exe
.
Or you can provide a path to the config.json
file as the first argument to conman.exe
like C:\apps\conman\conman.exe C:\configs\conman\config.json
remember " (quotes) if path contains spaces.
Keybindings
- List keybindings
Enter
, Opens a connection to the currently selected server/machine in the listCtrl + R
, Resets the list to show the full list of servers/machinesA-Z, 0-9, Numpad 0-9, Period, Comma
, start to search the full list of servers/machinesArrow Up or Down
, Moves the selection up or down the list
- Search input keybindings
Escape
, Closes the search input and sets focus to listArrow Up or Down
, Closes the search input and sets focus to listEnter
, Opens a connection to the currently selected server/machine in the list
Configuration
Config.json
The config.json
file has the following structure.
{
"StartupStore": "my-connections",
"WindowWidth": 768,
"WindowHeight": 1024,
"WindowX": 0,
"WindowY": 0
}
Config.json fields
- StartupStore, this defines the name of the store containing all the connections the application should display, eg.
my-connections
, should not contain an extension. - WindowWidth, width of the main window.
- WindowHeight, height of the main window.
- WindowX, main window X location relative to left of startup screen.
- WindowY, main window Y location relative to top of startup screen.
If WindowX and WindowY both are 0 then the application will start in the middle of the screen
My-connections.json
The my-connections.json
file has the following structure.
This file must be placed in the same folder as config.json
.
This file can alternatively be called, my-connections.store
, however this is an old extension, and may be removed in the future.
{
"name": "my-connections",
"last_changed": "2022-06-12 10:42:00",
"sorting": "tags,name,type",
"connection_defaults": {
"rdp": {
"key": "",
"name": "",
"tags": "",
"connection_type": "",
"server_host": "",
"server_port": "3389",
"credentials_username": "",
"credentials_password": "",
"credentials_domain": "",
"settings_window_width": "1600",
"settings_window_height": "1200",
"settings_enable_compression": "False",
"settings_colordepth": 24,
"settings_enable_log": false,
"settings_disable_credsspsupport": false,
"settings_enable_autoreconnect": true,
"settings_enable_drives": false,
"settings_enable_printers": false,
"settings_enable_clip": true,
"settings_enable_smartcard": false,
"settings_enable_winkey": true
},
"ssh": {
"key": "",
"name": "",
"tags": "",
"connection_type": "",
"server_host": "",
"server_port": "22",
"credentials_username": "",
"credentials_password": "",
"credentials_domain": "",
"credentials_certificate": "",
"settings_window_width": "200",
"settings_window_height": "50",
"settings_enable_compression": "False",
"settings_colordepth": 24,
"settings_enable_log": false,
"settings_disable_credsspsupport": false,
"settings_enable_autoreconnect": true,
"settings_enable_drives": false,
"settings_enable_printers": false,
"settings_enable_clip": true,
"settings_enable_smartcard": false,
"settings_enable_winkey": true
},
"vnc": {
"key": "",
"name": "",
"tags": "",
"connection_type": "",
"server_host": "",
"server_port": "5900",
"credentials_username": "",
"credentials_password": "",
"credentials_domain": "",
"settings_window_width": "1600",
"settings_window_height": "1200",
"settings_enable_compression": "False",
"settings_colordepth": 24,
"settings_enable_log": false,
"settings_disable_credsspsupport": false,
"settings_enable_autoreconnect": true,
"settings_enable_drives": false,
"settings_enable_printers": false,
"settings_enable_clip": true,
"settings_enable_smartcard": false,
"settings_enable_winkey": true
}
},
"connections": [
{
"key": "1",
"name": "RDP server",
"tags": "tag1,tag2,tag3",
"connection_type": "rdp",
"server_host": "ip or hostname",
"credentials_username": "username",
"credentials_password": "password",
"credentials_domain": "domain"
},
{
"key": "2",
"name": "VNC server",
"tags": "tag4,tag5",
"connection_type": "vnc",
"server_host": "ip or hostname",
"credentials_password": "password"
},
{
"key": "3",
"name": "SSH server",
"tags": "tag6,tag7,tag8",
"connection_type": "ssh",
"server_host": "ip or hostname",
"credentials_username": "username",
"credentials_password": "password",
"settings_window_width": "175",
"credentials_certificate": "path/to/ssh-certificate"
}
]
}
My-connections.json fields
- name, name of the connections list.
- last_changed, a date to indicate when it was last changed.
- sorting, how should the list of connections be sorted, can be any combination of
tags,name,type
comma separated and with no spaces, all three names must be there. - connection_defaults, contains all the default values used for each of the connections of that type, none of the key/values should be removed, but the values can be changed, and will be used if the same key is not present on a connection.
- credentials_certificate, the certificate used here must be a
putty
compatible.PPK
file format, if your current key was made with OpenSSH then you can use theputtygen
tool to make a converted version of your key to use.
- credentials_certificate, the certificate used here must be a
- connections, this is where each of the connections the application will list is added, as a minimum the fields,
key, name, tags, connection_type, server_host
should be added,key
andname
should be unique between all the connections.
Other settings from the default can be copied to make custom changes for that connection, will override default.
Changelog
# Changelog
All notable changes to this project will be documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## Unreleased changes
- No changes
---
## Releases
### 1.0.1 -- 2022-06-19
- Added more keybindings to start search
- Updated handling of search start
- Updated WinRDP to version 1.1.1
- Contains fixes for positioning the window in the center of the screen
### 1.0.0 -- 2022-06-12
- Added support for window size and position definition in config.json
- Added support for using a certificate with SSH connection
- Added a check for duplicate `key` field values in store.json file
- General optimization and code cleanup
Previous Versions
OS | Version | Link |
---|---|---|
windows | latest | download |
windows | 1.0.1 | download |
windows | 1.0.0 | download |