A utility program allowing to register an extension (eg. .sh
) to be
executed in Cygwin by double-clicking a file from Windows File Explorer
or by dragging and dropping files to an icon of a registered extension.
You can use any scripting language installed on your Cygwin.
Just define the preferred shebang line, eg. #!/usr/bin/python3
Install cygextreg
via Cygwin setup.
To install manually, download the latest version for 32-bit (i686) or 64-bit (x86_64) Cygwin installation. Extract the contents of a zip to the root of your Cygwin directory.
Install Cygwin packages:
gcc-g++ make automake autoconf
Get the source:
git clone https://github.com/sop/cygextreg.git
Prepare environment:
aclocal && autoheader && automake --add-missing && autoconf
Compile and install:
./configure && make && make install-strip
Register default (.sh
) filetype:
cygextreg -r
Default is to register only for the current user. To register for all
users, use cygextreg -ra
. Note that this prompts for an elevated process.
To unregister default filetype:
cygextreg -u
To register another filetype (eg. .bash
), pass the extension
as an --ext
argument:
cygextreg -r --ext bash
Scripts are executed with bash in an interactive login shell.
This means that your ~/.bash_profile
will be executed first, which usually
sources ~/.bashrc
as well. This way you can alter your environment,
eg. by modifying the $PATH
variable.
Bash is started in a MinTTY terminal with UTF-8 charset.
All arguments that are Windows style paths are automatically converted to
Cygwin equivalents (/cygdrive/...
). So if you drag and drop a file to
a script icon, the script receives the dropped file's path in Cygwin format
as a first argument.
Multiple files can be dragged and dropped to a registered file type.
The script receives paths as separate arguments,
eg. $1
, $2
, $3
, etc. (or $@
) in bash script or sys.argv[1:]
in Python.
If the executed script exits with a non-zero code, MinTTY window shall be kept open so that you have a chance to review the output. If the script succeeds (exits with code 0), MinTTY window is closed automatically.
This project is licensed under the MIT License.