{"id":20760988,"url":"https://github.com/tophercantrell/anneclock","last_synced_at":"2026-05-27T12:32:04.655Z","repository":{"id":60020092,"uuid":"540640069","full_name":"topherCantrell/AnneClock","owner":"topherCantrell","description":"The awesome Anne Clock","archived":false,"fork":false,"pushed_at":"2024-09-01T12:04:04.000Z","size":9809,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T17:18:25.740Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/topherCantrell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2022-09-23T22:46:08.000Z","updated_at":"2024-09-01T19:42:07.000Z","dependencies_parsed_at":"2023-10-16T03:52:47.540Z","dependency_job_id":"fab2701d-4149-47b4-a1d0-fab669eeaa69","html_url":"https://github.com/topherCantrell/AnneClock","commit_stats":null,"previous_names":["tophercantrell/anneclock"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2FAnneClock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2FAnneClock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2FAnneClock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topherCantrell%2FAnneClock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/topherCantrell","download_url":"https://codeload.github.com/topherCantrell/AnneClock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243076603,"owners_count":20232438,"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":[],"created_at":"2024-11-17T10:17:03.820Z","updated_at":"2025-12-16T10:23:46.306Z","avatar_url":"https://github.com/topherCantrell.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Anne Clock\n\nThis project is a website designed for absolute positioning on the 10.1 inch display\npanel. The Pi runs the webserver and launches a browser (kiosk mode) to the site.\n\n```\nhttp://localhost:8080/index.html\n\ngit clone https://github.com/topherCantrell/AnneClock.git\n```\n\nThis creates `/home/pi/AnneClock`\n\nThen from within the repo:\n\n```\ngit pull\n```\n\nUpgrading the site is easy: update the git repo on the pi and restart.\n\n# The Display\n\nhttps://www.uperfectmonitor.com/products/raspberry-pi-case-with-screen\n\nRPi fits inside. 10.1 inch HDMI with sound. 1280x800 pixels.\n\nThe touch screen works right out of the box. No configuration to do.\n\n# Audio\n\nI disabled the onboard headphone jack so that the HDMI output was the only option.\n\nhttps://www.instructables.com/Disable-the-Built-in-Sound-Card-of-Raspberry-Pi/\n\n```\ncd /etc/modprobe.d\nsudo vi alsa-blacklist.conf # This is creating the file\n```\n\n```\nblacklist snd_bcm2835\n```\n\nAnd reboot.\n\n# Auto-starting the Python Server\n\nDrop the `anneclock` directory in the pi home directory.\n\nEdit or create \"/etc/rc.local\". Here is the file if you have to create:\n\n```\n#!/bin/sh -e\n#\n# rc.local\n\nexit 0\n```\n\nYou must `sudo chmod +x /etc/rc.local`\n\nAdd this line to /etc/rc.local (before the exit 0):\n\n```\n/home/pi/ONBOOT.sh 2\u003e /home/pi/ONBOOT.errors \u003e /home/pi/ONBOOT.stdout \u0026\n```\n\nNote the \"sudo\" here; the server runs as root:\n\n```\n# sudo python3 -m pip install aiohttp ; the old way no longer works\nsudo apt install python3-aiohttp\n```\n\nCreate `ONBOOT.sh` with the following:\n\n```\n#!/bin/bash\nrm -rf /home/pi/.cache/chromium\ncd /home/pi/AnneClock\npython3 server.py\n```\n\nDon't forget `chmod +x ONBOOT.sh`.\n\nFor Bookworm I had to disable the mouse pointer completely:\n\n```\nsudo mv /usr/share/icons/PiXflat/cursors/left_ptr /usr/share/icons/PiXflat/cursors/left_ptr.bak\n```\n\nUnclutter doesn't work in bookworm. There are other ways besides getting rid of the pointer, but meh.\n\n# Chromium Kiosk\n\nInstall unclutter to hide the mouse pointer:\n\n```\nsudo apt install chromium\nsudo apt install unclutter\n```\n\nUse `sudo raspi-config` to configure boot to GUI and auto log in, and configure the display to \"non blanking\".\n\nIn the pi home directory, create `kiosk.sh` and make it executable:\n\n```\n#!/bin/bash\n\nxset s noblank\nxset s off\n\nunclutter -idle 0.5 -root \u0026\n\nsed -i 's/\"exited_cleanly\":false/\"exited_cleanly\":true/' /home/pi/.config/chromium/Default/Preferences\nsed -i 's/\"exit_type\":\"Crashed\"/\"exit_type\":\"Normal\"/' /home/pi/.config/chromium/Default/Preferences\n\nchromium --no-sandbox --noerrdialogs --disable-infobars --kiosk --autoplay-policy=no-user-gesture-required http://localhost:8080/index.html\n```\n\nDon't forget: `chmod +x kiosk.sh`\n\nCreate the systemd service file:\n\n```\nsudo vi /lib/systemd/system/kiosk.service\n```\n\nWith this content:\n\n```\n[Unit]\nDescription=Chromium Kiosk\nWants=graphical.target\nAfter=graphical.target\n\n[Service]\nEnvironment=DISPLAY=:0.0\nEnvironment=XAUTHORITY=/home/pi/.Xauthority\nType=simple\nExecStart=/bin/bash /home/pi/kiosk.sh\nRestart=on-abort\nUser=pi\nGroup=pi\n```\n\nEnable the service:\n\n```\nsudo systemctl enable kiosk.service\n```\n\nI ignored a long spew message saying \"The unit files have no ...\".\n\nReboot or use `sudo systemctl start kiosk.service` to start (`stop` to stop).\n\n# Configuration menu:\n  - Theme\n    - Trump\n    - Christmas\n  - Update\n    - check for updates (https://github.com/topherCantrell/anne-clock/anneclock/update.py)\n    - install\n  - LAN connection\n    - ssid\n    - password\n  - Sleep Mode\n    - When system wakes\n    - When system sleeps\n    - Manual wake\n    - Manual sleep\n  - Backgrounds\n    - Pick set (or one)\n    - When backgrounds change (hourly, etc)\n  - Videos\n    - Pick set (or none)\n    - When played (hourly, etc)\n    - Videos and audio scheduled same time -- video wins\n  - Audio\n    - Pick set (or none)\n    - When played (hourly, etc)\n\noption to close kiosk and return to desktop (for development)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftophercantrell%2Fanneclock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftophercantrell%2Fanneclock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftophercantrell%2Fanneclock/lists"}