Skip to main content

๐Ÿ’  Plugin - Shell

โ† Back to Plugins

Executes shell commands and manages named command shortcuts (favorites).

Keywords: shell ยท / ยท * (global โ€” active on every search) - Edit in Plugins.json

๐Ÿ“œ Default Shell - default_shell.jsonโ€‹

Controls which shell is used when no per-entry override is set.

{
"default_shell": "cmd",
"default_icon": "",
"extra_shells": {}
}
KeyValuesDescription
default_shell"cmd", "pwsh", "powershell", or any key from extra_shellsShell used by default
default_icon"" or absolute path to an imageCustom icon for all Shell results. Leave empty to use the bundled terminal icon.
extra_shellsobject โ€” see belowDefine custom terminal emulators

Changes to default_shell.json take effect after restarting InputBar.

Custom terminal emulators (extra_shells)โ€‹

Define any terminal by giving it an alias and specifying how to launch it.
The user command is appended as the last argument.

"extra_shells": {
"wezterm": ["wezterm.exe", "start", "--", "cmd.exe", "/k"]
}

This runs: wezterm.exe start -- cmd.exe /k <your_command>

To use WezTerm as your default shell:

{
"default_shell": "wezterm",
"extra_shells": {
"wezterm": ["wezterm.exe", "start", "--", "cmd.exe", "/k"]
}
}

You can also use extra shell names as per-entry overrides in favorites.data:

fastfetch=wezterm fastfetch

โญ Favorites - favorites.dataโ€‹

Define named shortcuts for shell commands.

# favorites.data

# Format: key=command
# key โ€” the name you search for in InputBar
# value โ€” the shell command to run (optionally prefixed with a shell name)

fastfetch=fastfetch
btop=btop
showFolder=ls "C:\My\Path\"
myscript=python C:\My\Path\script.py --arg
colorpicker=C:\Scripts\Utils\ColorPicker.pyw
  • Lines starting with # are comments and are ignored.
  • Keys are case-insensitive.
  • Search is fuzzy: typing fast will match fastfetch.

Per-entry shell overrideโ€‹

Prefix any entry's value with a shell name to override the default shell for that specific command:

btop=cmd btop # runs btop in cmd, regardless of default shell
fastfetch=pwsh fastfetch # runs fastfetch in PowerShell 7
viewer=wezterm btop # runs btop in WezTerm (defined in extra_shells)

Supported built-in prefixes: cmd, pwsh, pwsh.exe, powershell, powershell.exe
Custom prefixes: any key defined in extra_shells inside default_shell.json.

โšก Direct shell commandsโ€‹

Any input that looks like a shell command is automatically detected and can be run directly, without defining a favorite first:

python C:\scripts\myscript.py --verbose
git status
C:\tools\mytool.exe --flag

You can also prefix with a shell name inline:

cmd btop
pwsh Get-Process | Sort-Object CPU -Descending

Explicitly prefixing with shell or / always works for any command โ€” including ones that wouldn't be auto-detected:

shell fastfetch โ†’ runs fastfetch in your default shell
/ fastfetch โ†’ same thing, shorter
/ htop โ†’ runs htop

Detection rules (global mode)โ€‹

An input is recognized as a shell command without the shell prefix if it matches:

RuleExampleNote
Contains \ and at least one letter/digitC:\tools\mytool.exeLone \ does not trigger
Contains / and at least one letter/digit./myscript.shLone / does not trigger
Starts with a known CLI prefix and has at least one argumentgit status, python script.pyBare git alone does not trigger

If you want to run any arbitrary command, just type shell <command> or / <command> โ€” the keyword bypasses detection and always offers it as runnable.

Recognized CLI prefixes:

python python3 node npm npx git pip pip3 cargo go java dotnet ruby perl bash sh pwsh powershell cmd code nvim vim

๐ŸŒ  Custom Iconโ€‹

The Shell plugin uses a bundled terminal icon (Plugins/Shell/shell.svg).
To use a custom icon, set an absolute path in default_icon inside default_shell.json.

๐Ÿ’ก Examplesโ€‹

Open a folder in Explorerโ€‹

# favorites.data
projects=explorer C:\Dev\Projects
downloads=explorer %USERPROFILE%\Downloads

Type proj โ†’ Enter โ†’ Explorer opens directly on the folder.


Run a command and keep the window open (default behavior)โ€‹

The default shells (cmd, pwsh) always keep the window open after the command finishes so you can read the output.

# favorites.data
gitlog=git log --oneline -20
sysinfo=systeminfo
ipinfo=ipconfig /all

The terminal stays open โ€” scroll, copy, done.


Auto-close the window when the command succeedsโ€‹

By default cmd /k keeps the window open. Define an autoclose shell using cmd /c instead โ€” the window opens, runs the command, and disappears immediately.

default_shell.json:

{
"default_shell": "cmd",
"extra_shells": {
"autoclose": ["conhost.exe", "--", "cmd.exe", "/c"]
}
}

favorites.data:

# Opens, runs, closes automatically
npminstall=autoclose npm install
gitpull=autoclose git pull

Use cmd /c for commands where you don't need to read the output afterward.


Run a command completely hidden (no window at all)โ€‹

For background tasks where you don't want any visible terminal, use PowerShell's -WindowStyle Hidden:

default_shell.json:

{
"default_shell": "cmd",
"extra_shells": {
"silent": ["powershell.exe", "-WindowStyle", "Hidden", "-NonInteractive", "-Command"]
}
}

favorites.data:

# Runs silently in the background โ€” no window, no flash
gitadd=silent git -C C:\Dev\MyProject add .
backup=silent robocopy C:\Dev\MyProject D:\Backup\MyProject /MIR /NFL /NDL
syncnotes=silent python C:\Scripts\sync_notes.py

Type gitadd โ†’ Enter โ†’ nothing appears, git add . runs and exits cleanly.

Useful for fire-and-forget tasks (backups, syncs, silent git operations).


Git quick-commit in one shotโ€‹

Chain multiple commands with && so they run in sequence โ€” if one fails, the chain stops.

# favorites.data
# Opens a cmd, stages everything, commits with a fixed message, pushes, then closes
quickpush=autoclose git -C C:\Dev\MyProject add . && git -C C:\Dev\MyProject commit -m "wip" && git -C C:\Dev\MyProject push

Or keep the window open to see each step:

gitdeploy=git -C C:\Dev\MyProject add . && git -C C:\Dev\MyProject commit -m "deploy" && git -C C:\Dev\MyProject push

Launch a script and auto-close on success, stay open on errorโ€‹

Use cmd /c combined with a pause on error โ€” the window disappears on success but stays visible if something goes wrong:

# favorites.data
runbuild=autoclose python C:\Dev\MyProject\build.py || pause

|| means "run pause only if the previous command failed" โ€” you see the error, press Enter, window closes.


Open a terminal in a specific directoryโ€‹

cd /d changes drive and directory before running your shell:

default_shell.json:

{
"extra_shells": {
"here": ["conhost.exe", "--", "cmd.exe", "/k", "cd /d"]
}
}

favorites.data:

devterm=here C:\Dev\MyProject
scripts=here C:\Scripts

Type devterm โ†’ a terminal opens already positioned in C:\Dev\MyProject.