Skip to content

Allow runtime settings such as DEVICE and COMPUTE_TYPE to be configured without editing config.py #23

Description

@MaxiKingXXL

Summary

Some user-relevant runtime settings can currently be changed only by editing config.py.

It would be useful to make these settings configurable without modifying the Python source, either through a validated external configuration file layered over the built-in defaults or by extending the existing database and Settings UI coverage.

Why this matters

Packaged builds

config.py is bundled into the packaged application. Settings that are not exposed through the Settings UI or persisted in writher.db therefore cannot be changed by users of a downloaded build.

The clearest examples are:

DEVICE = "cpu"
COMPUTE_TYPE = "int8"

A packaged user currently has no way to select CUDA or change the compute type through WritHer, even when compatible GPU runtime libraries are available.

MODEL_SIZE is already configurable and persisted, so users can select the Whisper model but not the device or compute type on which it runs.

Source installations

Users running from source must edit config.py to change these settings. Their machine-specific preferences then become a source modification that must be preserved or reapplied when updating WritHer.

Existing persistence mechanism

WritHer already has a clean override mechanism: _load_settings() reads persisted values from writher.db and applies them over the defaults in config.py.

This currently covers settings such as recording mode, hotkeys, microphone, Whisper model, recognition language, assistant provider and clipboard behavior. Extending the same pattern would be consistent with the existing design.

Settings currently relevant to this request

At minimum:

  • DEVICE
  • COMPUTE_TYPE

SAMPLE_RATE and other advanced runtime settings could also be considered, although they may not all warrant controls in the Settings UI.

Possible directions

Either of the following would address the use case.

Option 1: external override file

Load a validated user configuration file from WritHer’s writable data directory, for example:

%APPDATA%\WritHer\config.local.toml

The file could contain supported advanced settings that do not need dedicated UI controls. config.py would remain the source of built-in defaults.

Invalid or unsupported values should be ignored with a clear entry in writher.log, rather than preventing the application from starting.

Option 2: extend the database and Settings UI

Persist the remaining user-relevant runtime values through the existing settings table.

At minimum, users could select:

  • Device: cpu or cuda
  • Compute type: compatible values such as int8, float16 or float32

These settings could be marked as requiring an application restart.

The project could implement either approach or combine them: common settings in the UI and advanced settings in an external override file.

Expected behavior

Users should be able to select the inference device and compute type without modifying or rebuilding WritHer’s source code. Their preferences should survive application updates.

This change would not install or guarantee the presence of the required CUDA libraries. It would make the device selectable when a compatible CUDA runtime is already installed and supported.

Benefit

  • Packaged users can configure supported GPU execution.
  • Machine-specific preferences no longer require a source fork.
  • Built-in defaults remain unchanged.
  • Advanced settings can be exposed without expanding config.py into a user-maintained file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions