{"id":13908052,"url":"https://github.com/belltown/roku-develop","last_synced_at":"2025-07-18T06:32:41.122Z","repository":{"id":146528307,"uuid":"73759124","full_name":"belltown/roku-develop","owner":"belltown","description":"Roku development utility - zip and deploy a Roku project to multiple devices.","archived":false,"fork":false,"pushed_at":"2019-03-17T00:36:24.000Z","size":734,"stargazers_count":18,"open_issues_count":0,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-06T23:39:14.529Z","etag":null,"topics":["debugger","roku","roku-development"],"latest_commit_sha":null,"homepage":null,"language":"CoffeeScript","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/belltown.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-11-15T00:18:43.000Z","updated_at":"2023-10-11T05:28:24.000Z","dependencies_parsed_at":"2024-01-22T00:03:36.752Z","dependency_job_id":null,"html_url":"https://github.com/belltown/roku-develop","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belltown%2Froku-develop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belltown%2Froku-develop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belltown%2Froku-develop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belltown%2Froku-develop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/belltown","download_url":"https://codeload.github.com/belltown/roku-develop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226361678,"owners_count":17612944,"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":["debugger","roku","roku-development"],"created_at":"2024-08-06T23:02:26.215Z","updated_at":"2024-11-25T16:31:26.589Z","avatar_url":"https://github.com/belltown.png","language":"CoffeeScript","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# [roku-develop](https://atom.io/packages/roku-develop)\n\n### an [ATOM editor](https://atom.io/) package to deploy a Roku project to multiple devices\n\n*Automatically (or manually) discover Rokus on the local network.*\n\n*Zip the current Roku project directory.*\n\n*Deploy to multiple Roku devices.*\n\n*Automatically increment manifest build_version.*\n\n*Create a Package file for the currently-deployed application.*\n\n*Switch between associated .xml and .brs files with keyboard shortcut.*\n\n### Install the package in Atom\n\nGo to Settings \u003ckbd\u003eCtrl+,\u003c/kbd\u003e then **Install**. Search for `roku-develop`.\n\nFor more info on Atom, read the\n[Atom Flight Manual](https://flight-manual.atom.io/).\n\n### Configure settings\n\nGo to Settings \u003ckbd\u003eCtrl+,\u003c/kbd\u003e then **Packages**. Search for `roku-develop`.\n\nEnter the Roku developer settings password. See the Roku\n[Developer Setup Guide](https://developer.roku.com/develop/getting-started/setup-guide) for instructions on\nsetting the Roku developer password.\n**Ensure that Developer Mode is enabled for each Roku device.**\n\n`Default Packaging Device` - the SERIAL NUMBER of the default device to be used for packaging, used if more than one device is checked.\nIf one and only one device is checked in the device list, then the checked device will be used for packaging instead of this default device.\nThis option avoids having to un-check all but one device when packaging, then re-check them if deploying to multiple devices.\n\n`Increment Manifest build_version` - specifies whether\nthe manifest file build_version is incremented when the project is deployed:\n\n- Do not increment\n- Increment\n- Use date: yyyymmdd\n- Use date/time: yymmddhhmm\n\n`Save On Deploy` - automatically save the current file\nbefore deployment.\n\n`Send Home Keypress Before Deploy` - send a Home keypress\nto the device, followed by a short delay, before uploading the\nzip file. This can be used as a workaround to a Roku bug that\ncauses the device to sometimes re-boot when deploying a Scene Graph\nchannel. Uncheck this box for faster deployment, provided the Roku does not crash.\n\n`Automatically discover Rokus on the local network` - if checked, will automatically attempt to discover all Rokus on the local network.\nIf un-checked, will disable automatic discovery, only allowing Roku devices to be manually entered.\n\n#### .rokudevignore\n\nIgnores can optionally be placed in the file `.rokudevignore`. This file should\nreside in the same directory as the manifest file.\n\nRules:\n\n- Lines beginning with a hash (`#`), and blank lines, will not be processed.\n- Lines beginning with an exclamation mark (`!`) specify unignored paths.\n- All other lines specify ignored paths.\n- Any ignored or unignored path name may either be a path name relative to\n  .rokudevignore's containing directory (the project root directory), or\n  a base name of a file or directory that may match anywhere in the\n  directory hierarchy.\n- Unignores can be used to explicitly include a file or directory, even if it is\n  contained within a directory that is being ignored.\n- If a path is both ignored and unignored, then the ignore takes precedence.\n- Path separators in .rokudevignore are forward slashes (even on Windows).\n\n### Keyboard shortcuts\n\nroku-develop uses 4 commands: ```roku-develop:toggle```, ```roku-develop:deploy```, ```roku-develop:package```, and ```roku-develop:switch-files```, which may be selected from the Packages \u003e roku-develop menu, or from the context (right-click) menu.\n\nIn addition, the following keyboard shortcuts are defined by default:\n\n\u003ckbd\u003eCtrl+;\u003c/kbd\u003e (Ctrl-semicolon) - Toggle device list.\n\n\u003ckbd\u003eCtrl+Alt+;\u003c/kbd\u003e (Ctrl-Alt-semicolon) - Deploy to selected devices.\n\n\u003ckbd\u003eAlt+;\u003c/kbd\u003e (Alt-semicolon) - Package the currently-deployed application.\n\n\u003ckbd\u003eCtrl+Alt+X\u003c/kbd\u003e (Ctrl-Alt-x) - Switch between the current component's brs and xml files, if applicable.\n\nIf you find that these particular key combinations don't work well with\nyour keyboard configuration, you can change them:\n\n1. On the roku-develop package Settings page, un-check the 'Enable' box\nunder Keybindings.\n\n2. Edit your Atom keymap.cson file\n(look under **File \u003e Keymap...** or **Edit \u003e Keymap...**),\nthen add your own keybindings. For example, to use \u003ckbd\u003eCtrl+7\u003c/kbd\u003e, \u003ckbd\u003eCtrl+8\u003c/kbd\u003e,\n\u003ckbd\u003eCtrl+9\u003c/kbd\u003e and \u003ckbd\u003eCtrl+0\u003c/kbd\u003e instead, place the following lines at the end of\nyour keymap.cson file:\n\n```\n'atom-workspace':\n  'ctrl-7': 'roku-develop:package'\n  'ctrl-8': 'roku-develop:toggle'\n  'ctrl-9': 'roku-develop:deploy'\n  'ctrl-0': 'roku-develop:switch-files'\n```\n\n### Usage\n\n\u003ckbd\u003eCtrl+;\u003c/kbd\u003e (Ctrl-semicolon) - Toggle device list.\nWait for devices to be automatically discovered,\nthen check the boxes to specify devices for deployment.\nThe state of the device table will be persisted between editor sessions.\nNote that if you have multiple Atom editor instances running,\nchanging a checkbox state in one Atom instance\nmay or may not be reflected in the other Atom instances.\n\n**By default, all newly-discovered devices are checked.\nUncheck the boxes for devices not to be deployed to.**\n\n**To disable automatic discovery, un-check the Settings option for automatic discovery.**\n\n---\n\n\u003ckbd\u003eCtrl+Alt+;\u003c/kbd\u003e (Ctrl-Alt-semicolon) - Deploy to selected devices.\n\n---\n\n\u003ckbd\u003eAlt+;\u003c/kbd\u003e (Alt-semicolon) - Package the currently-deployed application.\n- Roku device must have been keyed using `Genkey` or `Rekey`, (see [https://sdkdocs.roku.com/display/sdkdoc/Packaging+Roku+Channels](https://sdkdocs.roku.com/display/sdkdoc/Packaging+Roku+Channels)).\n- Application packager password (24 chars, e.g. cmqsu1vhB6Q1VVTHI0eGLp==), must have been entered in Settings.\n- If a Default Packaging Device is specified in the Config Settings, it will be used, unless one and only one device is checked.\n- Package must first be deployed to the Roku before it can be packaged.\n- Package will be written to the same directory as the Zip File Directory specified in Settings.\n\n---\n\n\u003ckbd\u003eCtrl+Alt+X\u003c/kbd\u003e (Ctrl-Alt-x) - Switch between the current component's script (\\*.brs) and layout (\\*.xml) files.\n- If the corresponding file is already open in another tab and/or pane, focus will move to that tab/pane.\n- If the file is not open yet, a new tab containing it will be opened under the current active pane.\n- If no corresponding file exists (i.e. the current directory contains only a .brs or only an .xml file), no action will be taken.\n\n---\n\n`Add New Device` button can be used to manually add devices not\nautomatically discovered.\nNote that a device will only be listed (and deployed to) if\nit responds to ECP requests.\n\n---\n\n`Clear List` button will remove all automatically-discovered and manually-added\ndevices from the list.\nAutomatic discovery (if enabled in Settings) will re-add devices.\n\n---\n\n`Hide Unchecked`/`Show Unchecked` button toggles the device list display\nto either show only checked devices (Hide Unchecked), or show all devices\n(Show Unchecked).\n\nWhen deploying a project, one of the project's files needs to be open in the\nactive editor pane on display when the deploy command is issued.\nAn upward search of the directory tree is performed to locate the Roku\nproject's directory (the one containing a `source` directory and\n`manifest` file).\nThe Atom editor may have multiple Roku project directories open,\nbut only the project containing the file currently being edited\nwill be deployed.\nNote that the manifest file must be UTF-8 encoded.\n\n![screenshot](https://github.com/belltown/roku-develop/raw/master/screenshot.png)\n\n### Firewall configuration\n\nAll Roku devices on the local network should automatically be discovered\nusing SSDP M-SEARCH and NOTIFY responses.\nIf not, then ensure your firewall is configured for automatic device discovery.\nThis is more likely to be an issue for certain Linux users.\n\nThe M-SEARCH responses are UDP unicast packets sent to the ephemeral port\nfrom which the M-SEARCH request originated;\nthe ephemeral port range may be found by:\n```\ncat /proc/sys/net/ipv4/ip_local_port_range\n```\nThe NOTIFY responses are UDP multicast packets sent to port 1900.\n\nSo in Fedora or CentOS, for example,\nthe following commands would open these ports:\n\n```\nsudo firewall-cmd --permanent --add-port=1900/udp\nsudo firewall-cmd --permanent --add-port=32768-61000/udp\nsudo firewall-cmd --reload\n```\n\nOn Ubuntu, the firewall is typically disabled by default.\nIf not, a rule like this should work:\n\n```\nsudo ufw allow proto udp from 192.168.0.0/24 port 1900,32768:60999\nsudo ufw reload\n```\n\n### Contribute\n\nSome concepts used in this package were taken from the\n[roku-deploy](https://atom.io/packages/roku-deploy) Atom package by\n[Mike McAulay/mmratio](https://github.com/mmratio).\nThanks for your efforts, Mike.\n\nThanks to [AhmedGamal-Inmobly](https://github.com/AhmedGamal-Inmobly),\n[Rolando Islas](https://github.com/rolandoislas),\nand [Michael Meyer](https://github.com/entrez) for their contributions to this package.\n\nAnother useful package for Roku development is\n[language-brightscript](https://atom.io/packages/language-brightscript),\nwhich provides BrightScript syntax highlighting and snippets.\n[language-vb](https://atom.io/packages/language-vb)\nalso works well with BrightScript.\n\nFeel free to use Github\n[Issues](https://github.com/belltown/roku-develop/issues) or\n[Pull Requests](https://github.com/belltown/roku-develop/pulls)\nfor bug reports and enhancement requests, etc.\n\nYou may also contact the roku-develop author,\n[belltown](https://forums.roku.com/memberlist.php?mode=viewprofile\u0026u=37784),\nthrough the [Roku Forums](https://forums.roku.com/viewforum.php?f=34).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelltown%2Froku-develop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbelltown%2Froku-develop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelltown%2Froku-develop/lists"}