Repository navigation
Releases: silviuk/Lunifier
Release list
Lunifier 2.2.2
Lunifier 2.2.2 Release Notes
Lunifier 2.2.2 resolves intermittent mouse cursor jitter/stutter during normal PC usage by eliminating Bluetooth baseband radio contention through intelligent exponential backoff, cursor activity gating, strict bt_p2p_enabled enforcement, and Linux X11 display caching optimizations across Windows and Linux.
Highlights & Fixes in v2.2.2
1. Mouse Jitter Elimination via Radio Paging Contention Fix
-
Exponential Reconnection Backoff: Replaced the previous fixed 5-second reconnect loop with an intelligent exponential backoff:
$$5\text{s} \longrightarrow 10\text{s} \longrightarrow 20\text{s} \longrightarrow 40\text{s} \longrightarrow \text{capped at } 60\text{s}$$
This slashes Bluetooth baseband radio paging duty cycle from ~50% of uptime down to under 1.5%, preventing Bluetooth HID packet starvation and 2.4 GHz co-channel RF interference on both Bluetooth mice and USB dongles (Bolt / Unifying). -
Cursor Activity-Gated Reconnection:
EdgeDetectorcontinuously tracks cursor displacement. If the mouse is actively moving ($\ge 4\text{ px}$ displacement within the last 600ms), background RFCOMMconnect()calls are deferred by 1 second until the mouse is stationary, guaranteeing that radio paging never coincides with active mouse manipulation. -
Instant Backoff Reset: Backoff automatically resets back to 5.0s whenever you trigger a screen border switch (
NotifySwitchOut), pair with a new host, or start the service, ensuring immediate sync with zero latency.
2. Strict Enforcement of bt_p2p_enabled
- Fixed a bug on both Windows and Linux where background Bluetooth reconnect loops would start even if "Enable Bluetooth Link" was toggled off, provided a peer MAC address was saved in configuration.
- The background Bluetooth client and server now strictly require
bt_p2p_enabled: trueand a valid peer MAC address before initializing.
3. Linux Input Polling & X11 Display Hardening
- Persistent X11 Display Caching: Avoids opening and closing ephemeral X11 display connections on every 15ms poll iteration, eliminating X server socket queue latency.
- Throttled Subprocess Fallback: In environments without native X11 libraries, fallback
xdotoolqueries are throttled to 20 Hz (50ms interval) to eliminate process-fork storms and CPU hitching.
Package Checksums (SHA-256)
Standard Edition (Full Features including Bluetooth Inter-Host Link)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.2.exe |
6.00 MB | AFD2259B7BF4DC65666201493FFB61F5E3FBE25236BFFA1429ED2A4C86206CD3 |
Lunifier-Windows-2.2.2.zip |
6.43 MB | A0A4C7126F8AA1D7C31E81BA3B01AE147FEF411EE1460673EBA3508310219C18 |
Lunifier-2.2.2.0.msix |
6.73 MB | F65C2C619FD19CA22C5D4EFB8EFEB09566B6C495B5978955A8228403A67099AA |
Lunifier-2.2.2.msix |
6.73 MB | F65C2C619FD19CA22C5D4EFB8EFEB09566B6C495B5978955A8228403A67099AA |
lunifier_2.2.2_all.deb |
178.7 KB | 30732C0C7234D5C9E739E9A11BBA67ECA63A20DFB700BE15A8C778FB4D5EA667 |
Lunifier-Linux-2.2.2.tar.gz |
246.8 KB | 88330352A35616ECB8C3A62D7FC9D96FCB389E82781BC531722ED395499CA6DC |
Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.2-nobtsync.exe |
6.00 MB | 0A80DEBA4C55F9E143D6FC6A1B7A9025374B355A42E5443C83969712A0425A4C |
Lunifier-Windows-2.2.2-nobtsync.zip |
6.43 MB | C02431F68BCAA0281CA47B8642BFB04318B9EBA89E53EC297ECA9393FA5AFB87 |
Lunifier-2.2.2.0-nobtsync.msix |
6.73 MB | D26261539332125A4C71D660CC1D28301BD0D87CF98F0E0F59B71B2D214A9563 |
Lunifier-2.2.2-nobtsync.msix |
6.73 MB | D26261539332125A4C71D660CC1D28301BD0D87CF98F0E0F59B71B2D214A9563 |
lunifier_2.2.2-nobtsync_all.deb |
179.1 KB | 1CA73F3FE0190929A2288EC4A87AE69761D0EC2C7A31EF71BB81D9BB2E69624D |
Lunifier-Linux-2.2.2-nobtsync.tar.gz |
246.8 KB | D844D31D383A81F6B00545A29879B4415F0282844ACDCE43ABF177FB77CD8633 |
Note
MSIX Package Naming (2.2.2 vs 2.2.2.0):
Lunifier-2.2.2.0.msix and Lunifier-2.2.2.msix (as well as their respective -nobtsync counterparts) are bit-for-bit identical binary packages with matching SHA-256 checksums. The 4-part quad version 2.2.2.0 is strictly mandated by the Windows AppX/MSIX packaging specification (AppxManifest.xml) and Microsoft Partner Center / Windows Store upload validation (Major.Minor.Build.Revision). The 3-part 2.2.2 filename is provided as an alias matching standard semantic versioning and GitHub release tag conventions. Either package can be installed interchangeably.
Lunifier 2.2.1
Lunifier 2.2.1 Release Notes
Lunifier 2.2.1 provides official Windows Store / Partner Center-compliant MSIX packages built with Microsoft's MakeAppx tool, including authentic Open Packaging Conventions (AppxBlockMap.xml, [Content_Types].xml), distinct package identities for the Standard and No-BtSync editions, High-DPI visual tile/logo scale variants (scale-100, scale-200, targetsize-44, targetsize-24), and updated packages across Windows and Linux.
Highlights & Fixes in v2.2.1
1. Official Windows Store / Partner Center MSIX Compliance
- Genuine MakeAppx Packaging: Replaced fallback archive packaging with official Microsoft
MakeAppx.exe, generating required cryptographic block maps (AppxBlockMap.xml) and Open Packaging Conventions manifests ([Content_Types].xml). - Fixed Manifest Versioning: Corrected manifest generation to strictly update
<Identity Version="..." />while preserving standard XML declarations (<?xml version="1.0"?>) and OS dependencies (TargetDeviceFamily MinVersion="10.0.17763.0"), passing Microsoft Partner Center schema validation. - Distinct Identity for No-BtSync Edition: Configured
SilviuVlasceanu.LunifierNoBtSyncandDisplayName="Lunifier (No-BtSync Edition)"to allow seamless separate Windows Store submission without identity or package conflicts. - High-DPI Visual Assets: Added comprehensive scale and target-size variants (
Square44x44Logo,Square150x150Logo,Wide310x150Logo,StoreLogoat 100% and 200% scale plus unplated 44px/24px taskbar icons) ensuring crisp visuals and passing Windows App Certification Kit (WACK) asset tests.
2. Linux System Tray Icon & Desktop Integration Fix
- GNOME AppIndicator & Ubuntu System Tray: Fixed missing indicator icon fallback ("three dots") on Ubuntu 24.04/26.04 by exporting direct ARGB32 pixmaps over D-Bus (
IconPixmap), setting Freedesktop-compliantIconThemePath, and installing multi-resolution status/panel icons across all standard theme contexts.
3. Ubuntu App Center & GNOME Software AppStream Integration
- AppStream Metainfo Specification: Included Freedesktop AppStream metainfo manifests (
io.github.silviuk.lunifier.metainfo.xmlandio.github.silviuk.lunifier-nobtsync.metainfo.xml), furnishing Ubuntu App Center and GNOME Software with rich app titles, summaries, developer info, homepage/issue tracker URLs, and OARS 1.1 content ratings. - Store Screenshots & Visuals: Embedded native Libadwaita interface screenshots and high-resolution icons into package metadata for graphical software center presentation.
- Package Metadata & Control Enhancements: Added
Homepageupstream links, structured feature lists inDEBIAN/control, desktop window associations (StartupWMClass=lunifier,lunifier-nobtsync.desktop), and comprehensive icon aliases across/usr/share/pixmaps/and/usr/share/icons/hicolor/.
Package Checksums (SHA-256)
Standard Edition (Full Features including Bluetooth Inter-Host Link)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.1.exe |
6.00 MB | EA83B768AFB4B517B377C7181B37B7BE68DDAB0F311D39562BEF028F60DF2701 |
Lunifier-Windows-2.2.1.zip |
6.43 MB | C6B99179AC2428F7F12EC33D66E8D2809A87266FA7F13A9B382B7B3A33AE96F6 |
Lunifier-2.2.1.0.msix |
6.74 MB | 7BEDE1CAF82D967673657E75A01DC1A7A10C25157C456CFDFFC791C5D3575F39 |
Lunifier-2.2.1.msix |
6.74 MB | 7BEDE1CAF82D967673657E75A01DC1A7A10C25157C456CFDFFC791C5D3575F39 |
lunifier_2.2.1_all.deb |
178.0 KB | BC0401CE652399DE633F123365DC97315ACBA79C117F4334823F3FA50D7F07F7 |
Lunifier-Linux-2.2.1.tar.gz |
246.2 KB | 4D42E6AF304415287BC270F80E35E90D1423E5E71A7261CDADC47CCC55D8EF78 |
Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.1-nobtsync.exe |
6.01 MB | 5C9663E10382A860E7FAF81DA721A0A0ED0F057626AD3F0573E7F71FEA47D0A7 |
Lunifier-Windows-2.2.1-nobtsync.zip |
6.42 MB | 39ED1BA13F1D960CB86BF9DF6385258DA03B1F6A7DCA3F27828391E2197478FE |
Lunifier-2.2.1.0-nobtsync.msix |
6.74 MB | B4F63F17905E3CAD3B8EBDEB6F616C53BCFE7BD775FDC8BC982742F7216C2B02 |
Lunifier-2.2.1-nobtsync.msix |
6.74 MB | B4F63F17905E3CAD3B8EBDEB6F616C53BCFE7BD775FDC8BC982742F7216C2B02 |
lunifier_2.2.1-nobtsync_all.deb |
178.4 KB | 9E7C621BE63A7B1F322B2CF154BDCBC8368CDAB258FE60FF0914DF72A74FABA6 |
Lunifier-Linux-2.2.1-nobtsync.tar.gz |
246.2 KB | DB25BD2E13F4B76CA84503F2D4E7A011B93E87438861F244FC3515CA53F182AB |
Note
MSIX Package Naming (2.2.1 vs 2.2.1.0):
Lunifier-2.2.1.0.msix and Lunifier-2.2.1.msix (as well as their respective -nobtsync counterparts) are bit-for-bit identical binary packages with matching SHA-256 checksums. The 4-part quad version 2.2.1.0 is strictly mandated by the Windows AppX/MSIX packaging specification (AppxManifest.xml) and Microsoft Partner Center / Windows Store upload validation (Major.Minor.Build.Revision). The 3-part 2.2.1 filename is provided as an alias matching standard semantic versioning and GitHub release tag conventions. Either package can be installed interchangeably.
Lunifier 1.0.10
Lunifier v1.0.10 Release Notes
Lunifier v1.0.10 delivers official Windows Store / Partner Center-compliant MSIX packaging for the v1.x Python runtime series, built with Microsoft's MakeAppx tool with Open Packaging Conventions (AppxBlockMap.xml, [Content_Types].xml), complete High-DPI visual tile/logo scale variants (scale-100, scale-200, targetsize-44, targetsize-24), cleaned application staging free of macOS .DS_Store metadata, and updated Linux Debian packages.
Highlights in v1.0.10
- Windows Store / Partner Center Compliance: Built with Microsoft
MakeAppx.exe, generating genuine block map files (AppxBlockMap.xml) and[Content_Types].xmlrequired by Microsoft Partner Center. - Manifest Schema Fixes: Properly maintained standard XML declarations and OS dependency version constraints (
TargetDeviceFamily MinVersion="10.0.17763.0"). - High-DPI Visual Assets: Generated complete scaling suites (100% and 200% scale for
Square44x44Logo,Square150x150Logo,Wide310x150Logo,StoreLogo, and unplated 44px/24px taskbar icons). - Cleaned Packaging: Stripped development and macOS metadata files (
.DS_Store) from the packaged distribution.
Package Checksums (SHA-256)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-1.0.10.exe |
16.84 MB | A4DD49757FB019C5EEDDB973F7B9907323600C6DC324521FF2FC70F6F2732791 |
Lunifier-Windows-1.0.10.zip |
21.78 MB | CCF5FBC2A0C31146B912BB46709A3C95706CE69D239AC86233A9652A302BAB1E |
Lunifier-1.0.10.0.msix |
23.27 MB | AEC00DCD402C735D105726F87955C33104E8F1FF7790BDAB43CCB2EF1F15C4C3 |
Lunifier-1.0.10.msix |
23.27 MB | AEC00DCD402C735D105726F87955C33104E8F1FF7790BDAB43CCB2EF1F15C4C3 |
lunifier_1.0.10_all.deb |
186.2 KB | A6A793FC7B0AC9933DB1E31EA73EC488F423DE0F7CC1AB9B208CE9B351DB1749 |
Lunifier-Linux-1.0.10.tar.gz |
327.3 KB | 7BEF29E34C127B491A72B5D1FB6DB2851D72E8349BD1FB5C776B2CA4E10A179B |
Lunifier 2.2.0
Lunifier 2.2.0 Release Notes
Lunifier 2.2.0 resolves mouse switching failures and memory leaks on Windows, introduces the new Standalone No-BtSync Edition (-nobtsync) for both Windows and Linux, brings a redesigned centered tab bar to the Linux Libadwaita interface for crystal-clear readability, adds an integrated logging level selector and "Copy Logs" button directly into the Live Logs tab, and makes the log viewer dynamically scale to fill the full window space.
Highlights & Fixes in v2.2.0
1. Windows Mouse Switching & Receiver Endpoint Resolution (Top Priority)
- WPID Table & Dongle Key Matching: Fixed inverted WPID table mappings (identifying MX Master 3 as
0x4082, MX Master 3S as0x4090, MX Master 2S as0x4086, and Craft Keyboard as0x4069). Standardized endpoint grouping per physical USB receiver dongle by stripping OS collection suffixes, correctly pairing short (col01) and long (col02) report handles. - Instant Receiver NVRAM Decoding: Implements pre-query endpoint queue draining and decodes the internal receiver pairing table (
0x10 0xFF 0x83 0xB5), retrieving paired WPIDs with 0ms latency even when devices are in low-power sleep mode. - Candidate Feature Bursting: When devices are sleeping or their Change Host feature index is not yet resolved, sends candidate feature indices (
0x08,0x09,0x0A) with short spacing without premature loop break, guaranteeing mice (which use feature index0x08) switch reliably. - Switch Concurrency Guard: Added switch concurrency protection to ensure rapid screen border crossings do not launch overlapping switch operations or race on receiver USB handles.
2. Windows Performance & Memory Optimization
- UI Log Ring Buffer: Implemented ring-buffered truncation in the WPF Live Logs viewer, capping character storage at 40,000 characters and preventing Dispatcher thread lockups and memory growth during extended background operation.
- Cooldown Log Throttling: Throttled border cooldown debug logging to at most once per 500ms, eliminating high-frequency dispatcher flooding.
- Automatic Log File Rotation: Added 5 MB file size bounding and automatic
.oldlog rotation to prevent unbounded disk growth.
3. Standalone No-BtSync Edition (-nobtsync) for Windows & Linux
- Dedicated Packages: For users who want screen-edge Logitech Easy-Switching without computer-to-computer Bluetooth RFCOMM communication.
- Clean UI & Zero RFCOMM Overhead: Omits the "Bluetooth Inter-Host Link" tab entirely and disables all background RFCOMM discovery and listener threads.
- Full Logitech Bluetooth Peripheral Support Maintained: Direct Bluetooth Logitech mice and keyboards switch natively via OS HID++ pipes; only inter-computer P2P sync is excluded.
- Packaged as
.exe,.zip,.msix(Windows) and.deb,.tar.gz(Linux).
4. Linux UI Redesign: Centered Tab Bar & Clean Spacing
- Moved the
Adw.ViewSwitchertab navigation out of the congested header bar into a dedicated, centered horizontal container one level lower. - Full tab labels and icons are cleanly spaced, completely visible, and never crowded by window buttons or header controls.
5. Linux Live Logs: Copy Logs, Compact Font & Dynamic Scaling
- Added a dedicated "Copy Logs" button in the Live Logs header bar with clipboard copy and instant visual feedback ("Copied!").
- Reduced log display font size by one size (compact 8.5pt monospace) for clean, readable, high-density diagnostic output.
- Added an integrated "Logging Level" dropdown selector directly in the Live Logs controls bar, bidirectionally synchronized with the Advanced tab.
- Replaced the constrained preferences group layout with a dynamic
Gtk.Boxcontainer, allowing the log viewer (Gtk.ScrolledWindow+Gtk.TextView) to dynamically expand and fill all remaining window space.
Package Checksums (SHA-256)
Standard Edition (Full Features including Bluetooth Inter-Host Link)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.0.exe |
6.01 MB | FD5F75E0F0DDD3470F547F133B5E2EAB7FF7B980F58275D5A4139DD057F9A62E |
Lunifier-Windows-2.2.0.zip |
6.43 MB | A7FFBC302F760545FC6F50C956404116D50061695B6467222F6150B56466C48F |
Lunifier-2.2.0.0.msix |
6.47 MB | C7EC59CF1722500F01C73021D4A4795B99FB13669663BEA866F005EF88A182FC |
lunifier_2.2.0_all.deb |
170.7 KB | 5E6F58D8DC7ED8A998D41B04A4AA9B869A3804B4F03AF8AEEA39BF8E7E0C29EA |
Lunifier-Linux-2.2.0.tar.gz |
239.1 KB | 3A8AFC1CD6433768E5FCDE5EDFBFE02D85386C383AEA40772CA1C25B2DA5018B |
Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)
| Asset | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.2.0-nobtsync.exe |
6.00 MB | 619D3DA0211C61048BB3DF686A9F4F8879D0EC8B52E14EEC854DDBEA6A87AE05 |
Lunifier-Windows-2.2.0-nobtsync.zip |
6.42 MB | 781F79788953B1CCFA9DA2C887660988534C5E81EC4BA414970303573248681A |
Lunifier-2.2.0.0-nobtsync.msix |
6.47 MB | B44780749AFDD4379E34CF953D8E8623C6C70B515BD35382BBCA74C42DDBCD57 |
lunifier_2.2.0-nobtsync_all.deb |
170.7 KB | 83D23E55BCD470DAFEE3D88F8981A26C2B049CDC8A1D6825781E492352D9009A |
Lunifier-Linux-2.2.0-nobtsync.tar.gz |
239.1 KB | 6B4FAE8CD568A312F0084D607B5B47BE1B9B2C13A76ACD9E0B03A45E6DC9D5CA |
Lunifier 2.1.9
Lunifier 2.1.9 Release Notes
Lunifier 2.1.9 addresses critical edge dwell triggering reliability across Windows and Linux, fixes multiple monitor border overlay rendering and resolution scaling, introduces dynamic accent color support with vector-smooth rounded convex border indicators, and adds an integrated "Start minimized to system tray" option.
Highlights & Fixes in v2.1.9
1. Screen Border Dwell Hold & Switching Fix (Top Priority)
- Continuous Cursor History: Eliminated premature history bypasses so mouse motion is continuously recorded leading up to border contact.
- Reliable Dwell Hold Triggering: Holding the cursor against a configured screen border for the configured dwell duration (
HoldDelayMs, default 250ms) now directly and reliably triggers the hardware switch sequence across Windows and Linux. - Return Guard & Cooldown Synchronized: Cleaned state resets so return guards and cooldown timers do not block intentional switching.
2. Multi-Monitor Border Overlay & Resolution Fix
- Eliminated Phantom Bars on Disabled Screens: In multi-monitor configurations where only one screen is enabled for border switching, secondary and disabled monitors no longer display extraneous border bars when adjusting settings.
- Per-Monitor Overlay Windows: Replaced virtual desktop spanning with dedicated per-monitor overlay window positioning, completely eliminating cross-monitor DPI distortion and misplaced bars in the middle of screens.
- Strict Active Channel Filter: Overlays are exclusively displayed for monitors that have active channels assigned.
3. Dynamic Accent Colors & Vector-Smooth Convex Bars
- Windows Accent Color: Border indicator bars now dynamically inherit your Windows personal accent color (
HKCU\Software\Microsoft\Windows\DWM\AccentColor/SystemParameters.WindowGlassBrush), falling back to vibrant Logitech orange (#FF5722). - Linux GNOME Accent Color: Linux indicators query GNOME accent colors via
gsettings, falling back to#FF5722. - Rounded & Convex Geometry: Border indicators feature rounded corners (
R=3px) and a subtle convex bulge (B=3.5px) towards the screen center, rendered using DirectX vectorPathGeometrywith sub-pixel anti-aliasing (completely free of jagged edges).
4. "Start Minimized to System Tray" Option
- Added an explicit "Start minimized to system tray" setting in both Windows WPF and Linux Adwaita user interfaces and saved persistently in
config.json(start_minimized). - When enabled, Lunifier starts directly into the system tray without flashing or showing the main window on startup.
Understanding Dwell Hold Delay vs. Switch Cooldown
-
Dwell Hold Delay (
HoldDelayMs, default 250ms):- What it is: The minimum amount of continuous time your mouse cursor must remain pressed against a configured screen border before a switch is triggered.
- Why it is necessary: Without a hold delay (delay = 0ms), touching the screen boundary triggers an immediate switch. This causes accidental switches when interacting with window title bars, tabs, corner buttons, or scrollbars near screen edges. Dwell holding verifies deliberate intent to leave the screen.
- How it affects switching: Lower values (50–100ms) make switching feel instantaneous; higher values (300–500ms) require deliberate pressure against the screen edge.
-
Switch Cooldown (
CooldownMs, default 500ms):- What it is: The lockout/grace period after a switch successfully completes, during which the screen borders are temporarily inactive.
- Why it is necessary: Prevents "ping-pong" bounceback loops where moving into the new screen immediately trips a border on the target machine and bounces right back. Also gives Bluetooth and RF receivers time to complete packet transmission without RF collisions.
- How it affects switching: After switching, borders are safely locked for 500ms so you can move your cursor inward on the target screen. Once 500ms elapses, normal border switching is re-armed.
Package Hashes (SHA-256)
| File | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.1.9.exe |
6.27 MB | EA8BEB9FF4F9B0F6255C4A99B3BF164619978687AB7AA5C315F38670609184A8 |
Lunifier-Windows-2.1.9.zip |
6.73 MB | 8FF2078457B51C04B99DB7B5167BD8DE3D8707F721237D2C499D410FB55D16E0 |
Lunifier-2.1.9.0.msix |
6.77 MB | 309E0112794CF8764ADD58981CF1E324BFA003612856907A25C2AB554DB292D3 |
lunifier_2.1.9_all.deb |
174.1 KB | CD4D89B18AC097BF47E71A2D42AA13B8097F3D8ACC327E4DB9423C946574A4FE |
Lunifier-Linux-2.1.9.tar.gz |
244.3 KB | 0E6DD3BBFD8575A76F8DE73A378B1177D312E564686FF1AF6B2BAD51E9F563B7 |
Lunifier 2.1.8
Lunifier 2.1.8 Release Notes
Lunifier 2.1.8 delivers comprehensive size optimizations, zero-allocation ring buffer edge tracking, fast-path CPU skipping, visual theme brush synchronization, and runtime dependency checks across Windows and Linux.
Highlights & Fixes in v2.1.8
1. Size Optimizations & Codebase Cleanups
- Removed Legacy Codebase: Purged obsolete root Tkinter v1.x packages and stale build manifests, stripping over 6,100 lines of dead code and unreferenced assets.
- Streamlined Dependencies: Removed redundant
System.Text.JsonNuGet dependency from the Windows engine by leveraging the runtime's native assembly. - Stripped Debug Symbols: Excluded
.pdbsymbol files from all distribution packages, saving user disk space and network bandwidth. - Reduced Final Footprints: The Windows Inno Setup installer executable is reduced to 6.27 MB and the MSIX package to 6.77 MB.
2. Performance & CPU Optimizations
- Zero-Allocation Ring Buffer: Replaced dynamic queue allocations in Windows
EdgeDetector.cswith a pre-allocated 64-item ring buffer and reusable lock, eliminating GC pressure during mouse tracking. - Fast-Path Interior Bounding Box: Screen collision logic now immediately skips all edge vector math whenever the mouse pointer is safely inside the screen interior.
- Linux Process Spawning Hazard Removed: Cached
xdotoolexecutable discovery to prevent repeated 15ms subprocess lookups. - Calibrated Cursor Repositioning: Standardized inward cursor repositioning displacement to 60px across Windows and Linux, eliminating cursor jump jank while maintaining border bounceback prevention.
3. Visual Polish & Dynamic Theming
- Dynamic Version Resolution: About and footer labels across Windows WPF and Linux Adwaita resolve the active version dynamically via reflection/package metadata.
- Dynamic Theme Brush References: Converted device lists and Bluetooth peer lists to
SetResourceReference, ensuring instantaneous contrast updates when toggling between Windows Dark and Light modes. - Flexible Button Geometry: Applied responsive minimum widths and symmetric padding to prevent button clipping.
4. Packaging & Runtime Dependency Checks
- .NET 9 Desktop Runtime Checker: Inno Setup installer now verifies whether Microsoft .NET 9 Desktop Runtime (x64) is present. If missing, it prompts the user and offers to launch the official Microsoft download URL.
- Enhanced Debian Package: Updated Linux package metadata with
python3-evdevandbluezrecommendations, and configured the systemd user service to launch with--minimized. - Automated Test Suite: Verified 100% pass rate across all 52 unit tests.
Package Hashes (SHA-256)
| File | Size | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.1.8.exe |
6.27 MB | DB856741A6C4BCFC128843E40682404D006C5A24D2AE826B869B6CF91676487F |
Lunifier-Windows-2.1.8.zip |
6.73 MB | C7B259D62AAF844B2A66FF602C181438EC07B5A88FE7DBACB35E08381641FEB0 |
Lunifier-2.1.8.0.msix |
6.77 MB | 44236D03AD8D7DB527E70D47421CC9CE29940F30307A397EC991C4580F6AFFA7 |
lunifier_2.1.8_all.deb |
173.5 KB | 4245532040253756299A79534899B8550016470368B73FFA6B6920C26A81FD86 |
Lunifier-Linux-2.1.8.tar.gz |
243.3 KB | 392CCF8F752A1E97D5E251F106F296E653511A29B10DD25A92397299011BA091 |
Lunifier 2.1.7
Lunifier 2.1.7 Release Notes
Lunifier 2.1.7 introduces major reliability enhancements for peripheral switching, eliminates cursor stutter/jank during screen boundary tracking, refines light mode visual contrast across all controls and device lists, and ensures the Linux service persists in the background with system tray integration.
Highlights & Fixes in v2.1.7
1. Keyboard Switching Reliability
- Multi-Burst Wake Transmission: Battery-saving keyboards (MX Keys, Craft, ERGO K860, etc.) often sleep between keystrokes. When switching, Lunifier now emits 3 successive burst packets spaced 25ms apart to wake the peripheral's RF transceiver and guarantee acknowledgement.
- Keyboard-First Switching Order: When multiple devices share a Unifying or Logi Bolt USB receiver, keyboards are now commanded before the active mouse, preventing RF queue bottlenecks.
- Dongle NVRAM Pairing Pre-Scan: Reads the receiver internal pairing table (
0x10, 0xFF, 0x83, 0xB5) to detect paired slots and WPIDs without RF timeouts, ensuring sleeping devices are permanently retained across rescans.
2. Default Cooldown Reduced to 500ms
- Lowered default switch cooldown from 2500ms to 500ms across Windows and Linux.
- Enables responsive and prompt re-switching without annoying delays when touching border boundaries. Slider range expanded to 200ms–5000ms.
3. Eliminated Mouse Pointer Jank & Stutter
- Changed background edge tracking thread priority from
AboveNormaltoNormalto prevent scheduler preemption of Windows DWM and mouse driver polling. - Tightened edge tolerance from 5px to 2px, preventing cursor encounters with scrollbars and window edges from falsely triggering boundary hits.
- Removed the arbitrary 300ms hold bypass that caused unintended switches while scrolling or dragging windows.
- Decreased inward cursor stepback from 160px to 60px, eliminating jarring cursor repositioning.
4. Light Mode Contrast & Styling Overhaul
- Permanently eliminated black text on blue accent buttons by scoping an explicit white
TextBlockstyle withinButton.ContentPresenter.Resources. - Replaced low-contrast light sky blue (
#38BDF8) and light gray (#94A3B8) in device and peer lists with dynamic theme-aware colors (#0284C7and#334155in light mode). - Improved overall light theme palette: secondary text (
#334155), section headers (#0369A1), and live logs (#0F172A) for high WCAG AAA readability.
5. Linux Background Service Persistence & System Tray
- Added native D-Bus StatusNotifierItem (SNI) and DBusMenu integration (
tray.py). - Closing the Linux main window now hides the window and keeps the Lunifier service running smoothly in the background.
- System tray menu allows restoring/presenting the main window or cleanly quitting the application.
Package Hashes (SHA-256)
| File | SHA-256 Checksum |
|---|---|
Lunifier-Setup-2.1.7.exe |
47D191A9D1C56A1351D624BCC4A0E77AF16503C086B57EC28289190DFCB69067 |
Lunifier-Windows-2.1.7.zip |
73D9D40DBBAF7D5EF44B4755FE23E990C92A4D95AE85698A7497CDE41BD6788F |
Lunifier-2.1.7.0.msix |
DB46B13E0022C7CDEA916FF40505117F819FAD4E00074C1A3F9471E497ED968E |
lunifier_2.1.7_all.deb |
815614af9bea066ef534d3acbdf5c1eca7e66dfe35b040e1bf1509b76864a9e4 |
Lunifier-Linux-2.1.7.tar.gz |
7b521cdbdce2601671f011aaa91b62afeb74a4c9ca208bc6ac9c2103bf8ba74d |
v2.1.6 - Bluetooth Fixes, Receiver Reliability, Border Loop Guard & Start Minimized
Lunifier 2.1.6 Release Notes
Lunifier v2.1.6 brings comprehensive feature parity, critical reliability fixes, and layout synchronization across Windows and Linux.
What's New & Improved in v2.1.6 (Windows & Linux)
1. Bluetooth Low Energy & Direct Bluetooth Device Switching
- Windows: Fixed device discovery by opening HID endpoints with query access (
0) instead of exclusive access, eliminatingERROR_ACCESS_DENIEDandERROR_SHARING_VIOLATIONfrom Windowshidbth.sys/mouhid.sys. Added full recognition of Bluetooth Low Energy GATT paths ({00001812-...}) and prioritized vendor TLCs (UsagePage 0xFF43). Implemented multi-tiered Win32 write fallback (Overlapped WriteFile-> synchronousWriteFile->HidD_SetOutputReport->HidD_SetFeature) and 20ms connection-interval repeat bursts. - Linux: Enhanced direct Bluetooth and
/dev/hidrawdevice handling. - Both: Added friendly device PID name mapping (M720 Triathlon, MX Master 3/3S, MX Keys/Mini, K380, K780, Craft, Lift, etc.).
2. Edge Detector Border Bounceback Loop Prevention
- Immediate Inward Stepping & Guard Arming: Cursor is immediately repositioned 160px inward and the return guard is armed as soon as the edge trigger fires before asynchronous hardware switching completes, preventing cursor pinning at border coordinates while hardware responds.
- 50px Deliberate Return Threshold: Increased physical mouse movement detection threshold to 50px (
dx² + dy² > 2500) to prevent sensor noise and hand tremors from accidentally disarming the return guard.
3. Unifying & Bolt Receiver Keyboard Switching Reliability
- Sequential Dongle Switching: Replaced concurrent parallel packet transmission to the same receiver with serialized device switching and a 30ms inter-device pause, eliminating 2.4GHz RF packet collisions on single-radio USB dongles.
- Dual-Report Wake Bursts: Sends both Long Report (
0x11) and Short Report (0x10) oncol01, waking sleeping battery-saving keyboards so they switch alongside the mouse every time.
4. Start Minimized at Boot / Login
- Windows: Added
--minimizedcommand-line switch support to start Lunifier silently in the system tray without showing the main window. Updated autostart registry configuration and Inno Setup installer tasks. - Linux: Added
--minimizedand--daemonargument handling in launcher, and updated~/.config/autostart/lunifier.desktopto launch minimized on desktop login.
5. Modern Native UI & Layout Synchronization
- Advanced Tab Reorganization: Synchronized layout across Windows and Linux—renamed "Connected Devices" to "Advanced", moved "Edge Trigger Sensitivity" and "Hardware & Logging Options" into "Advanced", and added a dedicated "Save" button to the top header row.
- Visual Screen Border Indicator: Implemented live orange border overlays (
#FF5722, 6px thickness) with a 1.5-second auto-hide timer whenever adjusting the active zone percentage slider, changing border edge assignments, selecting a monitor, or saving configuration (WPF canvas overlay on Windows, non-blocking X11override_redirectwindows on Linux). - Package Version Parity: Synchronized all Windows (
Lunifier.Windows.csproj,AppxManifest.xml,installer.iss) and Linux (pyproject.toml,lunifier/__init__.py, About window) project files to 2.1.6.
Artifact Checksums (SHA-256)
| File | Description | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.1.6.exe |
Windows Inno Setup Installer | 61A57DD0371912EC2C8000CFAE7AD7494A1C773C7AEB1B9BB667D95BB7BA3F09 |
Lunifier-Windows-2.1.6.zip |
Windows Portable x64 | 44192E35CD7422392569E4AE7D3DBEC6F758C1F99E0B08B3C01036067A5F9C19 |
Lunifier-2.1.6.0.msix |
Windows Store / Enterprise MSIX | CC0FBA98A08DC8FD79E4F1D8967569509E235EB0F8654D06B4EF2434667770BE |
lunifier_2.1.6_all.deb |
Debian / Ubuntu Package | EAF5BCD04989077C5D621BCC8DEABCEDC58E1A302DD2B61350C785AF03A6465E |
Lunifier-Linux-2.1.6.tar.gz |
Linux Portable Tarball | F3B138796711B62215E2EA9CA0139AA03E3CE9192D2E8710FAFAD900BFC7E03C |
Lunifier 2.1.5 - UI Theming, Contrast & Tab Reorganization
Lunifier 2.1.5 Release Notes
Lunifier v2.1.5 delivers essential UI contrast and readability enhancements across Light and Dark themes, unified button and status badge dimensions, and an organized tab layout for Windows 11 native (.NET 9 WPF).
What's New & Improved in v2.1.5
- High-Contrast Readability across Light & Dark Modes:
- Fixed dark text appearing on blue buttons in Light mode by enforcing pure white text in the button control template resources.
- Redesigned the service status badge (RUNNING / STOPPED) into a high-contrast solid pill (
#16A34Avibrant green /#DC2626crimson red) with bold pure white centered typography. - Replaced low-contrast light green on green and light red on red status labels with dynamic theme-aware high-contrast colors (
#15803D/#DC2626in light mode,#4ADE80/#F87171in dark mode).
- Uniform Button & Status Badge Dimensions and Alignment:
- Centered all button text both horizontally and vertically across the entire application.
- Aligned running status badge and start/stop service button with identical dimensions (130x32px), matching corner radius (4px), and centered typography.
- Tab Layout Reorganization:
- Renamed "Connected Devices" tab to "Advanced" and wrapped contents in a smooth scroll viewer.
- Relocated "Edge Trigger Sensitivity" and "Hardware & Logging Options" cards from "Screen & Switching" into the "Advanced" tab, keeping "Screen & Switching" focused exclusively on Host Identity and Display/Border configuration.
- Relocated the "Save Configuration" button to the top header row alongside the service status badge and toggle button, removing the redundant footer button.
Artifact Checksums (SHA256)
| Asset | Description | SHA256 Checksum |
|---|---|---|
Lunifier-Setup-2.1.5.exe |
Windows Inno Setup Installer | 107833C206E922C74D5A581C47F4D3C0054FBBB06A6D63E57C15A199B8C680E1 |
Lunifier-Windows-2.1.5.zip |
Windows Portable x64 | A1BD1C005AE700CE78F472BCEFD15DFD0997B7EED2F232AA1381834126FACDC7 |
Lunifier-2.1.5.0.msix |
Windows Store / Enterprise MSIX | 6215CD7F45915EEE735239C01EBF401F835ABB450DA1B9AF88A119FCB1B5538C |
lunifier_2.1.5_all.deb |
Debian / Ubuntu Package | BA1D7D6775A46E5C707408417B78EE21265BB1D2F2CA8F4AA6C80ED7E07E166C |
Lunifier-Linux-2.1.5.tar.gz |
Linux Portable Tarball | EDEB545AFFF6C60091D5B20CB571123489E98F663FA59B9FD7DC5F5598A861B7 |
Lunifier 2.1.4
Lunifier 2.1.4 Release Notes
Lunifier v2.1.4 delivers critical performance and reliability upgrades for Logitech hardware switching, non-blocking receiver device scanning, uniform UI controls layout, and Windows hostname resolution on Windows 11 native (.NET 9 WPF).
What's New & Fixed in v2.1.4
1. Non-Blocking HID++ Device Scanning & Hardware Switching
- Fixed Device Scan Hang: Overhauled
HidppEngineto use asynchronous Win32 Overlapped I/O with strict 75ms timeouts per slot when scanning receiver paired devices (MI_02&Col02). Eliminated synchronous blockingReadFilekernel calls that previously froze the scanning and edge detector threads. - Dedicated HID++ Collection Routing: Receiver paired device queries now route exclusively to Logitech Long Report endpoints (
UsagePage == 0xFF00 && Usage == 0x0002/Col02). Short report commands are additionally sent toCol01. Non-HID++ collections (MI_00,MI_01) are safely filtered out. - Asynchronous Border Switch Dispatch: Hardware switching from
OnEdgeTriggeredis now dispatched in background threads (Task.Run), ensuring the screen border detection thread never stalls or misses cursor movements. - Smarter Return Guard Activation: The cursor park and return guard are now only engaged if at least one Logitech device confirms a successful switch, preventing user lockout if hardware switching fails.
- Cooldown Clamping & Live Feedback: Return guard duration is clamped to a maximum of 1000ms upon mouse return, and border touches during cooldown are logged in Live Logs with remaining milliseconds for full diagnostic transparency.
2. Windows System Hostname Default
- Automatic Hostname Resolution: The default hostname is now dynamically resolved from Windows (
Environment.MachineName) instead of the hardcoded"Host"label, matching user expectations across P2P inter-host links.
3. Uniform UI Layout & Input Alignment
- 32px Control Height Standard: Standardized all text fields (
TextBox), dropdowns (ComboBox), and adjacent action buttons (Button) to a uniform height of32pxwith centered vertical content alignment across all tabs. - Multiline Log Viewer Optimization: Preserved full adaptive scaling and text wrapping for the Live Logs box (
LogsBox) while giving input controls clean, modern spacing.
Release Artifacts & Checksums
| Package | Platform / Target | SHA-256 Checksum |
|---|---|---|
Lunifier-Setup-2.1.4.exe |
Windows Inno Setup Installer | 37A6C7133D144532500A33BC8287ABB92B6DB120535CF818EC809C08BC2927A5 |
Lunifier-Windows-2.1.4.zip |
Windows Portable x64 | 285BFBA456A4FA69E03F0B566ABEAF1170565029E874D71C28C0FBB4017E08F9 |
Lunifier-2.1.4.0.msix |
Windows Store / Enterprise MSIX | C382F9FE7583813D975CF47A22A7B87854F752CDD0A3E4E90705994EA8CB3469 |
lunifier_2.1.4_all.deb |
Debian / Ubuntu Package | 2F2F4557D1BB7A39CED346C2B63E607FDFA091891695CD767A739ACE64F82315 |
Lunifier-Linux-2.1.4.tar.gz |
Linux Portable Tarball | 2A841928EF0D4E9D3AF7D9AB81B2B3E8D161AB0687D7E598DB834C39B15EC88E |