{ "info": { "author": "Hiroyuki Ohsaki", "author_email": "ohsaki@lsnl.jp", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: POSIX", "Programming Language :: Python :: 3" ], "description": "# NAME\n\nsendscreen - Display local desktop on remove host over LAN without VGA/HDMI cable\n\n# SYNOPSIS\n\n```\nsendscreen [-vrf] [-s host] [-p port] [-W width] [-H height] [-F #]\n -v verbose mode\n -r receiver mode\n -f full speed mode (no frame rate limit)\n -s host specify receiver hostname/address\n -p port port number\n -W # screen width (default: 800 [pixel])\n -H # screen height (default: 600 [pixel])\n -F # maximum frame rate (default: 10 [frame/second])\n```\n\n# DESCRIPTION\n\nThis manual page documents **sendscreen**, a Python program to continuously\ncapture and transmit the desktop to remote host over LAN (Local Area\nNetworking) using UDP (User Datagram Protocol).\n\n**sendscreen** was developed to eliminate hassles at research meetings in our\nlaboratory. At a meeting, participants bring their own laptops, and during a\nmeeting, they repeatedly (1) take the VGA/HDMI video cable connected to the\nLCD projector, (2) plug the VGA/HDMI video connector to his/her laptop, (3)\nenable the external video output (e.g., by pressing Fn + F7), (4) unplug the\nVGA/HDMI video connector, and (5) pass it to another participant. Such\nawkward procedure had been endlessly performed during the meeting. With\n**sendscreen**, you no longer need to worry about the video cable and enabling\nthe external video output on your laptop.\n\n**sendscreen** works either as a *sender* or a *receiver*. \n**sendscreen** works as a sender by default, and it repeatedly capture the\ndesktop and send the zlib-compressed image (frame) to the receiver. When\ninvoked with `-r` option, **sendscreen** works as a *receiver*. It waits for\nincoming frame data over LAN. When it receives the frame data from a sender,\nthe frame is uncompressed and displayed on the screen of the receiver.\n\n# USAGE\n\nOn a computer connected with the LCD projector:\n\n```sh\nsendscreen -r\n```\n\nOn a client computer:\n\n```sh\nsendscreen -s server_name\n```\nwhere *server_name* is the hostname or the IP address of the receiver.\n\n**sendscreen** uses the UDP protocol with port 5000 by default. Please make\nsure that the sender reaches the port 5000 of the receiver using the UDP\nprotocol; i.e., disalbe the network firewall and packet filtering (e.g.,\n`iptagles -F; iptables -X`).\n\n# OPTIONS\n\n- -v\n\n Verbose mode. **sendscreen** will display additional information during\n execution.\n\n- -r\n\n Receiver mode. **sendscreen** receives frames from a sender in your LAN.\n\n- -f\n\n Full throttle mode. **sendscreen** tries to send frames as fast as\n possible.\n\n- -s host\n\n Specify receiver's hostname or IP address.\n\n- -p port\n\n Port number at which the receiver receives frame data.\n\n- -w width\n\n Specify the screen width (default: 800 [pixel]).\n\n- -h height\n\n Specify the screen height (default: 600 [pixel]).\n\n- -F rate\n\n Maximum frate rate is limited by *rate* (default: 5 [frame/s])\n\n# REQUIREMENTS\n\n**sendscreen** runs on X Window System. It uses Xlib, pygame, and rgbconv\nmodules as well as several Python standard modules. **sendsceeen** assumes a\nTrueType font is available at\n`/usr/share/fonts/truetype/freefont/FreeSans.ttf', which is included in\n*fonts-freefont-ttf* package in Debian GNU/Linux although **sendscreen** works\nwith any TrueType font.\n\n# INTERNALS\n\n**sendscreen** uses its original message format for transferring a frame image\nfrom a sender to the receiver. A message is composed of a 48-byte header and\na compressed frame image. A raw frame image is WIDTH x HEIGHT pixels in RGBX\nformat, which means that the size of every pixel is 32-bit.\n\nA sender of **sendscreen** repeatedly captures its root window using Xlib's\nXGetImage in ZPixmap format. A captured image is converted from the BGRX\nformat to the RGBX format using **rgbconv** Python module. A raw frame image\nis compressed using zlib. A message composed of the message header and the\ncompressed frame image is sent to the receiver as a series of UDP datagrams,\nwhose maximum size is specified by MAX_SEGMENT_SIZE variable.\n\n**sendscreen** implements two transmission modes: full-image and delta-image\nmodes. In full-image mode, a raw frame image captured by the sender is fully\nsent to the receiver. On the contrary, in delta-image mode, only the\ndifference between the current image frame and the previous image frame is\nsent to the receiver. In most cases, the screen of the sender is not much\ndynamic, so using the delta-image mode significantly reduces the amount of\ndata transferred from the sender to the receiver. The current implementation\nof **sendscreen** sends in the full-image mode once every five seconds.\n\nThe receiver of **sendscreen** continuously waits for incoming UDP datagrams.\nIf it successfully receives a message from a sender, the message is decoded\nand the compressed frame image is decompressed. The raw frame image is then\ndisplayed in the window of the receiver. When the receiver receives no\nmessage for one second, the window of the receiver is turned blue to indicate\n*NO SIGNAL* reception from any sender. Note that **sendscreen** does not\nrequire any authentication or handshaking, so multiple **sendscreen** senders\ncan simultaneously connect to the receiver, which is very handy since the\nreceiver requires no intervention from a user to switch among different\n**sendscreen** senders.\n\n# INSTALLATION\n\n```sh\n$ pip3 install sendscreen\n```\n\n# AVAILABILITY\n\nThe latest version of **sendscreen** is available at PyPI\n(https://pypi.org/project/sendscreen/) .\n\n# SEE ALSO\n\nxset(1)\n\n# AUTHOR\n\nHiroyuki Ohsaki \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/h-ohsaki/sendscreen.git", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sendscreen", "package_url": "https://pypi.org/project/sendscreen/", "platform": "", "project_url": "https://pypi.org/project/sendscreen/", "project_urls": { "Homepage": "https://github.com/h-ohsaki/sendscreen.git" }, "release_url": "https://pypi.org/project/sendscreen/1.7/", "requires_dist": [ "Xlib", "perlcompat", "pygame", "rgbconv" ], "requires_python": "", "summary": "Display local desktop on remove host over LAN without VGA/HDMI cable", "version": "1.7" }, "last_serial": 5949546, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "b756e4caeefb2cfd4680c4499cc524e8", "sha256": "08da757db364225d46121dadf343a19895a50b81627d0c303d6664fe8b6bbd99" }, "downloads": -1, "filename": "sendscreen-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b756e4caeefb2cfd4680c4499cc524e8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18100, "upload_time": "2019-07-08T09:31:57", "url": "https://files.pythonhosted.org/packages/ce/7c/0cfbea98f7cf9c7199ce3ba60c358b055d5ea6404cc9801f1e950b254faf/sendscreen-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dba006af39f7c0a2a884c11f8bef5bea", "sha256": "90d4a242767db5ebf1df3486d6e634122a9da0369e46b1cdb90b97450175a0f3" }, "downloads": -1, "filename": "sendscreen-1.0.tar.gz", "has_sig": false, "md5_digest": "dba006af39f7c0a2a884c11f8bef5bea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5603, "upload_time": "2019-07-08T09:32:00", "url": "https://files.pythonhosted.org/packages/88/99/2408a31ede6ccefe450c0278b2b64c91033e47b7c7833209a0fed651659e/sendscreen-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "31ec8b69ba22604c654a7512b36f14e0", "sha256": "33babafd53c3d25f427ad49506e01b06f701618ef95b15356b0e7db21fd63355" }, "downloads": -1, "filename": "sendscreen-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "31ec8b69ba22604c654a7512b36f14e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18106, "upload_time": "2019-07-08T09:40:27", "url": "https://files.pythonhosted.org/packages/72/8d/6ba656ba8f09b8a4d3e104c69c93cd394c53a3a26c3f350fa0cc5de97247/sendscreen-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09f426bbf9893fc8bd7a3c7da819dcab", "sha256": "bb2d3782a1f124487e4299953b01eb62b303106679d5421874f81975b3d53663" }, "downloads": -1, "filename": "sendscreen-1.1.tar.gz", "has_sig": false, "md5_digest": "09f426bbf9893fc8bd7a3c7da819dcab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5607, "upload_time": "2019-07-08T09:40:28", "url": "https://files.pythonhosted.org/packages/7a/e6/dd927846672b1f1f34a1455c9cbe420fdea9fc86978b4111fc54f02c32e1/sendscreen-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "14e0cef5e62b11dd0a5f79162fc02655", "sha256": "00791f35a759bf8edf1941780e428428ed5e3c82f41c13a5c03ddb052051184c" }, "downloads": -1, "filename": "sendscreen-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "14e0cef5e62b11dd0a5f79162fc02655", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18462, "upload_time": "2019-07-09T06:07:27", "url": "https://files.pythonhosted.org/packages/f1/57/76c9f6fe1d08baa717359ee35e43ea87971d343bb9f7f27d8c57a2a79723/sendscreen-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aeab94ce73ae896b2fa463cebcc3eea8", "sha256": "e4ad920142d9f2e417cf5b49c91f1b83745a5ed8a9fdc355e4ff08cdaf5971ce" }, "downloads": -1, "filename": "sendscreen-1.2.tar.gz", "has_sig": false, "md5_digest": "aeab94ce73ae896b2fa463cebcc3eea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5945, "upload_time": "2019-07-09T06:07:28", "url": "https://files.pythonhosted.org/packages/c3/ca/89f0ece46efe45a5a77e6e6476dca4dbbfde348f21055b16897b623fc718/sendscreen-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "83a6646f9ac1d02538a210651f4c31e5", "sha256": "90ad5f9ee899ac579b23b8bcef4a7e9ec873f13b00e051f2eafb7fb8dea6e247" }, "downloads": -1, "filename": "sendscreen-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "83a6646f9ac1d02538a210651f4c31e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18723, "upload_time": "2019-07-09T10:32:14", "url": "https://files.pythonhosted.org/packages/fb/b1/539688d87f539b999e7f13ac59f892c7dbc4d2493728521ed212b43b51bf/sendscreen-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0c3a878ef6f83ce35587a78d0ecf9cc1", "sha256": "8e5d3bf3341983bfd999fb45700d37228fb47ea30db25b923f279c70f252f828" }, "downloads": -1, "filename": "sendscreen-1.3.tar.gz", "has_sig": false, "md5_digest": "0c3a878ef6f83ce35587a78d0ecf9cc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6168, "upload_time": "2019-07-09T10:32:15", "url": "https://files.pythonhosted.org/packages/dd/01/16b8951f2f3e5634041041403f80a69d3e0b2ef7e82930f5bd36683578a8/sendscreen-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "afd43d0242032edb662a400b3a8065dd", "sha256": "d6dc8eb21cffb1836b150d8e8502d7ee684aeddf3f86f1a12b9e2bce79865f41" }, "downloads": -1, "filename": "sendscreen-1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "afd43d0242032edb662a400b3a8065dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19204, "upload_time": "2019-07-09T12:47:15", "url": "https://files.pythonhosted.org/packages/e3/82/e3a228c101ed3a90b9d132ec9ee6c19077c145e975d337ab76e10c7e62d9/sendscreen-1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d89363be57f5a1d271bb442c24b3e938", "sha256": "cd4be11cd0799f0756016cf06846c91f1be68276e317702f72c82652b14e07b7" }, "downloads": -1, "filename": "sendscreen-1.4.tar.gz", "has_sig": false, "md5_digest": "d89363be57f5a1d271bb442c24b3e938", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6626, "upload_time": "2019-07-09T12:47:16", "url": "https://files.pythonhosted.org/packages/0b/c9/248dd684338e4f4c72007d7f409bbaa277395be39f935c5a1fcd287b06d8/sendscreen-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "5fcef49d15ebe190bb50e3bc6b94c530", "sha256": "540b885ca22f16477793150952c19d87463aa87f96a46d3961f8f3ac53d8255f" }, "downloads": -1, "filename": "sendscreen-1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "5fcef49d15ebe190bb50e3bc6b94c530", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19381, "upload_time": "2019-07-09T13:15:27", "url": "https://files.pythonhosted.org/packages/1f/cf/56018ee63f0c87c52aeac7b432339bc59f63b137f5c1f47dae7354f3b50a/sendscreen-1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31bc0934bc2084aa3b56b0ddf21dc542", "sha256": "4c80784e524a88d8dda6d9a81eff69412648c73f24c3d9f9e773751063c905d1" }, "downloads": -1, "filename": "sendscreen-1.5.tar.gz", "has_sig": false, "md5_digest": "31bc0934bc2084aa3b56b0ddf21dc542", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6846, "upload_time": "2019-07-09T13:15:29", "url": "https://files.pythonhosted.org/packages/f0/af/2b414718cc97e13e432768141f68a53d072bda90630be4ed7356c809e7be/sendscreen-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "47fc6d91e24301e24e2a3fe104dea141", "sha256": "3553114ac8fc29ec789fe9725bd55df54e3fbf4e8d261309a816f8ee14eaeaef" }, "downloads": -1, "filename": "sendscreen-1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "47fc6d91e24301e24e2a3fe104dea141", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19385, "upload_time": "2019-07-10T02:49:14", "url": "https://files.pythonhosted.org/packages/98/3e/cd2192b2936154dcd8cd4e4d4c4232ba95aafdabdf568ce97487b74d5266/sendscreen-1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "428e1222ccd4fd10d1200ad32512d08f", "sha256": "0fbb90c48e9a08c3f9a403bf581d2b76275c0d97646ec28ad0f390ea696320bc" }, "downloads": -1, "filename": "sendscreen-1.6.tar.gz", "has_sig": false, "md5_digest": "428e1222ccd4fd10d1200ad32512d08f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6851, "upload_time": "2019-07-10T02:49:16", "url": "https://files.pythonhosted.org/packages/f7/6d/278b4ba8d41fa45090f048129b50bdb5b1a0ac431a26d38ee072a36e1807/sendscreen-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "66ff6900586fa62176964aeb188db1a6", "sha256": "d63da03b06d74b0c4a65bb9bfd920144cf69ea013fbc7489ed910fc44a8a2c74" }, "downloads": -1, "filename": "sendscreen-1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "66ff6900586fa62176964aeb188db1a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20134, "upload_time": "2019-10-09T12:40:04", "url": "https://files.pythonhosted.org/packages/e2/26/5721804737ba067a68ba914ce307c862334a02c7454708d2c62ab06c461a/sendscreen-1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09955f325546d0abcb024ba75112d22a", "sha256": "eed3cf0bd27887a4faeda984645a48b8a21551e907a3561263e10b1d038ee6a7" }, "downloads": -1, "filename": "sendscreen-1.7.tar.gz", "has_sig": false, "md5_digest": "09955f325546d0abcb024ba75112d22a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7729, "upload_time": "2019-10-09T12:40:06", "url": "https://files.pythonhosted.org/packages/be/59/5707bf61b6d20cc143b429c601da17c93e56347b2e386f4b09b6c8c19441/sendscreen-1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "66ff6900586fa62176964aeb188db1a6", "sha256": "d63da03b06d74b0c4a65bb9bfd920144cf69ea013fbc7489ed910fc44a8a2c74" }, "downloads": -1, "filename": "sendscreen-1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "66ff6900586fa62176964aeb188db1a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20134, "upload_time": "2019-10-09T12:40:04", "url": "https://files.pythonhosted.org/packages/e2/26/5721804737ba067a68ba914ce307c862334a02c7454708d2c62ab06c461a/sendscreen-1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09955f325546d0abcb024ba75112d22a", "sha256": "eed3cf0bd27887a4faeda984645a48b8a21551e907a3561263e10b1d038ee6a7" }, "downloads": -1, "filename": "sendscreen-1.7.tar.gz", "has_sig": false, "md5_digest": "09955f325546d0abcb024ba75112d22a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7729, "upload_time": "2019-10-09T12:40:06", "url": "https://files.pythonhosted.org/packages/be/59/5707bf61b6d20cc143b429c601da17c93e56347b2e386f4b09b6c8c19441/sendscreen-1.7.tar.gz" } ] }