For heads-up displays with multiple monitors, we're going to want one Firefox window on each. To support this, we need to get a list of connected monitors from the operating system and associate each with its own window. Since Firefox may start with multiple taps open automatically, we first close all but one and associate it with the first monitor. Then, for each remaining monitor, we open a new window to associate with it. To maintain the monitor-window association, the `Session` structure has a `HashMap`. When a naigation request arrives, the Firefox window to control is found by looking up the specified screen name in the map. Since the Marionette protocol is stateful, we have to "switch to" the desired window and then send the navigation command. I have tried to design the monitor information lookup API so that it can be swapped out at compile time for different operating systems. For now, only X11 is supported, but we could hypothetically support Wayland or even Windows by implementing the appropriate `get_monitors` function for those APIs. |
||
---|---|---|
src | ||
.gitattributes | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
rustfmt.toml |