{"id":16369658,"url":"https://github.com/dcsunset/i3-focus-group","last_synced_at":"2026-07-17T04:36:06.628Z","repository":{"id":225053389,"uuid":"763791503","full_name":"DCsunset/i3-focus-group","owner":"DCsunset","description":"Create a group for i3/sway containers to easily switch focus between","archived":false,"fork":false,"pushed_at":"2024-03-16T14:53:48.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-16T01:43:54.169Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DCsunset.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-02-26T23:28:15.000Z","updated_at":"2024-02-29T02:44:02.000Z","dependencies_parsed_at":"2024-03-16T16:23:50.901Z","dependency_job_id":"524f7a8c-11f6-4c99-849f-331f779af0cc","html_url":"https://github.com/DCsunset/i3-focus-group","commit_stats":null,"previous_names":["dcsunset/i3-focus-group"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/DCsunset/i3-focus-group","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCsunset%2Fi3-focus-group","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCsunset%2Fi3-focus-group/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCsunset%2Fi3-focus-group/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCsunset%2Fi3-focus-group/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DCsunset","download_url":"https://codeload.github.com/DCsunset/i3-focus-group/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DCsunset%2Fi3-focus-group/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35568173,"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-07-17T02:00:06.162Z","response_time":116,"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":[],"created_at":"2024-10-11T02:55:57.308Z","updated_at":"2026-07-17T04:36:06.593Z","avatar_url":"https://github.com/DCsunset.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# i3-focus-group\n\n[![PyPI](https://img.shields.io/pypi/v/i3-focus-group)](https://pypi.org/project/i3-focus-group/)\n[![GitHub](https://img.shields.io/github/license/DCsunset/i3-focus-group?color=blue)](https://github.com/DCsunset/i3-focus-group)\n\nCreate a group for i3/sway containers to easily switch focus between.\n\n## Installation\n\nUsing pip:\n\n```\npip install i3-focus-group\n```\n\nIf you are using Nix, you can install it from NUR.\n\n## Usage\n\ni3-focus-group will listen at a Unix domain socket for incoming requests.\nEach request includes a single line of string as the name of command.\n\nThe following commands are supported:\n\n| Command  | Description                                                          |\n|----------|----------------------------------------------------------------------|\n| add      | Add the current container to the group                               |\n| remove   | Remove the current container from the group                          |\n| toggle   | Toggle the current container (add or remove)                         |\n| clear    | Clear the group (remove all containers)                              |\n| switch   | Focus next container in group and promote this container if in group |\n| peekNext | Focus next container in group but without changing order             |\n| peekPrev | Focus previous container in group but without changing order         |\n\nYou can use any program that supports Unix domain socket to send the request.\nFor example:\n```\necho \"add\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\necho \"switch\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\n```\n\nTo use it with i3/sway, simply add keybindings to run the above commands:\n```\nbindsym Mod4+Tab exec echo \"switch\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\nbindsym Mod4+grave exec echo \"toggle\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\nbindsym Mod4+Shift+grave exec echo \"clear\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\nbindsym Mod4+comma exec echo \"peekPrev\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\nbindsym Mod4+period exec echo \"peekNext\" | socat - $XDG_RUNTIME_DIR/i3-focus-group.sock\n```\n\nFor more command-line options, run `i3-focus-group -h`.\n\n\n## Example\n\n1. To start with, the group with be empty.\n2. Then suppose two containers A, B, and C are added to the group and now C is focused.\n   The group becomes `[C] B A`. (bracket means current focus)\n3. Suppose `switch` command is issued, it will focus on the next container B and promote it to the head.\n   The group becomes `[B] C A`.\n4. Suppose `switch` command is issued again, the group will become `[C] B A`.\n5. Suppose `peekNext` is issued. The focus will change to B but without promoting the container.\n   The group becomes `C [B] A`.\n6. Suppose `peekNext` is issued again. The focus will change to A.\n   The group becomes `C B [A]`.\n7. Suppose `switch` is issued next. A will be promoted first and focus will switch to the next container C.\n   The group becomes `[C] A B`.\n\nIf the current focus not in the group, the next `switch` or `peek` command will focus on the first container in the group.\n\n\n## License\n\n```\ni3-focus-group\nCopyright (C) 2024  DCsusnet\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published\nby the Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcsunset%2Fi3-focus-group","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcsunset%2Fi3-focus-group","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcsunset%2Fi3-focus-group/lists"}