{"id":21889377,"url":"https://github.com/irtimmer/thewall","last_synced_at":"2026-04-10T23:59:09.882Z","repository":{"id":257968162,"uuid":"831716504","full_name":"irtimmer/TheWall","owner":"irtimmer","description":"TheWall is a Nuxt-based web application designed for managing and displaying content across multiple screens","archived":false,"fork":false,"pushed_at":"2025-01-18T16:26:51.000Z","size":519,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T20:46:42.115Z","etag":null,"topics":["wall","webextension"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/irtimmer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-21T12:20:38.000Z","updated_at":"2025-01-18T16:26:52.000Z","dependencies_parsed_at":"2025-01-12T12:29:02.373Z","dependency_job_id":"c88b1deb-a937-4b14-bae9-7228f1dd0e7d","html_url":"https://github.com/irtimmer/TheWall","commit_stats":null,"previous_names":["irtimmer/thewall"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irtimmer%2FTheWall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irtimmer%2FTheWall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irtimmer%2FTheWall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irtimmer%2FTheWall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irtimmer","download_url":"https://codeload.github.com/irtimmer/TheWall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244898407,"owners_count":20528335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wall","webextension"],"created_at":"2024-11-28T11:24:02.776Z","updated_at":"2026-04-10T23:59:04.827Z","avatar_url":"https://github.com/irtimmer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TheWall\n\n![Screenshot](docs/images/screenshot.png)\n\nTheWall is a web application for managing a wall of screens.\nIt can show multiple web pages, images, and videos on a large or wall of screens.\nLayouts can be created and changed on the fly using a drag-and-drop web interface.\n\nThe output is displayed by Firefox running in fullscreen mode.\nTo use a grid of screens, NVidia Mosaic or AMD Eyefinity is advised to be used to create a single large display.\n\n## Usage\n\nTheWall is a web application built with Nuxt.\nTo run the application, you need to have Node.js and NPM installed.\n\nTo run the application for development, follow these steps:\n```\nnpm install\nnpm run dev\n```\n\nDue to CSP and Frame-Options headers, by default, you can't embed all external websites.\nTo circumvent this, you need to install the browser extension, provided in the `extension` folder.\nThis extension will remove the headers from the response, allowing you to embed any website.\n\nWhen you host the server not on 'localhost', Firefox may block cookies of shown websites due to Enhanced Tracking Protection.\nTo prevent this, you need to disable Enhanced Tracking Protection for the TheWall server's domain.\n\nYou can download and install a signed version of the extension from the [Mozilla Add-ons website](https://addons.mozilla.org/en-US/firefox/addon/thewall/).\n\nThe wall computer can access the rendered wall by visiting `http://SERVER_IP:3000/WALL_ID`.\nYou can make TheWall fullscreen by pressing `F11`.\nTo allow TheWall to run fullscreen by default, you can set the `full-screen-api.allow-trusted-requests-only` preference to `false` in `about:config`.\nThis will allow TheWall (and any other website) to request fullscreen mode without user interaction.\n\nIf you installed the extension, you will be redirected to the extension options page if TheWall is running on a different origin than http://localhost:3000.\nAs a security measure, you need to set the origin of the server on the options page.\nIf you want to allow injecting custom JavaScript, you need to enable the `Allow JavaScript injects` option.\n\nThe control computer can access the control panel by visiting `http://SERVER_IP:3000/WALL_ID/control`.\n\nWhere `SERVER_IP` is the IP address of the server running the application, and `WALL_ID` is the ID of the wall you want to access.\n\n## Limitations\n\nDue to security restrictions, websites can't be totally fooled into thinking they are running in as a top-level document.\nThis means that some websites may not work correctly when shown on the wall.\nFor example, websites that use the `window.top` object to check if they are running in an iframe will not work correctly.\nTo circumvent this, you can inject custom JavaScript to change the behavior of the website.\n\n## WebRTC\n\nTheWall supports WebRTC for sharing your screen with the wall.\nThis feature should work out of the box, as long as the wall computer and the control computer can directly communicate with each other.\nIf the wall computer or the control computer is behind a NAT, you need to configure a STUN and/or TURN server.\nThe STUN and TURN server can be configured in the `config.json` file.\n\n```json\n{\n  \"public\": {\n    \"iceServers\": [\n      {\n        \"urls\": \"stun:stun.l.google.com:19302\"\n      },\n      {\n        \"urls\": \"turn:yourturnserver.com:3478\",\n        \"username\": \"USERNAME\",\n        \"credential\": \"PASSWORD\"\n      }\n    ]\n  }\n}\n```\n\n## Security Considerations\n\nEnsure that the server running TheWall is thrusted and not accessible by unauthorized users.\nTheWall does support basic authentication by creating a `users.json` file in the root of the project.\nThe file should contain a array of objects with the following structure:\n```json\n[\n  {\n    \"username\": \"admin\",\n    \"password\": \"password\"\n  }\n]\n```\n\nIt is advised to run the application behind a reverse proxy with HTTPS enabled if you want to access the application over a network.\n\nEveryone with access to the server can change the websites displayed on the wall and inject custom CSS and if enabled also inject custom JavaScript.\nThe extension will also reduce the security of the displayed websites by changing security related headers.\n\n## Copyright and License\nCopyright 2024 Iwan Timmer.\nDistributed under the GNU AGPL v3.\nFor full terms see the [COPYING](COPYING) file\n\nAvailable under alternative licensing terms upon request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firtimmer%2Fthewall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firtimmer%2Fthewall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firtimmer%2Fthewall/lists"}