While reading more to understand how the .lua files work, I found an old, unmerged PR from David Smith which is exactly what I've been looking for. This essentially adds back the functionality of listing the python venv before the lambda prompt, which is present in cmder by default, but these custom .lua files removed. I've also updated some of the settings to display my preference by default.
I recently found the original repo while looking to customize cmder on my personal machine. Everything seemed to be fine, but I realized that if you are using a Python venv, the repo that I found didn't list the active venv (something that vanilla cmder does). In the Status and Contributions section of this README, the link for Show active Python Virtual Environment appears that it would work with the Python module virtualenv. However, I wanted something that would work with the standard library module venv. Additionally, the link for Add Python's VENV support goes to an outdated and non-merged PR on the original repo.
The original repo also looks like it has not been maintained in multiple years. I forked from Thomas Norris's repo as it looks like he made a great edit regarding the git folder name and fixed some other issues from the original repo that were sitting in PR's.
My main goal is to create an add-on so that the Python venv is listed when one is activated. Below, you will find the original README file.
This is a custom prompt for Cmder (the alternative console emulator for Windows). There's also a PowerShell version of this prompt.
It looks like this:
The prompt has multiple segments:
- Folder: in blue. Displays the folder name, or full path. Replaces the user's home folder with a tilde (~).
- npm: in teal. If it detects an npm package, it displays the package name and version number.
- Git: in green or yellow. If it detects a Git repo, it displays the branch name. A green color is used if no changes are detected. A yellow color is used if changes are found.
In the screenshot, Fira Code font is used.
The look is inspired by Powerline for Vim, and Zsh's theme agnoster.
Download the AnonymousPro font
You'll be able to use any font in Cmder, but this font contains the symbols included in the prompt.
To use another font and still show symbols correctly:
- Go to Cmder Settings > Main
- Choose Main console font to be what you prefer
- Choose Alternative font to be Anonymice Powerline
- Modify the value of Unicode ranges to add:
E0A0; E0B0;
- for extra symbols set in
_powerline_config.lua
(like npm logo for node module or git project for smart path resolving) set the Alternative font to one of your choosing. - The Icomoon includes npm and git symbols. You might find nerd-fonts helpful as well.
- for extra symbols set in
- Save Settings
Download the .lua
files, and place it in %CMDER_ROOT%/config
folder.
Restart Cmder to load the prompt.
Alternatively, if you want to maintain link with the original repo, you can clone this repo into any folder
git clone https://github.com/AmrEldib/cmder-powerline-prompt.git git-repo-folder-name
then create a symbolic link from the %CMDER_ROOT%/config
folder to the .lua
file.
cd %CMDER_ROOT%/config
mklink /H powerline_core.lua <git-repo-folder-name>/powerline_core.lua
mklink /H powerline_prompt.lua <git-repo-folder-name>/powerline_prompt.lua
To add Git prompt, add the Git file
mklink /H powerline_git.lua <git-repo-folder-name>/powerline_git.lua
To add Configurations, create a file named _powerline_config.lua
that is a copy of the file _powerline_config.lua.sample
To add symbolic links across drives (from C drive pointing to D drive, for example), use PowerShell instead of mklink
.
new-item -path powerline_core.lua -itemtype symboliclink -value <path to repo folder>\cmder-powerline-prompt\powerline_core.lua
Config file is _powerline_config.lua
. This file isn't created by default to avoid overwrite on future updates.
A sample config file is included: _powerline_config.lua.sample
See the file _powerline_config.lua.sample
for full list and details of configurations.
Cmder Source Code and README
What is Clink
Clink Lua API
ANSI Color Sequence
Cmder configurations is stored in %CMDER_ROOT%\config\
You can add files to be loaded during startup in either of these folders
%CMDER_ROOT%\config\profile.d
%CMDER_ROOT%\config
Add a .ps1
file to be loaded for Powershell shells
Add a .bat
or .cmd
files to be loaded for Windows Command shells
Add a .sh
file to be loaded for Bash shells
User-specific configurations should go into files named user-profile
with extensions ps1
, cmd
/bat
, or sh
.
The file %CMDER_ROOT%\vendor\clink.lua
sets the command prompt. See the function set_prompt_filter
.
The prompt value is stored in clink.prompt.value
Drop .lua files into the %CMDER_ROOT%\Config
folder to customize the prompt.
I published this code because it's not nice to keep it to myself. I fix problems that I encounter, and try to fix problems that others encounter if I have time.
This code is provided with the timeless Works on my Machine guarantee.
You can also check out the pull requests page for contributions that didn't make back into this repo. These are fixes to problems I didn't encounter, or features not useful to me, but maybe useful to you.
Some of these contributions are:
People are very kind and contribute back fixes and improvements.
This section is to acknowledge their contributions and thank them. If you find their contributions helpful to you, please take the time to thank them directly.
- omniphx #2
- umar-ahmed #6
- tvercruysse #10
- igortg #24
- 0NG #27
- mattdkerr #29
- ivanjonas #32
- sp3c1 contributed the npm addon #33
- Bob Hood contributed the new Mercurial addon #40
I'd like to thank all who share their code with everyone for their time and effort.
This prompt uses an addon architecture to allow for additional functionality.
powerline_prompt.lua
is a good example for how to write an addon. The code is annotated and explains how to write a new addon.
To write a new addon, create a new lua
file in %CMDER_ROOT%/config
. Start a new tab in Cmder to see the effect of changes.