corentin-soriano commented on PR #1061:
URL: 
https://github.com/apache/guacamole-client/pull/1061#issuecomment-2676293008

   > Exciting. Could you write up the technical implementation here? Here's 
what I gather from looking at the changes here and in the guacamole-server pull 
request.
   > 
   > * It looks like all the drawing instructions will now set an optional 
x-offset for the base/default layer. All other layers are relative to the base 
layer which is why they don't need the x-offset (correct?).
   
   Only the main layer is affected by the offset because the others (eg: mouse) 
are relative to the browser window instead of the remote screen.
   
   > * A new optional parameter is added to the `size` instruction for 
indicating number of monitors.
   
   With FreeRDP, the number of monitors is set via the display update channel 
(the same as for the dimensions). The setting is optional for backward 
compatibility.
   
   > * A new optional parameter for maximum number of secondary monitors is 
added to the connection parameters.
   
   You can define it in your user-mapping.xml or in guacamole settings with a 
jdbc extension:
   ```xml
   <param name="secondary-monitors">3</param>
   ```
   In the example above I can open 3 additional monitors and then the button is 
grayed out (guacd would ignore the instruction):
   
![image](https://github.com/user-attachments/assets/e0fda055-c172-4c6c-900d-b31ffd03d409)
   
   
   > 
   > That leads me to understand,
   > 
   > 1. There is a constraint that monitors must be laid out horizontally and 
be the same dimension.
   
   For now, all monitors have the same dimensions but there is client-side 
scaling if one of the windows needs to have different dimensions:
   
![image](https://github.com/user-attachments/assets/4a71cf9b-df5b-45cd-a131-cc2ffc66ad14)
   
   > 2. Each window/tab/connection to the server is receiving graphical updates 
for all monitors but only displaying the subset for its selected monitor.
   
   Exactly, each window displays its visible part according to its x-offset. 
Each time a monitor is added/removed, an instruction is sent by 
`sendMonitorsInfos()` to all the windows to know their new position (allow to 
close a middle window).
   The x-offset corresponds to the `position * width` of the monitor.
   
   > 
   > Could you clarify if that is correct? If so, how is each tab specifying 
which monitor/offset to use?
   
   Secondary windows knows their position thanks to an ID defined in the route:
   
![image](https://github.com/user-attachments/assets/415c01b2-7c38-4b86-af29-6f4e7c5b3d56)
   In the screenshot above:
   - Main window is at the position 0 => x-offset = 0*width = 0 px 
   - monitor with ID 3 is at the position 1 => x-offset = 1*width.
   
   Does this answer your questions?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@guacamole.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to