Skip to content

Instantly share code, notes, and snippets.

@magthe
Created September 11, 2014 06:56
Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save magthe/a60293fe395af7245a9e to your computer and use it in GitHub Desktop.
Save magthe/a60293fe395af7245a9e to your computer and use it in GitHub Desktop.
MSYS2 "Open Here" registry settings
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\open_msys2]
@="Open MSYS2 here"
[HKEY_CLASSES_ROOT\Directory\Background\shell\open_msys2\command]
@="c:\\msys64\\usr\\bin\\mintty.exe /bin/sh -lc 'cd \"$(cygpath \"%V\")\"; exec bash'"
[HKEY_CLASSES_ROOT\Folder\shell\open_msys2]
@="Open MSYS2 here"
[HKEY_CLASSES_ROOT\Folder\shell\open_msys2\command]
@="c:\\msys64\\usr\\bin\\mintty.exe /bin/sh -lc 'cd \"$(cygpath \"%V\")\"; exec bash'"
@Salamandar
Copy link

Salamandar commented Feb 9, 2017

Hmmm, I got a way simpler solution.

 E:\msys64\mingw64.exe /bin/sh -c 'CHERE_INVOKING=1 $SHELL'

I removed -l because it was losing the current path.
I need $SHELL, as I'm using Zsh.

@fangly
Copy link

fangly commented Mar 30, 2017

With the exec bash solutions above, I always had the following error:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell

Based on the content of msys64/mingw64_shell.bat and these Mintty tips, I came up with a working solution. This is for a MinGW64 Bash shell only:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw]
@="Open MinGW here"
"Icon"="C:\\msys64\\msys2.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw\command]
@="C:\\msys64\\usr\\bin\\mintty -i /msys2.ico --dir \"%V/\" /bin/env MSYSTEM=MINGW64 CHERE_INVOKING=1 /usr/bin/bash -l"

[HKEY_CLASSES_ROOT\Directory\shell\mingw]
@="Open MinGW here"
"Icon"="C:\\msys64\\msys2.ico"

[HKEY_CLASSES_ROOT\Directory\shell\mingw\command]
@="C:\\msys64\\usr\\bin\\mintty -i /msys2.ico --dir \"%1/\" /bin/env MSYSTEM=MINGW64 CHERE_INVOKING=1 /usr/bin/bash -l"

Note that both right-clicking on the background or on the icon of a folder triggers the action.

@makefile
Copy link

makefile commented Dec 4, 2017

The above doesn't work for me,for I use Cygwin64,the following works fine.And I use exec bash to replace the parent shell.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_mingw64]
@="Cygwin Here"
"Icon"="\"D:\\cygwin64\\Cygwin-Terminal.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_mingw64\command]
@="d:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; exec bash'"

[HKEY_CLASSES_ROOT\Folder\shell\open_mingw64]
@="Cygwin Here"
"Icon"="\"D:\\cygwin64\\Cygwin-Terminal.ico\""

[HKEY_CLASSES_ROOT\Folder\shell\open_mingw64\command]
@="d:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; exec bash'"

@hiptkang
Copy link

hiptkang commented Dec 1, 2018

For some users...

registry file

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64]
@="MinGW &64 Bash Here"
"Icon"="\"C:\\msys64\\msys2.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64\command]
@="C:\\msys64\\msys2_shell.cmd -mingw64 -where \"%V/\""

[HKEY_CLASSES_ROOT\Directory\shell\mingw64]
@="MinGW &64 Bash Here"
"Icon"="\"C:\\msys64\\msys2.ico\""

[HKEY_CLASSES_ROOT\Directory\shell\mingw64\command]
@="C:\\msys64\\msys2_shell.cmd -mingw64 -where \"%V/\""

@Mattiwatti
Copy link

The command lines from @MacGyver27's .reg file worked fine for me so I didn't need to modify it. But here are some things to add that people may want to change to the above files:

  • If you add a key to HKEY_CLASSES_ROOT\Directory\shell, the menu item will be displayed when you right click on a folder in explorer. If you add a key to HKEY_CLASSES_ROOT\Directory\Background\shell, the menu item will be displayed when you right click on an empty area in a folder in explorer. If you add a key to HKEY_CLASSES_ROOT\Drive\shell, the menu item will be displayed when you right click on a drive. You may or may not want to add all three.
  • If your context menu is too cluttered you may want to enable the item for SHIFT+right clicks only. In this case you should add the following:
[HKEY_CLASSES_ROOT\xxx\shell\<msys2|mingw32|mingw64>]
"Extended"=""
"ShowBasedOnVelocityId"=dword:00639bc8

@ceremcem
Copy link

ceremcem commented Aug 6, 2020

For those who want make's autocompletion to work, replace the /command lines with this command, as applied in here.

@Hexlord
Copy link

Hexlord commented Sep 20, 2020

For some users...

registry file

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64]
@="MinGW &64 Bash Here"
"Icon"="\"C:\\msys64\\msys2.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\mingw64\command]
@="C:\\msys64\\msys2_shell.cmd -mingw64 -where \"%V/\""

[HKEY_CLASSES_ROOT\Directory\shell\mingw64]
@="MinGW &64 Bash Here"
"Icon"="\"C:\\msys64\\msys2.ico\""

[HKEY_CLASSES_ROOT\Directory\shell\mingw64\command]
@="C:\\msys64\\msys2_shell.cmd -mingw64 -where \"%V/\""

The only option that worked for me with fresh MSYS2, thank you so much

@wswind
Copy link

wswind commented Nov 2, 2021

C:\\msys64\\msys2_shell.cmd -mingw64 -here works for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment