ScriptDeck: A Script Library and Launcher for Python and PowerShell

ScriptDeck is a single-file desktop tool that brings your collection of Python and PowerShell scripts together in one place. Instead of hunting through folders, editing command-line arguments from memory, or re-typing the same parameters every time you run a job, ScriptDeck gives you a graphical interface to register, organize, configure, and execute scripts without leaving a single window. It requires only Python 3.7 or later and nothing beyond the standard library — no pip installs, no virtual environments, no external dependencies.

Full disclosure: Scriptdeck was written with Claude AI, but was tested by a human.

Dual-Language Support: Python and PowerShell

ScriptDeck is not limited to Python scripts. It natively supports both Python (.py) and PowerShell (.ps1) files.

  • For Python scripts, ScriptDeck reads arguments defined with argparse, including argument names, types, defaults, help text, and whether each argument is required.
  • For PowerShell scripts, ScriptDeck parses the param() block, reads type annotations such as [string], [int], [bool], and [switch], extracts default values, and reads the .SYNOPSIS comment for a description.
  • Both script types get the same interface treatment: a parameter form is generated automatically, parameters can be saved, and scripts are launched with a single click.
  • Custom interpreter paths can be configured separately for Python and PowerShell, so you can point ScriptDeck at a specific python.exe, a virtual environment, or a particular version of pwsh.

Who Should Use ScriptDeck

ScriptDeck is a practical fit for anyone who maintains a personal collection of utility scripts and wants a low-friction way to manage and run them.

  • System administrators managing a mix of Python and PowerShell automation scripts can consolidate everything into a single library with logical groups.
  • Developers and data engineers who run the same scripts repeatedly with different inputs can use saved parameter sets and clones to avoid re-typing arguments.
  • Teams sharing a workstation can use groups and display labels to keep scripts organized by project or owner without renaming files.
  • Anyone who has ever opened a terminal, blanked on the exact arguments for a script they wrote six months ago, and scrolled back through shell history will appreciate having every script's parameters one click away.

Automatic Argument Introspection

One of ScriptDeck's most distinctive features is that it reads your scripts and figures out what arguments they accept without you having to describe them manually.

  • The detected arguments are presented as a form in the GUI, with appropriate input controls: text fields, checkboxes for boolean flags, and dropdowns for arguments that accept a fixed set of choices.
  • Arguments that look like file or directory paths automatically get a browse button for picking a location from a file dialog.
  • Required arguments are marked with an asterisk so they are easy to spot.
  • Hover tooltips display each argument's help text inline in the interface.

Saving Parameters

Re-entering the same arguments every time you run a script is tedious. ScriptDeck solves this by persisting your parameter values between sessions.

  • When you fill in arguments and click Save, those values are written to a saved_params.json file alongside the tool.
  • The next time you open ScriptDeck and select a script, the saved values are loaded back into the form automatically.
  • A “dirty” state indicator tracks unsaved changes. If you close the application with unsaved parameters, ScriptDeck prompts you to save before exiting.
  • Saved parameters also work from the command line: scriptdeck.py run <scriptname> launches a registered script with its saved parameter values applied.

Cloning Scripts

When you need to run the same script with different configurations, cloning gives you a clean solution without duplicating the actual file.

  • Right-clicking a script in the list and choosing Clone creates a new entry in the library that points to the same file on disk.
  • Each clone gets its own independent set of saved parameters.
  • Clones can be renamed to describe their purpose, and moved to any group independently from the original.
  • This is particularly useful for scripts that process different input folders, connect to different environments, or run with distinct presets — each scenario becomes its own named entry.

Grouping and Organization

If your library grows large, groups let you keep related scripts together and collapse sections you are not currently using.

  • Groups are created with the New Group button and appear as collapsible section headers in the script list.
  • Any script can be assigned to a group using Move to Group in the right-click menu. A checkmark indicates the script's current group.
  • Scripts can be returned to the ungrouped state at any time.
  • Groups can be collapsed and expanded by clicking their headers, keeping the list tidy when you only need to work with one category at a time.

Renaming Scripts and Groups

The names shown in the script list are display labels, not the filenames. This distinction lets you use human-readable names without touching the files themselves.

  • Any script entry can be renamed using Rename Label from the right-click context menu. The actual file path remains unchanged.
  • Groups can be renamed the same way, using Rename Group from the context menu when a group header is selected.
  • Renamed labels persist in the registry and are shown in the sidebar, tab headers, and status messages.

Running Scripts and Viewing Output

ScriptDeck runs scripts in subprocess and streams their output in real time.

  • Clicking Run launches the script with the current parameters in a dedicated output tab.
  • Multiple scripts can be run concurrently; each run opens in its own tab with an independent output stream.
  • Tab labels update with a pass or fail indicator once the script finishes, so you can tell at a glance which runs succeeded.
  • A Stop button terminates a running process at any time.
  • Scripts that prompt for user input during execution are supported: an input field appears below the output while the process is running, and keystrokes are piped to the script's stdin.
  • Output can be copied to the clipboard or saved to a text or log file directly from the output tab.
  • ANSI escape codes are stripped from output so the text displays cleanly even from scripts that use color formatting.

Command Preview and Clipboard Copy

Before running a script, you can see exactly what command will be executed.

  • The Command Preview bar at the bottom of the interface shows the full command string, including the interpreter, script path, and all current argument values assembled into their proper flags.
  • The preview updates live as you change parameter values.
  • A copy button places the full command on the clipboard so you can paste it directly into a terminal or a batch file.

CLI Mode

ScriptDeck can also be driven entirely from the command line, without opening the GUI.

  • scriptdeck.py add <script.py> — registers a script and reports how many arguments were detected.
  • scriptdeck.py remove <name> — removes a registered script by name.
  • scriptdeck.py list — prints all registered scripts with their paths and descriptions.
  • scriptdeck.py run <name> — executes a registered script using its saved parameters.

This makes ScriptDeck suitable for use in automated workflows or from within other scripts, in addition to interactive use.

Technical Notes

  • ScriptDeck stores all state in three JSON files — registry.json, saved_params.json, and settings.json — located in the same directory as the script. These are human-readable and easy to back up or share.
  • Window size, pane positions, and whether the window was maximized are restored between sessions automatically.
  • The tool migrates older registry files forward when new fields are added, so updating to a newer version of ScriptDeck does not require resetting your library.
  • No internet access is required. No telemetry. No installation step. Place scriptdeck.py anywhere and run it.
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading...

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail.