71 / scoop-better-shimexe

A better shim.exe file for Scoop.
MIT License
72 stars 29 forks source link

shim.c

shim.c is a simple Windows program that, when started:

  1. Looks for a file with the exact same name as the running program, but with the extension shim (e.g. C:\bin\foo.exe will read the file C:\bin\foo.shim).
  2. Reads and parses the files into a Scoop shim format.
  3. Executes the target executable with the given arguments.

shim.c was originally made to replace Scoop's shim.cs since it had several important flaws:

  1. It was made in C#, and thus required an instantiation of a .NET command line app everytime it was started, which can make a command run much slower than if it had been ran directly;
  2. It did not handle Ctrl+C and other signals correctly, which could be quite infuriating (and essentially killing REPLs and long-running apps).

shim.c is:

Note: This project is not affiliated with Scoop.

Installation for Scoop

An additional script, repshims.bat, is provided. It will replace all .exes in the user's Scoop directory by shim.exe.

Example

Given the following shim gs.shim:

path = C:\Program Files\Git\git.exe
args = status -u

In this directory, where gs.exe is the compiled shim.c:

C:\Bin\
   gs.exe
   gs.shim

Then calling gs -s will run the program C:\Program Files\Git\git.exe status -u -s.

Shim format

Shims follow the same format as Scoop's shims: line-separated key = value pairs.

path = C:\Program Files\Git\git.exe
args = status -uno

path is a required value, but args can be omitted. Also, do note that lines must end with a line feed.

License

SPDX-License-Identifier: MIT OR Unlicense