From 945ad48cd8029fa77a643e00c7fd350e98cacca0 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 9 May 2021 23:40:34 -0400 Subject: [PATCH] system: vm-image.tmpl: Add a crutch to allow refreshing the resolution. Inspired by https://github.com/jollheef/appvm/commit/1270b2e209bc002e69bbe6351ad5b04b7facfcc8. The price to pay is about 5% of a CPU core usage in the guest in the worst scenario. * gnu/system/examples/vm-image.tmpl (auto-update-resolution-crutch): New mcron job. [services]: Extend the mcron-service with it. --- gnu/system/examples/vm-image.tmpl | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl index 1a2dfca452..697019e877 100644 --- a/gnu/system/examples/vm-image.tmpl +++ b/gnu/system/examples/vm-image.tmpl @@ -5,7 +5,7 @@ ;; (use-modules (gnu) (guix) (srfi srfi-1)) -(use-service-modules desktop networking spice ssh xorg) +(use-service-modules desktop mcron networking spice ssh xorg) (use-package-modules bootloaders certs fonts nvi package-management wget xorg) @@ -24,6 +24,18 @@ Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation. accounts.\x1b[0m ")) +;;; XXX: Xfce does not implement what is needed for the SPICE dynamic +;;; resolution to work (see: +;;; https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/142). Workaround it +;;; by manually invoking xrandr every second. +(define auto-update-resolution-crutch + #~(job '(next-second) + (lambda () + (setenv "DISPLAY" ":0.0") + (setenv "XAUTHORITY" "/home/guest/.Xauthority") + (execl (string-append #$xrandr "/bin/xrandr") "xrandr" "-s" "0")) + #:user "guest")) + (operating-system (host-name "gnu") (timezone "Etc/UTC") @@ -89,6 +101,9 @@ root ALL=(ALL) ALL ;; integration with the host, etc. (service spice-vdagent-service-type) + (simple-service 'cron-jobs mcron-service-type + (list auto-update-resolution-crutch)) + ;; Use the DHCP client service rather than NetworkManager. (service dhcp-client-service-type))