Skip to main content

Blesk

Tests Code Quality

A Python command-line tool for controlling Desky standing desks via Bluetooth Low Energy (BLE). Blesk provides a simple interface to adjust desk height, save and recall presets, and manage multiple desk configurations.

Features

  • Height Control: Move your desk to any specific height in millimeters
  • Preset Management: Save and recall up to 4 preset heights
  • Multi-desk Support: Configure and manage multiple desks using profiles
  • Auto-discovery: Automatically detect nearby Desky desks
  • Cross-platform: Works on any platform with BLE support (Linux, macOS, Windows)
  • Async Architecture: Built on modern async Python for efficient operation

Requirements

  • Python 3.13 or later
  • Bluetooth Low Energy (BLE) adapter
  • Desky standing desk with Bluetooth support

Installation

Using pipx (Recommended)

pipx install blesk

Using pip

pip install blesk

From Source

git clone https://github.com/danhall/blesk.git
cd blesk
poetry install
poetry run blesk --help

Quick Start

  1. Discover available desks:

    blesk list desks
    
  2. Configure your desk:

    blesk set desk <ADDRESS>
    

    Replace <ADDRESS> with your desk's Bluetooth address from the discovery output.

  3. Move to a specific height:

    blesk go height 1000
    

    This moves the desk to 1000mm (100cm).

  4. Check current height:

    blesk get current
    

Usage

Basic Commands

List Available Desks

blesk list desks

Scans for nearby Desky desks and displays their Bluetooth addresses and names.

Configure a Desk

blesk set desk <ADDRESS>

Sets the default desk to use for commands. The address is saved in your config file.

Move to Height

blesk go height <MILLIMETERS>

Moves the desk to the specified height in millimeters.

Example:

blesk go height 750   # Sitting height (75cm)
blesk go height 1150  # Standing height (115cm)

Use Presets

blesk go preset <1-4>

Moves the desk to one of the saved presets (1-4).

Get Current Height

blesk get current

Displays the current desk height in millimeters.

Get Preset Heights

blesk get preset all        # Get all preset heights
blesk get preset <1-4>      # Get a specific preset

Advanced Options

Profiles

Manage multiple desks using different profiles:

blesk --profile home go height 1000
blesk --profile office go height 1000

Custom Config File

Specify a custom configuration file:

blesk --config /path/to/config.ini set desk <ADDRESS>

Debug Output

Enable debug or verbose logging:

blesk --debug get current
blesk --verbose go height 1000

Configuration

Configuration is stored in a platform-specific directory:

  • Linux: ~/.config/blesk/config.ini
  • macOS: ~/Library/Application Support/blesk/config.ini
  • Windows: %LOCALAPPDATA%\blesk\config.ini

Example config file:

[default]
address = AA:BB:CC:DD:EE:FF

[home]
address = 11:22:33:44:55:66

[office]
address = 77:88:99:AA:BB:CC

Development

Setup

Clone the repository and install dependencies:

git clone https://github.com/danhall/blesk.git
cd blesk
poetry install

Running Tests

poetry run pytest

With coverage:

poetry run pytest --cov=blesk

Code Quality

This project uses Ruff for linting and formatting:

poetry run ruff check .
poetry run ruff format .

Releasing

gh release create v0.1.0 --title "v0.1.0" --notes "Initial release" --latest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

See the LICENSE file for details.

Troubleshooting

Desk Not Found

  • Ensure your desk is powered on and Bluetooth is enabled
  • Check that your Bluetooth adapter is working
  • Try increasing the scan timeout by running discovery multiple times

Acknowledgments

Built with:

  • Bleak - Cross-platform BLE library
  • Click - Command-line interface framework
  • Poetry - Dependency management

Release files for blesk 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for blesk 0.2.2
File Size Uploaded
blesk-0.2.2.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for blesk 0.2.2
File Interpreter ABI Platform
blesk-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 25.7 kB

Release files / blesk-0.2.2.tar.gz

Download URL blesk-0.2.2.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9e6bf7d7f87aa0cb111683d0e298a3ccadb7a62c63328683ec760c4aacad066d
BLAKE2b-256 checksum
How to use checksums
27a8a330e9c01689f81adecb8e32403cdaad069937666293cbcc3249b7750965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.

Transparency log

Release files / blesk-0.2.2-py3-none-any.whl

Download URL blesk-0.2.2-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f1fa185797a7891fd4e537e94a905afbc18f4bf5869fde847e6bee1ac780b47
BLAKE2b-256 checksum
How to use checksums
8b474c0bfe3b3884682d2b904995e984b067b09dbf24cbba5753096eb18d1eef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page