Skip to content

tschroedter/idasen-desk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ikea Idasen Desk - Windows Controller

Build and Test (Draft Release) CodeQL Release Drafter SonarCloud Analysis Quality Gate Status Dependabot Status

A Windows 10/11 desktop application for controlling Ikea's Idasen standing desk via Bluetooth LE. While Ikea provides Android and iOS apps, this application brings convenient desk control directly to your Windows desktop through a system tray interface.

📚 Visit the Wiki for comprehensive documentation, guides, and troubleshooting.

This project uses the idasen-desk-core library for all Bluetooth communication with the Idasen desk.

Table of Contents

Thank You

A special thank you to all the amazing people who test this application and provide valuable feedback! Your contributions help make this app better for everyone. Special recognition goes to Glakt and other dedicated testers who have taken the time to report issues, test new features, and help improve the desk control experience. Your support is greatly appreciated! 🙏

What's New

Version 0.1.357

  • 📦 Updated NuGet packages.

Version 0.1.350

  • 🔧 Fixed minor SonarCloud issue: '...class should be marked partial...'

Version 0.1.345

  • 🔧 Fixed not catching COMException (0x80263001).

Version 0.1.336

  • 🔧 Fixed restoring theme after resuming from hibernation.
  • 🔧 Fixed restoring theme when connecting eGPU.

Version 0.1.329

  • 🔧 Fixed 'Failed to load settings' error.

Version 0.1.299

  • Increase scroll speed when using mouse wheel.

Version 0.1.280

  • 🎨 Enable support for mouse wheel scrolling inside 'SettingsPage'.

Version 0.1.250

Short description: This patch release focuses on stability and quality-of-life improvements. It includes several bug fixes, performance optimizations, small usability improvements, dependency/security updates, and adds SonarCloud scanning so all code is now continuously checked for quality and security.

  • 🛡️Fixes: resolved multiple reported crashes and edge-case bugs.
  • 📡Improvements: reduced memory/CPU usage in core processing paths and improved logging for easier troubleshooting.
  • 📊 Quality: all code is now scanned by SonarCloud (static analysis for bugs, code smells, and security issues).
  • 📦 Maintenance: updated third-party dependencies and applied security patches.

Version 0.1.182

  • ✨ Added 2 new desk positions: Custom 1 and Custom 2
  • ⚙️ Desk positions can be fine-tuned using up/down icons or arrow keys in the confirmation dialog
  • 🎨 Enhanced UI for the system tray application
  • 👁️ Configurable visibility for desk positions and Stop command in context menu
  • 🔌 Smart context menu: shows only 'Connect' or 'Disconnect' based on connection state
  • 🖱️ Click system tray icon to show/hide settings window
  • 🪟 Resizable settings window with improved window management
  • 📡 Improved Bluetooth LE connection handling
  • 📦 Updated all NuGet packages to latest versions
  • 🔒 Masked sensitive data in log files
  • 🛡️ Fixed security vulnerabilities through package updates
  • 📊 Added SonarCloud code quality analysis
  • 🐛 Fixed various code smells and bugs identified by SonarCloud

View full changelog

Features

Core Features

  • 🖥️ System Tray Integration: Unobtrusive control directly from your Windows taskbar
  • 🎯 Preset Positions: Four customizable height positions (Standing, Seating, Custom 1, Custom 2)
  • ⌨️ Global Hotkeys: Control your desk from any application
  • 🔄 Auto-Connect: Automatically connects to your desk on startup
  • 📏 Fine-Tuning: Adjust positions using arrow keys during confirmation
  • 🔔 Desktop Notifications: Stay informed about connection status and desk movement
  • 🎨 Theme Support: Multiple color themes to match your desktop
  • 🔒 Parental Lock: Lock the physical desk controller to prevent unwanted adjustments
  • ⚙️ Per-User Settings: Each Windows user can have their own desk configurations

Supported Operations

  • Connect/Disconnect from desk
  • Move to preset heights
  • Stop desk movement
  • Configure and manage settings
  • Lock/unlock physical desk controller

Requirements

  • Operating System: Windows 10/11
  • Hardware: Bluetooth LE adapter
  • Desk: Ikea Idasen standing desk
  • Pairing: Desk must be paired with Windows via Bluetooth settings

Installation

Direct Download

Download the latest self-contained executable (no .NET runtime installation required):

Download Latest

  1. Download the executable from the link above
  2. Run the executable
  3. If Windows shows a security warning, click "More info" and then "Run anyway"
  4. The application will start and appear in your system tray

Scoop Package Manager

For users who prefer package managers, you can install via Scoop:

scoop bucket add tschroedter https://github.com/tschroedter/scoop-bucket
scoop install tschroedter/idasen-systemtray

And updating the app:

scoop update tschroedter/idasen-systemtray

Note: The app doesn't have enough stars to be in the official Scoop repository, so we maintain our own bucket (PR #20).

Usage

System Tray Icon

The application runs in your system tray and provides visual feedback about your desk's current state.

Unknown Height - Displayed when the desk height hasn't been determined yet:

System Tray Icon - Unknown Height

Known Height - Updated automatically when the desk moves:

System Tray Icon - Known Height

Tip: Click the system tray icon to show/hide the settings window.

Context Menu

Right-click the system tray icon to access the context menu:

System Tray Context Menu

Available options:

  • Show/Hide Settings - Toggle the settings window
  • Connect/Disconnect - Manage Bluetooth connection (only the relevant option is shown)
  • Standing - Move to standing position
  • Seating - Move to seating position
  • Custom 1 - Move to custom position 1
  • Custom 2 - Move to custom position 2
  • Stop - Immediately stop desk movement
  • Exit - Close the application

Note: Menu items can be shown/hidden in the settings.

Actions

The desk can be controlled through:

  1. System tray context menu (right-click)
  2. Settings window menu (left sidebar)
  3. Global hotkeys (configurable)

To execute an action:

  1. Double-click a menu item (or use the hotkey)
  2. A confirmation dialog appears
  3. Fine-tune the position using up/down arrow keys if needed
  4. Confirm or cancel the action

Automatic Connection

The application automatically connects to your Idasen desk on startup. Desktop notifications keep you informed:

Connection Notifications

  • 🔄 Trying to connect...
  • ✅ Connected
  • ❌ Failed to connect

Settings

Access settings by clicking "Show Settings" from the context menu or clicking the system tray icon. All settings are stored per Windows user.

General Settings

General Settings

Desk Positions

Configure up to four preset positions:

  • Standing: Your preferred standing height
  • Seating: Your preferred sitting height
  • Custom 1: Additional custom position
  • Custom 2: Additional custom position

Each position includes:

  • Height value (adjustable)
  • Tray checkbox: Show/hide in context menu

Tray Menu Options

  • Stop: Toggle visibility of the Stop command in the context menu

Hot Keys

Hotkey Settings

Default global hotkeys (works in any application):

  • Standing: Ctrl + Shift + Alt + ↑ (Up Arrow)
  • Seating: Ctrl + Shift + Alt + ↓ (Down Arrow)
  • Custom 1: Ctrl + Shift + Alt + ← (Left Arrow)
  • Custom 2: Ctrl + Shift + Alt + → (Right Arrow)

Appearance

Appearance Settings

Theme

Choose from multiple color themes to match your desktop environment.

Advanced Settings

Advanced Settings

Log Folder

Displays the location of application log files for troubleshooting.

Settings File

Shows where your user settings are stored.

Desk Name

Specify a custom desk name if you've changed it from the default. The app searches for devices with names starting with "Desk" by default.

Desk Address

Optionally specify your desk's Bluetooth MAC address (unsigned long format) for faster connection. The app prioritizes Desk Name first, then Desk Address.

Parental Lock

Enable this feature to lock the physical desk controller. When active, pressing the up/down buttons on the desk will immediately stop movement, preventing unauthorized adjustments.

Units Till Stop

Fine-tune the estimated stopping distance from maximum movement speed. Adjust this if your desk overshoots or undershoots target heights.

Reset Settings

Reset all settings to their default values.

Note: The settings are stored per Windows user.

Troubleshooting

Pairing the Desk

Before using this application, you must pair your Idasen desk with Windows through Bluetooth settings.

Solution 1: Enable Advanced Bluetooth Discovery (Windows 11)

Some users have reported that Windows 11 doesn't detect the desk in pairing mode. The solution is to enable advanced Bluetooth device discovery:

  1. Open Windows Settings → Bluetooth & devices
  2. Enable "Show all Bluetooth devices"
  3. Put your desk in pairing mode
  4. The desk should now appear in the device list

For more details, see this Reddit discussion.

Solution 2: Use Legacy Devices and Printers

If Windows 11 still can't find your desk using the modern Bluetooth settings:

  1. Open Bluetooth Settings

    • Go to Settings → Bluetooth & devices → Devices

    Windows 11 Devices

  2. Access Legacy Settings

    • Scroll down and click "More devices and printers settings"
    • The "Devices and Printers" window opens

    Add a device

  3. Add Device

    • Right-click in the window background (empty space)
    • Select "Add a device"
    • The "Choose a device or printer to add to this PC" window opens

    Choose a device

  4. Pair the Desk

    • Put your Idasen desk into Bluetooth pairing mode
    • The desk should appear in the window
    • Select it and click "Next"
    • Follow the on-screen instructions

Connection Issues

Q: The application fails to connect to the Idasen desk?

A: Ensure your desk is paired with Windows first. The desk should appear in your Bluetooth devices list.

To verify:

  1. Open Settings → Bluetooth & devices
  2. Check if "Desk" or your custom desk name is listed
  3. The desk should show as "Connected" or "Paired"

Windows 10 Bluetooth Settings

If the desk is paired but the application still can't connect:

  • Try disconnecting and reconnecting the desk in Windows Bluetooth settings
  • Restart the application
  • Check the log files (location shown in Advanced Settings)
  • Ensure no other application is using the desk's Bluetooth connection

Still having problems? Please open an issue with:

  • Your Windows version
  • Error messages from log files
  • Steps you've already tried

Contributing

We welcome contributions to improve this project! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

For Contributors

When submitting a pull request:

  1. Follow the code style guidelines - See GitHub Copilot Instructions for detailed standards
  2. Add appropriate labels - Required for our automated changelog system:
    • feature or enhancement - New features
    • fix, bugfix, or bug - Bug fixes
    • chore or maintenance - Maintenance tasks
    • documentation or docs - Documentation changes
  3. Include tests - Add or update tests for new functionality
  4. Update documentation - Keep docs in sync with code changes

Development Resources

Quick Start for Developers

# Clone the repository
git clone https://github.com/tschroedter/idasen-desk.git
cd idasen-desk/src

# Restore dependencies
dotnet restore Idasen-Desk.sln

# Build the solution
dotnet build Idasen-Desk.sln --configuration Release

# Run tests
dotnet test Idasen-Desk.sln --configuration Release

Tech Stack

  • Language: C# / .NET 8.0
  • UI Framework: WPF (Windows Presentation Foundation)
  • Architecture: MVVM with Autofac DI
  • Testing: xUnit, NSubstitute, FluentAssertions
  • Communication: Bluetooth LE

Getting Help

Documentation

📚 Wiki

Comprehensive documentation is available in the Wiki:

For Users:

For Developers:

📖 Additional Resources

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments

  • Built with ❤️ for the Ikea Idasen desk community
  • Thanks to all contributors

Links

About

Controlling the Ikea Idasen desk using Windows 10/11, C# and BluetoothLE

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors