{"id":23690469,"url":"https://github.com/leukipp/cortile-addons","last_synced_at":"2025-09-02T20:31:19.498Z","repository":{"id":251457178,"uuid":"837471120","full_name":"leukipp/cortile-addons","owner":"leukipp","description":"Python bindings for the linux auto tiling manager cortile.","archived":false,"fork":false,"pushed_at":"2024-11-02T19:48:04.000Z","size":68,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-29T04:48:59.450Z","etag":null,"topics":["dbus","linux","x11"],"latest_commit_sha":null,"homepage":"https://github.com/leukipp/cortile","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/leukipp.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}},"created_at":"2024-08-03T04:44:21.000Z","updated_at":"2024-11-02T19:48:08.000Z","dependencies_parsed_at":"2024-10-28T10:03:26.061Z","dependency_job_id":null,"html_url":"https://github.com/leukipp/cortile-addons","commit_stats":null,"previous_names":["leukipp/cortile-addons"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leukipp%2Fcortile-addons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leukipp%2Fcortile-addons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leukipp%2Fcortile-addons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leukipp%2Fcortile-addons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leukipp","download_url":"https://codeload.github.com/leukipp/cortile-addons/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231806686,"owners_count":18429405,"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":["dbus","linux","x11"],"created_at":"2024-12-30T02:33:09.993Z","updated_at":"2024-12-30T02:33:10.725Z","avatar_url":"https://github.com/leukipp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cortile Addons\n[![Release](https://github.com/leukipp/cortile-addons/actions/workflows/release.yml/badge.svg)](https://github.com/leukipp/cortile-addons/actions/workflows/release.yml)\n[![PyPI](https://img.shields.io/pypi/v/cortile?label=PyPI%20Package)](https://pypi.org/project/cortile)\n\nPython bindings for the linux auto tiling manager cortile.\n\nCortile provides auto tiling for XFCE, LXDE, LXQt, KDE and GNOME (Mate, Deepin, Cinnamon, Budgie) based desktop environments.\nThere is build in support for Openbox, Fluxbox, IceWM, Xfwm, KWin, Marco, Muffin, Mutter and other EWMH compliant window managers using the X11 window system.\n\nThis package only provides the python bindings and does not contain the cortile release binary.\nTo use this package, you need to install the [binary](https://github.com/leukipp/cortile/releases) from the main repository. For more details, please refer to the cortile [README.md](https://github.com/leukipp/cortile?tab=readme-ov-file#addons-) file.\n\n## Installation [![installation](https://img.shields.io/badge/pip-%20Python%20-red?style=flat-square)](#installation-)\nTo get started, install it via `pip`:\n```bash\npip install cortile\n```\n\n### Usage\nIf cortile is installed and running as described [here](https://github.com/leukipp/cortile?tab=readme-ov-file#installation-), the python bindings will connect to the running instance, allowing you to fully communicate with cortile using python:\n\n```python\nfrom cortile import Cortile\n\n# connects to the running cortile instance\nct = Cortile()\n...\n```\n\n## Documentation [![documentation](https://img.shields.io/badge/docstring-%20PEP%20257%20-yellow?style=flat-square)](#documentation-)\nDocumentation is provided through docstring literals, which appear immediately after the definition of a method, class, or module.\nWhile all methods and classes include docstrings, the primary interface for interacting with a running cortile instance is the `Cortile()` class, which is documented here:\n\n\u003cdetails\u003e\u003csummary\u003eclass Cortile()\u003c/summary\u003e\u003cdiv\u003e\n\n\u003ca id=\"cortile/cortile.Cortile.__init__\"\u003e\u003c/a\u003e\n\n#### \\_\\_init\\_\\_\n\n```python\ndef __init__(log: int = Logger.LEVELS.WARN)\n```\n\nInitialize the cortile connector.\n\nThis main class wraps methods of the base connector and should be\nused as primary interface to communicate with a running cortile instance.\n\n**Arguments**:\n\n- `log`: Logging level, default is warn\n\n\u003ca id=\"cortile/cortile.Cortile.log\"\u003e\u003c/a\u003e\n\n#### log\n\n```python\n@property\ndef log() -\u003e Logger\n```\n\nReturn the logger instance.\n\n**Returns**:\n\nLogger instance that writes to syslog\n\n\u003ca id=\"cortile/cortile.Cortile.listen\"\u003e\u003c/a\u003e\n\n#### listen\n\n```python\ndef listen(callback: Callable[[Dict], None] | None) -\u003e None\n```\n\nStart listening for events.\n\n**Arguments**:\n\n- `callback`: Function to call when an event is received\n\n\u003ca id=\"cortile/cortile.Cortile.wait\"\u003e\u003c/a\u003e\n\n#### wait\n\n```python\ndef wait(sleep: float = 0.5) -\u003e None\n```\n\nKeeps the process running for the connector to listen.\n\n**Arguments**:\n\n- `sleep`: Time to sleep in between, default is 0.5 seconds\n\n\u003ca id=\"cortile/cortile.Cortile.close\"\u003e\u003c/a\u003e\n\n#### close\n\n```python\ndef close() -\u003e None\n```\n\nClose the connection gracefully.\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_layout\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_layout\n\n```python\ndef get_active_layout() -\u003e Dict | None\n```\n\nGet the active layout for the current desktop and screen.\n\n**Returns**:\n\nActive layout with tiling enabled or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_layouts\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_layouts\n\n```python\ndef get_active_layouts() -\u003e Iterator[Dict]\n```\n\nGet the active layouts from the workspaces.\n\n**Returns**:\n\nIterator of active layouts with tiling enabled\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_client\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_client\n\n```python\ndef get_active_client() -\u003e Dict | None\n```\n\nGet the current focused client window.\n\n**Returns**:\n\nActive client or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_clients\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_clients\n\n```python\ndef get_active_clients() -\u003e Iterator[Dict]\n```\n\nGet information of clients on the current active screen.\n\n**Returns**:\n\nIterator of tracked clients on the current screen\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_desktop\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_desktop\n\n```python\ndef get_active_desktop() -\u003e int | None\n```\n\nGet the current active desktop.\n\n**Returns**:\n\nActive desktop index or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_active_screen\"\u003e\u003c/a\u003e\n\n#### get\\_active\\_screen\n\n```python\ndef get_active_screen() -\u003e int | None\n```\n\nGet the current active screen.\n\n**Returns**:\n\nActive screen index or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_desktop_count\"\u003e\u003c/a\u003e\n\n#### get\\_desktop\\_count\n\n```python\ndef get_desktop_count() -\u003e int | None\n```\n\nGet the number of desktops.\n\n**Returns**:\n\nNumber of desktops or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_screen_count\"\u003e\u003c/a\u003e\n\n#### get\\_screen\\_count\n\n```python\ndef get_screen_count() -\u003e int | None\n```\n\nGet the number of screens.\n\n**Returns**:\n\nNumber of screens or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_desktop_dimensions\"\u003e\u003c/a\u003e\n\n#### get\\_desktop\\_dimensions\n\n```python\ndef get_desktop_dimensions() -\u003e List[Dict]\n```\n\nGet the dimensions of all desktops.\n\n**Returns**:\n\nLTR sorted list of desktop dimensions or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_screen_dimensions\"\u003e\u003c/a\u003e\n\n#### get\\_screen\\_dimensions\n\n```python\ndef get_screen_dimensions() -\u003e List[Dict]\n```\n\nGet the dimensions of all screens.\n\n**Returns**:\n\nLTR sorted list of screen dimensions or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_clients\"\u003e\u003c/a\u003e\n\n#### get\\_clients\n\n```python\ndef get_clients() -\u003e List[Dict]\n```\n\nGet all the clients information.\n\n**Returns**:\n\nList of tracked clients or None\n\n\u003ca id=\"cortile/cortile.Cortile.get_windows\"\u003e\u003c/a\u003e\n\n#### get\\_windows\n\n```python\ndef get_windows() -\u003e Dict | None\n```\n\nGet all the windows information.\n\n**Returns**:\n\nList of tracked window ids or None\n\n\u003ca id=\"cortile/cortile.Cortile.desktop_switch\"\u003e\u003c/a\u003e\n\n#### desktop\\_switch\n\n```python\ndef desktop_switch(desktop: int) -\u003e bool\n```\n\nSwitch to a different desktop.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop to switch to\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.window_activate\"\u003e\u003c/a\u003e\n\n#### window\\_activate\n\n```python\ndef window_activate(id: int) -\u003e bool\n```\n\nActivate a window by its id.\n\n**Arguments**:\n\n- `id`: Id of the window to activate\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.window_to_desktop\"\u003e\u003c/a\u003e\n\n#### window\\_to\\_desktop\n\n```python\ndef window_to_desktop(id: int, desktop: int) -\u003e bool\n```\n\nMove a window to a different desktop.\n\n**Arguments**:\n\n- `id`: Id of the window to move\n- `desktop`: Index of the desktop to move the window to\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.window_to_position\"\u003e\u003c/a\u003e\n\n#### window\\_to\\_position\n\n```python\ndef window_to_position(id: int, x: int, y: int) -\u003e bool\n```\n\nMove a window to a specific position.\n\n**Arguments**:\n\n- `id`: Id of the window to move\n- `x`: X coordinate to move the window to\n- `y`: Y coordinate to move the window to\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.window_to_screen\"\u003e\u003c/a\u003e\n\n#### window\\_to\\_screen\n\n```python\ndef window_to_screen(id: int, screen: int) -\u003e bool\n```\n\nMove a window to a different screen.\n\n**Arguments**:\n\n- `id`: Id of the window to move\n- `screen`: Index of the screen to move the window to\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_enable\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_enable\n\n```python\ndef action_execute_enable(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `enable` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_disable\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_disable\n\n```python\ndef action_execute_disable(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `disable` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_toggle\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_toggle\n\n```python\ndef action_execute_toggle(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `toggle` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_decoration\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_decoration\n\n```python\ndef action_execute_decoration(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `decoration` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_restore\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_restore\n\n```python\ndef action_execute_restore(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `restore` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_reset\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_reset\n\n```python\ndef action_execute_reset(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `reset` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_cycle_next\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_cycle\\_next\n\n```python\ndef action_execute_cycle_next(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `cycle_next` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_cycle_previous\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_cycle\\_previous\n\n```python\ndef action_execute_cycle_previous(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `cycle_previous` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_vertical_left\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_vertical\\_left\n\n```python\ndef action_execute_layout_vertical_left(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_vertical_left` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_vertical_right\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_vertical\\_right\n\n```python\ndef action_execute_layout_vertical_right(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_vertical_right` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_horizontal_top\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_horizontal\\_top\n\n```python\ndef action_execute_layout_horizontal_top(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_horizontal_top` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_horizontal_bottom\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_horizontal\\_bottom\n\n```python\ndef action_execute_layout_horizontal_bottom(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_horizontal_bottom` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_maximized\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_maximized\n\n```python\ndef action_execute_layout_maximized(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_maximized` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_layout_fullscreen\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_layout\\_fullscreen\n\n```python\ndef action_execute_layout_fullscreen(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `layout_fullscreen` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_slave_increase\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_slave\\_increase\n\n```python\ndef action_execute_slave_increase(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `slave_increase` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_slave_decrease\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_slave\\_decrease\n\n```python\ndef action_execute_slave_decrease(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `slave_decrease` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_master_increase\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_master\\_increase\n\n```python\ndef action_execute_master_increase(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `master_increase` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_master_decrease\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_master\\_decrease\n\n```python\ndef action_execute_master_decrease(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `master_decrease` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_window_next\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_window\\_next\n\n```python\ndef action_execute_window_next(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `window_next` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_window_previous\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_window\\_previous\n\n```python\ndef action_execute_window_previous(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `window_previous` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_screen_next\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_screen\\_next\n\n```python\ndef action_execute_screen_next(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `screen_next` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_screen_previous\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_screen\\_previous\n\n```python\ndef action_execute_screen_previous(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `screen_previous` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_master_make\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_master\\_make\n\n```python\ndef action_execute_master_make(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `master_make` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_master_make_next\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_master\\_make\\_next\n\n```python\ndef action_execute_master_make_next(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `master_make_next` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_master_make_previous\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_master\\_make\\_previous\n\n```python\ndef action_execute_master_make_previous(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `master_make_previous` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_proportion_increase\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_proportion\\_increase\n\n```python\ndef action_execute_proportion_increase(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `proportion_increase` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003ca id=\"cortile/cortile.Cortile.action_execute_proportion_decrease\"\u003e\u003c/a\u003e\n\n#### action\\_execute\\_proportion\\_decrease\n\n```python\ndef action_execute_proportion_decrease(desktop: int, screen: int) -\u003e bool\n```\n\nExecute the `proportion_decrease` action.\n\n**Arguments**:\n\n- `desktop`: Index of the desktop\n- `screen`: Index of the screen\n\n**Returns**:\n\nTrue if successful, False otherwise\n\n\u003c/div\u003e\u003c/details\u003e\n\n## Examples [![examples](https://img.shields.io/badge/scripts-%20Examples%20-blue?style=flat-square)](#examples-)\nTo help you get started quickly, example scripts are available in the [examples](https://github.com/leukipp/cortile-addons/tree/main/examples) folder.\n\nThese scripts demonstrate various use cases and can serve as a practical guide to utilizing the full potential of cortile through python.\nFeel free to explore these resources to make the most out of your cortile setup.\n\n## Integration [![integration](https://img.shields.io/github/go-mod/go-version/leukipp/cortile?label=go\u0026style=flat-square)](#integration-)\nYou can execute a script on demand or trigger it by any other external means.\nTo ensure a script is activated every time cortile starts, place it in a folder named addons within the cortile configuration directory, e.g. `~/.config/cortile/addons/`.\n\nAny executable script (`chmod +x script_name.py`) in this folder will automatically run when cortile starts.\nThe script will execute with the same user permission and environment as cortile, so python and additional required dependencies (`pip packages`) must be available in this environment.\n\nThe output from python’s `print()` function and error logs within the script will appear in the terminal where cortile is running. Depending on the log level, additional messages from the script will be written to the system log (`cat /var/log/syslog`).\n\n### Compatibility\nSince the python integration relies on internal cortile properties and the provided interfaces via dbus, it’s crucial that all custom scripts are compatible with the running cortile instance.\n\nThis table provides the officially supported combination of versions:\n| Addons (Python) | Cortile (go) |\n| --------------- | ------------ |\n| v1.0.0          | v2.5.1       |\n| v1.0.1          | v2.5.1       |\n| v1.0.1          | v2.5.2       |\n\n## Contributing [![contributing](https://img.shields.io/github/issues-pr-closed/leukipp/cortile-addons?style=flat-square)](#contributing-)\nContributions into the [examples](https://github.com/leukipp/cortile-addons/tree/main/examples) folder are greatly welcomed!\n\nIf you have a script that could benefit the community, please submit a pull request.\nInclude a brief explanation of the script in the header comment (refer to existing files for guidance).\nThe script should be runnable or serve at least as a useful skeleton for others.\n\n## License [![license](https://img.shields.io/github/license/leukipp/cortile-addons?style=flat-square)](#license-)\n[MIT](https://github.com/leukipp/cortile-addons/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleukipp%2Fcortile-addons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleukipp%2Fcortile-addons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleukipp%2Fcortile-addons/lists"}