{"_id":"balena-electronjs","_rev":"122-4c1e3b5b6fb0f6e35692b1ba9df60191","name":"balena-electronjs","dist-tags":{"create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17":"0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17","dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31":"0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31","dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81":"0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81","dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d":"0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d","screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0":"1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0","latest":"1.2.2","electron-11-3051371fcaa9159244e14aa51012dc080340d2eb":"1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb"},"versions":{"0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098":{"name":"balena-electronjs","version":"0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"601da12539106880922fe357267dd09d9291ab2f","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098.tgz","fileCount":44,"integrity":"sha512-Wb6Gtkl/wHI1bO1V6dcAMF4P2ngdNgrl6rO5DNRcDX04DCYubFGkSwnhnHB5+myXzof9dgUQzm99aUNmF4VK2Q==","signatures":[{"sig":"MEYCIQDLjlxfk2+fTPpHsbt3pc1Pk4+xe/kvl8sOehuC5hkgQgIhAInEbpUtbB054xAxPP9y4QjeELQb4dy5Mc2rsUCrNM6z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":655073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8hA5CRA9TVsSAnZWagAAOUgP/20uxzSmNHn0VNM4h6Yk\n6nf4WlFkR0g63HPB0zzS78khisueWS2EG0Qt1QZM3OqG5h4O+WwXbkT/oetF\nLL7SlYgL530543IuTVFUt4woUYtiaspAu1YIZM4hZMYHTSLS47tzMs9cXG4L\nrou6jRh0vs7Lf+PRkOsvMKAuLpb+iyI9Sng74de457Rahl079BhZTZKGh6MX\no9ynLRf5BdrzfEuawUkXsjJnKquFxkxP/ZlPNyiOXFGzoegS1i48szTFM3P9\n6MwKP9oUmykYxGVcHwTpyDjY9EuohDtIREzxRZ+r7rKHrix4XNlUgtfIsBRP\n2ffbGLFOPrJEfH92oi3pGYzuHvbfirqFe6gscm3VzZ23GUQmx4UWGK5mC/In\no5uMEixPrfrezELgk6Fg1R1sXo3xNVxYrDM6wCSLmFFN1Go9g1MTS4KIc34m\ngUgdAWnQgMFec9ZKzfye7FDNWAj+wylgaSJ9jMr/rr7UH3FBR49xsZRwC6t+\n0pyYd2XYr5m2D5JRbjNbdDryw2mld8APE9JC68J6Y1WOxdlY56JRPFQeMHNd\no23k6TUAtDHuNMXlK+219XdNn3ODD7KrrOpYcUQvDcFeBjScKI/xAPYOutpF\noU92VGQxyCTXNy1GAORJVEyR0ARoynrs0uWVDrwoLAikPRnWi+AIMod3zWBK\ndlrZ\r\n=P0+0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","gitHead":"54add51f73ac97434df38edd233cb4efc4104098","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.3","react-dom":"^16.8.6","rendition":"^15.2.3","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098_1592922169005_0.9685148535310124","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4":{"name":"balena-electronjs","version":"0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"0b20e17e7c9abaefc350ecc93f9d9613d23097f4","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4.tgz","fileCount":43,"integrity":"sha512-2JEvjUhbME8DJ8kIw3fEYCbp7Gtc+guqH61lsFCHWTwUZ+ZrF5xoDntqWNYXp15z1RdfI0+xtKB2dSiKriqeFA==","signatures":[{"sig":"MEUCIG7MaZ1Pj9qmBgkDj+c4KYhGrTf/TiKkdIwTRLETKtLOAiEAz6LJmYbAqQ4qqyQWue14kMdGpZ7Pcc/C1UCqwGssRPc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":654702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8jgRCRA9TVsSAnZWagAAeZEP/R0Y7Q0V2O26/u6069FC\nBeumEu/pVRSUjDeGumEj1cnHRx9+nW/0ScfUgGD6u4u1yK8MNr00ZuC0rkMT\neg+aS8rkrT6yITIcQijnuIKi3HLqvi8FUG+ZSXxVkxX87buSpxcKfhhd7AAv\nganoQJkiG22zyZwmOCIEYsIiegT/j3xwkaQiM4wnigLgjIhvUMkH8k1yFABV\nluD17ygGn3UvbprpjNpMH0lbwIxF4VZODUTQRFo7VaVtp7TIX6/uBmn97Eo7\nDi1D/oFpsXENF0ruwrT/wwH6N/zLtNgT/hXXeHgE8/go/+nhFvra/B3DqNfE\ntm4dgp+Pd4uHSE6lMkG/8UL3CKAhLYrxfyHd8raaMO/5A4FZpMy3IfKSgOof\nC/WXav+uHekUPvgACWgENDIwL10BmOlhiKsnpYMwmENF11mWoQ18P6Xb7KC/\n9GQY1di3hAxVs4NAPRppCabKMyUpOy+Ty6CD7xsPKjjCh1PCDqk8Yw9jj/az\nD2iRcYJw8Lb9+D/WXV+oxGwY/n/d9hmTrZRAq8BNEnVDqCpunwB7TO4M/HL6\nghHsRhbVsoguEkpHZQHZF2ltjeSidDQr8kQa5znHlquiRv8w/o8k5myBQk9L\nJDhki23yy0wZYXaNsKzTzZI3OrDVIujXY7AnvuT0awjp4/DEj5AMH/f8RpmF\n3ALY\r\n=Lz0n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","readme":"# balena-electronjs\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `USE_XVFB` | Use `Xvfb` instead of `startx` if non empty |  |\n| `XVFB_RESOLUTION` | `Xvfb` resolution and color depth (only useful if `USE_XVFB` is set) | `1366x768x24` |\n| `VNC_PASSWORD` | Vnc password, will start x11vnc if non empty |  |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\n","gitHead":"6afe62c967524ed21b4c67bd6444f014685182f4","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.3","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4_1592932369434_0.7817210191267048","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc":{"name":"balena-electronjs","version":"0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"5eb2a8f1473fb9314bcbaafd04c9f1e4883baf0c","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc.tgz","fileCount":43,"integrity":"sha512-UDxoKcxEVo0IFARWLQGhajxZtSU4e8KYNYeAq6Ryqw9eJ2KFJZPLttkwF1UAXsLe/KS/GRYpOOxoCf64vw8l5A==","signatures":[{"sig":"MEUCIQCDMTdXH7xg5dQutzI0N8jbOcnJuL0y+lXgLez1xv57sAIgDu0vJ/eKgCocNoULbl0JoJ3Qt7fkZAUoUuGwih9olow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":655099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8jowCRA9TVsSAnZWagAAVRgP+gPb+HILiPpQ9l0NTEGt\n7DPJz1OfvSB42tm2auNOY2JusRIrO2j0eLGwGXg03C5T9sBdyASap7q3f2Up\n4WQAji/0M/auN8x+VGPUwt5Yzar0AG24ky/4W3TaJdy87yLrHXY9dzfEdrqE\nL/oF99iQLOdLq7xA5fp7Bj7/Q9onLBrvOoe3qFChmykMlrWeU8Qtg3DIGGu/\n31IljR0Q3ZauPrmEfhTjiP75fSX9IRgW1UKk8nGYjwfR4UH+WF9/FRz4xP2G\n3vWvqYKu9WJaiMMGxic61Iu7Wv2WQDRa8o61lixCgP0gcN/kuoFl7U4yEklS\nKqDASfkAe/fitfwqFH8ddQfrXgaK8JNwo8kxz+fFSew3tTmxwj3+AF9pGD2h\nAhXv9W/ffmU2ZYZUJTneKFXhmb+YpQQzRE0i8I0LMO+uSLtCTQrwEYD5xoG1\nzFUo0s0XCdg/mW6Fw2jfckylOe8nqvDNyuyEMI4/6fQyD7h7p6G7ALsctSoe\np6oDoCGkGY8CVuDERT7s5m3acL/TlePzFw8kM+oktrHqqHD0ucquZoU/LUY9\nJQcDFOFv3W7CvAkY08tlKpScKhe9y23S3UjdmyXoBSOUnpDtu7nkV3Gjbw1m\nVGSWeolLOeQ5qsANSU8xcowJ5rA5kdhAdkbtlbDfuJaUMUqSXxXf88aRA+Gr\neXaY\r\n=V/2a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","readme":"# balena-electronjs\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `USE_XVFB` | Use `Xvfb` instead of `startx` if non empty |  |\n| `XVFB_RESOLUTION` | `Xvfb` resolution and color depth (only useful if `USE_XVFB` is set) | `1366x768x24` |\n| `VNC_PASSWORD` | Vnc password, will start x11vnc if non empty |  |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\n","gitHead":"f0fa358ac2bbfa876e8b1522c55b169adabde6cc","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.3","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc_1592932911958_0.46488548289252796","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131":{"name":"balena-electronjs","version":"0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"db09783ee9b16f99b049fac20c3fc8e722ef9166","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131.tgz","fileCount":43,"integrity":"sha512-ja6kj1hhtncublehXQV88TJV9Y+P8GHzKM+8ocXEsXkIOgw8v3gE/Wzo6EgXUqmWHrpGHqnENuHqxobap3fypw==","signatures":[{"sig":"MEUCIQCfebkVdYYHe0c96k2HAgzOuW0q3UYHn5fNBlhlj2foEwIgdXla9NLi6QfVLBuZsTwTcOJW2POtBO3Y4qiXhFpwJTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":655101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8jtqCRA9TVsSAnZWagAAC6kP/1oeWnj9uy+DkXhHavtZ\nbzjYaZPJr5ij19CX3F5961ktQL4H907pqGiqIJwd3S+abJopsi42RRbnKZL2\n/wnEdVLwXfNVWNdSvwgdW5gvFR/3q3iS0+Mp3yRobwJmj4ORwJYXSb2oViUr\nvrySSFC/qcO3qtMrYH1TSMu18ELKFbQXfS78KTJE4I5wVEgemDcb+uL4yeiL\nrXhWCM+7Rz5DzOSyNAiuEe7Ad3wARywzhy86izB57HBGI0XGX2X8s9jaVzVA\n5MjGnlvEVQDAMX5RJiEEcb7OoSPNWzQGi9/XM2jvP37l8MzZ12ZZMY99HGQz\nMNYniVGWFRj7/1V1ri1/oJ/aNxVCfJNuYfIFLl6Dz7ccdZUk+INJ8NDTJoPj\nBxFK1m8JyZX12fSqRQ7HQkqVnZEr17RJIjnuRXBkFiX56nrFKX+TDQBnURa6\nF8n1mEuMRUfZ3Y6KT9nsDkweN4tAeCOoUY62HPJgTkiaqQ2QSb4kbeF+Cftb\nnHy6BwElBf7Hn/jWwnQCOzhe1Aw/dgNnzkxQaYQ08GvNuiwmvJAkwrpsWmVh\n5dFIX3s3iyMuU7Mv6xd3Oz5wsBancuXEwBpIq13YTDCEd7/sSeUVgWBd3lru\nALyxV1I2FqLKoBez7dZGESIKeupXILl3cDimATpwr7TGmjs9HbAKqMVYKOhh\nfCGV\r\n=PwRn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `USE_XVFB` | Use `Xvfb` instead of `startx` if non empty |  |\n| `XVFB_RESOLUTION` | `Xvfb` resolution and color depth (only useful if `USE_XVFB` is set) | `1366x768x24` |\n| `VNC_PASSWORD` | Vnc password, will start x11vnc if non empty |  |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\n","gitHead":"b467ae67186df5de35266595d262b2c1bc869131","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.3","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131_1592933225914_0.537161338760155","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25":{"name":"balena-electronjs","version":"0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"8e1ff7e4d5e7b32de4890a0afcffbe6e38acbeeb","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25.tgz","fileCount":43,"integrity":"sha512-ucNdR59pLwp5Umr0IexDjtrJdYGljwWxsZeX9P9sMYCKgfkPxEd6DUe2Jl6XikQjjfOplgBPqnCeVL7u8YNb/A==","signatures":[{"sig":"MEQCIHk6AVHxnRM0ik3kLnh7ky8seL9l3ZuqZzgxO5pCgDsAAiBfALE/5NdFOwWUJp+ElAReoanKKdfHcfWV2hPornVDvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":656762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe807VCRA9TVsSAnZWagAAASkP/2gVARtJ5HpX69a5Fu/B\nozHl4/eTvDyRF5pYeZv59gTkrwshgAxnMULw8BdMIxBIGl14xuwc86ZrmjNl\nhiOLi57BviMXeLYCh4u0lBTHr7EyzfVZ44x8K5OYLDCWjy7ccxRg+TQ24y0i\nM3UaTyvvbqNiJsKweshCIjsViH0FGNtq33dqyS/qLvodnz+1HoMU7siLrbcJ\nmYbRDHd4pHuK1ZUgD1kIxQX79V1OwEtq5dzGZps+ONsnKTKbTTdC+NyrVM1Q\ncqZN+dQcPMONO+e+gyMiJfFxezGFLpIxsUQ29zbRRQqw9aOSLj7SV6LRFgOE\n5EqSXSAFQGvMWFFKjrVLoIC7hgOJXWaw8BrA6E1g0PMH9vo2W1bglsUG3FZN\nnU+4WpPfpdTVv5Ret5/9im5pY6gvvh6GodefPq7mfl+ZyAzZrSl0ktb/8P5s\nhZOehgBz9dGdvidpE/HvymC82b6wgg3jG6MhQlseSwHdMzNyowEP4DLmjrDf\n4hDYyYXPyEGzOYMP/Wl+a651rns1W+y3E6/KOXyowvkW1qTIjcAgpoDCgeSR\nrahh4iXxCL3qyF3QQbKMB8ztLzinytY0yMAh666LlqIwV0gcZIdImEyna73G\nnCJrjhbMnRqq93bVS8N7jf1fRJmbKkX1iwGL66ugVF4djWfgMPTM0XTYN1PN\n0Mly\r\n=y6CQ\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `USE_XVFB` | Use `Xvfb` instead of `startx` if non empty |  |\n| `XVFB_RESOLUTION` | `Xvfb` resolution and color depth (only useful if `USE_XVFB` is set) | `1366x768x24` |\n| `VNC_PASSWORD` | Vnc password, will start x11vnc if non empty |  |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\n\n## Remote methods:\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","gitHead":"16dcb751bf06615b1213ae475c3545fb4a7f0b25","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25_1593003733203_0.33355678950669954","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314":{"name":"balena-electronjs","version":"0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"8248b23313a98e2c3623d8f3ec6d33a327705e3b","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314.tgz","fileCount":43,"integrity":"sha512-rSti+uGiYfWoSXI3sFZt9jqBG+YPuP7qf9ZFUpDUv7UqbuDULHmnStGNM3J/hBEzH56cqWpxOh0MBCifEky6aA==","signatures":[{"sig":"MEUCIQC0FdIRTubthxgnMVhnqT6QjsaJHC8jQGCPQFRTzbxYdgIgd2N0NVDqnHAjLphpodhMZF27AsE9r2sPy6Bxihv1Dy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82BOCRA9TVsSAnZWagAAj0oP/3D6Adkfq8pY+jSiEUHn\ncmGzOQdHC99m7cXmi4lISo2YrQppZnCjMEz3zM+uKuF2x4EZ+cG/3X5XTOEQ\nMrZ7oupkOQdEt089XJKwN8QVayxc3shyrYbdwo1y1b4NwkkDB0PCwIBZtPvX\nXfIMqMlDyZP2tMSLnHPayWRgYr+7EJDb+gP097B0dQGGWxLrW2aIjhUAvNBy\ndQ1BLffJu1LGJxjWtUkbdoJmNd/CUQhEc7oVrFt11UT0i/gjSNs9gkGef+f+\nQGtWDeNmapau+zBiTO4iHlkIh5SgM5Daw0wosl45vGxdrla4ZZvFa20I3yEQ\nUXgvAdPKQ7Q4WBWk2zjYJfwFi2ZdT9DfKA7OFb8bvpuquNMBL9cx7AkaMCjg\nBRRbH0KMCCaxr53TUdn9DLqKmWobtwWPgMH40MoS/Q4ljBKMnFdI01JiHEmZ\n72+I0mBMhx4ck1pq1xrjFVUjStMNyeBUy1tECII5WBBVcTi24A1peUohcpqk\nwgcvYUpNLKNaPIaZYu0bh+I1L8dNOREWgfvyvN1ugRP4JG/KuisgUNUWdKl3\nNW8i2C/VfzEFjKrLhBCdj4WsBPmHBJgGQlXitXsIu5TsFkdnUMVG7ggVCgqz\nTlX+Q33C7ZYEtQw7Fa7STs3nUvGudJPfq2vgLSTKxKf2GT9Jhcc0z/5Bo8xJ\noYSG\r\n=Ski5\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENA_ELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `USE_XVFB` | Use `Xvfb` instead of `startx` if non empty |  |\n| `XVFB_RESOLUTION` | `Xvfb` resolution and color depth (only useful if `USE_XVFB` is set) | `1366x768x24` |\n| `VNC_PASSWORD` | Vnc password, will start x11vnc if non empty |  |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\n\n## Remote methods:\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","gitHead":"3d1000192e4f553e05c11ff73413eddad1365314","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314_1593008205951_0.20464405283325493","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077":{"name":"balena-electronjs","version":"0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"c16c111d94280af6f7432b06bbab4fdf9d98327d","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077.tgz","fileCount":43,"integrity":"sha512-59I+K/QwTARr1VyXK183QeAy1h6Ix9HcNAuK+9AFxBWYRrj0LCjoAwjRwNuL9BtMO82Fe2oAwswtIKs1GB8/TQ==","signatures":[{"sig":"MEUCIQCkB7+nX60nwF12glNvGBPVkv6v/AANmtLpmX0b5SXvxAIgEdaMDOkgRERPgLugL3dO2BoSKlTOyYisW6cLQDCNuNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82KDCRA9TVsSAnZWagAAaVwQAJsQbzoyPD0pFbJDKOSl\n8QQw6tlx39uW9Y1xyjQUV4bsdAp4NTUaeJwRelHHIWdvfBLxtrGGcS8KmWqZ\nxqkWN6mNVZGp3vG5QOzCeX+3NkhC7MHnuxYKBG2oK3mBd9P9RTJEK+gRDk+8\nfLfvz+awwItFEifNZKDWPXUioTQJz8dgkr3jKL8aMZYctRENS+o6k8iZ2+Ns\npLjkurkERP2INfv8UVGYwefhTIpN2c69JNUJGWec4xDJPWyMwHLFfHVVCF9L\nSHDEW08N7aalzulWKay/ez+I+arnIFbx/gOEb90uR3VqU9ePHyYBgInchRzL\nD17V9iGOGZE2DHA5IwOVDnP+itgG7OspeGbht/K/lShHKEnuyo8pkHS8sUKd\n+LZpdz/gH9ggSqJhvKocEGAZZiGhLfdBbt3C34BAwHnWGGEm+AjKcVsKHEVj\nlhyY88z5Ci14mtNQwHenmgcyVmZGg5KzW1wXuszsJkf/v/Dqlad7EulMXOpj\n6H5128TXxK5k/Xta2WX/I2ab0UsV8EksX+Rfg17C6gIJwAiigVTLuamftjat\nyc0fF/dBzPBkD8fitbUOrp2+rNOhidKXnmRIfINqUYbjww8iN87Jf/XVI0NS\nVamOkzauIvghcn9an2aI8oG+6RxqEwZhQmvMuWL/klD1c2GpdAD4PFNKrT8G\n0Al4\r\n=01h5\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENA_ELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"db64191c657061ade3eea9dc0fd96b90f5e6b077","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077_1593008770529_0.9235997327455809","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2":{"name":"balena-electronjs","version":"0.0.2","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"7ad475e80255a11cb72dd2267acaf3a0e6c970f3","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.2.tgz","fileCount":43,"integrity":"sha512-QErwFlIxNp/CZnW+UWqGxHJM4RA/f2XkpiKaByt581zTNSzxKCtlR4Bifmu45nnlvB+mNDCQrwiKpRJqiACcIQ==","signatures":[{"sig":"MEQCIBI0LhT8a3oGyRlHRcY+kqkVA0SpYTL2UqAICxv4pnhSAiAumk7M5qWH7RHpDO0UU3IYt5jFRdc/4TBHBTMhgMdZTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe82ylCRA9TVsSAnZWagAA0WwP/RbZPuKGh+tvqr1ehd8J\nbNLxJ99jJD7CkMfsRoDF8KKhTPRNC+GNuECf8bHfYGCkUAj72sxCX6oQ54b+\njcEBfgnd7m6KPknFahflYqb+3iDc8lAwjkkiK4OlLx153hWJfXQ93myt6l/y\neEs9HKkzux5n/tBSDoe07aaL22LfxBSrKVdY2WXpe99xnSRmOdPl48DXl1Gz\nNnoSdASLq1lsLRxAvZBet4morZSRwBQjn90ml/VVwLtstEu0JUt10j1kSh+Q\nUMtDRSIFnoYktd85og/ptLLUCZOPn1kb+BMVSRpI6TTLR0465ZW4WGLNK6oy\nRd1/LtriLkVWrJQTNdhe6veVj80OmCAwr3xNidaT/o3xjVuM+aX4jp9vXkGg\ngrrdqhwJNCGe8+Bj4kaLOPixovg4wiWHsz41ARRsb56tq4OvplBtVk6sJG3Q\nzkdu9Ya7gvDeGEZtGNKG/g+oVTb98D0jV4zDRgKYJrP+KR57KGg78McWhebR\nYVw1V0KW7ASUXT9s4wNQKyXT6TgJGzF/aCmdlUcuSCXUeZX17nU1jIbLPYWT\nbweCQrzf/sUNyRR8vOD9UZGEcDGJBz86/N0OIcfIs9TBKMr+CSrxAgKJAtgf\nj1Gd0sVMS8K/a3pcUGRh3YUC161J8vshrmYPZ9x0Xppm87E8mz/cbrl4j2l6\nRRV3\r\n=X/f9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"5496f6c69f2fb7806f9b391493c232f909bdb07d","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.2_1593011365019_0.8325938546681935","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9":{"name":"balena-electronjs","version":"0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"b7b1261512e850f4ccec9dd2e85c4c07c74ec2a2","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9.tgz","fileCount":43,"integrity":"sha512-qZH4sHrFyY8PyZY1pYDVBLd0mOTudCqoEp8hEkpmgzjmkUm6HBUbo6zA9hH4oH5g3jT2ozpENh1Tv9L7poOCPw==","signatures":[{"sig":"MEYCIQDiFBEUly0IpcJ9sm4LUsPk5ejfiFFUi72Nv/9F5C8epwIhAIhRQcS7cjWZoerJ6jA3+c1tfGExhbe/UL9kta5Osis2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe83YBCRA9TVsSAnZWagAA83QP/19HO+Ok94kBoIZmO1Cl\n9kdAN9XsaFhtmbcDwWMQ0SlfAWQEk74xMFjmqS546KMTYeXsfsNSpt0lQXRe\nygEUHZ4ZtfOprfdGbj+5ib2UKN7eUpkRkvPKal1g6pIOBPJyXEJVebIlHYJF\nNbwqLvzptFn3ZbKY+4r+vWx0mKWVYAyZhNe5GmkUQnp0ULRdmU1W29e5gly0\nm2aae7eirAAem6ta42D5jlD78rxgjEw2U50x0AhUVmG9NHT9rpHK9p+2ejxe\noC6U2vLqlpvBRB0sJc5aWZsBlqTBInsPS3kas5UPJfS74SKulHAJZEtmI6s1\nxvwkC6qbBQQw84VNdqmYe9kTxSqGjKFFD03jH27QO+KfOOzzOczv9IwU7oQL\nbuLIy0JBeHuuemzk4cWAY0P3i8YEifmvT5ACQGYuAfwYEQ0qGsKYMDeeUQDm\nTViW/O5f7lAZ1/aFopOKtMg9xVh7o3VKvyrKkQ+4yn2VepIQ89ZwJyrMmeAv\nXo0OVzASe1iZvZSo9iEsuFKKszjrTYhUtQ7phcYlrP/g9Q4a6wYnIj4AxZWT\nPjQuAc1pw4RU7Xq2GpHheQLSwTkN5PAA0E4VLflAakHRAepXucmLDfvBTRal\nT2YPYDleQl9p/phjmsTJEYsT9lPy4rWI+8S8NlfwY61Vq12g79kCxVFVlERl\nHMlw\r\n=WZ3e\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENA_ELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"7074b8af5dd80bc1244842c0194e9a6645e079a9","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9_1593013760766_0.23952054588382787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.3":{"name":"balena-electronjs","version":"0.0.3","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"c4ba244b7a74027aa2cc35d17aabeea46ead6f4d","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.3.tgz","fileCount":43,"integrity":"sha512-bS0cWI0K/M9ybJtwVhkLfsvfpYZ1A9htQ0NCAvVdiOkLDyICUdLAWw72aSbJO0KgCRoYLPXVrBcNE0OC7Z8aSg==","signatures":[{"sig":"MEQCIED6P6nv6fgcjHUKDzGd19NVF0cQmMuQHqagsKchwVnYAiA6R+2+kRxjtTR2cImxn723Bl68F7qGna0kmwod0pLKSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe83akCRA9TVsSAnZWagAAJTMP+QEx6tS2cY5Cxd8ZK1NT\nvtwFLtJLKALpxCeXcDoohd4r4P7qZGO+FvvH97AlcTEIoEP3MITPrUMP5lMM\nBS2iJq1DsNQ4BkTJFvokILGe5H0dMAgl5FvAlzhVL3qxEaAQlXnhn6TV/uCK\nnK5fyTBOslZVx0a70tYwWO081+2Aqph/2jyPcHoXm6YHbd0yTSNf42YVO19Y\nEZbMKdeFfaTh4LE6BPKPXrnR3wVqkoilteBGwdtoVb6N0KmKb4XQLCPFHcs1\nUCtliUg4BN0BaJfgvNobHcp1a0UjMGDJ+0VKOGbW4h3LI9EYPJEPIioAWURh\ndjjSGEyZrpl/CCNVpxgYFCjbaDsngyjvjNrXXwq+QRwFseQIPJfvtiLDCZsm\nMRaDpn/675Uyw28WA/T4Ww5rzsN+2aGPCmcY7tgBmvqXsLemF7a6ld7Nrn1t\nUODL8tCo8EwobcydqJ3RSaGlna/vw16qVf6tAGNN2YFzH8NNs0C9MCMCYFrx\nhdOFXFD2uhtLd7lLJ8bd9LD8Bzo538f0KgiI8lZGztCQA/oYuih5Jz8pfjS8\nLcT6fbd1XQuCoaO2xQYCAQcpUkX9b9jADKKMrk4/zNQxnE5S/M0r24adTUuK\nbURt06XbWFUfIWYlpUMIHEQoikmnut6zsLcbQrOfmX2F4O6eFNyxreYG260Y\nbsAQ\r\n=7jRI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"1c10865e8be8eb9aca68451d99ca677a2674ea6b","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.3_1593013923932_0.5527639510666045","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df":{"name":"balena-electronjs","version":"0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"5cbba64dc5cd0f427c59209527ee22020105d452","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df.tgz","fileCount":43,"integrity":"sha512-HSq9r4nfREg8gXjZ3BTLDszkBLF8UxRBBCAHLv3TtVIAPNYnwBeFev4wJ5XfNzhzWoPhq4JKP+vMGZYOZ63Hjw==","signatures":[{"sig":"MEUCIQDpdzkfzs/T/tlkbOnhWLfxA9GGDtxPRbfodCAfxdiAqQIgRPUC7T4JcHd5cio1UeebBdRTh3ZWzg2Gd1Lr2lklPsE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/F20CRA9TVsSAnZWagAA4PMP/0ChW67Ye3lHlwdYy9nr\nIKke9lSq6kzrtAMjit+LYjwCMzU6V+S4epnpuOvZsOttHEJgn3+FgTC3d1OK\n34X4vvzjmvMuqRN2Qb9muf9U0+tjTiIA8RWx1OhhOTML52YQ54GkZ/g54gZ7\nfDga94F9tRvq+nDiouYIxmG9x0gGwwq+dnr4qIEjtbiRp0xT9RN92U7Qz1bN\nE+TaGWMzruKHdoLwtp4T3OavLmalJJsvyBF2WESuFRziqlsGZPhL1nzZionI\n8a1pev27p4qOkKBUjURYUXlMZq8UFUKG96OEU0XKglinuuOlSycWxk0mxQH2\n0pT7KzsFF4br64tathX689/QCHvuqjUD1pX/iBI2q1ooXqCJaHuIJGNIAbZU\noT4HzYqcrqDgeVMad3JGn0prxfeiR1WY+Dx1JQSmPNRCHV04sdwz6Tqli+Aq\nPFQ22ZeC8VJbwzhNTk/CVrXLYXtSgn3wlGneYwALjsWNUdbhTE0mudxcBuvm\nqId0BsSyLsGIel1Za1wacCoRD8k677pKZdFeNAgaxTSGUePK6TQBYeUgyuX2\nLcyk4yzZpM3tlgakYjsspPcNWpXCSVfxENtCDL7yWn0rqHp+wRAYbV7Pee1M\nsUbSLAN7jCTsKyibc2svujJzBAlAYn/WxnzQY5xm6FTIcDyaua107CwAlLLk\n7B4B\r\n=EN6c\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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`BALENA_ELECTRONJS_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`BALENA_ELECTRONJS_MOUNTS_ROOT`.\n\n## Environment variables:\n\n| Name | Description | Default Value |\n| ---- | ----------- | ------------- |\n| `BALENA_ELECTRONJS_MOUNTS_ROOT` | Where the removable drives should be mounted| `/tmp/media` |\n| `BALENA_ELECTRONJS_CONSTRAINT_PATH` | Only files in this path will be accessible through the file picker |  |\n| `BALENA_ELECTRONJS_OVERLAY_DELAY` | Delay before showing the overlay icons | `200` |\n| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"6213b2fa8ad33829b683e5332abfa9e51ea4e2df","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df_1593597364274_0.3477707706161257","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.4":{"name":"balena-electronjs","version":"0.0.4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"626e7039acb46823f223ae79bb2e07499aa4ce7c","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.4.tgz","fileCount":43,"integrity":"sha512-4ZkYsDvNE3q6+8UNmynpp3UKb+SNDWGd3V9F9f8u9NXUz9WXkSfARjBEZb9rG7Y6kKLlLYQlQBAwrEkq0t6XYA==","signatures":[{"sig":"MEQCICP4L2XPAtF7AheX47omzAsO69q0hQuZbhmve7GK6TFDAiA+2b4ncCjEnFJo+gyK6MFxsGIlnWYyQWviocXzmRTVJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":657873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/GGpCRA9TVsSAnZWagAAQYMP/3wukaHb9PnlRVSTTIsB\n+BYqQnc3XxjZxrhtRErcnh1FLRbT4jypm3vuUfOO1URt4/P7P1cZE/HtmGH9\nB7F2W7FZBmwLbszMBfbQosjrK20T1cwPv9l1XftvbfcYqpD+Y+gEclZNsnZ9\n1wxNMDbtmaSJvRlIfgV5v+Ho/scSCCO+B53MMKTmKNnTLoE0xoiHw3u8cMLE\nCyCvHX4kXzBC79aLXkRQmxouHqWqOCfewN6G6g1oS1nI72arpirKa0kECISh\n92T1Uc5w94scns78dh3N3c3vjk1+IBfw1BQZ0S6NYIvVzJfo8rSoa25NJHZx\nkLUeoh2M2Z6kxyCiMtSm3mxAyzxoYUUwIjxSvJfIS5GBx+Y9fDiw6eQb1+wt\nH6T3eD7DZolfzBzz+dW2JpfamJjO60kGatVl6JDDnJJOJ3h139PfbVeD61RH\nkkmeegtt0S2ZF5mCo7YKerXH/9k/18HgmXldk1ec7LGthizRHo0kmbANbTvb\nAFCvs7Qo7A0Cl4UCBfxWUbenBTUcrlqsKSqkv4fJZLsidxnH+Hd9k1tSncQN\n1EkvAky12CCfedIAbTW3hRA1lQAFrGCACRPau6A9PeLX1Gc5hwDTep9QtpDT\n62VwFRRhlqqkepSk7CtqNnxzLNnUuad7MKvmxUilDF3WaHVkn208LLq91pt9\ny1Ha\r\n=TYiW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"b33c620ace024e29956c8c5e2314846b88ecb9d1","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.4_1593598376646_0.6544602520387071","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18":{"name":"balena-electronjs","version":"0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"163260c90b5a6860850d6a8225c6885b89637ac4","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18.tgz","fileCount":43,"integrity":"sha512-fwHKQ0oYyZaBu5V07C6A6Qnhhs2Moyyd8ovnQv+a0OKtOYd3PVdiYjwNLGDZACG6n1cAninD80CyHhw5zi8aYw==","signatures":[{"sig":"MEYCIQCWu4y+pSHJQRuLK8ds+C11yYYsCr76H6AQepA36IzTxwIhAIVD43Upc2mzWs05B4d5xhAavv8EmrW9sSmepUv49fZY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/bNPCRA9TVsSAnZWagAAz4oQAI7WXu+Cpt1BUYf7ad3s\nhz7sKqBqR0ZsFLM5wRmKoYQA9SPnKDqGY9WSHABhxwHzJSKKJNPV+rS63LVt\nLCVWUcYICgykYvlVmiuopuTZFATpOSkbGS31WYgynhL2L2TwQvyAhXVAuyot\n3q3s8fOzHCGEKFgaVrm78v+ACsevb/f3mAbRUV8DFrdYBBj8bIeJaaS7fsPg\nexmUUq1s7jE5b9+SSmFBSQfv+h/sX/4gVsei9Glph0HTLPgzr5vJX7etK1x7\nzqZ8XOyOxxm5fBT+yodY2pzqjjl8BwCP99N2AIcoqh+roYboL9Et7mig2OJl\nF/zqrZRfDVRyiH2pmYarKmperhfS350h+IGttfiG51ikbNdjsESwm5RslOdX\nHmFkfJ1rJGa7g7/VCCpTpUiLQgfSytIU+OuFMehyqnmhxnH+sbn64RNXYsgn\n0IN0WOhcb/Kd9rlrKM+gZ83XSJoX94RiTdBcBq8dGW8rXhutjNUnF1xezs/B\noKR3O5JLX4bUlwdP/yXoKjOD2cALDq8QQjNtVSa+3WfgNL3sQW4tbgrcudKO\nl1ydQUYCPbfsHvHQor+pf/HgUKmhHTbZR/jwaNJqdHag7W3nmvXnCpuG0XcF\nLhhQj2wRanaOU7BTxBhs/hMFAtBTPAUWXjBE+n5QMN7P9czKtcIgD+BTUE2A\nFKbB\r\n=3OvK\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"b1ee66313186b6d79b0d6d2f1827ab63edab9f18","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18_1593684814602_0.5773326400366328","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.5":{"name":"balena-electronjs","version":"0.0.5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"faa79ecc00f516acc6360d510300495a18556be4","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.5.tgz","fileCount":43,"integrity":"sha512-e9c9CTNQh6uMU3IfdKo11U5XVZzbSP3PblqXMxuYzeYJh8mCTXu68kfOkx50Z21qiIMSQpNHi2pcTcLT/5rjgw==","signatures":[{"sig":"MEQCIDOaQV7Y4YJQZ96xSDkw6B63Tl130yEuStbFu6pJlfOvAiAiDpUwZRkkMnCF/X3ezq+mKD1rWzr0r6di5pmNN9PalQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/bP7CRA9TVsSAnZWagAAlc8P/Rn5M2GrN105jlwwMeqz\nErheyUfRCpW/sH3mSknN47GceUe+9x2zbCP+n+b/5j1QLhmIDIwz20gIXTmL\n8rzDL8TZ8bajDhEEluBgCttRaHqiP1YBRvHm+PNXdGKpyjklvSft7crGXUZP\nnJsRL1c5xCn7JvKH2rHFLg/fQP3W6xOsVKfqdkfOa33u/DZJvpVfbteiHPWS\ny0rqJP361YEntJMd0PkQdtUMMv1juaIsntffYygl0wpJVfZCPI2a0kwfBUw5\nlkAF1Kt71wsyrfzgWDCzQT39zfMNQfwkUbkLFOWB2R+yqddsBcHGLghJnpm9\nDM258k1sMcIK5oujIOupV21zbo+wf6r2ZLgv0Qj0k3LJX/V1cENkoz5oH9OR\neXrIutEoAgAVKBt6Zedb6NhmQMQyO8gis1m7Rj/xzcKUNs0M6pdjNQmNz6NQ\nBXSwBFhP8vc1MMeglDx7YmDg2zLOnwliIjI6AEJYmw2o4KbnTNrxpDxZW6Ho\n8M1TLFZoiYVSugVYY8Pb2zicQOakWiWLt+9XC1ZuI1F/dUan3/1e3Iym75bX\n+///KJdxh2V6mSLd+PnGOtoenlGVv6PTit59N45T5ayn2dm2tJvR1LvEnnK4\n/zGB4CTvYmyh0WC+LDYBaxHQqzQR5XON6DXiGyrxlep7ufJgwwt8MS2Cmy9d\nS6H1\r\n=rwO6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"54a19b7c4f8e0551f2c8576566ab64cea0138860","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.15","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.0.5","react-dom":"^16.8.6","rendition":"^15.2.4","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.5_1593684986871_0.3354340533980069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17":{"name":"balena-electronjs","version":"0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"a3083486146bba3df9326fe947cc6ae234f6adab","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17.tgz","fileCount":44,"integrity":"sha512-/mEIbt5yZygYg1nB0ykV3DpoYLRFtjHnnydcR2MURZsn7QmmVW5fIsOUGSxNcYh18OpvpIqPSXbTSCEmBwE9Hw==","signatures":[{"sig":"MEUCIHUrZe/f3orYv23szaQRZp9MCoT8d75n0xi7nHHYXFAlAiEAzBzZ/acJ7sQR7NqBpVcjUqAcvQ+iCJ4OAjWYitjcJYs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVmRCRA9TVsSAnZWagAAfn8P/RbzS6ltnT87udRVmRUH\nyzmIX8Rd6AOMKor3F9g/eVu9gVSvZpk08qrp41o4c0MI099QDVpu2YD6nNUs\nthaJvrCVQa/DHsFUx6YQ/rk1a/RFMS7WyjBe+fxGJocdO7Hz8DXNNMrVzyk1\nRVrQagoTK/eY0r+U7ExfO6QEu6hNhhKNwPIRSAqkK5c9zQ6VlLXd9TMFw7Zz\ne2pwi3suevO7vhbqhowFQTqZGYtVSi0Lld8h1XFMMUWxqhEVOgc0UR2aCCSf\nABjp2AmD+zjlc4c4fESCP0SfMxZcrHtiwbfOL6JLf6vIKd7nyGT8oRWMbf+J\n68pMvPRpfPWYC+qBZuGFAewYZF91P6TI3ByHU9HIxhTqh+Zm1aU0t7H6i1ED\ntK69JWb9fOxc7ry5GTYwdw5LWwXHA8gSiYRgwQ0TMxhSUBtpIjV8F3KRihXG\nDuVVM1foqW4yci8BtJLxR/U5R63VtL6x/IR6AX7nk4c1c6/nIaHrT4fgFumb\nMwNix8WwG37YPkg8Wh/tA0IrjmZFxmHbUVAPs/IeMTFaNoYXWJ5Lvq6PavYy\nthTVpHWKvrhE5x2i6cpdfAauJmFklz5m5zPwjeCjlHiSvJAusJ7oDrGARu12\n52L7sd5wwWEKq3QlzUYgiUw2lIeR7A+xSV4CExAY9S/jQV/0dT6rmRzLGaHO\nqdAH\r\n=IDwg\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"4b9f329666509a2bbb95aace3275ffecae597d17","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17_1597856144866_0.8497627886149786","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31":{"name":"balena-electronjs","version":"0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"7ab532eb1e616d46e71a46d9bf3c68dd290cb30d","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31.tgz","fileCount":44,"integrity":"sha512-uEIHCunIJDBernyNlJhkvAwx0Qv6EGZyeOiVmNR/gURqBXHb7coQRpftIKNrZWbNYqevd29k2DXPf6+tuRicLw==","signatures":[{"sig":"MEUCIA0avQ+NVvgG63Vep506JtAhNplYUkUQvM5MmiWP/ALBAiEA2+ClqBw/oA9o8E4tvmoMZq/2Vm7W6Pkp2Q0fr4U2PnQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVuPCRA9TVsSAnZWagAAyRcP/A9u5aDmCfd79hQmwThl\nNPpcZ5p45DRQUHHSOP1CVMudZTrSqw7TGZLrcfZS2hi+ZK/47PrNcRG90qF8\nBY6SzvOQzxH624T2BYcrQW8nh5AzZTcvTUh0w3t319FnaES29nutWeOriXeJ\nD3cxkragNoSrYkt2a0NDOVg7ZD5PCj0OD3aYa6HZoar9CaOCgGTSBAQ7cvBX\nyuIgL0ZCCFjl0PFMic5gTS1tMZursPLwvHNz9e4zCZKdCa9I2TKxXW7yHgAg\n8RBEYB6JtUkBzlnYP/6aBXNiRPnZWD7jQNtfW+MEGDikCiDjTOf2aEFidb/e\nOgzUrvLOTI6RXH1I5g6KD9dlTqzAod4IVy+MY4ZrDTqpboVm/PynX4pc6FRU\n1mJRzA4p5ivMvqK6eOiEmi0w8e61HnaUbn0aQD4QvX2llQHwyNkygMp0oOKB\nWaRb0iHmmZfnOo82P3gJAFr3D4ljR+kJUSrlaLuKvzrUz6ULolOyGflMgQIM\nl2aJy6klAfeM7uymTLjH0orh7O8D5DsUR2gVl1P5l35pyi9ltRCDVoBcC5zz\nCQC3W+kVRaMNqzwT1JikNdxVwv7rTBcrGROp2GOT7HfRPgPWkYur7nRLq4lc\nZuA9I4c52ry1F6ioTyGjQBksHzKbJPD/5oCd/sE1RjUR++xwzlo8PwQ2khS8\nBCKF\r\n=crKo\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"60d6f16f5ada5b8448e25ef52ebddd086b129d31","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31_1597856654834_0.327496373896784","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81":{"name":"balena-electronjs","version":"0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"3f8d12e2ea77ac8cfdd3278bfa8627c8c6df6839","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81.tgz","fileCount":44,"integrity":"sha512-Y1V7ozDnHa/tny1f0P3nYtGLkTn5fi8yEfmLegotJcNbTpg0kIkJay4Ko9cR1pElPFGwZI+viPg1P3KxR5VEAw==","signatures":[{"sig":"MEUCIQDXNX/v6/Y9zllw6PO/BI89/vTRBc0PYJVj8gm3nU5QcAIgbL7P9w4FSHV8dc9mP5xXRf6k4AElalJWp9agHfAZA1c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVuaCRA9TVsSAnZWagAA7jMP/RRpbnacwjTENQjdsR4s\n2+Nj3UkiacW+3obp/qZhb6ZJH1dkoZ/Asc+YXBH8dTrxpIRPWBA0Zr6E9GlM\nhtoi1rHCeH49V7sAK2mfWTd7tR+6Qua3tLCRygHg5dZPlWWjb/+l3EjEDVGt\nxA1msSQ93ZIoC/Lv0UTjqv+whq3H2cm/Nv1emPpkqH7AHcu8yhtuWYjyofd4\nuiA+H6kbyqTEeihf40TpfJnVmAlYLzC4ILbZe8cSDfru4h4R65gW1TDxovxC\nn3KhJmowvZYkETppeN6BR2bjtVnG6CX+V5ZpbrPIdQ0Skw12NtzzPM0wK+dU\n+CxYGYd46+EI/n4ua2rdoj0Cweu1EV3elKfixUinozEuYjE/UUvGzzuC0+a5\nPOQpsXHJ1NHck3urLqVz6WTaib9HW0PjPCro7txpKP2YrF40qaJgvwJfa1eb\neEWzXjnjKmsYzBjJF0LnCIQk7RZExVtKVMhIsY/3glovEjTXTvUkabAYW2Nv\n+GebXo1xm0iAjHjVL26NdTJnrLYPp0opYzBRbimwuMIHkHpg0XmFcv1xIipy\nNZ5HZDIdIlSS5vhxDsrO+thSJy/Go0GGLu/YBMoWGSXTk/qIjjNQv7b3O1Iy\nVaMKNL7BzOnD16bU20CaFWaiU6NGAfy7Ma98h7qzRyBAfB3iXe08L9lWeUrk\nqIwc\r\n=Vp/t\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"ed9fcd5b13e4186a999b3040bff463b7212b2f81","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81_1597856666434_0.4250824286913095","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d":{"name":"balena-electronjs","version":"0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"fa86caaf727a031c138342f80f2718e26879b304","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d.tgz","fileCount":44,"integrity":"sha512-7L+rvmvV6ef8aYfHEmTynAzt8AH3G8MEzl1eGAGG0L2qCz+uSpunhdG3sxUlxKyWMavT6HTCxNQS4jhnczP39A==","signatures":[{"sig":"MEYCIQD47oevHzLVFri8/dH7N3ZGl7+BQWsPhrtCk2UkSGUcMgIhANaYElkZ7lR/b9hQFx5cae4sFJJ+W95DxgLxnTFtiMbU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPVuiCRA9TVsSAnZWagAAydIP/2uiudvbvlFD8vbA/Qbz\nQa8SI26ZaZaRtbtIBFP7TSKtSo7g8UU2Ky/a0K/8BDNICekJ2TllE2PyTEsN\ng5sKQgNEXK40Spjvr+V4sRlVud6AZq2BcmicBUANdJlCh/N+Vs8Iy3RyKzjz\ngFrEtzF/q2flajhb0i6XTUfX4GGj+EZhAZCR5AdZ8Jg5ZXxqg7K3n8ruZ3Ho\nL6MUSA3MnFRKiEsOoxfyqagx14YmJ96LdqApO6AW2AmH+C2R/FwRGB+XUeVI\nqjhriTixIsnPPrSzvIc//f9gqxf4hcO+G2mvEYe1TEbl05iJaQvmOM/6TZ/m\n/jGokFZAHl3bnpmBxUPzSNiqR/Sq05Cxf5foXmj+COZ60pLQGqxyphxyXZb9\nkCOs21r9QoBxAyf7p12iwHfbC2YKP93M42tKSPcU3MsBTyJyeFGSSByZCPcn\ncx4B9zCjNoMRdTn827NtNPhSXqdxWn8ZCa/Nawtbn+9OnwrQHYFLQWuNTsWa\nkEh7xKLTgszZVZvU7g+58dLjeJLQRdsKHsMhjhWhFJi3mdWuPoW0tBTBJwjV\n18n+/Z73BxXZPvdTwJ18NDV8Lt09TsCZIVqfwzqiwleTbA1oWQ6hsr/pN/2h\nJCr20EA9Z8ID8LcOBAQv23cytDr4rouWMX77FGsAT16ccjHCs2dA9TXcYVot\nYLhb\r\n=EOuJ\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"45fdbc06d13886b3963a0ac854c04149f0a56e3d","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d_1597856673960_0.7667074553638651","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e":{"name":"balena-electronjs","version":"0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"a144c6dce664f734ff0cd69325741c32f24af0b5","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e.tgz","fileCount":44,"integrity":"sha512-ZVNOMt18/jT42rAlyUjEy+SoB1dsk/oF3hBqxU06gt5ne/SJ/SiRhGBROQyCGwocM4Lgy50ZzuEm30eTGzEY7A==","signatures":[{"sig":"MEYCIQDMcxc4gkONj6kvySYsoiMzin3WynEGCzwyCHXc9rGOJgIhAK95gZMIIzlZWJCMk89LHcO9cnF4ZIhlVlrMoFt9eAjo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPV5mCRA9TVsSAnZWagAAL34P/33Oll7z/fiuk8fIWhmc\nIUoaw3BD39KpGCAKxrmgA/Zf1paGi6LZVt99G1zV+Nfe9piHzA6qJsqbvVwY\nSlYoyuUdJF2frS5uTJk8oVGOqttJ9kKv19kZXenJjySvNlgOZTfkL752c29F\nGOdtPIUZLZOEx81A47f4Y9J8vyF0/OD2zL0fIikXa7aY/c3xULnrH5OtW6sK\ntFWOwV/hjEzaQ55yfs4EwjBhePYto2kW4x+XUm7292wqXg98jRi8OudmFcky\nqOZkaEyhxYa8yWZchfFjn7+0ilS5D8adv4IDWQ7sEd+gHfw+I9eGDRUeh1Ga\nR2JLAe2uh7gd693zuT94wSEP+guKJw7cI1fyI+ShxTGSCmkcS+xvF9K2SBRe\ntZNh5yW3t0WOiRKW3q+xAmiGItAkS4XDDkQkeCShwAd4ERWkhukEGijYMM4B\nIhtjoBJywI3BOoTFgqih6kwuZCAHAMfF5mGt1x1FxQy2ngJ+lJGRvuPjZctl\nYRMxDbgJYDqLLHqPidS5NCMv37+9mYThuA6To+9WPekWrC6V2gIbFSxgX8QR\nJrOONsXFAzMh90hNgKxlV7thkjUQtjyFWoET325Pcrs5wx+2QUVV5vkDJInQ\n0vMR13sf0nt68ZGybEcmiNIK6gCGkINp43NdsMHnYwiAUYZuIc5z1oTSyOMN\nE130\r\n=nEVE\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"d74efe9adbd5ab60d6fb49861cdc0798578d2a1e","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e_1597857381877_0.11603591032711935","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6":{"name":"balena-electronjs","version":"0.0.6","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"5164c8525eb6f7dd3a65d8f281c7b9f12fcb696c","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.6.tgz","fileCount":44,"integrity":"sha512-TF81PoeyK+WiGI1xOqpRJNASgkYFNNjT/foccgfyxsfHWqoMKT+d0VPgMO93FSTxUAEjfxOqrGEoAOkpa1vGeg==","signatures":[{"sig":"MEUCIDK/FLBWX4l9UauM6JTqDbZOfVxyFhSJSK6VCYViTRu0AiEAoTM5oaAckMLtvpxKDTuLtyZPxOgwRmEuRlBWv14ETYA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPV97CRA9TVsSAnZWagAAbn8P/0VxM5QO3gLwOBUmApS0\nYvj4LBeJSn/dyDvhQvMKl2JOuL96JlE16YN+E/TRzMx60MFdMnwpNzwzEdTB\ncYHIXgLuky9mmzCviMSlYBfzrZr9CN7MqAQPOLl7UsNeNiL+atg5RyhIgUpp\nPyzPcss3z1qn6lvmGKNKbvxQ+iodhiY5zVbDuOB7P0oOwIHMXbQ+xJaGeYAV\nm8x30c8FoYE+ZBy/SaOHFDtgzBvpPt7QzObv20VclnjM9sSX+2gtnE7dDNwk\nXaXEXJQe3yk2JoKvIaPekuFc5Evv+WpVpycja2vRRwTOi/UfNL1PjXTOdubz\n6ke2/4c2H6TIVxOmkYHomCOrzlsss/mzQvGYsQQF/5q+Atc77wba19sYlXJ0\nfoS6Ln0cuMwNSvL8cxiGSrIvioYcMzbP7L5uuaCiidi/IIJnSKlQukoamlB0\n21frSi1nJGmwu2TfC1tLNK0RcS5MFMDfQdAFklJoZhKoe7c/DlmoO6pwIcAP\n83fFc5Ysy8PTOXXGt7W/i17UlLaEEdUdKgJIOK8MPbCGzd5IxrihM/xhM84q\ndVGM/MxzBf/UUI+e/f7eCDD3fB9g48uyLoxXajeJyr+AOzPCRz7uCcoEX0rf\nEye/oIcVpYFCuKoOnGD+cZoM/DovRBQqvcsrRwh9wM5W65tIV1pNlFnLfNpn\nY1zK\r\n=L8qt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"1666eb9dbae02a3ea762b84f590587b1c5a0f09b","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.6_1597857659317_0.6805274522461551","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d":{"name":"balena-electronjs","version":"0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"f35b17199c131fd6c38beb06765e6432872da5b6","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d.tgz","fileCount":44,"integrity":"sha512-GsA/qf4wM0twBifLe7AO5rEwyPr5g0kQb4GLA6YaF/K/3/lPnrmzBA4LGDgsNYlT+730v7oFAq8Y+o2nJQyizQ==","signatures":[{"sig":"MEQCIB2Hjh1HCBbENHjLvEbXyR9iRCN89ust137ZQq9gpX8sAiB6WyHGPCJG76RWWbgBsv46nknYCwtz05sxE3vl0DNGCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPmahCRA9TVsSAnZWagAA570P/3ok3+5KtO6KanDFO8Dn\ng6ZQEp31plut1MrRghyBwz1svCCbgM7DT/pGbGpPP3WMFz+zCM7JuS5iTzly\nfMKZ0mVksm63Hro7TcfUK0bEiZOLvXDEo9bYKEPSc3y/fY51nKfkFR7XEEQH\nomYIUbczPooCu/IPmmtEHtyt0ivQAZeauyYN2kssDZTUlw+Q2XS0vSpC1EZb\nJzTVA0PRNl3ztdO4WYLLOnOijb45ggoqzuL2HQpCJ0DCBPQeuKJYmCskIptX\nrVylDrzbnsM6M8inKqqZZPFkdaiOao1txakz/BdYlplJ2ADp9GaJU0qMBsQx\nioJ20M4WPAs1bOCoZqjmHx7hrHjkqHIOvbo4MglQAeuPEmGzqEdMV0852Zev\nDv/JvuCN0tDYF9NdrK9c2cJwzKWOpXarZa+E++PXG9DSxF1WGggmYUJ4A1Tz\nf01yuTh9WzY//18wJZstc1NtglR0tm9DTkj+leV/Cqbg4NJ8fJIqgP68kSS+\nQEwJ7gd8WBuq4F8Dk9tYUB0CEmJF96GVb8sx2ArtjA1eRW7mRgIyAKx9HvUr\nQTx8bta77h2aMHQ0pXlyO8dKTKVcNsZVSfvQdmkRZL/AjiB/oMMJa2DZ6qH7\nx2/1CDdV1MkXjklGZzLTGucDV3o9u/EQj+x03cM36kbgynCzk+h/vG6lOHOj\na8vo\r\n=+qcG\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"97a30690e36ac72c3065e91d5b5a1a369e11554d","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d_1597925024561_0.7978430712480256","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.7":{"name":"balena-electronjs","version":"0.0.7","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"843b21997dcdb78e654d8a40fbc0572d8cc69e06","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.7.tgz","fileCount":44,"integrity":"sha512-iF6skw8AA/JfHGQgToVoxwuhE4KLHA6nteczmuKEheCrxCIFzN8H+F7oEm0rWZ7ZUGXeavS69uMDTDVAXOHgzQ==","signatures":[{"sig":"MEYCIQDJ48O1NzXZKoFLNJVor3U9Zm2RBDDZVGwx+G6VDW1HmQIhAPJ3pabtMnzStXpJ0sSggNDF1rJqK8mCXJi3ZzStYX9b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":658997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPmeZCRA9TVsSAnZWagAA7BsP/jIOppEVB5JmdmaaeGZF\nomb6l1UfL8HfWWWqwZruU9L0/q+G+/I4yBSAVW7Kta8O+uhlUYzlZxwsFooC\nu1ZR2D4zepwkwoKcHfQ7mxhv98cgsstRcNgdyDruV07WMzD1ouH+etwTEwDA\nwhA219GVUV1BnjrEfVlxKvUDv/oRYUi1poxkwHFdW4mve5nzbeIhj4YY86XY\njunTVkxlVjOvcDgoC953BXMM/74PuIKUytsokPZ/hkL4OkmXxX/hntXfOlAz\no9cYG9+bgNeiJ6npDPI9MGWWvDNIODFAfMWXdwC+cUAnuORZT3muzKQcGkcA\nWmxuTWaF5ejOfPfK3IFSvWSYU5wWO0QueHUZd6Xru72Dp3wUlhWdE+PeK22z\n8AjmpKRd+/42u98Vl0fpjs66z7Wov4wml5TpgoFKnhw9Ib/LZSdMoeIafgCw\nup3VkorSLVo6fNmuzktQZOdM7q5mHLxUUD3xTkVZjHDkQwqOvY2Q3n+VV0wZ\nt+7ENqKQKyHu0GCKRMKbxnSC9/DaoDD0+ylJVfLyfZAtB5pdq+7vCajfw6Bv\n5aQW11masszdK8KD8quncWNdEWvrbQBFBr+R/03yxxckfDU9i7uCwSMZJEAi\nSBMYC6wG5S6Mkqn9HMAhML9VlYlORQdLjecH0NWDBeq4Yt4IRN6hdZZMHiNN\n6kbY\r\n=QEm+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"7020cbe086c08661c0b74ecb0b7b3a3980bc105c","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.7_1597925272573_0.599822730022971","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117":{"name":"balena-electronjs","version":"0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"9c58e52efea8d443d96d84072748c6c6e80a13d1","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117.tgz","fileCount":44,"integrity":"sha512-RKT05ItbSCi3UlSUAZDPC9rjaQX6kHpgt9nBj4k0219D5qOmufW6resbKhMqweTeoXGmWbpTZXY0WV83CY2SAA==","signatures":[{"sig":"MEUCIQDOVOP5H0/ArYdssRnd9DJJqiux/x5jXN19IaSUOEqkNgIgFkyFkig6LW1twyfR4p7XU0J6UCiYd8HuIdyzS0D/OL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPne5CRA9TVsSAnZWagAA0V0QAIm5ZyCcmK+itZP+PpjG\np1u+XbG/vPyByXQAhiMdWhOM0c3NTcNzFemg/R1kfwv4IyT6cNnJhgiWVnIM\nztRWxbOAtMK9Vj9o8Yy2YfJy53WhCmMHovGkdBJ44WI9xUDI6gDUSVMQDErK\nYnQAdcYqlI+NtOiuOi1ZyVH7g7xl/7KfjvPuiYDyovO9Mug/e0LZy0AzvkfO\nnt5I0qmHZfkoqNP2vNHb1c8fE5nL9cnS0jJA71H/FqBAhGc4rdj+B0gq2Ggj\nJx2RYtgHYCIopI7FAal7dLUL/A4f91UGm3Yb41Oe7EQXkXJE1jPOJ7J5/oIt\ng98PzHDywoeiQnSsGg12/GxLbIKx6yynYs2RZdwf6w2mcsFiO6u8g98Tyf7h\n0KcOJr14s8w10tzwsdV0Nv4b2kYwtefz6H13LHNkz6qIBpG911pSZ9FZmhIC\nrtXI1VJ2Qx9fqkCnjQ/VaJR2Ncdh/NvRB+lV6/TRRWcZDZNIEvesTIblhUB4\n3djGUCw1R8gaerNt2vQQMQzdflCzIPxF+AaG02ddBj6NOINggTi3O7ZQIXM1\nNyj9/P/a+WozDsprbzbtewsfYvvt5F61nh6nzJBVQWDFDFjSyySsR+W1Zv9t\nzKGWNd3rPaY5HBunVhHMN1y7/+BB9bTTDczLUocaPRb5lYEEKJdksY1bBlSU\nIaQD\r\n=2N36\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"865df63fc1d3de118b459334b3d5e41864a0b117","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117_1597929401130_0.1105592612051407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20":{"name":"balena-electronjs","version":"0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"0a2972a3d74c48abea38096694b01d4f03fb5415","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20.tgz","fileCount":44,"integrity":"sha512-HEDYlrEfdv/DNUcqXk/eAjo2+8m/7OTSCsSnCJFixbcX414ZxY+zJP24/+4evwvUxxZuQouTTdvOLxbTwVaxlA==","signatures":[{"sig":"MEYCIQDuWNvzofblSB4oitgCFKdi3aJA+HqnHxH+548eD2hvjwIhAPgAIWu4iGzTE2pqWR+t0QXNfe4zEydp7q6dV/kRC16B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPnh1CRA9TVsSAnZWagAAfaUP/00w+j5cXVyknm/UHc+J\n6CmzUrR8OfFaLc7uJHYNFNO5Y6/KqyefucS33cWlQiPk+XDaRjvUMGQX2UID\nvyVDIrpoy82q8BJtUEW01bX0vzeTx6Jf1NKh+R98hCzB/bBYgX9CSEpDHJJk\nQP6LxJL3tLLmKPRy/lDtFYA0cauZ1gANk8w9inqX+nIJQ0EnO616wMPXilwf\nB8Jzzmk+dfFD8+AvhktFS+p9uIBNCYRzWusIxvr+0meLGNv+WjnOU0IyiUUV\noDkQFKnoUY6fg0kI818MPfCBdSnZKb/epoqsHV+vmH3sP7/J5UUSutbCrmvF\nL0wvehxquMFkuSmwoJfCDLD2h+2Mrao0xSCHOWurQZl8yJSOo/boA+EmCIKj\ndDLuH3hbIbRffc3VylkF+7a2KZjlzzOSmHllRU5jwaNifwb6aB80RMyES1ZJ\nAW9R2Q6Qc0ymd4+sazg7nEkNxBLVUn2sSJ0as+4D35BNRZ6Mkr9yY9wEi6W3\nLjqy9XsK6DNhM0P5UqBCBCPPLKpnNq80JcpySReNl584udVcixuxzxoQbh2p\nD4PVyvVu5KwwwRGrOJKj+vFYoioWiFB/athMfptlaZYoyGNa5dhcdfNZng9K\nmrjC1UZS4EIKWNdxtDx02AqkUXZRZF/5yPiBiFq1vlX+Qfa47cWXWDHn2LpH\nvWgw\r\n=f6ZH\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"12b02a382e05894c143cdcb63511c8d5f9da7c20","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20_1597929588572_0.15647801070385103","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.8":{"name":"balena-electronjs","version":"0.0.8","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.0.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"2a21d729d95c9db393b8dc9a0db521468020d949","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.0.8.tgz","fileCount":44,"integrity":"sha512-x5EZStqSYRkby5FjhbfNlyjPAzVBUbwj1mTRv9J0aTDZiUuRJWseui8gKH8i7YsuofUBzJ9+SYb2VTB4LlDj8Q==","signatures":[{"sig":"MEUCIEH+d6qfoft71MDuqeZBbRhlBTWNBtDoAZqaLgl55W69AiEA+RZaRTxkn95AUBf7n88q3UjqHJPE+1XYAN3gjVGDfEM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPnkxCRA9TVsSAnZWagAADVcP/2PEtkrgV0xTQtpVE9jY\nmtRs1HKmsl32YOGrPdL1WJodmBzQIZGHJDMSiNUmU044RZuSSo25cXp7W3aV\n0tsFTlLvAsTZoIhzMx7Tt3rxW+6mlgQNgpOlGz0SdCK/F4hfCcN/fMZLKpAt\nHJsMp7BqFsqgHsSLkrtWVwWWSX/v85+h/sE3i8tQSDlHqP0+c0ItAUkTmcUM\ngbNXo9mggfZnPOUThBnYb7wa9Xngn2gnpEgnu1G1kLUWWkCREtc9+wM2dKsl\nsJL8TIhuRpEkdCf/3cYXpH2tCIyjy0cgInNHnRkEeoaNxQCOPaar4oueMFKH\n3IBb2Susrn2ufUGBns/kiNO/sbFwagZnphNaY89yQu0FPKjGnu4E7fyMFUA1\nz4ZHpTYIFF9EMzzN8QUReLKPLnRCusKfRvA4FFuA9nNBetMZhqNFfWnD2okR\nti9RwmzeG1DJywV7TAv/9tEONiWmEXx3i1EAYBNXOHm1Yt31P9Y9zEPUypYF\np/xfrHsd6F27/6JTbotfLqE2jnSy6aMePWyF8jMql9h+IOj4BDbBoBUItuAs\n3gUTarOlchC/6xXn+sOntHzzGjN7Fdr6Xvtv8vc2J6hX83+X21eLcD61ZI25\ng5NfbIXEC7/jX3kmtuhfMUSx5BlRJfFjld1X8vptbqPW9OMr54gyfx1zT3sL\nUZ/8\r\n=Vd87\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"f7c3bcf157509f471218a5b3f81bb43c7bbd4c31","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^8.10.2","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^17.0.1","ts-loader":"^6.0.4","css-loader":"^3.1.0","typescript":"^3.9.5","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.9.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.0.8_1597929776654_0.2828767477406964","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5":{"name":"balena-electronjs","version":"0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"43f29d86839767b716f3cbe88bb82392d5596d92","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5.tgz","fileCount":48,"integrity":"sha512-CnxQxhj3hCps07RdBKBP/x0aGU1tRzxNEzRBOOH/NxAMZ1876+u/rnxpbyGxe26LfbLM2pL7pVmqRLKq+vMuKg==","signatures":[{"sig":"MEUCIQCFUMgPootgnLMJAR9XHJX2yYI9Nf3puBXuEuPtH+msEQIgMlIKpsMjgvHfBgIMe3l86rqdEzIOwwsS1UfraTAFAkc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":665834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbhE3CRA9TVsSAnZWagAA3aMP/jQmyveu+vVyI3j0lgfi\nRaS9NTnsLjAIEJZDy4lTZ5JXJQRg6fZv4D5AE/33R2mNtKGhdUM94r4TjTYa\nBOupATYFqbT8czAUTgXmfqFpjonF/a7gq06KE4ZUXajAlkgBv5Kl5nAsdC1p\nesYggwtGdNxD4e5+DXwzjS0o/Jt0HjkDfjdNTZEDnsVKrifQCIGijYH1Qf69\nuy6n/+PAJnHkkh9vC2s0FOaXzZkpfGE7Ygi95OPBtFfCPfcLiwn0XNZ4kX4j\nTAtFfHQoBfD+KPznOp0LTtUCQVlyJHid693MZ9qu1iJU3LSmnbKYtadj+1or\nbNSEDWfAtjs1HZkANkBcchpIN1GH/lOQHn4hpVzjcmHSheq2aQvE5Ds4L/tT\nuxYnzps3zY3Ds1z+ewyarHjDp6oCRnjOtidQcpS257GYfcaa/+SWYvMpBVDt\nMcUoOeWlVeopyCt8BAIoULPKKOpYOkTSeOPaVPpyXfb4LZLil1fo0tVsq12J\n2X6NNTj2oYXZdP6CEja9NGo9RG+pQj7Hkrcs9ZAgePaqAflA6gkeSGR/gWKq\nvo9p6dJBVZhIVM0ecZqkP4SbQDhdTydSD4DoAS3xZxqCo49Kz77Dk3baBCKV\nvhHdka7aKE24MvbPMDNIgp7IH1GFvlbDW+fnkQHd9MAPbIBIFqD2uNK5gCd5\nI/8v\r\n=LuCf\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `DBUS_SYSTEM_BUS_ADDRESS` | DBus address for communicating with NetworkManager | `unix:path=/host/run/dbus/system_bus_socket` |\n| `XRANDR_ROTATION` | Rotate the screen with `xrandr -o $XRANDR_ROTATION` |  |\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","gitHead":"7e2c35b22868b09d194a85c5479b0666ca3640b5","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.5","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.2.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","dbus-native":"^0.4.0","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5_1601048887036_0.2940694976665763","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33":{"name":"balena-electronjs","version":"1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"d741d07f153127482147761295ffd9d50564b3fc","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33.tgz","fileCount":48,"integrity":"sha512-4ONKTp8Zwjb6hDMkUN+rTfSA9c2P88xY+hgj9ThoIRkYJzTZf9ceDeuAQYYZwCLcEkzgz+KucCmqnTBcgGy8Vw==","signatures":[{"sig":"MEUCIHGTaK6iCL3HimzLypqNHa4IIlQnsPc8oaUPh8kElaXgAiEA4/2poNDtL41S3uOo+MPFy/vZTaUfL92Pa03f1D3Fysc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":669459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiF+dCRA9TVsSAnZWagAAkWYP/11x7tUvqbc0LoxYEo/4\nC+KHd2GKM3sYgpCLdX57BDJwK7SKJblzjrn/lPtOFovs1RAXcTijeZ0GQVNy\n/JAFtNvi3O6qp5bAiiBzn64uVivasBwhpVV3HkUI+MhkOLLO2+iRwVpN/REx\nV/WhgbG/k1PciGyZiwOQXeIyitRPaWSyYGGV/n38muKE3riI1QlSqwOCwfc9\nU5xDJ7yVH90q0L72VDjjXujhRHPRgW0E/8sSK276bEj+hQ7d/d0KswHB0NGR\npWsG87WzyZ/LQcpfQipDqzt6HsOEy5VFtkMtsQ1lYscwzhRdW+ryq5zZ/6Z2\n1zVlqxKpFSf3sUPn2qmRHLTU53JGas2p1I4FznbIf9BTeh4/2hsp8i2DpRzF\nQyhU/TIWhFqUhjt9jha0HYQ6+3JOxskaRN+Qo6ACPK5TLOZeEh7dzYyddXXh\nK6kzxoW1yOrRgALZrWSfU1h3L/cv4fXEW3JCeHpOp8dL7c976pAfsxu8Wgbi\n8wMCkBg3HOltLv/Etbbi+6EMsmsZSknziHo6/VrhZJDHZQrLuElGe0vYw4iX\nlZctZuTBIH14SAwMLdA/WjnU/YuqtvIWVZ56iuxhbN3Bg9Iu7nA8k8GYcfrc\nKqsla3CEFwweQVv0IX5F1VqBgEU9GSa+azc8yb44wjXyaxc9A2HGuglZT8pd\n2HnW\r\n=CGND\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `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","gitHead":"91190101ee9e8153cf59127973be3702eec74e33","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.2.1","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33_1602772892580_0.9909884197786005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187":{"name":"balena-electronjs","version":"1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"94bcd980fb5bb6f3fa791b05ef894d4cc092309d","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187.tgz","fileCount":48,"integrity":"sha512-DPywGDxbDtI0RRaUebZk7xJRlEvQ8JoXtVtl15xgruOWV9kMxJaOJQQNtpj5Ub0dsKccysLuQvx8AoErpu4eeg==","signatures":[{"sig":"MEUCIB9R16f2xYCp5B1zv6le9E0jYv3cX9Bgx0fdPxRcXM8BAiEA7rkwrKN8IO16O8JhPQsDhl4LeNPv9sePv1teM99pQco=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":670804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiHxxCRA9TVsSAnZWagAATbkP/25RYXCOumCTvGjix2w4\n9+gUO0kYuTb2qlugZHAA/NuLHLgmvbBIlWYKdO1OzcuRdn2eTwbkDuterpl1\nWDD1MliS6seuBCEHmrY/OzR1sVXA2z6Ci2sYxmGyveDKHipitZoI8NpVEcr3\ny5/SSa+YHKkFRpHrQdyBoxlG1t7yVXMNIverE7QVxIXKhhc+JnsY8WUmsT7I\nd6AOvclaPVI6wz7NqkGsxNehbvyquq3cHVirmW236xHbA4lFMdtxlHL8JQzY\nxBhSDRDL8qdU2Huab+rxv8yi2czoquW/3E7Oz+rSlcXni9TjkAxJxfWZVRim\neIiJ3JUSacuYSjgoKrzH8HAHjm6oCf4miSppqbC0SYB/1uGi42Q3ktA2A5iO\nKEADkYagUpckgkZjTzG3dHFWsW2yPWGIlLY1aKwAa/Fn1zPX9XeveGXFZnF5\nSTI3LVXCazPRacwy+M9oVe5TpWWw/ixAnZeUyM//8QZ/GnYnPqOjlq3dQKap\nXubrbRnK2wuI4dec0M13pcEc289r5HEfE9aFd+qbDoHL1NxXia1jzXA2W6nh\nVb7pdLxy+sJ3HJuomA72ci5xJ3+NHDHb4WOcK2gM6GIvpyeN/J0vVHYdqJyc\nr17SjIwumZUxp86C0ml4XAX01sjc3Pydqv1cGs9jltY3yOHkcGQH3Tf4LeXf\nuGV8\r\n=SpNP\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_COMMAND` | Shell command to run when the screensaver is triggered |  |\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","gitHead":"8409dad96402a003f13c561750f9cd0001c17187","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.2.1","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187_1602780273038_0.8018597437352599","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133":{"name":"balena-electronjs","version":"1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"38749daefd40609f3e81c0f12b7aabc51d5d6915","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133.tgz","fileCount":48,"integrity":"sha512-qNgjGQxNBA4TnZGouZ7d6LVKsborvPthxf2u4239OaUhzXWUf30rcEtUqNwV+7/VQhpMZ2HfDV1JQMW5BA2cag==","signatures":[{"sig":"MEQCIHUuG//V4Q74bNrzA0wt3KqGd6v4DeVMZnW3dKN3CGIPAiBmj1B0zac5eHUTSSRaR+mwGHopEOG+G8agEa9aRj9U1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":670852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiH2DCRA9TVsSAnZWagAADf8QAJHPgCB2QO/1qqoAQBM8\nfgIQeqNIryMew4Fxjjf360dmAvlCA/HZBtG294I0h5lMisJ87fAkxZyPT9AU\nlgFVuLF0DNBkh+3z2kyInsuwihnyLaDKSBid9Q43uwcA9+ag+hmoKUux54/m\nbbOYGYSZSE6NYdk7Juob9jNumj2ZJd008cpmkUDO3eczJmK7mUBLWORWXSMp\nDSYpSsEtLiwHVJhRFXvVMeRRWRuWpB2Un/Adzxz0QtbIsg1XNFq7LQ7wEAP8\n3WpIhTyl/mNemQBvvTDA7Z/OyAynGTCX4WQWGnykpzFH6ekiCDDbf7w+oJYg\nbDjLVqzTSZBerLKcYLMRU3w92U1KZVojd8AWibZ2/y7qe4nfj/mdyiCwC3DA\nME+gzvP3AVo2dzCMNeSKdx4y9j/7k6ZEzl+JALmCxQoV7T8mlS9LOeR21OHm\nEk3ZKPMbEO7Zrrmpellh02gUPfNYNn6x2WnqSvEGHVF4MZyuBsaWI7ATpeFU\n63g0ZHaEgqzWAj3o1k44z8CwcV3kaeAoKOAO0A2sj5qfXPM9zfFoyy8Jvxja\n1/8peBR8vyjHzNL5pYaMI5Su07ItPrUIIAYA8mlgehiEUciDcyTNkaAoVeY/\neKhRvaiKj/8sNBeehBVNmZy9pOYDroQuFASA3Lm+q4fbebPOIiWP5F5PMsAj\njbfp\r\n=awAN\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_COMMAND` | Shell command to run when the screensaver is triggered |  |\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","gitHead":"405dd5c16cd28699c83c65ac15ccccb56ec17133","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133_1602780547549_0.10525143472010745","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0":{"name":"balena-electronjs","version":"1.0.0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"018d2287ad66918d288b8a8e8faac2f7fecdb8f4","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.0.tgz","fileCount":48,"integrity":"sha512-SDNtmR+9+TiDi/Vl6Yv1wOsCrKgMBUWgfPKGumrGH/wHHNrgHNBLPhEuXKP5eiGYOW1WY+n9fEc4r9a9AFGuSQ==","signatures":[{"sig":"MEUCIQCGZ03O7v1An9j/bBwBFLSSAPFkT21bC9S/LkCsY4AzzAIgZkGkdUDFItfqGdQwX0Ot1yTvQGn5h3+nSfIxHblRsM8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":670796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiH6PCRA9TVsSAnZWagAAlyYP+wV6przEud8gqV1lxL5s\nFh51BS7JHxLip0UxP5vQDYIyNNh4+BK2jaRXg7A6HTLHXI3Vg1eoRSQmEtW1\nI4A7vTy/QoXPPphGSEAnVjaaabp06lih5Cj2OYFMWeD0mdg2psNm68PKhOsj\nNn0DpnQHim3NaQec0yqW7fiNrYiUAsmfHJD8zQXWhmr6/NKPPW9SR3PGeuRk\nvgwaAneAPWMqF9LW7V9O4IbMWEzqpu2Pyd+xH052Q3fefs6xQcz3g9WqKCEt\nDl+CNk58dklBMWmCe8TDrik8y8HzTsRrjfo1wsYQTkkuWJm39VYlduG3UenD\nbdd2JY2TVcRQP9HJ6wxGv6t+D3uSHFzWJno7ZYTnROIlvQD/NbkFqbhw/M6t\n6j8ru1z8XsmoEDqGs9pdFsaZQfzzHULuLxT+saX3g9AIdKRRS3voUzkvZk1G\nsN0SUDWW2z3xS0Ibb9WiXPwZ+7YBu0vqhW0BDVGZPYy/eAxa8yd0k7ClXyqX\nPCVxWWIxOUFwhQL4YtHPASqIvQP37ne9nfcV8sg5JlqF7zPtlye2aiVwsbqV\nz8Jjpttp9dxrmlPdwJH+IyENdiUhvZxjsuRcgEhzflYob8G16hDlJ7yaigBE\nQZQrkCqSAZQ4FTv5+vy25ZP6EnS0wNPtzU5Ps7VHYs2p17eZOe9onkqQR5RQ\neouQ\r\n=YdMl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"6ba3335cef762b2b40405d698b27f286cb9955d5","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.0_1602780815059_0.5073346458317476","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b":{"name":"balena-electronjs","version":"1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"fab347dbc31f75472c111903259a081595b5dfa0","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b.tgz","fileCount":49,"integrity":"sha512-X8JzsKhAfTUID41+3G1iBe6A+4aOHn63JRPnuPh0tHirpEhzfyaZsl5cNT5zygZqOqbPUqMljL7uSXluVYTHXw==","signatures":[{"sig":"MEUCIDmCIpqxJykG1N50rbLIc5ZSCq1zAGwxTMXxgpq01h9gAiEAkQNTC7R8p86ihUHLVNKK/5SRZxsj5tmxTUxIj6QCsJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":671052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiIl+CRA9TVsSAnZWagAA6DgP/jB6WL6k7PR6c9Zhb3z8\nN2bKdm/a/Ajlz2eY3HoCGcZwPKBKxTWX7gvAh6uvKWCiENQE/AtsbpZYIhHo\nuMAAp42F5JDxvfiDXS2HfhqF70Dzgneme5Tu4Oyo1/WfitCv5YWyhvN/FwpI\nw+wxmfq07OLldVBfyRmnRCFKhc0OJqpxQjLt9f4BzpPUN/Juk/3gyVLKYP98\nTmLUTDvFQrfzhW3PeVTXsgeC7i857xT1/yNRee6tfuVCRjJnYnb14+cnxU7A\nerm1I0hJqjRugJmjrWLH3CIbB8CjfGavTpFv9SDvHhNISFGbmWEsLO08bcdU\nEI1szMKaJXz6qXUJRxCAPM3V7x2PB9QBMCqoXre8iYSgDKmjtLrxLG5axBzj\ntGxdiX19/YRnT7RTd7dF+WwsEd+1LTAP7c2FGsizKLuL7DYH9CYhdzrvaEDE\nFpnv1OuJJHk1V5vN0j2ksSf8BGtQwDT96XIXJZyUJAPfxIXqmkPAiVB5BQHf\nW/RXfX7XoAmsWRV0CCuqF6Os8eaAf4fEeRYRsmQquAz3ZTunidD1WxxAbSDt\nhyCpyfCA1YOq2yejL2dezev0LXPlnPHOQEce1MAHeUUUxY9Fr39I4gw5LHP+\n4W1JNuqGUyU3hG+l9CyRwTkuePlJd7PESkpPFgF9flc0HmZ/Mim4THT2A4r/\nKdrx\r\n=l8Lw\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_COMMAND` | Shell command to run when the screensaver is triggered |  |\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","gitHead":"d56b0355f8a0475e61e8d95149d4baec370dab1b","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b_1602783613711_0.05724454870392415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1":{"name":"balena-electronjs","version":"1.0.1","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"40998c7572f43d139e2c007fe47616da15dfd0c2","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.1.tgz","fileCount":49,"integrity":"sha512-G12hwDzlTXdjLXOw90NeTHDzAsAls3MQKxEc2tNil46xyKlOoAKUlmzj3lcNvp50w+YOoVvirBu5tTvYN+OSrg==","signatures":[{"sig":"MEUCIBi0gOaOILGWxxi5dZmnJM4OV8dJV5ufsHTZnoUuX/2qAiEA/AcNMGB2f+8lZplhTZtM1514B0bNbLRXaOoToULsKeo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":671001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiMHECRA9TVsSAnZWagAAcigP+QAA9+A3J4ZkrGM8FXWY\n2WQ867vBRPY1oAGPyP1wqcOTYYgv1OW1hVd+18LQ7W5Ox3AzpTZsSIAN8Nrs\nJdTKig199tNxoxSd8DhZxE589LNMlqxrxp1B6JnYstgcaPofNz57ZjY81yar\n7IF3Ti2eMBt1IqLFY64Ebylw+/9ZEcERtett5oGquek7jg0GcjonU3PeI+fG\ne2+L7u81Xvj9+2/heOBj1Sbp35pRfbClBptruaCPxIx68z5BIeerc1yMkJhQ\nT+lG6TKn2BFGAa0Kem9dbXNWSuTId46OsjIirhi2JKb5xsnYv5v4YETtLeL3\nuIEu3lIypZyh4gysp/eTDa/2NXBbZeBu08WTsjUnGHIN4PtLmbSa6WTuMFm5\nx/UNdr7Kkooz6Ou5F/5qvURChyB9MugU8tgIuCCEA7jR7rSfYMIpSyfUoPr7\nvXD5MHu45ASnY45z4ijSOzW1UWcaWMjxfbv5R26oX80RimHmH7QbUCkfMFIc\ny6h3RnZkZH/gmt6i/ZAox3EV0CJCo5eShissQ21bokD2tZiEsxNITe9+I9mx\nxdbflufRIeVKDISU/Vd7VbBcK8Yu+FTZ7IrA0waC6itSqt4Y5E1OPPEGFoqI\nr6RpFFqiGmrAWD93ISFlP1Y4b0BxnO4SSiko25CSKq0X7lveQzx9MY2vsNAk\n9VZ+\r\n=08VK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"b2f92d25829661b769f0aa3964022c8c4103e7d7","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.1_1602798020305_0.19344934716765239","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0":{"name":"balena-electronjs","version":"1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"4164e3f149988f5ee7ba965a0fdb7ec88f2ebaf5","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0.tgz","fileCount":49,"integrity":"sha512-FGqiU2FhodpW2sgxHluPOPZk0+p7c4SvvU0uH9/WmGfSMgwQzwRHlyQzkMUA9oAyOiyXkrrC4Uf0ee36c3qfQQ==","signatures":[{"sig":"MEUCIHEyg1OkbwPSBZTp7hLaXNlDZKSsCkkSp6F1iDwbw9jHAiEA3qHkCxe7QsDB6u5F5mvCvnFTRrXd5dO5MuRFpWBRAoU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":671637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiYg7CRA9TVsSAnZWagAA6IcP/jpPZKClLRgp6nQvmNxl\nCa0qqafx/A/m6GUrrMrgA8+l5x6TQUkpM4rZ+iYPshegPIjv+KX8Qz4o7grH\nUbRbUU0iozhRucP6JlJltGZfGglfoEcdvmZFbSuZYWOnw1jg+VySvtS3G0Tf\n0R66EkggBNTpd5sy5JgnTNGLXUDSjo39WH5+dPD/MzwDdb/x8DQLN4YhkBfR\nRCBwF20uM8ihvSx4OqywP92eNiEobenPQuSlFOUYyoIj7AbFGY4Gi0NSBg41\nFcLZCmLekKA62ZgOpxUkJI9HFm0sEoGaHvK2dPsw/C6Nq22L7nj3una+chch\nkYOCCXO8B0EF/BZEITjbVKDO9iZWsu64go0F152fNii8lfkrhfTTDws7BMOD\ng2fwvk+35ryfuAWgDctBZUxd8uW+EdYGlbyMIKzID3a5z9iduiVUOeF40Vue\ndQKtnCmenGIvzFFTM9uWlouTfBh+ZKJD/xEjdwmykoV++7u7NP7umDeaOf/v\nUOmQisJIb/Zr+xZgMOqMRGNbmTBbuVCwmnRzYRXte7aOCPBllr0ijRZ00DfB\nfeCl4WdOLnaSQD6e9V6Gh07148Pdh+gg36lFBVeuUbUOPWcz9ntnjhoWiigC\nIUwQ9XJXj8PJZr3VIcn3e/nfFaS84x32vEb/gFxo0OVsvKoO36BWxSaKxyyi\ngKn/\r\n=4qNd\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `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","gitHead":"b32530ad497bf06b250278b1141c4bdd82dc94d0","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0_1602848826458_0.02935905377062098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222":{"name":"balena-electronjs","version":"1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"73c9f687048319c9cc50136a7367fe5e71870b99","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222.tgz","fileCount":49,"integrity":"sha512-wmk4tEsa5+EQPsD5p6Z8rMoWbn3hjriDl8yM4ofd8EYwM7wGsSv7hPS4mFAX3/2j3VWrDzDhEjXWpVlkDZF6Dw==","signatures":[{"sig":"MEUCIQCQVaubseHS8suVJWcW/3qJQMFXafs/MqPYKKtXKRGPuQIgZU9WBllWnIz2i8jReeIDeSZSYbcQ5oeZcWde7Js9i7k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":671746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZWbCRA9TVsSAnZWagAAH3UQAIlGvteD5QCbDHZpX6nD\nqsUVChxklB6fcEjQfJ4oNseioGNmkiyBEwWC1IE3vftenP220n/VIDx66034\n22vMg4B4aUBdSEEuqFKfu79xjYzhXWbOCIGp5P6xKSuiub3xLECTFJLl2BPM\n/qUpqrc4HZJIUOLFxMoagdOQmHuTeoScae8/lKBMdmfC3u4SRS72UmdZ6Dok\nT3wg9pXhn2kMEJBui+DoM27hUYOgSKIVoANIMrWXQVxSFDJ7GRB1HLGp7uTC\npvA08G5qOS+lEksWYXxRUpgSNcPx3Zx33SiSH5JpLI6jmDLt/y5P99/TnV+H\nEdRIby3SpkLV5+wXYBE7ZT27I4EUityo3FcBVSS3GpszvGEXI48kx8wzdv06\nzjgWG40/deo8T6YxqBEhDsg9kksQV8mONEnnAgRuY1eWwHBZtUd7Uo+fxy5p\n3CyOdljbhBkqlaoBxdRAL8WAE2dzrFARA6i+rzDCOupd8Yc/6PK7KbaPko5a\nvDiUddPvbJLBLhUk5UAUqmG/TIfET41auOMjnuEc7qzFCBq00+5mcd9K8jxT\nEbcZv/PABthYeIxk+BPvXnU8Vm+ds4Py0xGjp/TT6rU/6i/Bmx8Utu8SBgrP\nHNFRqlTsYwe050T/Yk/Uvr2+MeU/5rQeVl7bNaWy9yybHsg8uKyCo6oswy31\nJb0f\r\n=Ly3n\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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| `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","gitHead":"2d91bad4c30a7538b76d5347b5291318ff157222","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222_1603114395401_0.2169368629822923","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.3":{"name":"balena-electronjs","version":"1.0.3","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"fdf765fee4b6147b853fa754ce0ebee29d415b29","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.3.tgz","fileCount":49,"integrity":"sha512-3trVP7hOQ+9zLVi7OuCzovQOlQTO26yCIbSL8KeIKRvVLRk4bW3cWIz36dXwiJK5B/6cwQhrLE61UF+5xILEpg==","signatures":[{"sig":"MEUCIQCCvqaxsmJ5nHel1wnfYDnq1neK94wq37C4exQuF6y/kwIgQDQzqh0KIb4OhBtHAUpDujnhTlq4tFGqv6ja67PBho0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":671692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjZdOCRA9TVsSAnZWagAABxQP/33P0A4r9+xmSpws8cAa\n08CCHUM+4cKCL3kOu7T62p1JzX3uoKHEYYK9qLERUDpOJkWm3v7XyLN1MnG7\n1sC8lP2kmSbXjOEcz82PKkOT3O0BxNk6cDPVv/OVe+0gTTmraItkhdBPfRR0\nd37r96PEkX4V/uXyyP7nFGosYcoac1465eNfTodAR/LMgUZ7Aedt8vaFHMNz\nvIQf3LB2aGMYA88XOhQ0EzANfJIsrgPdSrtzVT2XQdgn1Or3zdwIt0gkLmAh\n8H/DbZH/mdFFg/fggP8q7i1muv5teCjTiL95ymv3L+DezcOJXC39Fi39rYK3\nDsewlKAuQAxU8cyWWFY6aonTnSYm5dYgm40NEqGR37VDm6JnWMsDRqRQ9ilf\nnOtMYIXEZlYwQiwWEHANQoEIDIUapLsG3qo6I0VEAzsa9nniFa2PJ9PsX8pb\nXoThj6WKj/UBnHALV6roemX0JL7u8Yx0t8DBkZoqxC08g9W8bP3DvXs999rP\ngamLnPHNPDVB9Kq7Or+XheNYFnTVky1iar2tI+o2cGyWlTl/tRnV7t3nZ0FC\nUhUYLnRT+PVMyljys6Enwauo6uvNHBLu0apBBaonksMIFN0RKip3fCuNOQRd\n5wP/dtl6LuUYIV1XXQKle003meF7eFUOUC2DIvtOn0FdlahYlmZE2OvS50lO\n0k6W\r\n=h61x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"43afd684024c447e668972c1c2da2a56e000c2f3","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.3_1603114830195_0.42768812284546165","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172":{"name":"balena-electronjs","version":"1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"45865136bc23bbd5ac38a93ce3c4278a271e3984","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172.tgz","fileCount":49,"integrity":"sha512-EZGE2w6WKGr1qzuG/hwffwJBV7feY/spw7+fYRTYtfRZjILK5RCT/v3hsdIVVhr0014w36juORYpfyx48iP1rg==","signatures":[{"sig":"MEUCIEjIkGVLq0Gt5x1egNDo1ZmOFzZF8etia1R93t2WvRW2AiEAyWAKaJObuZ42HDkhQXj1c03OOeSOn1IwGlbaLn6Ujh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":672713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkE9gCRA9TVsSAnZWagAA7ngP+wTasx7ynQVBrXZeeodR\nGbsOYKmdcee/Q+tH/hHaMOJdEWW46+gQwK0H41QxgDbp8tHL4HrxG2QWxU7+\n/cZKuKqaXgOaLOtfNFazBLmDMMzH6cZHfS9Jn4FeZRbXgz/HQvu5CGwLAxv9\nu36tw89rstyrtv6gojfKcy5P2aCQrZ0hxAMkEH4SegFoApqhtxkByNOT1Qlg\nvG7nhAL9wA4Il3Lxz+tPOX2hCxrI55CsSnA7bkMU+wENqdPcp1zY2Yo3Mt3B\niSejnaTAVOPrbc7hHIDw7h8TLet4uKLAHHvnzE6yv6EVF/WcXX8TsSPE8QN0\nnsltzJtDLsj/QOfSTbFa/YDpX9d6Ve01WPSllILE0BDfsR8UpqwtZBXRB2Zl\nhBsuMeSivbDcbFd/GhGHjudS+DGQT0M+oMp9r/A3I9bhEv88p1amfFvmhDHH\nhq9QglUONDgu8KedXMwUs8HFZjTuuS1sPkCOucOiHIt9UYpfdO75KGn3LL88\nwlhJGWplD+N16eBCmvshKMNmKDfiSkt9JR03M6kjUkIm7F0WiWRwg/A/r11Y\noFVnOH5ef6Ldiy2EHRm/xjIYAyCYa3QFVfr3tsu+dVW/Cgm1oOU35oVIcNMM\nCjuO6Z1KCWWu0UX6NLYAJzf23TbrdM1+6dYeECINQL49t524GPVS69GszGzw\nlWLK\r\n=9Xys\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"f5a2eb98d53b771856f5f00f31a3971ca7bcf172","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172_1603293024045_0.96098210811726","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.4":{"name":"balena-electronjs","version":"1.0.4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"1ba6cf0de9de7132d8f452499916e9ff72256aa7","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.4.tgz","fileCount":49,"integrity":"sha512-jK7ofnz7xzUAAIcBEDTBFN+5QF8DSPY2fqLM1bzzkkAjRpbe4CPBuSf1O/zJOUnJ1rYlGmTm8akIcG1Lrin9MA==","signatures":[{"sig":"MEUCIF5g/41IzTamf3ROaOuXARBcbMO7hVWbYrx7jmc+WZXkAiEA1YltSz7+MyJ8ho1RsXDEIrjnnRfrnGmgLJXhxO9KJOw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":672664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkFBWCRA9TVsSAnZWagAAgDAP/ArSzSOfyedLAiwh5X8m\np6IWc+rniMs+vSjIuSyQpKIU+Zc3zrVwKwbFhl4gUUOFMiduyQAbukivsJWB\nSh06a0HcJRjqTAE9R+EMMHovRzXcNx4p2fQif59ngMZlDmxRQzPPaSgUXo3B\nZXU2GS4sl3YPNw6OBjyVHNcPCTe+cgo2g0wCv847IeHBAr5EnBzxXnOnAArP\n5FoHZ1TdPokDEaWJU7x6cyFHan1Uh3Njhq0ZBSKM5G8q2Mmo65+cWw68Wka6\n0qiXeYSVL2WWajRh1MzvFznA49+FG6Yq2mFxmfVidQuTKIOMVUQjaZWpKdtx\nSQZN8tQa5QsfhRpaM2GmyMn//G0W8mwfaKUMc3RrrymvfUNzZhgQYEhVOXk7\nx6uTBpTkZ6H7RxT60NLXnwsZPl89p+IRXEaxXEa4g1q9camDPmGvsV4JSDC5\naSSLrzcj6a9oR6JbN8uAq2QdLzZvNFi8Y3pdVbj5yxVaFDlt6BXqRj1xTFus\nX6ODSM+a87SQP9Y8lOjOtlzUTiDoWijWG9J7Cr0DgM68UJw0Ae0nmHFs13rE\nfLEtGby1ak3AwNRNfl902Lh6SUiB8QmSBt44oj4A2Zy49BCgT9S+0lksqssG\nwOBhLBiTkLm4J38ibjxyMkrUESjhu6pJBzn/iK9C1NESqgkunbKdphg3lTCK\n3fNt\r\n=8gHm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"0aa2e17e44fe74b2bd5fc3d03f2b83fda25474fb","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/balena-io-modules/balena-electronjs.git","type":"git"},"_npmVersion":"6.14.8","description":"Kiosk mode for electron apps","directories":{},"lint-staged":{"./**/*.{ts,tsx}":"npm run lint-fix"},"_nodeVersion":"10.20.1","_hasShrinkwrap":false,"devDependencies":{"x11":"^2.3.0","debug":"^4.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.2","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.4_1603293269657_0.30787732475697793","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd":{"name":"balena-electronjs","version":"1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"3e0125989fc957be5774c7dd76f8ffc3bde50a67","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd.tgz","fileCount":50,"integrity":"sha512-1XNdTohOFpJtL/WqJLMKJ4yU+W0Yjpryr1yEMw3B7gHhNUU15KkRH3hXHhkiTNBmGXaPbw02VPHf0WV4AdRTzA==","signatures":[{"sig":"MEQCIATwSLB0zhJ+bEGfL3iJEizXBqq+HsE9Wyt613+qLaEsAiAZMPQYjHljw4h+vMKuDHOVpBL0g/vptKgVjOewEOSrHQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":673168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpVUrCRA9TVsSAnZWagAArrcQAI5rgo801qihaVh90ncN\nG7T8oV2pvlREAOCAd4jLaJi9rWvq5aE8TO3YyIm0u47C+J1IvASGZ+sVlhzp\nQgs2tnHQWVEX+JGGQxakbez5KtaYRD07pm04sk3iZNOVjluW41W3ELbjfpwa\nMVcM+dnXBq824owg+Xd3EE+TnX8G0PzrcJ3VTMmOlv1s7ZOcRtLe09+tbep5\n0wAS9G9mTDGmOPlR19Q620hQONKpJ+TA6U0QgYcocozlXreKKEycPC2sFT1M\nABZ+X5WWdLF0W/InHaDF0uPSOJAvUmJqHP8rak9tiBzkKWov76nQ+OpE+/p1\nbWFvRElUBJVGNxRjysxPe6P/hnftXQQM4NpAt2Pg2uOCsqycJ270iQW8hwKM\nag4r6N8inNLo9ffwbMzzQaV/B/V2NNiQqn4iT5lDjTAzi4a9c5hhMBNKBOSI\nkyhQXxZ91Sdg+FKv7emf4gcaHc4z0yxm0YgeSKcEObKqGciVPC5Sy8P2/8u9\nEcv0MQlYZZfq5DNuc0IfTE3ysOSs+yt2WuC/rLp43NwWQvESA/NR7q9FCmQW\nNB16GTH/70x8pTRuYaZejmvUFEFfxC1J7tJygekmPBGpt/XOMnZ/emiIPwUN\nizFUF6/2ZZvdkS/Pr42/MDauABc4tncAtw/osbU7z3bXIDt3cU76b2DXjopv\nIm4J\r\n=wCV0\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"f0e16b85b69f492b1d5da3941dcfc587afeff0cd","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.3","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd_1604670762638_0.6806806038324846","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.5":{"name":"balena-electronjs","version":"1.0.5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"120923be58141dd9980053151271805908d77dd3","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.5.tgz","fileCount":50,"integrity":"sha512-427Oi8xpkiu1ojSoIvKshNtEa8za23FkBVerhfCPBHwES4cejoqS9nmQbZSVKqXjj6CQfpj8yfo3aQZPyXtjHw==","signatures":[{"sig":"MEUCIQC/qHUnksjSDknWtN0bZzMI5yKn/lFQosmPw+SPuX2WfQIgJUZZZ5wItmLdEMPq6LUpFz2jibheZeKbmuVICSt57lY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":673113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpVb+CRA9TVsSAnZWagAAIdwP/3MtmJQN7NDNjUJlPN2r\n/mOFzqK0tRZ3ZZZEDvCkyTN0RtIscPp/eDPsAtqODKdGx8Yloh7MA5083wPX\nQ8hnyibpiTiybNvwua+c/Fy9JdNQaQn67qu6TTCNF2b3kWoEvpZSnO4qeIDo\nqsiCfBk47ibuiTDygCCPCmoJtvcdcDuhUbekBp0L3+fpO8EzpKuv7oTxNe3/\nsIqLtvhyDBh/lg2/YI4nbkWbcrnbi5I7fzLIWrQBe7jbTJSAhTi+KxEJv5NE\nztV+IqLOeSWNcNGRlajyCe0P0c16Iw8lbUWZs1GAAYmdGVC3UguzxfcgNuaM\nwSstHGLZUZ4wZu+JXZ5R9I+2y2UqE+8KSoN3BUYsLysI83siU6Q/A6sLN+FH\na3r+1NZmjBv5MmtDCdH/Nt+yxX2jf0kdLHglef/3T4Q4fiPOErcDN3ZSLuge\np6JV2me8ylnw50zQuUHp4+YpT1iXssdMKMPG0+Eexj8AnOUouXxruX/uod60\nHNrsb7SLmTFa0ISFQtSO2MpJ4euMOcKGn1AXV1IwM60nysYoH1afWbwQCcUy\nu2u5RfjOWFTuKaf3UsKRg/+ldGepK4ArpwgUMntRuPr3PCRZ+oqli2oAPgBF\nDzILtlx7MpD/lGtcl9lzj8IYivAYehH7JFKwXVO//boVviuWRGaUChaL7em3\nDPq9\r\n=iF8k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"2aa24cb2d073b62ca2e4cf16434699a91d879473","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.3","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.5_1604671229648_0.4685136589208361","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703":{"name":"balena-electronjs","version":"1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"97e04c775c5e72c06c44f1d315b0d48b2d84f2ad","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703.tgz","fileCount":51,"integrity":"sha512-CMQ1bbOOMXO7pYuQTyXgKzQx443w+oaBJVMZSnaWharQiqbfrM+xXTo2mMPwYnXs8irGy2KKtaBMg+Hw+QbFuQ==","signatures":[{"sig":"MEQCIDtSvOGaUymTM1MkhWleNbubGYkFaPvndCtCDPkqIn32AiBYmitY1ztcMCG3pZogth+DL+2ENnAnPoO+2CFKyD6oyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06R/CRA9TVsSAnZWagAAgcgP/jTHW8hLrbdirIikFc3L\nlJdae1a4g7bQLUP4d6NJItCrn3213h3dIui4MpXtBfkHz7iMmIPoaRhLiuco\neZ0GBy4WoFMYA+slbivVjHE/IpfAqrkCktiU1dZkSnUh1fhfJ0CEC5903+H8\nPo8O83IpQWKJFioufpV5smdkYKxD4x8bASsVdeNN0jtHGI906Rw1ohaKINGm\nip4lDl2jMWCYL66xfwkZ2xCLoNQ9QXHuqg8WNsxsbdv8fP/3my0xNAi2LjLX\n+3c/tDFYU4Cxo0QClfR/AVTDNlj2qZkitV3iKXWsTYwqx6ILiwBR3LdKcAhC\nCuHqnNUhIkmu0908I75GG1f351PA47bMEIQ5h0ZJ0xxwfoEKwWbreB8BlrPL\nbDLB85I5GIsqNKiw0FN5Ql5SbiW9LGbTfTxB6pRSh0c9uwDSOV6D2Z9qBfuw\nxcZvda3NFc8bWBQyTGIQki1+W9jTsYNUC7SOFLbECEWxq/UlXklxdc9fEwkH\nrAK7/BRZpJ3Qs8+bodzyBp7YbfKJYmXRuufw7vhKGdFA96s0QTRy1ayDRKj2\nRo2atKMjkGEnAFQeGAHrQ/SUnLgxWcJWGwz4qX3yaP73tegyjSvqXpHMspSk\nQHAooeqE5Jf15x1c4p4R7lK86pEwOmE3HuB3jOZRv7h203qNGNS5ssSEPvNe\nIVaY\r\n=WJ5E\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"3bd9d44dbceed8713cb09e1940dcdffaaafa3703","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.3","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703_1607705726637_0.40701125458232745","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b":{"name":"balena-electronjs","version":"1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"97c2484318b076fc5addab84797952ce95b3f859","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b.tgz","fileCount":51,"integrity":"sha512-wUT3eisGfaRpAqJaiY27Xbp03EFgjlIjDXDmALXfm3Ky33h5zSBIYMJ1oAWIT3OPr1HmXMhRJVMIKwfCpNE8sQ==","signatures":[{"sig":"MEQCIBFF618hohvo+m8V3grx8cIj/W3eoLuiVJYZdVOLZqfuAiAdBOw2734q028za5lp80TpM6+10tpKsa7nyDHrFSdU6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06aQCRA9TVsSAnZWagAAsukP/0SzetftbuM/ki8fKiXZ\ne27bt2EGXCd7Uf+fdFnxS8CoLfmQta4EavT096JwSEJCVE6hodXRkyYAAOhp\n8MVxEdm/GHQXrRYbLUCdATlwFdXxQGZR481O9l/8QilYAqsmKQS0GfH6d8W3\n/1hflo0WBElR63HUzSvVwBoz5G/4p1iK+B8xP/PlkWOANQyARL/9ns0DrxL0\n64IJmP+G7gu699JRBW9AKTq8jieLuVHEockyBU/suQtbT2BeJDqu2Arl93zY\nsR15hXk2C3VVl0U3sykTwAveyJegkdgC6tqsT9ZjRwOv0Z9hufVGqpna74Nq\nVNzea9xikbfjNjPMutREH1RVHjPDjej626u0asUnjXvl01mQPS/8X1pSJB71\n7z8J4X3bfKjXhtZ1itPS6KTueA4ACKL20kloiR+1VthcESopUHNfRSa65KF+\nzEIDwh+XeMEppdkz4Lsb1TKRSYtlaFcKbJij1jazVt4xpwWamZ5yT4Fr5URw\ntkKTIjLDpHkp/O4WxiCvZTkNkQ5aUGKWx7LedA41K2iVyDdF5X7QoPZrbEjC\nMh86o3fKW4Md1FmPTYCztg2Ra6RyMuCScZGzbGG5KofXMj2BBl5j0qbJUpie\nUB2b8uHbVyZe/4L011HjcHcKJectWRZMGa5CDcAoOqb0gBIw90FaQ9+jRT+B\nhGgF\r\n=6Aih\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"98adfb664cbf66694d01cbd13a3671987cefb83b","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.3","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b_1607706256461_0.564118901891743","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e":{"name":"balena-electronjs","version":"1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"66aacbd04d2ff820a42b077c22efe6ea0a9f3029","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e.tgz","fileCount":51,"integrity":"sha512-vNiyQUD+WS9adiGdqqDd/Hq4FoAW/MbZuGA+kNSSibEqJe/cU4gNIuWviBkJRir34XA7UKPJIxmoApkUDInPXg==","signatures":[{"sig":"MEUCIGU5cyLbHvD9h/uFE6VhhUeB/xEQLjf0GM9urtyNbY5aAiEAxL/PDGj7txxqvRB9zRbm2AbWx9+gJ/rNziMlRs4ZNKI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf06s7CRA9TVsSAnZWagAA/nEQAJP19zoEvg7RRo/UKl3x\nCbHhFeez1IJ+UDTGv0a2/4z6gKcJJ69NbZEPxoth/vpVXz+T/ASTQ5lgGcl/\nUM+fTAYBlIeT+E6j8LeAPGvW3NpC2ucT1ulflMSv11WYoDzgCttdKH3sk91G\nLfyVt9vVvrjnqiAUYRJMDWwHLxZIRAasbThVyO2PJBJBkfj1oUn3wTOBny5X\nFBm0w5dMZgredcOEXMBJH2wRsIdqnohANFqrCJ6vF3vBzmBBxCaeNQDfv71w\nqk3s7zfeM+I4UtoMbu0ysw7xsJtMV37AYfCDptMZIA9MW1q1h4XvGEcL5a3A\nH3PSfsk9u5ASzkx1NLdnyhkvLuI1ICUc58sSKPTnBQLqrQemPmhcl+FLTCpd\nBZbwZg3ljBiyXybKghAITH5oT4fCF4H4+AYzJHuXo+QUYC8WwwCoj0BrLLhA\nDzZoNsB87BWrmasiYNDVUKjC4tDW0SYXp6Ipmz21PLHMxzr/CpGAOb0BmQ1G\nxU/2PSbSw8cp1zivr7d727Ur8nD9862y7M5zobLuLzIFJBp9M3jwfm2G/LRH\nFQzrs0LosCWkzIvfMjrlpyh4NqOsOuF1qFlr43+0KEBXUu8O+wW6Q+6SE7Lm\nFSyDKEY0CMJgDrJ5M/WTg7mPUPfxuAm9d/H6R7WCCecZXyF5Az1I5nr72/Wg\nC5Tt\r\n=wYpS\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"21592af2645b3252a703ae69ea55b71ba9325b0e","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.5","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e_1607707450905_0.9984036175351483","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba":{"name":"balena-electronjs","version":"1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"837d0308d746cf2925da3b2113973d1180e339f7","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba.tgz","fileCount":51,"integrity":"sha512-Pw00NjEG+HTZ7zbaQUVcfnF8EAS4wYjs8el96Pp1vU69eZay2AEe7rNsNRoXLUvp2j6ODbm98eBbCel0WQiOUg==","signatures":[{"sig":"MEUCIDoSkvNo3IEr216Csi56wJaBjEwDcbluXUSucOHfgoIsAiEAvdipU4qXvhcpitESJzGptHha7sODmFi8zIeGqDkQ20A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf07GCCRA9TVsSAnZWagAAXs0P/A4H8LuLjt5EvfJDldxi\nFptRqw+IPH5nQSiox8nu7IqcHMSMvd43+TmeFdlq9IA5DJo4kzpRZbz/s77J\ntxPuNEKtcrObQOz+qG5qY/lztJ1RoFJoABA8R55OVyPvRN0o+3bY66OZk1Q5\nUntstdeF8Qw7TSOCfCt8R4r1TXhdUUmtjOHC9yDDxvGmHP+84H5tSXMD6Wgr\n6B5S9TSND541jeb5HRDfMx5omi7EoiucA7HMTfpGTTy3NWim9TonX+R1nlGm\n0xVPOSodKm/FxJpwah1rA7+BR4wv3cGpcgX5SqdQpLeYksqyfdrVwxPvUAqM\nT7eIkCdNDvcYWIyRQLWARuHWmyhFj3/o1q/bo0QgLxvu0BygKupoObdFHYaz\nsfe9dRbEooDMos1rFntUh8ZQ6Mxf0EbXurwOCv5pSnJzG+Lu2MBsT6jins15\nNlHQ9FVT3u6J4/MHIdRGGBvFjP6JphZNGHe4VmLwQi2vu16GemYeOGiCDVUP\nXIWZra87mor0TZDSbUom4Z2dYf1UxoUf/478ccxyxJXArdmxB/5S4nxdeMer\nvae7gkv+Bpr4JJUwHZoC5Gvm9vRUwHD24VingOJCx9TyxaQh6cAKGLa+lNym\nqF9+5t76P2S2VhywP0eCqFV3FopjIuMMR/bjuJQSf4A0j298NQFBKuPziaVF\nffn2\r\n=tYBi\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"36813db8337ad5291b5983df1cb2491b4c35b8ba","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.3.5","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba_1607709057670_0.445500330427107","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b":{"name":"balena-electronjs","version":"1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"201585a08bc223d0b6d54c54b68ef79c592ec80f","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b.tgz","fileCount":51,"integrity":"sha512-3AuzF2zac7YG7sLtZjKXGTvVY4IilccjxgXZHOw58WyqtjHyPVLSj+CLGEakUTZfMlLNuyQ7iTCZSSButwpJYQ==","signatures":[{"sig":"MEUCIEHIcHJi0fuZc5GwrIu+KbY0394i6yjBm324Yl90O8uxAiEA9Fu0eWPmj8oy+48w4fF1+UCL+LB1hufB6Ma5H6/Rw4c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf16uBCRA9TVsSAnZWagAA9EkP/ixhib5ghBMlPA5dimI+\nzJUV5y/Iapl9scxvnQAKrQK33DCcAM7Y1Cg0wW0p/EswPGYG505XbnJhH1a7\nMaI1N/l01WX16OHBkp8jZjDfL3utms6rJPLWbK7H5trXzwoPgaM+zo5eFyPu\nKQkv6OSFwNKPGDDvBq/VJEqDC/Sdq1x7DHX+cjcicaItwlfOZbVVIz1Ys0Gt\n0R4rlfAhRj0hC7nrVB8sQowlvOAZ0tZ1B2mtAjGlzMSOTXXKgSh/pzZTGXgt\nfuTp9hYiv9TnlKCqD45k4U5l2uKihg6SFqyZ680M8hdwHJvokwzZIzCWdeCM\nGW2JSOG3VtFPq/ZDQtnjxyjFwSNtf1wk/bL7tUVs/5zd+oG2VGTnvUjUSYNX\n4Bhi/s8z9rI7EewILjxtbTESXqYaDd0Z4sheO/KIuhC7NYaPu3+DDn+JVAZ1\nZGyH1KLrBUb1c4FJkbnMD2hW1ZF1fnSfqm3ojp/kTxJuioYxd2ki8OtFf2NB\nYGfSNkMwu+n4s1ek5MHAILH0XLxjMg/Yf0oy0F/BNXogfND3RVScarIJpO8g\nNS5WcKcLaXw5gc5nUloAAvDDVxQbQsoGC/40+7iMTss9leG1n0ui4tIx+7wR\nmvQQGYFxNSivPeXHbByl26rBG49W0KfWJvFteW60ePSkfGqKSUaovybJ+87b\nSZfZ\r\n=bpMd\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"88773fe9c167c7459e5d1dbbbb5767ccfb19340b","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b_1607969665366_0.01158879083259845","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa":{"name":"balena-electronjs","version":"1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"97c1a72727ab607d03d797a2bffde1fb31ace6e7","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa.tgz","fileCount":51,"integrity":"sha512-nfiP1q/Vhbjv5WuxFhskYPHSyAeFxPypYfiKdYbLFL5+AuYxK+Pb3Ovb86jn4/NqUMlMjNmDXpiQJA8iICKXQQ==","signatures":[{"sig":"MEQCIDvS3qk4N9Xa/MPMvRweMhnK4rAqu5RGyY8rDLecSHb4AiBAI59+sFh0eleh5PlSSVoQfAtxoEElW46ZSo2WeQuB3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":674956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf17G+CRA9TVsSAnZWagAA6REQAIoWH570wI/9RgIHX9sM\nnSWJcoeHzXQ9sFXAC1IXe5UvyrUqMDz6EpLAS7NL+rylh07zoCAJGNhgfXE1\nGOkh72SQfljy8cEVjRFtzaOyMF2l8gniPJFEDSCUy0OGv6vDdtPnE2umI4OF\nszhQcKc0pC4/OjmOeYDf6as+jWaZ3OlFMWfnXdlfoetxu1RjmjJthBMKthq4\nIpdLiJ3eGzvX6zP7vPAZNZ0jHSEtDorpxa/SGxFSwVgR4v0Agz8CmZ7b2OMB\ndUuidcJ3IwBwrdj855nDH9yMpYcn2iP/fV7B1/P1YUGm9nU4bRXExxskWJf+\ncjK4zK8AobgSAAhqdxlHnqwkpH3B7ZfhodplY7m/JhbNNuW7xpAKtmnLsFfK\nA5OZ1qK8tpxz662mcPqFmoEDqdt/hgkpj/ZNmqzioLn9m41Av98/+zKIMBBr\neUqRLq0XC+BNNhSgzrnHW9WedUtxex1H9uRRRd19wTXArMi19xBeTCNJtCrC\nJSLKUwo0pQKoyra16vWAZkDp3wLFwwc1Woj5o1eaebDWmEIqNVtOWoHMU3eW\n4PBdFGLPxOTjgpMwlHgqB35Zr6Sk7OFE/uVSyl3wnqlz2otN7UpnmHn6R5F8\nrnWt6eOgvYskNBCmElqD6MaKNQsdQDT1kAIYkI7k66m7B/Vf4Ah//vFse/Nl\nmWjF\r\n=hQdc\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"38656f805176aa7631fd918ffc86cc518e0c2afa","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa_1607971261760_0.034295106652285634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6":{"name":"balena-electronjs","version":"1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"6c8d7b982cb91e0ff544e4071435b57f66722308","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6.tgz","fileCount":51,"integrity":"sha512-oS0fwCg4RtNOeROMtauFN3Sq2qqBgauJyiDeSufzxl8K+1z6ITMEi91TGG0qxbGFdEbj2IFMyp8G6k5lW23QwA==","signatures":[{"sig":"MEQCIAFG1iBmnjCNkV+k77YUh9t+IuEuHzsPD3TcwG0+RuDdAiBW/OJxdPOfIafVTkz5xA5Nr/km7+3TZ5Xw953eroxeFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":675384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2kxACRA9TVsSAnZWagAA1swP/2cnUlL5goYSu5nhFKC2\nwG8fRlF7qm6Nto3SH2K4eX43TrR9bgbOi9jfd9vQ0AQra8CjX8f8xEIw6Iix\nVWFVOC8m7UkvBjL2XATTBMDF3LywGBZ5uRHLxoXM0bC5N55oMhKKtLsix5/8\nmrCs80+XRYnStFib0NSgBQVj82jiTeCKU/KdeZypYPLJGohbp3PoUFQ2xB6l\n1SDEZme2jWh2npjtKGyQb0SJIE9AT7WltAgxQ2x7yFHuBknVK3LWgqwAiCzP\n5xK7SqIoCSJ0XIAwMeUAZnmVe1VuMDz/WU5hbYmJzqKdjUSvHPhg3GJ/DhJ7\n8cAuvbLcmpuNfE1H6wcDxm+7WkTFuBNJAAm2kCc7tr306egbIfF/wHt7qQY2\nQtzDfwPCKX54NOCtD5rzomJ36cV9fsaFESg8z+Gf/XU9UAgymdN9L3tjBQl6\nx7smrLGD4z4RsLJ7EirPNb+u9bSJDCnbVaPexqhtLSc4DkPz/HLgJ6ZhfvWC\nNy8voad4uA781MMpq5SM3hodCe17xb4w6s3sWZKIb+Jm/0Ox7clyOn4wHL/8\nqmfoQ83bYg9Jb+IcbRqT3cBwT21RB0Vk+EUpeSw0i91Sf9MBRy+fdz1rueV0\nf1sxVWd4cgKU4xuD8fcxG3n/A4597wjTEZ8taMpgVT6vqr8vAycAyfQNHPer\naNys\r\n=kLNK\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## How\n\n * Build this project's docker image `docker build -t bejs .`;\n * In your electron app project create a Dockerfile that uses the image you\n   built above: `FROM bejs`;\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_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","gitHead":"af7149a3f7d2f5af2bce2a947ee1431f10ba83e6","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6_1608141887838_0.49118989492025533","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6":{"name":"balena-electronjs","version":"1.0.6","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"d7d6c9d14cd01986e73781eb96936287294dff50","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.6.tgz","fileCount":51,"integrity":"sha512-YRfhLdrBxw4iBaeUZTBS5aG1/zI+G6l0A3MmSgGNBSLa637Ef9eDzZ1SedB+qEclXzHvtpgnStQBpIPBDO0iqQ==","signatures":[{"sig":"MEUCIQDfTx8K08aAg/MuhU3iVJbw8z5wazLWWYTOdhOYNczYxAIgcVYyYgqyArclR1UudFbwqzC18E0JXzm+DLMBPLD8wes=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":675330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf20gUCRA9TVsSAnZWagAAkEAP+wSrPu0LD35E4KuTA6Hw\nY+IgZP5EzJGd8l1+cVEFMZq4KV1T1VWRFgs/uk+A73iVBm/RzPYfhDpFqSpV\nms1c8i/I5r7NljpvwEcyUeLq9bjOYi9zlhER9/zdS6/t4yq/jU/ZStor/zGL\n3Ps8BfgwQAB7VIO/9FqS4TjLoINQ8pHAtvI3n9Du38r1YwXyBBd6XYVh/zS1\n8/+C5SIy2wo0aThzHkVkdrxDIHQiPrBJTLB+agkcbMifCiKMi9WBmrZjxK4O\nHOKpvhmyygMLwWFZsw1E5BWBM8MooomaDbA7cSRS4I2FQ4cjnHToVDoYUfN7\nZwiL5lxQmMPiq4HvqmQErNeZTkZixwpXC339GKxCCpKoOrqVPeavgs1pPT4y\nVhxTSiqzDyKf0lb3Fnp7tIpC6ORdpoZuBl45pvxDqE6zxKxWEoLLzA9kIrh5\n4TXdVSU1XQs4T4B/Q5huODBp8ziQ5zC0wyWZRFCcmE99/V/CNzs5CDakKa33\n0X7TbePnRQ0iRf1HqBhGDPp0UXYC/L+z7DMynB32P7KVz1dw3RbQxmgx9Naz\nWINqizBiKMw04zQExDNhp3Vg1Da6RadylmAg+SBOBFkIw7HsA2U/3yf96IOD\n3q6pyUpCi21Tf7grlnHR/ySZIzsG/cj4B2/JvfQ6CEAzAG9sAHLgoWST5ifR\nMnQY\r\n=6rbB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"58dfe43b595601e498ebed3030e8d0d87986b6b4","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.6_1608206356171_0.671264908068564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28":{"name":"balena-electronjs","version":"1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"53489942718a043469b37a641a94a7e8e8270684","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28.tgz","fileCount":51,"integrity":"sha512-fjNHy1756SzH5+foSywEv/l5gdioHT/I3pIJffQwaMo2OPZhMoZ0m0DHFL9MP/0lPOmf+qpRo3nPUIXcm8wGCQ==","signatures":[{"sig":"MEUCIQCjcON+4p7Ktv/uYva5vlvNMdUlSpMnSI9NkVvRNhIwJgIgH8RO7/oUWRGmkUb+zsOCILxSXE3XWnBeN9Fz1NriZVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":675731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf23RYCRA9TVsSAnZWagAAFFAP/3lYI/PdV3v9EYk++VX6\nuYmJ45OA7jXoPQ/D5xVWHndZZP0SoFoJ+DAcxhNat4Xugqa7bktNhggW19Zn\nBSa7+iydlSMnioye4QC1aIOt1mac5/IIb6o+dJ/MHV/7Tf7vMoZKCOJLxh7t\n+jtpS3MvDE0d+IxF6QVSzL8OC8jetbxLBV52i5a3nQcx8WdD2sBatQlFIQJD\ndDY12MWC61nLeyBAttNN7rA4bSGKKQr4y03x9v+Pd27UXuWPKHBpogXtJbll\nDKmT+M8raof8MF1jKTbhPTjsThCZTM+BHqQhA/IUwhQurg0zKTzvRJ0zpcyR\nugxyrpkezdiPr02DCw7zfFGbRweau35iKxbBjXRLlRrG2yX0AYuPOEzsUYk9\nl9fyfXT0T5JcakVnhCvawfaLbYxGWQ3LB1la504qUTsKSTFteTVUo4MFlQIY\ns5xQwh/S3iIZsPOy+7UD2M8X4mAYnUmM55mlOlwKc4nhodUYTkbv9MLlhi62\n/IZrFHUQscbMHFGghDbDtdWQgnaPJNLjcqVZjO8bO+lv8X1Bro3PJX1HJTaJ\ni6WDeaURBEzYfQtdnA8tquVvlWVlHMbUwid6yElnKEhPidNBZpWCzd0i3euO\nx7kW7Bfq8kWOn9BRYjj++hMmbvDH/Zk3E8ts3wbhIQkDW3zVF8PddbKwbshE\nA7Lz\r\n=Z/wp\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_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\n\n## Utilities\n\n * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"958b50831479bf50039b94c87a4d9d0077179d28","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28_1608217688059_0.7353511170947415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.7":{"name":"balena-electronjs","version":"1.0.7","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"d6cd71b4c38f273bd39d0aba954ebc18bcc9b905","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.0.7.tgz","fileCount":51,"integrity":"sha512-Pni78ok1Bd6YJ2LB9Y0R3/8vbY9mzBCfFFbCEFwioSoaB1VCIrrlG0T6sj+0lFsdSa5jbfRf/6uZeKmqneBSSw==","signatures":[{"sig":"MEUCIQDCyMRHc2Zr45iOoONBTASMb14vh8efqRZa78ip+HJCxQIgPfQc0GIP/TfiLz42T8AAUtFFGS5ruDMibpUSCIOe58U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":675664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3JpICRA9TVsSAnZWagAAZmkQAIzBY1TFRJ2sOOx97L5C\nv1n2LYf9WNw9tBh5nv0uY7PY86b+OmnPSyp0Yt6mOFiqBfoyir5lo4jUUNvc\nl71OkAeY12Fiv8TW499reM6xlyk4N5CGi/hXEFuSequcrA9Kdl/nr9vSHIjP\nYrLV/LNH8EGzSAeKT6s4RIXE1Y81fhLykQPEARybYoCktOombuvzawFpcPs4\noC1/2jQXTF9lei4KrZhu3ChcxlLhwxcOKODiosK9XpdSdtXn8C42/kFpHeLT\n9KQ+85oR859Cfb4z5GtfMyRpMJK0X2nQKS9rFxKC4yxOsEyaMiaSSWWz2hQz\nWv6tdqSke8yxF8brBrog8ecqbW1wld12StEgHhwGcQ48F0rMIBP8BQMHxc2k\niYdB7Yrk8QOo7X9/t1fmL/e8KULzzdYXIIWiAjeoCrD58Scg+cXMD9Od/TYw\nTvJNuos5NIaak7KpR3VZrm3dhn7Zy5OjPf4M6mRSqDejH96GjpaZOygJiLQ/\nwQe0ajGe7Ud9K+LynNJJIwvInFNufI+32ZG1g2q4dM8zry6Wxs/sXF7AaFy9\n3zlVo5Dl090jcicx9cmf6MqK9P72v1VqTvCaJayGvLFBGNwNAUzlROqaYszO\nsbQg2eKuv0sj4l1QMgaSqwB4GcsqqY3t0/6y/Dx9+KTs1OA8IZFdcO90tNs2\nPdQI\r\n=nAgL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"04846c0d4c634e97b957b5ddee4421f655ec19d2","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.0.7_1608292936439_0.24812408953653442","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5":{"name":"balena-electronjs","version":"1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"0892f1991e2e55bd835ace8c19d005a12af48647","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5.tgz","fileCount":51,"integrity":"sha512-U2XnheNMk0JmZgeleDBZmqzObhT3DetKXJZZOzZ66xiFYv5f1lBS/HMIIvZhG0bXwch+10KaShwlzm+F+4vuBg==","signatures":[{"sig":"MEQCIQDkWlBwi8Xor4oodW23nnE4CeibgYgvPJpYpSFDcPHS/wIfDtAnqnokXJFiKCXRfKMaH+xG9PPRJZBT2BOXXlgPaQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":676681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4I6VCRA9TVsSAnZWagAA5tsP/1f8jdbF8ATsGo1WNIoT\n1FSigEvQeSVOg6m9kurRDD16rd2kxK/2opf+2UNXSHtq/XtOwIMmvkKMyRBn\nAzMPuLouHUMFbgb7KSKXC48Av7DlL+kISYJbuSBYlm2GezNUoij4X9JcCpWD\nDyslPoFLFf/l44JGjpqoT5DCr872riXCRHZDkZ8KcQWxj899b/N1esYcFFiN\nRjwpjyM5Qu/6deykG2Q+SeSqzKJV0f9UY5mDXA44MKSUm+1xTJL6+8lL/8Uk\n5UcB0lScPfLa5BZYBZhVhWjhHMw7sweKAbCnlROZvaWu2Iv8R/i0ftBj2RtZ\nI75J+TvzQK5tb9Jl1oDcEv8RPy6Mkeizs+kKyvATCUlNry5nQHMctePAMBf7\njAvzrczhVcHpH8Ulh45sRkL8kWP6ZZVzdnqEwjXWtQK7NJp1XLEpNoMb6jei\n5baAm543oDCCVjikdovkNRFxggrjybXl2e0hbXq8bvpPpXnPt75r7UvXUuCs\nqEjB3fdBAJOcjolI/Jd2/AQUmVHEe9zOoFay1IOravRd7GFgzjoaMhgirDfk\nQo8n/2218hoqVR747B4ieJ4o0SOL+EMi2FD5Fsw6A+Rx068jII82MyWoQWS5\nwqjmEJVHN21Au7owL34HeApJq2zjwZiRhN7NhVWC64wW5J2vn5L4HvgqGtHu\nzFo7\r\n=7wSs\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\n\n## Utilities\n\n * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"66b798d9059221d1809cf28ba4246b678a64f4f5","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5_1608552085301_0.14963479749978403","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0":{"name":"balena-electronjs","version":"1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"054cce6597abd5829595f917b69d1f3cee1ce965","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0.tgz","fileCount":51,"integrity":"sha512-VRewOFkpc91/fLKmL3M2wcdwfe0xW07JCTSZQ43+3cAAQXmgHAn3iZm7jxz00dTqY4anIY6SE+v+7EXHBzT78w==","signatures":[{"sig":"MEUCIQCl29oAVOaeyUaq2G28/s4c64MREGTE2NDAQcTA/RyAlQIgeMcSnFuyZnFv340SsuQ2xEf/0rhKRNS6XeKlFnhVnM4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":677322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4M/PCRA9TVsSAnZWagAA52UP/RGg1bOP0jQi9lv4qDLt\nnN+j11rRhYoCVdVsz784CYAt5zTvNLZWkJ+kHALGy0xNmxlq5S44nQeubSir\netubMUuD/L/XdfU0EDGTBfMygyiO04uIYt7jLm1Aep3GN9Ffd9mccFmr9Tr5\nPkx2ueRMclidTWnAgF1niXbR4zaOPhXcHLWmdN3NQ6qRqA6bd//S4eL6wrbm\nq+ANxOYn7zUYqlyeDZyHxLbpTiywUfHHZIDOGkpFmFOFxpaEmZRDH55+HWKQ\nQmYIjk+XVdcYm8xcKN6mfVJqHf0CkVkIYmCuh9rEACOWP3tVk8AD9Q1aK+pU\nh0agvoDeqWaFyYpZaHzMIvdcjXsK3m1rSEybFyAFK0kNK7mFQyXmGrVGLfTa\nPO5iu/NeJh284AfuefAaT/XeUgrYLCDoOq5O47JQI72v7dyr9B/s39hw1L+x\nuSKEpfdj+SsXscG6G8JfHewdC0TJt/Zga46sQE/p9eFFqdffP56QutJD/Iwm\n5xfMvGssVKd17MjrAa9oGQeGAXEAKpH9SC0XXvTOe9G4wkyTKrHTGinEWq8/\nNkIyFlRRZZbOCHwz8vTeM0uwZHSbsq1EW40mNbD/EEIiLxLLzS2B186UvvJj\nGYXsEQtUFZRc/FimDZwcqh7WzWh4qBLmdrvIkDigLG5FcYyaL+LcYlpiXDJ8\nAJ5b\r\n=afah\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"4fce9c461f294d4a768db8f247eea6f75d7b08b0","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0_1608568783438_0.08024887065631492","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2":{"name":"balena-electronjs","version":"1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"2711314f6f4776b2d936aad49f01fe59e0582611","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2.tgz","fileCount":52,"integrity":"sha512-ZaqI5jpTa8DaF7G5A9mG4E+4oj1kx0VjT1IPJDzw9skhDwafPfhbMCTHKO4UaczOr7QAIIUUbAcV1P70WYiJYw==","signatures":[{"sig":"MEYCIQCflOvDxKTAk6/3s2I5ZcCh+pj3/IRTivnRI2KjPLsyJAIhAJxP6AJMQNcu3XlJ7Ud6KhbfctimnfoGKY1VuGWlsbqV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":677835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4kQACRA9TVsSAnZWagAAh9oP/3JDD0r8SMrNqvSLioFW\n3cPN7kA1gv2Qd+PmCYko8NHv0lSYLdQnMmMZfPah7COUVeVLT3P33iJGChps\nic/eCC9K2lbuR0Zsg31Ch1ekHZxwtTbVKvJKbXzd0Ke2IYABzGFBDMmpgX1f\n2YrUELZDWnxSU+addHUMiMs9gZ+k2VQ/3JOSUtkaf6x5ErjTX1Cmw2C74C1b\nW8WvUCyoRmEntaiBi+XydZz614pU7Q/7pwF7BNxjdMPNAr+u/ZBQSldQENtr\ndkx1hgbJZZHCfV6OJEJlowUuJBNoR0doBKcIOSDPdRVeWnqVJEXjl3FZ1Twp\n2GAdj/OEGbr0xI4EW2IG/7Me4Uc5GaQ3UK6Ftu8KwDzLo1ZvcFG6oY1yKBf9\npJfGH423R5Pmc4crSXxZrZTjy4SuA3rFayhtfD+pnYW8Vza8Q+hTBDVASnc+\nr4VCj1WQ6WjdUtGnvgUp8oQ057D7y3SDUx0K0yDqjzOSuwphz8hwyG9X3f5Q\nNY2JTd0pZtbZyzKCR6woMO8KXOFNNRogXcLMDgUWB1LckoBWVV6gNiaHKRt6\nvUM7th+gWPYmBZC3SjrH1LqDa12fhGifu3puvV37Rmkp4Bx8V1aVlP7MTuU4\nMG1siSIRZXugjezeyjbl4sIv8nvDvmro7pUiHUAcRCjicbzzZ954gW79ysay\nSmrU\r\n=teic\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"d2f9b195ad4103094d6e3f865b9676d6fd9efbc2","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2_1608664063973_0.11471399460106024","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8":{"name":"balena-electronjs","version":"1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"b143dd1eea6b51208a983a35fe6c368ca0448e36","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8.tgz","fileCount":52,"integrity":"sha512-w+W0ENe8zidDOmzGO7R+CePL44QHQ+AJt9cxlL/pIENZym6ERtCl2eVsS4kx1tt1lUiEwxObF4lhmUC0OWgenw==","signatures":[{"sig":"MEUCIQCxDdkUhycXb/V50CgRaqZK5+zu7d1w+Ufefy3VQuNuFQIgSMpm0SLrPg6nSsco676j0us+E6TGMydjRAmNU8izYjc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":678528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf40tnCRA9TVsSAnZWagAA9zwP/1gD6jQAxrY+IzSrRPev\nyHc8uaEBNMkR6cZS9nUDPNhVbDd0f2Meg5mP1N588nKd7ZstUhp9zDWcTx+l\n7J8zcyrUpGVcEUW8q7XjUSGochib836qflEhTMq49fwfH5NSABC1cVqBQJgq\nQmj2BpvabjX6YCbs1RGm0BzVVXmuUE48tnm4f3TRuSNR68/oV6kXtBcu/mB7\nS/PEBInpNfk4Dcjcc1nOIeAXz0pxvrWO19xibKEdyd2WB4dm09v4/DqiNzVi\ncfaXIT6j/FAI+tW5aXHWSvy/a3iQ3JMQsU3PPb1tjDfOhtpc2QIHxgJHKvqx\nDaP88O9qRbA6BZsgs3EWClPI+C2ADzsMw6hMGA5Nw+nPxpYkyGODKq04qzkB\nCnVSuDWNzX3HjD0l3pI5eSkzId8470nhdHZrKln7uWh6fL2v6orZ9EvGaNxr\n3C8zepR6IN9ITodzeelFXzwLdLAF2QR9CtpXbrR4ieP1OoHiFqGl2SspqUtf\nbGYBjGtVkPQ2N/sVWx8MNU68Ty0i5+4v7Ie5dsdL1Lz2plBrjW/NMxPgaJox\nvDMHT2Y3F5xKfuaozIp2iD+2mchFhNN4+x8B2Mm38uWDM8blBM5DTzPyXCv/\nDvTs2xp0UPO5feevqUuJnP9vVjyMCQ7sXxiouhRbrjBxMCVIFdE+Xp6naliP\nJJdG\r\n=mEMH\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"44451a8fd33d1172d7510d75bdf2dfb39c6394c8","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8_1608731494855_0.6399299155556224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01":{"name":"balena-electronjs","version":"1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"2106f17b4108fe82b657a636ea0e355a359fd798","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01.tgz","fileCount":52,"integrity":"sha512-smvS1gMB9VSZ+6XNyJfHcluayfbF3OmcJ1JKhVP1TQ+uKn33nzqTl14po9pB5qHtQCCqzDViy38CgUwtyXkFdw==","signatures":[{"sig":"MEUCIFx+5GzwEhPl6s6mT10MkKzUY3iCxF4lI5S3Iue4xZlBAiEA77YS65Fr9cgNAPI1XZcFk1fh8cfxGsxBaI9LMVzXLrY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":678745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf402jCRA9TVsSAnZWagAApIkP/2zTnKNazVHyq1MkxSlc\nvtwbexKs2DTTpBwnLHVNuIDaD48YbOkmc8JTSfKGTfijzEnSAiIDvt2PIYkm\nxibo1RueWbtBhsjVvmg3jyVCc57n+OH5l5Nn6CIoSP4qcNaYuIXJKo8fHcma\nQpy88iFyxOINX5+/sMvvFrr3WbwfD71spygu/+37PIYmY4VVAbN28rjD2y+n\n38p8EU0Y8mm/3BX/EUnUoKYIIHC9vOpirKrkUkuV2Ax0Fi43Lh+DXMKMiz9R\nkho9q7BeTLfHYSv7nMpMW0DvdvjlDWJFZT9kXbIWJnTJ43iuXkm5EFF/N8OW\neALg3YOCDwTcWQ3nXLsHYPZAOB8sFfxv9wLlNIOjQ1OPP/keF4FvBCFJIfq7\n04ac7Bzc+VQcIWxP7lX5g3sYfFeJn9ZRiRhU+yZYr7RYGPHZBfEhuZBJ0Fwv\nD+P6eU3FV1cxGytUjVLNm/Hvw2rPCDF474oZpmuMM2VBpkjo3QIBIqNF+71n\nwgSSDGi1m9YFUY7snM6dGjqrPGfCgJcr40Ze1FIyCnm2z/SoLnMUygcHm0Ca\nH6SCfr8T/ApthE+TOv06WTH+n9YJX5WMi6uKGpxt/8aeRpCzal6pM4MvYx3d\n3DAhxeRxjmRVZUKqORKzq7QR8HuQMdR9hIu5VjjoQFJfg8ZflcM+nbpi763y\n269u\r\n=E0t/\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"b8084151a2920ace542cf21d78c691f825ad2c01","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/balena-io-modules/balena-electronjs.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.1.1","husky":"^4.2.5","react":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01_1608732067148_0.3251315205721781","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264":{"name":"balena-electronjs","version":"1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"4a62c10047385259b7a3b752af4fe9341b0a0a47","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264.tgz","fileCount":52,"integrity":"sha512-FhFpASuNZxKVsAyoFHWkyVfPW8luP88uToq03VXT+87lcmVseXU3KLiIqH+PMiFIu1E/nCEsHYpXKx6ouHVp1A==","signatures":[{"sig":"MEQCIDWyL37RUGPV3DI8wZAB+zNrqGYH5/CKJ3sNfhfYVNtYAiAA2pM6m9HCcTqtvLe0pTyQ6Zb3Y9oFfvXRMrs805jNTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf433zCRA9TVsSAnZWagAAMlUQAJrU+p51h0XgWMiMZket\nsZLRX7+XwUSK8LJ6oRJk6dSTtxfocjOVsdsZaIWeqHaoxd6R3DGdfcJIkOO1\n+B9jFU4AqFF99dTY8O/JOCXqxCK7oMEIKbv22FeTWdbtwh6xntzr2pqdReJl\nFwUMUKbJ+kQI42F8kseT3PfqZmz7ykC34sotBirLWwoUi+cQOZWqGsGrImnH\nrDvEeS43h3OS0znWIeEa/JTKfHxJQKHgNPW6+USc2a//E5U2adE70OTP084w\nTHKHnRYf2wTf8Q3I0qesdzqN89oF95IS3o2Lge8ZXvq3yRo+Cb/m1LRwqvVg\nqeFuBe2UQ1R8J986Rffx4NvDxzcNko23ejSG4cXuV/aTzwxY9/bhm5N7ZIRt\n4Ym/PNKxbvbSMcOZCp5rKk5oIKjiu9I7HSyNke2L7NM2UKnNPPvwOybFTghz\nFUv41mH/RGJPr5YYGyxlAAFShEAjU54dokINvTdVAyvN41WlBRuZ6uKd0xwN\n8RvzV4atoPc9vzu87zH1JiKK48vkU44cSEV2V1Bks7yIa+vHmfVFa/on9Dye\nBkVsdJRgctKhJoXm8zq0aybKv+hhTfCboD231rvgqEhtk1KLJXyhxoznWjua\n0Gharkv1YKoDOF4kZlH7mrnKjabEJ8hPXgWrVAlWxOkGMSOKsMYibrRbuJ9S\ns2Uh\r\n=HuEk\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"83afd07ecc460338faa6aba2ce5d203312d8a264","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/balena-io-modules/balena-electronjs.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":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264_1608744435378_0.31806594345024863","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786":{"name":"balena-electronjs","version":"1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"a86e35ecf1336664f148fe01775ca427297beaed","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786.tgz","fileCount":52,"integrity":"sha512-JdqCUEwt/u65fPRLd1HwVAlzGkflvjuRbTnyznp8jYC5W25pTAmxJPvDhYS+JTfXfCSAg4VtDYwY26mnUqPiog==","signatures":[{"sig":"MEUCIQDeXq/FAh2gSK/9RQHtiLGbIdhbjzwNAu5uWcEF5hUL1wIgS+X4jt/+e/v5SYQ0tb4Tj5rKnOqRPKwUIYTr6aKLmv0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf46eeCRA9TVsSAnZWagAApawP/izKpNNOsajVWQ7dvDeo\npRZjT+xBjj962G4oe/qlQlMcVCka8Ny5bJYyw21ThjMXmbmEqE27ejGCJxbR\nCpfFW4d7fO7vZzoa0W7EHe03dpUajVE5rTfRJPV+/7gEO8V50o67fXIH4uQ6\nxhcQOEq8sqV6CFUvs2lnGru/Ey7+YCtfTOSC2a/0ifvScdlv65iDBUfGio+I\n4nePXX786UeVB9VqOQDJThvMsTW7EgfSUtpswVkNZuF+CivR7Z7gdntkNLhB\nBzKP+ZUR5uMZLh66cJ01mO5Hy1hVyRRB4JH9RmQMJjnreVYbdH02vl9RzvDw\noFYqsB4L385ocB9etlbVPMm+FRAYBCf0iQHhbq9kajfcvkB841kMg7hr0fmL\n0TKNG6krgCI6Y9atEvKMiGkLitZkJUg3VoiPl2g0jFH2RkhJGvujjC4IdlEZ\nHvUUMQSmoWSXfdSgCMDHiYXCST0dcZJzmm2N1fGXyYOPikLBMUsW/TFq1VzH\n5jRDbQDA9oCu8vLF6Xy2sz1tnYG7BCqz6eW2qCvgmsYTQ2AATCvVW/aFC+hw\nSz2MGHaRRopqLUKihFSDDPgCNt4z++cNQZsnUCTWebPOg7lLcBpl/YJyxyro\ntrgAeMD14ZQ+buLweZ5v1BNbL1ksTghTDf3NIanhzjXNFXLK77a2cx4ElnXl\nud4h\r\n=GYL+\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"ac092101e0894e6a1b89b3008c3369e034912786","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/balena-io-modules/balena-electronjs.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":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786_1608755101902_0.2963345481127553","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.0":{"name":"balena-electronjs","version":"1.1.0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"ac7eee9def22b823933b788c1b03775cad872292","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.0.tgz","fileCount":52,"integrity":"sha512-2AahUlZTSfsNyTSs+3Vp08ABWF7qgwAR9U5+eNcehCj+G/jgAJAo6dRgJygEpk3TfqGrqgnHh+yCdInc3pHZ3g==","signatures":[{"sig":"MEQCIF/dIFKe6PMaWt9adDyGl+7kJxYSgGeAoC7W/MVIebLDAiBDHzMqndeFVsWQm5KXJDQzm10x4uUqb5IELjxjoNy+Zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5HuHCRA9TVsSAnZWagAANAgP/iFTzXvZL9yTKN8CUxqH\ns3y67Bdeb+2hNAO800MaXwkqsxRv2BuP+JRnVDTAyy4rDgMRBZaezL5BVr+z\nincvwgZmdiyb+EE2zEQoCn/2JQ5IRjuZeALeBSq1GQd6rMjTZai3Zy2AfjG3\nT4ZbwbgmBWD5tUaiXUNcPeP7g9sQtMJcCcsvDfEhpcj6me+WYM5MGFrJUXE1\nyeSd8qn+0zG6W/AN11eRvBBxUgfM/kqFE67whoO02vn/uP9Wd5+CCebi5A7y\nm6tjhBZnxnHGefjS+GyuiOlon/bXoOGi0V3MQCoRJ2GnuBpFU2uRWnk6FNZ2\nz5NYni4437s3gqzpvsJGaKlhlk/vx0VH76dQWKMQkSunD4LBqRBdaq4GEoib\nK4NrpqYIIu0bnd4vlQid9jOadSNqghUfDDKfjvzcFLVyNy5Xi9ovCtpaz77G\nmD9mFuJJHhvzaepb92V7TkgjrViAXAeNmcVFDLQCk0trOnf4kNBqn8S4COY/\nmn65A3BQqbXc8xybMhZqAoRLf53BL5Ew0RoID0s7K5/ZNbiiZ4DhetJRdr5w\nJiFNyRGkSij7R0tKAuHHX5+c//AZq43vLLwhql1p60Glb4HC+NI+GCzZDLk0\nrfFy9Msl12I98dkb6CQYe/6NbKaX2KOCkf2xgFEBhLpqpOTstfGcfr2dG5ok\nmGFE\r\n=HTee\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"6821620b18ccea6cf1591d4baacca2630458d3a0","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/balena-io-modules/balena-electronjs.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":"^16.8.6","lodash":"^4.17.20","ts-node":"^9.0.0","webpack":"^4.41.5","electron":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^16.8.6","rendition":"^18.10.0","ts-loader":"^8.0.4","css-loader":"^3.1.0","typescript":"^4.0.3","@types/node":"^12.12.47","async-mutex":"^0.1.4","file-loader":"^4.1.0","lint-staged":"^10.2.11","webpack-cli":"^3.3.6","@balena/lint":"^5.1.0","@types/debug":"^4.1.4","@types/react":"^16.8.23","pretty-bytes":"^5.2.0","style-loader":"^0.23.1","@svgr/webpack":"^5.4.0","@types/webpack":"^4.41.17","@types/bluebird":"^3.5.29","@types/lockfile":"^1.0.1","@types/react-dom":"^16.8.4","html-webpack-plugin":"^3.2.0","mini-css-extract-plugin":"^0.9.0","@types/styled-components":"^4.1.18","ts-json-schema-generator":"^0.70.1","@types/html-webpack-plugin":"^3.2.3","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^0.9.1"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.0_1608809351291_0.5263809714686529","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2":{"name":"balena-electronjs","version":"1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"2154095744f6b8495f4e60bf652a428ed8a967da","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2.tgz","fileCount":52,"integrity":"sha512-7efDpqSKwA/EFOXiS1AYvcJ1OpxZ+Fqb1tWTQ7cH6sQX9EWqAvLb+UqybxPLeZzRXYqm7vBPZ6FqFDerEg+trw==","signatures":[{"sig":"MEUCIFjur6/GKEOhq8FJ72dhj0fPESSfZ6CVqb4qy79rd07nAiEAgU9NnYxPgtNveHZDijekId8d6uVJwDazJsWNIBut+rA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":678948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6xlMCRA9TVsSAnZWagAAKbgP/0ZfjFjPE17RZFe5+o+W\n7trt/yz18dawsI2MCO2G9X6lum8K2jU1xWlupYPYuTp16MH+ruqRKWs6ax+O\njj8YZ0ZENWrZFayXRYfuAQ0flPJYlKx3DhIV+iOLKmUl0vszspuxO0dY0OsG\nG/4V8wI/KRHpZp24RgSMR3xak8vKNamtzNI9oby5rZrd5ZjNkjTLZdufZ/sL\nKC5ObFX/8x/JfFTLxdGJOIa0/VWkiNUrNiOzjdHSf1ZfaZBHgwt3TfKc/5bL\nzt63SSOZd9XARYqyd6aL4Sg7Wa3Y7azadoreAF3jhSCdXOKGxOLC6dRTDjZr\nyDem3AFGhyzmPKFlKltBMn6k7C8VrWLB1b+Pel/sniyhq9cWK+SiiOxZIqHa\nJIJhHisREykBrvlN/UiWGyTe9/W3VYeSbXb6dzk3MYfsD12NVnOEP3ndNYPP\nTdtyFbYrz5eIwqZ6XtEhExyk8goZt1UJAnxpeesvHh0fa9mJF17Pzjb2f7nA\nx4+7Qn234aNU6LOpj/HUOu+AW0rAJK6l1NpDc0G//A4BeO88cWD5M4hPszat\n1BQ8ZtY1jY16QT+Nidgqr5vomqtDOrLcdI5oYgDAA+o6M+Q7xQB4b7TSTs72\n/tIIEorQXxYTWtmUeksXqr/lwjTg2xAfYwsEOpR0z+giM1v/c12SwezAoRhp\nyQvj\r\n=kzNA\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"0788dc16604373c2b567ed5df04e4e7afd42c1a2","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2_1609242955675_0.18798826146031522","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.1":{"name":"balena-electronjs","version":"1.1.1","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"4020df9c2e50c07db331f5331a1a17d413524321","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.1.tgz","fileCount":52,"integrity":"sha512-wlMBPipGu0VNeIN8saSZ+ao3N7ZMyQQDq6poPJJZuR10EHHkINHCaKjsjGf/8+566rPDXfoisivm/zXQgLMGSw==","signatures":[{"sig":"MEYCIQDAtLA12oiqhK95/cDLs/VMEez03+k55Rxo0OYM89LPMwIhAIYIKfo3I0+M5l3lFT/wtsNpTkNXfMKWM3eAUt/gf2YZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":678898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6xqzCRA9TVsSAnZWagAAJNIP/1PGXV9jhavX9KPypQM6\nM6/jlFECN5LGq32nIdVYrXooKOTFSxlh+9InzqS3RaHN+dUQAejo56lfVbnd\ntUDbjeXXDGJ0JCMJZHL0oZ8KASfHibsVZFlRrd9rrYDDfY+W3TKDHJZNZo+x\nj+54Dxc5ARpS1VieNBLMxmJJrZojqfkCBEHQ9Xk914uftd7BO67LVCjN3YeT\n+NcV+9bDEy6qySW1OKzQkDC44X5eMV4VCIbRfw4lKN4ZFxto7SAoaIJtHfS4\nBIbbY54dAXMeIcF6gB4XZgdUw/7gJ8KpDuXpTFtJ1kHoyFGc+lyWM+Xs3XXH\nb7nhxNPnQDP36+rLYWniQ5e/p/ZSN+2cGW87CQcCYksj4V4IpW2at/eaclXn\n0PGChBMTAJ6yKHhlRkjbrjOcEHNs4vjdSzx1TlN1cyQBIaQ5k748WCqX5FnL\nD3PEK7+g4ucDHipwkHGLIb0sUhCS/Z+yMsGwIh1AlMTCFMCGkPpwefA8/yCk\nZsL2vfF/b4xwVKMxInG1ehrlaqTbEXQCkY+UaSHR6hgA3nGi6aP/31XrKjM5\nzrpzAPzz8KiFF8gVZGDc6/8kXg5F9QMu3HfwFK9kbeaa2S8NVCt03epAzgpf\nj+bltE7YVktxUfNs0hu58B/ejHFEt3ErHFybWrk1G3Ny7Fg1+ARxAO9nCpk6\nLEiB\r\n=a13T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"491a53ea6017a91cb5f16a0b84d451309fc4ad74","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.1_1609243314721_0.44588997836783895","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0":{"name":"balena-electronjs","version":"1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"6245789e9c418a7992d8a5bf063116e7c6f14959","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0.tgz","fileCount":52,"integrity":"sha512-Zu5q6jm2IloC4bjgxNHFiw37cyqpopkfNOhJweVHnA6QftdxfIeC4b016p9TSYHcFnlmI2SemYRb/oYa2y/t3Q==","signatures":[{"sig":"MEUCIGTscWRdsyAJQtN+AufngXv3DP2U9ZUgWbh7NbfEjo0/AiEAscqAVaQctUG7gjm+d5wbWRGW4KgZ2V+23Ct3lBMQJVk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf609qCRA9TVsSAnZWagAAoQoP/2bCs0Lg+3/jgsArVGFe\nT4V0LgqJv2+RVqKRklhOZ4PbpPc/0w2qdu5fKYWaSeZxxTdSlGIB1Hx5AafO\nLcr23PyY2wiauVnODOYIABLd8gtB5BXGFC9NgkRIu25QoMavy+0jMrbpKg08\nXx5NULH5OU1AieMGwnIFNZwPzSLQsjLnMfO3wC+FVF8XwiRM8de/lWTIK3fU\nfVXPgySM/FKe75NNdzRljITVdyakzOiiHxELac72ITx+BpohNL7IkwpmC0te\nSZ3bkHir5nz/uVMVEbnYgMnWCZkUymXz2Ph10y89jc1cIbu3+nbU1CwvKQEC\nZ1HrGseEP9XPmKkTmMIx7td7fhmbSHFHpEIfn/1IG+0q4rMgi7nKC841UC12\nQsfZCe6OaV7yPKXu76pk+lGqLCkjDnmescVMBJj+sgKmOEkxRyhmptF/56/r\nVjt3ohnFYUUv5HhRH0dokN3SPIGGEq6IwPHD59JwcWhAlRHAG7YiCsXgiOmf\nQPn0FFdzwsDfcDwyjkkxNWUg3I1Kw0G30ALiw1JaVIRibLeU4wPcFDvM0TnV\nzhICmwUL4EBXuYjSB5XzGwAVVfLRy1/StpTwFg8Oz0nploe9qjQxv+P+sRnv\ncXuwI9aVGvy7SB+qQ/KGADQLc2OA+dsvmyUlyq4wVuJbsibn1KY6e0O0i1sK\nAKb7\r\n=tjYy\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock`\n","gitHead":"0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0_1609256810123_0.31745936604208946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.2":{"name":"balena-electronjs","version":"1.1.2","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"5215aa0fabda6692aa80d6df67ea2fe2625c6341","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.2.tgz","fileCount":52,"integrity":"sha512-2Oj6DeZ6Zoy97fkfFBrAjeZ+fk4dEWF7QveRg0rut504KQqrTaSAgdr57P4fojFIdkIS4Z8T9TdrPVoiZFkJTQ==","signatures":[{"sig":"MEUCIQDukEklsn3iXhej9P/Vv9lDYDWwWim0d1y2Mf+mQl5NIgIgcqiBNoUdG7/I6sczmzsyF8g123yFukcYYhWOvOprSDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf61ApCRA9TVsSAnZWagAAaNwQAJLgTwk89JjuVZr1WbFf\na1HdvbyRbUE/BvXZgC4vU46AiyQGc0oXHN4Pk+TBGUU90SpVsvnOkO7El8p7\no5GOCTOKGdK3z0B45cRZA0D3AYeJluV8zQy4me9wKvvE5MLuAA1DZ/aDh/VG\nddQdCNVYIofNQSZqMpgEKe7keUqQKeGWLdYJ75b/G8PnjS1QsniSWM/NLZDu\nPRK/7vxwrFp41iUpphLIWs9qBD7+yTJULnOdu7AAsvrls8jK62Tva0mSb+ub\nmtOU+SPNqLY4Zal2YPpICnTSmlWiUGNJVze+2tdEHnC6dMvrjvdR2baPGmGI\n6FcN4aE70XbYXzwQam2mCxfs3nijMbrGydUYjrRLxtmGxiOOntp8qjQBgpYf\nWzCGI25EuyxVNzaDtMM2+dil/z79wuU4BFc4pxah904ipMXPPVM+VLHQ12lr\nF488ulDhAo8MDYpwYexyLKq5ujDjl5Wu6RWoXOh1QZyh3nscduXO8PU8lOsg\n3N5K969F8aqmonySFsObVEaoTsoSbRf0o2qBlWihEXunZvlFaY1gYeKdT5r3\nxOtRu2pLqq9jncUiKGQhOCUzMTBov7DL1qBzjW3aHDGOBzpORh8T3ihIdqgj\nG+naOzw//fEwi3ooJWYXoBX/eBRjTNAjcTwkLUX9TnGkReMj3mIVpeZwwlou\ngRvX\r\n=Z3w5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"3e052e60b708ce23845e590212d85998064e461d","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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","@fortawesome/fontawesome-free":"^5.14.0","@types/mini-css-extract-plugin":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/balena-electronjs_1.1.2_1609257000959_0.43987429575764736","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4":{"name":"balena-electronjs","version":"1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"b7ebdf037f7ef4fdf48be1e6f2e897f7c613ef2e","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4.tgz","fileCount":52,"integrity":"sha512-ENGrrUmaTy1rAuX0uFFDl7JQSjCAifTa8OZvGPf5JhMy/vFVnkENJfEBfx5Y7sd8I6YBQYQWcz3Zq6yE2DcEog==","signatures":[{"sig":"MEYCIQCk7dUHzWPIdihu4j6LxmM5bz3KrdTQ9B4JJEB+AqxVJwIhAI5VvYe0S2hHtT/vsJg5AviBHFvW3TG5HW91mZw398Ra","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7F+XCRA9TVsSAnZWagAAr3AP/0XNgBJ2O9vn1oAOoa8f\nmSx3fx6Nemr7YvyqT76AzENRh33RF6jsI47W/HjvTg2Kg2Armitiu120Jy/2\nTpRD9qZFMy8LWCXDF5jrvn9SFEeIXFNjQ9DdyebCWsGgbYvQIpwWtnc3Ko/H\neyXAeo09oMDWYU/q0EAdN1iUVNYexZyOn3EEyKtVkMtLk+z5tcPRjMx+Ni/A\n1HMJk+wQPdKG9lOZLd/yUtTNrqyNa5Y4tZ5NFM5fiM7lh21+HsC1Br6pPNWk\nRO3FPhNWPLwAyBFsLQuyPRUlA1RbfLn0O61VQaK8hkOzmwGaF+gIi3g1LdUJ\nHsxakcs5iXZjJ9pRoWgXYmCjr2ugTzaIs3irT1YTRZIb04u1Bbr14n59J45J\naambSuU453aYWD/EkTzxOhsVddecYRUl4FWIVsxy2wslKWfeQEDlmzoBeW/p\n6b9eaO3SDNM6hTA9EwakAY76uRhQDSzrtTlIOfEqLUQf8Nw6GvqB/uFldtTG\nWeN/cMxZ5bwLCTwN2C5wwmqT4Ilc5sP3zYevNj3CyXISsqjCkBlYRojRQ1JX\ntpiVE4C6KlahgBj57BTK2/UfpZvQoPru6EhoH3D4joz64JmT9xVQuPOOHZsC\n1SGKgrcsQ7y1ubRgp7w0HpvJ4YQLPYTf8ADQ5eYvtw4GJy64y+1IxLOaIAPA\nbyvd\r\n=9ufu\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"1777f0dfe2317726eb664f808c6720ed6f94a6c4","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4_1609326486803_0.3334690252413979","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.3":{"name":"balena-electronjs","version":"1.1.3","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"92489efe4d064bf2da763dc2859b792ba9eb554b","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.3.tgz","fileCount":52,"integrity":"sha512-oobPGumzd/MYWyIc/PjtC9KjGTR2DrNB3NrGBt3rMmCuhtWJCVdgZcbi0oE8GUvW7re4pm4YsmtfxO50aQ/7hQ==","signatures":[{"sig":"MEUCIQDq2mk4eiphNvKo935cs8HAI5ONzCwXmgZg6jxyyexQrQIgXuqknJgL1PwP3ZXioc42WXUjcW2TDwmNxGx9foZEZOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7GCrCRA9TVsSAnZWagAAlXkP/RButyZh5XydsebSthho\n00AtP0i2mszg6fSzmCUlfTgOO1GQQbibLJ5UXcLvkSMTg3cr5fdGhcDyO0iZ\nqZlCqkMcT54cptWuDP7pj/Qs/CGqr/RnrP9+E0hyFlPivMpntsw1EZ6jb71i\nylKSRnVaaoiQKvp7oAJzwOgT/GBr6NegMxBMSOjrnwvmqXqCp6eI3Xr7CD2w\nnDU3cOowY7hIwm0lqSIEEvhJJYqR7iTNGdKeus+QVvSN4KHvAhmeLmsNZzbl\n7oC9t4VQ6S5kvTc7KfBwyw9WDKfM0UqPADz09Gk84HzMVedWMW/FpRQrpwzq\nSIud2V6MWafoBLAsnZfuWz8QcidzfE15yQ2P722U0X/egXZjTA1MN9thulLU\npnY5o2ump0fR7n3CYKoOW+dK9Ur0YAgoGweTaKSugRl1exhE5ewesXGmdUPM\nT53K96WQohG8B/YzXXRM3pVr0FWqoDxLdp3y4vzgQIz9Q5Y9Iz5ZTa8Un/Ze\nNfbJBFeEZYG0k9odSPCd2qOd2CFYA3MglW9vPPtCb9l2q7DXqRWkIaXbDIcD\nnGe0oBueWippovMOUex+PfYbWoDIZapqhsfRfqdv9N5aYQzY5IpTygHV4T69\nvETbSsMPwVwg+zcEzrOAaimXynMLhKX+TLYbjSN2MPadI3Etg2r/aqIZL3dE\npzKd\r\n=zpW1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"8cba9fc2d3d8e2c4ed327f484c698cf62bbd3d8c","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.1.3_1609326763430_0.7447458251524495","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac":{"name":"balena-electronjs","version":"1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"bc5eab17ea1410d01f69edba452ce021bd8fda37","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac.tgz","fileCount":52,"integrity":"sha512-p81XVa+JCdi0S1gVhvmOb/eB9WA5UVdtUHOfIT4ikd962Q0oeIWZU4Rvk11SPWePA7uds1M0ZZoiklXXCc3BCw==","signatures":[{"sig":"MEUCIQCybp0ehWMhs3d2BhxFDmAUc4HIFyK0ET/gHyUmnfxrOgIgND2gpvEftxeTN2I8ecwSj6Nr5SAJSQADflsJcTH7Q38=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7G4bCRA9TVsSAnZWagAA5RoQAKJMLPqJh7oC+7nxSiJB\naU7RNv4D3EAjIoufo1AOsYba3AaSNsafNv4XjsDa3Kg8Rnqc0zLI1BU1M92W\nCYeN+/LwEDiyeZHXdFejQkdQts185qCrPOUaht0Dlj/XwMkD2NDaLM7GMWy4\nex0sJohOqNHxBGSxRyV2C8yDeShQCPk0qDJ28twBeSpayUGEONuIc6QWAZeZ\n8qmnuwHz7LpHvBSuP3TObtc0Ylye73X3eOUROZZD9BVofKGLXTlQPfaqwmgH\n1gAXLBe43Ihx9/Y7Muu3YP7vZFU1qy/fBK/dqz6hbpYe9974QiaHyuHXyJcd\neR8w25z7hQ61EsQ+jJeSFiEvKlQ0fgMyLO3ThiCj9MAcZkBFzR+NEOWDwnt3\nVQ/e6MhQEOMyEQJU4AGOdSY8IWgRLAtGa6nMuKSOnm6S1l3w7yV4GYAf72I1\nggRI3h+z1PoQ9pHF9A65iRU3VDZrzVXWq4thLv5+vJCUQ6PN5ebtIXuZGW3Z\nuMOcc7zSUr3KcIunQ9dZV3cHUDMNmKx3AwmCs+XZAlRPJCuA6RrqN8pozSrN\n5RxYPbOxRv2vm2tRbonSsapMy2RsOg892hE0kzRFz7+F0p9EYpq7aXwuMOuj\nhaMafeu3dXpI++W5nWpd2zydRxWe/ViMAC69yoXgCmP9ZoQ5IDgV+UkQTjf9\nNQ9L\r\n=Q/ca\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"08716e5bd83691ef86a07687d9f23bc42d5da4ac","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac_1609330202570_0.529610977862973","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.4":{"name":"balena-electronjs","version":"1.1.4","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"72bd1861299eed230d0a5cc7d224d4e0ae2d3b33","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.4.tgz","fileCount":52,"integrity":"sha512-h5jV/yyVjmm0BKbyKJLXPYTfjosX/ksEtHt5YXZ0+fVSL3DK3spgB7z7vuPpWqemd7ztBGa5fiQEvq3LPyiDbQ==","signatures":[{"sig":"MEUCIQCZoX73FMwFIYtLsDhKf5Pk70Bm7TiJOeROrhiqaQSwUwIgNrEuCbuhXd4BY/8DdR2a0SMA1MFn+KtV0MtuXjUWVQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":679666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7G8qCRA9TVsSAnZWagAAP7QP/RdHGdcygXAMKta8NthF\na1bFoNtZv37nWzDStuJ91XBQWEzvv+ddw79vFMA/qr2Dx6qI3SSGkS2prr3N\n8CxGJ6rQbyI2ViEGHzlhpjaxjxuBgf8G0HNCTIbDAnC9InTyJMUBBhQvppF9\nWBO/r5W4dOspaLb97LzRSR2PbSnZxFsAfQp2Ef6TKT5LzdcAxOvA1GWGYt1R\nCz4AucObZZ5eLvSt/3fAMtBdeAKUgNvBw7XeidyyyC4LQTQw76qzO+vw8wID\n0A332BKv4AmUnYgUb/8XgAuedhhkeeDo/CohvGNkHor3T46onr+7gIpakMP/\n7Ne8Ids/qZJSNAXeAxkqPPnMg3pAtD3H9AZt0hTvLGeCyhLMM5qqyII+qW3Z\nNDb3/dlJqtu0yIw6fssYfnQtPFGHjVuiiuG+gobBDx09SMs0B9mCEOI9z58y\nVSkvnKbEz3KQwMFgMm181mYocO+yvf1a98eJakR+c6CyW/XkEnRx18b1ZmEk\nc7SiR6SbNooBt7U+Ma3ddif38ntsEJd+r86XlhnrBdqeH6l7INIcehPeIk4i\nJLQPUB8PDtPtWv77sGzxYi+hY/K8ba3PfXG2XANyejsoqcYO8y9f/DICCgfH\nGJ5lAlwGL6QRn2lW8LLXR+d3LdsUxoGrqtyBC3FuR0J3GC66oC1fwL93uR3b\niANg\r\n=wxD4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"993d7db163b914687ece82db69b6488345c9496c","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.1.4_1609330473989_0.42106252450157444","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c":{"name":"balena-electronjs","version":"1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"5f0f37d572756c32911fcb9a7ec20b8a5699150d","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c.tgz","fileCount":52,"integrity":"sha512-6PULkEY2hwt+3RU9L86Kb+0k15Kt77cquAo3oNjtfO864/4r4CXlyNCEvL41kpARZLEnUuMsR0YxKP6GthrVnw==","signatures":[{"sig":"MEUCIQDXol3UyL5qOpxcMOPqzr9T0f5YxzbxEViFznzpc2tr0QIgWcpyXXEVNLcdfEYwmwo72Z+irMt1zBg6GYoo/UNIWFA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":680203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE91NCRA9TVsSAnZWagAAmxYP/1yAKwGeSHYumGk05adg\n1loCesz3PQqvSlmxqVTC7spijRoomXCfu2L3O3eTOOHCei6dnrbmGP7hEKWo\nk9g+UEjI6Kx6jyCt6DfVkG20RB+PcDg5Z2cwxGZb9RavIXV4j9cYl2dbYMJV\n35saxNgHy2W/rDOzOd/8L5SoL7VKh7eA2N0wTtU8OwRCg30VYZK9f3kmtwfK\n8y796LcZWmBQT9lPB1MSIxevNe4YiDvKhNsNe9pbl4Fmbw1Ck7qo8AHbmHA1\nAsgRzb+c/i6tQ78PxZXo4Jf3XY3JRzH00UFJwXfMxCRtYJeUtKSMnzyRyldd\nvVjsGKR5IUVq1QJTUOP1eTbm35JtlXGadl6CncbUabUF9JVFZCfSQzjdffEo\n6gTBhipQMuOVCCBqWELvNakq678suT55rX/zG9WB1WqGhdTwM7tkWvhRFQb4\n/EBBWLrH782RhG7addisVsXnLYDuen/Y5KucSgB6WCWyZOaX9yfoff7yTDJ5\nes2N67ZBwubBa3fyzr7eKltorFpDYdDZMG/hDan/A6jWcneaGJdECxolzEYk\nXQVFGXmGNZB4ozM7Z7SepkyUYX4dz36p9IPSd61twzjnRsZEZMS/i7LKQ/N7\nUWPNE1HN5XvnU232q55W0IVARev6WMdbrnTWWDhIxNhJc/gJBuJbKjJtq+oy\nhod9\r\n=75dr\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"7a251178b96b709ab3bf4f7dad11c90f0c62722c","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c_1611914573115_0.681022662360959","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.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f":{"name":"balena-electronjs","version":"1.2.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"00ff0a3946d8702cbac46f39dc83172f6b9a7bac","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f.tgz","fileCount":52,"integrity":"sha512-FhG6hXn11BSUwtBMyYuwQanC1mTlA5mKzl3LBQl2S2yhZ7/FQ4g1cw9fhWyJfRp7ZtMFtR5MMNOB56Jsf8AbHA==","signatures":[{"sig":"MEQCIB7Sh/e6Qi2GMPRR7s5MH8GjnniVVfjCIL0K3US7AdB9AiAJv7wqVWJcY8OuXkQJZKGoSqXn/nG44U/wXnwdRVsF+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":680334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/x3CRA9TVsSAnZWagAAuXcP/0u5GeqWKwsOl4jfaqmr\n60CoHrDntVzoVhDpLT1dMiXGuSaod141BNoBIq8Xu1WyphDmwZ3AhxzZcwUb\nJc94b+9MA6fPdnqs2UlWxq8711up99U8ir4rJpaFrVeLqDtkntscTrwMzLP+\noMdEeR3OPN1pUheUbGJYtRB1Tkwfaxx9v7inKvUjCtFE8JGSoxPaLHCvl8C3\nlESXJgaZGrscWCN9fSvv4k+gKTP7Mz8xbcoNVx6oJ/1qWfOXykG0SO9GLbGW\nsOSeiwdEwkgkPlxdAPLTevSY7zs9vumNUpijjoQvt/TBuMpSCkofRwFq6q4P\nf9cw4gaTSYfyp6h4oKLPccXstHOftLcvl6rbtgkTddKcgSgomeII6otVBN4y\nSBXMl0MbyLUNCTYxNLJzEFzBbXmqNOpMxwVp0qOePQZ8gTIo3NSgWhj1Sjyl\nMvcJCaym4GVm5QaH1DgjGKX8D3UNWM+BmcPQLOq0jo3ChNZqZIOKhcKlRb/k\nKdET2dzYs4HgX9id9PlqedzFYMQqbFOeNkVKabbkmhRefinDbnbQ32gan9kJ\ngmlsqQtWVjWnHTme/u+7MduHTXhDHVd9zxs9BxCeVisJA3fBXJMJtHx45Cu9\n+qsB8LUXjb/35SqBgqmdfKU0NpW/ZPkU46Mk4pQqPwMUjFyKRLqISayDTt+t\n3V9v\r\n=FBYy\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"227f061ee2bace25063f928f8cbcec4374781f8f","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f_1612184695103_0.301057400758187","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.0":{"name":"balena-electronjs","version":"1.2.0","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"9d3a898ea1c15f2a1a0bf432457b03b767d275c6","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.0.tgz","fileCount":52,"integrity":"sha512-QkavM5VumVNyROv9YUDc8g59u2u+Lwn6+gmbKI+feGKSdxlGjvUNTe3sWxR4IlUggXNR796a02nJZm1LyzVJOg==","signatures":[{"sig":"MEUCIAaZAo4PCTGUy5AnjiJVCthKQO1m+YqbCurQ3yy4qu/zAiEAvn3UbJd7SelZhF/L5xUV00KWklzBLZZ+2D2MstjwwLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":680271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/6fCRA9TVsSAnZWagAA+eMP/jP2YUj9HPXQv1MY0wcn\nE3hlsoicJWaaY7oz3j4Nx2dC+R5ePmXCW3Eff/dJvNEh9TVgdBtoW+rkF4XS\n12Rg74IAqiAfLKZqTK4PCeeh+tKQFxvFanU5n3fvvf/XyOK0GgKNi0Kx3z+3\nbTnAP8q1A2hb83gTh+4AVTtl6alkAfG4E5BjZXSPAxv0nOHORh0I5s0+unal\nGSYvRKGRstgs3Z9axEtbHhSpjlII0huCB4vmVtp+nL95xsasDfSEBJ+/rLV5\nQHVivyUuzc7W2/Vik4aSmLZ+PEeROtSZ4UJgDVbRMOatK2LwJfgDpm2JkI21\n1SaEJ2OkhhD6oYFOQP1DI/vNrGgZeAv8CYqJrU3dBw/IbaiFsHlcco/XGwNr\najly0CKHCzyNaocahGySrHYzwJt8imUgoGiRdkfANGtWfaOwyAbligLlnDWY\nhMFwCxIMZOmrelmf2DbygtyU/aaREkvfYpBM6qLpOhrWnQdvQ9eICoHFNwY9\ntnrl0+YXOKDrNKTDbiwmA8rLQ+UpdB6VU8QkM++sNSGm2hrjrWPj4qrkcZsq\nkY2D/FM8Vl3Y22hLTgIqe62+sxyE66VlWudkWWft59N0cqaofNziESsWCNml\nWAUGoWMH7A61s5D5+XHiOMy5aflbzFj41GWGzvWbRp1P6yL5e7aD2UqfrRqw\npKIC\r\n=dwh3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"af759ef067eada99c04aaa9f540bd8e09775447b","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.0_1612185246531_0.6889681681532469","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.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290":{"name":"balena-electronjs","version":"1.2.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"bf68fe44ccff0e00ec59b97c056e6e4a8f7a2003","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290.tgz","fileCount":52,"integrity":"sha512-/Fi/PT5xl8CfCt0moZvRX0xA/m5VIvdv1bS1pHSxKO6QqGjyXlATAEZZZM3WMR34nNKPndr9xPi4YTWf4mzJOg==","signatures":[{"sig":"MEYCIQCwwOE+M0dN70bvr3bKch2+kvJ22jNVQDNwCmpymjQAXAIhAPuPRdlfnl3Z9ueKFzLKr85FzNjzlhdXVFSY8kPMrlL7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":680439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGBDvCRA9TVsSAnZWagAAk3oP/1kY1KebDl/RxbKiql6P\nxUItkBhh16b2amMdTFxKPwu9jQ8n0fxtLizDXMr6g+O1dGolod7ypxHbzbaC\nE5h8oC46vwI/gFwaQFY6uwMFg35IUIIQzgEW4e6gJoMKUBDvnOj1uLLU/BOS\n22iquutg8Ja01wIYA2hiDWTHfu31ulHCjz27ksPGEbZhO35GpTaSQfwsZUJl\nUDIWErwq3mggxm7rvyuw1CmskF2+XlgDrufU4jtt06t17IhVgpYYinYkzLtJ\n2dm9IwxgnDQgtDk3TMa7mPAT0uVu+7ND/bmRsDmLO8z6oaPdG0gZMbWwH5Zd\nFpfmf0w8VHpZDthrz1LdFx35IudPzY/r6ghnVmLW4Yjuw8xkt28DfpUdLymn\nx1LQESPLnEoXXHyBEfjKA7WtoOmPJ94tXAQ0CHEIjGrCmBXKRyjneXZdtSVn\nDVcFE3Kt0mreqdgUxE/ZjNdt92eKIrglON+bjW9ozMyexXlv1dQkU/uuYZ6f\nMLzsbQcZzrIHqQ5NjbgbA7GC8i+oZE6SvzZN/clpcAoSRMAE3AGQRjJQrxEI\n4/6GW0N/jamDetkQ+bmb+uMm918QankymZnpsjexlwt1jTcJJkC+WiOih2pG\n+RbvpGX2MizWZmLRqsVw++gDBNzq2kkcCklCEmLXAyCO0edz96Fw0h8N4f+h\n6k0/\r\n=5ICA\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"ab85a54d88f35fac4e7440ca90191cbd65b57290","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290_1612189935358_0.48411133587620303","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.1":{"name":"balena-electronjs","version":"1.2.1","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"ef9ad160efa3bd1e07ae32adcde5273a06c82de8","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.1.tgz","fileCount":52,"integrity":"sha512-HBYEODVzgcimQzdMZzzPYROKcMrGd1GmpCDjwecrqJPsNiUQQjOl0rZY1qoA/r7xp/pvmglCeRJUGXew1zCwyA==","signatures":[{"sig":"MEQCIAQ3CpVC47pyfnVNEt2/8XyuQ/mpxEa8Q0eUSYS8+OtVAiAHE0KrLZopLYcQkOwucZEGOmwSwKQ39OxT9bS3O8v4aw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":680362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGBHVCRA9TVsSAnZWagAA0zIP/j/VqJ+98mWgnUFcYm9V\nxmtuY+OyUHCo7oFDNcqYuhk6rw64dCX4GU60mdtzaYmqbiJ0A/0r9iMJhgag\nhZOpb+ntQhoKDiIOQxsYYcRUmGcGUkxXiPPwndTLscsqzSFnTimQVd/tVq73\nbfbm1AfzMQn9uth5j2woCxB579OxTI9ASNS2ZZ2w+R+/vYo4gmN0xKM4SAF/\nkvI3ccOjoK5e9lzBAQmwIywQEUNLhhsZz+5Zf3pdj5PZYc4xpVSDKY7R3TZF\nZ9JewexIqH5dGH6zYB12h+8YEwLrzTjgUnbybVnzaw+c1mG6HkYpBNEakMkE\nEb9Y/gHIvg1rxQ/j6cr0td6WCtzidy1XbvRXPlxuNoIroaOgIzRyd410yJOa\n//MTi2w+kflJGWSzKQxWBmN1PxJnEGbKAf7CVmJLBFOlZGHCwmIVx84FW1F6\nk41looWZJF0pEek5TDX4rcMAwvyDaMbQP3rJ0Ab1Q4XgiQSxdIkXF8L5bWVg\nnT42WMYvBww196O3IWdU/1wIeTeVLoT8+NQpL27D7uQr2AoejOPlRwgLX+kx\npG+0zBP/JLpXG/gIIYvsukW1HF1LFJzQLj/v7BXBFTdQYns9G9+J4MZdpVAt\njgZQHOYXDgQX27X+MqF9RaEd2ZKrmyRd/b59D6qh+mXzL6P30kzeDs9qgIKx\ndYSo\r\n=+0IR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"64d062a339608125f4bd83a7133ec74f2342ed5b","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.1_1612190164642_0.3966796698449695","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.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d":{"name":"balena-electronjs","version":"1.2.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"f5e5c8bb7286dc04b8822e962fbc9c9baca6f378","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d.tgz","fileCount":53,"integrity":"sha512-tvwWXALnYWMXP0ScILiLZBbewp/0EioiGA0ZyB0ypkTxaPorNgO4CajzNy1wfPk5icoDniNb2ozg55y5GQxs9A==","signatures":[{"sig":"MEUCIBsmI4vbTRuIdpjMyWupUXUc+SyStseqaSjS+y/NaLtTAiEAxyrd28DKHkgyn8oqVnHWwt023GJFZJJMcDm/AhBkWTM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":684570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGpfsCRA9TVsSAnZWagAAhykP+wV0QRo8bdbNXOXWxjDa\nb2i4TMhGwnN7FVY+dFAYAbBaP1IfY06YiCiqXViDYQXDp6vIc6ENmqhNDavb\nvBMBQGwEk9zKr4NYWEyvFtu707YF6A8nCdRBtxeQJ6Kl6s5oset7fJhiO27Y\nAQaMOY/cICR74M55+stdAf2WGh/oaMh1PioYeTo4pVRStPLyzEqEJRRkrlBi\nS2KjYklTDj4pymAn4IYVDNTHf1U2DXhs6rAJbh6TYdg3nwhqgkk74tVoZeIa\n0EaynsR4PQeK3yTbu5rCg873A16i80afsS2FHuAP1/t8YeqNMSFSB8uQMZsV\no+aRCdjzfq47JbVo7DXy8P1y3a2lLLRfSDarpu0No+gCTYKTf/MU9vTxHoIh\n0dZD8mCNvDMogfNgM9oQMVfJyEpll9Qf9+ZohfDyA6l7UJC2vIIpqHM8mAcF\n2jczyflkJGK6jA2UaTYctk5pVLgqBkLT06oD2x4/lL2GqDoD7bu0QvHoE8i5\nY1aRHrUIKWfqd+01k7OQcFneb5Qvn/X2DOeBTgsm8Dj3DNVMJm6nKGH66JRe\ndR4dEx77Ya1tAhaEwlKjvzbKP9/rD9lDxYGDVWoTwCb1+7oDexqYfFrQeqli\nylTEevHS0AoZuVwsVso/0UUT5lJp+u5/FBcBiUJgfJUV/DchdHIXOdCczBfZ\nqH2A\r\n=cw8W\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"3f58475460678c4a9dbf799a88edc4e68c92687d","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d_1612355563909_0.17130351306686054","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.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5":{"name":"balena-electronjs","version":"1.2.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"e87d6952308adb80fea2adb3e177e41990c30790","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5.tgz","fileCount":53,"integrity":"sha512-kudNgvv/lfAJ2kkrwULBSQZ/oaDqpZUdghAwlwi7QH51rBu4rpv9zXIVnq4SW36Cmqtna6L23RZn4RaezrFXaA==","signatures":[{"sig":"MEUCIBVPLxRfL2wZ0n7ka32PkYuunP7TCrbu9lvGvD6i5itUAiEAzhfCDEkJtBInJUQxinFRfcYDZrew7gYNbLcM+kBBPfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":699636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGpiZCRA9TVsSAnZWagAA8wMQAJZrxdARUCj5baeZs5Gh\nI9FGunnnoiarH4R+Ck/vWmlWEfmTkdDOniHUtio+xBGXKFlPbH4N6xXoa4n+\nDeP5mMJgJkYaVbIZgu/eAiApBUxYMbjFgD4rTp+p8lgXikpvwBzcHBMlNsEX\nsqQ8Ihpf/iZdI8f7sklrpVIwuPsSrsvggyGthL9EXzrJslndVN2wlzby7Fuj\nng1HgSt5Dmvsq/ZbKGJqKczNYd1/snA/0WVW5TxIFJH2/e2rkY8bWbDHNw4z\nD8Fs0uIEETdc7daFRUTHNGD3UirXM1SWpvFghKOVS9FtHqu0tiLUgBImzOjm\nzo0k1aoy3asdFhIII0tjIoOtOzpAMviyNffmGBtyhwXq5yWAzdtZl9wAMuLB\nPFlsXx9xIe0xiHL3VLGtTUtXHj9N/qrZ+MUc1Dm/lH5Xv5iAEHHsNd19JNCw\ngoVnyrX5UeeH+4x/KGh6/zpefsQOzsdfPsvT3V+d6TSO/UdWBrct/yOAJExh\nIsxIXDk7XLUEmZIbZo+muFrkqcQ1fp0Omo/DZkYApb45wAPel8qthPzfte8S\nNLyHRcg0DWU4SYArKaIyQ9vz+FEXFOfSLKkuVDReIHSVYkBmOhcc3VapNoAs\ny2l2ohnxHIplktFSzVEk/eNMPmY+bdkoZhaZFpkzeaIRJgOQYZt4XnG5t9aM\nBHbb\r\n=Y808\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 * [clickclock](https://github.com/zpfvo/clicklock) is available in `/usr/bin/clicklock` and will be run when the screensaver goes on\n","gitHead":"c361de0bb211076aa11fc0eed1a898e1e87ee1f5","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5_1612355737318_0.4114128866448554","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.2":{"name":"balena-electronjs","version":"1.2.2","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"d9778acedf5c274d5735a0950bc1a72d0cd6cb7c","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.2.tgz","fileCount":53,"integrity":"sha512-equbsn8nJPRr7ILUHXH5s3J9vFU4wYEv7DZ1Clh/3sG3punrJxucVg2BolCKX2E6QzCf1kKcyBbEH0dRxI0smA==","signatures":[{"sig":"MEQCIE7AgxJrbN6/JNqVw5ODvgvhz0WDT1NS5g5IfrdF38QXAiAlcKvtwFtlzE5AM6wgk+9W8ljqengr8wfz+orgNgOLwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":699570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGplZCRA9TVsSAnZWagAAiHYP/0FQ7edLyTW2XdWA/xXb\nKg3b6XtkS6f+unOJjd+TTB4HO7bODKZt5fceONwUSnfqt8QcsraYKkgg6Emg\nFcE5O4KoD3924aSuu888h+2LHGbiw3u96Dw0J1osPF6atiUvBx83jsOso4bg\nAFukhxQ0PE8lOMlNiQq+OwDQBDw6phRUPyrRGmssneXmoJsyGGHTSydlfZwW\nnD6zTj+a2WUZL2KnlF2ALLYgr9Y7BMGKzxvb0AiCPUq42nvgTYTYPX5vVD0V\nGRhtznkr9Z/WWZAYTl0YBDW4NC+v+YDak2yvHstWxj8FdSD8/2dUOBQIi+NF\n7+78oacjUp238nJhOVcf7ArBR4awSW74dRhWK0OJx+Ozcmdsjo5Z56Su0xVE\nGwLViDAiSMvXWSIdg92tTUk+zoBRgHoblPfWU7r9qhqPZCLJNDAe5MasQCbK\nFZqRsEsrXBNMsSCGjMtEBqGlLrmgfwt7xvCULJI9hllMGTQPuXfPxwuICx8P\n2xr/vWl28yihMZXm6wmv/nzOnfRK0s6brAkUZEEuh+izRiFkDttnUA1upKQX\nBQnJD8C5SVkt81w9j9eRxnuGeptx+ngQk8G1A0mXP5D6OL+H1e+EnCFLHEyz\nIy+xEbS+vIJ+XsZP/keSoUJPqLTfNTNz2l3WteLonTJDSlXB84D94rkQ07Mo\n1eDS\r\n=mK8A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"gitHead":"f684e7df8a064b0e2e2b63e3b23f69d0fda4c355","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/balena-io-modules/balena-electronjs.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":"^9.4.0","lockfile":"^1.0.4","dbus-next":"^0.9.1","react-dom":"^17.0.1","rendition":"^19.0.0","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.3.0","@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-electronjs_1.2.2_1612355928926_0.8758392502418955","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-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb":{"name":"balena-electronjs","version":"1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb","author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","_id":"balena-electronjs@1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"dist":{"shasum":"de61bb140637d0f958a9f8a9ed477a016ef3432c","tarball":"https://registry.npmjs.org/balena-electronjs/-/balena-electronjs-1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb.tgz","fileCount":53,"integrity":"sha512-hHNcOAj07X4jrfJeA3q6LvVj8I2mRmOEaVOo7Ix2bDZiWCEujeIRy8eaHAmRWBDwDf4qV6Uj1MrZDFb9s7kNwA==","signatures":[{"sig":"MEYCIQDafwKENSC+ugtQyxNgsfy+Zn4Obu1k8hETVNWfQBIp6wIhAIFsa6/zVDpjI9oPbK+ZP12dfZNubahHiNyhlBq79Ef6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":700774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQOCKCRA9TVsSAnZWagAAt/8P/A6MKuJsLRvQfTVu5rwZ\nnvgUENMEfFa3gog/bZksKX4RIgMk9U5TcQF3lQ8miGtxafgcVyQLATM0x+uq\n6a3uWMIU8Qtm1KSecbJPXxdCXgYZ6QPSohwdXd4GCZR8L32ApPSmoDjElKc7\nxkN0yBXId0yMfAD6yGeLz6y0Hved5FV/vYXF4mqqT7b6USBNjIzLA1KF+tFo\nT3Ql1Ai0W31yWsfWzecSiXiJXrLHrAh7ZFpErAl6qatikge5i6+VljuNhylz\nNWTpHlWcSDduCIpYmwlLqMRbh4jHipKRA2lQX5U7BsO5xh4OX+ojRJ776MHl\n+UIzUwo0TeOJeR1C6zL8sVfOZqHf+EO3/W+rHdrIOl7d/GmuFezlY1GNDOQ9\niWegZiumifS+RIz7TEn41n5Y+8idY2omWqUGeuMHXAbGgq9UR7zGvb0Cx5M0\n+LvairuSPSgW9YREun0BaxN+csKQM+gPlS9akgJI9SHh6cLyXPtCJIyGD0v6\nl+HB1ffR+CCHzALlPre0iS3U6NSKdBgJHx5OhR5F7FlhsooR9W2BMlkd5O4f\nxtFkj8FGnbxvGg7pxNRaWSuRqtPg/oLTlo0TWfBSwBTQXHVEw5qmnIlbkAzX\n0K4805mb1cftDDHtHGvXE7NaDO87XDJDaP/MMEnAlQOTXEDQQJuX5XJXR4oc\nQwhB\r\n=zCHo\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":"3051371fcaa9159244e14aa51012dc080340d2eb","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/balena-io-modules/balena-electronjs.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":"^11.2.3","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-electronjs_1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb_1614864522045_0.35265492308882673","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":"2020-06-23T14:22:48.964Z","modified":"2026-01-29T12:53:07.768Z","0.0.2-updates-54add51f73ac97434df38edd233cb4efc4104098":"2020-06-23T14:22:49.220Z","0.0.2-updates-6afe62c967524ed21b4c67bd6444f014685182f4":"2020-06-23T17:12:49.606Z","0.0.2-updates-f0fa358ac2bbfa876e8b1522c55b169adabde6cc":"2020-06-23T17:21:52.106Z","0.0.2-updates-b467ae67186df5de35266595d262b2c1bc869131":"2020-06-23T17:27:06.186Z","0.0.2-updates-16dcb751bf06615b1213ae475c3545fb4a7f0b25":"2020-06-24T13:02:13.498Z","0.0.2-updates-3d1000192e4f553e05c11ff73413eddad1365314":"2020-06-24T14:16:46.251Z","0.0.2-updates-db64191c657061ade3eea9dc0fd96b90f5e6b077":"2020-06-24T14:26:10.804Z","0.0.2":"2020-06-24T15:09:25.154Z","0.0.3-fix-dockerfile-7074b8af5dd80bc1244842c0194e9a6645e079a9":"2020-06-24T15:49:20.913Z","0.0.3":"2020-06-24T15:52:04.176Z","0.0.4-umount-if-ejected-6213b2fa8ad33829b683e5332abfa9e51ea4e2df":"2020-07-01T09:56:04.535Z","0.0.4":"2020-07-01T10:12:56.941Z","0.0.5-change-env-var-prefix-b1ee66313186b6d79b0d6d2f1827ab63edab9f18":"2020-07-02T10:13:34.865Z","0.0.5":"2020-07-02T10:16:27.157Z","0.0.6-create-mounts-root-4b9f329666509a2bbb95aace3275ffecae597d17":"2020-08-19T16:55:45.053Z","0.0.6-dependabot-npm-and-yarn-sample-app-electron-7-2-4-60d6f16f5ada5b8448e25ef52ebddd086b129d31":"2020-08-19T17:04:15.066Z","0.0.6-dependabot-npm-and-yarn-sample-app-lodash-4-17-20-ed9fcd5b13e4186a999b3040bff463b7212b2f81":"2020-08-19T17:04:26.645Z","0.0.6-dependabot-npm-and-yarn-elliptic-6-5-3-45fdbc06d13886b3963a0ac854c04149f0a56e3d":"2020-08-19T17:04:34.132Z","0.0.6-add-missing-tsconfig-d74efe9adbd5ab60d6fb49861cdc0798578d2a1e":"2020-08-19T17:16:22.024Z","0.0.6":"2020-08-19T17:20:59.451Z","0.0.7-remote-debugging-97a30690e36ac72c3065e91d5b5a1a369e11554d":"2020-08-20T12:03:44.824Z","0.0.7":"2020-08-20T12:07:52.797Z","0.0.7-simpleproxy-865df63fc1d3de118b459334b3d5e41864a0b117":"2020-08-20T13:16:41.323Z","0.0.8-simpleproxy-12b02a382e05894c143cdcb63511c8d5f9da7c20":"2020-08-20T13:19:48.752Z","0.0.8":"2020-08-20T13:22:56.821Z","0.1.0-update-buttons-7e2c35b22868b09d194a85c5479b0666ca3640b5":"2020-09-25T15:48:07.215Z","1.0.0-update-buttons-91190101ee9e8153cf59127973be3702eec74e33":"2020-10-15T14:41:32.800Z","1.0.0-update-buttons-8409dad96402a003f13c561750f9cd0001c17187":"2020-10-15T16:44:33.278Z","1.0.0-update-buttons-405dd5c16cd28699c83c65ac15ccccb56ec17133":"2020-10-15T16:49:07.693Z","1.0.0":"2020-10-15T16:53:35.358Z","1.0.1-fix-build-d56b0355f8a0475e61e8d95149d4baec370dab1b":"2020-10-15T17:40:13.944Z","1.0.1":"2020-10-15T21:40:20.582Z","1.0.2-screensaver-on-off-b32530ad497bf06b250278b1141c4bdd82dc94d0":"2020-10-16T11:47:06.623Z","1.0.3-visual-fixes-2d91bad4c30a7538b76d5347b5291318ff157222":"2020-10-19T13:33:15.539Z","1.0.3":"2020-10-19T13:40:30.317Z","1.0.4-scaling-f5a2eb98d53b771856f5f00f31a3971ca7bcf172":"2020-10-21T15:10:24.430Z","1.0.4":"2020-10-21T15:14:29.843Z","1.0.5-electron9-3-3-f0e16b85b69f492b1d5da3941dcfc587afeff0cd":"2020-11-06T13:52:42.777Z","1.0.5":"2020-11-06T14:00:29.859Z","1.0.6-build-script-3bd9d44dbceed8713cb09e1940dcdffaaafa3703":"2020-12-11T16:55:26.863Z","1.0.6-build-script-98adfb664cbf66694d01cbd13a3671987cefb83b":"2020-12-11T17:04:16.669Z","1.0.6-build-script-21592af2645b3252a703ae69ea55b71ba9325b0e":"2020-12-11T17:24:11.116Z","1.0.6-build-script-36813db8337ad5291b5983df1cb2491b4c35b8ba":"2020-12-11T17:50:57.848Z","1.0.6-build-script-88773fe9c167c7459e5d1dbbbb5767ccfb19340b":"2020-12-14T18:14:25.570Z","1.0.6-build-script-38656f805176aa7631fd918ffc86cc518e0c2afa":"2020-12-14T18:41:02.068Z","1.0.6-build-script-af7149a3f7d2f5af2bce2a947ee1431f10ba83e6":"2020-12-16T18:04:48.083Z","1.0.6":"2020-12-17T11:59:16.378Z","1.0.7-update-build-instructions-958b50831479bf50039b94c87a4d9d0077179d28":"2020-12-17T15:08:08.267Z","1.0.7":"2020-12-18T12:02:16.659Z","1.1.0-update-lock-66b798d9059221d1809cf28ba4246b678a64f4f5":"2020-12-21T12:01:25.425Z","1.1.0-update-lock-4fce9c461f294d4a768db8f247eea6f75d7b08b0":"2020-12-21T16:39:43.659Z","1.1.0-update-lock-d2f9b195ad4103094d6e3f865b9676d6fd9efbc2":"2020-12-22T19:07:44.226Z","1.1.0-update-lock-44451a8fd33d1172d7510d75bdf2dfb39c6394c8":"2020-12-23T13:51:35.077Z","1.1.0-update-lock-b8084151a2920ace542cf21d78c691f825ad2c01":"2020-12-23T14:01:07.370Z","1.1.0-update-lock-83afd07ecc460338faa6aba2ce5d203312d8a264":"2020-12-23T17:27:15.601Z","1.1.0-update-lock-ac092101e0894e6a1b89b3008c3369e034912786":"2020-12-23T20:25:02.246Z","1.1.0":"2020-12-24T11:29:11.513Z","1.1.1-webpack5-0788dc16604373c2b567ed5df04e4e7afd42c1a2":"2020-12-29T11:55:55.866Z","1.1.1":"2020-12-29T12:01:54.973Z","1.1.2-fix-screen-after-restart-0f7862f6c2abbd5d8e4e73c16ea1de709ef3efa0":"2020-12-29T15:46:50.390Z","1.1.2":"2020-12-29T15:50:01.141Z","1.1.3-dont-minify-1777f0dfe2317726eb664f808c6720ed6f94a6c4":"2020-12-30T11:08:07.017Z","1.1.3":"2020-12-30T11:12:43.670Z","1.1.4-screensaver-off-on-start-08716e5bd83691ef86a07687d9f23bc42d5da4ac":"2020-12-30T12:10:02.967Z","1.1.4":"2020-12-30T12:14:34.163Z","1.1.5-add-brightness-filter-7a251178b96b709ab3bf4f7dad11c90f0c62722c":"2021-01-29T10:02:53.386Z","1.2.0-add-brightness-filter-227f061ee2bace25063f928f8cbcec4374781f8f":"2021-02-01T13:04:55.272Z","1.2.0":"2021-02-01T13:14:06.725Z","1.2.1-always-show-ok-button-in-wifi-modal-ab85a54d88f35fac4e7440ca90191cbd65b57290":"2021-02-01T14:32:15.534Z","1.2.1":"2021-02-01T14:36:04.782Z","1.2.2-add-versionist-changelog-3f58475460678c4a9dbf799a88edc4e68c92687d":"2021-02-03T12:32:44.165Z","1.2.2-add-versionist-changelog-c361de0bb211076aa11fc0eed1a898e1e87ee1f5":"2021-02-03T12:35:37.722Z","1.2.2":"2021-02-03T12:38:49.098Z","1.2.3-electron-11-3051371fcaa9159244e14aa51012dc080340d2eb":"2021-03-04T13:28:42.252Z"},"bugs":{"url":"https://github.com/balena-io-modules/balena-electronjs/issues"},"author":{"name":"Alexis Svinartchouk","email":"alexis@balena.io"},"license":"Apache-2.0","homepage":"https://github.com/balena-io-modules/balena-electronjs#readme","repository":{"url":"git+https://github.com/balena-io-modules/balena-electronjs.git","type":"git"},"description":"Kiosk mode for electron apps","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"readme":"","readmeFilename":""}