1
0
Fork 0
mirror of https://github.com/ShayBox/Wooting-Profile-Switcher.git synced 2026-06-23 18:16:18 +00:00
Automatically switch Wooting keyboard profiles based on focused window
Find a file
2026-05-31 09:49:13 -04:00
.github/workflows 3.0.0 - Update to Tauri v2 2026-02-13 23:31:09 -05:00
icons 1.5.0 - Tray Icon 2023-07-03 05:45:37 -04:00
src 3.0.3 - Wootility 5.4 Support 2026-05-31 09:49:13 -04:00
.gitignore 3.0.0 - Update to Tauri v2 2026-02-13 23:31:09 -05:00
build.rs 2.3.3 - 60HE+ Support 2024-03-25 05:29:27 -04:00
Cargo.lock 3.0.3 - Wootility 5.4 Support 2026-05-31 09:49:13 -04:00
Cargo.toml 3.0.3 - Wootility 5.4 Support 2026-05-31 09:49:13 -04:00
LICENSE Initial commit 2021-05-23 19:19:29 -04:00
README.md 3.0.0 - Update to Tauri v2 2026-02-13 23:31:09 -05:00
rustfmt.toml Align struct/enum field types 2023-08-10 03:59:28 -04:00
Tauri.toml 3.0.3 - Wootility 5.4 Support 2026-05-31 09:49:13 -04:00

Wooting Profile Switcher

Automatically switch Wooting keyboard profiles based on focused window

Installation

Download the latest release

You must install and run Wootility once, but must not have it running at the same time.

Screenshots

MainApp

System Tray Icon

The system tray icon allows you to pause/resume, reload, quit, and set the active profile

Configuration

The config file is generated on first-run in the following location and format

Platform Location
Portable Same location as the binary
Windows C:\Users\...\AppData\Roaming
macOS /Users/.../Library/Application Support
Linux /home/.../.config
{
  // Auto launch at startup
  "auto_launch": null,
  // Auto update at startup
  "auto_update": null,
  // List of connected devices, their serial number properties, and profile names
  "devices": {
    "A02B2106W031H00418": {
      "model_name": "Wooting Two LE",
      "supplier": 2,
      "year": 21,
      "week": 6,
      "product": 3,
      "revision": 1,
      "product_id": 418,
      "production": true,
      "profiles": [
        "Typing Profile",
        "Rapid Profile",
        "Racing Profile",
        "Mixed Movement"
      ]
    }
  },
  // Sleep duration for the loop checking the active window
  "loop_sleep_ms": 250,
  // Sleep duration between sending Wooting USB commands
  "send_sleep_ms": 250,
  // Show the serial number instead of the model name
  "show_serial": false,
  // Swap the lighting effects with the keyboard profile
  "swap_lighting": true,
  // List of rule objects, all match rules support Wildcard and Regex
  "rules": [
    {
      "alias": "The Binding of Isaac",
      "device_indices": {
        "A02B2106W031H00418": 0
      },
      "match_app_name": null,
      "match_bin_name": null,
      "match_bin_path": "C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Binding of Isaac Rebirth*",
      "match_win_name": null
    },
    {
      "alias": "Default Fallback",
      "device_indices": {
        "A02B2106W031H00418": 0
      },
      "match_app_name": "*",
      "match_bin_name": "*",
      "match_bin_path": "*",
      "match_win_name": "*"
    }
  ],
  "ui": {
    "scale": 1.25,
    "theme": "Dark"
  }
}

Examples:

Matching a window title with a date variable

{
  "alias": "VRCX",
  "match_app_name": null,
  "match_bin_name": null,
  "match_bin_path": null,
  "match_win_name": "VRCX ????.??.??",
  "device_indices": {
    "A02B2106W031H00418": 0
  },
}

Matching a window title with a version variable

{
  "alias": "Minecraft",
  "match_app_name": null,
  "match_bin_name": null,
  "match_bin_path": null,
  "match_win_name": "Minecraft [\d]+.[\d]+.[\d]+",
  "device_indices": {
    "A02B2106W031H00418": 0
  },
}

Wayland Support

This program does not officially support Wayland.
This is because active-win-pos-rs and x-win don't support the foreign-toplevel-management protocol.
There's no way for programs to detect the active focused Wayland window, only X11 / XWayland.