{ "info": { "author": "hSaria", "author_email": "ping@heysaria.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Programming Language :: Python :: 3", "Topic :: Desktop Environment :: Window Managers", "Topic :: Terminals", "Topic :: Utilities" ], "description": "ClusterTerminal (`cterm`) forwards all keystrokes from a master window to multiple slave windows. Use `cterm` as a method for performing ad hoc tasks, not as a substitute for automation frameworks.\n\n> This is mostly just something I wanted to do out of fun; plenty of similar solutions out there, `tmux` being a very popular one.\n\n![alt text](https://github.com/hSaria/ClusterTerminal/raw/master/.github/ssh_example.gif \"Example output\")\n\n# Installation\n\n pip3 install cterm\n\nClusterTerminal uses the built-in Terminal application of macOS.\n\n# Usage\n\nThe most common use case is controlling multiple SSH sessions simultaneously:\n\n cterm ssh host1 host2\n\nIn addition to the master window, the above will create two slaves windows, like so:\n\n ssh host1\n ssh host2\n\n## Command Arguments\n\nIf you want to pass arguments to the command, include it as part of the command. Beware of character escaping where necessary. For example:\n\n cterm \"ssh -l \\\"some user\\\"\" host1 host2\n\nwhich will expand to:\n\n ssh -l \"some user\" host1\n ssh -l \"some user\" host2\n\n> You could've also used `cterm \"ssh -l 'some user'\" host1 host2` to get the same outcome; I only escaped quotes to demo purposes.\n\n## Item Arguments\n\nSimilar to a command, you can pass per-item arguments (again, beware of character escaping):\n\n cterm ssh \"\\-p 1022 host1\" \"\\-p 2022 host2\"\n\nwhich will expand to:\n\n ssh -p 1022 host1\n ssh -p 2022 host2\n\n# Tips\n\nYou might want to set up an alias for cluster ssh in your `~/.bash_profile`. For instance, `alias cssh=\"cterm ssh\"`, and then call it using `cssh host1 host2`.\n\nIn an alias, you can save your normal settings, like `alias cssh=\"cterm --screen 2 ssh\"` to change the default screen.\n\nIf you specify the same argument twice, the last instance is the one used. This is useful since you may want to overwrite part of your alias, but not all of it. For example, the following will use screen 1:\n\n cterm ssh host1 host2 --screen 2 --screen 1\n\n# Limitations\n\nThe window must be completely opaque as the scripting capabilities of Terminal ignore the alpha component.\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/hSaria/ClusterTerminal", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cterm", "package_url": "https://pypi.org/project/cterm/", "platform": "macOS", "project_url": "https://pypi.org/project/cterm/", "project_urls": { "Homepage": "https://github.com/hSaria/ClusterTerminal" }, "release_url": "https://pypi.org/project/cterm/0.0.8/", "requires_dist": [ "pyobjc-framework-ScriptingBridge (>=5.2)" ], "requires_python": ">=3.6.0", "summary": "Fork your input to multiple Terminal windows", "version": "0.0.8" }, "last_serial": 5563797, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2f8c6dd19341398cf7e61f9cdce86ebe", "sha256": "4a22874e653598090b758b0bc4526a5bf20c3ec7ffdd7a908e6ee8b29348e85f" }, "downloads": -1, "filename": "cterm-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2f8c6dd19341398cf7e61f9cdce86ebe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9305, "upload_time": "2019-06-15T20:54:02", "url": "https://files.pythonhosted.org/packages/d9/e8/a73cd5734bad1f9aff198a3ccecc68a39cab27b36f133385ef63b29ee3cc/cterm-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b556a14765d8aec3b2cfa4509e115c72", "sha256": "1a1f5e93999090e16d677ed75e0203cc973ac921587fb2d2ccbbdec2eb32a0c9" }, "downloads": -1, "filename": "cterm-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b556a14765d8aec3b2cfa4509e115c72", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8218, "upload_time": "2019-06-15T20:54:04", "url": "https://files.pythonhosted.org/packages/7b/f7/0291252958e4dfbe4fc38a316028adb935beaefbe4f85c56ef21d220b8fe/cterm-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "5ed5c116bb9a9873fc868ebbb5e9fdb5", "sha256": "0145e792b94547c10dcf96af868aa9bd452d56ba979eceff05d17fb0cb5687c2" }, "downloads": -1, "filename": "cterm-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5ed5c116bb9a9873fc868ebbb5e9fdb5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9743, "upload_time": "2019-06-16T07:42:57", "url": "https://files.pythonhosted.org/packages/46/29/f5f49641efdab20e8623c78cc647d91291c2e714ebc73125e9732d73797c/cterm-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e68e95925419d63a2b71448bf0c6d25b", "sha256": "b4efd1b7efd02d98557ee2306f015e58277205ed03b23855a8de1c82587e30d7" }, "downloads": -1, "filename": "cterm-0.0.2.tar.gz", "has_sig": false, "md5_digest": "e68e95925419d63a2b71448bf0c6d25b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8660, "upload_time": "2019-06-16T07:42:58", "url": "https://files.pythonhosted.org/packages/d7/79/7511b17f46e5adf3af082b0458f11b3c95316a923f07907dbefcbe8a3198/cterm-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "2542592012d961479101c10765d01e54", "sha256": "90a1c1622a9255fc036752fcfe9b202eed6274be4756c4c5d8a2aa525b2da6d1" }, "downloads": -1, "filename": "cterm-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "2542592012d961479101c10765d01e54", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9943, "upload_time": "2019-06-16T08:50:48", "url": "https://files.pythonhosted.org/packages/b8/bb/9c8bda5ada60747ca0248c2aa909bd6a18e9c0dd3b7cb82fd0b3681dd742/cterm-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6a0fcce885cd4a1d006139d7d1c2524", "sha256": "3fd816221357acdf889176a18f3b33234e1f8acb95529eed1407b6dbc9836a99" }, "downloads": -1, "filename": "cterm-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e6a0fcce885cd4a1d006139d7d1c2524", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8918, "upload_time": "2019-06-16T08:50:50", "url": "https://files.pythonhosted.org/packages/d4/f8/69be4487b2ec8d446a53fe89112ac780c54a5fcba651eaadbb9ef869bfca/cterm-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "80f61be1b60c029f47bf60cb58b8c7f0", "sha256": "c41d6ecc9c871580d97f3e571e5f647714182adf673cd85ab66d94937c44752a" }, "downloads": -1, "filename": "cterm-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "80f61be1b60c029f47bf60cb58b8c7f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9844, "upload_time": "2019-06-16T12:04:07", "url": "https://files.pythonhosted.org/packages/11/76/bb3ac6b5b486d3c9717b905039b7dc462eaa3ac031828a99eb7e04d0b17e/cterm-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24e30622054de77eecfa0eb86638cc07", "sha256": "93173412ca007bb4ff3fd5e5b1faf5379f88944d5898966025728fa035da74d4" }, "downloads": -1, "filename": "cterm-0.0.4.tar.gz", "has_sig": false, "md5_digest": "24e30622054de77eecfa0eb86638cc07", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8772, "upload_time": "2019-06-16T12:04:08", "url": "https://files.pythonhosted.org/packages/19/dd/4e3c1982b3eb0f2012494a17efc44d0e4d13cbdd3ef262baef487969ebd1/cterm-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "71013e665a1f9b6c40ba6aa5a9c5d3c7", "sha256": "bc5a300b823a67cad0588ebd44c82fbb674b196080c5484f47e99a60866685db" }, "downloads": -1, "filename": "cterm-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "71013e665a1f9b6c40ba6aa5a9c5d3c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 11446, "upload_time": "2019-06-17T20:52:31", "url": "https://files.pythonhosted.org/packages/d4/04/4f65c51284c970a1af548cdfba3ff68e2f52745538f9e15361915d2f71a4/cterm-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9587de8657cb68b188b0d9e9631ab666", "sha256": "30acdfe7f39b2638045ea9d334affb9ac7d004065c674bffdea76013571fc0e2" }, "downloads": -1, "filename": "cterm-0.0.5.tar.gz", "has_sig": false, "md5_digest": "9587de8657cb68b188b0d9e9631ab666", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11064, "upload_time": "2019-06-17T20:52:32", "url": "https://files.pythonhosted.org/packages/7a/ae/0899fe058017bc89ce46a09587f424557f9fe93bb02aa32480315732dfef/cterm-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "7678e7171dd5ecc73c3a87690574317c", "sha256": "157c0de9a8132508ddafec21864e08d517aae27533d348268189e424a66c3a34" }, "downloads": -1, "filename": "cterm-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7678e7171dd5ecc73c3a87690574317c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 11652, "upload_time": "2019-06-30T18:26:24", "url": "https://files.pythonhosted.org/packages/8d/be/18711438c1430789a518c6038d824973ded01ea5708c947fc2d3f8f296c4/cterm-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a07ba9b0353e5bc026e30f1bde6ec9b", "sha256": "e765ca363052e22fe5c5ea779b7d8799d299d329ee0008f3db6148ab5a7844fe" }, "downloads": -1, "filename": "cterm-0.0.6.tar.gz", "has_sig": false, "md5_digest": "5a07ba9b0353e5bc026e30f1bde6ec9b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11445, "upload_time": "2019-06-30T18:26:26", "url": "https://files.pythonhosted.org/packages/9a/03/df0268769940a13e9bc26f8636658631e6f3bfc779cb8665c9f11d4fbba5/cterm-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "824e60dbf95c08917bcecb6f73b3a858", "sha256": "302f9784c785965db60e83a3363191a1a3ee14b137db1d9035ffa30dd2cf94a1" }, "downloads": -1, "filename": "cterm-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "824e60dbf95c08917bcecb6f73b3a858", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 11868, "upload_time": "2019-07-07T09:37:32", "url": "https://files.pythonhosted.org/packages/69/c4/f70443a07f3c0f24dc532d3d2d5881c99a643acfa29e23a60301726b0e99/cterm-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d70eeb3ab4be652712dd0e2d206e8738", "sha256": "02ad059be515f937f025346806bb48d9ed447860019333a78555786f9c3dd9d7" }, "downloads": -1, "filename": "cterm-0.0.7.tar.gz", "has_sig": false, "md5_digest": "d70eeb3ab4be652712dd0e2d206e8738", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 11908, "upload_time": "2019-07-07T09:37:33", "url": "https://files.pythonhosted.org/packages/24/fd/eb39b5429f409cf1ef58d30d3fda505b2b0121716a6c7f984f9126d0db22/cterm-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "9991f479d67ac289f21faaabb8c1071c", "sha256": "396701804d5e91aab85d2c6490ef7fa013477f6821e9e2245b525ba4c78e159d" }, "downloads": -1, "filename": "cterm-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "9991f479d67ac289f21faaabb8c1071c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 12001, "upload_time": "2019-07-21T16:17:27", "url": "https://files.pythonhosted.org/packages/06/ef/f4ed4420d336117a13bc1ecac327de33b49933c4332ae5fc2b23f7f8a977/cterm-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b8146e0d333894df709fa28e6640931", "sha256": "9c43a3e44dd77ac8f04ec217f3f55b77be1bcf75171e9029ff7e19cb6b4b6aa4" }, "downloads": -1, "filename": "cterm-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8b8146e0d333894df709fa28e6640931", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12028, "upload_time": "2019-07-21T16:17:28", "url": "https://files.pythonhosted.org/packages/41/d0/90d27cba6c86c6817c40301ac3bf61148254957693768ddd3e0271a25ae0/cterm-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9991f479d67ac289f21faaabb8c1071c", "sha256": "396701804d5e91aab85d2c6490ef7fa013477f6821e9e2245b525ba4c78e159d" }, "downloads": -1, "filename": "cterm-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "9991f479d67ac289f21faaabb8c1071c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 12001, "upload_time": "2019-07-21T16:17:27", "url": "https://files.pythonhosted.org/packages/06/ef/f4ed4420d336117a13bc1ecac327de33b49933c4332ae5fc2b23f7f8a977/cterm-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b8146e0d333894df709fa28e6640931", "sha256": "9c43a3e44dd77ac8f04ec217f3f55b77be1bcf75171e9029ff7e19cb6b4b6aa4" }, "downloads": -1, "filename": "cterm-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8b8146e0d333894df709fa28e6640931", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 12028, "upload_time": "2019-07-21T16:17:28", "url": "https://files.pythonhosted.org/packages/41/d0/90d27cba6c86c6817c40301ac3bf61148254957693768ddd3e0271a25ae0/cterm-0.0.8.tar.gz" } ] }