การเปลี่ยนความละเอียดหน้าจอ / เรขาคณิตของ vncserver โดยไม่ใช้ randr ใน Linux


9

ฉันต้องการเปลี่ยนความละเอียด / รูปทรงเรขาคณิตของเซสชัน VNC ของฉันแบบไดนามิกโดยไม่กระทบกับโปรแกรมที่ทำงานอยู่ภายใน

ผมเรียก: การเปลี่ยนความละเอียดของเซสชั่น VNC ในลินุกซ์ ฉันไม่ได้รับอนุญาตให้รูทอัปเดต vncserver เวอร์ชันที่ใหม่กว่าดังนั้นคำสั่งต่อไปนี้จะไม่ทำงานในขณะนี้:

vncserver -geometry 1280x1024 -randr 1280x1024,1280x800

สำหรับตอนนี้เมื่อใดก็ตามที่ฉันต้องการเปลี่ยนขนาดหน้าจอจากจอภาพหนึ่งเป็นจอภาพอื่นฉันจะฆ่าเซสชันและเริ่มใหม่ด้วย-geometryตัวเลือกที่ปรับเปลี่ยน ด้วยเหตุนี้ฉันต้องหลวมโปรแกรมภายใน

มีวิธีใดบ้างที่จะแฮกไฟล์ที่เก็บรูปทรงเรขาคณิตและเปลี่ยนค่าสำหรับเปลี่ยนความละเอียด ฉันไม่พบไฟล์ดังกล่าว ในโฟลเดอร์บ้านของฉันฉันเห็นไฟล์ด้านล่าง:

mgandhi@starbase:~/.vnc$ ll
total 12
-rwxr-xr-x 1 mgandhi bc  334 Jun 25 10:32 xstartup
-rw------- 1 mgandhi bc    8 Jun 25 10:32 passwd
-rw-r--r-- 1 mgandhi bc    6 Jun 25 11:08 starbase.radisys.com:23.pid
-rw-r--r-- 1 mgandhi bc 1664 Jun 25 11:08 starbase.radisys.com:23.log

เนื้อหาของxstartupไฟล์ไม่ได้ช่วย:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

... xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &บรรทัดที่นี่จะคงที่สำหรับการแก้ไขใด ๆ

[หมายเหตุ: ฉันเห็นว่าxrandrติดตั้งในเครื่อง linux]

คำตอบ:


4

วิธีการ "แฮ็ก": เริ่ม vncserver โดยไม่ระบุรูปทรงเรขาคณิตใด ๆ

vncserver :1

จากนั้นฉันจะเชื่อมต่อกับ vnc และใน Fedora ฉันจะเข้าไปที่การตั้งค่า> หน้าจอ> ไม่ทราบ 0 "และเปลี่ยนความละเอียดแบบทันทีคลิกนี้แทนที่จะคลิก (DX) แต่มันง่าย


1
ตัวเลือกนี้ส่งผลให้ "ไม่สามารถระบุรุ่น xrandr" และไม่มีอะไรเพิ่มเติม: - / (Debian 8) แต่ดูน่าสนใจ
m3nda

1

ตั้งค่าตัวเลือกรูปทรงเรขาคณิตในไฟล์กำหนดค่า systemd (หรือสคริปต์เริ่มทำงานที่เหมาะสม) ~ ตัวอย่างนี้ใช้งานได้กับ Fedora 28 (สมมติว่าตัวอธิบายไฟล์ selinux ได้รับการแก้ไข)

แทนที่ USERNAME ด้วยชื่อผู้ใช้จริง:

cat /etc/systemd/system/vncserver@\:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=USERNAME

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024
PIDFile=/home/USERNAME/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

1

คำตอบข้างต้นสำหรับ Fedora ไม่ได้ผลสำหรับฉัน (RedHat Enterprise) ฉันสามารถบรรลุสิ่งที่คุณต้องการในขั้นตอนเหล่านี้:

1) เข้าสู่เซสชัน VNC ของคุณ (ปัจจุบัน)

2) เปิดเทอร์มินัลและประเภท: xrandr -s 1920x1080 (หรือเรขาคณิต / จอแสดงผลที่รองรับอื่น *)

เพื่อดูการแสดง / ความละเอียดที่รองรับ randr ให้พิมพ์:

xrandr (โดยไม่มีอาร์กิวเมนต์)

ง่ายและไม่มีอะไรแฟนซี!


0

$HOME/.vnc/xstartupเป็นไฟล์ที่คุณกำลังมองหาและใช่คุณสามารถกำหนดรูปทรงเรขาคณิตที่นั่น ควรปรับการเชื่อมต่อใหม่โดยไม่ต้อง borking เซสชันของคุณ (ไม่แน่ใจ 100% แต่ค่อนข้างแน่ใจ)


1
มันจะมีประโยชน์มากขึ้นที่จะแสดงกว่าที่จะบอก
scottlittle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.