aboutsummaryrefslogtreecommitdiffstats

deck-it

Turns an Android tablet into a second monitor, a stream-deck and an always-on control surface for a Slackware Hyprland desktop.

A web page on the tablet has tabs for system stats, music, windows, OBS and LLM/build status. A second headless output is streamed to AVNC as an extra monitor. Everything runs on the PC and reaches the tablet through adb reverse; there is no cloud, account or app-store install.

Requirements

PC - Slackware-current with Hyprland (Lua or classic config) - Python 3.11+ (python3) - websocket-client (obs-websocket) - adb, wayvnc, openssl - playerctl, wpctl (PipeWire), wtype - optional: qrencode for Wi-Fi pairing

Tablet - Android with USB debugging or Wireless debugging - AVNC for the extended display - a Chromium-based browser for the web app (install it from the menu)

Install

git clone https://git.danix.xyz/deck-it ~/Programming/GIT/deck-it
ln -s ~/Programming/GIT/deck-it/deck-it ~/bin/deck-it
deck-it

The launcher creates the headless output, starts wayvnc and the server, tunnels them to the tablet, and opens the dashboard and AVNC. deck-it stop tears it down. For the dashboard alone, set enabled = false under [display]: no headless output, wayvnc or AVNC.

Over Wi-Fi, pair once and pass the tablet's Wireless debugging address:

deck-it pair
deck-it wifi 192.168.1.50:41234

Keystone's settings window has a deck-it page: a Start at login switch (it adds deck-it wifi --wait to hypr-theme's autostart) and every config key, launchers included, with a Restart button to apply a save.

Usage

  • Tabs: Dashboard (draggable/resizable cards, each foldable to its title bar), Windows, OBS, K1C. Swipe the content sideways to change tab; ⟳ at the top right reloads the page.
  • deck-it install prints the exec-once line for USB autostart.
  • config.toml holds the defaults: display, Wi-Fi address, workspaces, launchers (desktop ids), OBS websocket, llm-cost-dashboard URL, build VM host, hardware overrides. ~/.config/deck-it/config.toml overrides any of them key by key and needs only what differs; keystone writes it.
  • The OBS tab is a stream-deck: scenes, sources, audio sliders, transitions. Long-press a source to open its properties dialog in OBS.
  • The Windows tab has workspaces, icon launchers, and a per-window ⋮ menu to close it or move it to another desktop.
  • The K1C tab follows a Klipper printer through Moonraker ([k1c] url): state, progress with the slicer's model preview, temperatures, camera, and a red emergency stop that fires on a press and hold.
  • The screen stays on while the dashboard is in front.

License

Copyright (C) 2026 Danilo M. danix@danix.xyz

GPLv2 only. See LICENSE for the full text. Portions derived from tabdeck (MIT) are noted in LICENSE.tabdeck and NOTICE.

Development Approach

This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.

All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.

The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.