#!/bin/sh virtdir=~/.local/share/virt halfram() { awk '/^MemTotal/ { printf "%dM\n", $2/2/1024 }' /proc/meminfo; } # Needs to be either in M or G according to man page halfthreads() { echo $(( $(nproc) / 2 )); } startvm() { qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -m $(halfram) \ -smp $(halfthreads) \ -net nic \ -display sdl,gl=on \ -audiodev pa,id=pa1,server=/run/user/1000/pulse/native \ -soundhw all \ -boot menu=on \ -drive file="$virtdir/$1.img" \ ; } #-vga none \ #-nographic \ vms="$(ls $virtdir)" [ -n "$1" ] && vm="$1" || vm=$(echo "$vms" | sed 's/\.img//' | dmenu -p "Choose Virtual Machine Image or Enter Name for New Virtual Machine") if echo "$vms" | grep "^$vm.img$" >/dev/null; then startvm "$vm" else qemu-img create -f qcow2 "$virtdir/$vm.img" $(echo -n "4G\n8G\n16G\n32G" | dmenu -p "Choose Size of Virtual Machine \"$vm\"") fi