Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WinX11Front

A Windows front-end for XDMCP remote desktop sessions, built with Qt 6.

WinX11Front manages a list of saved XDMCP sessions and connects to Linux hosts with Cygwin/X's XWin.exe X server: the remote display manager's login screen and whole desktop appear in a single window on your Windows desktop. No SSH, VNC or RDP involved — just plain XDMCP over the LAN.

Features

  • Session manager — save any number of XDMCP sessions (host, display options, icon) in an icon-view list; double-click to connect.
  • LAN discovery — scans a subnet for XDMCP-enabled hosts by probing UDP port 177 with an XDMCP QUERY and listening for WILLING replies.
  • X server options per session — clipboard sync, key auto-repeat, DPI, full-screen or windowed desktop resolution.
  • Bundled or system X server — uses third_party/xwin/ fetched by scripts/fetch_xwin.ps1, or a system Cygwin installation.
  • Diagnostics — a log pane that surfaces X server errors, including the tail of XWin.1.log when the server dies at startup.

Requirements

  • Windows 10 or later (x64)
  • Qt 6 (Widgets, Network, Concurrent) — built with 6.11.1 / msvc2022_64
  • CMake 3.21+ and Visual Studio 2022 (MSVC) to build
  • A Cygwin/X XWin.exe — see Getting the X server

Building

cmake -S . -B build -DCMAKE_PREFIX_PATH=D:/Qt/6.11.1/msvc2022_64
cmake --build build --config Release

The executable lands in build\Release\WinX11Front.exe. To deploy Qt runtime DLLs next to it:

D:\Qt\6.11.1\msvc2022_64\bin\windeployqt.exe build\Release\WinX11Front.exe

cmake --install build --config Release --prefix <dir> produces a distributable folder; if third_party/xwin/ exists it is installed next to the executable as xwin/.

Getting the X server

WinX11Front looks for XWin.exe in this order:

  1. <app dir>\xwin\bin\XWin.exe (installed layout)
  2. <app dir>\..\third_party\xwin\bin\XWin.exe (development layout)
  3. D:\cygwin64\bin\XWin.exe, C:\cygwin64\bin\XWin.exe (system Cygwin)

For the bundled layout, download a minimal Cygwin/X tree into third_party/xwin/ (not committed to the repository):

powershell -ExecutionPolicy Bypass -File scripts\fetch_xwin.ps1

This runs the Cygwin installer silently with only the xorg-server package. Alternatively install Cygwin yourself and pick xorg-server in the package list.

Remote host configuration

The Linux host must run a display manager with XDMCP enabled, e.g. LightDM:

# /etc/lightdm/lightdm.conf.d/xdmcp.conf
[XDMCPServer]
Enabled=true

or GDM:

# /etc/gdm/custom.conf
[xdmcp]
Enable=true

then restart the display manager and allow UDP port 177 through the host's firewall. See MANUAL.md for details.

Usage

Double-click a session (or use the context menu) to connect; the remote greeter appears in a window. Use Session → Disconnect Server to end it, and Session → Search Server... to find XDMCP hosts on your LAN. The full reference lives in MANUAL.md.

Project layout

src/            Qt application (main window, session store/dialog, LAN scanner,
                X server manager)
resources/      SVG icon set (embedded via Qt resources)
scripts/        fetch_xwin.ps1 + Python X11 diagnostic helpers
tests/          small CMake test targets (XDMCP probes, scanner test)
third_party/    Cygwin/X runtime fetched by scripts (not committed)

License

This project's code is licensed under the MIT License — see LICENSE. Cygwin/X and its runtime DLLs downloaded by scripts/fetch_xwin.ps1 are separate programs licensed under the GPL; fetching them via the script does not change this repository's license.

About

Windows XDMCP session front-end built with Qt 6 - remote Linux desktops via Cygwin/X

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages