import type { LayoutNode } from 'officerdev'; import { WorkspaceView } from 'officerdev'; import { useDashboardState } from 'state/useDashboardState'; import { defaultLayout } from './defaultLayout'; // /minesweeper — Minesweeper X running under wine on a virtual display, streamed over RFB. // // The pixels arrive through /api/minesweeper/ws, which is a byte relay onto x11vnc's own TCP socket on // loopback — the same shape as the terminal's relay onto the pty sidecar, and the reason this works at // all where `plugins/desktop` could not: a websocket provider is a platform concern, and a plugin // cannot claim one. // // Owner-only, and not because a game is dangerous: wine runs as the server owner, so the game's menus // are file dialogs with the owner's home behind them. export const MinesweeperScreen = () => { const workspace = useDashboardState('screens/minesweeper', defaultLayout); return ; };