InfiniteGlass

Logo

Window manager with infinite desktop, infinite zoom and infinite window resolution

View the Project on GitHub redhog/InfiniteGlass

About

GitHub Workflow Status GitHub release (latest by date) GitHub All Releases GitHub license GitHub issues GitHub pull requests GitHub stars

This is a minimalistic compositing window manager for X with infinite desktop, infinite zoom and infinite virtual window pixel resolution.

Screenshot Screenshot

Videos:

Features:

Documentation

Installation

Tested on: Ubuntu-MATE 18.04 LTS Bionic Beaver.

Requires 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:

sudo apt install -y $(cat ./dependencies.txt)

To install InfiniteGlass on your machine

sudo make install

or, if you want to be able to edit the python files in in place without rerunning the install command:

sudo make devinstall

Note that this does not differ from a the above make install with regards to how the non-python binaries are installed.

Once installed, you should be able to select InfiniteGlass among the available sessions when logging in.

Testing

It is also possible to try the window manager inside a window using the Xephyr X server, without installing anything. To do so, simply run

make

If 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

make run-in-docker

Configuration

Whichever 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.

Unit- & integration-tests

make all
pip install nose2
nose2 -s tests -v

License

GNU GPL v3, see the file LICENSE for details

The file xevent.c has a different, more permissible license, see the top of the file for details. The file coastline50.geojson has a different, more permissible license, see coastline50.geojson.LICENSE for details. The file binary_tree_bin_packer.py has a different, more permissible license, see binary_tree_bin_packer.py.LICENSE for details.