Skip to content

oleksandr-balyshyn/deskctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deskctl

A native GTK4 + libadwaita desktop controller for a standing desk, built with Rust and Relm4.

The desk itself is driven by an ESP32 module. This desktop app never talks to the ESP32 directly — it's designed to speak to a small proxy server that relays commands to the desk and streams its state back. For now that link is mocked locally (see src/device.rs) so the UI has a realistic, animated desk to drive while the real proxy server is built out.

Features

  • Live desk visualization — a hand-drawn, animated side-view of the desk that rises and lowers smoothly in real time.
  • Hold-to-move controls — press and hold to raise or lower, release to stop, just like the physical buttons on the desk.
  • Sit / Stand presets for one-tap height changes.
  • Routines — schedule automatic sit/stand transitions by time of day and day-of-week (every day, weekdays, or weekends), fully editable inline.
  • Settings — proxy server address, connection status, and a cm/inch unit toggle.
  • A splash screen that simulates the initial handshake with the proxy server.

Screenshots

Main Settings
Main page Settings page
Routines Routine editor
Routines page Routine editor expanded

Project layout

  • src/main.rs — entry point, CSS/logging setup.
  • src/app.rs — the root Relm4 component: window shell, page navigation, wiring.
  • src/device.rs — mocked link to the desk (stands in for the real proxy-server client).
  • src/desk_canvas.rs — the animated cairo-drawn desk illustration.
  • src/routine.rs / src/routine_row.rs — scheduled routine data model and its list-row factory component.
  • src/settings.rs — app settings (height unit, proxy address).

Running

Requires Rust, GTK4, and libadwaita development libraries installed.

cargo run

Roadmap

  • Replace MockDevice with a real WebSocket client to the desk proxy server.
  • Persist routines and settings across restarts.
  • Connection-lost / retry handling on the splash screen.

About

Native GTK4/Relm4 desktop controller for a standing desk

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors