gnome-shell icon indicating copy to clipboard operation
gnome-shell copied to clipboard

`ease` method on `St.Widget` no longer recognized by TypeScript after upgrading to @girs/[email protected]

Open domferr opened this issue 10 months ago • 1 comments

Hello, and first of all, thank you so much for your amazing work — it’s thanks to your bindings that I was able to build my GNOME extension, Tiling Shell!

Since last year, I’ve been using the ease method from St.Widget without any issues. However, after upgrading the @girs/gnome-shell dependency to version 48.0.2, VS Code now reports the following error:

Property 'ease' does not exist on type 'Widget'.

To be clear, my extension compiles and runs fine, but VS Code flags the ease() call as a type error, which wasn't happening before!

I’ve confirmed this happens across different machines, and I can reproduce it with a minimal test setup. Here's a stripped-down example:

src/extension.ts

import '@girs/gnome-shell/extensions/global';

import St from 'gi://St';
import { Extension } from '@girs/gnome-shell/extensions/extension';

export default class TilingShellExtension extends Extension {

    enable(): void {
        const widget = new St.Widget();
        widget.ease({

        });
    }

    disable(): void {
    }
}

package.json

{
    "name": "My test",
    "version": "16.3",
    "author": "Domenico Ferraro <[email protected]>",
    "private": true,
    "license": "GPL v2.0",
    "scripts": {
    },
    "devDependencies": {
      "@girs/gnome-shell": "48.0.2"
    }
}

tsconfig.json

{
    "compilerOptions": {
        "lib": ["ESNext"],
        "types": [],
        "target": "ESNext",
        "module": "ESNext",
        "moduleResolution": "Bundler"
    },
    "include": ["src"],
    "files": ["src/extension.ts"]
}

From what I can see, ease() is still defined in @girs/gnome-shell/extensions/global as usual but the TypeScript types no longer seem to be recognized.

Thanks in advance for any insight or suggestions!

domferr avatar Apr 12 '25 11:04 domferr

This is indeed an issue, but it doesn't seem related to the version of @girs/gnome-shell. I got the error with 48.0.2 and 47.0.2. It could depend on the typescript version, as how we declare this helper from gnome-shell (it is not part of St per sé) Or on the tsconfig and the moduleResolution. Is there a PR, or a commit, or multiple in your repo, that could be used to bisect that issue. So the last working commit and the first broken?

Totto16 avatar Apr 13 '25 15:04 Totto16