Skip to content

Instantly share code, notes, and snippets.

@tildebyte
Last active October 26, 2025 22:20
Show Gist options
  • Save tildebyte/2735e7842a12ae09eddc6d62801f49b4 to your computer and use it in GitHub Desktop.
Save tildebyte/2735e7842a12ae09eddc6d62801f49b4 to your computer and use it in GitHub Desktop.
Hack custom applications into LOGITECH LGHUB config so that they *actually work*. Also fix apps which aren't being correctly discovered on your system.

The magic happens in 'C:\Program Files\LGHUB\data\applications.json'

The important thing to note is the per-entry "detection" object, which is a list of detection methods, e.g.

Key:

  • c = character
  • d = digit
  • "/ppp/ppp" = path
  • {uuu} = UUID
  • x = hexchara
"detection": [
  // Can be an actual name, OR a long hex string
  {
    "epicGames": {
      "appName": "cool_game"
    }
  },
  {
    "epicGames": {
      "appName": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
  },

  // Seriously... 🙄 OTOH, this is *the simplest*, and *very* handy for games
  // which can be installed in many different ways (e.g. `steam`, `epicGames`,
  // `gogGalaxy`, `winRegistry`, etc.)
  {
    "glob": "/ppp/ppp/FooGame.app"
  },
  {
    "glob": "/ppp/ppp*/jre-*/*/bin/foogame.exe"  // Yes, a real **glob**
  },
  {
    "glob": "/XboxGames/ppp/ppp/gamelaunchhelper.exe"
  }

  // Base-10 numeric string
  {
    "gogGalaxy": {
      "productId": "dddddddddd"
    }
  },

  // Apple-only, obv
  {
    "osxBundle": {
      "bundleId": "http://thegamesdb.net/banners/boxart/original/front/28903-1.jpg",
      "bundlePath": "/ppp/ppp/FooGame.app"
    }
  },

  // Base-10 numeric string
  {
    "steam": {
      "appId": "ddddddddd"
    }
  },

  // Riot-only
  {
    "riotGames": {
      "appName": "league_of_legends_blows.live"
    },
  }

  // UPlay
  {
    "uplay": {
      "appId": "dddd"
    }
  }
  // Exactly what it looks like
  {
    "winRegistry": {
      "executable": "Foogame.exe",
    
      "registryKey": "Install Dir",  // Most common
      // OR
      // "AllPath"
      // "ApplicationPath"
      // "ConfigApplicationPath"
      // "DisplayIcon"
      // "Install Dir"
      // "Install Path"
      // "InstallDir"
      // "InstallFolder"
      // "InstallLocation"
      // "InstallPath"
      // "InstPath"
      // "Path"
      // "SetupPath"

      "registryPath": "HKEY_LOCAL_MACHINE/SOFTWARE/Y2K Games/GeoShock 25"
      // OR e.g. HKEY_LOCAL_MACHINE/SOFTWARE/
      // "Microsoft/Windows/CurrentVersion/App Paths/FooGame.Exe"
      // "Microsoft/Windows/CurrentVersion/GameUX/Games/{uuu}"
      // "Microsoft/Windows/CurrentVersion/Uninstall/{uuu}"
      // or
      // "WOW6432Node/Microsoft/Windows/CurrentVersion/Uninstall/{uuu}"
      // "WOW6432Node/Microsoft/Windows/CurrentVersion/Uninstall/FooGame"

      // or even
      // "HKEY_CURRENT_USER/SOFTWARE/Battlestar Games/EscapeFromTarpit"
    }
  }
]
...
// e.g. ONCE_HUMAN
{
"applicationId": "6f668fd3-9b79-4295-b4d0-22af06df6639",
"categoryColors": [
{
"hex": "#f51919",
"tag": "Build"
},
{
"hex": "#0c25e4",
"tag": "Combat"
},
{
"hex": "#09fb66",
"tag": "Standard"
},
{
"hex": "#e3f207",
"tag": "Vehicle"
}
],
"commands": [
...
// actual button mappings
...
],
// Game detection
"detection": [
{
"steam": {
"appId": "2139460"
}
},
{
"glob": "/Games/ONCE HUMAN/ONCE_HUMAN.exe"
},
{
"winRegistry": {
"registryPath": "HKEY_CURRENT_USER/Software/LoadingBay/LoadingBayInstaller/game/23",
"registryKey": "InstallPath",
"executable": "ONCE_HUMAN.exe"
}
}
],
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment