pingdotgg / pingdotgg/t3code

[Bug]: SnapShots can't be set up on GNOME 45–47: no GlobalShortcuts portal

Open
#12,589 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accepted bug via-triage
Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

Before submitting
  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.
Area

apps/desktop

Steps to reproduce
  1. Ubuntu 24.04 based distro (Zorin OS 18), GNOME Shell 46.0, Wayland session.
  2. Open Settings → SnapShots and turn SnapShots on. The "Set up snapshots for GNOME" dialog opens.
  3. Step 1 (Access): install the extension, sign out and back in. gnome-extensions info snap-shot@t3.codes reports Enabled: Yes, State: ACTIVE, and the step gets its checkmark.
  4. Step 2 (Shortcut): pick any key combination.
Expected behavior

The shortcut gets registered and SnapShots can be used. GNOME 46 is listed in the extension's shell-version, so I expected the whole feature to work there.

Actual behavior

Step 2 shows:

No such interface "org.freedesktop.portal.GlobalShortcuts"

The setup can't be finished, and closing the dialog switches SnapShots back off. Since the shortcut is the only way to trigger a capture, the feature can't be used at all.

The cause is that GNOME 46 has no GlobalShortcuts backend. xdg-desktop-portal 1.18.4 knows the interface, but xdg-desktop-portal-gnome 46.2 doesn't implement org.freedesktop.impl.portal.GlobalShortcuts, so the frontend never exports it:

$ grep Interfaces /usr/share/xdg-desktop-portal/portals/gnome.portal
Interfaces=org.freedesktop.impl.portal.Access;…Account;…AppChooser;…Background;…Clipboard;…DynamicLauncher;…FileChooser;…InputCapture;…Lockdown;…Print;…RemoteDesktop;…ScreenCast;…Screenshot;…Settings;…Wallpaper;

$ busctl --user introspect org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop | grep -c GlobalShortcuts
0

GNOME only got that backend in a later release, so this affects every GNOME 45–47 install, including all of Ubuntu 24.04 LTS and its derivatives. Those versions are all in the extension's shell-version list.

Impact

SnapShots is unusable on GNOME 45–47. The capture side works fine there (the extension loads and owns its bus name), it's only the trigger that's missing.

Version or commit

0.0.42 (AppImage)

Environment

Zorin OS 18 (Ubuntu 24.04 base), GNOME Shell 46.0, Wayland, xdg-desktop-portal 1.18.4, xdg-desktop-portal-gnome 46.2, xdg-desktop-portal-gtk 1.15.1.

Workaround

None inside the app. Calling the extension from a GNOME custom shortcut isn't possible either, because captureService.js only accepts the T3 Code bus name — which is the right call.

A possible fix: the extension already runs inside GNOME Shell, so it could own the key itself with Main.wm.addKeybinding() and tell the app over the existing D-Bus connection when it's pressed. That would work on every supported shell version without going through the portal, and the portal path could stay as it is for GNOME versions that have it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the SnapShots setup flow in apps/desktop and the GNOME extension's captureService.js, focusing on how the shortcut is registered and how capture requests reach the app. Verify behavior on GNOME 45–47; done means setup completes and the shortcut triggers capture there while retaining the portal path for versions that provide GlobalShortcuts.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.