When the left_menu slides in from the left, the entire app window flickers and stutters.
The two `const Divider(),` references are the cause of this stuttering, so they have been replaced with `Container()`.
The implementation of `_getTerminalEmulator` is specific to Debian-based systems, as it relies on the `x-terminal-emulator` symbolic link. This link does not exist on other Linux distributions or on macOS.
This patch first tries to find the `x-terminal-emulator` symbolic link. If it doesn't exist or returns an empty string, it then iterates over a list of supported terminal emulators and uses the `whichSync` function to check if they exist in the PATH. It sets `_terminalEmulator` to the first terminal emulator it finds in the PATH.
Dark mode doesn't render some icons correctly at the moment and in an effort to get an update Quickgui release out light mode the temporarily the only theme.
Since Quickemu 4.9.3 quickget downloads everything except Ubuntu daily images with curl, via the web_get() function internal to quickget.
This change adapts the progress parsing to curl's progress output and accounts for a bug in quickget where it stopped reporting if wget/curl is the external download tool.
This fixes the following CI failure:
```
Note: intl is pinned to version 0.18.1 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.
Because every version of flutter_localizations from sdk depends on intl 0.18.1 and quickgui depends on intl ^0.19.0, flutter_localizations from sdk is forbidden.
So, because quickgui depends on flutter_localizations from sdk, version solving failed.
```
Rather than waiting for the OS list to load, when the app starts, the
loads them in the background, and only waits if we reach the list of
available downloads without them loaded yet. In this case, we use a
FutureBuilder to display a loading spinner until the list is ready.
This fixes the loading of OS icons so they are correctly replaced with a
generic computer if no matching icon is found.
It also centralises the loading process so it happens once during app
initialisation, and displays the corresponding icon next to each VM on
the manager screen.
This is a big improvement over what we had before and relies on the
theme to provide dark mode rather than manually checking brightness each
time we pick a colour.
The buttons in the primary container aren't quite right, I'm not sure
why.