Al instalar Nuke, hacer doble click en un archivo .nk siempre abre una nueva instancia de Nuke (no NukeX).
Aunque se puede redirigir para usar NukeX, igual se crea una nueva instancia cada vez, acumulando varias ventanas abiertas.
LGA_OpenInNukeX soluciona esto.
Permite abrir archivos .nk directamente en NukeX desde el explorador de archivos:
• Si ya hay una instancia de NukeX abierta → abre el script ahí
• Si no hay ninguna → abre una nueva instancia de NukeX
Es una aplicación de dos partes:
• Servidor en NukeX: corre desde init.py, escucha por TCP en el puerto 54325 y recibe comandos externos (run_script||<path> y paste_clipboard).
• Cliente Qt/C++: corre fuera de Nuke, administra la asociación de archivos .nk, detecta la ruta configurada de NukeX y decide si enviar el archivo a una instancia ya abierta o lanzar una nueva.
La lógica de apertura es esta:
1. Si ya hay una instancia de NukeX abierta, el cliente envía el .nk vía TCP a esa sesión activa.
2. Si no hay una instancia abierta, el cliente lanza el ejecutable de NukeX configurado en la sección Preferred Nuke Version.
Solo funciona con NukeX y no con otras variantes de Nuke. El servidor en init.py verifica esto antes de iniciar.

El servidor escucha en localhost:54325 y soporta estos comandos:
ping: respondepongcuando el servidor esta activo en NukeX.run_script||<path>: cierra el proyecto actual connuke.scriptClose()y abre el.nkindicado connuke.scriptOpen().paste_clipboard: ejecutanuke.nodePaste("%clipboard%")en el proyecto actual, cargaLGA_ContactSheet.nk, conecta los Reads al grupo y el primer Viewer disponible. No cierra ni abre scripts. Solo responde con exito cuando el grupo fue creado y conectado; si faltan Reads, el toolset o el Group, devuelve un error al cliente.
-
Para instalar el componente de Nuke, ejecutar
installer_win.baten Windows obash installer_mac.shen macOS. El instalador valida el payload, respalda una instalación anterior y configura elinit.pyglobal sin duplicar el plugin path. -
Como alternativa manual, copiar la carpeta LGA_OpenInNukeX a %USERPROFILE%/.nuke en Windows o a ~/.nuke en macOS.
Debería quedar así:.nuke/ └─ LGA_OpenInNukeX/ ├─ init.py └─ LGA_QtAdapter_OpenInNukeX.py -
Si se usa la alternativa manual, agregar esta línea al archivo init.py que está dentro de la carpeta .nuke:
nuke.pluginAddPath('./LGA_OpenInNukeX')
-
Windows: ejecutar
LGA_OpenInNukeX_Setup.exe. Al terminar la instalación, abrir la aplicación para entrar a la configuración. -
macOS: copiar
LGA_OpenInNukeX.appa/Applications. Después abrir la aplicación para entrar a la configuración.
-
El botón APPLY asocia los archivos
.nkcon OpenInNukeX. Después de aplicarlo, hacer doble clic en cualquier.nkdesde el Explorer o Finder lo abrirá a través de esta app.- En Windows se invoca
LGA_WinSetFTA.exe(incluido en el paquete; requiere .NET 9 runtime). - En macOS se usa la API de Launch Services; macOS muestra un cartel de confirmación del sistema.
- En Windows se invoca
-
La sección Preferred Nuke Version escanea automáticamente las rutas comunes del sistema al abrirse y muestra un botón por cada versión de Nuke detectada. Al hacer clic en uno de esos botones la ruta se carga en el campo de texto. Si la instalación de Nuke está en una ubicación no estándar, se puede usar BROWSE para localizarla manualmente.
- En Windows escanea
C:\Program FilesyC:\Program Files (x86). - En macOS escanea
/Applications. - El botón BROWSE en macOS acepta tanto el
.appcomo el binario directamente y resuelve la ruta automáticamente.
- En Windows escanea
Windows
compilar.bat # Debug incremental, despliega DLLs y ejecuta la app
deploy.bat # Release + paquete portable en QtClient\release\deploy
instalador.bat # Regenera Release y crea el instalador con Inno SetupmacOS
./compilar.sh # Build rápido (Debug) para desarrollo y pruebas
./deploy.sh # Build Release, genera el .app distribuibleLos scripts de build viven en la raíz del repo (no en QtClient/); QtClient/
sigue teniendo el CMakeLists.txt y los árboles de build.
| Archivo | Funciones / clases clave |
|---|---|
| init.py | setup_debug_logging(), handle_client(), run_script_with_logging(), paste_clipboard_with_logging(), servidor TCP en puerto 54325 |
| main.cpp | NukeApp::event(), main() |
| nukeopener.cpp | sendToNuke(), onConnected(), onResponseReceived(), openNukeWithFile() |
| configwindow.cpp | applyFileAssociation(), executeMacAssociation(), executeRegistryCommands(), browseNukePath() |
| nukescanner.cpp | getCommonNukePaths(), scanDirectory(), isValidNukeExecutable(), isValidNukeAppBundle() |
| CMakeLists.txt | definición de targets Win/Mac, bundle macOS, recursos, deploy |
| Info.plist.in | CFBundleDocumentTypes, UTI .nk, bundle identifier |
