{"id":13436785,"url":"https://github.com/material-shell/material-shell","last_synced_at":"2025-05-14T03:09:05.983Z","repository":{"id":37090090,"uuid":"184571651","full_name":"material-shell/material-shell","owner":"material-shell","description":"A modern desktop interface for Linux. Improve your user experience and get rid of the anarchy of traditional desktop workflows. Designed to simplify navigation and reduce the need to manipulate windows in order to improve productivity. It's meant to be 100% predictable and bring the benefits of tools coveted by professionals to everyone.","archived":false,"fork":false,"pushed_at":"2024-07-22T08:04:02.000Z","size":69717,"stargazers_count":7271,"open_issues_count":279,"forks_count":182,"subscribers_count":82,"default_branch":"main","last_synced_at":"2024-10-29T15:03:23.379Z","etag":null,"topics":["gnome","gnome-shell","gnome-shell-extension","hacktoberfest","linux","material","material-design","material-shell","materialshell","tiling-window-manager"],"latest_commit_sha":null,"homepage":"https://material-shell.com","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/material-shell.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},"funding":{"github":["PapyElGringo"],"patreon":"PapyElGringo"}},"created_at":"2019-05-02T11:48:15.000Z","updated_at":"2024-10-28T13:50:23.000Z","dependencies_parsed_at":"2023-02-08T06:46:05.632Z","dependency_job_id":"62f499f2-9531-4bc9-b814-31bd0e4cf6f8","html_url":"https://github.com/material-shell/material-shell","commit_stats":null,"previous_names":["papyelgringo/material-shell"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/material-shell%2Fmaterial-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/material-shell%2Fmaterial-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/material-shell%2Fmaterial-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/material-shell%2Fmaterial-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/material-shell","download_url":"https://codeload.github.com/material-shell/material-shell/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059508,"owners_count":22007768,"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":["gnome","gnome-shell","gnome-shell-extension","hacktoberfest","linux","material","material-design","material-shell","materialshell","tiling-window-manager"],"created_at":"2024-07-31T03:00:52.095Z","updated_at":"2025-05-14T03:09:00.974Z","avatar_url":"https://github.com/material-shell.png","language":"TypeScript","readme":"⚠️ ‎‎ Material Shell is in transition to become [Veshell](https://github.com/free-explorers/veshell) and if you are interested in the reasons that motivated this decision\nyou should read [this letter](/documentation/letter_for_material_shell_users.md) from PapyElGringo\n\n---\n\n![Material Shell](/documentation/on-all-full.svg)\n\n---\n\n\u003cp align=\"center\"\u003e\n        A \u003cb\u003emodern desktop interface\u003c/b\u003e for \u003cb\u003eLinux\u003c/b\u003e extending \u003cb\u003e\u003ca href=\"https://wiki.gnome.org/Projects/GnomeShell\"\u003eGNOME Shell\u003c/a\u003e\u003c/b\u003e.\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\nProviding a \u003cb\u003eunique\u003c/b\u003e, \u003cb\u003esimple\u003c/b\u003e, \u003cb\u003eproductivity-oriented\u003c/b\u003e, \u003cb\u003einnovative\u003c/b\u003e and \u003cb\u003eautomated\u003c/b\u003e \u003cb\u003emouse and keyboard \u003ca href=\"#workflow\"\u003eworkflow\u003c/a\u003e\u003c/b\u003e which aims to be \u003cb\u003efaster\u003c/b\u003e and \u003cb\u003eeasier\u003c/b\u003e to use and creates a \u003cb\u003egreat user experience\u003c/b\u003e.\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n        Powered by its unique \u003cb\u003e\u003ca href=\"#spatial-model\"\u003espatial model\u003c/a\u003e\u003c/b\u003e, its modern \u003cb\u003e\u003ca href=\"#interface\"\u003ematerial design interface\u003c/a\u003e\u003c/b\u003e, its \u003cb\u003e\u003ca href=\"#tiling-engine\"\u003etiling engine\u003c/a\u003e\u003c/b\u003e and its \u003cb\u003e\u003ca href=\"#persistence\"\u003epersistability\u003c/a\u003e\u003c/b\u003e.\n\u003c/p\u003e\n\u003ctable \u003e\n\u003ctd  width=\"2400\" border=\"0\"\u003e\n\u003ch4 align=\"center\" valign=\"middle\"\u003e\nGet notified about updates and join us at ‎‎\u003ca href=\"https://discord.gg/vBb7D9a\"\u003e\n        \u003cimg valign=\"middle\" src=\"https://img.shields.io/discord/584783412959641716?logo=discord\u0026style=for-the-badge\"\n            alt=\"chat on Discord\"\u003e\n\u003c/a\u003e\n\u003c/h4\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#workflow\"\u003eWorkflow\u003c/a\u003e •\n  \u003ca href=\"#hotkeys\"\u003eHotkeys\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#uninstallation-\"\u003eUninstallation\u003c/a\u003e •\n  \u003ca href=\"#history\"\u003eHistory\u003c/a\u003e •\n  \u003ca href=\"#crypto-funding\"\u003eSupport\u003c/a\u003e\n\u003c/p\u003e\n\u003c/td\u003e\n\u003ctd  width=\"1400\"\u003e\n\u003ca href=\"https://get.trbu.app\"\u003e\n\u003cimg valign=\"middle\" src=\"https://get.trbu.app/assets/promo.png\"\n            alt=\"Discover Tribu\"\u003e\n\u003c/a\u003e\n\u003c/td\u003e\n\u003c/table\u003e\n\n---\n\n![Demo GIF](documentation/general_showcase.gif)\n\n---\n\n# Workflow\n\nCreated to **simplify** navigation and **reduce** the need to **manipulate** windows in order to **improve productivity**. It's meant to be 100% **predictable** and bring the benefits of tools coveted by professionals to everyone.\n\n## Spatial Model\n\nThis is the **core** of the **workflow** and what everything is built around and in our case it's one of the simplest: **a Grid**\n\n\u003cp align=\"center\" valign=\"middle\"\u003e\n \u003cimg align=\"center\" valign=\"middle\" src=\"./documentation/spatialisation.gif\"\n            alt=\"Spatialisation illustrated\"\u003e\n\u003c/p\u003e\n\nA **Workspace** is an applications container that can be **visualized as a row** and **applications as cells**.\n\nEvery **new application** is **automatically positioned** inside this grid at the end of its workspace row and every **new workspaces** are **appended at the bottom** which is very **predictable** and **always sorted automatically**.\n\nThis allows us to provide **intuitive navigation** by moving the screen around a larger context. Navigating **up** and **down** will change the current workspace and navigating **left** and **right** changes the current window(s) on screen.\n\nYou can organize your applications by use cases as **activities** or by applications type as **categories**.\n\n## Interface\n\nDesigned to represent the **state** of the **workflow** and provide **navigation** capabilities for both a **mouse** and a **touchscreen**.\n\n### Layout\n\nThe interface is divided in **two parts**:\n\nIn the **left panel** everything pertains to the **system**: workspaces state, current system status, notifications, etc.\n\nOn the **right** of the left panel everything pertains to the **active workspace**: the windows on the workspace's row, the layout switcher, and the windows themselves.\n\n\u003cp align=\"center\" valign=\"middle\"\u003e\n \u003cimg align=\"center\" valign=\"middle\" src=\"./documentation/interface_showcase.gif\"\n            alt=\"Interface layout illustrated\"\u003e\n\u003c/p\u003e\n\nThe two most important components are the **system panel** (on the left) and the **workspace panel** (on the top).\n\n#### System panel\n\nThe system panel is the main component of the left side of the interface. It consists of:\n\n-   **Workspace list and switcher**: This component lists all the workspaces available and the currently selected one. It allows us to navigate to a specific workspace by clicking on its icon.\n-   **System tray**: This component lists all the information about the system, e.g. network status, bluetooth connectivity, volume, battery, and notification icons.\n\n#### Workspace panel\n\nThe workspace panel is the main component of the right side of the interface. It consists of:\n\n-   **App switcher**: This component lists all the application windows opened in the current workspace's row and the currently focused one. It allows us to navigate to a specific window within the row by selecting its item.\n-   **Layout switcher**: This component displays the current layout of the workspace and can be clicked to switch to the next available layout.\n\n### Design\n\nMade by following the **[Material Design guidelines](https://material.io)** - a solid baseline that allows us to provide an **aesthetically pleasing** and **highly accessible** interface.\n\n### Themes\n\nYou can choose between 3 different themes:\n\n-   Dark\n-   Light\n-   Primary (Colorful one)\n\nAnd there is also a **blurry** version available for the more fancy ones !\n\n## Tiling engine\n\nIt's the **tool** that **automatically organize** the application's **window** for you in a **predictable** and mutually **non-overlapping** disposition.\n\n\u003cp align=\"center\" valign=\"middle\"\u003e\n \u003cimg align=\"center\" valign=\"middle\" src=\"./documentation/tiling_showcase.gif\"\n            alt=\"Tiling engine illustrated\"\u003e\n\u003c/p\u003e\n\n**Choose** at **any time** which tiling layout suit the most for your need:\n\n-   **Maximize**: Single window at a time\n-   **Split**: 2 windows side by side\n-   **Simple**: All windows evenly split and stacked along horizontal or vertical axis (useful for ultra wide monitor)\n-   **Half**: One master window on the left then others windows stacked to the right\n-   **Grid**: All windows displayed as a grid\n\n## Persistence\n\nThe **best way** to **configure** the desktop layout is to **not** have to **do it**.\n\nMaterial Shell **keeps track** of every **decision** relative to the desktop layout: where are windows, in which workspaces, and in which order.\n\nThis allows **configuration** of the layouts **on the go** while using it.\n\nWhen opening a **new session** Material Shell will **restore every window** previously present with a \"**window placeholder** which allows you to reopen any of the previous windows easily at the same spot you like to have them.\n\n## Hotkeys\n\nSome hotkeys might already be used by GNOME Shell - please check your keybindings first.\n\n#### Desktop navigation\n\n-   `Super+W` Navigate to the upper workspace/category.\n-   `Super+S` Navigate to the lower workspace/category.\n-   `Super+A` Focus the window at the left of the current window.\n-   `Super+D` Focus the window at the right of the current window.\n-   `Super+1`, `Super+2` ... `Super+0` Navigate to specific workspace\n\n#### Window manipulation\n\n-   `Super+Q` Kill the current window focused.\n-   `Super+[MouseDrag]` Move window around.\n-   `Super+Shift+A` Move the current window to the left.\n-   `Super+Shift+D` Move the current window to the right.\n-   `Super+Shift+W` Move the current window to the upper workspace.\n-   `Super+Shift+S` Move the current window to the lower workspace.\n\n#### Extra Hotkeys\n\n-   `Super+Space` Cycle the tiling layout of the current workspace.\n-   `Super+Escape` Toggle the UI of Material-shell, like a Zen mode.\n\n# Installation\n\nYou can install the extension either using the gnome extensions website, or directly from source.\n\n## Get it in two clicks\n\n-   Navigate to [extensions.gnome.org](https://extensions.gnome.org/extension/3357/material-shell/)\n-   Switch the toggle ON\n\n## Get the most up to date version with Git\n\n1. Check your GNOME Shell version as we only support **gnome-shell \u003e= 40.0**\n\n2. Download the extension. Depending on your distribution, there are several ways to acquire it:\n\n| Install via          | Command                                                                                                                 |\n| :------------------- | :---------------------------------------------------------------------------------------------------------------------- |\n| extensions.gnome.org | Navigate to [extensions.gnome.org](https://extensions.gnome.org/extension/3357/material-shell/) \u0026\u0026 switch the toggle ON |\n| source               | `git clone https://github.com/material-shell/material-shell.git \u0026\u0026 cd material-shell \u0026\u0026 make install`                   |\n\n(We appreciate package maintainers! If you would like to make a package available for your distro please submit a PR so it can be added here!)\n\n3. Reload GNOME Shell:\n    - On X.org: Hit `Alt+F2` and type the command `r`\n    - On Wayland: Log out and back in\n4. Open `gnome-tweaks` and activate the `Material Shell` extension **OR** enable it using\n\n```bash\ngnome-extensions enable material-shell@papyelgringo\n```\n\n## Recommended Additional Configuration\n\n-   GTK and GNOME Shell theme: [Plata Theme](https://gitlab.com/tista500/plata-theme)\n-   Icon theme: [Tela Icon Theme](https://github.com/vinceliuice/Tela-icon-theme)\n\n## For Multi Monitor with different scaling factor to work properly\n\nYou need to enable Wayland Fractionnal Scaling capabilities with:\n\n```\ngsettings set org.gnome.mutter experimental-features \"['scale-monitor-framebuffer']\"\n```\n\nNote that it current have the downside to make XWayland window to possibly become blurry\n\n# Reset Material Shell\n\n## Reset the Material Shell persistent state\n\nIf you have some weird behavior or a degradation over time, it can be a good idea to try to reset the Material Shell state.\n\n1. Open Looking Glass tool by pressing `Alt + F2` and type `lg`\n2. Copy and paste the command `global.set_persistent_state('material-shell-state',new GLib.Variant('s', '{}'));`\n3. Reload the shell by either pressing `Alt + F2` and type `r` (does not work on Wayland), or log out and then log in again.\n\n## Reset the Material Shell settings\n\nIf you want to discard all the changes of Material Shell settings and reset to default (Including keybindings)\n\n1. Open a terminal and copy/paste `dconf reset -f /org/gnome/shell/extensions/materialshell/`\n\n# Uninstallation 😢\n\nWe're sad to see you go. Before you uninstall, leave us some feedback by [opening an issue](https://github.com/material-shell/material-shell/issues/new/choose) - it will be very helpful in improving Material Shell.\n\n1. Open `gnome-tweaks` and disable the `Material Shell` extension **OR** disable it using\n\n```bash\ngnome-extensions disable material-shell@papyelgringo\n```\n\n2. Delete the extension directory.\n\n```bash\nrm -rf ~/.local/share/gnome-shell/extensions/material-shell@papyelgringo\n```\n\nif you miss the minimize and maximize button on windows titlebar you can restore them with\n\n```bash\n/usr/bin/gsettings set org.gnome.desktop.wm.preferences button-layout :minimize,maximize,close\n```\n\n# History\n\nThe project is based on my earlier work on [Material Awesome](https://github.com/PapyElGringo/material-awesome).\n\n# Crypto Funding\n\nIf you interested in funding the project throught crypto feel free to use:\n\n**Bitcoin** `395nVybx6h6CC4sWgGGcvCDxwLvGMFhfiA`\n\n**Ethereum** `0x45360f24f03f2a8a964f7c083815336912cba837`\n\n**Monero** `82YGUymQLZ3cWPw2kEfjTphjUJLCN3M2eX3dPxRhrBeKSoUUoj4TEHAGToPoZA8AfhSGEKa9FdZjmGKAMSBxcrgHQMRZu3v`\n","funding_links":["https://github.com/sponsors/PapyElGringo","https://patreon.com/PapyElGringo"],"categories":["JavaScript","HarmonyOS","TypeScript","material-design","Tool"],"sub_categories":["Windows Manager","Desktop Tool"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterial-shell%2Fmaterial-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterial-shell%2Fmaterial-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterial-shell%2Fmaterial-shell/lists"}