The *POST /screen/{name}/navigate* path operation allows the client to
request the screen navigate to a different URL, specified by the `url`
form field.
The GUI shows a screenshot of each monitor, as well as the title and URL
of the page being displayed. There's also a button to trigger a page
reload on the remote machine.
Any time we need to switch Firefox windows, we need to use a lock to
prevent multiple simultaneous requests. If we do not, interleaved
Marionette commands may result in performing operations on the wrong
window. For example, making two simultaneous requests for screenshots
is liable to return the wrong window for one of them.
The *GET /screen/{name}/screenshot* path operation returns a screenshot
of the specified screen as a PNG image. If a value is specified for one
or more of `height`, `width`, or `ratio`, then the image will be resized
accordingly.
The *GET /screens/* path operation now returns a mapping of monitor
names to screen properties. This matches the new behavior of the *POST
/screen/{name}/refresh* operation.
Poetry does not install local path dependencies in "editable" mode by
default. Instead, it builds them and installs them into the venv like
any other dependency. This means that changes in the local copy are not
picked up.
In order to be more precise about which screen will be refreshed, the
*POST /screen/{number}/refresh* path operation has been changed to *POST
/screen/{name}/refresh*. It takes a monitor name as the key instead of
an array index.
Instead of hard-coding the list of URLs to open, we'll read it from a
JSON file on the disk. The file contains a mapping of monitor names to
URLs, e.g.
```json
{
"HDMI-1": "http://my.site.one",
"HDMI-2": "http://my.site.two"
}
```