Shell Integration

ShotGrid Engine for the Shell

ShotGrid Support in a Shell
Latest Version: v0.9.0 (prod)
For our version numbers, we follow the Semantic Versioning standard.
System Name: tk-shell

Please Note: This document describes functionality only available if you have taken control over a Toolkit configuration. Please refer to the Shotgun Integrations User Guide for more details.

The Shotgun engine for the shell works in conjunction with the Tank command. Once the engine has been installed, you can run Shotgun Pipeline Toolkit apps straight from the command line. The Tank command will take care of listing and presenting the user with the different installed apps that are available. The engine forms the bridge between the terminal and the installed apps. If you have PySide or PyQt installed, you can run apps that have a UI straight from a shell.


The Shotgun engine for the shell handles command line interaction and is tightly integrated with the tank command which is distributed as part of the Core API. When you execute the tank command in a terminal, Toolkit launches the engine to handle app execution.

For more information about the tank command, please see our main documentation:

Installation and Updates

Adding this Engine to the Shotgun Pipeline Toolkit

If you want to add this engine to Project XYZ, and an environment named asset, execute the following command:

> tank Project XYZ install_engine asset tk-shell

Updating to the latest version

If you already have this item installed in a project and you want to get the latest version, you can run the update command. You can either navigate to the tank command that comes with that specific project, and run it there:

> cd /my_tank_configs/project_xyz
> ./tank updates

Alternatively, you can run your studio tank command and specify the project name to tell it which project to run the update check for:

> tank Project XYZ updates

Collaboration and Evolution

If you have access to the Shotgun Pipeline Toolkit, you also have access to the source code for all apps, engines and frameworks in Github where we store and manage them. Feel free to evolve these items; use them as a base for further independent development, make changes (and submit pull requests back to us!) or simply tinker with them to see how they have been built and how the toolkit works. You can access this code repository at

Special Requirements

  • You need Shotgun Pipeline Toolkit Core API version v0.19.1 or higher to use this.


No Configuration Needed!

This item does not have any options to configure!

Release Notes

Welcome to the release notes for this App. Below you will find an overview of all the changes we did for each release. We try to be as detailed as possible and include all bugs we have fixed, features we have added and things that may have changed. If you have questions about a particular release, don't hesitate to contact our support team!


Rebranded to ShotGrid



Fixed an issue that prevented GUI apps from being launched on a Linux KDE environment with PySide2



Adds support for Python 3.



Adds support for PySide2.



Updated for use with new core metrics



Adds back in Qt library path clearing, but only for KDE Linux.



Removes the clearing of Qt library paths introduced in v0.5.2.


This has been removed in favor of a safer and more-targeted implementation of the same in tk-multi-launchapp.



Fixes crashes on multiple Linux distributions when QT_PLUGINS_PATH is set.



Check for existing QApplication in engine.execute_command()


Check for an existing QApplication before attempting to create one. If a QApplication is already running, execute the input command immediately. If a QApplication needs to be created, do so, then queue the input command to execute using QTimer.singleShot() and start the exec_() loop. Resolves #38354.



Allows on-the-fly context changes.


As with the tk-nuke engine, context changes in the shell engine can now be performed via the sgtk.platform.change_context() function.



Fixed a PyQt issue with dialogs and made the engine more flexible about when PyQt/PySide can be used to show UIs.


  • Fixes an issue with PyQt where the exec_ method on dialogs always returned None. (thanks Jonathan Stone!)
  • The engine used to allow UIs to be displayed using the engine's show methods only if they were executed through commands. Now the engine allows the methods to be invoked as soon as a QApplication is made available. Therefore this allows UIs to be shown while using the tank shell command.


Improved logic for indication of a UI present


This changes the meaning of the has_ui property so that it is consistent with other engines. Previously has_ui would return True as soon as a valid pyside/pyqt4 was detected. This is inconsistent with other engines, where has_ui indicates that an active UI is present and running. This pull request adjusts the shotgun engine so that has_ui only returns true when a QApplication is actually active in the system.


Updated visual style to better match Maya.

Details: This change affects the visual appearance of all apps running in the engine, making their visual appearance much more consistent with the look and feel that you would get inside Maya. Please note that after this upgrade, app UIs will look slightly different.


Updated PySide version handling to support very old versions!


Added a default application icon for UI apps.


Added support for optional App command arguments


Updated PyQt compatibility


Now uses the built in QT stylesheet introduced in Core v0.14.28.


Updated QT Style Sheet to include a border around text input elements.


Added better unicode support


Renames and support for the new name Sgtk.


Added PyQt Support.


  • Engine now supports PyQt4 for UIs. This is detected at runtime, and if tank can load PyQt4 from the python system path, it will attempt to use it. This is a fallback in case PySide is not found.

  • Better error messages when PySide/PyQt4 is not installed - the engine now presents some more polished feedback in the case a UI based app is launched but neither PySide nor PyQt exists to handle the UI creation.


Better handling of keyboard interrupts.


Fixed a bug which could cause apps raising Exceptions to be stuck in a loop.


Adjustments to PyQt Support


Fixed issue when running some apps with PyQt.


Minor adjustments to PyQt initialization.


Added support for app arguments


Engine is now compliant with Tank Core v0.13

Details: - Added QT support - Added support for Core v0.13 specifics; logging, execution etc.


Adjustments to work nicely with core v0.12.5


Baseline Release.