A cross-platform desktop application for executing commands through a user-friendly interface. Built with Vue, TypeScript, Photino, and ASP.NET Core.
- Download the appropriate installer for your platform from Releases
- Install and launch the application
- Create a profile and add your first command
- Execute commands with a click
Execute commands across multiple directories simultaneously.
Main application interface showing command execution across multiple directories
Focus mode provides a distraction-free interface for intensive command execution sessions, hiding unnecessary UI elements.
Compact mode minimizes the interface for better focus during command execution
Create and manage command profiles with custom settings, environment variables, and execution parameters.
- Import profile files directly from JSON
- Reorder profiles and commands with drag-and-drop in the profile manager
Comprehensive profile configuration with environment variables and command settings
Works seamlessly on Windows, Linux, and macOS with native file dialogs and platform-specific optimizations.
Easily switch between working directories with a user-friendly selector.
Run commands across multiple subdirectories recursively with configurable depth and error handling options.
See command output in real time while commands are still running, including iterative runs across directories.
Built-in dark and light themes for comfortable viewing in any environment or lighting condition.
- Keyboard Shortcuts: Use keys to select and execute commands
- Multiple Execution: Combine commands and run them together
- Multiple Directories: Add multiple directories to a command for quick switching
Desktop installers include the API backend and start it automatically when the app launches. You should not need to manually run the API in normal desktop usage.
Downloads are plain archives (not installers) β extract and run. There's no auto-update yet, so re-download from Releases for new versions.
- Download the latest
CommandRunner-linux-x64.tar.gzfrom the Releases page - Extract it:
tar xzf CommandRunner-linux-x64.tar.gz -C CommandRunner && cd CommandRunner - Make the binary executable:
chmod +x CommandRunner.Desktop - Run it:
./CommandRunner.Desktop
Requires libwebkit2gtk-4.1-0 (or libwebkit2gtk-4.0-37 on older distributions) β this is a system dependency and is not bundled, the same as any WebKitGTK-based desktop app. Install it via your distro's package manager if the app fails to start.
- Download the latest
CommandRunner-win-x64.zipfrom the Releases page - Extract the zip anywhere
- Run
CommandRunner.Desktop.exe
Requires the WebView2 Runtime, which is preinstalled on Windows 11 and delivered via Windows Update on Windows 10.
Note: Windows may handle built-in shell commands differently to other platforms. For example, to run 'dir' you can use 'cmd' as the executable and shell, with '/c dir' as the arguments.
- Download the latest
CommandRunner-osx-x64.zipfrom the Releases page - Extract the zip
- Run
CommandRunner.Desktop
Command Runner stores user profiles and settings in the following locations:
- Windows:
%APPDATA%\CommandRunner\(typicallyC:\Users\<username>\AppData\Roaming\CommandRunner\) - Linux:
~/.config/CommandRunner/(or fallback to the application directory if not accessible) - macOS:
~/Library/Application Support/CommandRunner/
Profile data is stored as JSON files in these directories and persists between application sessions.
- Node.js 18+ and npm
- Git
- .NET 10.0 SDK (for API/backend projects)
-
Clone the repository:
git clone https://github.com/GitHub-Kieran/command-runner.git cd command-runner -
Start the app from VS Code (recommended)
- Select launch config:
Command Runner Desktop (Photino) - This starts the Vite dev server, then launches the Photino desktop host pointed at it
- Select launch config:
-
Alternative manual start (two terminals)
Vue dev server:
cd src/CommandRunner.Website.VueJs npm install npm run devRuns at
http://localhost:5174with hot reloading.Desktop host (hosts the API itself β no separate API process needed):
dotnet run --project src/CommandRunner.Desktop
In
DEBUGbuilds this loads the Vite dev server above instead of a built static bundle, so UI changes hot-reload.
cd src/CommandRunner.Website.VueJs && npm run build # must run first -- populates CommandRunner.Desktop's wwwroot
dotnet publish src/CommandRunner.Desktop -c Release -r linux-x64 --self-contained true -o publish/linux
# or win-x64 / osx-x64The published output is a self-contained folder β zip or tar it up for distribution. See .github/workflows/photino-build.yml for the exact commands CI uses per platform.
You can import ready-to-use profile files from examples/profiles:
Import flow:
- Open Settings
- Select Import Profile
- Choose one of the JSON files above
Coming soon...
src/
βββ CommandRunner.Website.VueJs/ # Vue frontend
β βββ src/ # Vue application source
β βββ package.json # Frontend dependencies and scripts
βββ CommandRunner.Api/ # ASP.NET Core API β vertical feature slices; owns models,
β # repositories, business services, controllers, and DTOs
βββ CommandRunner.Desktop/ # Photino host: serves the API + Vue's built static files
β # from one process, then opens a native webview window
βββ CommandRunner.Console/ # Console application
App won't start on Linux:
- Install
libwebkit2gtk-4.1-0(orlibwebkit2gtk-4.0-37on older distributions) via your package manager - If the window opens but stays blank/white, this is a known WebKitGTK rendering issue under virtualized/software-rendered GPUs (e.g. VirtualBox VMs) β should already be worked around automatically; if it recurs, see the note in
CLAUDE.md
API connection errors:
- The desktop app hosts its own API internally on an OS-assigned port β there's nothing to configure
- If running the API standalone in development, check it's listening (
cd src/CommandRunner.Api && dotnet run, defaulthttp://localhost:5085) and check firewall settings
Build issues:
- Ensure .NET 10.0 SDK is installed
- Clear node_modules:
rm -rf node_modules && npm install - Make sure
npm run buildhas been run insrc/CommandRunner.Website.VueJsbefore buildingCommandRunner.Desktopβ otherwise it publishes with no bundled UI
Permission issues:
- On Linux/macOS:
chmod +x CommandRunner.Desktopafter extracting - On Windows: Run as administrator if needed
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin feature/your-feature - Submit a pull request
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information about your problem
- Include your operating system, app version, and steps to reproduce
See Releases for the latest changes and version history.
[x] Claude.md [x] Convert to VueJs [x] Convert to Vertical Architecture [x] Remove old React/Electron version and build pipeline [x] Fix windows unit test failures

