From cc397fc0883a77d6fc0cc6f786e6db9c56133411 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Fri, 15 Oct 2021 02:44:41 +0100 Subject: [PATCH] Only try to coerce the screen resolution of Linux guests This feature was originally developed for Linux guests. macOS doesn't honur it and not Windows automatically installs all the required drivers it is not required for Windows either. --- quickemu | 63 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/quickemu b/quickemu index 75fcbd9..fe14376 100755 --- a/quickemu +++ b/quickemu @@ -488,42 +488,41 @@ function vm_boot() { fi fi - local X_RES=1152 - local Y_RES=648 - if [ "${XDG_SESSION_TYPE}" == "x11" ]; then - local LOWEST_WIDTH="" - if [ -z "${SCREEN}" ]; then - LOWEST_WIDTH=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f1 | sort | head -n1) - else - LOWEST_WIDTH=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f1 | head -n1) - fi - if [ "${FULLSCREEN}" ]; then + # Determine a sane resolution for Linux guests. + if [ "${guest}" == "linux" ]; then + local X_RES=1152 + local Y_RES=648 + if [ "${XDG_SESSION_TYPE}" == "x11" ]; then + local LOWEST_WIDTH="" if [ -z "${SCREEN}" ]; then - X_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f1 | sort | head -n1) - Y_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f2 | cut -d'x' -f2 | sort | head -n1) + LOWEST_WIDTH=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f1 | sort | head -n1) else - X_RES=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f1 | head -n1) - Y_RES=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f2 | cut -d'x' -f2 | head -n1) + LOWEST_WIDTH=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f1 | head -n1) + fi + if [ "${FULLSCREEN}" ]; then + if [ -z "${SCREEN}" ]; then + X_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f1 | sort | head -n1) + Y_RES=$(xrandr --listmonitors | grep -v Monitors | cut -d' ' -f4 | cut -d'/' -f2 | cut -d'x' -f2 | sort | head -n1) + else + X_RES=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f1 | head -n1) + Y_RES=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f2 | cut -d'x' -f2 | head -n1) + fi + elif [ "${LOWEST_WIDTH}" -ge 3840 ]; then + X_RES=3200 + Y_RES=1800 + elif [ "${LOWEST_WIDTH}" -ge 2560 ]; then + X_RES=2048 + Y_RES=1152 + elif [ "${LOWEST_WIDTH}" -ge 1920 ]; then + X_RES=1664 + Y_RES=936 + elif [ "${LOWEST_WIDTH}" -ge 1280 ]; then + X_RES=1152 + Y_RES=648 fi - elif [ "${LOWEST_WIDTH}" -ge 3840 ]; then - X_RES=3200 - Y_RES=1800 - elif [ "${LOWEST_WIDTH}" -ge 2560 ]; then - X_RES=2048 - Y_RES=1152 - elif [ "${LOWEST_WIDTH}" -ge 1920 ]; then - X_RES=1664 - Y_RES=936 - elif [ "${LOWEST_WIDTH}" -ge 1280 ]; then - X_RES=1152 - Y_RES=648 fi fi - if [ "${guest_os}" != "macos" ]; then - echo " - Screen: ${X_RES}x${Y_RES}" - fi - # https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/ if [ "${guest_os}" == "linux" ]; then case ${OUTPUT} in @@ -555,8 +554,8 @@ function vm_boot() { # Build the video configuration VIDEO="-device ${DISPLAY_DEVICE}" - # Do not try and coerce the display resolution for macOS - if [ "${guest_os}" != "macos" ]; then + # Try and coerce the display resolution for Linux guests only. + if [ "${guest_os}" == "linux" ]; then VIDEO="${VIDEO},xres=${X_RES},yres=${Y_RES}" fi