{"id":15359792,"url":"https://github.com/redhog/infiniteglass","last_synced_at":"2025-06-18T13:42:01.835Z","repository":{"id":43740551,"uuid":"137677812","full_name":"redhog/InfiniteGlass","owner":"redhog","description":"Window manager with infinite desktop, infinite zoom and infinite window resolution","archived":false,"fork":false,"pushed_at":"2024-05-29T20:46:07.000Z","size":6482,"stargazers_count":41,"open_issues_count":38,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T07:41:41.363Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://redhog.github.io/InfiniteGlass/","language":"Jupyter Notebook","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/redhog.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}},"created_at":"2018-06-17T18:42:52.000Z","updated_at":"2025-04-09T17:26:34.000Z","dependencies_parsed_at":"2024-04-22T10:01:11.310Z","dependency_job_id":"00ef01fd-7f69-45e7-b3ea-a499fca1c408","html_url":"https://github.com/redhog/InfiniteGlass","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/redhog/InfiniteGlass","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhog%2FInfiniteGlass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhog%2FInfiniteGlass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhog%2FInfiniteGlass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhog%2FInfiniteGlass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redhog","download_url":"https://codeload.github.com/redhog/InfiniteGlass/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redhog%2FInfiniteGlass/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260563358,"owners_count":23028543,"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":[],"created_at":"2024-10-01T12:46:19.801Z","updated_at":"2025-06-18T13:41:56.822Z","avatar_url":"https://github.com/redhog.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/redhog/InfiniteGlass/Build%20\u0026%20test?style=plastic)\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/redhog/InfiniteGlass?style=plastic)](https://github.com/redhog/InfiniteGlass/releases/latest)\n![GitHub All Releases](https://img.shields.io/github/downloads/redhog/InfiniteGlass/total?style=plastic)\n[![GitHub license](https://img.shields.io/github/license/redhog/InfiniteGlass?style=plastic)](https://github.com/redhog/InfiniteGlass/blob/master/LICENSE)\n![GitHub issues](https://img.shields.io/github/issues/redhog/InfiniteGlass?style=plastic)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/redhog/InfiniteGlass?style=plastic)\n![GitHub stars](https://img.shields.io/github/stars/redhog/InfiniteGlass?style=plastic)\n\nThis is a minimalistic compositing window manager for X with infinite\ndesktop, infinite zoom and infinite virtual window pixel resolution.\n\n![Screenshot](docs/images/InfiniteGlass-2022-02-23.png)\n[![Screenshot](docs/images/InfiniteGlass-2019-11-09-2.gif)](https://www.youtube.com/watch?v=E8f2KwgvxK4)\n\nVideos:\n* [2022 05 25 1](https://www.youtube.com/watch?v=qf6ZVaHSHyI)\n* [2020 02 18 1](https://www.youtube.com/watch?v=r5XskSML7Ag)\n* [2020 01 27 1](https://www.youtube.com/watch?v=vbt7qtwiLiM)\n* [2020 01 21 1](https://www.youtube.com/watch?v=d6oQAOMXReU)\n* [2019 11 09 2](https://www.youtube.com/watch?v=E8f2KwgvxK4)\n\nFeatures:\n\n* Windows are glued to an infinite desktop to some coordinates and size\n* Window pixel resolution is independent of their size on the desktop\n* The user can zoom / pan to any view of the desktop\n* There are shortcut commands to zoom to a window, and to make a window have a 1:1 resolution to the screen\n* Window placement is stored between sessions\n  * Windows that are closed leave a ghost window in their place that can be moved, resized and deleted.\n  * When a window with the same name reappears, it takes the place of the ghost window if it still exists.\n  * Ghost windows are stored in a file between sessions.\n* Window content / application state is stored between sessions for supported clients\n  * Applications supporting the XSM protocol can be closed and saved and later restored, in the same session or another.\n* Infinitely zoomable SVG for buttons etc\n  * A window can display an SVG image instead of content, and the SVG will render to the current screen resolution, no matter the zoom level.\n\n# Documentation\n\n* Configuration\n  * [Key bindings](docs/KEYMAP.md)\n  * [Sessions](docs/SESSION.md)\n  * [Components](docs/COMPONENTS.md)\n  * [Command line](docs/COMMANDLINE.md)\n  * [Integrations](docs/INTEGRATIONS.md)\n  * [Themes](docs/THEMES.md)\n  * [Debugging](docs/DEBUGGING.md)\n* [Protocols](docs/PROTOCOLS.md)\n* [Python library](docs/LIBRARY.md)\n* [References](docs/REFERENCES.md)\n\n# Installation\n\nTested on: Ubuntu-MATE 18.04 LTS Bionic Beaver.\n\nRequires OpenGL version 3.0 or higher with support for GLSL 3.30, and pretty much all modern X extensions, including their development headers. To install all dependencies:\n\n    sudo apt install -y $(cat ./dependencies.txt)\n\nTo install InfiniteGlass on your machine\n\n    sudo make install\n\nor, if you want to be able to edit the python files in in place without rerunning the install command:\n\n    sudo make devinstall\n   \nNote that this does not differ from a the above make install with regards to how the non-python binaries are installed.\n\nOnce installed, you should be able to select InfiniteGlass among the available sessions when logging in.\n\n# Testing\n\nIt is also possible to try the window manager inside a window using the Xephyr X server, without installing anything. To do so, simply run\n\n    make\n\nIf your Linux distribution does not have the right libraries or versions of libraries (e.g. X extensions, OpenGL version...) easily installable, you can test the same using a docker container! Just run\n\n    make run-in-docker\n\n# Configuration\n\nWhichever method for running it you use, the first time you run the window manager, a set of default config files will be added to your ~/.config/glass directory. These files can be safely edited, but will be re-instated if deleted.\n\n# Unit- \u0026 integration-tests\n\n    make all\n    pip install nose2\n    nose2 -s tests -v\n\n# License\n\nGNU GPL v3, see the file LICENSE for details\n\nThe file xevent.c has a different, more permissible license, see the top of the file for details.\nThe file coastline50.geojson has a different, more permissible license, see coastline50.geojson.LICENSE for details.\nThe file binary_tree_bin_packer.py has a different, more permissible license, see binary_tree_bin_packer.py.LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhog%2Finfiniteglass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredhog%2Finfiniteglass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredhog%2Finfiniteglass/lists"}