{"id":50526497,"url":"https://github.com/vncsmyrnk/gwin","last_synced_at":"2026-06-03T08:30:35.776Z","repository":{"id":348595214,"uuid":"1198827953","full_name":"vncsmyrnk/gwin","owner":"vncsmyrnk","description":"A \"Run or raise\" CLI tool for Wayland GNOME.","archived":false,"fork":false,"pushed_at":"2026-05-01T18:59:32.000Z","size":86,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-01T20:23:58.379Z","etag":null,"topics":["dbus","gio","gnome","rofi","window-calls"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vncsmyrnk.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-01T19:52:09.000Z","updated_at":"2026-05-01T18:59:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vncsmyrnk/gwin","commit_stats":null,"previous_names":["vncsmyrnk/gnome-window-calls","vncsmyrnk/gwin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vncsmyrnk/gwin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vncsmyrnk%2Fgwin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vncsmyrnk%2Fgwin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vncsmyrnk%2Fgwin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vncsmyrnk%2Fgwin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vncsmyrnk","download_url":"https://codeload.github.com/vncsmyrnk/gwin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vncsmyrnk%2Fgwin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33856037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dbus","gio","gnome","rofi","window-calls"],"created_at":"2026-06-03T08:30:35.030Z","updated_at":"2026-06-03T08:30:35.770Z","avatar_url":"https://github.com/vncsmyrnk.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GNOME](https://img.shields.io/badge/GNOME-50-blue?style=plastic\u0026logo=gnome)](https://wiki.archlinux.org/title/GNOME)\n[![Zig](https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fraw.githubusercontent.com%2Fvncsmyrnk%2Fgwin%2Frefs%2Fheads%2Fmain%2Fbuild.zig.zon\u0026search=%5C.minimum_zig_version%20%3D%20%22(.*)%22\u0026replace=%241\u0026style=plastic\u0026logo=zig\u0026label=Zig\u0026color=F7A41D)](https://ziglang.org/)\n[![AUR Version](https://img.shields.io/aur/version/gwin-git?style=plastic\u0026label=AUR\u0026logo=archlinux)](https://aur.archlinux.org/packages/gwin-git)\n[![APT Version](https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Ffuryous.vncsmyrnk.dev%2F%3Fuser%3Dvncsmyrnk%26pkg%3Dgwin\u0026search=.*\u0026style=plastic\u0026logo=debian\u0026label=apt\u0026color=d70a53)](https://repo.fury.io/vncsmyrnk/)\n\u003cbr\u003e\n[![CI/CD workflow](https://github.com/vncsmyrnk/gwin/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/vncsmyrnk/gwin/actions/workflows/ci-cd.yml)\n[![contributions](https://img.shields.io/badge/contributions-welcome-brightgreen?labelColor=384047\u0026color=33cb56)](https://github.com/vncsmyrnk/gwin/issues)\n\n# gwin\n\nA \"Run or raise\" CLI tool for Wayland GNOME, leveraging the [window-calls extension](https://github.com/ickyicky/window-calls) D-Bus interface for opened windows.\n\n## Context\n\nGNOME's Wayland implementation does not support native ways to securely access window lists due to security risks. If you want to use a custom _dmenu_ tool or have special bindings for switching between opened windows, the only solution to achieve this until now is using Mutter to fetch the windows state via an extension.\n\nFortunately, this extension already exists: [window-calls extension](https://github.com/ickyicky/window-calls). It also export this state over D-Bus, making it possible to view and manipulate it.\n\n## Goal\n\nThis project aims to provide ways to open currently opened instances or launch new ones when there is no instance already opened. GNOME's default finder already achieves this but offers minimal customization and GNOME itself does not offer native ways to use external _dmenus_ like `rofi`.\n\nThe primary goal is to provide useful, predefined and optimized use cases for switching between opened windows via `window-calls` and its D-Bus interface, avoiding the overhead of connections and fragile parsing when using multi-purpose D-Bus tools like `bustcl`.\n\n### Secondary goals\n\n- Provide a list of opened windows and ways to switch to them via _dmenus_\n- Provide a list of installed applications and ways to run or raise them via _dmenus_\n\n\u003e [!NOTE]\n\u003e **Why Zig?** It can directly import C bindings for GDBus, already included as part of GNOME project's GLib (`gio/gdbus`).\n\n## Examples\n\n### Switching to opening windows using `rofi`\n\n```sh\ngwin list windows --rofi | rofi -x11 -normal-window -dmenu | xargs -I{} gwin switch --id {}\n```\n\n### Running or raising applications using `rofi`\n\n```sh\ngwin list applications --rofi | rofi -x11 -normal-window -dmenu | xargs -I{} gwin raise {}\n```\n\n## Install\n\n### AUR\n\nInstall it with your favorite AUR helper.\n\n```sh\nyay -S gwin-git\n```\n\n### APT (Debian and its derivatives)\n\n```sh\necho \"deb [trusted=yes] https://apt.fury.io/vncsmyrnk /\" | sudo tee /etc/apt/sources.list.d/fury.list\nsudo apt update \u0026\u0026 sudo apt install gwin\n```\n\n### From source\n\n```sh\ngit clone git@github.com:vncsmyrnk/gwin.git\njust build\n./zig-out/bin/gwin\n```\n\n\u003e [!IMPORTANT]\n\u003e Make sure to have the [window-calls extension](https://github.com/ickyicky/window-calls) installed before running `gwin`. Restart the GNOME session after installing the extension.\n\n## Roadmap and new features\n\nCheck out [issues](https://github.com/vncsmyrnk/gwin/issues) for upcoming changes or bug fixes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvncsmyrnk%2Fgwin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvncsmyrnk%2Fgwin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvncsmyrnk%2Fgwin/lists"}