{"id":18434649,"url":"https://github.com/schneegans/desktop-cube","last_synced_at":"2025-05-15T06:06:30.035Z","repository":{"id":37291952,"uuid":"435608854","full_name":"Schneegans/Desktop-Cube","owner":"Schneegans","description":"🧊 Indulge in nostalgia with useless 3D effects.","archived":false,"fork":false,"pushed_at":"2025-03-08T13:04:08.000Z","size":14701,"stargazers_count":670,"open_issues_count":18,"forks_count":23,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-14T10:42:46.524Z","etag":null,"topics":["3d-desktop","gjs","gnome","gnome-shell","gnome-shell-extension"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/Schneegans.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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},"funding":{"github":"schneegans","ko_fi":"schneegans","custom":["https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE","https://schneegans.cb.id"]}},"created_at":"2021-12-06T18:43:13.000Z","updated_at":"2025-04-10T14:44:39.000Z","dependencies_parsed_at":"2023-11-21T21:27:08.630Z","dependency_job_id":"20514d10-6fc3-4995-a5f8-c65159307bbc","html_url":"https://github.com/Schneegans/Desktop-Cube","commit_stats":{"total_commits":491,"total_committers":47,"mean_commits":"10.446808510638299","dds":"0.24236252545824843","last_synced_commit":"615bdaa0dc30976b21cdff8d20e9f81fb139e601"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Schneegans%2FDesktop-Cube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Schneegans%2FDesktop-Cube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Schneegans%2FDesktop-Cube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Schneegans%2FDesktop-Cube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Schneegans","download_url":"https://codeload.github.com/Schneegans/Desktop-Cube/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254283339,"owners_count":22045140,"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":["3d-desktop","gjs","gnome","gnome-shell","gnome-shell-extension"],"created_at":"2024-11-06T06:04:47.446Z","updated_at":"2025-05-15T06:06:25.025Z","avatar_url":"https://github.com/Schneegans.png","language":"JavaScript","funding_links":["https://github.com/sponsors/schneegans","https://ko-fi.com/schneegans","https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE","https://schneegans.cb.id","https://github.com/sponsors/Schneegans"],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: Simon Schneegans \u003ccode@simonschneegans.de\u003e\nSPDX-License-Identifier: CC-BY-4.0\n--\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=J7pdnkv7v1A\"\u003e\u003cimg src =\"docs/pics/teaser.jpg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eA Desktop Cube for GNOME Shell\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://extensions.gnome.org/extension/4648/desktop-cube/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Download-extensions.gnome.org-e67f4d.svg?logo=gnome\u0026logoColor=lightgrey\u0026labelColor=303030\" /\u003e\u003c/a\u003e\u003cbr/\u003e\n  \u003ca href=\"https://github.com/Schneegans/Desktop-Cube/actions\"\u003e\u003cimg src=\"https://github.com/Schneegans/Desktop-Cube/workflows/Checks/badge.svg?branch=main\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://api.reuse.software/info/github.com/Schneegans/Desktop-Cube\"\u003e\u003cimg src=\"https://api.reuse.software/badge/github.com/Schneegans/Desktop-Cube\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://schneegans.github.io/sponsors/\"\u003e\u003cimg src=\"https://gist.githubusercontent.com/Schneegans/2d06edf0937c480951feb86b9e719304/raw/weekly.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://hosted.weblate.org/engage/desktop-cube/\"\u003e\u003cimg src=\"https://img.shields.io/weblate/progress/desktop-cube?label=Translated\u0026logo=weblate\u0026logoColor=lightgray\u0026labelColor=303030\" /\u003e\u003c/a\u003e\n  \u003ca href=\"scripts/cloc.sh\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Schneegans/66479de801ea8e0f6a1cf084cd37ffe8/raw/loc.json\" /\u003e\u003c/a\u003e\n  \u003ca href=\"scripts/cloc.sh\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Schneegans/66479de801ea8e0f6a1cf084cd37ffe8/raw/comments.json\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!IMPORTANT]\n\u003e The code in the `main` branch is for GNOME Shell 45+. For older GNOME versions, please use the `gnome-40-41` or `gnome-42-44` branches respectively.\n\nWhen I started using Linux more than a decade ago, it was because of the 3D desktop cube of Compiz.\nEven if this was a pretty useless feature, I am still missing it today.\nTherefore, I decided to create a similar effect for GNOME Shell.\nIf you like it, you may also be interested in other nostalgic extensions, such as [Compiz windows effects](https://extensions.gnome.org/extension/3210/compiz-windows-effect/), or [Burn-My-Windows](https://extensions.gnome.org/extension/4679/burn-my-windows/)!\n\nFor a list of things changed in previous releases, you can have a look at the [changelog](docs/changelog.md)!\n\n## 🎉 Features\n\n|                 ![feature01](docs/pics/feature01.gif) \u003cbr\u003e **3D Overview:** The extension arranges the workspaces in the overview in a cube-like fashion.                 |                ![feature02](docs/pics/feature02.gif) \u003cbr\u003e **3D Workspaces:** Also, when switching workspaces with touch gestures or keyboard shortcuts, the cube is shown.                 |\n| :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n| ![feature03](docs/pics/feature03.gif) \u003cbr\u003e **Click and drag the desktop to rotate the cube:** You can click and drag anywhere on the desktop to start rotating the cube!  | ![feature04](docs/pics/feature04.gif) \u003cbr\u003e **Click and drag the panel to rotate the cube:** You can also trigger the cube by dragging on the panel. This is useful with maximized windows. |\n| ![feature05](docs/pics/feature05.gif) \u003cbr\u003e **Click and drag the overview to rotate the cube:** You can also click and drag the overview's background to rotate the cube.  |             ![feature06](docs/pics/feature06.gif) \u003cbr\u003e **Explode the cube on vertical rotations:** If you rotate the cube up or down, the 3D effect will become more intense.              |\n| ![feature07](docs/pics/feature07.gif) \u003cbr\u003e **Smooth transitions between Desktop, Overview, and App Drawer:** If you enter the app-drawer mode, the cube will be unfolded. |            ![feature08](docs/pics/feature08.gif) \u003cbr\u003e **Dynamic workspaces:** The extension supports any number of workspaces. So it's actually not a cube most of the time...             |\n|                      ![feature09](docs/pics/feature09.gif) \u003cbr\u003e **Background panoramas:** You can select an image which will be used as 360° skybox.                      |          ![feature10](docs/pics/feature10.gif) \u003cbr\u003e **Drag windows to other workspaces:** You can directly drag windows to adjacent workspaces. This also works in the overview.           |\n\n## 🪲 Limitations\n\nIssues are tracked [here on GitHub](https://github.com/Schneegans/Desktop-Cube/issues). There are currently two main known limitations:\n\n- **No wrap-around:** In GNOME Shell, it is not possible to change from the last to the first workspace. The Desktop-Cube extension does not change this.\n- **Bad multi-monitor support on X11:** On X11, GNOME Shell uses the same projection and view matrices for all monitors. The extension can modify these matrices so that the projection center of the virtual camera is in front of the current monitor. However, the cube looks somewhat sheared on setups with multiple monitors if the cube is shown on all monitors.\n\n## 💞 Show that you love the Desktop Cube!\n\n[![kofi](https://img.shields.io/badge/Donate-on_Ko--fi-ff5e5b?logo=ko-fi)](https://ko-fi.com/schneegans)\n[![github](https://img.shields.io/badge/Donate-on_GitHub-purple?logo=github)](https://github.com/sponsors/Schneegans)\n[![paypal](https://img.shields.io/badge/Donate-on_PayPal-009cde?logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE)\n[![crypto](https://img.shields.io/badge/Donate-some_Crypto-f7931a?logo=bitcoin)](https://schneegans.cb.id)\n\nWhile coding new features or translating the Desktop Cube is the most awesome way to contribute, providing financial support will encourage me to invest my spare time for developing free and open-source software.\n\n**These awesome people have already donated to the development of my open-source projects:**\n\n\u003ca href=\"https://schneegans.github.io/sponsors/\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://schneegans.github.io/sponsors/sponsors_dark_small.svg\"\u003e\n    \u003cimg alt=\"Sponsors List\" src=\"https://schneegans.github.io/sponsors/sponsors_light_small.svg#gh-light-mode-only\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\nDo you want to show that you love it too? If you donate via [Ko-fi](https://ko-fi.com/schneegans), [GitHub](https://github.com/sponsors/Schneegans), or [PayPal](https://www.paypal.com/donate/?hosted_button_id=3F7UFL8KLVPXE), you will show up in this list as well!\n\n## ⬇️ Installation\n\nYou can either install the Desktop Cube extension from extensions.gnome.org (a), download a stable release\nfrom GitHub (b) or clone the latest version directly with `git` (c).\n\n### a) Installing from extensions.gnome.org\n\nThis is the easiest way to install the Desktop Cube extension. Just head over to\n[extensions.gnome.org](https://extensions.gnome.org/extension/4648/desktop-cube) and flip the switch!\nIf you want to use a more up-to-date version, you can try one of the methods listed below.\n\n### b) Downloading a Stable Release\n\nExecute this command to download the latest stable release:\n\n```bash\nwget https://github.com/Schneegans/Desktop-Cube/releases/latest/download/desktop-cube@schneegans.github.com.zip\n```\n\nInstall it by executing the following command. If you have the Desktop Cube extension already installed and want to upgrade to\nthe latest version, append the `--force` flag in order to overwrite existing installs of the Desktop Cube extension.\n\n```bash\ngnome-extensions install desktop-cube@schneegans.github.com.zip\n```\n\nThen restart GNOME Shell with \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eF2\u003c/kbd\u003e, \u003ckbd\u003er\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e.\nOr logout / login if you are on Wayland.\nThen you can enable the extension with the _Gnome Tweak Tool_, the _Extensions_ application or with this command:\n\n```bash\ngnome-extensions enable desktop-cube@schneegans.github.com\n```\n\n### c) Cloning the Latest Version with `git`\n\nYou should **not** clone the Desktop Cube extension directly to the `~/.local/share/gnome-shell/extensions` directory as this may get overridden occasionally!\nExecute the clone command below where you want to have the source code of the extension.\n\n```bash\ngit clone https://github.com/Schneegans/Desktop-Cube.git\ncd Desktop-Cube\n```\n\nIf your GNOME Shell version is \u003c= 45, you will have to checkout the `gnome-42-44` branch:\n\n```bash\ngit checkout gnome-42-44\n```\n\nNow you will have to install the extension.\nThe `make` command below compiles the locales, schemas and resources, creates a zip file of the extension and finally installs it with the `gnome-extensions` tool.\n\n```bash\nmake install\n```\n\nThen restart GNOME Shell with \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eF2\u003c/kbd\u003e, \u003ckbd\u003er\u003c/kbd\u003e + \u003ckbd\u003eEnter\u003c/kbd\u003e.\nOr logout / login if you are on Wayland.\nThen you can enable the extension with the _Gnome Tweak Tool_, the _Extensions_ application or with this command:\n\n```bash\ngnome-extensions enable desktop-cube@schneegans.github.com\n```\n\n## :octocat: I want to contribute!\n\nThat's great!\nHere are some basic rules to get you started:\nCommits should start with a Capital letter and should be written in present tense (e.g. **:tada: Add cool new feature** instead of **:tada: Added cool new feature**).\nYou should also start your commit message with **one** applicable emoji.\nThis does not only look great but also makes you rethink what to add to a commit. Make many but small commits!\n\n| Emoji                                                     | Description                                                               |\n| --------------------------------------------------------- | ------------------------------------------------------------------------- |\n| :tada: `:tada:`                                           | When you added a cool new feature.                                        |\n| :wrench: `:wrench:`                                       | When you added a piece of code.                                           |\n| :recycle: `:recycle:`                                     | When you refactored a part of the code.                                   |\n| :sparkles: `:sparkles:`                                   | When you applied clang-format.                                            |\n| :globe_with_meridians: `:globe_with_meridians:`           | When you worked on translations.                                          |\n| :art: `:art:`                                             | When you improved / added assets like themes.                             |\n| :lipstick: `:lipstick:`                                   | When you worked on the UI of the preferences dialog.                      |\n| :rocket: `:rocket:`                                       | When you improved performance.                                            |\n| :memo: `:memo:`                                           | When you wrote documentation.                                             |\n| :beetle: `:beetle:`                                       | When you fixed a bug.                                                     |\n| :revolving_hearts: `:revolving_hearts:`                   | When a new sponsor is added or credits are updated.                       |\n| :heavy_check_mark: `:heavy_check_mark:`                   | When you worked on checks or adjusted the code to be compliant with them. |\n| :twisted_rightwards_arrows: `:twisted_rightwards_arrows:` | When you merged a branch.                                                 |\n| :fire: `:fire:`                                           | When you removed something.                                               |\n| :truck: `:truck:`                                         | When you moved / renamed something.                                       |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneegans%2Fdesktop-cube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschneegans%2Fdesktop-cube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneegans%2Fdesktop-cube/lists"}