Skip to content

About

Google Calendar for DeskThing: multiple calendars, touch and dial navigation, and day/work-week views.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CalendarThing

Download releases · Report a problem

Google Calendar on your Car Thing, with touch and dial navigation.

CalendarThing turns your DeskThing into a compact calendar with up to five Google Calendars, color-coded events, recurring events, and a time grid you can browse by finger or dial.

  • Choose 1 day, 3 days, Work Week (Monday–Friday), or 7 days.
  • Swipe left/right to browse dates; Work Week moves one week at a time.
  • Drag vertically to scroll. Release snaps to your selected time increment.
  • Choose 15, 30, 60, or a custom 5–120 minute increment.
  • Turn the dial to scroll one row when the optional client integration is installed. The launcher keeps its normal dial controls while open.
  • Tap an event for its title, time, calendar, and location.
  • View preferences remain saved on the client. Local cached data can remain visible after a refresh failure.

Install from the DeskThing store

  1. Open Downloads → Add Client/App in the left sidebar.
  2. Add this repository’s GitHub URL as an App repository.
  3. Refresh/pull the repository, select the app, download it, and initialize it.
  4. The declared post-install step backs up and stages the client integration. It does not change account credentials, calendar settings, or firmware. It supports the DeskThing 0.11.2 modern/legacy client bundles and stops before writing if either layout is unsupported.
  5. Open Clients → Push staged client, then Restart Chromium on the Device to activate the client UI changes.

The release includes a separate latest.json with DeskThing metadata, a version-pinned runtime download URL, embedded icon, size, and SHA-512 checksum. The ZIP named with the lowercase internal app ID is the installable runtime. The capitalized CalendarThing-source-…zip archive is for development, not installation.

Install the app

  1. Download agenda-v0.5.0.zip from this repository’s Releases.
  2. In DeskThing, open Downloads → Apps → Upload App and choose that ZIP. Initialize the app.
  3. Open Apps → CalendarThing → Settings.
  4. In Google Calendar on the web, go to Settings → your calendar → Integrate calendar and copy Secret address in iCal format.
  5. Paste it into Calendar 1 · Link, enter a display name, and save. Repeat the Name/Link pairs for other calendars.
  6. Open CalendarThing on the device. The post-install step stages physical dial scrolling; push the staged client to activate it. The manual installer below is also available.

Google accounts managed by an organization may hide the secret iCal address. CalendarThing supports Google Calendar’s HTTPS iCal feeds; it does not provide Google OAuth, editing, event creation, or arbitrary feed hosts. Browse up to 28 days backward/forward; the server fetches a wider window to cover the edge of multi-day views. Current merge capacity is 500 events across calendars per refresh. Refresh runs every five minutes; tap Refresh to fetch immediately.

Existing Agenda / Calendar Thing users

The internal app ID remains agenda, preserving existing bindings and feed-setting keys. Back up DeskThing’s data/agenda.json before using an installer’s overwrite option; some DeskThing overwrite flows reset app settings. Upgrade-in-place by replacing app code while DeskThing is closed if you need to preserve an existing setup.

Privacy

Your private feed links stay in local DeskThing settings. Only event data and public display labels are sent to the device. Do not post the links in issues or screenshots. CalendarThing does not send data to HyperXcess or use analytics. It writes a local data/calthing-events.json event snapshot with restricted permissions so the optional ControlThing app can show your next event. That local file contains calendar events, never feed URLs. Remove it if you uninstall CalendarThing and want that snapshot removed.

Compatibility

Tested on DeskThing Server 0.11.17, client 0.11.2, and a Spotify Car Thing running Thing Labs firmware. The client extension targets the exact 0.11.2 bundle layout; the installer refuses unknown layouts. DeskThing/client updates can replace the extension, so reapply it after a compatible update. No firmware flashing is included.

Manual client extension installation (Mac, optional alternative)

Install Node.js 20 or newer. Quit DeskThing while changing its staged client. In this repository, run:

npm ci
node tools/install-client.mjs --assets "$HOME/Library/Application Support/deskthing/webapp/assets"

The installer changes both modern and legacy JavaScript bundles and saves a local backup before writing. It does not modify your calendar feeds or account credentials. Restart DeskThing, open Clients, and use Push staged client, then Restart Chromium on the Device. Keep the Car Thing connected over USB.

If the staged push does not copy the files, the equivalent manual copy is:

ADB="/Applications/DeskThing.app/Contents/Resources/mac/adb"
"$ADB" devices
# Replace SERIAL below with your Car Thing serial from that list.
"$ADB" -s SERIAL shell 'mount -o remount,rw /'
"$ADB" -s SERIAL push "$HOME/Library/Application Support/deskthing/webapp/assets/index-BoMDv8nD.js" /usr/share/qt-superbird-app/webapp/assets/
"$ADB" -s SERIAL push "$HOME/Library/Application Support/deskthing/webapp/assets/index-legacy-DSl9FxfH.js" /usr/share/qt-superbird-app/webapp/assets/
"$ADB" -s SERIAL shell 'sync; mount -o remount,ro /'
"$ADB" -s SERIAL reverse tcp:8891 tcp:8891
"$ADB" -s SERIAL shell 'supervisorctl restart chromium'

Revert the client extension

Each modified bundle has a project-named .backup alongside it. With DeskThing closed, copy the backup over its original bundle and push/restart the device again. A full-bundle restore also removes extensions installed after that backup; reapply the other extensions afterward. Alternatively stage an original 0.11.2 client through DeskThing and push it to restore all client UI behavior. Backend apps and calendar settings are separate from these client bundles.

Build and test

npm ci
npm test
npm run package

The runtime ZIP contains manifest.json, server/, client/, and icons/ at its root. The release also attaches latest.json; the separate source ZIP includes the manual client installer. Node.js 20+ is required for development. CalendarThing itself does not need LaunchThing or ControlThing.

License and credit

HyperXcess code is MIT licensed. DeskThing SDKs are MIT. The unmodified bundled ical.js dependency is MPL-2.0; its license and corresponding source are supplied under third-party/. See THIRD_PARTY_NOTICES.md.

About

Google Calendar for DeskThing: multiple calendars, touch and dial navigation, and day/work-week views.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages