Go to file
Dustin 09342acb01 Support multiple monitors
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.
2023-01-01 12:32:21 -06:00
src Support multiple monitors 2023-01-01 12:32:21 -06:00
.gitattributes Initial commit 2022-12-30 09:10:05 -06:00
.gitignore Add basic MQTT client functionality 2022-12-30 13:49:01 -06:00
Cargo.lock Support multiple monitors 2023-01-01 12:32:21 -06:00
Cargo.toml Support multiple monitors 2023-01-01 12:32:21 -06:00
rustfmt.toml Initial commit 2022-12-30 09:10:05 -06:00