{"action":"opened","issue":{"url":"https://api.github.com/repos/golang/go/issues/12355","labels_url":"https://api.github.com/repos/golang/go/issues/12355/labels{/name}","comments_url":"https://api.github.com/repos/golang/go/issues/12355/comments","events_url":"https://api.github.com/repos/golang/go/issues/12355/events","html_url":"https://github.com/golang/go/issues/12355","id":103413125,"number":12355,"title":"x/tools/cmd/present: support multiple displays","user":{"login":"adg","id":8446613,"avatar_url":"https://avatars.githubusercontent.com/u/8446613?v=3","gravatar_id":"","url":"https://api.github.com/users/adg","html_url":"https://github.com/adg","followers_url":"https://api.github.com/users/adg/followers","following_url":"https://api.github.com/users/adg/following{/other_user}","gists_url":"https://api.github.com/users/adg/gists{/gist_id}","starred_url":"https://api.github.com/users/adg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adg/subscriptions","organizations_url":"https://api.github.com/users/adg/orgs","repos_url":"https://api.github.com/users/adg/repos","events_url":"https://api.github.com/users/adg/events{/privacy}","received_events_url":"https://api.github.com/users/adg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-08-27T02:43:19Z","updated_at":"2015-08-27T02:43:19Z","closed_at":null,"body":"It's been expressed by @matryer and by others that it would be nice to have a Keynote-style multi-display support. The second display would show speaker notes and the upcoming slide.\r\n\r\nMy thoughts on how this might be implemented:\r\n\r\n- Introduce the notion of a \"session\" on the present server side\r\n- When a client loads a slide presentation, they create a websocket connection to the present server (as they do now), and that connection is tied to a specific session (this is new).\r\n- The websocket, in addition to carrying snippets to be compiled and their results, will also carry slide navigation instructions. When the client navigates forward or back, this is communicated to the server, and the session object on the server is updated to reflect that state.\r\n- Additional clients can connect to that session using the unique session id. Any slide navigation instructions are relayed to all connected clients, and those clients reflect that navigation in the user interface.\r\n- Additional kinds of clients can then be implemented. One of these might be the \"presenter view\" which includes speaker notes (comments extracted from the slide source) and a preview of the upcoming slides.\r\n- The default slide view would then include a shortcut key to pop open a presenter view, used in a multi-display context.\r\n\r\ncc @robpike "}}