功能:完善2K串流、显示恢复与输入优化
This commit is contained in:
1 parent
e47b01beec
commit
938ec97cce
95 files changed
+5788
-72
No files matched your search
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# Install only X11 display recovery; keep the kiosk/Moonlight session running.
|
||||
set -euo pipefail
|
||||
|
||||
BOX="${VDI_BOX:-armbian@192.168.1.188}"
|
||||
REPO="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
SRC="$REPO/terminal/kiosk-shell"
|
||||
STAGE=$(ssh -o BatchMode=yes -o ConnectTimeout=8 "$BOX" 'mktemp -d /tmp/vdi-display-deploy.XXXXXX')
|
||||
scp -q "$SRC/scripts/vdi-display-guard" "$SRC/scripts/vdi-kiosk-start" \
|
||||
"$SRC/etc/vdi-display-guard.service" "$BOX:$STAGE/"
|
||||
ssh "$BOX" bash -s -- "$STAGE" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
stage=$1
|
||||
backup="$HOME/vdi-terminal/backups/display-guard-$(date +%Y%m%d-%H%M%S)"
|
||||
mkdir -p "$backup" "$HOME/vdi-terminal/bin" "$HOME/.config/systemd/user"
|
||||
for file in "$HOME/vdi-terminal/bin/vdi-kiosk-start" \
|
||||
"$HOME/vdi-terminal/bin/vdi-display-guard" \
|
||||
"$HOME/.config/systemd/user/vdi-display-guard.service"; do
|
||||
test ! -f "$file" || cp -p "$file" "$backup/"
|
||||
done
|
||||
sed -i 's/\r$//' "$stage/"*
|
||||
python3 -c 'import ast, sys; ast.parse(open(sys.argv[1]).read())' "$stage/vdi-display-guard"
|
||||
sh -n "$stage/vdi-kiosk-start"
|
||||
install -m 0755 "$stage/vdi-display-guard" "$stage/vdi-kiosk-start" "$HOME/vdi-terminal/bin/"
|
||||
install -m 0644 "$stage/vdi-display-guard.service" "$HOME/.config/systemd/user/"
|
||||
|
||||
# Correct only this monitor's known stale layout; preserve all other layouts.
|
||||
python3 - "$backup" <<'PY'
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import sys
|
||||
import xml.etree.ElementTree as ET
|
||||
path = Path.home() / '.config/monitors.xml'
|
||||
if path.exists():
|
||||
tree = ET.parse(path)
|
||||
changed = False
|
||||
for output in tree.findall('.//output'):
|
||||
if (output.get('name') == 'HDMI-1'
|
||||
and output.findtext('vendor') == 'GWR'
|
||||
and output.findtext('product') == '0x2708'
|
||||
and output.findtext('width') == '1920'
|
||||
and output.findtext('height') == '1440'
|
||||
and output.findtext('rate') == '75'):
|
||||
for name, value in [('width', '2560'), ('height', '1440'), ('rate', '60')]:
|
||||
output.find(name).text = value
|
||||
changed = True
|
||||
if changed:
|
||||
shutil.copy2(path, Path(sys.argv[1]) / 'monitors.xml')
|
||||
temp = path.with_name('monitors.xml.vdi-new')
|
||||
tree.write(temp, encoding='utf-8', xml_declaration=True)
|
||||
temp.replace(path)
|
||||
print('Updated known stale MATE layout to 2560x1440@60')
|
||||
PY
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable vdi-display-guard.service
|
||||
systemctl --user restart vdi-display-guard.service
|
||||
systemctl --user is-active vdi-display-guard.service
|
||||
echo "Backup: $backup"
|
||||
# Only remove the three files uploaded by this deployment.
|
||||
rm -- "$stage/vdi-display-guard" "$stage/vdi-kiosk-start" "$stage/vdi-display-guard.service"
|
||||
rmdir -- "$stage"
|
||||
REMOTE
|
||||
Reference in new issue
Block a user