Skip to content

legandrop/LGA_OpenInNukeX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LGA OpenInNukeX logo LGA OPENINNUKEX
Lega | v1.69


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.

Comandos TCP

El servidor escucha en localhost:54325 y soporta estos comandos:

  • ping: responde pong cuando el servidor esta activo en NukeX.
  • run_script||<path>: cierra el proyecto actual con nuke.scriptClose() y abre el .nk indicado con nuke.scriptOpen().
  • paste_clipboard: ejecuta nuke.nodePaste("%clipboard%") en el proyecto actual. No cierra ni abre scripts. Este comando permite que herramientas externas, como el Contact Sheet del Review Panel de Hiero, copien clips al clipboard y pidan a NukeX que los pegue como nodos.

Instalación

  • 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
    
  • Con un editor de texto, 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.app a /Applications. Después abrir la aplicación para entrar a la configuración.



Configuración

  • El botón APPLY asocia los archivos .nk con OpenInNukeX. Después de aplicarlo, hacer doble clic en cualquier .nk desde el Explorer o Finder lo abrirá a través de esta app.

    • En Windows se usa la app SetUserFTA.exe que viene incluida en el paquete.
    • En macOS se registra con Launch Services y usa duti si está instalado (brew install duti). Si no, la app indica el flujo manual en Finder: clic derecho en un .nk → Obtener información → Abrir con → Cambiar todo.
  • 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 Files y C:\Program Files (x86).
    • En macOS escanea /Applications.
    • El botón BROWSE en macOS acepta tanto el .app como el binario directamente y resuelve la ruta automáticamente.



Compilación

Windows

cd QtClient/scripts
deploy.bat       # Release + paquete portable
instalador.bat   # Genera el instalador .exe con Inno Setup

macOS

cd QtClient
./compilar_dev.sh   # Build rápido (Debug) para desarrollo y pruebas
./deploy.sh         # Build Release, genera el .app distribuible



Referencias Técnicas

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

About

A small Windows/Mac utility to open .nk files in NukeX with a double click, reusing the same instance if already open.

Resources

Stars

Watchers

Forks

Contributors