Alternative terminal for Windows
Often confused terminal and shell. In the same * nix there are shells (bash, csh, zsh, ...) and terminals (konsole / guake / yaquake / tilda, etc. etc.). There is only one well-known terminal for the Windows world - the standard console window, which often mistakenly called "cmd.exe". And few people know about the existence of many other terminal emulators. There are more known shells, there are two of them: cmd.exe and powershell.exe. And although there are at least three bash ports (MinGW, CygWin, GIT), many Unixoids prefer to scold cmd.exe.
I was not satisfied with any of the alternative terminals found (as in 2009, when I started work on ConEmu , and now). It would seem that there are few requirements, here are the main ones:
Does ConEmu meet these requirements? The terminal (Free & OpenSource) is written by the programmer "for himself" taking into account the wishes of other users of the program. The minimum necessary configuration takes about 2 megabytes, which of course is more than a few kilobytes, but nevertheless negligible. It does not require installation, it can be portable if you create the ConEmu.xml file next to ConEmu.exe . It does not depend on third-party libraries.

It is impossible to tell “about everything” within the framework of one article, therefore only certain functions are described here, in my opinion the most interesting to most users.
Visibility . Tabs can display not only the headers of the consoles, but also additional information like the active process, the progress of archiving, chkdsk, powershell, copying to Far Manager. For example, you do not need to switch to the tab to find out if the compilation of the project running in this tab has ended. In the status bar, you can configure a list of displayed “columns” such as the coordinates of the visible area and cursor, PID of the active process in the console, CAPS / NUM / SCRL statuses, transparency coefficient, etc. Many columns are clickable, for example, you can click on the “column” with transparency for quick her changes.
Minimalism. The interface (of the terminal itself, and not the settings window) contains only two additional graphic elements - tabs and status bar. But you can turn them off if you prefer a "clean" console.
Portability . Settings can be stored in the ConEmu.xml file created in the program folder.
Work with text . Two styles of text marking are supported - the usual one for text editors and the “rectangular” one as in a regular console. Marking and pasting text is convenient with both a keyboard and a mouse.
Quake / Tilda . Game console mode support. The terminal can “exit” when you press the selected key combination (default Ctrl + ~) and hide when you lose focus or press Esc.
Launch any application. The user can configure any number of predefined tasks (Task) for quick launch in ConEmu or from the jump list of the Windows 7 taskbar. A task can start one or several processes or shells (powershell, SDK, project compilation, etc.) You can even run simple GUI applications like PuTTY, TaskManager, GVim.
Work with color . Several predefined palettes (e.g. Solarized, PowerShell, xterm, etc.), the ability to customize your console colors, support ANSI X3.64 control codes, 24-bit color when working in Far Manager.
Integration . Can add itself (and selected shell commands) to the context menu of Windows Explorer. Able to intercept the creation of a standard Windows terminal.
Flexible configuration and management. In the Settings dialog you can find settings for every taste and color. You can assign a key combination to almost any action, and the simplest macro language allows you to perform non-standard actions.
In the beginning was Zoin and his announcement of the Console Emulator on the Far Manager forum. I don’t know if the author planned the development of the emulator, but in 2009 there were several forks offering various improvements: vertical scrolling, tabs for Far editors and viewers, displaying the context menu for files on the right button and dragging files between the console Far and other applications. I liked the idea and, combining all the “patches”, I began to develop the emulator adding new features and fixing bugs. At that time, there were several alternatives (the most famous are Console2 from free and TakeCommand from paid), but not one got accustomed to me. “I have been using the headlamp for 15 years”, therefore, first of all I needed a shell for it.
ConEmu can be downloaded from the website in two versions: installer and 7z archive. In general, there is no difference between them, just the installer can create shortcuts and allows you to disable unnecessary parts of the product. I recommend trying the latest Alpha versions, as Since the last Stable was released, a lot of time has passed, many bugs have been fixed, many new features have appeared.
For bash adherents, there are specially prepared packages for MinGW on the project mirror . It is enough to expand them into the MinGW folder so that “sh.exe –login –i” is launched immediately in ConEmu.
Far Manager users: ConEmu plugins must be loaded for Far to work properly. Make sure that when using the installer, the plugins are installed in the Plugins subfolder of your directory with Far.exe. Please note that the installer allows you to select the installation folder for both ConEmu itself and Far plugins.
Anti-virus users: the installer, like ConEmu itself, does not contain trojans, as they say, “source codes are open”.
At the first start, the program will ask where you prefer to store the settings - in the ConEmu.xml file or in the registry.
Now you can run ConEmu.exe or ConEmu64.exe (there is no difference between the 32-bit and 64-bit versions).
By default, ConEmu at startup launches one tab with the “preferred” shell:
At the first start, the “Fast configuration” dialog is displayed; it contains several basic options that affect the operation of the program.

Install keyboard hooks . ConEmu can take certain key combinations from the system (when the program window is in focus). For example, Win + digit can switch to a tab with a specific number. Almost all key combinations with ConEmu are configured or disabled (Win + Alt + K), but if you do not need to intercept combinations with the Win modifier at all, you can disable the check box.
Inject ConEmuHk.dll . Many features of ConEmu require the interception of certain WinAPI functions. The ConEmuHk.dll library (or its 64-bit version of ConEmuHk64.dll) is embedded in the processes launched in ConEmu tabs and intercepts functions through import sections. Unfortunately, there are more and more intercepted functions and, accordingly, the interception time increases. And although it’s only milliseconds in numbers, some users complain about the slowdown in the execution of commands in ConEmu. If you are one of them, uncheck this box. The plans are to try to switch to interception in the detours style, perhaps this will speed up the process.
Enable automatic updates. I think it doesn’t need a translation. The update is performed in the same way as during installation. That is, if you installed ConEmu by unpacking a 7z-archive, then an archiver (7-zip or WinRar) will be required for updating.
In principle, ConEmu works right away and does not require settings, but any user / admin / programmer has his own preferences and specifics of work.
The full settings dialog is opened either from the keyboard using the Win + Alt + P combination or by calling the “Settings” item from the ConEmu system menu.
You can get lost in the heap of tabs and settings, but all settings are grouped by meaning, and for non-obvious options, tooltips are displayed when you hover over the mouse. Probably you should not talk about each option in this article, so we’ll go over only the main and most interesting ones.
So, most likely you will need to configure your list of shells, both those that are launched at startup, and are quickly accessible.

Go to the “Startup” tab. If you need to run only one shell, everything is simple: select “Command line” and enter the required one, for example:
In principle, you can run any console application or batch file for cmd, python, etc. as a shell. You can even run some GUI applications like PuTTY, notepad, gvim, etc.
If at the start you need to start several shells at once, go to the “Tasks” tab (tasks) and the magic begins. The settings dialog is already overloaded, therefore tasks are created “in text form”.

Call it “Shells”, go back to the “Startup” tab and select “Specified named task”.
As a result, when ConEmu starts, we get 4 consoles in a 2x2 grid, and the sh.exe tab will be active, and powershell.exe starts in admin mode (after UAC confirmation) and its tab gets a fixed name "PowerShell".
The "-new_console" parameter is a special parameter processed in ConEmu and cut out from the command line when the program starts. You can write a lot about it for a long time, but for now I’ll send it to the project’s website .
If the toolbar is displayed, the [+] button opens a dialog for launching a new console. Here you can specify any program with parameters, select a launch line from the history or select a pre-created task. Here you can create a “split” by launching a new console on the same screen as the current one. “Run as administrator” launches the new console in administrator mode. The “New window” checkbox will launch the new ConEmu.exe process with the selected command.

On the button bar, the [+] button has an arrow to open the menu. The same menu can be opened with a combination of Win + N. It displays the commands from the history and pre-created tasks. Right-clicking on an item with a task opens a second-level menu with a list of commands for this task - this way you can see its contents or run only one of the task commands.

You can create a shortcut and launch a new console in an already running copy of ConEmu. For example, create a shortcut on your desktop to launch Far Manager (we assume that Far and ConEmu are installed in the C: \ Far folder)
Starting from the Jump List of the Windows 7 taskbar. From here, it’s convenient to launch the most common tasks, for example, start compiling your projects .
Quick start by key combination. If there are not enough shortcuts (hotkeys can be set in the shortcut properties) and tasks (Win + N and the number of the task number), you can create a launch macro for any command. Open the “Keys & Macro” tab of the setup dialog (Win + Alt + K), select one of “Macro NN” and enter something like in the “Macro GUI” field:
Two line syntaxes are supported: C-string where are used

From the command line of the shell launched in the ConEmu tab, you can launch a new tab using the -new_console special parameter . Its options allow you to launch tabs in administrator mode, under a different user, enable and disable confirmation of closing after the command is completed, launch tabs “in the background”, split the active console vertically or horizontally (split-screen).
or use the cmd file included with ConEmu
In the context menu of the tab (right click on the tab or Shift + right click in the console) there is a “Duplicate root” item. He creates a copy of the shell in a new tab. For example, in the current cmd tab, you started compiling the project, when you call “Duplicate root”, a new tab will be created with the same current path as it was before the compilation started, and with the same environment variables.
The keyboard shortcuts Ctrl + Shift + O and Ctrl + Shift + E work in the same way, but they create a copy of the shell, breaking the active console vertically or horizontally (split-screen).
The settings on the Mark & Paste and Controls tabs are many. I'll tell you about the defaults.
Two types of text markup are supported:
Options for starting marking in the “Text selection” style: Shift + Left arrow, Shift + Right arrow or holding LeftShift start marking with the mouse (drag with the left mouse button pressed).
Options for starting marking in the “Block selection” style: Shift + Up Arrow, Shift + Down Arrow or holding Left Alt start marking with the mouse (drag with the left mouse button pressed).
Note : when working in Far Manager, Shift + Arrow are processed in Far and not in ConEmu.
Copying the marked block to the clipboard from the keyboard: Ctrl + C or Enter. Pressing Esc cancels the mark.
When marking text with the mouse, copying is performed immediately when the left mouse button is released.
Ctrl + V pastes only the first line from the clipboard. Why only the first? Most often, a shell is launched in the terminal and it would be a shame if the command starts running before you audit what is inserted into the console.
Shift + Ins and right-clicking inserts all the lines from the clipboard.
The combinations Ctrl + Shift + D and Ctrl + Shift + F open the standard Windows dialogs for selecting the path to a folder or file and paste the selected path into the console.
When left-clicking on the command line, ConEmu attempts to move the cursor to the click position. And Ctrl + BackSpace deletes the word to the left of the cursor.
ConEmu can open hyperlinks in the default browser (ShellExecute) and links to compilation errors in the editor. While holding Left Ctrl, left-click on the hyperlink
Tab “Main”. You can choose any font: monospaced or proportional, raster or vector, with anti-aliasing turned on or off (Clear Type, Standard, None). The proportional font in the console looks a little strange, but if you want, you can turn off the “Monospace” checkbox.
I would also like to note that ConEmu can use not only the fonts installed in the system. Just copy the desired font files (fon, ttf, otf, and monospaced bdf are supported) to the ConEmu folder and restart the program. New fonts will appear in the list of “Main” fonts available on the settings tab. Do not copy too many fonts - their processing can take a considerable time at the start of the program. Registration of "local" fonts can be disabled on the "Features" tab with the "Auto register fonts" flag.
To display pseudographics (frames in Far Manager, etc.), you can configure a separate font. In some fonts used as the main frame, they are unsympathetic.
Sometimes you need to quickly change the font size. This can be done without opening the settings window - hold down the Ctrl key and turn the mouse wheel.
The ConEmu game console-style challenge is available out of the box. Open the “Main” tab and turn on the “Quake style slide down” checkbox. If desired, turn on “Auto – hide on focus lose” in the same place. If the frame is not needed at all - in the "Frame width" field, put "0" instead of "-1" ("-1" - show the frame in full). Here you can also adjust the indentation of the console field from the edges of the ConEmu window - turn on “Center console in ConEmu workspace” and select the number of pixels in the “Pad size”.
The “on top of all windows” mode can be enabled on the “Appearance” tab with the “Always on top” checkbox.
Does the ConEmu window show on the taskbar? Open the tab “Task bar” and select the desired options. By default, in Quake mode, when minimizing (hiding) the window is hidden in the TSA (taskbar status area - the area next to the watch), this is the option “Auto minimize to TSA”. And in order not to show the icon in the taskbar at all, click the “Don't show ConEmu window on Taskbar” radio button and turn on “Always show TSA icon” so as not to lose ConEmu.
Activation key There can be two of them (this is how everything is launched on some keyboard layouts). Open the tab “Keys & Macro” and at the very beginning of the list we see “Minimize / Restore” and “Minimize / Restore (alternative)”. You can select any key combination (the default is Ctrl + ~), but keep in mind that this combination is registered as a global hotkey in the system with all the consequences. For example, some combinations may already be reserved by the system or other applications.
Hide key. The same as the activation key, but in addition the ConEmu window can be hidden simply by pressing the Esc key. Open the tab "Task bar" and in the group "Minimize ConEmu by Esc" select the option "Always". There is also a flag “Map Shift + Esc to Esc” so that you can still send the Esc key to the console if necessary.
The size (height) of the window can be changed. Move your mouse over the frame (or the place where it should be), wait a couple of seconds, and the window will display the usual resizable frame that you can drag with the mouse.
Support Jump List. After creating your list of tasks on the Tasks tab, enable the Add ConEmu tasks to taskbar check box and click the Update Now button.

Display progress on the taskbar.

If you don’t like the dull black window, you can replace the background with a picture or a solid color. Background replacement is performed for the selected color indices - the “Replace color indexes” field. By default, the field is set to "*" - auto-selection, but if, for example, you need to replace the background for dark green (the palette can be viewed on the "Colors" tab), enter "# 2" instead of "*". The background image is indicated in the "Path" field (bmp, jpg, png files), but in this field you can also specify a solid color, for example, "48 10 36" to get the background color of the terminal in Ubuntu. If the picture is too bright - it can be extinguished with the "Darkening" slider.
Another option for Far Manager users is to set the background color from Far plugins. There was already an article on Habré "". The plugin described there is outdated and does not work in current versions of ConEmu, but the same functionality is implemented by the ConEmu Background plugin. To enable panel coloring, open the“ Plugins configuration ”list in Alt Manager (Alt + Shift + F9 in panels), select the plugin“ ConEmu Background ”and enable the“ Enable plugin ”checkbox.
ConEmu can update automatically if it was installed by the installer or deployed from a 7z archive. To update the 7z-archive, an installed 7zip or WinRar archiver is required. On the “Update” tab you can select the update options: check at startup or hourly; show a dialog with a message about the new version or just a notification in the TSA; be updated to the latest or only to a stable version; proxy server settings; path to store downloaded versions, etc.
On the “Colors” tab, you can select one of the predefined color schemes (Solarized, Standard VGA, PowerShell, xterm, etc.) or customize your color scheme. You can save the configured scheme: enter a name in the “Schemes” field and click the “Save” button.
The standard 16-color palette is not always enough, but ConEmu has two options for expanding the color space.
Due to the loss of one background color index in ConEmu, you can configure an additional 16 colors for the text. For example, to prompt the command line, you can specify a bright red background color, select its index in the drop-down list (# 12) and adjust the color palette with indexes 16..31. After that, the text will be displayed in the colors of the palette 16..31, and the background color (bright red) will be replaced with the surrounding one (most likely it will be black).
Read more here .
The dull 16-color console palette bothered the developer of the Colorer plugin for the Far Manager editor and Colorer TrueMod appeared. As a result, the console editor shone with new colors, and color information was stored in SharedMemory in addition to the console itself. In addition to colors, it became possible to use Bold / Italic / Underline fonts for sections of text.
In Far 3.0, TrueColor support has become native, and advanced attributes (24 bits per color and Bold / Italic / Underline) can be configured for any interface element. Who said that the headlight does not have enough colors to highlight groups of files?
The option can be disabled on the “Colors” tab with the “TrueMod (24bit color) support” flag. Disabling it saves some megabytes of memory.
Escape sequences can be used in * nix terminals , and even in DOS they were available with the standard ANSI.SYS driver. In the Windows terminal, they decided to forget about them, although there are several programs that allow using ANSI in Windows, for example ANSICON .
ConEmu has built-in ANSI X3.64 support. To do this, the “Inject ConEmuHk” and “ANSI X3.64” checkboxes on the “Features” tab must be enabled. A complete list of supported codes in ConEmu ANSI codes .
With ANSI, you can not only output colored text. For example, in the tab header you can display the current directory in cmd .
If desired, on the “Transparency” tab, you can adjust the transparency of the ConEmu window. You can select different transparency values for the active and inactive windows. For example, ConEmu may completely “disappear” from the screen when focus is lost if the transparency slider for the inactive window is moved to the far left.
If you have not disabled the status line, then the current transparency value in percent may be displayed in it (the list of displayed “columns” of the status line is also configured). When you click on a column with transparency, a menu pops up in which you can quickly change the transparency coefficient or turn it off.
When working with multiple consoles at the same time or when working with editors and viewers in Far Manager (the ConEmu plugin must be loaded in Far), the tabs greatly simplify life. In addition, the tab title shows the progress of the operation in percent (copying, unpacking archives, chkdsk, progress in PowerShell, etc.).
The “Shield” icon is displayed in the tab if this console is running in administrator mode.
The displayed text can be configured according to a template, for example, you can show the name and PID of the active process, the serial number of the console, the title of the console window, the name of the file being edited or viewed in Far Manager, a sign of changes in the editor.
If cmd.exe is running in administrator mode, it displays the prefix “Administrator:” in the title bar of the console window. ConEmu can discard this redundant information.
If you don’t need tabs, you can completely disable them or enable auto-display when more than one tab appears.
Switching between tabs is also customizable. The standard combinations are Ctrl + Tab and Ctrl + Shift + Tab. The “Recent mode” mode enabled by default allows you to sort through the tabs in the order of their activation. When the “Lazy tab switch” is on, the actual tab will switch when you release the Ctrl key. And before releasing the Ctrl key, tabs can also be switched with the Left / Right arrows.
Tabs can be activated by the console number, which can be shown in the tab header. By default, a combination of Win + number is suggested (the “Install keyboard hooks” and “Win + Number - activate console” checkboxes on the “Controls” tab should be enabled). That is, Win + 1 activates the first console, Win + 2 - the second, etc. If more than 9 consoles are open, then you need to press two digits in succession while holding down the Win key, for example, “Win + 2.4” activates the 24th console (and who needs so many of them?). If editors / viewers in Far Manager are open, then the Win + digit will iterate over them sequentially (the “Host-Key + Number iterates Far windows” flag).
Instead of the “Win” key, you can select any other combination of modifier keys, for example Ctrl + Shift or Apps. Go to the “Keys & Macro” tab and scroll through the list of keys to “Activate console by number”. You can select any three modifier keys.
It is disconnected and configured at will. A large number of columns are available, such as the name and PID of the active process, the coordinates of the visible area and cursor, the ID of the current keyboard layout, CAPS / NUM / SCROLL statuses, the number of the active console, transparency coefficient, etc. You can click on many columns to change them.
On the Integration tab, you can configure the context menu for Windows Explorer and set ConEmu as the default terminal for launching console applications.
"ConEmu Here" and "ConEmu Inside." You can create an unlimited number of menu items to launch different shells (cmd, powershell, bash, SDK, etc.) Enter a command in the “Command” field, give the menu item the corresponding name in the “Menu item” field, optionally specify the path to the icon displayed in the menu (does not work in WinXP) and click the "Register" button. A list of previously registered items is displayed in the “Menu item” drop-down list.
The difference between ConEmu Inside and ConEmu Here is that the terminal will be launched as part of the Windows Explorer (Inside) window.
ConEmu can be used as a plugin in other programs. To do this, specify the window handle in which ConEmu should be placed and the command that it should execute. For instance:
ConEmu can replace a standard Windows terminal, launch from the Windows SDK Command Prompt shortcut, launch ipconfig / all from the Win + R dialog, launch console applications from TotalCmd, debug console programs in Visual Studio - everything can be intercepted and launched in ConEmu.
How it works: on the “Integration” tab, specify the list of processes into which the ConEmuHk.dll library will be loaded (for example, “explorer.exe | devenv.exe | totalcmd.exe”) and enable the “Force ConEmu as default terminal” checkbox as well , if desired, "Register on OS startup". In these processes, the CreateProcessA, CreateProcessW, WinExec functions will be intercepted to launch the console application in ConEmu.
It has already been said above about running any commands from the jump list . For example, to build ConEmu, I made a cmd file that configures the SDK environment and runs nmake or devenv.com.

The key "/ single" in the field "Task parameters" indicates to use one instance of ConEmu (launch in a new tab). The "-new_console: c" key in the command text is analogous to the "pause" in cmd so that the console does not close after compilation is complete.
In case of compilation errors (the compiler output is saved in the Error.log file), the script that
Here you can change some options depending on the process in the console.
For example, for PowerShell running in admin mode, set your palette.
Here you will also have the opportunity to set your own background image (they have been asking for a long time, but not yet ready).
Here you can see a list of all the key combinations used in the program. A quick way to open this tab is Win + Alt + K.
It is also possible to set a number of user actions through GuiMacro . For example to assign Ctrl + D out of the current shell:
Integration with Far is a topic for a separate article. It is important that the ConEmu plugin is loaded in Far (that is, the “ConEmu” item is visible in the F11 list from the panels).

A short list of features.
Basically a tab for catching bugs. But it may be of interest to users.
For example, when you select the Shell radio button, ConEmu shows the processes launched in the console and the loaded dlls. Almost the same thing can be seen in ProcessMonitor, but there is a bonus - when compiling the VC projects, cl.exe and link.exe are launched not with keys but with the batch-file parameter. ConEmu will show the contents of this file.
Win + A or the button on the toolbar - freeze the console (pause).
Right-clicking on the cross in the window title hides ConEmu in the notification area (Taskbar status area).
The scrollbar is hidden by default and appears when you mouse over the right edge of the console. When working in Far Manager, the mouse wheel is usually processed by Far itself (scrolling through panels, menus, etc.), but when you hover over the scroll bar, the wheel scrolls the console.
Search for text - Apps + F or from the “Edit” menu, “Find text” item. We can search all over the console, but for this the console should be frozen (Freeze console).

You can show the "real" console with the combination of Ctrl + Win + Alt + Space.
It would seem that not much is needed from the terminal, but work on ConEmu is far from complete and plans to implement many features. For example, the "infinite" buffer (now limited to 9999 lines of the "real" console), full support for xterm 256 colors, horizontal scrolling, snippets, optimization, etc.
And, of course, the documentation. There is simply not enough time to maintain the relevance of the wiki , some pages are awaiting translation, and many features are described only in WhatsNew.
The official website has moved to http://conemu.github.io .
I was not satisfied with any of the alternative terminals found (as in 2009, when I started work on ConEmu , and now). It would seem that there are few requirements, here are the main ones:
- work with console applications using the console API : for example, Far simply will not start in mintty or PowerShell ISE ;
- visual improvements like tabs (tabs) and split-screen ;
- quick and convenient work with marking / copying / pasting text;
- It should look like a terminal, and not like a Christmas toy with a bunch of graphic whistles and nozzles that you can’t even turn off;
- It should not depend on third-party libraries such as .Net, Qt, VC / GCC redist and other installed packages, take up as little space as possible and not require installation on a new machine;
- finally, as a follower of Far Manager, I wanted to integrate with this file manager - editors and viewers in tabs, drag & drop files between Far and other applications, etc.
Does ConEmu meet these requirements? The terminal (Free & OpenSource) is written by the programmer "for himself" taking into account the wishes of other users of the program. The minimum necessary configuration takes about 2 megabytes, which of course is more than a few kilobytes, but nevertheless negligible. It does not require installation, it can be portable if you create the ConEmu.xml file next to ConEmu.exe . It does not depend on third-party libraries.

Feature Overview
It is impossible to tell “about everything” within the framework of one article, therefore only certain functions are described here, in my opinion the most interesting to most users.
Visibility . Tabs can display not only the headers of the consoles, but also additional information like the active process, the progress of archiving, chkdsk, powershell, copying to Far Manager. For example, you do not need to switch to the tab to find out if the compilation of the project running in this tab has ended. In the status bar, you can configure a list of displayed “columns” such as the coordinates of the visible area and cursor, PID of the active process in the console, CAPS / NUM / SCRL statuses, transparency coefficient, etc. Many columns are clickable, for example, you can click on the “column” with transparency for quick her changes.
Minimalism. The interface (of the terminal itself, and not the settings window) contains only two additional graphic elements - tabs and status bar. But you can turn them off if you prefer a "clean" console.
Portability . Settings can be stored in the ConEmu.xml file created in the program folder.
Work with text . Two styles of text marking are supported - the usual one for text editors and the “rectangular” one as in a regular console. Marking and pasting text is convenient with both a keyboard and a mouse.
Quake / Tilda . Game console mode support. The terminal can “exit” when you press the selected key combination (default Ctrl + ~) and hide when you lose focus or press Esc.
Launch any application. The user can configure any number of predefined tasks (Task) for quick launch in ConEmu or from the jump list of the Windows 7 taskbar. A task can start one or several processes or shells (powershell, SDK, project compilation, etc.) You can even run simple GUI applications like PuTTY, TaskManager, GVim.
Work with color . Several predefined palettes (e.g. Solarized, PowerShell, xterm, etc.), the ability to customize your console colors, support ANSI X3.64 control codes, 24-bit color when working in Far Manager.
Integration . Can add itself (and selected shell commands) to the context menu of Windows Explorer. Able to intercept the creation of a standard Windows terminal.
Flexible configuration and management. In the Settings dialog you can find settings for every taste and color. You can assign a key combination to almost any action, and the simplest macro language allows you to perform non-standard actions.
A bit of history
In the beginning was Zoin and his announcement of the Console Emulator on the Far Manager forum. I don’t know if the author planned the development of the emulator, but in 2009 there were several forks offering various improvements: vertical scrolling, tabs for Far editors and viewers, displaying the context menu for files on the right button and dragging files between the console Far and other applications. I liked the idea and, combining all the “patches”, I began to develop the emulator adding new features and fixing bugs. At that time, there were several alternatives (the most famous are Console2 from free and TakeCommand from paid), but not one got accustomed to me. “I have been using the headlamp for 15 years”, therefore, first of all I needed a shell for it.
Installation
ConEmu can be downloaded from the website in two versions: installer and 7z archive. In general, there is no difference between them, just the installer can create shortcuts and allows you to disable unnecessary parts of the product. I recommend trying the latest Alpha versions, as Since the last Stable was released, a lot of time has passed, many bugs have been fixed, many new features have appeared.
For bash adherents, there are specially prepared packages for MinGW on the project mirror . It is enough to expand them into the MinGW folder so that “sh.exe –login –i” is launched immediately in ConEmu.
Far Manager users: ConEmu plugins must be loaded for Far to work properly. Make sure that when using the installer, the plugins are installed in the Plugins subfolder of your directory with Far.exe. Please note that the installer allows you to select the installation folder for both ConEmu itself and Far plugins.
Anti-virus users: the installer, like ConEmu itself, does not contain trojans, as they say, “source codes are open”.
At the first start, the program will ask where you prefer to store the settings - in the ConEmu.xml file or in the registry.
Now you can run ConEmu.exe or ConEmu64.exe (there is no difference between the 32-bit and 64-bit versions).
By default, ConEmu at startup launches one tab with the “preferred” shell:
- Far.exe (if found near ConEmu.exe);
- cmd.exe or tcc.exe (if TakeCommand or TCC / LE is installed);
- sh.exe (if ConEmu is installed in the "MinGW" mode).
First start
At the first start, the “Fast configuration” dialog is displayed; it contains several basic options that affect the operation of the program.

Install keyboard hooks . ConEmu can take certain key combinations from the system (when the program window is in focus). For example, Win + digit can switch to a tab with a specific number. Almost all key combinations with ConEmu are configured or disabled (Win + Alt + K), but if you do not need to intercept combinations with the Win modifier at all, you can disable the check box.
Inject ConEmuHk.dll . Many features of ConEmu require the interception of certain WinAPI functions. The ConEmuHk.dll library (or its 64-bit version of ConEmuHk64.dll) is embedded in the processes launched in ConEmu tabs and intercepts functions through import sections. Unfortunately, there are more and more intercepted functions and, accordingly, the interception time increases. And although it’s only milliseconds in numbers, some users complain about the slowdown in the execution of commands in ConEmu. If you are one of them, uncheck this box. The plans are to try to switch to interception in the detours style, perhaps this will speed up the process.
Enable automatic updates. I think it doesn’t need a translation. The update is performed in the same way as during installation. That is, if you installed ConEmu by unpacking a 7z-archive, then an archiver (7-zip or WinRar) will be required for updating.
Customization
In principle, ConEmu works right away and does not require settings, but any user / admin / programmer has his own preferences and specifics of work.
The full settings dialog is opened either from the keyboard using the Win + Alt + P combination or by calling the “Settings” item from the ConEmu system menu.
You can get lost in the heap of tabs and settings, but all settings are grouped by meaning, and for non-obvious options, tooltips are displayed when you hover over the mouse. Probably you should not talk about each option in this article, so we’ll go over only the main and most interesting ones.
Shell Choice
So, most likely you will need to configure your list of shells, both those that are launched at startup, and are quickly accessible.

Go to the “Startup” tab. If you need to run only one shell, everything is simple: select “Command line” and enter the required one, for example:
C:\MinGW\msys\1.0\bin\sh.exe --login -i
In principle, you can run any console application or batch file for cmd, python, etc. as a shell. You can even run some GUI applications like PuTTY, notepad, gvim, etc.
If at the start you need to start several shells at once, go to the “Tasks” tab (tasks) and the magic begins. The settings dialog is already overloaded, therefore tasks are created “in text form”.
>C:\MinGW\msys\1.0\bin\sh.exe --login -i
cmd /k set ConEmuHooks=OFF & "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" -new_console:sV -new_console:t:SDK & set ConEmuHooks=
cmd -new_console:s1TH
*powershell -new_console:s2TH -new_console:t:PowerShell

Call it “Shells”, go back to the “Startup” tab and select “Specified named task”.
As a result, when ConEmu starts, we get 4 consoles in a 2x2 grid, and the sh.exe tab will be active, and powershell.exe starts in admin mode (after UAC confirmation) and its tab gets a fixed name "PowerShell".
The "-new_console" parameter is a special parameter processed in ConEmu and cut out from the command line when the program starts. You can write a lot about it for a long time, but for now I’ll send it to the project’s website .
Launch New Consoles
If the toolbar is displayed, the [+] button opens a dialog for launching a new console. Here you can specify any program with parameters, select a launch line from the history or select a pre-created task. Here you can create a “split” by launching a new console on the same screen as the current one. “Run as administrator” launches the new console in administrator mode. The “New window” checkbox will launch the new ConEmu.exe process with the selected command.

On the button bar, the [+] button has an arrow to open the menu. The same menu can be opened with a combination of Win + N. It displays the commands from the history and pre-created tasks. Right-clicking on an item with a task opens a second-level menu with a list of commands for this task - this way you can see its contents or run only one of the task commands.

You can create a shortcut and launch a new console in an already running copy of ConEmu. For example, create a shortcut on your desktop to launch Far Manager (we assume that Far and ConEmu are installed in the C: \ Far folder)
"C:\Far\ConEmu.exe" /single /cmd "C:\Far\Far.exe"
Starting from the Jump List of the Windows 7 taskbar. From here, it’s convenient to launch the most common tasks, for example, start compiling your projects .
Quick start by key combination. If there are not enough shortcuts (hotkeys can be set in the shortcut properties) and tasks (Win + N and the number of the task number), you can create a launch macro for any command. Open the “Keys & Macro” tab of the setup dialog (Win + Alt + K), select one of “Macro NN” and enter something like in the “Macro GUI” field:
shell("",@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe")
Two line syntaxes are supported: C-string where are used
\r\n\t\a\e\"\\
, and Verbatim-string like @"app.exe ""C:\My Documents\File.txt"""
. 
From the command line of the shell launched in the ConEmu tab, you can launch a new tab using the -new_console special parameter . Its options allow you to launch tabs in administrator mode, under a different user, enable and disable confirmation of closing after the command is completed, launch tabs “in the background”, split the active console vertically or horizontally (split-screen).
cmd /c dir /s c:\ -new_console:bc
or use the cmd file included with ConEmu
csudo dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess
In the context menu of the tab (right click on the tab or Shift + right click in the console) there is a “Duplicate root” item. He creates a copy of the shell in a new tab. For example, in the current cmd tab, you started compiling the project, when you call “Duplicate root”, a new tab will be created with the same current path as it was before the compilation started, and with the same environment variables.
The keyboard shortcuts Ctrl + Shift + O and Ctrl + Shift + E work in the same way, but they create a copy of the shell, breaking the active console vertically or horizontally (split-screen).
Tag, copy, and paste text
The settings on the Mark & Paste and Controls tabs are many. I'll tell you about the defaults.
Two types of text markup are supported:
- Text selection - a standard for text editors;
- Block selection - rectangular blocks, as in a conventional console.
Options for starting marking in the “Text selection” style: Shift + Left arrow, Shift + Right arrow or holding LeftShift start marking with the mouse (drag with the left mouse button pressed).
Options for starting marking in the “Block selection” style: Shift + Up Arrow, Shift + Down Arrow or holding Left Alt start marking with the mouse (drag with the left mouse button pressed).
Note : when working in Far Manager, Shift + Arrow are processed in Far and not in ConEmu.
Copying the marked block to the clipboard from the keyboard: Ctrl + C or Enter. Pressing Esc cancels the mark.
When marking text with the mouse, copying is performed immediately when the left mouse button is released.
Paste text from clipboard
Ctrl + V pastes only the first line from the clipboard. Why only the first? Most often, a shell is launched in the terminal and it would be a shame if the command starts running before you audit what is inserted into the console.
Shift + Ins and right-clicking inserts all the lines from the clipboard.
Select and insert file and folder paths
The combinations Ctrl + Shift + D and Ctrl + Shift + F open the standard Windows dialogs for selecting the path to a folder or file and paste the selected path into the console.
Command line bonus
When left-clicking on the command line, ConEmu attempts to move the cursor to the click position. And Ctrl + BackSpace deletes the word to the left of the cursor.
Hyperlinks and compilation errors
ConEmu can open hyperlinks in the default browser (ShellExecute) and links to compilation errors in the editor. While holding Left Ctrl, left-click on the hyperlink
www...
or on the file with the error test.c(50): error: ...
.Font
Tab “Main”. You can choose any font: monospaced or proportional, raster or vector, with anti-aliasing turned on or off (Clear Type, Standard, None). The proportional font in the console looks a little strange, but if you want, you can turn off the “Monospace” checkbox.
I would also like to note that ConEmu can use not only the fonts installed in the system. Just copy the desired font files (fon, ttf, otf, and monospaced bdf are supported) to the ConEmu folder and restart the program. New fonts will appear in the list of “Main” fonts available on the settings tab. Do not copy too many fonts - their processing can take a considerable time at the start of the program. Registration of "local" fonts can be disabled on the "Features" tab with the "Auto register fonts" flag.
To display pseudographics (frames in Far Manager, etc.), you can configure a separate font. In some fonts used as the main frame, they are unsympathetic.
Sometimes you need to quickly change the font size. This can be done without opening the settings window - hold down the Ctrl key and turn the mouse wheel.
Quake / tilda
The ConEmu game console-style challenge is available out of the box. Open the “Main” tab and turn on the “Quake style slide down” checkbox. If desired, turn on “Auto – hide on focus lose” in the same place. If the frame is not needed at all - in the "Frame width" field, put "0" instead of "-1" ("-1" - show the frame in full). Here you can also adjust the indentation of the console field from the edges of the ConEmu window - turn on “Center console in ConEmu workspace” and select the number of pixels in the “Pad size”.
The “on top of all windows” mode can be enabled on the “Appearance” tab with the “Always on top” checkbox.
Does the ConEmu window show on the taskbar? Open the tab “Task bar” and select the desired options. By default, in Quake mode, when minimizing (hiding) the window is hidden in the TSA (taskbar status area - the area next to the watch), this is the option “Auto minimize to TSA”. And in order not to show the icon in the taskbar at all, click the “Don't show ConEmu window on Taskbar” radio button and turn on “Always show TSA icon” so as not to lose ConEmu.
Activation key There can be two of them (this is how everything is launched on some keyboard layouts). Open the tab “Keys & Macro” and at the very beginning of the list we see “Minimize / Restore” and “Minimize / Restore (alternative)”. You can select any key combination (the default is Ctrl + ~), but keep in mind that this combination is registered as a global hotkey in the system with all the consequences. For example, some combinations may already be reserved by the system or other applications.
Hide key. The same as the activation key, but in addition the ConEmu window can be hidden simply by pressing the Esc key. Open the tab "Task bar" and in the group "Minimize ConEmu by Esc" select the option "Always". There is also a flag “Map Shift + Esc to Esc” so that you can still send the Esc key to the console if necessary.
The size (height) of the window can be changed. Move your mouse over the frame (or the place where it should be), wait a couple of seconds, and the window will display the usual resizable frame that you can drag with the mouse.
Windows 7 taskbar
Support Jump List. After creating your list of tasks on the Tasks tab, enable the Add ConEmu tasks to taskbar check box and click the Update Now button.

Display progress on the taskbar.

Background picture
If you don’t like the dull black window, you can replace the background with a picture or a solid color. Background replacement is performed for the selected color indices - the “Replace color indexes” field. By default, the field is set to "*" - auto-selection, but if, for example, you need to replace the background for dark green (the palette can be viewed on the "Colors" tab), enter "# 2" instead of "*". The background image is indicated in the "Path" field (bmp, jpg, png files), but in this field you can also specify a solid color, for example, "48 10 36" to get the background color of the terminal in Ubuntu. If the picture is too bright - it can be extinguished with the "Darkening" slider.
Another option for Far Manager users is to set the background color from Far plugins. There was already an article on Habré "". The plugin described there is outdated and does not work in current versions of ConEmu, but the same functionality is implemented by the ConEmu Background plugin. To enable panel coloring, open the“ Plugins configuration ”list in Alt Manager (Alt + Shift + F9 in panels), select the plugin“ ConEmu Background ”and enable the“ Enable plugin ”checkbox.
Auto update
ConEmu can update automatically if it was installed by the installer or deployed from a 7z archive. To update the 7z-archive, an installed 7zip or WinRar archiver is required. On the “Update” tab you can select the update options: check at startup or hourly; show a dialog with a message about the new version or just a notification in the TSA; be updated to the latest or only to a stable version; proxy server settings; path to store downloaded versions, etc.
Color palettes
On the “Colors” tab, you can select one of the predefined color schemes (Solarized, Standard VGA, PowerShell, xterm, etc.) or customize your color scheme. You can save the configured scheme: enter a name in the “Schemes” field and click the “Save” button.
The standard 16-color palette is not always enough, but ConEmu has two options for expanding the color space.
Extend foreground colors
Due to the loss of one background color index in ConEmu, you can configure an additional 16 colors for the text. For example, to prompt the command line, you can specify a bright red background color, select its index in the drop-down list (# 12) and adjust the color palette with indexes 16..31. After that, the text will be displayed in the colors of the palette 16..31, and the background color (bright red) will be replaced with the surrounding one (most likely it will be black).
Read more here .
TrueColor
The dull 16-color console palette bothered the developer of the Colorer plugin for the Far Manager editor and Colorer TrueMod appeared. As a result, the console editor shone with new colors, and color information was stored in SharedMemory in addition to the console itself. In addition to colors, it became possible to use Bold / Italic / Underline fonts for sections of text.
In Far 3.0, TrueColor support has become native, and advanced attributes (24 bits per color and Bold / Italic / Underline) can be configured for any interface element. Who said that the headlight does not have enough colors to highlight groups of files?
The option can be disabled on the “Colors” tab with the “TrueMod (24bit color) support” flag. Disabling it saves some megabytes of memory.
ANSI X3.64
Escape sequences can be used in * nix terminals , and even in DOS they were available with the standard ANSI.SYS driver. In the Windows terminal, they decided to forget about them, although there are several programs that allow using ANSI in Windows, for example ANSICON .
ConEmu has built-in ANSI X3.64 support. To do this, the “Inject ConEmuHk” and “ANSI X3.64” checkboxes on the “Features” tab must be enabled. A complete list of supported codes in ConEmu ANSI codes .
With ANSI, you can not only output colored text. For example, in the tab header you can display the current directory in cmd .
ConEmu Window Transparency
If desired, on the “Transparency” tab, you can adjust the transparency of the ConEmu window. You can select different transparency values for the active and inactive windows. For example, ConEmu may completely “disappear” from the screen when focus is lost if the transparency slider for the inactive window is moved to the far left.
If you have not disabled the status line, then the current transparency value in percent may be displayed in it (the list of displayed “columns” of the status line is also configured). When you click on a column with transparency, a menu pops up in which you can quickly change the transparency coefficient or turn it off.
Tabs
When working with multiple consoles at the same time or when working with editors and viewers in Far Manager (the ConEmu plugin must be loaded in Far), the tabs greatly simplify life. In addition, the tab title shows the progress of the operation in percent (copying, unpacking archives, chkdsk, progress in PowerShell, etc.).
The “Shield” icon is displayed in the tab if this console is running in administrator mode.
The displayed text can be configured according to a template, for example, you can show the name and PID of the active process, the serial number of the console, the title of the console window, the name of the file being edited or viewed in Far Manager, a sign of changes in the editor.
If cmd.exe is running in administrator mode, it displays the prefix “Administrator:” in the title bar of the console window. ConEmu can discard this redundant information.
If you don’t need tabs, you can completely disable them or enable auto-display when more than one tab appears.
Switching between tabs is also customizable. The standard combinations are Ctrl + Tab and Ctrl + Shift + Tab. The “Recent mode” mode enabled by default allows you to sort through the tabs in the order of their activation. When the “Lazy tab switch” is on, the actual tab will switch when you release the Ctrl key. And before releasing the Ctrl key, tabs can also be switched with the Left / Right arrows.
Tabs can be activated by the console number, which can be shown in the tab header. By default, a combination of Win + number is suggested (the “Install keyboard hooks” and “Win + Number - activate console” checkboxes on the “Controls” tab should be enabled). That is, Win + 1 activates the first console, Win + 2 - the second, etc. If more than 9 consoles are open, then you need to press two digits in succession while holding down the Win key, for example, “Win + 2.4” activates the 24th console (and who needs so many of them?). If editors / viewers in Far Manager are open, then the Win + digit will iterate over them sequentially (the “Host-Key + Number iterates Far windows” flag).
Instead of the “Win” key, you can select any other combination of modifier keys, for example Ctrl + Shift or Apps. Go to the “Keys & Macro” tab and scroll through the list of keys to “Activate console by number”. You can select any three modifier keys.
Status line
It is disconnected and configured at will. A large number of columns are available, such as the name and PID of the active process, the coordinates of the visible area and cursor, the ID of the current keyboard layout, CAPS / NUM / SCROLL statuses, the number of the active console, transparency coefficient, etc. You can click on many columns to change them.
ConEmu Here
On the Integration tab, you can configure the context menu for Windows Explorer and set ConEmu as the default terminal for launching console applications.
"ConEmu Here" and "ConEmu Inside." You can create an unlimited number of menu items to launch different shells (cmd, powershell, bash, SDK, etc.) Enter a command in the “Command” field, give the menu item the corresponding name in the “Menu item” field, optionally specify the path to the icon displayed in the menu (does not work in WinXP) and click the "Register" button. A list of previously registered items is displayed in the “Menu item” drop-down list.
The difference between ConEmu Inside and ConEmu Here is that the terminal will be launched as part of the Windows Explorer (Inside) window.
ConEmu can be used as a plugin in other programs. To do this, specify the window handle in which ConEmu should be placed and the command that it should execute. For instance:
ConEmu.exe /insidewnd 0x13A40 /cmd powershell.exe
Default terminal
ConEmu can replace a standard Windows terminal, launch from the Windows SDK Command Prompt shortcut, launch ipconfig / all from the Win + R dialog, launch console applications from TotalCmd, debug console programs in Visual Studio - everything can be intercepted and launched in ConEmu.
How it works: on the “Integration” tab, specify the list of processes into which the ConEmuHk.dll library will be loaded (for example, “explorer.exe | devenv.exe | totalcmd.exe”) and enable the “Force ConEmu as default terminal” checkbox as well , if desired, "Register on OS startup". In these processes, the CreateProcessA, CreateProcessW, WinExec functions will be intercepted to launch the console application in ConEmu.
IDE style
It has already been said above about running any commands from the jump list . For example, to build ConEmu, I made a cmd file that configures the SDK environment and runs nmake or devenv.com.

The key "/ single" in the field "Task parameters" indicates to use one instance of ConEmu (launch in a new tab). The "-new_console: c" key in the command text is analogous to the "pause" in cmd so that the console does not close after compilation is complete.
In case of compilation errors (the compiler output is saved in the Error.log file), the script that
TypeBuildErrors.cmd "%~dp0Errors.log"
highlights the lines with error information in red font is called , and the warnings in blue. Having corrected the errors in the Far Manager editor, you can restart the compilation - Win + ~ (the default hotkey for restarting the tab).App distinct
Here you can change some options depending on the process in the console.
For example, for PowerShell running in admin mode, set your palette.
Here you will also have the opportunity to set your own background image (they have been asking for a long time, but not yet ready).
Keys & Macro
Here you can see a list of all the key combinations used in the program. A quick way to open this tab is Win + Alt + K.
It is also possible to set a number of user actions through GuiMacro . For example to assign Ctrl + D out of the current shell:
print("exit\n")
.Far manager
Integration with Far is a topic for a separate article. It is important that the ConEmu plugin is loaded in Far (that is, the “ConEmu” item is visible in the F11 list from the panels).

A short list of features.
- Drag&Drop файлов из панелей в другие приложения;
- щелчок правой кнопкой мышки помечает файлы, а длинный щелчок (удерживайте правую кнопку мышки >1 секунды) открывает графическое EMenu;
- панели можно двигать мышкой
- в плагине Unicode CharMap символы отображаются соответствующим шрифтом;
- файлы в панелях можно отображать в режиме Tile и Thumbnail;
- поддержка тачскринов, например прокрутка двумя пальцами, жест zoom, длинный тап по кейбару открывает меню (Alt/Shift/Ctrl/Fn).
Вкладка Debug
Basically a tab for catching bugs. But it may be of interest to users.
For example, when you select the Shell radio button, ConEmu shows the processes launched in the console and the loaded dlls. Almost the same thing can be seen in ProcessMonitor, but there is a bonus - when compiling the VC projects, cl.exe and link.exe are launched not with keys but with the batch-file parameter. ConEmu will show the contents of this file.
Miscellaneous
Win + A or the button on the toolbar - freeze the console (pause).
Right-clicking on the cross in the window title hides ConEmu in the notification area (Taskbar status area).
The scrollbar is hidden by default and appears when you mouse over the right edge of the console. When working in Far Manager, the mouse wheel is usually processed by Far itself (scrolling through panels, menus, etc.), but when you hover over the scroll bar, the wheel scrolls the console.
Search for text - Apps + F or from the “Edit” menu, “Find text” item. We can search all over the console, but for this the console should be frozen (Freeze console).

You can show the "real" console with the combination of Ctrl + Win + Alt + Space.
Conclusion
It would seem that not much is needed from the terminal, but work on ConEmu is far from complete and plans to implement many features. For example, the "infinite" buffer (now limited to 9999 lines of the "real" console), full support for xterm 256 colors, horizontal scrolling, snippets, optimization, etc.
And, of course, the documentation. There is simply not enough time to maintain the relevance of the wiki , some pages are awaiting translation, and many features are described only in WhatsNew.
Updated
The official website has moved to http://conemu.github.io .