Add workspace screen sharing (#64)

Add workspace selection to the screen-sharing picker with pinned capture, privacy filtering and bounded capture resources. Refresh captured tab labels when title or app-ID metadata changes.
This commit is contained in:
Samuel Onoja authored and GitHub committed 2026-10-25 13:59:34 +01:00
1 parent e64ab52190
commit ab11269246
32 files changed
+2125 -165

No files matched your search

+13
View File
@@ -1244,6 +1244,7 @@ pub(crate) fn wake_locked_outputs(state: &mut Ferese) {
#[track_caller]
pub fn render_all(state: &mut Ferese) {
state.image_capture.invalidate_workspaces();
for output in state.space.outputs() {
capture::changes::content_changed(output);
}
@@ -1320,6 +1321,18 @@ pub(crate) fn render_surface(
return;
}
let capture_root = state
.popups
.find_popup(&root)
.and_then(|popup| smithay::desktop::find_popup_root_surface(&popup).ok())
.unwrap_or_else(|| root.clone());
if let Some(workspace) = state
.windows
.id_for_surface(&capture_root)
.and_then(|id| state.workspaces.workspace_for_window(id))
{
state.image_capture.workspace_changed(workspace);
}
let outputs = state.surface_outputs(&root);
render_on(state, &outputs);
}