{"id":22488962,"url":"https://github.com/domferr/tilingshell","last_synced_at":"2026-01-31T11:03:36.890Z","repository":{"id":223903887,"uuid":"761864264","full_name":"domferr/tilingshell","owner":"domferr","description":"Extend Gnome Shell with advanced tiling window management. Supports multiple monitors, Windows 11 Snap Assistant, Fancy Zones, customised tiling layouts and more.","archived":false,"fork":false,"pushed_at":"2026-01-17T16:57:25.000Z","size":48444,"stargazers_count":1639,"open_issues_count":137,"forks_count":71,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-17T22:22:58.181Z","etag":null,"topics":["fancyzones","gnome","gnome-extension","gnome-shell-extension","hacktoberfest","tiling","tiling-manager","tiling-system","tiling-window-manager","windowmanager"],"latest_commit_sha":null,"homepage":"https://extensions.gnome.org/extension/7065/tiling-shell/","language":"TypeScript","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/domferr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":"domferr","open_collective":null,"ko_fi":"domferr","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"custom":null}},"created_at":"2024-02-22T16:23:49.000Z","updated_at":"2026-01-17T16:55:47.000Z","dependencies_parsed_at":"2025-07-12T09:12:11.929Z","dependency_job_id":"df5b8550-c8f4-4afe-927f-46e28e64ec8d","html_url":"https://github.com/domferr/tilingshell","commit_stats":null,"previous_names":["domferr/modernwindowmanager","domferr/tilingshell"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/domferr/tilingshell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domferr%2Ftilingshell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domferr%2Ftilingshell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domferr%2Ftilingshell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domferr%2Ftilingshell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domferr","download_url":"https://codeload.github.com/domferr/tilingshell/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domferr%2Ftilingshell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28939508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T10:18:23.202Z","status":"ssl_error","status_checked_at":"2026-01-31T10:18:22.693Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fancyzones","gnome","gnome-extension","gnome-shell-extension","hacktoberfest","tiling","tiling-manager","tiling-system","tiling-window-manager","windowmanager"],"created_at":"2024-12-06T17:18:59.305Z","updated_at":"2026-01-31T11:03:36.885Z","avatar_url":"https://github.com/domferr.png","language":"TypeScript","funding_links":["https://patreon.com/domferr","https://ko-fi.com/domferr"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/domferr/tilingshell/main/logo.png\" align=\"right\" width=\"76\"/\u003e\n\n[![release](https://img.shields.io/badge/Release_v16-blue?style=for-the-badge)]([https://ko-fi.com/domferr](https://github.com/domferr/tilingshell/releases))\n![](https://img.shields.io/github/license/domferr/tilingshell?style=for-the-badge)\n![](https://img.shields.io/badge/GNOME-42--49-e04196?style=for-the-badge\u0026logo=gnome\u0026logoColor=white)\n[![kofi](https://img.shields.io/badge/Donate_on_Ko--fi-purple?logo=ko-fi\u0026style=for-the-badge)](https://ko-fi.com/domferr)\n[![patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge\u0026logo=patreon\u0026logoColor=white)](https://patreon.com/domferr)\n\n# Tiling Shell #\n\nThis is a Gnome Shell extension implementing modern windows tiling system by extending GNOME's default 2 columns to any layout you want! Can be installed on Gnome Shells from **42 to 49** on X11 and Wayland: the most recent GNOME Shell is supported, and older releases will include all the features and bug fixes!\n\n- 🤩 First and only extension that provides Windows 11's **snap assistant**\n- 🖥️🖥️ **multiple monitors support**, even with different scaling factors!\n- ⚙️ Manage, edit, create and delete layouts with a **built-in editor**\n- 💡 Layouts are not strict, you can **span multiple tiles** if you want\n- 🚀 Automatically sets the same UI of your GNOME theme, for a **seamless integration**!\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://extensions.gnome.org/extension/7065/tiling-shell/\" \u003e\n      \u003cimg src=\"https://img.shields.io/badge/Install%20from-extensions.gnome.org-4A86CF?style=for-the-badge\u0026logo=Gnome\u0026logoColor=white\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cimg src=\"https://github.com/domferr/tilingshell/blob/main/doc/horiz_summary.jpg\" align=\"center\"/\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cspan align=\"center\"\u003eSee here the video overview\u003c/span\u003e\u003c/summary\u003e\n  \n  https://github.com/user-attachments/assets/2905f0a1-ecd4-47b5-a6bc-59f91716e685\n\u003c/details\u003e\n\nHave issues, you want to suggest a new feature or contribute? Please open a new [issue](https://github.com/domferr/tilingshell/issues)!\n\n## Usage ##\n\n| [⬇️](#tiling-system) Tiling System | [⬇️](#snap-assistant) Snap Assistant | [⬇️](#select-a-layout) Select a layout | [⬇️](#select-multiple-tiles) Select multiple tiles |\n|:---|:---|:---|:---|\n| [⬇️](#layout-editor) **Layout editor** | [⬇️](#smart-resize) **Smart resize** | [⬇️](#tile-with-keyboard) **Tile with Keyboard** | [⬇️](#edge-tiling) **Edge Tiling** |\n| [⬇️](#tiling-buttons) **Tiling Buttons** | [⬇️](#per-workspace-layout) **Per-workspace layout** | [⬇️](#auto-tiling) **Auto-tiling** | [⬇️](#tiling-context-menu) **Tiling context menu** |\n| [⬇️](#smart-border-radius) **Smart border radius** | [⬇️](#windows-suggestions) **Windows Suggestions** \n\n## 🎉🎉 Tiling Shell's AWESOME Supporters!\nThank you to the :star2: **amazing** \u003ca href=\"https://patreon.com/domferr\"\u003e\u003cimg src=\"https://img.shields.io/badge/Patreons-F96854?logo=patreon\u0026logoColor=white)\" height=\"14px\"/\u003e\u003ca/\u003e and **everyone** who donated on \u003ca href=\"https://ko-fi.com/domferr\"\u003e\u003cimg src=\"https://img.shields.io/badge/_Ko--fi-794bc4?logo=ko-fi\u0026logoColor=white\" height=\"14px\"/\u003e\u003ca/\u003e! :medal_sports:Sean, Markus Huggler, Kostja Palović, Mike Empey, Miguel and Jesse Dhillon on Patreon:medal_sports: and Zorin OS, Nick, thy-fi, iatanas0v, Chris, wbezs, DaneshManoharan, Tamas, Ivan Banha and many more on Ko-fi! You are on a mission to **make Linux window management better for everyone**!\n\n### Tiling System ###\nWhen grabbing and moving a window, press \u003ckbd\u003eCTRL\u003c/kbd\u003e key to show the tiling layout (you can choose another key from the preferences). When moving on a tile, it will highlight. Ungrab the window to place that window on the highlighted tile.\n\n[tiling_system.webm](https://github.com/domferr/tilingshell/assets/14203981/a45ec416-ad39-458d-9b9f-cddce8b25666)\n\n\u003e This extension and the tiling system also implements Windows PowerToys FancyZones!\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Snap Assistant ###\nWhen grabbing and moving a window, the snap assistant will be available on top of the screen. Move the window near it to activate the snap assistant. While still grabbing the window, move your mouse to the tile you are interested in. By stopping grabbing the window will be tiled to the selected tile!\n\n[snap_assistant.webm](https://github.com/domferr/tilingshell/assets/14203981/33511582-fa92-445e-b1ba-8b08f9a8e43a)\n\n\u003e Snap Assistant's sensibility can be customized from the preferences.\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Select a layout ###\nClick on Tiling Shell's panel indicator and the available layouts will be shown. Select the one you prefer by clicking on it. That layout will be applied to every monitor in case you have more than one.\n\n[layout_selection.webm](https://github.com/domferr/tilingshell/assets/14203981/f4956a34-64e3-4c24-b177-8f9b08fcc45c)\n\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Select multiple tiles ###\n\nThe layout is not strict. You can select multiple tiles too! Just hold \u003ckbd\u003eALT\u003c/kbd\u003e while using the tiling system (you can choose another key from the preferences).\n\n[multiple_selection.webm](https://github.com/domferr/tilingshell/assets/14203981/92b29130-260c-479d-9237-bf5c87427e52)\n\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Layout editor ###\n\n| Split a tile | Split a tile _vertically_ | Delete a tile | Save, close the editor or open the menu |\n|:---:|:---:|:---:|:---:|\n| \u003ckbd\u003eLEFT CLICK\u003c/kbd\u003e | \u003ckbd\u003eLEFT CLICK\u003c/kbd\u003e + \u003ckbd\u003eCTRL\u003c/kbd\u003e | \u003ckbd\u003eRIGHT CLICK\u003c/kbd\u003e | Click the Tiling Shell's icon \u003cimg src=\"https://github.com/domferr/tilingshell/assets/14203981/13e27ec1-6a5d-420f-a87f-8f3df0b34c92\" width=96 /\u003e on the panel. |\n\n[layout_editor.webm](https://github.com/domferr/tilingshell/assets/14203981/c6e05589-69d9-4fa3-a4df-61ee875cf9e1)\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Smart resize ###\n\nYou can resize adjacent tiled windows together!\n\n[Resizing tiled windows](https://github.com/domferr/tilingshell/assets/14203981/da4ef97e-cdbb-4981-a8ab-9ca8cd23d63d)\n\n\u003e It can be enabled/disabled from the preferences\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Tile with Keyboard ###\n\nMove window through the tiles using keyboard shortcuts (\u003ckbd\u003eSUPER\u003c/kbd\u003e+\u003ckbd\u003e←\u003c/kbd\u003e/\u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e/\u003ckbd\u003e→\u003c/kbd\u003e). They can be customized from the preferences!\n\n[Tile with Keyboard Video](https://github.com/user-attachments/assets/6f8dedbb-2733-41d8-8a94-0fa62dffb915)\n\n\u003e It can be enabled/disabled from the preferences\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Edge Tiling ###\n\nYou can tile a window by moving it to the edge.\n\n[Screencast from 2024-06-22 22-12-22.webm](https://github.com/domferr/tilingshell/assets/14203981/6e5a2ba9-cd38-44bb-b791-51e41e07f7a0)\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Tiling Buttons ###\n\nRight-click on a window to use the auto-tile buttons and the snap assistant from there! The auto-tile buttons allow you to tile to the leftmost or rightmost empty tile, based on your selected layout. The \"Move to best tile\" button suggests tiling to the nearest empty tile to the center of the screen.\n\n[Screencast from 2024-07-13 18-21-57.webm](https://github.com/user-attachments/assets/8fd79faa-a476-4b55-b79c-6329e4b59519)\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Per-workspace layout ###\n\nYou can select your favorite layout for each workspace of each monitor.\n\n[per-workspace](https://github.com/user-attachments/assets/41226602-5950-47d1-bbf6-3d7ff3e265fb)\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Auto-tiling ###\n\nWhen a window is created, it is automatically moved to the best tile according to where other windows are tiled and the current layout. This is disabled by default and can be enabled in the preferences.\n\n[automatic_tiling](https://github.com/user-attachments/assets/76abc53f-2c6d-47ab-bee3-bbcdd946f2a1)\n\n### Export and import layouts ###\n\n*Tiling Shell* supports importing and exporting its layouts to a JSON file. With this you can create your own custom layouts without the built-in graphical editor, or share your layouts with others! If you are interested into knowing more about the contents of the layout file check the official [documentation](./doc/json-internal-documentation.md).\n\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Tiling context menu ###\n\nRight-click on a window to use the auto-tile buttons and the snap assistant from there! These buttons allow you to tile to the leftmost or rightmost empty tile, based on your selected layout. The \"Move to best tile\" button suggests tiling to the nearest empty tile to the center of the screen.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/d660779a-7549-4858-b149-59edad076483\" width=520/\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eCheck the demonstration video to see it in action!\u003c/p\u003e\n\n[Screencast from 2024-07-13 18-21-57.webm](https://github.com/user-attachments/assets/8fd79faa-a476-4b55-b79c-6329e4b59519)\n\n\u003e The original idea was to show the snap assistant when hovering the maximize button (as it is done on Windows 11). Unfortunately, GNOME doesn't let us handle the hovering of the maximize button or add another button near it...\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Smart border radius ###\n\nIn GNOME, different windows may have different border radius. Drawing a border around the focused window is hard because it is not possible to know the window border radius. All the existing extensions just draw a border with a static value, making the UI less polished. Tiling Shell, **dynamically** computes the focused window border radius at runtime. Moreover, if you have an extension or anything else who customize the border radius, the focused window border radius adapts as well! This can be enabled/disabled from the extension's preferences too.\n\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/cfaca5f9-d9b2-4739-9426-1aebb5f33c29\" width=304 /\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/8e68abff-66e5-4b85-a6ce-0bd2da7be166\" width=332 /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n### Windows Suggestions ###\n\nAfter placing a window in a tile using the tiling system, snap assistant or active screen edges, you’ll see suggestions for other windows to fill the remaining tiles. Got too many windows open? No problem! If all suggestions don’t fit within the available space, you’ll get a **scrollable list** for quick and easy navigation. See it in action:\n\nhttps://github.com/user-attachments/assets/fbf68458-199d-490b-90cf-3e976d5b511b\n\n_Can I choose to opt in or out?_\n\nYes. From the extension's preferences you find a section called Windows Suggestions. You can enable and disable windows suggestions for tiling system, snap assistant and screen edges. You can choose which of the three to keep enabled, or all of them, to personalize for your needs and preferences. \n\n\u003cp align=\"right\"\u003e\u003cb\u003eGo to Usage\u003c/b\u003e \u003ca href=\"#usage\"\u003e⬆️\u003c/a\u003e\u003c/p\u003e\n\n## Installation\n\nThis extension is published on [extensions.gnome.org](https://extensions.gnome.org/extension/7065/tiling-shell/)! You can install from there or install manually. By installing from [extensions.gnome.org](https://extensions.gnome.org/extension/7065/tiling-shell/) you will always have the latest update.\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://extensions.gnome.org/extension/7065/tiling-shell/\" \u003e\n      \u003cimg src=\"https://img.shields.io/badge/Install%20from-extensions.gnome.org-4A86CF?style=for-the-badge\u0026logo=Gnome\u0026logoColor=white\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n### Install manually\nDownload the latest [release](https://github.com/domferr/tilingshell/releases). Extract the downloaded archive. Copy the folder to `~/.local/share/gnome-shell/extensions` directory. You need to reload GNOME Shell afterwards (e.g. by logging out). Then you can enable the extension:\n```bash\n/usr/bin/gnome-extensions enable tilingshell@ferrarodomenico.com\n```\n\n### Install via Source\n\nClone the repo then run ```npm i``` to install dependencies and then run ```npm run build``` to build the extension. To finally install the extension run\n```bash\nnpm run install:extension\n```\nYou can restart your GNOME shell e.g. logout then login, or restart in place with an `alt-F2` and entering `r` (X11 only) and enable the extension. Enjoy it!\nTo enable via the command line you can run \n```bash\n/usr/bin/gnome-extensions enable tilingshell@ferrarodomenico.com\n```\n\nTo read the logs you can run\n\n```bash\njournalctl --follow /usr/bin/gnome-shell\n```\n\nTo read the logs of the preferences you can run\n\n```bash\njournalctl -f -o cat /usr/bin/gjs\n```\n### Uninstall Tiling Shell\n\nTo uninstall, first disable the extension and then remove it. To disable via the command line you can run \n```bash\n/usr/bin/gnome-extensions disable tilingshell@ferrarodomenico.com\n```\n\n## Contributing\n\nFeel free to submit [issues](https://github.com/domferr/tilingshell/issues/new/choose) and [Pull Requests](https://github.com/domferr/tilingshell/pulls)!\n\n### How to add new keybindings\n\n1. Edit the file `resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml` and add a new key with a name, default empty value and a summary. For example, add the following if the name is `highlight-current-window` and the summary is `Minimize all the other windows and show only the focused window`:\n```xml\n\u003ckey type=\"as\" name=\"highlight-current-window\"\u003e\n  \u003cdefault\u003e\u003c![CDATA[['']]]\u003e\u003c/default\u003e\n  \u003csummary\u003eMinimize all the other windows and show only the focused window\u003c/summary\u003e\n\u003c/key\u003e\n```\n\n2. Edit the file `src/settings/settings.ts` and add a static constant at the end of the list of the static constants (for example [here](https://github.com/domferr/tilingshell/blob/8a1f21620d5d8f1db7c5b6b45c0ef0c483801420/src/settings/settings.ts#L138)). The static constant must be a string equal to the key name. The constant name must start with `SETTING_` and must be the key name capitalized and using underscores. For example if the key name is `highlight-current-window`, add this to the file:\n```js\nstatic SETTING_HIGHLIGHT_CURRENT_WINDOW = 'highlight-current-window';\n```\n\n3. Edit the file `src/keybindings.ts` by adding a new signal with a name equal to the key name. Be sure to put `Meta.Display.$gtype` followed by all the parameter types you need (if any). For example, if the key name is `highlight-current-window` and it doesn't need any parameter, add this:\n```js\n'highlight-current-window': {\n    param_types: [Meta.Display.$gtype], // Meta.Display,\n},\n```\n\n4. The idea is that, when the user presses the keybindings, the Keybinding singleton class will emit that signal. To achieve that, edit the file `src/keybindings.ts` by emitting the signal when the keybindings are used, for example [here](https://github.com/domferr/tilingshell/blob/8a1f21620d5d8f1db7c5b6b45c0ef0c483801420/src/keybindings.ts#L223). For example if the key name is `highlight-current-window`, add this:\n```js\nMain.wm.addKeybinding(\n    Settings.SETTING_HIGHLIGHT_CURRENT_WINDOW,\n    extensionSettings,\n    Meta.KeyBindingFlags.NONE,\n    Shell.ActionMode.NORMAL,\n    (display: Meta.Display) =\u003e {\n        this.emit('highlight-current-window', display);\n    },\n);\n```\nYou can put after `display` all the parameters you need (if any).\n\n5. Ensure you disable the keybindings when the extension is disabled. To achieve that edit the file `src/keybindings.ts` to remove the keybindings, for example [here](https://github.com/domferr/tilingshell/blob/8a1f21620d5d8f1db7c5b6b45c0ef0c483801420/src/keybindings.ts#L318). For example, if the key name is `highlight-current-window` then add this:\n```js\nMain.wm.removeKeybinding(Settings.SETTING_HIGHLIGHT_CURRENT_WINDOW);\n```\n\n6. You can now listen to the keybindings from everywhere by just connecting to the signal. A good place to do so is in the `src/extension.ts` file, for example [here](https://github.com/domferr/tilingshell/blob/8a1f21620d5d8f1db7c5b6b45c0ef0c483801420/src/extension.ts#L264). For example, if the key name is `highlight-current-window` then add this:\n```js\nthis._signals.connect(\n  this._keybindings,\n  'highlight-current-window',\n  (kb: KeyBindings, dp: Meta.Display) =\u003e {\n      // handle the keybinding and perform the actions you want\n      // to happen when the keybinding is used by the user\n      ...\n  },\n);\n```\n\n7. Edit the file `src/prefs.ts` to allow the user to choose its preferred keybindings. This can be easily done by adding a new entry in the `keybindings` array. For example by adding a new entry [here](https://github.com/domferr/tilingshell/blob/8a1f21620d5d8f1db7c5b6b45c0ef0c483801420/src/prefs.ts#L639). For example, if the key name is `highlight-current-window` then add this:\n```js\n[\n    Settings.SETTING_HIGHLIGHT_CURRENT_WINDOW,\n    _('Highlight focused window'),\n    _('Minimize all the other windows and show only the focused window'),\n    false,\n    false,\n],\n```\nThe first element is the settings key, the second element is the title and the third is the description. The fourth is a boolean used by the preferences to store if that setting is set or not. The last is a boolean that indicates whether or not this setting must be on the main page, otherwise it can be accessed by expanding the list of available keybindings. However, any keybinding set by the user is always put on the main page.\n_Please use the same description you wrote in the schema at step 1._\n\nFor any problem, doubts or if you are stuck, feel free to open a pull request with what you have already done. I'm more than happy to help!\n\n## Vagrant\n\n```\nThe private key to connect to the machine via SSH must be owned\nby the user running Vagrant. This is a strict requirement from\nSSH itself. Please fix the following key to be owned by the user\nrunning Vagrant:\n```\n\nIf you are running on a NTFS file system then you have to move out the key:\n```\nmv /path/to/box/virtualbox/private_key $HOME/.ssh/vagrant_key\nln -sr $HOME/.ssh/vagrant_key /path/to/box/virtualbox/private_key\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomferr%2Ftilingshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomferr%2Ftilingshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomferr%2Ftilingshell/lists"}