Skip to main content

Use Joy-Con or Pro Controller as remote control of Linux machine.

Project description

Joymote

Use a Joy-Con or Pro Controller as a remote control of your Linux machine.

Joy-Con and Pro Controller can be connected to Linux machine via Bluetooth. Joymote listens for button presses and analog stick movements, then translates them into keyboard input, mouse movement, or custom commands defined by you. With Joymote, your game controller becomes a powerful input device for controlling your desktop.

Requirements

  • Python
  • uinput module
    • Check whether the uinput module is loaded, by running:

      lsmod | grep uinput
      

      If it is loaded, you will see a line like uinput 20480 0.

    • You can manually load the module by running:

      sudo modprobe uinput
      
    • You can also run the following command to load uinput modules automatically on boot.

      sudo bash -c "cat uinput > /etc/modules-load.d/uinput.conf"
      
    • Make sure you have the permission to access /dev/uinput.

Installation

Using pip

pip install joymote

From source

git clone https://github.com/kkoyung/joymote.git joymote
cd joymote
# check out different version by tags, if you want
pip install .

Usage

  1. Copy the example configuration file to ~/.config/joymote/config.toml.

    wget -o ~/.config/joymote/config.toml https://raw.githubusercontent.com/kkoyung/joymote/refs/heads/main/config.toml
    
  2. Connect controllers via Bluetooth.

  3. Start joymote.

    joymote
    
  4. By default, Joymote does nothing. Check out config.toml and change it to configure Joymote's behaviours upon pressing buttons on the controller.

Joymote can detect newly connected controllers without restarting, so you can run it as daemon in the background. For example, run it as a systemd unit.

Connect controllers via Bluetooth

The controllers can connect to your Linux machine via Bluetooth, just like usual Bluetooth devices.

  1. Press and hold down the SYNC button (the tiny button between SL and SR on Joy-Con, or the tiny button between L and R button on Pro Controller) for at least one second to enter pairing mode.
  2. Enable Bluetooth of your computer, and scan new devices.
  3. Find a device named "Joy-Con (L)", "Joy-Con (R)", or "Pro Controller". Pair and connect to it.

Development

  1. Clone the repository.

    git clone https://github.com/kkoyung/joymote.git joymote
    cd joymote
    
  2. Run the code.

    uv run joymote
    # or
    python -m venv .venv
    source .venv/bin/activate
    python install .
    python -m joymote
    

Pairing two Joy-Con as one device (Optional)

Use joycond, which is a userspace daemon, to combine Joy-Cons into a single device.

  • Install and start. For example, if you are on Arch Linux, you can run

    yay -S joycond-git
    sudo systemctl enable --now joycond
    
  • Then, follow this instruction to pair the controller.

Disclaimer

Nintendo®, Nintendo Switch®, Joy-Con®, and Pro Controller® are registered trademarks of Nintendo of America Inc. This project is an independent work and is not affiliated with, endorsed by, or sponsored by Nintendo. All trademarks are the property of their respective owners.

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

joymote-0.0.4.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

joymote-0.0.4-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file joymote-0.0.4.tar.gz.

File metadata

  • Download URL: joymote-0.0.4.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for joymote-0.0.4.tar.gz
Algorithm Hash digest
SHA256 e4a1c8f7ca1878471c1413051cf24ec99ef4e3f57e32d3b885317262877463d0
MD5 d71dd7ca8f162e5a223a9aee4ed4077e
BLAKE2b-256 29cfe9c8deb9266f70e1772f14744cabb5f18ee139c0fb38852800632efbe887

See more details on using hashes here.

Provenance

The following attestation bundles were made for joymote-0.0.4.tar.gz:

Publisher: build-deploy.yaml on kkoyung/joymote

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

File details

Details for the file joymote-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: joymote-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for joymote-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a7742d23e13fd40d50e0d5179835456e9525f783432c653b2a7b4f038cdd5015
MD5 a99a8fb1a501c422767a7f7eb58e51f9
BLAKE2b-256 697df4c89b31a75ed24aa1faaa841992adab17b6a35c6ea99e0828f7dd9f4157

See more details on using hashes here.

Provenance

The following attestation bundles were made for joymote-0.0.4-py3-none-any.whl:

Publisher: build-deploy.yaml on kkoyung/joymote

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