diff --git a/README.md b/README.md index 7915831..7f07e2d 100644 --- a/README.md +++ b/README.md @@ -753,6 +753,7 @@ You can also pass optional parameters --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit) --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers --screen : Use specified screen to determine the window size. + --screenpct : Percent of fullscreen for VM if --fullscreen is not specified." --shortcut : Create a desktop shortcut --snapshot apply : Apply/restore a snapshot. --snapshot create : Create a snapshot. @@ -835,6 +836,11 @@ which Quickemu sizes to 2048x1152. Without the `--screen` option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. +The '--screenpct' is an optional interger value between 25 <= pct < 100 +which will override system default screen sizes. The VM size will be +'pct' of the chosen screen. **If --fullscreen is chosen screen will be +fullsize instead of being scaled down by --screenpct value.** + # References Useful reference that assisted the development of Quickemu. diff --git a/docs/quickemu.1 b/docs/quickemu.1 index 39cefe8..a6aec18 100644 --- a/docs/quickemu.1 +++ b/docs/quickemu.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.19.2 +.\" Automatically generated by Pandoc 3.0.1 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -248,8 +248,7 @@ Mauray (https://github.com/ymauray). .PP Many thanks to Luke Wesley-Holley (https://github.com/Lukewh) and Philipp Kiemle (https://github.com/daPhipz) for creating the -\f[B]Quickemu icons (https://github.com/Lukewh/quickemu-icons)\f[R] -\[u1F3A8] +\f[B]Quickemu icons (https://github.com/Lukewh/quickemu-icons)\f[R] 🎨 .SS Quickgui for Ubuntu .IP .nf @@ -841,6 +840,12 @@ The above uses the 2560x1440 screen to compute the size of the window, which Quickemu sizes to 2048x1152. Without the \f[V]--screen\f[R] option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. +.PP +The `\[en]screenpct' is an optional integer value between 25 <= pct < +100 which will override the system default screen sizes. +The VM size will be `pct' of the chosen screen. +\f[B]If \[en]fullscreen is chosen the screen will be fullsize instead +being scaled down by \[en]screenpct value.\f[R] .SH References .PP Useful reference that assisted the development of Quickemu. diff --git a/docs/quickemu.1.md b/docs/quickemu.1.md index 54a8c1b..f366a00 100644 --- a/docs/quickemu.1.md +++ b/docs/quickemu.1.md @@ -620,6 +620,11 @@ which Quickemu sizes to 2048x1152. Without the `--screen` option, Quickemu would have used the 1920x1080 monitor which results in a window size of 1664x936. +The '--screenpct' is an optional integer value between 25 <= pct < 100 +which will override the system default screen sizes. The VM size will be +'pct' of the chosen screen. **If --fullscreen is chosen the screen will be +fullsize instead being scaled down by --screenpct value.** + # References Useful reference that assisted the development of Quickemu. diff --git a/quickemu b/quickemu index 79ee129..449133b 100755 --- a/quickemu +++ b/quickemu @@ -677,32 +677,33 @@ function vm_boot() { 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) + 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 - LOWEST_WIDTH=$(xrandr --listmonitors | grep -v Monitors | grep "^ ${SCREEN}:" | cut -d' ' -f4 | cut -d'/' -f1 | head -n1) + 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 + 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 + : + elif [ "${SCREENPCT}" ] ; then + X_RES=$(( X_RES*SCREENPCT/100 )) + Y_RES=$(( Y_RES*SCREENPCT/100 )) + elif [ "${X_RES}" -ge 3840 ]; then X_RES=3200 Y_RES=1800 - elif [ "${LOWEST_WIDTH}" -ge 2560 ]; then + elif [ "${X_RES}" -ge 2560 ]; then X_RES=2048 Y_RES=1152 - elif [ "${LOWEST_WIDTH}" -ge 1920 ]; then + elif [ "${X_RES}" -ge 1920 ]; then X_RES=1664 Y_RES=936 - elif [ "${LOWEST_WIDTH}" -ge 1280 ]; then + elif [ "${X_RES}" -ge 1280 ]; then X_RES=1152 Y_RES=648 + else + : fi fi fi @@ -1308,6 +1309,7 @@ function usage() { echo " --fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)" echo " --ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers" echo " --screen : Use specified screen to determine the window size." + echo " --screenpct : Percent of fullscreen for VM if --fullscreen is not specified." echo " --shortcut : Create a desktop shortcut" echo " --snapshot apply : Apply/restore a snapshot." echo " --snapshot create : Create a snapshot." @@ -1472,6 +1474,7 @@ PUBLIC="" PUBLIC_PERMS="" PUBLIC_TAG="" SCREEN="" +SCREENPCT="" SHORTCUT=0 SNAPSHOT_ACTION="" SNAPSHOT_TAG="" @@ -1551,6 +1554,22 @@ else SCREEN="${2}" shift shift;; + -screenpct|--screenpct) + if [ ! -z "${2##*[!0-9]*}" ] ; then + if [[ ${2} -ge 25 && ${2} -lt 100 ]] ; then + SCREENPCT=${2} + else + echo "screenpct invalid must be 25 <= pct < 100" + usage + exit 1 + fi + else + echo "screenpct needs to be an integer in range 25 <= pct < 100" + usage + exit 1 + fi + shift + shift;; -snapshot|--snapshot) SNAPSHOT_ACTION="${2}" if [ -z "${SNAPSHOT_ACTION}" ]; then