// PID comes from the bus daemon, not from the caller. Never focus a different T3 process.export function findCaptureDestination(windows, pid, title) { const owned = windows.filter((window) => window.get_pid() === pid); const matching = owned.filter((window) => window.get_title() === title); if (matching.length === 1) return matching[0]; return owned.length === 1 ? owned[0] : undefined;} export function captureDestinationFrame(relative, bounds) { const { x, y, width, height } = relative; if ( ![x, y, width, height].every(Number.isFinite) || x < 0 || y < 0 || width <= 0 || height <= 0 || x + width > 1.01 || y + height > 1.01 ) { throw new Error("Invalid capture animation destination."); } return { x: bounds.x + x * bounds.width, y: bounds.y + y * bounds.height, width: width * bounds.width, height: height * bounds.height, };}
// PID comes from the bus daemon, not from the caller. Never focus a different T3 process.
export function findCaptureDestination(windows, pid, title) {
const owned = windows.filter((window) => window.get_pid() === pid);
const matching = owned.filter((window) => window.get_title() === title);
if (matching.length === 1) return matching[0];
return owned.length === 1 ? owned[0] : undefined;
}
export function captureDestinationFrame(relative, bounds) {
const { x, y, width, height } = relative;
if (
![x, y, width, height].every(Number.isFinite) ||
x < 0 ||
y < 0 ||
width <= 0 ||
height <= 0 ||
x + width > 1.01 ||
y + height > 1.01
) {
throw new Error("Invalid capture animation destination.");
}
return {
x: bounds.x + x * bounds.width,
y: bounds.y + y * bounds.height,
width: width * bounds.width,
height: height * bounds.height,
};
}