{ "info": { "author": "Ashwin Vishnu Mohanan", "author_email": "ashwinvis+gh@pm.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "xrandr-extend\n=============\n\n\n[![image](https://img.shields.io/pypi/v/xrandr_extend.svg)](https://pypi.python.org/pypi/xrandr_extend)\n![python versions](https://img.shields.io/pypi/pyversions/xrandr-extend.svg)\n[![image](https://img.shields.io/travis/ashwinvis/xrandr-extend.svg)](https://travis-ci.org/ashwinvis/xrandr-extend)\n\nExtend a HIDPI screen to a normal DPI external display. This command line tool\nimplements various solutions described in the [HIDPI Arch Linux wiki\npage](https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays).\n\n* Free software: GNU General Public License v3\n\n[![asciicast](https://asciinema.org/a/mauTEQ1eHLajl2TiF0ZEH5k3X.svg)](https://asciinema.org/a/mauTEQ1eHLajl2TiF0ZEH5k3X)\n\n## Installation\n\n```sh\npip install xrandr-extend --user\n```\n\nor alternatively use [pipx](https://pipxproject.github.io/pipx/docs/):\n\n```sh\npipx install xrandr-extend\n```\n\n## Configuration\n```sh\npython -m xrandr_extend.config\n```\nThis creates a file `~/.config/xrandr-extend.cfg` which looks like this:\n\n```ini\n[provider:modesetting]\nprimary = eDP-1\nhdmi = HDMI-1\nvga = DP-1\n\n[provider:intel]\nprimary = eDP1\nhdmi = HDMI1\nvga = DP1\n\n[resolutions]\nprimary = 3200, 1800\nhdmi = 1920, 1080\nvga = 1920, 1200\n\n# [scaling]\n# primary = 1.0\n# hdmi = 2.0\n# vga = 2.0\n```\n\nThe first few sections have the name in the format `[provider:display_driver]`.\nRun `xrandr --listproviders` to find what your system has. The values in this\nsection should be given as `profile = monitor_name`, as in the output of\n`xrandr --listmonitors` command. You may even remove existing sections and\nadd more sections for your *display driver*.\n\nEach line in the `[resolutions]` section signifies a *resolution profile* in\nthe format `profile = [width_in_pixels, height_in_pixels]`. The *profile*\n`primary` should contain the resolution of your built-in display. You may edit\nor remove the remaining values `hdmi` and `vga`.\n\nThe `[scaling]` section contains the scale factors, which if uncommented,\noverrides the scale factor computed from the resolutions.\n\n## Quick reference\n\n```console\nusage: xrandr-extend [-h] [-p PRI_RES PRI_RES] [-e EXT_RES EXT_RES]\n [-x EXT_SCALE] [-m] [-n] [-o] [-s] [-d]\n profile\n\nExtend a HIDPI screen to a normal DPI external display\n\npositional arguments:\n profile Use preset external resolution profiles (available:\n ['hdmi', 'vga']).\n\noptional arguments:\n -h, --help show this help message and exit\n -p PRI_RES PRI_RES, --pri-res PRI_RES PRI_RES\n Modify preset resolution of primary display (default:\n 3200, 1800)\n -e EXT_RES EXT_RES, --ext-res EXT_RES EXT_RES\n Modify preset resolution of external display (default\n based on profile)\n -x EXT_SCALE, --ext-scale EXT_SCALE\n Sets the scale factor of external display (DPI of\n primary display / DPI of external display), overriding\n scale factor estimation from resolutions\n -m, --mirror Mirror the external display\n -n, --pan Pan the position of external display\n -o, --only Extend and use only external display\n -s, --pos Set the position of external display explicitly\n -d, --dry-run Preview command without executing it\n\nExamples\n--------\n# Built-in options or user-configured options are used when only the display\n# profile is mentioned\n\n$ xrandr-extend --dry-run vga\n$ xrandr-extend vga\n$ xrandr-extend hdmi\n\n# Other options to extend the display\n\n$ xrandr-extend --pan hdmi\n$ xrandr-extend --only hdmi\n$ xrandr-extend -e 1024 768 -n vga # Pan with custom external resolution\n$ xrandr-extend -x 2.0 hdmi # Custom scale factor\n```\n\n# Credits\n\nThis package was created with\n[Cookiecutter](https://github.com/audreyr/cookiecutter) and the\n[ashwinvis/cookiecutter-pypackage](https://github.com/ashwinvis/cookiecutter-pypackage)\nproject template.\n\n# History\n\n0.2.0 (2019-07-15)\n------------------\n\n* New optional option `-x` or `--ext-scale` for the scaling factor (PR #4, #5)\n\n0.1.1 (2019-05-16)\n------------------\n\n* Correct command `xrandr_extend` -> `xrandr-extend`\n\n0.1.0 (2019-05-16)\n------------------\n\n* Flicker correction\n* Use cookiecutter to generate src layout\n\n0.0.3\n-----\n\n* Deploy to PyPI\n* Reorganize as a package and allow for configuration\n* Use `pkg_resources` to find `default.cfg`\n\n0.0.2\n-----\n\n* Simpler defaults which uses only scaling factors\n* Parse args only inside `__main__` and do not run any commands during dry run\n* Less bugs\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ashwinvis/xrandr_extend", "keywords": "xrandr,hidpi,linux,external monitor", "license": "GNU General Public License v3", "maintainer": "", "maintainer_email": "", "name": "xrandr-extend", "package_url": "https://pypi.org/project/xrandr-extend/", "platform": "", "project_url": "https://pypi.org/project/xrandr-extend/", "project_urls": { "Homepage": "https://github.com/ashwinvis/xrandr_extend" }, "release_url": "https://pypi.org/project/xrandr-extend/0.2.0/", "requires_dist": [ "sphinx (==2.0.1) ; extra == 'dev'", "recommonmark (>=0.5.0) ; extra == 'dev'", "sphinx-rtd-theme (==0.4.3) ; extra == 'dev'", "numpydoc ; extra == 'dev'", "pytest ; extra == 'dev'", "pytest-runner ; extra == 'dev'", "bumpversion (==0.5.3) ; extra == 'dev'", "watchdog (==0.9.0) ; extra == 'dev'", "flake8 (==3.5.0) ; extra == 'dev'", "tox (==3.5.2) ; extra == 'dev'", "coverage (==4.5.1) ; extra == 'dev'", "twine (==1.13.0) ; extra == 'dev'", "readme-renderer[md] (==24.0) ; extra == 'dev'", "sphinx (==2.0.1) ; extra == 'docs'", "recommonmark (>=0.5.0) ; extra == 'docs'", "sphinx-rtd-theme (==0.4.3) ; extra == 'docs'", "numpydoc ; extra == 'docs'", "pytest ; extra == 'tests'", "pytest-runner ; extra == 'tests'" ], "requires_python": ">=3.5.0", "summary": "Extend a HIDPI screen to a normal DPI external display", "version": "0.2.0" }, "last_serial": 5533937, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "3caee7ba451c061122337a85759f5790", "sha256": "a1e9dfbb93dd936fbc68800fa186a8aa243f3e1485ea60d2367b0b780a0f2ad2" }, "downloads": -1, "filename": "xrandr-extend-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3caee7ba451c061122337a85759f5790", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 4760, "upload_time": "2019-01-02T10:22:19", "url": "https://files.pythonhosted.org/packages/43/2c/c887f4f3c4a627eeb585f97dc8b2d4bad25f7c84cfca6b74f7abb7d0f26a/xrandr-extend-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "6a3bcf69a721cc8b807c58460659f570", "sha256": "3847a02c2d85a3b6d3203ae2642df27469d775e82509f7829923593cd6903abe" }, "downloads": -1, "filename": "xrandr_extend-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a3bcf69a721cc8b807c58460659f570", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8050, "upload_time": "2019-05-16T11:16:38", "url": "https://files.pythonhosted.org/packages/c9/62/a48d91bc5dde6659cca453f6acd515c6ccbed4ee4062daf73d844b6ae6eb/xrandr_extend-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60a390527f4bab4c3aac2189dcad4967", "sha256": "84bd615d4eb076b852418b18c1af37439374d79de37b1505562d02a8f9f5f512" }, "downloads": -1, "filename": "xrandr_extend-0.1.0.tar.gz", "has_sig": false, "md5_digest": "60a390527f4bab4c3aac2189dcad4967", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 17262, "upload_time": "2019-05-16T11:16:39", "url": "https://files.pythonhosted.org/packages/b8/72/cf48bb7bbbdf49ebcae78aa622045524d1e5704075a4ba9152af756a1197/xrandr_extend-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "6863675b7423e05aa1589a6a58cde4d6", "sha256": "adbe2f1ea01655d4537b4b467e0a8db142e7f0a2bd3bad65b89206df98ebdc4c" }, "downloads": -1, "filename": "xrandr_extend-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6863675b7423e05aa1589a6a58cde4d6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8050, "upload_time": "2019-05-16T12:19:49", "url": "https://files.pythonhosted.org/packages/c9/df/b78d99f78f14b5ab20a8e79c0414a97212ea98fafc855b38f356cfe0ca7a/xrandr_extend-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2cd4e7af29542d3c070f3016749cc5a3", "sha256": "446186bb0e1be4715dbdacf42147e21b2d6e47142dc5edd53c62da0103bb544f" }, "downloads": -1, "filename": "xrandr_extend-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2cd4e7af29542d3c070f3016749cc5a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 17262, "upload_time": "2019-05-16T12:19:50", "url": "https://files.pythonhosted.org/packages/f4/6b/a81305542752c51ec8de1900ba9b04fae758386373484d37a823a4024c61/xrandr_extend-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1e8bbc34e53689b1454d0d84e10244b1", "sha256": "357c3a8b9d64c694147896cb89aa62831b315f72219fb7bf88c5a6249a7b0a9d" }, "downloads": -1, "filename": "xrandr_extend-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e8bbc34e53689b1454d0d84e10244b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8530, "upload_time": "2019-07-15T08:56:42", "url": "https://files.pythonhosted.org/packages/a0/81/b073516dcfb308b992bf5ef9efaa2c2d74eadc6fc87ff7b093640c1286be/xrandr_extend-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa509af5786494993c8f272118b64db4", "sha256": "987212b0b57073b7b4dba90b0fd54d3ddf22dba31d89397bac191f66a8443de6" }, "downloads": -1, "filename": "xrandr_extend-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fa509af5786494993c8f272118b64db4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 17853, "upload_time": "2019-07-15T08:56:44", "url": "https://files.pythonhosted.org/packages/9c/f1/2927967cc2a0104a18bfe842e3bf9c58ea2eabac65364507747356465a13/xrandr_extend-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1e8bbc34e53689b1454d0d84e10244b1", "sha256": "357c3a8b9d64c694147896cb89aa62831b315f72219fb7bf88c5a6249a7b0a9d" }, "downloads": -1, "filename": "xrandr_extend-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e8bbc34e53689b1454d0d84e10244b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8530, "upload_time": "2019-07-15T08:56:42", "url": "https://files.pythonhosted.org/packages/a0/81/b073516dcfb308b992bf5ef9efaa2c2d74eadc6fc87ff7b093640c1286be/xrandr_extend-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa509af5786494993c8f272118b64db4", "sha256": "987212b0b57073b7b4dba90b0fd54d3ddf22dba31d89397bac191f66a8443de6" }, "downloads": -1, "filename": "xrandr_extend-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fa509af5786494993c8f272118b64db4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 17853, "upload_time": "2019-07-15T08:56:44", "url": "https://files.pythonhosted.org/packages/9c/f1/2927967cc2a0104a18bfe842e3bf9c58ea2eabac65364507747356465a13/xrandr_extend-0.2.0.tar.gz" } ] }