{"id":13897307,"url":"https://github.com/fogine/i3-workscreen","last_synced_at":"2025-08-31T20:39:15.966Z","repository":{"id":57437750,"uuid":"123628432","full_name":"fogine/i3-workscreen","owner":"fogine","description":"In i3wm compatible manner - dynamically re-configures your (multi)-monitor setup on the fly when you hotplug/unplug display cabel(s) ","archived":false,"fork":false,"pushed_at":"2021-11-17T18:06:13.000Z","size":21,"stargazers_count":38,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T17:51:12.314Z","etag":null,"topics":["display","i3wm","monitor","udev","workspace","xrandr"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fogine.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2018-03-02T20:39:29.000Z","updated_at":"2024-05-17T15:32:46.000Z","dependencies_parsed_at":"2022-09-15T11:20:45.964Z","dependency_job_id":null,"html_url":"https://github.com/fogine/i3-workscreen","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fogine%2Fi3-workscreen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fogine%2Fi3-workscreen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fogine%2Fi3-workscreen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fogine%2Fi3-workscreen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fogine","download_url":"https://codeload.github.com/fogine/i3-workscreen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251741929,"owners_count":21636344,"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":["display","i3wm","monitor","udev","workspace","xrandr"],"created_at":"2024-08-06T18:03:30.342Z","updated_at":"2025-04-30T16:28:48.611Z","avatar_url":"https://github.com/fogine.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"This utility is for users using i3wm on their laptops who frequently jump between multiple (multi-)monitor setups.  \n\nFor example single display output when you are on road, triple-monitor setup at work and two-monitor setup at home.\n\n``i3-workscreen`` executable provided by this package should be triggered by ``udev`` rule which will listen for specific events caused by plugging/unplugging display output cable(s) (eg.: ``HDMI``). The utility will then enable configured display outputs and reassign existing workspaces based on your ``json`` configuration.\n\nAn example of the ``udev`` rule is provided in the root of the git repository and should be EDITED by the user and copied to ``/etc/udev/rules.d/98-monitor-hotplug.rules`` on you system.  \n\nYou may also need to execute ``i3-workscreen`` in your ``.i3/config`` as the ``udev`` event is emitted way too early on a system startup before the ``X.org`` server is running.  \n\n.. code-block:: bash\n    \n    exec --no-startup-id \"i3-workscreen\"\n\nInstallation:\n-------------\n\n.. code-block:: bash\n    \n    /home/user\u003e pip install git+https://github.com/fogine/i3-workscreen.git\n\n    # or\n\n    /home/user\u003e pip install i3-workscreen\n\n\n\nDependencies:\n-------------\n* ``i3-msg``\n* ``xrandr`` (xlib)\n* ``python 3.5``\n* ``logger`` (write messages into the system log)\n\nConfiguration:\n--------------\n\n\n.. code-block:: bash\n    \n    \n    /home/user\u003e i3-workscreen -h\n\n    usage: i3workscreen.py [-h] [--toggle]\n\n    Required configuration file is fetched from:\n    `$HOME/.config/i3-workscreen/config.json`\n\n    optional arguments:\n      -h, --help  show this help message and exit\n      --toggle    Toggles between mirrored \u0026 extended display mode\n\nThe bellow configuration example shows setup of maximum of three monitors. In this case ``eDP-1`` is my laptop screen and ``HDMI-1`` \u0026 ``DP-1`` are external monitors.\n\nFour scenarios may happen with the configuration:\n\n1. ``eDP-1`` connected, ``HDMI-1`` \u0026 ``DP-1`` disconnected\n\n   In this case all workspaces are assigned to the single screen\n2. ``eDP-1`` connected, ``HDMI-1`` connected, ``DP-1`` disconnected \n\n   In this case workspaces 1-5 belong to ``eDP-1`` and workspaces 6-0 belong to ``HDMI-1``\n3. ``eDP-1`` connected, ``HDMI-1`` disconnected, ``DP-1`` connected \n\n   In this case workspaces 1-5 belong to ``DP-1`` and workspaces 6-0 belong to ``eDP-1``\n4. ``eDP-1`` connected, ``HDMI-1`` connected, ``DP-1`` connected \n\n   In this case workspaces 1-5 belong to ``DP-1`` and workspaces 6-0 belong to ``HDMI-1``.\n   ``eDP-1`` was stolen all workspaces by higher priority outputs and because ``disableEmptyOutputs=true``, ``eDP-1`` display output will be disabled. if the option was set to ``false``, the output would be enabled and you could interact with the connected monitor and ``i3`` would assign to it first ``empty`` workspace (workspace without any windows in it)\n\n.. code-block:: json\n\n    {\n        \"disableEmptyOutputs\": true,\n        \"outputs\": [\n            {\n                \"name\": \"eDP-1\",\n                \"workspaces\": [ \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\" ]\n            },\n            {\n                \"name\": \"HDMI-1\",\n                \"xrandr\": [\"--above\", \"eDP-1\"],\n                \"workspaces\": [ \"6\", \"7\", \"8\", \"9\", \"0\" ]\n            },\n            {\n                \"name\": \"DP-1\",\n                \"workspaces\": [\"1\", \"2\", \"3\", \"4\", \"5\"]\n            }\n        ]\n    }\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffogine%2Fi3-workscreen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffogine%2Fi3-workscreen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffogine%2Fi3-workscreen/lists"}