Skip to content

Demo: don't lock the master computer when sharing a user's screen fullscreen - #1126

Merged
tobydox merged 1 commit into
veyon:mainfrom
rautyrauty:demo-no-master-fullscreen-lock
May 27, 2026
Merged

Demo: don't lock the master computer when sharing a user's screen fullscreen#1126
tobydox merged 1 commit into
veyon:mainfrom
rautyrauty:demo-no-master-fullscreen-lock

Conversation

@rautyrauty

Copy link
Copy Markdown
Contributor

Problem

When the master computer is itself listed among the room computers — a common setup in labs where one or more teacher stations are added to the location — starting Demo → Share selected user's screen in fullscreen mode locks the master itself.

startFeature() for the user-screen demo sends a fullscreen demo client to every room computer except the selected one (userDemoControlInterfaces), and separately sends a dedicated window demo to the master's own local session so the teacher keeps control. But the master's own computer is also part of userDemoControlInterfaces, so it additionally receives the fullscreen client. The fullscreen LockWidget grabs keyboard and mouse and covers Veyon Master — the teacher can no longer switch the demonstrated user or even stop the demo. With two teacher stations, both get locked.

Steps to reproduce

  1. Add the teacher/master computer to the room's computer list.
  2. Open Veyon Master, select a student.
  3. Demo → Share selected user's screen in fullscreen mode.
  4. The master's own screen is locked fullscreen and Veyon Master becomes unreachable.

Fix

Exclude the local host from the fullscreen demo client broadcast. The master already receives the dedicated window demo via its local session interface — that is what lets the teacher monitor the demonstration without being locked.

Verified on ALT Education (KDE Plasma 6 / X11): after the change the presenting teacher's machine keeps a usable Veyon Master and can stop the demo, while student computers still get the fullscreen demo as before.

Downstream report: https://bugzilla.altlinux.org/41102

…lscreen

When the master computer is itself listed among the room computers,
"Share selected user's screen in fullscreen mode" sent a fullscreen demo
client to the master as well. The fullscreen LockWidget grabbed keyboard
and mouse and covered Veyon Master, so the teacher could neither manage
nor stop the running demonstration.

The master is meant to receive only the dedicated window demo started
separately for its local session interface. Exclude the local host from
the demo client broadcast so it is no longer also locked in fullscreen.
@tobydox
tobydox merged commit d6aa832 into veyon:main May 27, 2026
@tobydox

tobydox commented May 27, 2026

Copy link
Copy Markdown
Member

Thank you very much for your helpful contribution. If you have the time, feel free to do the same for the screen lock feature.

@rautyrauty

Copy link
Copy Markdown
Contributor Author

Thank you very much for your helpful contribution. If you have the time, feel free to do the same for the screen lock feature.

OK. Can I also help you with adding Wayland support?

@tobydox

tobydox commented May 28, 2026

Copy link
Copy Markdown
Member

Sure, checkout the pipewire-v2 branch - most of the work is already done :-) It works on KDE with the ony limitation that veyon-server runs as session user and not as root, so users can kill it (but they can also terminate the screencast/remote desktop desktop portal operation, so it doesn't really matter).

rautyrauty added a commit to rautyrauty/veyon that referenced this pull request Jun 10, 2026
Following the same fix for the demo feature: in the ALT Education
multi-teacher lab layout the teacher's computer is listed among the room
computers. Locking the screen of all selected computers therefore also
locked the master itself - the fullscreen LockWidget grabbed keyboard and
mouse and covered Veyon Master, leaving the teacher with no way to unlock
the running session.

Exclude the local host from the screen lock broadcast so the master keeps
control, mirroring the demo client behaviour.

The local-host filtering that the demo feature already performs is moved
into a ComputerControlInterfaceList::removeLocalHostInterfaces() member -
promoting ComputerControlInterfaceList from a QVector alias to a QList
subclass - so both features share a single implementation instead of
duplicating the loop.

Link: veyon#1126
tobydox pushed a commit that referenced this pull request Jun 10, 2026
Following the same fix for the demo feature: in the ALT Education
multi-teacher lab layout the teacher's computer is listed among the room
computers. Locking the screen of all selected computers therefore also
locked the master itself - the fullscreen LockWidget grabbed keyboard and
mouse and covered Veyon Master, leaving the teacher with no way to unlock
the running session.

Exclude the local host from the screen lock broadcast so the master keeps
control, mirroring the demo client behaviour.

The local-host filtering that the demo feature already performs is moved
into a ComputerControlInterfaceList::removeLocalHostInterfaces() member -
promoting ComputerControlInterfaceList from a QVector alias to a QList
subclass - so both features share a single implementation instead of
duplicating the loop.

Link: #1126
tobydox pushed a commit that referenced this pull request Jun 10, 2026
Following the same fix for the demo feature: in the ALT Education
multi-teacher lab layout the teacher's computer is listed among the room
computers. Locking the screen of all selected computers therefore also
locked the master itself - the fullscreen LockWidget grabbed keyboard and
mouse and covered Veyon Master, leaving the teacher with no way to unlock
the running session.

Exclude the local host from the screen lock broadcast so the master keeps
control, mirroring the demo client behaviour.

The local-host filtering that the demo feature already performs is moved
into a ComputerControlInterfaceList::removeLocalHostInterfaces() member -
promoting ComputerControlInterfaceList from a QVector alias to a QList
subclass - so both features share a single implementation instead of
duplicating the loop.

Link: #1126
(cherry picked from commit 472daa3)
tobydox pushed a commit that referenced this pull request Jun 10, 2026
Following the same fix for the demo feature: in the ALT Education
multi-teacher lab layout the teacher's computer is listed among the room
computers. Locking the screen of all selected computers therefore also
locked the master itself - the fullscreen LockWidget grabbed keyboard and
mouse and covered Veyon Master, leaving the teacher with no way to unlock
the running session.

Exclude the local host from the screen lock broadcast so the master keeps
control, mirroring the demo client behaviour.

The local-host filtering that the demo feature already performs is moved
into a ComputerControlInterfaceList::removeLocalHostInterfaces() member -
promoting ComputerControlInterfaceList from a QVector alias to a QList
subclass - so both features share a single implementation instead of
duplicating the loop.

Link: #1126
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants