GSE Profiler app icon Latest stable

Profile GNOME Shell extensions
as they run.

A developer toolkit for extension authors and testers. GSE Profiler attaches to the running shell and gives you live function timing, structured log filtering, and object inspection, all from a native GTK4 interface built for modern GNOME, with zero changes to your extension's code.

Free and open source · Flatpak · Stable and testing channels

GSE Profiler showing a live recording in the Profiler view: a sidebar of installed extensions, recording stats, a flamegraph timeline, and a per-function timing breakdown.
What's inside

Four tools, one window

Everything you need to understand a misbehaving extension, without leaving GSE Profiler. Manage it, watch its logs, time its code, and inspect its live objects.

Extension Manager

Every installed extension, grouped by user, system, and disabled, each with its live status.

  • Enable or disable with a single click
  • Open an extension's source folder directly
  • Install a new extension straight from GitHub

Log Viewer

A live systemd-journal stream that captures the gnome-shell process by default, where all extensions actually run.

  • Filter by level, extension tag, and full-text search in real time
  • Structured capture: scope, boot, source preset, priority
  • Power-user raw journalctl override when you need it

Profiler

Monkey-patch any extension at runtime to measure where its time goes. No code changes needed.

  • Visualise timing as a flamegraph, swimlane, or histogram
  • Per-function breakdown: calls, total, self, average, max
  • Export and reload whole sessions as JSON

Inspector

Open a live extension object and walk through it while the shell is running.

  • Browse properties and methods on the running object
  • Read current values as they change
  • Call methods interactively to test behaviour
A closer look

See it working

Real captures from a profiling session against a live RSS feed extension.

Profiler

Read a recording three ways

Nested calls laid out along a real time axis. A function that fires repeatedly, and the rebuild it triggers underneath, is obvious at a glance.

The Profiler flamegraph view: a recording with 27 calls across 9 functions, a stacked timeline, and a per-function breakdown table. The Profiler swimlane view: each function on its own lane across the recording's time span, with gaps elided. The Profiler histogram view: total time per function shown as horizontal bars.
Logs

Watch the journal in real time

A live systemd-journal stream scoped to the gnome-shell process. Filter by level, tag, and full-text search, with warnings and errors highlighted as they arrive.

The Logs view streaming the systemd journal, with 199 lines shown and counts for errors, warnings, info, and debug.
Inspector

Walk a live object

Drill into a running extension object and read its properties and methods with live values. Expand nested objects and arrays, and call methods to test behaviour.

The Inspector view showing 78 properties of a live extension state object, with types and current values.
Install

Add a remote, then install

GSE Profiler ships as a Flatpak from a self-hosted remote. Pick the stable channel for everyday use, or testing for early prerelease builds.

Requires flatpak on a GNOME 47+ system.
Depends on the GNOME runtime from Flathub, pulled in automatically on first install (Flathub is preconfigured on most GNOME systems).
Latest Recommended
Latest Prerelease

Production-ready releases for everyday use.

1 Add the remote
flatpak remote-add --user --if-not-exists todevelopers https://todevelopers.github.io/flatpaks/todevelopers.flatpakrepo
2 Install the app
flatpak install todevelopers io.github.todevelopers.GseProfiler

Prefer one click? Open the stable .flatpakref

Beta and rc builds for early testing and feedback.

1 Add the remote
flatpak remote-add --user --if-not-exists todevelopers-testing https://todevelopers.github.io/flatpaks/todevelopers-testing.flatpakrepo
2 Install the app
flatpak install todevelopers-testing io.github.todevelopers.GseProfiler

Prefer one click? Open the testing .flatpakref

Or install a bundle manually

Offline, or prefer not to add a remote? Download the latest single-file .flatpak bundle from the GitHub releases page and install it directly.

Releases page
flatpak install --user ./io.github.todevelopers.GseProfiler.flatpak
Keeping it updated. Both channels update through Flatpak like any other app:
flatpak update
Installing through GNOME Software? After adding the remote, refresh the catalog so GSE Profiler appears. If Software is already open, restart it.
flatpak update --appstream
killall gnome-software