mirror of
https://github.com/oSoWoSo/DistroHopper.git
synced 2024-08-14 22:46:53 +00:00
Add -display none option. Close #110
Using the -display none option will start the VM with SPICE enabled but no display attached. The .ports file in the VM directory can be used to lookup the SSH and SPICE ports used by the VM.
This commit is contained in:
parent
0567229405
commit
205023fd50
2 changed files with 25 additions and 22 deletions
|
@ -475,7 +475,7 @@ Usage
|
|||
|
||||
You can also pass optional parameters
|
||||
--delete : Delete the disk image.
|
||||
--display : Select display backend. 'sdl' (default), 'gtk' or 'spice'
|
||||
--display : Select display backend. 'sdl' (default), 'gtk', 'none' or 'spice'
|
||||
--fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
||||
--ignore-msrs-always : Configure KVM to always ignore unhandle machine-specific registers
|
||||
--screen <screen> : Use specified screen to determine the window size.
|
||||
|
|
45
quickemu
45
quickemu
|
@ -197,6 +197,7 @@ function vm_boot() {
|
|||
local CPU=""
|
||||
local DISK_USED=""
|
||||
local DISPLAY_DEVICE=""
|
||||
local DISPLAY_RENDER=""
|
||||
local EFI_CODE=""
|
||||
local EFI_VARS=""
|
||||
local GUEST_CPU_CORES=""
|
||||
|
@ -630,7 +631,7 @@ function vm_boot() {
|
|||
# https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/
|
||||
if [ "${guest_os}" == "linux" ]; then
|
||||
case ${OUTPUT} in
|
||||
spice) DISPLAY_DEVICE="qxl-vga";;
|
||||
none|spice) DISPLAY_DEVICE="qxl-vga";;
|
||||
*) DISPLAY_DEVICE="virtio-vga";;
|
||||
esac
|
||||
elif [ "${guest_os}" == "macos" ]; then
|
||||
|
@ -651,10 +652,6 @@ function vm_boot() {
|
|||
|
||||
echo -n " - Display: ${OUTPUT^^}, ${DISPLAY_DEVICE}"
|
||||
|
||||
if [ "${OUTPUT}" == "spice" ]; then
|
||||
OUTPUT="none"
|
||||
fi
|
||||
|
||||
# Build the video configuration
|
||||
VIDEO="-device ${DISPLAY_DEVICE}"
|
||||
|
||||
|
@ -669,17 +666,20 @@ function vm_boot() {
|
|||
fi
|
||||
VIDEO="${VIDEO} ${FULLSCREEN}"
|
||||
|
||||
if [ "${OUTPUT}" == "gtk" ]; then
|
||||
OUTPUT="${OUTPUT},grab-on-hover=on,zoom-to-fit=off"
|
||||
# GL is not working with GTK and virtio-vga
|
||||
if [ "${DISPLAY_DEVICE}" == "virtio-vga" ]; then
|
||||
GL="off"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${OUTPUT}" != "none" ]; then
|
||||
OUTPUT="${OUTPUT},gl=${GL}"
|
||||
fi
|
||||
# Map Quickemu OUTPUT to QEMU -display
|
||||
case ${OUTPUT} in
|
||||
gtk)
|
||||
DISPLAY_RENDER="${OUTPUT},grab-on-hover=on,zoom-to-fit=off"
|
||||
# GL is not working with GTK and virtio-vga
|
||||
if [ "${DISPLAY_DEVICE}" == "virtio-vga" ]; then
|
||||
GL="off"
|
||||
fi
|
||||
;;
|
||||
none|spice)
|
||||
DISPLAY_RENDER="none";;
|
||||
*)
|
||||
DISPLAY_RENDER="${OUTPUT},gl=${GL}";;
|
||||
esac
|
||||
|
||||
if [ "${GL}" == "on" ] && [[ "${DISPLAY_DEVICE}" == *"virtio"* ]]; then
|
||||
if [ "${QEMU_VER_SHORT}" -ge 61 ]; then
|
||||
|
@ -725,7 +725,7 @@ function vm_boot() {
|
|||
SPICE_PORT=$(get_port 5930 9)
|
||||
if [ -z "${SPICE_PORT}" ]; then
|
||||
echo " - SPICE: All SPICE ports have been exhausted."
|
||||
if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice-app" ]; then
|
||||
if [ "${OUTPUT}" == "none" ] || [ "${OUTPUT}" == "spice" ] || [ "${OUTPUT}" == "spice-app" ]; then
|
||||
echo " ERROR! Requested SPICE display, but no SPICE ports are free."
|
||||
exit 1
|
||||
fi
|
||||
|
@ -797,7 +797,7 @@ function vm_boot() {
|
|||
${CPU} ${SMP}
|
||||
-m ${RAM_VM} ${BALLOON}
|
||||
-smbios type=2,manufacturer="Wimpys World",product="Quickemu",version="${VERSION}",serial="jvzclfjbeyq.pbz",location="wimpysworld.com",asset="${VMNAME}"
|
||||
${VIDEO} -display ${OUTPUT}
|
||||
${VIDEO} -display ${DISPLAY_RENDER}
|
||||
-device usb-ehci,id=input
|
||||
-device usb-kbd,bus=input.0
|
||||
-device ${MOUSE},bus=input.0
|
||||
|
@ -918,12 +918,15 @@ function vm_boot() {
|
|||
${QEMU} "${args[@]}" > "${VMDIR}/${VMNAME}.log" &
|
||||
|
||||
# If output is 'none' then SPICE was requested.
|
||||
if [ ${OUTPUT} == "none" ]; then
|
||||
if [ "${OUTPUT}" == "spice" ]; then
|
||||
if [ -n "${PUBLIC}" ]; then
|
||||
spicy --title "${VMNAME}" --port "${SPICE_PORT}" --spice-shared-dir "${PUBLIC}" "${FULLSPICY}" >/dev/null 2>&1 &
|
||||
else
|
||||
spicy --title "${VMNAME}" --port "${SPICE_PORT}" "${FULLSPICY}" >/dev/null 2>&1 &
|
||||
fi
|
||||
elif [ "${OUTPUT}" == "none" ]; then
|
||||
sleep 0.25
|
||||
echo " - PID: ${VMNAME} ($(cat "${VMDIR}/${VMNAME}.pid"))"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -949,7 +952,7 @@ function usage() {
|
|||
echo
|
||||
echo "You can also pass optional parameters"
|
||||
echo " --delete : Delete the disk image."
|
||||
echo " --display : Select display backend. 'sdl' (default), 'gtk' or 'spice'"
|
||||
echo " --display : Select display backend. 'sdl' (default), 'gtk', 'none', or 'spice'"
|
||||
echo " --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)"
|
||||
echo " --ignore-msrs-always : Configure KVM to always ignore unhandle machine-specific registers"
|
||||
echo " --screen <screen> : Use specified screen to determine the window size."
|
||||
|
@ -1046,7 +1049,7 @@ else
|
|||
shift;;
|
||||
-display|--display)
|
||||
OUTPUT="${2}"
|
||||
if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then
|
||||
if [ "${OUTPUT}" != "gtk" ] && [ "${OUTPUT}" != "none" ] && [ "${OUTPUT}" != "sdl" ] && [ "${OUTPUT}" != "spice" ]; then
|
||||
echo "ERROR! Requested output '${OUTPUT}' is not recognised."
|
||||
exit 1
|
||||
elif [ "${OUTPUT}" == "spice" ] && ! command -v spicy &>/dev/null; then
|
||||
|
|
Loading…
Reference in a new issue