summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2020-01-16 13:25:45 +0100
committerJonathan Bauer2020-01-16 13:25:45 +0100
commit0c049cf3cb2adde76abe46f8cde692b841cf95e7 (patch)
tree76df7125938afdd003164dde2627a1b836984fed
parent[pam-slx-plug] fix exec_auth_final always exiting (diff)
downloadmltk-0c049cf3cb2adde76abe46f8cde692b841cf95e7.tar.gz
mltk-0c049cf3cb2adde76abe46f8cde692b841cf95e7.tar.xz
mltk-0c049cf3cb2adde76abe46f8cde692b841cf95e7.zip
[run-virt/vbox-src] initial multi-monitor support
-rw-r--r--core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/set_runvirt_hardware_variables.inc12
-rw-r--r--core/modules/run-virt/data/opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc15
-rwxr-xr-xcore/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/includes/finalize_machine_config.inc12
3 files changed, 33 insertions, 6 deletions
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/set_runvirt_hardware_variables.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/set_runvirt_hardware_variables.inc
index 414c654a..91577f71 100644
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/set_runvirt_hardware_variables.inc
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/set_runvirt_hardware_variables.inc
@@ -151,6 +151,15 @@ set_serial_ports() {
readonly SERIAL0 PARALLEL0
}
+get_display_count() {
+ declare -g DISPLAY_COUNT="$(xrandr | grep -c -w 'connected')"
+ if ! [[ "$DISPLAY_COUNT" =~ ^[1-9]$ ]]; then
+ writelog "Weird monitor count detected ($DISPLAY_COUNT). Falling back to 1."
+ DISPLAY_COUNT=1
+ fi
+ readonly DISPLAY_COUNT
+}
+
## MAIN ##
call_post_source \
import_hwinfo \
@@ -158,5 +167,6 @@ call_post_source \
set_virt_mac \
set_virt_hostname \
set_serial_ports \
- check_optical_drives
+ check_optical_drives \
+ get_display_count
diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc
index c077bb42..f589d2b6 100644
--- a/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc
+++ b/core/modules/run-virt/data/opt/openslx/vmchooser/run-virt.d/setup_virtual_floppy.inc
@@ -112,10 +112,17 @@ setup_virtual_floppy() {
${RESOLUTION}
EOF
- cat > "${FLOPPYDIR}/openslx.ini" <<-EOF
- [openslx]
+ (
+ echo '[openslx]'
+ # Ugly hack for multi-monitor support with virtualbox.
+ # The guest additions properly set up the resolutions of multiple
+ # monitor, thus we need to disable the resolution feature of
+ # the openslx.exe as it would break what virtualbox did.
+ if [ "$PLUGIN_ID" = "vmware" ] || [ "$PLUGIN_ID" = "virtualbox" -a "$DISPLAY_COUNT" -eq 1 ]; then
+ echo "resolution=$RESOLUTION"
+ fi
+ cat <<-EOF
username=${UNAME}
- resolution=${RESOLUTION}
createMissingRemap=${SHARE_CREATE_MISSING_REMAP}
remapMode=${SHARE_REMAP_MODE_INI}
homeDrive=${SHARE_HOME_DRIVE}
@@ -133,7 +140,7 @@ setup_virtual_floppy() {
media=${SHARE_MEDIA}
other=${SHARE_OTHER}
EOF
-
+ ) > "${FLOPPYDIR}/openslx.ini"
ln -n -s "${VMCHOOSER_DIR}/data/openslx.exe" "${FLOPPYDIR}/openslx.exe"
# If we have a kerberos ticket, copy that one too (TODO: Copy keytab too?)
if [ -n "$KRB5CCNAME" ]; then
diff --git a/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/includes/finalize_machine_config.inc b/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/includes/finalize_machine_config.inc
index 5b672f02..06e7c7b7 100755
--- a/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/includes/finalize_machine_config.inc
+++ b/core/modules/vbox-src/data/opt/openslx/vmchooser/plugins/virtualbox/includes/finalize_machine_config.inc
@@ -186,8 +186,18 @@ setup_sound() {
set_attr "/VirtualBox/Machine/Hardware/AudioAdapter" "driver" "ALSA"
}
-finalize_machine_config() {
+setup_displays() {
+ # even though it's more than enough RAM for screens, just
+ # use 128MB for one or 256MB for more screens.
+ local vram_size="128"
+ if [ "$DISPLAY_COUNT" -ge 2 ]; then
+ vram_size="256"
+ fi
+ set_attr "/VirtualBox/Machine/Hardware/Display" "monitorCount" "${DISPLAY_COUNT}"
+ set_attr "/VirtualBox/Machine/Hardware/Display" "VRAMSize" "$vram_size"
+}
+finalize_machine_config() {
# set the generated machine uuid
set_attr "/VirtualBox/Machine" "uuid" "{${MACHINE_UUID}}"
setup_usb