DeskThang
2025-01-26
DeskThang
A USB-connected desk companion that helps maintain focus by bringing important notifications directly to your workspace, without the distractions of phones or chat apps.
The Problems
- Notification Overload: Modern devices bombard us with notifications everywhere, making it difficult to maintain focus and separate work from personal life.
- Authentication Friction: Tools like GitLab’s MFA, while necessary, create constant workflow interruptions.
- IoT Security Concerns: Traditional IoT devices with WiFi chips introduce unnecessary security risks and complexity.
The Solution
DeskThang is a USB-connected device that:
- Features a 240x240 pixel circular LCD screen and programmable RGB LEDs
- Connects via USB-C with no wireless components
- Is completely scriptable through bash commands
- Provides visual feedback for:
- CI/CD pipeline status
- Payment notifications
- System status indicators
- Custom notifications
- And more through simple scripting
Technical Stack
- Host Driver: Written in Zig for efficient USB communication
- Firmware: C code running on the RP2040 (Raspberry Pi Pico)
- Scripting: Python for easy customization and integration
- Hardware:
- RP2040 microcontroller
- 240x240 circular LCD display
- RGB LEDs
- USB-C connection
Design Philosophy
- Location-Based Computing: Notifications appear only where they’re relevant - work notifications stay in the office.
- Security First: No wireless connectivity means fewer attack vectors and security concerns.
- Open Hardware: Complete documentation for firmware updates and hardware hacking included.
- Ultimate Scriptability: Simple bash commands enable endless customization possibilities.
Command Interface
DeskThang provides a straightforward command-line interface:
# Basic Commands
deskthang ping # Send ping command (expects pong response)
deskthang test <1-4> # Run test pattern 1-4
deskthang led <RRGGBB> # Set LED color (hex format)
deskthang image path/to.png # Display image (240x240 png)
These simple commands can be combined with other tools to create powerful automations. For example:
# Turn LED red on failed GitLab pipeline
gitlab-ci-notifier on:failed "deskthang led FF0000"
# Display team logo during standups
at 9:00 "deskthang image ~/team-logo.png"
Project Status: Abandoned
This project has evolved into Andon Lamp.
DeskThang served as the foundation for what became Andon Lamp - a refined, production-ready evolution of the original concept. While DeskThang focused on the core hardware and basic functionality, Andon Lamp represents the complete vision with improved software, better user experience, and a polished product offering.
Key improvements in Andon Lamp:
- Enhanced software architecture and reliability
- Streamlined user experience and setup process
- Production-ready hardware design
- Comprehensive documentation and support
- Active community and development
Visit getandon.com to learn more about Andon Lamp, or check out the Andon Lamp project page for technical details.
Historical Development: The original DeskThang development focused on:
- Implementing reliable USB communication protocols
- Developing the state machine for robust data transfer
- Creating a user-friendly command interface
- Designing the initial PCB
Follow the development blog for detailed insights into the challenges and progress that led to the creation of Andon Lamp.
Demo Videos
- DeskThang Demo Video - Watch DeskThang in action
- Wood Bending for DeskThang - Exploring wooden enclosure possibilities
- Cursor + DeskThang Integration - See how DeskThang enhances the Cursor IDE experience