Spice (spice-vdagent XFCE/Mate) redimensionnement automatique - Solution Virtmanager/Proxmox

time6 mo agoview0 views

COMMANDE UTILISÉE DANS LA VIDÉO

  On commence par installer les trois paquets essentiels...

  • sudo apt update && sudo apt install qemu-guest-agent spice-vdagent spice-webdavd

  Création règle "udev" qui sera déclenchée lors du redimensionnement de la fenêtre "virt-viewer"...

  • sudo nano /etc/udev/rules.d/50-x-resize.rules

  Ajout de la ligne suivante au fichier de règles vide...

  • ACTION=="change",KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/usr/local/bin/x-resize"

  Création du script qui sera exécuté lorsque la règle sera déclenchée...

  • sudo nano /usr/local/bin/x-resize

  Ajout du contenu suivant au fichier (script) vide...

#!/bin/bash

Bash required

Should be run as root and saved to /usr/local/bin/x-resize

Requies udev rule: /etc/udev/rules.d/50-x-resize.rules

udev rule content: ACTION=="change",KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/usr/local/bin/x-resize"

Make sure auto-resize is enabled in virt-viewer/spicy

Credit for Finding Sessions as Root: https://unix.stackexchange.com/questions/117083/how-to-get-the-list-of-all-active-x-sessions-and-owners-of-them

Credit for Resizing via udev: https://superuser.com/questions/1183834/no-auto-resize-with-spice-and-virt-manager

Ensure Log Directory Exists

LOG_DIR=/var/log/autores; if [ ! -d $LOG_DIR ]; then mkdir $LOG_DIR; fi LOG_FILE=${LOG_DIR}/autores.log

Function to find User Sessions & Resize their display

function x_resize() { declare -A disps usrs usrs=() disps=() for i in $(users);do [[ $i = root ]] && continue # skip root usrs[$i]=1 done for u in "${!usrs[@]}"; do for i in $(sudo ps e -u "$u" | sed -rn 's/.* DISPLAY=(:[0-9])./\1/p');do disps[$i]=$u done done for d in "${!disps[@]}";do session_user="${disps[$d]}" session_display="$d" session_output=$(sudo -u "$session_user" PATH=/usr/bin DISPLAY="$session_display" xrandr | awk '/ connected/{print $1; exit; }') echo "Session User: $session_user" | tee -a $LOG_FILE; echo "Session Display: $session_display" | tee -a $LOG_FILE; echo "Session Output: $session_output" | tee -a $LOG_FILE; sudo -u "$session_user" PATH=/usr/bin DISPLAY="$session_display" xrandr --output "$session_output" --auto | tee -a $LOG_FILE; done } echo "Resize Event: $(date)" | tee -a $LOG_FILE x_resize

  Rendre le fichier (script) exécutable...

  • sudo chmod +x /usr/local/bin/x-resize

    BONUS

  Depuis la réalisation de cette vidéo, un dépôt GitHub existe...

  • https://github.com/anyblabla/spice-resize
Loading comments...