Metadata-Version: 2.4
Name: mutenix
Version: 0.7.0
Summary: Mutenix host software for the Mutenix macropad
Project-URL: Homepage, https://mutenix.de
Project-URL: Documentation, https://mutenix.de/docs/host
Project-URL: Repository, https://github.com/mutenix-org/software-host
Project-URL: Issues, https://github.com/mutenix-org/software-host/issues
Author-email: Matthias Bilger <matthias@bilger.info>
License-Expression: MIT
License-File: LICENSE
Keywords: keyboard,macroboard,remote,teams
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Utilities
Requires-Python: >=3.12
Requires-Dist: aiohttp-jinja2>=1.6
Requires-Dist: aiohttp>=3.11.11
Requires-Dist: daiquiri>=3.3.0
Requires-Dist: hidapi>=0.14.0.post4
Requires-Dist: markdown>=3.7
Requires-Dist: psutil>=6.1.1
Requires-Dist: pydantic>=2.10.4
Requires-Dist: pynput>=1.7.7
Requires-Dist: pystray>=0.19.5
Requires-Dist: pytest-asyncio>=0.25.0
Requires-Dist: python-minifier>=2.11.3
Requires-Dist: pywin32; platform_system == 'Windows'
Requires-Dist: pywinauto; platform_system == 'Windows'
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: requests>=2.32.3
Requires-Dist: semver>=3.0.2
Requires-Dist: tqdm>=4.67.1
Requires-Dist: types-requests>=2.32.0.20241016
Requires-Dist: websockets>=14.1
Description-Content-Type: text/markdown

# Mutenix Host Application

Mutenix is a host application designed to translate the button presses of the hardware device into something usefull.

It consists of basically those parts

- **HID Device Communication**: General communication with the device
- **Update**: Updating the device firmware (via USB HID)
- **Teams Websocket Communication**: Connect with teams using the [local api](#enable-local-api)
- **Virtual Keypad**: Offers a virtual keypad to play around without the hardware.

Mutenix is ideal for software teams looking to enhance their project management and collaboration capabilities.

## Tray Icon & Menu

![images/tray_icon.png]

- **Open Virtual Macroboard**: Opens a virtual Macroboard in the browser, same functionalities as the hardware one.
- **Teams connected**: Status information if teams connection has been established.
- **Device connected**: Status information if the device connection has been established.
- **Help**: Opens the help page in the browser.
- **About**: Opens the about page in the browser.
- **Debug Options**: Set some debug options persistent
  - **Activate Serial Console**: Activates the serial console (Circuitpython)
  - **Deactivate Serial Console**: Deactivates the serial console (Circuitpython)
  - **Enable Filesystem**: Enables the filesystem. This cannot be undone using the tray icon. It has to be done by yourself on the filesystem. The file you need to alter is `debug_on.py`. Reason for this is, that the device cannot mount the drive writeable the same time the host has it mounted.
- **Quit**: Quit Mutenix

## Installation

The prefered way is to use [uv](https://docs.astral.sh/uv/getting-started/installation/). The packages tend to not work without hassle.

### Executable

Download the executable here: [Releases](https://github.com/mutenix-org/software-host/releases/latest)
Run it.

### Using uv

Get [uv](https://docs.astral.sh/uv/getting-started/installation/)

```bash
uv tool mutenix
```

or

```bash
uvx mutenix
```

### Command Line options

**NB**: Command line options may not work on the executable version.

- `--list-devices`: lists HID devices
- `--config <your config file>`: Use that config file
- `--update-file <firmware archive>`: perform an update with that file

## Configuration

Using the configuration file several things could be configured:

- actions of the buttons
- led states/colors
- virtual keypad binding (address and port)
- device identification to connect to
- logging

Mutenix tries to find a file called `mutenix.yaml` in the directory it is run from or `$HOME/.config/`. It it does not find one, it will create one in the current directory.

Please see [Configuration.md](docs/configuration.md).

## Teams it not working

In teams the `Third Pary API` must be enabled.

![Privacy Settings in Teams](images/privacy_settings.png)

## Contributing

### Setting up pre-commit hooks

To set up pre-commit hooks for this project, run the following commands:

```sh
pip install pre-commit
pre-commit install
pre-commit run --all-files
```

## Links

- [Hardware](https://github.com/mutenix-org/hardware-macroboard)
- [Firmware](https://github.com/mutenix-org/firmware-macroboard)
