{"id":31605379,"url":"https://github.com/Kiki-Bouba-Team/niri-switch","last_synced_at":"2025-10-06T08:06:39.938Z","repository":{"id":318193780,"uuid":"1025816125","full_name":"Kiki-Bouba-Team/niri-switch","owner":"Kiki-Bouba-Team","description":"Provides task switcher for Niri compositor.","archived":false,"fork":false,"pushed_at":"2025-10-05T18:01:00.000Z","size":87,"stargazers_count":12,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-05T19:12:59.237Z","etag":null,"topics":["alt","niri","tab"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Kiki-Bouba-Team.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":"2025-07-24T21:08:43.000Z","updated_at":"2025-10-05T17:57:59.000Z","dependencies_parsed_at":"2025-10-05T19:13:25.713Z","dependency_job_id":"5be3317b-1967-42a2-9a3e-4173e6f8bc06","html_url":"https://github.com/Kiki-Bouba-Team/niri-switch","commit_stats":null,"previous_names":["kiki-bouba-team/niri-switch"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Kiki-Bouba-Team/niri-switch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiki-Bouba-Team%2Fniri-switch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiki-Bouba-Team%2Fniri-switch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiki-Bouba-Team%2Fniri-switch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiki-Bouba-Team%2Fniri-switch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kiki-Bouba-Team","download_url":"https://codeload.github.com/Kiki-Bouba-Team/niri-switch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiki-Bouba-Team%2Fniri-switch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278577929,"owners_count":26009703,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"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":["alt","niri","tab"],"created_at":"2025-10-06T08:02:15.226Z","updated_at":"2025-10-06T08:06:39.919Z","avatar_url":"https://github.com/Kiki-Bouba-Team.png","language":"Rust","funding_links":[],"categories":["Rust","Tools"],"sub_categories":["Window and Workspace Management"],"readme":"# niri-switch - A niri task switcher\n\nniri-switch implements fast task switching for [niri](https://github.com/YaLTeR/niri) compositor. It aims to provide functionality similar to Alt-Tab known from Windows, Gnome, KDE Plasma and many other desktop environments.\n\nThe main use case is quickly switching between windows located on different displays and/or workspaces.\n\n\u003cimg width=\"577\" height=\"98\" alt=\"image\" src=\"https://github.com/user-attachments/assets/7696337c-70c9-40f5-af96-d92394453def\" /\u003e\n\n\n## Project status\n\nniri-switch is currently **usable** and quite stable. It is still in early development and requires few features to be completed to actually deliver a good user experience. But anyone is welcome to play around with it and provide much appreciated feedback.\n\n## Dependencies\n\n* `niri` - niri-switch needs a running niri session to connect to it via IPC socket.\n* `gtk4`, `gtk4-layer-shell` - needed to display the graphical interface. The minimal required version of GTK4 is `4.12`.\n\nTo install the program you will also need `cargo` - the rust build system. It's usually installed via [rustup](https://www.rust-lang.org/tools/install).\n\n## Getting started\n\nClone the repository and run `cargo install --path ./niri-switch`.\n\nMake sure that `~/.cargo/bin` is in your `$PATH`. You can verify it by running `niri-switch --version`.\n\nNext you need to add following configuration to your niri config at `~/.config/niri/config.kdl`:\n```kdl\nspawn-at-startup \"niri-switch-daemon\"\n\nbinds {\n    // Append to existing binds section\n    Alt+Tab { spawn \"niri-switch\"; }\n}\n```\n\n**After restarting the niri session, niri-switch will be ready to use.**\n\u003e [!NOTE]\n\u003e You can bind the command to any key combination, `Alt+Tab` is just an example.\n\n\u003e [!TIP]\n\u003e Instead of `spawn-at-startup` you can write a custom systemd service for `graphical-session.target` if you want more control over the daemon.\n\n## Navigation\n\nAfter opening the overlay (e.g. via Alt + Tab), you can move around with arrow keys and select a window with Enter. To exit without focusing on any window, press Escape.\n\nReapeted calls to niri-switch will also advance the selection.\n\n## Default themes\n\nniri-switch is based on GTK4 and will use your system's default GTK settings. The config is usually located at `~/.config/gtk-4.0/settings.ini` and can be modified. For example, if you want to use dark theme in niri-switch without any CSS modification, you can add \n```\n[Settings]\ngtk-application-prefer-dark-theme = true\n```\nto the `settings.ini` file (this will have a global effect). Or run the `niri-switch-daemon` with `GTK_THEME` environment variable.\n\n## Customization\n\nYou can customize the look by providing custom `~/.config/niri-switch/style.css` file. The default configuration is located in `src/daemon/gui/style.css`, you can copy and modify it.\n\nTo examine the CSS classes and the widget hierarchy you can run the daemon with debug flag: `GTK_DEBUG=interactive niri-switch-daemon` and play around in the inspector.\n\nGTK supports only a specific subset of CSS properties, you can learn more about it in GTK [documentation](https://docs.gtk.org/gtk4/css-properties.html).\n\nThe configuration is loaded at the daemon startup in this order:\n\n* `$XDG_CONFIG_HOME/niri-switch/style.css` - if the environment variable is set and file exists.\n* `$HOME/.config/niri-switch/style.css` - if the above does not exist or environment variable is not set.\n* Embeded `src/daemon/gui/style.css` - if none of the above exist or needed variables are not set.\n\n## Resources\n\nVery useful materials when working with GTK4 and zbus in Rust:\n* [GUI development with Rust and GTK 4](https://gtk-rs.org/gtk4-rs/stable/latest/book/)\n* [zbus: D-Bus for Rust made easy](https://dbus2.github.io/zbus/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKiki-Bouba-Team%2Fniri-switch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKiki-Bouba-Team%2Fniri-switch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKiki-Bouba-Team%2Fniri-switch/lists"}