{"_id":"balena-electron-env","_rev":"41-dfc7066f53e9ccc88e2883ec8573aa71","name":"balena-electron-env","dist-tags":{"nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70":"1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70","thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a":"1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a","latest":"1.2.11","build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021":"1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1","build-mcraa-flowzone":"1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1"},"versions":{"1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72":{"name":"balena-electron-env","version":"1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"660ca8dfbed14ad101aac616b19d1ae344a786ad","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72.tgz","fileCount":53,"integrity":"sha512-srfrP4zalKbYKY/VKXUOykur6Pq6njhQAvfb4+oUaG5BXkmcPpK5xNViISNabO+wCFLJJJplKdbV9QRSmqfr7Q==","signatures":[{"sig":"MEUCIQDVpFWVkf46K6QaTEP1Bhkd0C4N0trbsXU+sS0j65o3ZwIgY1TnBKWy9UzET7QeNHokwNC05c7A08+3tn4o6G5m+Sc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":701332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbE+UCRA9TVsSAnZWagAAavIP/1o1TMFHUyy43zm5LJuX\nQ2Sq97VxqN75ap388MbaiUG5tWkdIdLB5Kzsm2iSAdibHf9N4ck2btJgsplY\nqE6sdID12JvY6nNEwU9FL0arRmElP/oLKPpV2GLtH3Kg5F7zp7QcPTHWZk2N\nWmR5AIWIj0894Vfkqb+hKvCsr95KSQJtZJALQEdzkxSfpcQC9SrQmocstU8H\npGZ42YbR5hubozJNSGcc6HXFk0yuYYSNJfwNxkbw8lgAESCTrHdp23ztvbdY\nLjjiFHXLWaAYErc0/RHIeJuRgHZ5ywh4LTSu9Yyjyq+g6TfmPBFCumIpL6h1\n/kjcqpZ2aiFtW+tNg0acvINPN4yf3nrf7+yeqO71FMpzpiJfCOdRse/YDr89\n+1yujxjGZDKr/2uFCTgQADAJhZj2CcBtTgyP0UnB/g284UE98O0p7h8P1CMa\nkUhJaKz0WGoEf9uJo9D7hPXkbSmkU94nIGQ7Oum6mhvvI/ySwxMy2bkBT1OC\ncJcwLmyrTshR/SO+SG53ngglgm8X0NzpnxtLP53D4FzQqNgMl6LbWbLKy+x1\ngV4Ke37DrDk8KDRFxlYGYoI/XWzJyHBDmBevCRBNI7uQFk6syuCAwub7nB9h\nq56EUJxuIDT01jm57nycB6KY0++RWsy3yrc3PpWqOOZcs6hj2xglj+4Hcu/9\nG8Iy\r\n=nVOp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"23359068ddb330ded82c09f7e67792a343724d72","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.11.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.0.12","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.3.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72_1617710995733_0.45673308360761755","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.3":{"name":"balena-electron-env","version":"1.2.3","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"945c23aa9a34745d91c0351ba23f9650d2c42722","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.3.tgz","fileCount":53,"integrity":"sha512-RPriGsqMNidikX1q2+4IygMw9bvvnnLEP7ZPgtNeC5lG4hoL3lBWp7VFBTMsZ/OHvsaOy679xDXwliz3NVFXcQ==","signatures":[{"sig":"MEUCIQCd3lkWhAYy1+qu8JmRbUc5Uxb75+HEVXzEFxBEv3dznAIgQi1TqVyP8mduCFFutI1Fz8oPmnUBlBbvbPe/9Jjpzm8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":701279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbFEZCRA9TVsSAnZWagAATeYQAIzhiIEVAa6DD7YPbVMZ\niyQ1AF5X3yrNiOevn0ORi0G0yJV5qsrV2RMgYnjLQi+UybK4I84EytJDhEgX\nfiQybwkS23riVGQe6IsCUJ7mqsmzBmM45mU1GZCKVICvtB1KulSCZBeSfge5\n7FwtbBGi4xX22BXoVCW88dEzyxNxXls1XnNVEV9f4OkXulS37LTz1felP6Rx\nkmcEeIpDyePBlYRTTLgw5Bt7mFmWHenESZUgbMvkizkYCY11XJP+l03Uc29t\no00Zffo+y3u6oeFGeg65MEFB3+P+6DRj3cKUx7YJdb6le2AXXM5lfYT4EmIX\n5kfkPFwlOegMxGjEZH/q8tqUkVLASwZd7WxG/sWu+N0+K4aGsgB0iEa1zoFS\nkIejUbdeO9Y+FtertsKKup3jFYVl6mpURdRnyGtmG4AgUxJJ74PEpXNpxCIa\nr7fBEylJx41udaZhKn+IcDj+ovvFJWArJB67GJznrAeQNwHiTGqJ1K5i5zrh\njw0Ngv93bl5Feb+VweNwzJcqYmd9a2OCZ/UIMPyHEcic5m1dzWzZGtRBMSAe\n77O/0N5i+3jMU4aZ2ZKnaDpZBAE7Pc0Crd/bmQP8xFUBevVGvBI+Hvqu1Oxw\nV13txGIPyjRLxcfVCspQWkNpsYPYEK+nVBrxZwqlIESDltw8gh1s5hhr1NfA\nhFCA\r\n=HIXe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"95841bbedff9fcc7fc1482031ce0879be00c1b29","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.11.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.0.12","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.3.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.3_1617711384836_0.6682220883257546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70":{"name":"balena-electron-env","version":"1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"b4e4994295af5e3069f2308fbe1517dc264429d4","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70.tgz","fileCount":53,"integrity":"sha512-xF4PYXUS8ewycVvSgC/d/h3fKGaxeXiS+/8Dz2jqQk5jB24QsYNEVboEAi4ibPXsUQxV0d/y/UCh2HT2BYUlVQ==","signatures":[{"sig":"MEYCIQDEF4VRRSyoOxs+U66Boc1n4Q3MkiMFpYX+bvVJ5wJPpwIhAObB4Q+TB3LmTw6QKpsQ8m9wuLDcnCwwRLSar/Ca0P7b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":701635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbFMRCRA9TVsSAnZWagAAldIP/iDQ1ddlO0aLFwByvhwk\n6hgo8nxgu7hZZ1y38KGBXeJKzyqdGeZBH6FF/ZHMdXnSHo70AM6LurQ4p20e\nsq+RFrAKhLFEKbAgjZYo/VkfKIGwXwOAvOasb33CEfV2rn6nbJ+xBh0SLmxM\nAfAl7g1RYLyPumTzh+Jei7rUezu+aEKAaKMWzAHpGl7E2cFdLD1LVLICTmOs\nx+jNmwFrF6HA1j922SnLIlHM4zR7/VETRYIVQCzCjdS8P4Aj/FnyXMRx4nZa\n0q4W/9OQfBdR20Z2g7EMW/OQ0CptNjUygPDcyBzqrhhH/YgZVhFvfEu0M3K6\neWrwr+lA/tGbNiIeAMyT6etzwipospmKEoamtd9zdQwZ/nw18K+SBvuKZVf6\neQMWEPHMNhc02vpc2tOdPCYNbQLcrvUe3MJQORZCSMXo/25A/uCE7sMUWNMY\n5zPrXQJ23Huy8MkSURrhbyEh7Tr5AF68jAd+aFypwxrdeXFhgsYHNkiFAHRH\nJBe15hlDRlPVFlapyf9OM1/QfPJypqFRQpHnHWow3jCyv3ZvtsXuKBYGGNZR\npAur1I4GPUoEUUys1G5Yd51TDFbhOZ93XyPWcX3CJm+QvXOvr8UVrbnnPAxT\nJTgfVtl+5tP2XVlp6+rrP7j//8AWroIvRsTHk7kDPtHMCH2t/KOQRtOzAwWf\nJFvC\r\n=kRkL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balena-electron-env\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.11.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.0.12","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.3.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70_1617711889239_0.017054865146264975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6":{"name":"balena-electron-env","version":"1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"568b2d05659419f65c1c9dfd5a48e8853210e201","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6.tgz","fileCount":53,"integrity":"sha512-HFpJrynRayai1VtIdInsDtw7apcIlYQA1BnfHI785g3iI4zrR8Efew4lunCM4nELTJhfoAE0HexUFeSNZmNiTg==","signatures":[{"sig":"MEUCIQCuxIT9+O/lia1H8VleXKestoaKl6pQdk3TNomCO06S6QIgJYDMClMRHNH7wW+/kNh+19ZCW/ouIrqcEtyp4vtJRiQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":702003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbI87CRA9TVsSAnZWagAArb4P/ROsdRdXfx7B745/UOPq\nSgppoaHcwB1bFcSi5zo57Z+ig0+5eq1K+IdMCuqYpLzpW+g3LGIdJ+IfGIJa\nkizk8PkC4CzuvqfQUSdXZW76b6p4h74I13QSucJe6VFcYZ1WD8cmpCvYuABv\nB8DmCtWcD1Q9meN3QuU3Tf7K9KcKZkC1gWysyqoKCFqpS7BcHXBeS0dqehw0\n587s1+uL7/0NvUBXtji2iLrafOrv89F10AfBk/7HgESwvJtygtxN94M1joRl\nYYZaSI/CIUeid+MM64pPQzWreUu7ikItZuOMjJ7ffTWoa6rqaXuyIyLSFmVF\nCn9ZpxKy6w7oXVpG5tgCVg8JTFLMechsJQjDVFUWbYU7buF7h8SlD/Z1Fd8C\nVykVIxfD0jADNCvrNEKemGuk1rFxe/+kZShiy81w8EklqIF+wxChTRU57OlK\nEFYRF5mVdvuSRPrEPeKAuOjDGee/CKYZSbUkKyi7QxJTDDDplFbgbFuxXUqW\ny4i7omTBivyWDc/DgeiWUFrzm2ZLek0kSeLfpdjgq0gmnHWOn17uBb7dTCQS\nuvxyv6Z8eVrrbb6PYiO+ytBukK0snbUhTmzqG974nfUy7cF5PI/tpNgJVmbT\n+fRsfH1gzr2wziGPenDzMRKxdk2rtIkyDVyWJ920iik0QsbVDEsxDc/VpR5f\nEZaN\r\n=5kxa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balena-electron-env\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"a84858c9749ccf2e5f4e1c6e870de9a74be74ba6","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6_1617727290731_0.77269820837391","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.4":{"name":"balena-electron-env","version":"1.2.4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"46d3c538e52f0e9bb211925b5fe2b15e660b630c","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.4.tgz","fileCount":53,"integrity":"sha512-DJsC2aoYq3ZIoEpS8eA3HfOnx+bPgRSoTm7clWVFNf2N65+Lkia5wB4OBMKoS9FpccvV10kCFBHADCt4VnHKWw==","signatures":[{"sig":"MEUCIQDw2QHMKMw5/ww8hBHggSHuz/8NcbhRaBtPi/kZVhVwEAIgIVFilr5kFRv/OFGA4W/ieLKrWXmUzuYoeaxd+A8jqj0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":701941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbJAYCRA9TVsSAnZWagAAwn4P/j9VU6/b5KKgJkab2nIe\nnu7r4jbn1XPkYh5tbvVxmgFNXa/6TPvKTdkFChql3o8SklLJ31NfkLhRKmFs\nt7IMC+mr4IBYJCUGjjvxOzdjZN+eGIs/Hw8o7393XU9vzxqo3FYqR9ksn5Mi\n9Yn9jSBwg4WNOC1cPnBT1TjXitCm6cHjijDYxsl71CuytHh5HcM2SFjhrb6W\nmB1sZtHXzQG5Uwj2MKW3lUQcNFgZFpK5QqcMCqinuCCglbnR0CPjJpgGjWw/\n/98xTKKy5ZclC73dXIN1UXpB/R1BbO9tFN0An6TTwJGubKrgUI+fz8rDEsBZ\nZK5DkyBodNrgG1fYF1MfMWMORL2iMwybAvrD6zXF6RINT9yqnRsix9WT+2AJ\nRxizNu2n+Ho4gLQsgNXBa0OJcpJUV1VslwNTHf3+bd8+3goR3YDJQ1FEp2Jb\nlzXzZlnNz4x2iOR7VdpevbZthklIgPHmfsJ8a1xn1TI2OJLzvGMpcIvSSXKx\nBfNOCvR4xUdY0wt1Cmdkrnw/ir0JTbnKkDM0UnzcsI1LqGUuBj555qjg0Ejz\nm4cWONB1v3urB6v5OfQzb7p6lWYOOPgeHLKRghJHXoFnjdQMS4g+yxTRbgc2\nkjqXiQ/KtqxgqlTkwecxdBAjebLSbqYWYkFjI7VA8A8xtIE9PbWzM15WJCMB\nZ+iT\r\n=u5GQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"788a89e53a237513fd1dbe7e4c2dee614a6b8843","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.4_1617727511850_0.27292261539284124","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c":{"name":"balena-electron-env","version":"1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"90cda1962aa3ee0e5468df6c185123187b3a1877","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c.tgz","fileCount":61,"integrity":"sha512-v1pT5SP8uZ56MRQlG92uzbYte51PHe4ZmVKHdvWWlCeKfvTpXPYKfBjUc+Lc7Ll3m/1SvG9LPNt0281sXbSscg==","signatures":[{"sig":"MEUCIQDITE3svZzGa0LbyrF0dyWrKYrdL05AyYSrppZPeYgD9QIgKNOzmMnkB81nkgyoxlWa7jBDPPUexwdTxB6chxP0GHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1040964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdtGFCRA9TVsSAnZWagAAJcIP/iIisM/WX5r72FpoFJcO\n8QrR3ncwHDEIAuWD7yGbJXF6v2X3H7BMViGi0nIGpBw8mc0K8IVriCZ495Ly\n0EEgOSg3xLlBhLNEDw8+dJW9l8YxNNKdvn3lwZrJH0BOHpTc7c0D3xVrvHsu\n34BeMXnPLapQRA0stGQhmylyEIfu9kFCANsRo2mnDgvgfJuVFB5VfKfMLnPc\n+/ZBN7HFOy1fDZ3W+m5FahYo7bovhEtelyz1ZJV16HZLgaYmk/ffI+5/0V+j\n1rtNdu0NpixdLx/+yt822ft3BTxwdCOqoB1aDiDN+3DcvBtX6ZVjPR1kwyxJ\n5C+wn+LObx1Xjgf6/Dx/7BKW3gom7hDDDIDB4UXFovlWbm3pySfr2ai9Cv9d\nZSN9JuITT86cakTiwKJ6fBGXZprEEeoHZt5bmtGBl1310VTzkuuyOFj6/4sf\nj6D4IhaF9de+QkuEeO5OmAJ4ibfNSmyfFdHg6059E16eBAwvcYeIkt3C9xNC\nXjO1/v1Gs5tXM3gzOYNeoD7jZKKS1/SGyQ09sJdYv1DfvUIr0oniDaMdbRX9\nV1X3cthsYO42jO+aId6hfewOMGcicjUq5p6OaFNymSMZ1MyN3nN3CvaQgWAt\nUIS9auVZa2VEB0sSHDliwHAedQlP/al9/i9Aa8YqF1TpVkwHZb6KxhKKaqd/\nyO3m\r\n=VeUp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"de0caab4a9cf90838ff6be510cbc126879d2628c","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c_1618399620664_0.16640821558898433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb":{"name":"balena-electron-env","version":"1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"a93c0eaa780d741619bf1242edf20a0f17399b61","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb.tgz","fileCount":62,"integrity":"sha512-IfyJb6fznA4DBt55zaQKF8s5Ja2iuMjOcI8B7leEUVGYbpFbFyvXg68Qkd7Bq+QsGhOqujbsqjmESFZBsrb8Ng==","signatures":[{"sig":"MEUCIQDMxPsBjbWooUdgLzt39t/obiQqc87RqjUjTp7+9jxqMAIgLFCqPJg4+ztRGIMHduM5KBLyni3JzpFSct8OwEMW4Vw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1040516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeDkJCRA9TVsSAnZWagAAstQP/j9sPVD6EEIgk1nq8cOr\nM/4f5lLSTwjfLgxct+lsaUMQti9mjzdmkQM447ZPZ6TQ+lNQXaA1tS1XU1qI\nD5/TqLbwSxk52kg4roDkxpEp63Xqq9xREAvkLO1KqahTw6QHWV/Uz7O7+wjc\nlHUlzjHMH5xTIzZ5AyunKI36+3arSwGrNJy+xyL86k6EYa1jemod9fvAE85e\nu3Wlwp2s1l1lFGA3UCN7/0tpxiCieYaJk9JuALZx8zCJGpy0cf7zIRG6MT+1\nLto9E09jaJVgN2MkdQbA1pbpiVX0kD0aogCPyoOq+Abety/2DLmbO9CJNALW\nrYZIuwgklHEFCb09hNnN741ngwIlM7f2+5c2XLNvoeyADTVWrg617FplzYIi\nZRkawtFVj+mWGz/yxQnYmnFVZFiD9mUcqRa50tpvPVY6A3asV2baPdIcwdgM\nCkp+b4l8uFdWMxa9Hp/IHBrSJuUJb/Rr0/FMExZOTS2ebdIst8SmRqiW0rMR\n7Nz6gOq2JTc5mXHywLI6/DLVQ/waXdYf4bOJ7KxbBh6RkvulymzrLfMQQdZ6\n7DYJYfSNZocyXM2uhm6LJfK/yHRL9O6XyOsBHNNSKO9TrlwDSqbktJ6ydw75\nBqzDizIzK6BboS41bIOApWWkGsFYSCtfcgby0kEwR3PoTM11cCQJvHOJRly4\nHi5Y\r\n=zKki\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb_1618491657037_0.4390475892751562","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11":{"name":"balena-electron-env","version":"1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"f4600a4abbf44a6e6243ec2cb934666c541e10c2","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11.tgz","fileCount":61,"integrity":"sha512-FoWGxaNTCnAYON4tnpdAzLpisMdWtJDToYy7n0lCvzvt1qNbHnKq55SZse+BarM3K+hulQyGLTxIxw+HF/aIpg==","signatures":[{"sig":"MEUCIHoiKmKhAUHTjtUVHkjcwVzID4hdAlK6/r37C2xQUSf0AiEAwGoTRp1DRrcsYYS7XU1xHDTZqwiSurJct08vdQ2Eg0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1039314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeDuvCRA9TVsSAnZWagAADF0P/3GiZVjGAiAQ14G6ipXD\nxheg7oSk/aqqjAk3ptzjvj6k7mfL9mPhI+kw5ARm7+0GT2sqQYk5hJF2qQ3a\nV22Meh1dsdUcyyEvpOGAzBMsfI/79L42CYQx3EwSj3z9of+C7XCcCaIkH636\n8tOY10C9abl61W2AvZqQht+X8KgCtoONzkDiBs016ZJIfOmoWgJyYC3fH5lu\nZIMaaVS3M92wCvVgkX+MKmO1fi9BTgXNzHo+zT5jDBC+OZY+RuoSAnfc8qGT\np5QaSh5T+2zkOj0xlvvfAlDQekO8uy53VPfIPxigxImL3To0aWVMGNh3kgFo\nPq545m/1kAR5g2//g2J9qIOSFXbK/cTlROLhbOM6IIuDnr5+C5GhzbARgwgD\npXQEMVSAolreQYLx9LAdw0Qy8jnFjg2XAU2a9FRfBrTpVJsX0OfyFGsUYjm0\nsiQBTni8KrnIYXIst6qtuTTxW2PbcR9A7EHwYNGP2dlBpj9lyUPm+y3dtwrh\n+R663/msy2m4VCsDhbjwKbo8vnAvQe9uIUHsMN2j7rMD/ZFAjJpkCtiiGFZQ\nDRdCdrTsKhnFQ8gqhdGJscJzsKOKa2PKigK2pEyPyHbYMoI4FP6zk5skWB9M\nqVaEsyz+UbOpxhLmRYpkBHB4rXeswZWEyOs/lKwH+QUIfQeL6IPPXDV1dhsy\nQ6uQ\r\n=XDnM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"fc32ca42d51855b8f20a47bb7aff223fef100f11","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11_1618492335153_0.3196338118621662","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf":{"name":"balena-electron-env","version":"1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"f7cdac9f1eb924f8f1cf4f38d199b972157bf8ba","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf.tgz","fileCount":61,"integrity":"sha512-W/m5dSn+TiMbs2EKuZtOpcArjVusavFW39/bWejBo8IAJ3JZXfE2xDUsQu8FiIbk+04EGahQumx73wPMQ9NlVg==","signatures":[{"sig":"MEUCIG0lhHqVB5iefCeV/vmoljvAsrS1BxOl4RlN6ZqxXiNnAiEAqlcuxbno2OVvJsWxz6lvCBNaj914H9vy8JpR+gxj50c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1039028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeE41CRA9TVsSAnZWagAAWGQP+wQHT8w2vRhmzNKVFh78\nV0e3es0mtsvbVBIltRb3VoxvzZrLh6fHpDmmLNKltSAuikcwPo78WzmeCgcX\nabo8PCPd9ZfFHCnLuwLSgeMUyMENATiKhxEL37MWxu/tANaNHCyMm6rWBIVh\ngQf/QiZo+YLeaZsHRBhzkjOVfefhcLTXNgI8GIlV0i0f0wiATek+58gNjv3E\nZMuFE0pM9YdWcxUSMruyWwuw5czT4qQX4slP5xi/NKB/pjLbtrOOxx19QvlX\n+2ymmzoptbxiN0DmwDh7TSjZMQ4bndYi66BBZXCN2yB7cANFSjJCC35x6Bz2\nFdC9w5eEJRKHvLufeH9dIiAQ+tw6VBPsleneRuJ3a0tED8NlJwApkXeclsH2\nQnKuJ7Rq2JvAGR3cliXULP8xZerxB8Lc+e21hKIzCRbOlHwiJ+iw5dK3AVMI\n/M0JJb6ru5M1hMfmWn6tVXlHi+ZCoq60w7SchF7AD/+/7K9Td3q2YrIPYz5A\nhKs6yP3ElmKt+rhHOVwUI7tPw/p9RBGJlFUfurgPp/HMOoGW6hwJOssIW95Z\nIxIW1BcuFHgqMg75ozlpQ+0Fc86WTHBpI4XgcO6+jBFYajC0fqb8iRnaxMbS\n5sY0GepTGS8j0ox7BqtbDxzYKgYHjZsieCxfwklaHZ0EFbVy9WPTThcGpIQN\nbxC5\r\n=AM73\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"ac7162a9aebf1c52de66a155aad80edfdb576dbf","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf_1618497076867_0.546002844949701","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.5":{"name":"balena-electron-env","version":"1.2.5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"8b3c3453e9c6e5b8a9fbb2cbde4dcb998a351f48","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.5.tgz","fileCount":61,"integrity":"sha512-XX2mIb/6FoUVontny/r8/oGeU6apa8c4GJPi+W0K3qBaGPYO+4q7rYBTUC1C1fZfI3XSvSGyzIGiFhjMSKYwYQ==","signatures":[{"sig":"MEQCIDdq4K/X0cL0O5RE4SNOsWqrML9SLdHfGVUA6SL5SbOEAiB8xa4wnqVd1k0VGGM7Tb7ZKiJLBzCYsu8eoTAoja9Zgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1038971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfuIfCRA9TVsSAnZWagAAGrQQAJq+KeyRN9+TLJPtVMvQ\nHi80n3TydLoycusIBhy9GECqbbi+auJPKxAybKjdz5yRAt9sBstM6JdEVTU7\nYdfo4PvfJLFUS5QdbUSgPWvx6V0k0/9UJUnJatZq3HscjVE79bRW+vL4Tn+U\nQMvFoR1vRGJXr2GWmiEc19eG9cllCUcBZdQ3ASATZj7mhFYtZ6ZqGFrmWJQs\nXMdFDYKdQxuMPlJW0Jfv7/NNYii0piPqdzWERA+HGS7vQiCQivflQ+fXz1q2\nBBcxAvzOKsx7J06sulmfr07kgYziMrJn+cFGncQ1wD1Beoe+Hxb7tooK0vCs\n9ZrJaqE+koN8jN5twtmJfEiZAq/a79pzjd6zGWSkRyUyprfR/IoxrdIMeHC3\nWBVLbnUKWK1E7tuRf/w3983pMS/TEVGY3dnmnWBkHM+8obY7/tiPDJEi6Hoh\nkN/HAwEkssgtBLhQ9YaAgWOvnz12kUbFfwGPmsnQr6LArI5XgVNS72yIagPw\n9gqc4hv61uV763zdMsIHNqQp3AEwL5lN/MQyp9LcnVDKOD+13OGhzHMvPQAs\ngeNmtCEamlppcDRgVx87GVqjK9UsUQK4cuZZjtaEnW5V4fjwPZ6/yELfPhUH\nlrdhJug4fVmCjmkN2wieIZmKJx9IzfsA03s2KMiZGSmoWVqrF1qABKPr5Jq3\nPUrV\r\n=SAui\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"1a990121ca960f5674abbb81f3e2469c4fe7faa3","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.5_1618928158492_0.8949220493482395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8":{"name":"balena-electron-env","version":"1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"9f379eed5e07c105079ff80aa8eccce22c3ff05f","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8.tgz","fileCount":61,"integrity":"sha512-jNcFvoGgTDeT6vjQ9RC4munmCuc349IJJ9WBvWyY7ggnlnGrUoZDLnxA1DQ+zmyaT398b3nVwsWrgYo7MCzKeQ==","signatures":[{"sig":"MEUCIQCIHd6YRtMPJbXA6rPZAMmyuqfnanJOPzuC2YhLuws4KgIgffL5H3sWlAhSRWz4Vp4YsZyeO5FeV7yE90AUuaqcsdI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1039817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpRAXCRA9TVsSAnZWagAAVdgP/0t7mAPEgL9vcZJvNjVr\ncUAYfMIdYcoTTtHha0In0XkF5/R6xjbH2cCbk/J1kLRKumBkXPmoEsTeW+ab\n1SFZD6Ce6X91YpyKjr7Le/nePrX5YOq7Kp547TxMozxzLeb7N8f9KUnqM7Zh\nm0mAp3g5ui/jhntVtPdV6is1DvVUEhTA5BmfNmn0auu2v64EUetwBhEzywdL\n8r7taf/87/6GGbxvac6ig4+1hYj6erfuFrpCpqrHXXyjw41PntqsZQcepXH7\nfyBTyLv357fY9WzVSXFlgNbpl57etP1G9nXk494SAFoSgH1CJA4b68lKzxzj\nKw7rTRrXg52Rtjwk4C8cVYeA4SRnWp3ZdTDddatVfmydswxUWuSK3Z6cOymG\n6bvBCi+XyLg4vcx5piJgqZvzH64AiZ4TNKtRy1FOhzhs3BdxZZmU3iOtMiia\nO4o79LgjVPUw/uJrft/TShyd1MSvyxDzlQNtoWb8B0emP2yFJMhYoglGm8Y8\nR2Zvng8A+JevM0FB2uWbBvFbMqSa57CMatFa5g+fxv3dXi+rdV+P3IDB1+/x\nLiGnIvhUqeq16CCvJiP291aeS2FZSZthVAh+7T7WEcSEazq6k2Uh3wtgEc9O\ncUyNrdYdom5x2F9ucuR5VIykgL4mdx9AeNFy4RVHg8euxnOe77FPMFqAJQtF\nAe2S\r\n=WT4a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8_1621430294535_0.1291581617068438","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.6":{"name":"balena-electron-env","version":"1.2.6","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"f4d642b09aaac160c2066d61ca69434bb3f3d467","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.6.tgz","fileCount":61,"integrity":"sha512-DI3xXNDW+U8chtVKj+f92f8w2c+5OWooVyrEqO151QMQPfOmCkEEzXdulISjrt5mfsuUUO4XbeJYkkFAzAPm0Q==","signatures":[{"sig":"MEUCIQDsLPyInBVgEfgACVxYZDzRv4qPrmZFPcyBRECnDJTCGgIgJoRxYTxPFKa4fyrWHtmsAc1R//Cb179uaAVec/6Jz+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1039760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpRKwCRA9TVsSAnZWagAAbWsP/3U9qYYZbkjQnoeYJPt8\nftW45R62ebuZgEEEh64W0Npx938VpNO+cPPGoPEV4ANLY9/+4C7jzKBIbEjV\nNtiIBY3NmP5iqvn0kYOsxuk823T/ZD4rDUvj3cp+aGdIehOLtBGqcd7mPNat\nEBINVcGrDTKeYp/cD8ljeBk730P7FodipuwnnfQlCPn5Kie4LpFRgMxYIp1B\nhwo3KVaW9la+FV7njLLc8/MZz8TRsspXcFeEj12N73+x0hBN4e5BNPM7cd0/\nzi6S71oeQzS8bHT/tIAtXJfkbIfxJOwrlQg4xG018P7E9DmG/Z77zmERIwOo\nPduTlgy3WpVeZgSNhYxPY2kO1D8mT6nZzYL5l0xD03M9EPQSFSMNX7PxeVIP\npOh5YzQbmw/pTOIUSdvqEX35E/fvjOyG/eyHzKb5PxW1dgJ7f2+QzOG+C8ur\n6aJLkpemydDtIWg/uKleACGTpfssrwjo9rYY1UQzCxa768zi8VpID7erU8Dm\ngtePbDUHQ+PHVlSuB+SLyEu3W7hUzj12nBe3PHibTUr19XaOGiRhRCVZDlSs\nlaGXjXjud6Zdpfu50Tll5KTY+okzn2cNZmtYpLYfs65lYb+Rk/4pWVlVXZQR\n//d26ymvGAlW8noce3+kvWVXVq9XGYhSzkqdsEalr5xjeh1DNANOgWLPe6aq\n7qhv\r\n=/tcM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"fe5903d65bb69775b047a5e7748286ae6c77b03d","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.6_1621430960285_0.6159735075789508","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e":{"name":"balena-electron-env","version":"1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"024d910c1ff4d8fc128b4893bfd3ffaabedc9e83","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e.tgz","fileCount":61,"integrity":"sha512-4r3qk6tU7vYLBArYyvsP7mrIZEHdD41DGrnzrzCmUK/QbsgA7Bhu8O5ozPLbaZEjOx0jdBPNh7575KIsXHvmWA==","signatures":[{"sig":"MEQCIH+YfOlQahYAIki3wDMq9IlTHwKycfrxURguKwtKbwDuAiB42bJDDXdHvXlpLlOqLoYAAgdFt4DJEB5pazDlZD/2Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1040244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpkItCRA9TVsSAnZWagAA46cP/1UqAANzOtO/t/UYyG3E\nh0wTbKLOuhHWawhHavTuCKjihGw4jv/0dfa05/ntg9DeGDnyAeH+r5VFZLbF\nokBWSZpJDjFKDEmE5mlAAMFoVPFltfYHhfVLk0+RsEQaaUbFDL8dkq2C5I75\nCpvEiOOtet812V8zpLc5Ju13EczOMKZowNSrEkM5lQoP5UUWiGfCvxJse0pj\n4rmJRD1yvdlDIk2v0DA2ihEPGY06z01xjkYAd0y/SHiHpFZgvswh6jPc+yNi\n1XlWhEIIiopyB+86A+Rr1jFuuqG/V/lA5p5PK/tK5kWCBvbBQ+RFzsmlYMUp\nElko87A2Fq/tx1WD7LmiXB31joQ61JUWfwr9cWFRpNcAibcWRgMVsyaGvaET\nCdLTrfpU4aPagk7pGqXzetRvFzlil2zWoVFfklaOqokgMcrW2XTUeccAzXL/\n3eezpigFRK1XINTdj2wwbxQu7fRnuNl6mhlqA/Ksj6jwSEDN1DaAFmAqpACi\nm6qTAj0aaogdkYb+a14ABbgpCanBj/sIuqr0uFAsHSeU2xvBRUSVUCj/El5+\nzx8Nu67v5a+hDSTmI72cvuEnHDvcs+uEn8fw0zQw3Q7mjao/4baQh5/fltVj\ngDkJwYhlF8wQNFuFv5rviS5M4h6dpI3Jp1iYLGntXKuPz9w6V0kaDtk861eC\nZqVF\r\n=A7ho\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"400d9456605763fe57e850e4dcf8d57a214e100e","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e_1621508652996_0.4563594806454869","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.7":{"name":"balena-electron-env","version":"1.2.7","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"850c54c47e6241fc9a3225446a6d17b8794e7f8a","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.7.tgz","fileCount":61,"integrity":"sha512-7OfGWSIdEdOyb2hCelo+d4KT017OC5GAb5b43prXT+XpRq9HbTQOeXAdn+CYpd596PgwCJOjC96Ct9+ddWRiXQ==","signatures":[{"sig":"MEYCIQDCiHsn5KExjEIq/HFeRSoh5vk4fzST068KBi0rdwsO2AIhALiwZkeNBVKmq++jU8h/i25+KUgUc6DeV3cqARIXgU+0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1040186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgplbSCRA9TVsSAnZWagAA87QQAJ7h1LdQKiR5aXFfbQEi\nF7NRSr04vjUo/R6JqRoqz4megCw6tOXxdUVwJz03E10HMYdZviqLNYvWpQ6K\na/vHO6TTEBPHLi8J79iSZg5EokUQ6so+cFPbZdeq1NNcgFaBS0syzKhTwRWL\nYxg4bfjORCwikEKFfrgXDquKl+875jZIkZnQjund5xpVXnBrhoLM86jicMdF\niIaMpvg/WuhtSvRU4tqpHOGRfyFkTp5F4wRwJHOO2kj4eLBHfUCczmtE5bhI\nlxS5GZb9ctP/deUEiiy8ysANlW/CKwzbQ6fcRJhEJdHI+8VlfWNPH1MCC4n7\nYKGmPjliWhFDiRdTDvTzICS1h4C/FyR1yHLuw46MFvLI+I2oEoCmrTFfAK6x\n7mP19J5kH171rtryUIDFjzGq20kKj8oJdypZ0UmWv4VdYWReq2O7sMfGGBqd\nVhBSV8dMGBVmJYsymR2Vzv9wsDNRD/B4guNk7rJYD/38qkQ5DkhT+PsUvwlR\nEgvWjG9VLzDTjTbsMTUyFq2Ht4oXstnErx2ohqGc/YaGUth5qFNFjVWIhoqG\nosm622AIa2rtG4dJLdJoDrmYsqVqMUQnnWf2FVJxga8m+DwMkRPmGLzp+WHg\n2PBb55576xfRPxjBnTQAi28Ro7Uae3LZondkXw74DReKUeXvi61zb3PtndZn\nL1FD\r\n=kQX9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"21c3991289c5e194f3119a16d4a672732ead56fe","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"12.18.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.7_1621513937593_0.3758118634619576","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35":{"name":"balena-electron-env","version":"1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"d50c0252d2811c0e12533290a13a1380fbdf7041","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35.tgz","fileCount":62,"integrity":"sha512-r9BbNLOZo4lT3ZPboDEnHDzaa1m4BEfO6OvUKzgrWGSg05xtumYrtbmX5otH2ycSIhaJ8InYCLERIv3xmSNyeg==","signatures":[{"sig":"MEQCIDVzCEtXLGx8h35NVkCf4zeQHDNpSn9/T0i7WwGenjf7AiAj+rpUaicxs/kqFgiSkzALYVmWcAwnos+q1/lsISCSCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1048768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ6lMCRA9TVsSAnZWagAASksP/3GHOexUOC/7v3NbN4cd\nvJ5hU6S4h6LTY/VoPgbFPqrphPudQ3bd9BET9r7oubY3MeKLBKLaJzKAsWL/\nodYFTVs8bcw/365ekjru/858z7+wBTaPjPdyFxD7X35u18Pqet9sF4GADOs6\n7cM78X3RqRB5qHy+Yrgem2dsC6unqI4iPYUR3tZfLXEOV7cMgu9JLpwKZ5RT\nhBI82skJ3Vn6ziPoFlh50LoCrdNUiA5uhbsY8cZYBvyuGgf2gCY1bfIsHX05\njieOIqNgBBIBXVNa6oVLSJ3994wLlwq1gYwBlaWktEH81Z31D2Vl3+5HjBDR\nLlWV6vCgsQ2Y5mAfz/7c/J4E/6R/8eVmnA/9px+3sF8y+q7aASgrhwcO6JQm\nMnay9F0MCEXJuELzyOgcvQn3S/hitr4shSLROW0s3aqvBDs2Pzn/8djs/GjU\nMQyptFPc+CP1vPNKto55GaXYnq8lT1aUbvNJG5uTAH62HAIMYgn36+MwZi8p\ncfgByM88HtuqAPUJJHzCvl184QA2AzM96aSmHXtSGzigsohUQ6z9y5OjWVBL\nLDBNWywIlzzZYqPfO0hkAgtRj19g6SdXAWUVc9WcyjSaGBwaCu2vHGYpf+2h\nfCKpHsE26P/84s3UE97FHXO5C+cdSpu4poQO3CD+QyrA2FerGy5zogL4efJ5\n+zH0\r\n=+7my\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"34e3f175a60ffc22e24dbe4b1378a1da87719c35","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-08-26T14:43:49.321Z"},"_npmVersion":"6.14.14","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35_1629989195791_0.06923883241697326","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.8":{"name":"balena-electron-env","version":"1.2.8","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"5abe9b2ebe6a9d8c8ceca8a587140a5646779ec2","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.8.tgz","fileCount":62,"integrity":"sha512-b0lM+eqxA9Ovmh6nt7M+oOFSflLfzYCe6TgWon+OlRuQZPauWVaTcBc2PitcDijFu/H6qptBta56U+qYWK05qw==","signatures":[{"sig":"MEUCIQDbWy14ScjnZNedd8iqWgm9fM0TzYI7KPnLwyoERUUOZAIgDszruWdttigzOOFwIdRccja2AtBEsUbMdFnEwycHf+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1048712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ6oICRA9TVsSAnZWagAAfK8P/AqIR1Ws2kL3cvELm53z\nQJv1Wq21o68H4rrWsMUYZ50m3+lXMO8M2LvBKfBtvNkadEwQReCr5y60pgTa\n8TD2aKU5IamZmAfFm44mU9+yZRTMzDuUuQX3jrJ9jYTvx+qwnTgInF/hK75c\ns3QKCPoFrJhxIzeAJ4h1ZfvNiz+5bF1qOaI7P8mSZags1/w4Uopu7SKwzcu1\nDED+I/6af6rcC4tFnikBBFCZ6wXqSamN03trqPhUQmYV0sXHP9pg/ndpRejv\nvWulLSg5OqGaxBE+TCy3OM2D/1F82vilII/wXhc7UrvhYOvgVZU5ncmdCIga\nq86ZwW3qvKmLaWxE4PSDl1YcTiQ4zEeawKlmLXSHvWN+plKWwUidjBWBp+bb\nmbVOiJSkqOwyQsrVAuQPkKYR1r9HtYZwHgNWxTXYtf7zWBkE0g2R4lFLR8p1\n0oOXMgrnQtWfKrtL2CqeFXrsTaC6bijHbArQHK9TTzXCXeeSNEGK1H1jambK\nNuVogPLcHSPAinTh5mImivSLa+2Ce3EtiUmy2vOAgCTt5CyPJLtqRD3sY+Fr\nl3hmjNnxC//Xh4W4hA+bE43qR+GnDZoPgf2CtvwwpaVimU55GKy5CRX1bJNo\niPnIjXNaZQZfDH52wIls5YJi+r0RWQ6iuqzs3TtPT4uwRKxDf1gNdKwO7CQl\nU4td\r\n=I/xj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"dd99af61ef06252cdc57c7847be38fd0c2e6b6e0","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-08-26T14:47:43.682Z"},"_npmVersion":"6.14.14","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.8_1629989384036_0.6657084617650015","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0":{"name":"balena-electron-env","version":"1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"ed90605b520792158afebda46fce1b75f654679a","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0.tgz","fileCount":62,"integrity":"sha512-KadCxrVUnT7Eu1ded8F49XlLfugxEb1XrvlfQEAc3to1vASml2Coa/7fLSedH7sMmKyGiEODBRcU64lgHz9aOA==","signatures":[{"sig":"MEQCID29OrEI2LW/HYKxEO+dr50mxa5lvjtDZEFArdXEn734AiAq1yk6xzH5ZZkbgOOPO2hRks26E1mqiLW4TIVfRYklFg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1049418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP1d/CRA9TVsSAnZWagAAO00P/inqXK3wY5lMDuKRX2o6\nElKHfjB0Ee+7CKae6Pr6+rwMRZ/S1XqQZopfvWdSwNnzdOlbq24t13kiJrs5\nBhIJSfuANszae/P4IAJzs8Ga/zyQzxb1gNsrZ5YWOnvfw9PmCO6Cw/aNMjbY\nQzkV10QybX4biaDB6/ny24rLIyQnwO+OcIEbhglO1k3C1JBnIsi3mRsUwGtu\nZJSdfPKSkgO0bjLIH1ad+Lu/biv+ySwf/zSaYmPcb0kM3/FBXiStdgE96w8R\ntYoaVNKfY2f9iOtDFCQN0QElKlA2wwD0sqgShQQ3CW9gnb23uN9zwrrU2XIa\nhC8QKlqSrU3nHfW40P3FAWZ2qavNUWCYvvjP5fv7UTJoCRn2+nr6VwCUy9qd\nTpBpFyGyLA1zaUBgUY/pN2cVTQvPUhOmDd1mirBM/HvYJL4PtUebKlUBJghN\nWbtXSAAX5jBxWtM66pi6xqFjr1H+Bmf3DB41UMvCwG9CZCNCOWl74TA3TfUn\n8SNs+14ipLUMUEmJ2aEVb12KDcZ/43YeWgn9s4oVhIYSYSYGgVmxd8NQrNgG\nrzm+7MHldUMKHsleleSKhxLKGvIQOLVy5e6NXAoWNP29cCNrB7CDCQ2ADYmu\nvvlKCe4kCLXKlOt/aKsZRW/oreGqA6mOTJ87UkWFLD67LT11x44DbzBMgB3B\ncuYd\r\n=hsWN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"17dad3c94dbec77db4c781cdcd4fef15bbacdae0","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-09-13T13:48:41.540Z"},"_npmVersion":"6.14.14","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0_1631541119193_0.7803903457841088","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.9":{"name":"balena-electron-env","version":"1.2.9","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"1da70dd6c39450dcb0c7493e5b7a492c1862780a","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.9.tgz","fileCount":62,"integrity":"sha512-s1s+ClS264BgSECA4K6ysroztbJYuRS4GIVVM1eutYxfzAjK6zs9W56qfVvM81Xqp3zm6fmPN6xZ0Vu0fpl5ew==","signatures":[{"sig":"MEUCIHyOmN7RmJ6ZfzlWM4qAQnb4Nw5RVNQBpGIdP++KshQSAiEA2rRcnkBTxq8Ae8/FlFgqOLoU7o4pQkOCcjOBphVpqGk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1049351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP1g6CRA9TVsSAnZWagAAbncQAJbTey+5N9CwhEjsawEb\n4AKDw8sDLwbnwxgUoh1BdAOMj8blccCzEApJDCCjnq4ZAd3Myf5TdIRHk7yj\n4VPRGDmXCvKogw5HaqFN6eJ0/SK5HDaStCTylw8JQwsZieJrsV7o6q35aPgX\naTVV4iw7tFUz/eh9b8g7zMd0+LamdUS1/SN+IHzFOkOuayp4G0QsJyY+z5mq\nNurYru38xLL72C3azkMwUqvGpXo0SlsUjB35glfrWakQ/8CQTN1Fulf+ip1/\n8RBEMtTQtIxeZ1CJ0x9+rLOeiYx8Vwgv3fC2aY4sp8D/rxa92puI5HQ1/KLf\n1CEk/1CTv6VE67q/BtuFwmS1HytHr1xqEQMPTN68TH2M6cuECKyrrEdkOIV0\nd3TZJGy4Ki7oMShOMjgQ9OdzLmaY5Oq/s+lgssmVEaZCWdU06oBIq+nGZGTq\n0aLXwrRDZ2fg7ut9UhEt24uMEkKaJwJSDXYEW2v+pHJtws0L14GlOTxM2g6M\nLbKNSMkt+C2RAd4hp/B/anNbNeLmRndhBc0/9r7kGvVTHg7l5qzUAaoQdQZl\nFHOCV9SUYxNUtKv4qeQmFX/1EBqFZBABzZVBD2TnKb1axWGztAeqeZz+8xaP\n+sR/jLKq7s1UpAN23InebiP6XQj0GAr9jQ5lAqb7KtZW4f++ehFyfYmKk+4O\nV/51\r\n=ksyh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"1a6d89bfb8b0aa667208701456fa2bf184a917e8","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-09-13T13:53:19.633Z"},"_npmVersion":"6.14.14","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.9_1631541306025_0.4265575179177752","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a":{"name":"balena-electron-env","version":"1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"987a6845c3f2f700795b01f7c73e97447c24917a","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a.tgz","fileCount":63,"integrity":"sha512-7ejbj1tNdK9jpOiBR2yHcqbhAaPHX64XnySeUZJwpt/42Cq/nWMNlRv8fEqkWk8qL6QlYwz2YR4F0qjFURAr4A==","signatures":[{"sig":"MEQCIDZcxgoMG8k+fqMO1NbXhenkWhTSz8eGfykwR28oIHXHAiBGdD8VWS23x9qs0HOEj/f54JNihWxO96W/VXytfEE5TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1054917},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-09-23T12:25:10.358Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a_1632400135808_0.09361334305504876","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894":{"name":"balena-electron-env","version":"1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"0fcb6360fb510ddccc313d427b343b451ae79b95","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894.tgz","fileCount":62,"integrity":"sha512-oQpCVlz4k/VRF/Jlcp1S5hovmTA6LOINy25IMlWicrp3mZY0H3E/KznA0uuxzYe5Ux/V0DaAqN63gZXHool+yA==","signatures":[{"sig":"MEYCIQCZMsFpQvDLr+3STqm9k7XQR8+ZBTbIvfD9WnHhPOHkhgIhAIEivTGYgHcl5+MNCrK96gzVw6jsF+I3t3G2uNxqraCq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1050024},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"892bf70af205759991e420564f2f3cf3f4ded894","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-09-23T13:26:19.815Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894_1632403738228_0.7604136195803473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.10":{"name":"balena-electron-env","version":"1.2.10","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"5b04c21339038b39cb23d68d40f7c7aa2f4754b7","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.10.tgz","fileCount":62,"integrity":"sha512-xffPVSAB6li0HkxtcplhwBvshu5IW4+ipXKtuyGivVTFVdq28yBYGYfLarBNvfU/0ddI7d8b64C7UZWutNeWhA==","signatures":[{"sig":"MEUCIQDxnXsA2qmZl0a+XjFnPBW3+3QyRsalMjKU7+iY3XYAWQIgJb3zRVRIKdcJDlzATKXydNkyx/JEKJFolXIq/bZdSKs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1049951},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"081bf253fa7fcba9e1013bc37e9781018e8436ce","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-09-23T14:44:26.636Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.3.1","husky":"^4.2.5","react":"^17.0.1","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^5.30.0","electron":"^12.0.2","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^20.10.1","ts-loader":"^8.1.0","css-loader":"^5.0.1","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^6.2.0","lint-staged":"^10.2.11","webpack-cli":"^4.6.0","@balena/lint":"^5.4.1","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^2.0.0","@svgr/webpack":"^5.5.0","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","sys-class-rgb-led":"^3.0.1","html-webpack-plugin":"^5.0.0-beta.1","mini-css-extract-plugin":"^1.3.3","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.82.0","@types/html-webpack-plugin":"^3.2.3","@types/terser-webpack-plugin":"^5.0.2","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.10_1632408406270_0.956297384407206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f":{"name":"balena-electron-env","version":"1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"7d21a6869e2559e2b47ee4cb39a115ab6e66eaa9","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f.tgz","fileCount":62,"integrity":"sha512-qpKq8+POE/KHoKgwvFdl+z6LTQIMZopahEsH6NTddBQyJ/E55k7g5F/m2mtFTeFjYVhHLHoPkhxPVGOS38CHLg==","signatures":[{"sig":"MEYCIQCxFv1MXYKVLBpigITDu7YeVjiXbeqki/fINnS6Bgg5wwIhAPRuarB+fwL0t/o4WjsuiXC84x4XPKaX4ZbcxUBVFaht","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1050768},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"b5b3dda67f920a00025314c1d86be953a06aab6f","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T14:22:24.279Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"2.3.0","debug":"4.3.1","husky":"4.2.5","react":"17.0.1","lodash":"4.17.20","ts-node":"9.0.0","webpack":"5.30.0","electron":"12.0.2","lockfile":"1.0.4","dbus-next":"0.10.2","react-dom":"17.0.1","rendition":"20.10.1","ts-loader":"8.1.0","css-loader":"5.0.1","typescript":"4.0.3","@types/node":"12.12.47","async-mutex":"0.1.4","file-loader":"6.2.0","lint-staged":"10.2.11","webpack-cli":"4.6.0","@balena/lint":"5.4.1","@types/debug":"4.1.4","@types/react":"16.8.23","pretty-bytes":"5.2.0","style-loader":"2.0.0","@svgr/webpack":"5.5.0","@types/lockfile":"1.0.1","@types/react-dom":"16.8.4","sys-class-rgb-led":"3.0.1","html-webpack-plugin":"5.0.0-beta.1","mini-css-extract-plugin":"1.3.3","@types/styled-components":"4.1.18","ts-json-schema-generator":"0.82.0","@types/html-webpack-plugin":"3.2.3","@types/terser-webpack-plugin":"5.0.2","@fortawesome/fontawesome-free":"5.14.0","@types/mini-css-extract-plugin":"1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f_1634912793553_0.04137489071406342","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9":{"name":"balena-electron-env","version":"1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"af443c464e05cdb36570a476f207a2c5618ffdaf","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9.tgz","fileCount":62,"integrity":"sha512-5dmhSwDIUb+Ob/XXzUh1xCS3aHTA54d27uzdmxZUp6jNoQDO5BJWL1/TlDHr/kXSAPElQY+u9a9KLfnzzYj5yw==","signatures":[{"sig":"MEYCIQCFk8Ziadq2UHpMJIJ4+humLW1cBHd/0993/L8HkJg24AIhAJtTIxtS3msjxZnxeuKncHfblZfrfWXjn/ZWSPnhpyly","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1051782},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"e84ba894291efe7d08b88e7e5e998767635190c9","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-11-01T12:45:02.480Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"2.3.0","debug":"4.3.1","husky":"4.2.5","react":"17.0.1","lodash":"4.17.20","ts-node":"9.0.0","webpack":"5.30.0","electron":"12.0.2","lockfile":"1.0.4","dbus-next":"0.10.2","react-dom":"17.0.1","rendition":"20.10.1","ts-loader":"8.1.0","css-loader":"5.0.1","typescript":"4.0.3","@types/node":"12.12.47","async-mutex":"0.1.4","file-loader":"6.2.0","lint-staged":"10.2.11","webpack-cli":"4.6.0","@balena/lint":"5.4.1","@types/debug":"4.1.4","@types/react":"16.8.23","pretty-bytes":"5.2.0","style-loader":"2.0.0","@svgr/webpack":"5.5.0","@types/lockfile":"1.0.1","@types/react-dom":"16.8.4","sys-class-rgb-led":"3.0.1","html-webpack-plugin":"5.0.0-beta.1","mini-css-extract-plugin":"1.3.3","@types/styled-components":"4.1.18","ts-json-schema-generator":"0.82.0","@types/html-webpack-plugin":"3.2.3","@types/terser-webpack-plugin":"5.0.2","@fortawesome/fontawesome-free":"5.14.0","@types/mini-css-extract-plugin":"1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9_1635771012776_0.3229328752713003","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.11":{"name":"balena-electron-env","version":"1.2.11","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"93fea3be9fc2c8f73f8e79ff299163fe4dfbad81","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.11.tgz","fileCount":62,"integrity":"sha512-gUgN+ClK0Cj1NZExEOgP5zBlOi/zbyKg2tslg9pz8AwTYSLcTpk4TdrCzu/eDrxnBuZm0EZFj2zHXerJ9Xe03w==","signatures":[{"sig":"MEQCIFBsCGjARr9bYnDEiaAbRMCUNSqm9DWN5KdPGtvyMF3LAiAZB7taWGPg0HOpfurTZXUZEB6x0m8R/rb0aDQNTaI24g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1051720},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"29ee64cef01ffad9fb7283b6e17f53798a016bbe","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","build":"npm run clean && webpack","clean":"rm -rf build/*","watch":"webpack --watch","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2021-11-01T13:13:48.662Z"},"_npmVersion":"6.14.15","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"14.17.1","_hasShrinkwrap":false,"devDependencies":{"x11":"2.3.0","debug":"4.3.1","husky":"4.2.5","react":"17.0.1","lodash":"4.17.20","ts-node":"9.0.0","webpack":"5.30.0","electron":"12.0.2","lockfile":"1.0.4","dbus-next":"0.10.2","react-dom":"17.0.1","rendition":"20.10.1","ts-loader":"8.1.0","css-loader":"5.0.1","typescript":"4.0.3","@types/node":"12.12.47","async-mutex":"0.1.4","file-loader":"6.2.0","lint-staged":"10.2.11","webpack-cli":"4.6.0","@balena/lint":"5.4.1","@types/debug":"4.1.4","@types/react":"16.8.23","pretty-bytes":"5.2.0","style-loader":"2.0.0","@svgr/webpack":"5.5.0","@types/lockfile":"1.0.1","@types/react-dom":"16.8.4","sys-class-rgb-led":"3.0.1","html-webpack-plugin":"5.0.0-beta.1","mini-css-extract-plugin":"1.3.3","@types/styled-components":"4.1.18","ts-json-schema-generator":"0.82.0","@types/html-webpack-plugin":"3.2.3","@types/terser-webpack-plugin":"5.0.2","@fortawesome/fontawesome-free":"5.14.0","@types/mini-css-extract-plugin":"1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.11_1635772579781_0.5032842660581907","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1":{"name":"balena-electron-env","version":"1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electron-env@1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balenablocks/balena-electron-env#readme","bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"dist":{"shasum":"5df0e07ac3c715fadacd2cc522e7dd5ef517d825","tarball":"https://registry.npmjs.org/balena-electron-env/-/balena-electron-env-1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1.tgz","fileCount":84,"integrity":"sha512-CuN+1NsfuP9dCc/7comPKcszHc5ZLZYROU52cHJh2sVH3Nowk/2nc13KmcI0cdSsTA309RM2sOu59JWS/Ccm7A==","signatures":[{"sig":"MEUCIQCH5Te5cRj7w59Se3tApX/VIzYx0J6GbijzyTPYzX3K/AIgXsrIGwLZks5oeSboQGbmoKBb95i8EF8nx3l7p4ACWD4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1060353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuFxFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqoSxAAo24c1WQKW1cNVJETtrPOKChlxMR4Akal4VV4lAGMJ1A243wK\r\nOcFvds4mgcPcAUY8Jte3nq5TAJROPs7UlZTvPTXH3Qj0CK5Yob7FIj8iuO9U\r\nDh+uM+w5Bp3XuWod72COLe7q/ILV5++TDoRD8aJHyljVW7oaebDCydGpLgWq\r\nikqXVl8paQ5N0kc/voVkaFTiGQal7h9KgYR/7PVR+WhnA6+6dDhmepXpPg13\r\nno8n5amXbLq7+3JRMzu17hmCV2a+H7Xr5UbhjFWdMve88wefvkEmDxzqewEj\r\nfzOe/8x2hFkgF0qzmfcTojZZfCkonKpBVAbsyQNM2yv6k6L/d1SztkIsa+IN\r\nAUfSeyy6YK3E25O1hRYDOOnhLN1wyIqYNlebFiqzwcwZHeU2RAYK5W2E4zyZ\r\nW0KL+U3u596braxW5PW6hjAWXdqIuPYpiinwIbjTZzgqUoi2wlEpMKFjvBHk\r\nVEhc0wtWRFTU/ivREBpoRVHNj9xFMctv5y6x9PX+p0jWfsra4/AJodGRznbN\r\n7xXTTMdfo9nm8LEdtEhj2AZ4L8XTo8FjAB1M16+hJWdVGoxOX8cu7IiXoCaj\r\nFOY0JUV87LYOIuaOpcZ+bRjy7LLHmRbuQ0W5xE6kTX0WehvIHpzaEC4fjxPf\r\nrtOV0ykVyhPmaAIiEWGYk4W3Ej8/8bd9Cjk=\r\n=QUf0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","_from":"file:/home/runner/work/_temp/npm-eccf4f64742f36a77452dfc8918953399ed17021-16.x/balena-electron-env-1.2.12.tgz","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# balenaBlocks electron\n\nThis is work in progress\n\n## What\n\nProvides stuff that may be missing when running electron apps in kiosk mode\n(with no desktop environment):\n * a wifi configuration dialog\n * a file picker\n * an on-screen keyboard (onboard)\n * a dialog for mounting / umounting removable drives\n\n## Building\n\n Build and upload this project's docker images `./image-builder.sh`;\n\n## Using\n\n * In your electron app project create a Dockerfile that uses this\n project: `FROM balenablocks/aarch64-balena-electron-env`,\n replace `aarch64` with the architecture you need (`aarch64`, `armv7hf` or `amd64`);\n * Put your electron app in `/usr/src/app` in this Dockerfile.\n\nThis works by running a window manager (`metacity` for now), `dbus`, an\non-screen keyboard (`onboard`) and requiring some js code before your\napplication.\n\nThe required js code replaces the file picker, adds buttons for opening the\nadditional dialogs and injects some javascript in each window to summon the\non-screen keyboard when an input is focused.\n\n## Components\n\n### Wifi configuration\n\nWorks by communicating with NetworkManager via DBus.\n\n### File picker\n\nReplaces the default electron gtk file picker, can be constrained with\n`BALENAELECTRONJS_CONSTRAINT_PATH`.\n\n### On-screen keyboard\n\n`onboard` is summoned via the session dbus each time an input is focused.\n\n### Mounting / umounting of removable drives\n\nWatches and allows to mount / umount removable drives in\n`BALENAELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENAELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENAELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENAELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `BALENAELECTRONJS_REMOTE_DEBUGGING_PORT` | Enable electron remote debugging on this port |  |\n| `BALENAELECTRONJS_SLEEP_BUTTON_POSITION` | Sleep button position: x,y |  |\n| `BALENAELECTRONJS_WIFI_BUTTON_POSITION` | Wifi button position: x,y |  |\n| `BALENAELECTRONJS_SETTINGS_BUTTON_POSITION` | Settings button position: x,y |  |\n| `BALENAELECTRONJS_MOUNTS_BUTTON_POSITION` | Mounts button position: x,y |  |\n| `BALENAELECTRONJS_SCREENSAVER_ON_COMMAND` | Shell command to run when the screensaver is turned on |  |\n| `BALENAELECTRONJS_SCREENSAVER_OFF_COMMAND` | Shell command to run when the screensaver is turned off |  |\n| `BALENAELECTRONJS_UPDATES_ONLY_DURING_SCREENSAVER` | Only allows application updates to happen while the screensaver is on if set |  |\n| `BALENAELECTRONJS_SCREENSAVER_DELAY_OVERRIDE` | Overrides the screensaver delay from the settings: number in minutes or 'never' |  |\n| `BALENAELECTRONJS_ZOOM_FACTOR` | Zoom factor for overlay windows size and position | `1` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ARGS` | Rotate the screen with `xrandr $XRANDR_ARGS`, example: \"-o inverted -x\" |  |\n\n## Remote methods:\n\nCall them with `electron.ipcRenderer.invoke(methodName, ...parameters)` from any renderer process.\n\n| Name | Parameters | Description |\n| ---- | ---------- | ----------- |\n| `mount-drive` | `drivePath: string` | Mounts all partitions of the drive, `drivePath` is the name of the drive in `/dev/disk/by-path/` |\n| `disable-screensaver` | | Disables the screensaver, does not change the `sleepDelay` setting |\n| `enable-screensaver` | | Enables the screensaver, does not change the `sleepDelay` setting |\n\n\n## Utilities\n\n * [clicklock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","scripts":{"lint":"balena-lint --typescript src webpack.config.ts","test":"true","clean":"rimraf ./build","watch":"webpack --watch","webpack":"npm run clean && webpack","lint-fix":"balena-lint --fix --typescript src webpack.config.ts"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_resolved":"/home/runner/work/_temp/npm-eccf4f64742f36a77452dfc8918953399ed17021-16.x/balena-electron-env-1.2.12.tgz","_integrity":"sha512-CuN+1NsfuP9dCc/7comPKcszHc5ZLZYROU52cHJh2sVH3Nowk/2nc13KmcI0cdSsTA309RM2sOu59JWS/Ccm7A==","repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"versionist":{"publishedAt":"2023-01-06T17:35:27.657Z"},"_npmVersion":"8.19.2","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"16.18.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"2.3.0","debug":"4.3.1","husky":"4.2.5","react":"17.0.1","lodash":"4.17.20","rimraf":"^3.0.2","ts-node":"9.0.0","webpack":"5.30.0","electron":"12.0.2","lockfile":"1.0.4","dbus-next":"0.10.2","react-dom":"17.0.1","rendition":"20.10.1","ts-loader":"8.1.0","css-loader":"5.0.1","typescript":"4.0.3","@types/node":"12.12.47","async-mutex":"0.1.4","file-loader":"6.2.0","lint-staged":"10.2.11","webpack-cli":"4.6.0","@balena/lint":"5.4.1","@types/debug":"4.1.4","@types/react":"16.8.23","pretty-bytes":"5.2.0","style-loader":"2.0.0","@svgr/webpack":"5.5.0","@types/lockfile":"1.0.1","@types/react-dom":"16.8.4","sys-class-rgb-led":"3.0.1","html-webpack-plugin":"5.0.0-beta.1","mini-css-extract-plugin":"1.3.3","@types/styled-components":"4.1.18","ts-json-schema-generator":"0.82.0","@types/html-webpack-plugin":"3.2.3","@types/terser-webpack-plugin":"5.0.2","@fortawesome/fontawesome-free":"5.14.0","@types/mini-css-extract-plugin":"1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electron-env_1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1_1673026629173_0.20099654923806387","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."}},"time":{"created":"2021-04-06T12:09:55.671Z","modified":"2026-01-29T10:54:52.366Z","1.2.3-electron-11-23359068ddb330ded82c09f7e67792a343724d72":"2021-04-06T12:09:55.916Z","1.2.3":"2021-04-06T12:16:24.999Z","1.2.3-nothing-8dc1eb7c6d97cb49695ae401e0a1bb2cebfdca70":"2021-04-06T12:24:49.370Z","1.2.4-fix-contextIsolation-a84858c9749ccf2e5f4e1c6e870de9a74be74ba6":"2021-04-06T16:41:30.911Z","1.2.4":"2021-04-06T16:45:12.013Z","1.2.5-modify-keyboard-de0caab4a9cf90838ff6be510cbc126879d2628c":"2021-04-14T11:27:00.897Z","1.2.5-modify-keyboard-7dd3df7b9fbd54c4bf7404940ae52f6d4a36a8fb":"2021-04-15T13:00:57.204Z","1.2.5-modify-keyboard-fc32ca42d51855b8f20a47bb7aff223fef100f11":"2021-04-15T13:12:15.312Z","1.2.5-modify-keyboard-ac7162a9aebf1c52de66a155aad80edfdb576dbf":"2021-04-15T14:31:17.031Z","1.2.5":"2021-04-20T14:15:58.707Z","1.2.6-refine-keyboard-f3fd42be2a958a4d1cca2cecd8c412ec9aba98a8":"2021-05-19T13:18:14.788Z","1.2.6":"2021-05-19T13:29:20.665Z","1.2.7-build-script-fix-400d9456605763fe57e850e4dcf8d57a214e100e":"2021-05-20T11:04:13.227Z","1.2.7":"2021-05-20T12:32:17.776Z","1.2.8-fix-wifi-modal-34e3f175a60ffc22e24dbe4b1378a1da87719c35":"2021-08-26T14:46:36.167Z","1.2.8":"2021-08-26T14:49:44.280Z","1.2.9-fix-hardware-acceleration-17dad3c94dbec77db4c781cdcd4fef15bbacdae0":"2021-09-13T13:51:59.380Z","1.2.9":"2021-09-13T13:55:06.179Z","1.2.10-thundron-patch-1-d8de40f6f722e1adfbdc71c7a91f9ef4fa98c10a":"2021-09-23T12:28:55.983Z","1.2.10-fix-connection-creation-spacing-892bf70af205759991e420564f2f3cf3f4ded894":"2021-09-23T13:28:58.424Z","1.2.10":"2021-09-23T14:46:46.459Z","1.2.11-fix-dbus-rules-issue-b5b3dda67f920a00025314c1d86be953a06aab6f":"2021-10-22T14:26:33.759Z","1.2.11-fix-dbus-rules-issue-e84ba894291efe7d08b88e7e5e998767635190c9":"2021-11-01T12:50:12.990Z","1.2.11":"2021-11-01T13:16:19.963Z","1.2.12-build-mcraa-flowzone-eccf4f64742f36a77452dfc8918953399ed17021-1":"2023-01-06T17:37:09.396Z"},"bugs":{"url":"https://github.com/balenablocks/balena-electron-env/issues"},"author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","homepage":"https://github.com/balenablocks/balena-electron-env#readme","repository":{"url":"git+https://github.com/balenablocks/balena-electron-env.git","type":"git"},"description":"Kiosk mode for electron apps","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"readme":"","readmeFilename":""}