### Godot version

v4.0.beta12.mono.official [3c9bf4bc2]

### System information

Windows 10, Forward+ (Vulkan), NVIDIA GeForce RTX 3070 (526.98)

### Issue description

The `Initial Screen` select dropdown provides 64 options for monitors when it should only provide options for what is available.  In my case, I'm only using two monitors so there should only be two monitors to choose from (excluding the Primary Monitor option of course).  Screenshot below.

![image](https://user-images.githubusercontent.com/1691061/213066149-b97d3220-9b23-4685-a155-ad2f48f96de3.png)


### Steps to reproduce

The issue appears to occur whether I'm using two monitors or one monitor.

---
1. Open `Project Settings`
2. Go to `Display` > `Window` > `Size`
3. Select the `Initial Screen` dropdown.
4. You will see the `Primary Monitor` option and 64 other monitor options as seen in the screenshot.

### Minimal reproduction project

N/A
* see how it calls into the Main class' methods.
 *
 * The initialization is typically done in 3 steps (with the setup2 step triggered either
 * automatically by setup, or manually in the platform's main).
 *
 * - setup(execpath, argc, argv, p_second_phase) is the main entry point for all platforms,
 *   responsible for the initialization of all low level singletons and core types, and parsing
 *   command line arguments to configure things accordingly.
 *   If p_second_phase is true, it will chain into setup2() (default behavior). This is
 *   disabled on some platforms (Android, iOS, UWP) which trigger the second step in their
 *   own time.
 *
 * - setup2(p_main_tid_override) registers high level servers and singletons, displays the
 *   boot splash, then registers higher level types (scene, editor, etc.).
 *
 * - start() is the last step and that's where command line tools can run, or the main loop
 *   can be created eventually and the project settings put into action. That's also where
 *   the editor node is created, if relevant.
 *   start() does it own argument parsing for a subset of the command line arguments described
 *   in help, it's a bit messy and should be globalized with the setup() parsing somehow.
 */
Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_phase) {
	OS::get_singleton()->initialize();
	engine = memnew(Engine);
	MAIN_PRINT("Main: Initialize CORE");
	engine->startup_begin();
	engine->startup_benchmark_begin_measure("core");
	register_core_types();
	register_core_driver_types();
	MAIN_PRINT("Main: Initialize Globals");