Skip to main content

unidecompiler-gui

unidecompiler-gui is a read-only PySide6 workbench for the public unidecompiler.DecompilerEngine API. It accepts one artifact, a directory, or a ZIP/JAR archive and shows pseudocode, AST, bytecode, and diagnostics together.

Install from PyPI; cloning this repository is not required for normal use.

Install the base GUI with its Qt dependency:

python -m pip install unidecompiler-gui

Install all separately published frontend plugins when needed:

python -m pip install 'unidecompiler-gui[all-formats]'

The GUI never imports frontend plugin packages directly. It discovers installed plugins through DecompilerEngine and does not modify input artifacts or save workspace state. Its optional Simulation tab uses the separate generic IR simulator and can load a trusted Python runtime file for unresolved functions.

GUI plugins

The Plugins menu manages optional Python GUI plugins. A plugin is an application-layer extension, separate from bytecode frontend plugins. It can inspect immutable snapshots of open documents, functions, AST/reference summaries and selections; add commands and declarative panels; request navigation through stable IDs/source locations; and start asynchronous simulation jobs.

Plugins cannot modify artifacts, generic IR, AST, pseudocode, frontend registration, or simulator execution. They never receive a Qt Workbench, frontend decoder payload, ModuleIR/FunctionIR, simulator frame, or stack. Function lookup remains frontend-owned: a plugin submits an opaque query while the GUI host delegates execution to the generic simulator.

Plugins are trusted in-process Python code, with the same permissions as the GUI process. Review every local folder or GitHub repository before installing. Dependencies in the manifest are checked at load time but never installed automatically. Install, update, enable, disable, and removal take effect after restart.

Plugin layout

Install a folder with plugin.toml through Plugins -> Manage plugins, or install a GitHub owner/repository or /tree/ref URL.

[plugin]
id = "example.function-browser"
name = "Function browser"
version = "1.0.0"
api = "1"
entry = "function_browser:register"

[python]
requires = []
from unidecompiler_gui_sdk import Command, Panel, PanelState

def register(context):
    context.panels.register(Panel("functions", "Functions"))

    def refresh(ctx):
        document = ctx.active_document
        rows = () if document is None else tuple((item.name, item.status) for item in document.functions)
        ctx.set_panel_state("functions", PanelState.table(("Function", "Status"), rows))

    context.commands.register(Command("refresh", "Refresh function browser", refresh))
    context.subscribe("document_selected", lambda _document: refresh(context))

Use only unidecompiler_gui_sdk types. Its API is Qt-neutral and versioned; plugin.toml must declare the matching API version. The repository includes unidecompiler-gui-test-plugin/ as a complete working example.

To simulate, first call context.request_simulation_targets(document_id). It returns immediately with a target-discovery job; observe simulation_targets_completed, obtain its SimulationTargetSnapshot values through context.get_target_job(job_id), then pass a selected snapshot's opaque query to context.submit_simulation(...). Observe simulation_completed and use the SDK's SimulationResultSnapshot; plugins never receive simulator runner objects or frontend adapters.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unidecompiler_gui-0.1.4.tar.gz (40.6 kB view details)

Uploaded Source

File details

Details for the file unidecompiler_gui-0.1.4.tar.gz.

File metadata

  • Download URL: unidecompiler_gui-0.1.4.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for unidecompiler_gui-0.1.4.tar.gz
Algorithm Hash digest
SHA256 0e90c89f143ae0bd384a94289fb9ef88a8ce441b034faed648b4861d13e4f10f
MD5 d974270d94aa43a78efe4ef416a302dd
BLAKE2b-256 834a799840d234b43effdc3367839697b4a96ddc943d14d1bc04740b01ebaf01

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

This release

0.1.4 This release

1 file

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page