Releases: ghostpsalm/DreamConnect
Release list
DreamConnect v1.4.1
Hardening: DREAMCONNECT_HOST_ACCOUNT pointed at an existing account is now
fully reversible (H6) — a crash-safe one-host-account-per-box invariant,
root/user/local reserved everywhere without breaking classic-mode
autologin, and home-directory validation covering the account's own
hand-deleted-account scenario.
The account path itself still needs a full on-device reboot verification
(unchanged from v1.4).
See #21.
DreamConnect v1.4
Keyboard fidelity, multi-monitor capture, and a second reboot-survival path.
-
Layout-independent keyboard (H1) — character keys inject as a base X11
keysym via Mutter'sNotifyKeyboardKeysym, resolved on the guest's layout,
so the right character lands on US, QWERTZ, AZERTY, etc. Modifiers and
functional keys stay evdev (position-based, correct on every layout).
Empirically verified with a focused key-logger on German and US layouts. -
Multi-monitor capture (H2) — the daemon now captures the whole logical
desktop viaRecordAreaover the bounding box of all logical monitors,
auto-enabled when more than one is present (or forced with
--all-monitors), falling back to the proven single-monitorRecordMonitor
otherwise. Verified on a single-monitor box with no regression; true
multi-monitor spanning is architecturally in place but not yet confirmed
end to end on multi-monitor hardware. -
Dedicated display-host account (H6) — a second way to survive an
unattended reboot alongside autologin:DREAMCONNECT_HOST_ACCOUNT=<name>
creates a hidden, sudo-less, password-disabled account and runs the daemon
there instead, so no human's session is ever exposed. This release also
fixes a startup race found in on-device testing:loginctl enable-linger
starts the account's systemd user manager asynchronously, and the installer
could try to configure its user service before the manager's bus was up,
aborting a first-time install. The account path is code-complete and unit
tested but still needs a full on-device reboot verification — treat it as
best-effort until that's done. -
Fixed the GDM-autologin
WaylandEnable=falsewarning to only fire when the
session actually isn't Wayland, instead of on every autologin install
regardless of whether the setting could bite.
Install
curl -fsSL https://github.com/ghostpsalm/DreamConnect/releases/latest/download/dreamconnect-install.sh | sudo bashAdd DREAMCONNECT_AUTOLOGIN=1 before bash for unattended/reboot survival, or
DREAMCONNECT_HOST_ACCOUNT=<name> for the dedicated-account path above.
DreamConnect v1.3
Hardening release.
- Distro-agnostic install (H5) — the installer detects your package manager (
apt/dnf/zypper/pacman) and installs the full runtime dependency set (X11 probe tools, python3 + GObject, GStreamer PipeWire + base plugins, wl-clipboard), plus a JDK fallback for the source build. Best-effort with a manual package list on failure;DREAMCONNECT_SKIP_DEPS=1opts out. Only Fedora is tested end to end — see per-distro packages. - Reboot survival / autologin (H6) — opt into GDM autologin so the bridge comes back unattended after a reboot:
curl -fsSL .../dreamconnect-install.sh | sudo DREAMCONNECT_AUTOLOGIN=1 bash. A section-aware, idempotent, backed-up edit of/etc/gdm{,3}/custom.conf, reverted on--uninstall. Security trade-off (no login prompt at boot), so it is strictly opt-in. - Reconnect & resilience (H4) — fixed a session-restart D-Bus subscription leak that could cascade into duplicate restarts, plus a restart guard. Verified: a daemon bounce recovers (capture resumes, clients reconnect to live frames), the shm inode is stable so the agent’s mmap survives, and the unit restarts on crash.
Install
curl -fsSL https://github.com/ghostpsalm/DreamConnect/releases/latest/download/dreamconnect-install.sh | sudo bashAdd DREAMCONNECT_AUTOLOGIN=1 before bash for unattended/reboot survival.
DreamConnect v1.2
Operator-command release. On top of the v1.0 core (headless Wayland capture + input, no consent dialog) and v1.1 packaging, v1.2 adds the ScreenConnect operator commands that previously no-oped under Wayland:
- Insert clipboard text — types the operator clipboard on the remote, including non-US/Unicode text (via a clipboard-paste fallback).
- Wake lock — the AcquireWakeLock command inhibits idle-blank/auto-lock for the session.
- Blank guest monitor — darkens the physical panel for local privacy while the operator keeps seeing the desktop (via CRTC gamma, so it holds through input).
- Logon-session rename — the session picker shows the logged-in user name instead of
:0. - Verified working as-is — block guest input, screenshots, Open URL, reboot, run tool, file transfer.
Also closed as not-applicable on Linux: a Backstage terminal (SC has none on the Linux client; use the Commands tab for a root shell) and Send Ctrl+Alt+Del (a GNOME no-op).
See docs/screenconnect-commands.md for full command coverage and ROADMAP.md.
Install
curl -fsSL https://github.com/ghostpsalm/DreamConnect/releases/latest/download/dreamconnect-install.sh | sudo bashDreamConnect v1.1
Hardening + fixes release. Recommended for all users.
Install / upgrade
curl -fsSL https://github.com/ghostpsalm/DreamConnect/releases/latest/download/dreamconnect-install.sh | sudo bashChanges since v1.0
Security
- Shared-memory framebuffer and control socket are now
0600(were world-readable /
world-writable) — no local screen scraping or input injection. Root reads them via DAC. - Agent only instruments the ScreenConnect client, not inherited child JVMs.
- Deploys root-owned; documented the trust model; inspect-first install guidance.
Performance (capture hot path)
- No per-call stat syscalls; bulk IntBuffer row copies; skip copies mid-write and when idle.
Fixes
- Fixed a periodic black-frame flash (a seqlock race introduced during hardening).
- Bounded daemon reply reads; systemd retry hardening; autologin (reboot-survival) warning.
Quality
- Added an automated test suite (
./run-tests.sh) covering keymap, frame reader
(incl. the black-flash regression), and the command parser.
See CODE_REVIEW and ROADMAP for details.
DreamConnect v1.0
First working release. Makes the unmodified ConnectWise ScreenConnect Linux
client work under Wayland GNOME by transparently rerouting its java.awt.Robot
capture/input onto Wayland's PipeWire ScreenCast + Mutter RemoteDesktop APIs —
headless, with no consent dialog.
Install
curl -fsSL https://github.com/ghostpsalm/DreamConnect/releases/latest/download/dreamconnect-install.sh | sudo bashFeatures
- Live screen capture (no more black screen), responsive mouse + keyboard, correct
scroll, low-latency input. - No "Allow" consent dialog — drives
org.gnome.Mutter.{RemoteDesktop,ScreenCast}
directly; fully unattended. - ScreenConnect binaries untouched (agent via
JAVA_TOOL_OPTIONS); survives updates. - One-command install with auto-detection; systemd-managed.
Known limitations
- "Insert clipboard text" not yet supported (use clipboard sharing + manual paste).
- US-ish keymap; single-monitor. See ROADMAP.md.