Linak Desk Control is a Stream Deck plugin for a Home Assistant-backed sit/stand desk. It gives a single key fast, live feedback for desk position and height while keeping the interaction simple enough to trust every day.
- toggles the desk position with
input_select.select_next - lets Home Assistant handle repeated presses while the desk is already moving
- initiates the desk controller connection on long press with
button.press - subscribes to Home Assistant state updates over websocket for fast feedback
- shows the current or last known desk height on the key
- keeps the last known desk position visible when the controller is offline
- fades the key icon when the desk is disconnected or sleeping
By default the plugin expects these entities:
input_select.desk_positioncover.office_deskbutton.office_desk_connectbinary_sensor.office_desk_standingbinary_sensor.office_desk_connectioninput_number.office_desk_last_height
All entity IDs can be overridden in the property inspector.
- Pressing the key calls
input_select.select_nexton the configured toggle input when the desk is idle. - Pressing the key again while the desk is moving calls
input_select.select_nextagain and relies on Home Assistant to handle the in-flight target change. - Long pressing the key calls
button.presson the configured connect button entity. - Position and motion updates come from Home Assistant websocket events.
- When the desk is offline, the key keeps showing the last known stable position and height.
- Height values that look like meters are shown in meters instead of centimeters.
The plugin intentionally leaves in-flight target changes and post-cancel behavior to Home Assistant. If reversing or resuming movement after a repeated press matters, handle that in the HA automation behind input_select.desk_position.
- Elgato Stream Deck 6.4 or later
- Home Assistant reachable from the Stream Deck host
- a Home Assistant long-lived access token
- Open the latest release on GitHub.
- Download
com.pedropombeiro.streamdeck-linakdesk.streamDeckPlugin. - Double-click the file to install it into Stream Deck.
- Add the
Desk positionaction to a key and fill in the Home Assistant settings.
Toggle input: Home Assistant input entity the plugin toggles, defaultinput_select.desk_positionDesk cover: cover entity used for movement state and UI feedback, defaultcover.office_deskConnect button: button entity used on long press, defaultbutton.office_desk_connectStanding sensor: standing state sensor, defaultbinary_sensor.office_desk_standingConnection sensor: controller connectivity sensor, defaultbinary_sensor.office_desk_connectionHeight entity: height source shown on the key, defaultinput_number.office_desk_last_height
mise run bootstrapinstalls prerequisites and configured mise toolsmise run lintruns the configured pre-commit lintersmise run lint:fixruns the manual fixer hooksmise runbuilds the plugin bundlemise run installbuilds and opens the plugin bundle for Stream Deck installationmise run install:localbuilds, extracts, and reinstalls the local plugin copy used by Stream Deck
The build uses Elgato's Stream Deck CLI and produces a .streamDeckPlugin bundle in Release/.
CIruns linting and builds the plugin bundle on pushes and pull requestsReleasebuilds and uploads the plugin bundle to GitHub Releases when av*tag is pushed