{"id":24077532,"url":"https://github.com/gjsify/gnome-shell","last_synced_at":"2025-04-05T19:09:18.760Z","repository":{"id":154066436,"uuid":"630495134","full_name":"gjsify/gnome-shell","owner":"gjsify","description":"GJS TypeScript type definitions for GNOME Shell Extensions","archived":false,"fork":false,"pushed_at":"2025-03-24T21:54:45.000Z","size":7901,"stargazers_count":60,"open_issues_count":1,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-29T18:05:52.467Z","etag":null,"topics":["extension","gir","gjs","gnome","gnomeshell","gobject-introspection","shell","types","typescript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gjsify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-20T13:59:09.000Z","updated_at":"2025-03-29T13:37:21.000Z","dependencies_parsed_at":"2023-11-28T09:27:06.234Z","dependency_job_id":"e868f108-9898-4559-a144-bb33e4fc3924","html_url":"https://github.com/gjsify/gnome-shell","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjsify%2Fgnome-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjsify%2Fgnome-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjsify%2Fgnome-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjsify%2Fgnome-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gjsify","download_url":"https://codeload.github.com/gjsify/gnome-shell/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247386263,"owners_count":20930618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["extension","gir","gjs","gnome","gnomeshell","gobject-introspection","shell","types","typescript"],"created_at":"2025-01-09T20:55:51.730Z","updated_at":"2025-04-05T19:09:18.732Z","avatar_url":"https://github.com/gjsify.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/gjsify/gnome-shell/main/.github/avatar_x8.png\" /\u003e\n  \u003ch1 align=\"center\"\u003eTypeScript \u003csmall\u003efor\u003c/small\u003e GNOME Shell\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gjsify/gnome-shell/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/gjsify/gnome-shell/ci.yml\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/gjsify/gnome-shell/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/gjsify/gnome-shell\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@girs/gnome-shell\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@girs/gnome-shell\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@girs/gnome-shell\"\u003e\u003cimg src=\"https://img.shields.io/npm/dw/@girs/gnome-shell\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eWrite GNOME Shell Extensions in TypeScript\u003c/p\u003e\n\n## Overview\nThis project provides TypeScript type definitions for GNOME Shell Extensions. It aims to make the development of GNOME Shell Extensions in TypeScript more intuitive and efficient. The project is currently in an experimental phase and greatly benefits from community contributions.\n\n## How It Works\nThe TypeScript types for the used libraries are generated from the `.gir` files using [ts-for-gir](https://github.com/gjsify/ts-for-gir) and are available as NPM packages. A significant portion of GNOME Shell is written in JavaScript, lacking `.gir` files. Therefore, these type definitions need to be manually created, which is the primary focus of this project. These additional definitions are manually written and included in this repository. Our build scripts automatically generate *.js (for ESM) and *.cjs files, Ambient Module Definitions, and index files. The structure for these files can be found on [./packages/gnome-shell/src](./packages/gnome-shell/src) and should align with the structure of GNOME Shell's JavaScript source code, available [here](https://gitlab.gnome.org/GNOME/gnome-shell/-/tree/main/js). This setup allows contributors to primarily focus on the TypeScript type definitions, with the rest being automatically generated, including the exports in the package.json.\n\n## Showcase\n* [gTile](https://github.com/gTile/gTile) is a fully typed Gnome extension for tiling and resizing windows\n* [Pano](https://github.com/oae/gnome-shell-pano) is a fully typed Gnome extension that serves as the next-gen Clipboard Manager\n* [Rounded Window Corners Reborn](https://github.com/flexagoon/rounded-window-corners) is a fully typed Gnome extension for rounded window (all) corners\n\nWe are happy if you link your project through a PR here 😊\n\n## Contributing\n**Every contribution, regardless of its size, is incredibly valuable.** If you're using these types and discover missing types necessary for your GNOME Shell Extension, contributing just those types is immensely helpful. This approach ensures the types are tested in real-world scenarios, vital for a project as extensive as the GNOME Shell.\n\n### Getting Started:\n- To add TypeScript type definitions, mimic the data structure of the GNOME Shell's JavaScript source code.\n- Contributions can range from adding a few types you need for your project to more extensive contributions.\n\n### Development Instructions:\nBuild the types:\n```bash\nyarn build:types\n# or\ncd ./packages/gnome-shell\nyarn build\n```\n\nValidate the types:\n\n```bash\nyarn validate:types\n\n# or\ncd ./packages/gnome-shell\nyarn validate\n```\n\nBuild the example:\n\n```bash\nyarn build:example\n\n# or\ncd ./examples/hello-world\nyarn build\n```\n\nValidate the example:\n\n```bash\nyarn validate:example\n\n# or\ncd ./examples/hello-world\nyarn validate\n```\n\n### How to Contribute:\n1. Fork this repository.\n2. Create a new branch for your contribution.\n3. Make your changes.\n4. Submit a pull request with a clear description of the improvements or additions.\n\nYour contributions help in building a comprehensive type definition resource for GNOME Shell Extensions, which in turn fosters a wider adoption and, subsequently, more contributions.\n\n### Contact and Support\nFor any questions or support, feel free to open an issue in the repository.\n\nThank you for contributing to the GNOME Shell Type Definitions project!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgjsify%2Fgnome-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgjsify%2Fgnome-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgjsify%2Fgnome-shell/lists"}