![Image 1 — [AD] WIP App - Peacock - Display Companion for ZMK keyboards](https://preview.redd.it/v4nf2y0y8w1h1.png?width=1080&format=png&auto=webp&s=d40f5b3d3dcce879292bfb91e8e19025ba62a945)
![Image 2 — [AD] WIP App - Peacock - Display Companion for ZMK keyboards](https://preview.redd.it/nqi88g419w1h1.png?width=1440&format=png&auto=webp&s=33ec460dd8506407b00d33d8a6f631a25e5dd6b8)
![Image 3 — [AD] WIP App - Peacock - Display Companion for ZMK keyboards](https://preview.redd.it/sugh1va29w1h1.png?width=1440&format=png&auto=webp&s=85990baaa06a0ac14bd3d005533c24c7a49681bd)
![Image 4 — [AD] WIP App - Peacock - Display Companion for ZMK keyboards](https://i.redd.it/p4omkoz29w1h1.gif)
[AD] WIP App - Peacock - Display Companion for ZMK keyboards
Hey! I'm currently working on an app for Android that works in tandem with a ZMK module. Module parsers keyboard data into expected payload and advertises it, the app just reads the payload and display data in fully customizable widgets.
Long story short - when I switched from Corne to Charybdis, I was missing the displays. I was inspired by T-Ogura's Scanner Prospector repo, at the beginning wanted to turn my old nice!view into similiar "dongle", but got eureka moment - why bother with seperate hardware when any BLE-enabled device could do it and as everyone right now, I happen to have one in my pocket.
Here is the repo for module that is required to be added to your keyboard: Peahen
Key Functions in Peacock
- Real-time Monitoring: "Connects" to ZMK keyboards via Bluetooth Low Energy
- Widget Workspace: Add, remove, and reposition widgets using an intuitive drag-and-drop workspace
- Sizing & Alignment: Resize widgets and use a snapping system for clean and aligned layouts with seperate configuration for vertical and horizotal orientation
- Fine-Tuning mode: Precise pixel-level control over widget positions and dimensions
- Themes: Apply built-in theme presets, build-in multiple font families
- Backgrounds: Set solid colors or custom background images
- Conditional Views: Automatically switch between different themes or custom views based on the current Bluetooth Profile and/or Active Layer
- Layout Management: Save multiple "Custom Views," and export/import them as .customPea files to share with others
- Interactive Onboarding: A guided tour and "Questionnaire" system to help new users set up their first layout based on their keyboard type
- And many more!
Available Widgets
- Main Battery %
- Peripheral Battery %
- Layer Name: Displays the name of the current active layer (e.g., "BASE", "NAV"), max 10 long
- Layer Number: Displays the numeric index of the current layer
- Active Modifiers: Visual indicators for Shift, Ctrl, Alt, and GUI keys (Left, Right, or Merged, depending on your needs)
- Status Flags: Icons for USB Connection, Charging, BLE Activity, Caps Lock, and USB Logging
- BT Profile Number: Displays the current active Bluetooth profile index.
- BT Profile Name: Allows custom naming for each Bluetooth profile, e.g. Work / Home / ect.
- RSSI: Displays Bluetooth signal strength (Icon and/or dBm value).
- WPM: Numeric display of current typing speed.
- Animated WPM: A GIF animation (like "Bongo Cat") that speeds up or slows down based on your WPM.
- Keyboard Name: Displays the keyboard's Bluetooth broadcast name.
- Clock: System time display
- Timer: A countdown timer with configurable slots and optional device vibration upon completion
- Static Label: User-defined text labels for organization or decoration.
- Custom Image: Allows users to place their own images/logos on the dashboard
- Floating Window Toggle: A quick-access button to enter Picture-in-Picture mode (still needs polishing)
I'm looking for feedback & testers - the app will be at one point available in Play Store, but before that I'd to test it with a little more people than just myself and different hardware.
How do you like it? Do you have some other widget ideas, or maybe you see some other functions that could be added?.
I'm got a Discord server to troubleshot, share ideas and custom viwes, etc. If you are interested to test, DM me your discord contact!