Skip to main content

A command-line tool to manage and play DOS games via DOSBox.

Project description

DOSCtl

A command-line tool to manage and play DOS games via DOSBox.

DOSCtl Screenshot

Installation

Requirements: Python 3.8+, DOSBox

# Install DOSBox
brew install dosbox          # macOS
sudo apt install dosbox      # Ubuntu/Debian

# Install DOSCtl
pip install dosctl
Other install methods
# From GitHub
pip install git+https://github.com/xesco/dosctl.git

# Development (editable)
git clone https://github.com/xesco/dosctl.git
cd dosctl
pip install -e ".[dev]"

Getting Started

  1. List games — the game catalog downloads automatically on first run:
    dosctl list
    
  2. Search for a game:
    dosctl search "Dune" --sort-by year
    
  3. Run a game by its ID. On first run, dosctl downloads, installs, and asks you to pick the executable:
    dosctl run <game-id>
    

Commands

Every game has a unique 8-character ID (shown in list/search output). Use it for all operations.

dosctl list

Lists all available games.

Flag Description
-s, --sort-by [name|year] Sort by name or year
-i, --installed Only show installed games

dosctl search <query>

Searches for games. Query is optional if --year is used.

Flag Description
-y, --year <year> Filter by year
-c, --case-sensitive Case-sensitive search
-s, --sort-by [name|year] Sort by name or year

dosctl run <game-id> [command-parts...]

Runs a game. Downloads and installs it if needed. On first run, prompts for the main executable; the choice is saved for future runs.

You can override the saved executable by passing command parts directly, or use --configure to re-pick interactively:

dosctl run 62ef2769                    # Use saved default
dosctl run 62ef2769 --configure        # Re-pick executable interactively
dosctl run 62ef2769 setup.exe          # Run a specific executable
dosctl run 62ef2769 game.exe -level 5  # Pass arguments to the executable

dosctl inspect <game-id>

Shows installed files for a game. Use -e, --executables to show only .exe/.com/.bat files.

dosctl delete <game-id>

Deletes an installed game and its downloaded archive.

dosctl refresh --force

Re-downloads the master game list from the Internet Archive.

Configuration

Data is stored in platform-appropriate directories:

~/.local/share/dosctl/          # Linux/macOS
%USERPROFILE%\AppData\Local\dosctl\   # Windows
  downloads/       # Downloaded .zip archives
  installed/       # Extracted games
  collections/     # Game list cache

Collection Backend

Games are sourced from the Total DOS Collection Release 14 on the Internet Archive. The catalog is downloaded on first use; individual games are downloaded on demand when you run them.

Disclaimer

This tool does not host or distribute any games — it manages content from external sources. You are responsible for ensuring you have legal rights to any content you use. Windows support is experimental; Linux and macOS are the primary platforms.

See LICENSE for the full MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dosctl-1.1.5.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dosctl-1.1.5-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file dosctl-1.1.5.tar.gz.

File metadata

  • Download URL: dosctl-1.1.5.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dosctl-1.1.5.tar.gz
Algorithm Hash digest
SHA256 789f80d898e0ca5f64aff63d7609a3e5ef77ddff20af2c419ce210f137cfc927
MD5 1261a3838fde27c9e7b448764f898465
BLAKE2b-256 25189e8e69389810d3bf1104cc0a71b8af9e730be39e94fff0bfe849688dc751

See more details on using hashes here.

Provenance

The following attestation bundles were made for dosctl-1.1.5.tar.gz:

Publisher: semantic-release.yml on xesco/dosctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dosctl-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: dosctl-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dosctl-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1506fdb00977310e43aa2c7363e9fc79367b88c152193bc2dc5d37da2a109a00
MD5 9c2fef2afa737fbc7ecc57a8cfce1264
BLAKE2b-256 543176c141ce46809448f39a9237d3eb28b6c1afeacbc5b861d68142cef916ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for dosctl-1.1.5-py3-none-any.whl:

Publisher: semantic-release.yml on xesco/dosctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page