Early Access: Client Implementation Status (Windows / Linux)
This page provides an overview of the feature implementation status for the Windows / Linux version of Noctiluca Navigator Early Access (0.9.0 ~ >1.0.0).
Notice
-
This software (Noctiluca Navigator for Windows / Linux) does not include built-in H.264 / HEVC decoder modules (codecs).
This software uses the system's hardware-accelerated video decoder APIs to decode screen data. Therefore, if your system lacks a hardware-accelerated decoder or does not have a compatible codec installed, screen projection may not function properly.
- Windows: Decodes screen data via DXVA. Depending on your system configuration, you may need to purchase HEVC Video Extensions separately for HEVC decoding.
- Linux: Decodes screen data via VA-API. A compatible GPU and driver are required.
On systems that do not meet the above requirements, you can download the OpenH264 codec provided by Cisco as a limited fallback for H.264 decoding.
For Users Who Prefer Free Software
-
The current version of Noctiluca Server / Noctiluca Navigator uses the non-free codecs H.264 / HEVC for screen projection.
For users who cannot or choose not to use H.264 / HEVC, we plan to offer additional options using free codecs such as VP8.
-
We respect your rights: Noctiluca Navigator for Windows / Linux permits Qt library replacement and limited reverse engineering.
This software is built using the Qt framework, which is licensed under the LGPL. In accordance with the LGPL license, users may freely replace the Qt libraries in the Windows / Linux version of Noctiluca Navigator.
Additionally, reverse engineering is permitted for the purpose of diagnosing issues when a user-provided Qt library replacement does not work correctly. (e.g., using a Qt library with debug symbols to analyze which part of the Qt library causes Noctiluca Navigator to crash)
For more details, please refer to the Noctiluca Navigator License Agreement for Windows / Linux.
Implementation Status
UI/UX
| Feature | Status | Notes |
|---|---|---|
| Overall UI | In Progress | I don't like it. I'd prefer something closer to KDE-style UI, but I can't just link and use KF6 directly, and since it's not even a KDE app, I'm not sure if I'm allowed to just follow KDE style like that. But hey, I'll get criticized either way — I just want to go ahead and follow KDE style on my own. |
| Main Window (Address Bar / Connecting / Session View) | Resolved | |
| Settings Window | Resolved | Organized into 6 tabs: General, Input, Security, Projection, Miscellaneous, and Plugins. |
| Per-Session Settings Dialog | Resolved | Organized into 4 tabs: Projection, Input, Security, and Credentials. |
| Address Bar (Autocomplete, Quality/Security Indicators) | Resolved | |
| Contact List | In Progress | Implementation is complete, but there are compatibility issues with Qt versions below 6.5. |
| Activity Bar | Resolved | |
| About Dialog | Resolved | |
| Performance Overlay | Known |
Authentication
| Feature | Status | Notes |
|---|---|---|
| UNIX PAM Authentication | Resolved | Supports username-password authentication based on UNIX PAM. |
| Simple Password Authentication | Resolved | Supports password-only authentication. |
| SSH Key Authentication | Resolved | Supports authentication using SSH private keys. |
| Auth Challenge Dialog | In Progress | I don't like it. |
Projection: Video Decoding
| Feature | Status | Notes |
|---|---|---|
| DXVA-based H.264 / HEVC Decoder | Resolved | Windows only. Uses D3D11 Video Decoder API. |
| VA-API-based H.264 / HEVC Decoder | Resolved | Linux only. Attempts DMABUF zero-copy when possible. |
| Cisco OpenH264 Software Decoder | Resolved | Dynamically loaded via dlsym(3). This decoder module is not bundled with Noctiluca Navigator; the user must agree to the license before installation. |
| OpenH264 Download Dialog | Resolved | Downloads the binary after license agreement and verifies checksum. |
| MJPEG Decoder | Resolved | Based on libturbojpeg with parallel tile decoding support. |
| ZRLE Decoder | Resolved | Zstd + RLE-based tile decoder. |
| WebP Decoder | Planned | Decoder implementation has not been done yet. |
| libvpx-based VP8 Decoder | Planned | We plan to offer this as an additional option for users who cannot or choose not to use the non-free codecs H.264 / HEVC. |
Projection: Audio Decoding & Playback
| Feature | Status | Notes |
|---|---|---|
| Opus Decoder | Resolved | Based on libopus, supports 48kHz stereo output. |
| G.711 mu-law / A-law Decoder | Resolved | LUT-based conversion with resampling support. |
| PortAudio-based Audio Playback | Resolved | Uses WASAPI on Windows and system default audio API on Linux. |
| Audio Jitter Buffer | Resolved |
Projection: Rendering
| Feature | Status | Notes |
|---|---|---|
| QRhi Renderer (Vulkan / D3D11 / OpenGL) | Resolved | Default renderer on Windows. Supports HDR tone mapping (Vulkan) and CAS (Contrast Adaptive Sharpening). Implementation is complete, but intentionally disabled on Linux due to ABI compatibility issues. |
| QOpenGL Renderer | Resolved | Default renderer on Linux. Supports CAS (Contrast Adaptive Sharpening). |
| QPainter Software Renderer | Resolved | CPU software renderer for environments without GPU acceleration. SDR only; colors may be inaccurate if the host uses a wide color gamut such as Display P3. |
| Cursor Overlay | Resolved | Cursor overlay rendering is supported in all three renderers. |
| Video Jitter Buffer | Resolved | Provides Stability / Low Latency / Ultra Low Latency presets. |
Projection: Multi-Display
| Feature | Status | Notes |
|---|---|---|
| Multi-Display Switching | Resolved | Switch between displays via the display list sidebar. |
| Display Detach (Separate Windows) | Resolved | Secondary displays can be detached into independent windows. |
Projection: Codec Negotiation
| Feature | Status | Notes |
|---|---|---|
| Video Codec Negotiation | Resolved | |
| Audio Codec Negotiation | Resolved | |
| Codec Settings Dialog | In Progress | I don't like it. |
HIDIO
| Feature | Status | Notes |
|---|---|---|
| Basic Keyboard / Mouse Input (Shared Mode) | Resolved | Supports keyboard/mouse input based on Qt widget events. |
| Exclusive Input Mode (Windows) | In Progress | Implementation is complete, but needs further verification. |
| Exclusive Input Mode (Linux) | In Progress | Implementation is complete, but needs further verification. |
| Exclusive Mode Escape Hotkey | Resolved | You should be able to enter exclusive mode by pressing a predefined hotkey. |
| Key Rebinding | Resolved | Supports key rebinding through the key event pipeline. |
| Modifier Key Rebinding | Resolved | Supports settings-based rebinding of modifier keys (Ctrl, Alt, Super, etc.). |
| Mouse Acceleration (Linux) | Resolved | In exclusive mode, raw mouse events come in as-is, so mouse acceleration must be implemented manually. |
Clipboard Sync
| Feature | Status | Notes |
|---|---|---|
| Clipboard Sync | In Progress | The Sirius clipboard channel class is implemented, but the connection to the session is not yet complete. |
libsirius
| Feature | Status | Notes |
|---|---|---|
| transport: MsQuic-based Transport Layer Implementation | Resolved | |
| transport/msquic: Connection Migration within Same Address Family | Known | Needs to detect IP address changes on network interfaces. |
| transport/msquic: Connection Migration between IPv4 / IPv6 Families | Known | |
| transport/msquic: Server Identity Verification (Linux, QuicTLS) | In Progress | Needs further verification. |
| transport/msquic: Server Identity Verification (Windows, Schannel) | In Progress | Needs further verification. |
libsirius/msgdef
| Feature | Status | Notes |
|---|---|---|
.mdproto Spec Finalization | In Progress | Need to finalize the spec for .mdproto, which serves as both a human-readable spec document for the Sirius protocol and is itself compilable to Protobuf.Just need to define the // @annotation(attr) spec for more generic use cases. |
| Documentation Cleanup / Translation | Planned | Need to clean up the messy docs so they can be published externally. |
Security
| Feature | Status | Notes |
|---|---|---|
| persistent/secret: Secret Store (Windows) | Resolved | Sensitive information used within the app should be securely stored via Windows Credential Manager. |
| persistent/secret: Secret Store (Linux) | Resolved | Sensitive information used within the app should be securely stored via libsecret. |
| Known Hosts System | Resolved | Stores server certificate fingerprints and prevents MITM attacks on reconnection. |
| Server Certificate Validation Dialog | In Progress | Displays a 3-tab dialog (warning / certificate info / help) when TLS certificate validation fails. The feature itself works, but there are confirmed errors in the information display. |
Miscellaneous
| Feature | Status | Notes |
|---|---|---|
| Sleep Inhibitor | Resolved | Prevents the system from entering sleep mode during a remote session. |
Known Bugs
Fails to start on a default Ubuntu Desktop installation
On Linux, Noctiluca Navigator stores secret data via libsecret → GNOME Keyring in most environments.
On a default Ubuntu Desktop installation, GNOME Keyring is bundled but no default keyring has been created, which causes Noctiluca Navigator to be unable to store secret data.
We are considering falling back to a file-based secret store in this case, but we're also reluctant since a file-based secret store is inherently insecure.
To resolve this issue, please manually create a default keyring as described on the Noctiluca Navigator Help / Troubleshooting (Linux) page.
Contact list appears empty when running on Qt below 6.5
The contact screen uses the RectangularShadow effect from QtQuick.Effects to apply shadow effects to contact cards.
However, the QtQuick.Effects module itself is not available in Qt versions below 6.5, causing QML loading to fail and the contact screen to appear empty.
Since Ubuntu 24.04 LTS ships with Qt 6.4 by default, this issue is expected to be particularly common on Ubuntu 24.04 LTS.
SSH key authentication was not yet supported
The SSH key authentication option existed in the UI, but there was no means to actually perform signing with an SSH key when receiving an authentication challenge from the server.
Starting from version 0.9.2, a C++ port of Xuanxue (玄学) was added, enabling SSH key authentication.
Exclusive input mode on Windows has not been sufficiently tested
Due to limited testing equipment and development resources, the exclusive input mode on Windows has not been sufficiently tested. As a result, unexpected input behavior or system interaction issues may occur in this mode.
Colors may be inaccurate when the host uses a wide color gamut such as Display P3
- The QRhi renderer and OpenGL renderer temporarily map the host's color space to sRGB before rendering. We plan to provide an option to render without mapping, preserving the original color space.
- The QPainter software renderer renders screen data without any verification or mapping. Colors may be inaccurate.
