모니터가 부분적으로 손상되었습니다. xrandr 또는 유사한 도구를 사용하여 시각적 공간을 줄이는 방법은 무엇입니까?

모니터가 부분적으로 손상되었습니다. xrandr 또는 유사한 도구를 사용하여 시각적 공간을 줄이는 방법은 무엇입니까?

보조 모니터가 화면 상단 1/3 부분이 깨져서 검은색 막대를 추가하고 아래 이미지와 같은 모습을 만들고 싶습니다. 윗부분은 지금 모든 것이 보이는 모습입니다. 아래쪽 부분은 내가 달성하고 싶은 것입니다. 나열된 해상도는 각 화면의 최대 해상도입니다.

두 번째 화면의 xrandr 출력은 다음과 같습니다.

VGA1 connected 1920x1080+1366+12 (normal left inverted right x axis y axis) 890mm x 500mm
1920x1080     60.00*+
1600x1200     60.00  
1680x1050     59.95  
1280x1024     75.02    60.02  
1440x900      74.98    59.89  
1280x960      60.00  
1360x768      60.02  
1280x800      59.81  
1152x864      75.00  
1024x768      75.08    70.07    60.00  
832x624       74.55  
800x600       72.19    75.00    60.32  
640x480       75.00    72.81    66.67    60.00  
720x400       70.08 

개략도

답변1

가능한 해결책:

빈 패널을 사용하여 손상된 부분을 덮고 남은 공간을 사용하여 창을 강제로 엽니다. 예를 들어 xfce4-panel구성할 수 있습니다. 이것이 얼마나 잘 작동하는지는 데스크탑 환경에 따라 다릅니다. 나는 Xfce와 LXDE가 잘 작동할 것이라고 생각하지만 Gnome에는 문제가 있을 것입니다. 이는 전체 화면인 Firefox+F11 또는 VLC와 같이 패널을 오버레이하는 전체 화면 응용 프로그램에는 도움이 되지 않습니다.

전체 화면 앱에 대한 해결 방법: Xephyr원하는 화면 크기로 시작하여 위치를 지정하고 그 안에서 앱을 실행합니다. 이를 자동화하려면 스크립트와 "xdotool"을 사용하십시오.

Xephyr :1 -screen 1500x800x24 &
xdotool search --name Xephyr windowmove 0 437

Xepyr 창을 사용하여 애플리케이션을 시작합니다 DISPLAY=:1 firefox. Xepyr는 하드웨어 가속을 지원하지 않지만 virtualgl여기서는 도움이 될 수 있습니다.


최상의 솔루션:

weston와 함께 사용됩니다 Xwayland. 하드웨어 가속 및 전체 화면 응용 프로그램을 지원합니다.

시작할 때 와 같은 상당히 가벼운 창 관리자를 사용하십시오 openbox(또는 예를 들어 창 장식이 전혀 없는 창 관리자가 더 좋습니다 evilwm). 이것은 단지 배경 환경일 뿐이므로 웨스턴이 이를 무시할 것입니다.

다음과 같은 사용자 정의 파일을 만듭니다 myweston.ini( 참조 man weston.ini).

[core]
shell=desktop-shell.so
idle-time=0

[shell]
panel-location=none
locking=false

[output]
name=X1
mode=1366x768

[output]
name=X2
mode=1500x768

evilwm에서 weston을 시작하고 Weston에서 Xwayland를 시작하려면 이와 같은 스크립트를 작성하십시오(2개의 weston 창 위치를 사용자 정의하십시오). 마지막으로 원하는 데스크탑 환경을 시작하십시오.

# start weston with custom config and two output windows
weston --socket=wayland-1 --config=$HOME/myweston.ini --output-count=2 >$HOME/weston.log 2>&1 &
sleep 1 # wait until weston is ready

# get window id's from logfile and move windows at target (xwininfo could give id's, too)
xdotool windowmove 0x$(printf '%x\n' $(cat $HOME/weston.log | grep 'window id' | head -n1 | rev | cut -d' ' -f1 | rev))    0 0
xdotool windowmove 0x$(printf '%x\n' $(cat $HOME/weston.log | grep 'window id' | tail -n1 | rev | cut -d' ' -f1 | rev))    1369 400

# start X server Xwayland in weston
WAYLAND_DISPLAY=wayland-1 Xwayland :1 &
sleep 1 # wait until Xwayland is ready

# start your desired desktop environment
DISPLAY=:1 startlxde

위의 시작 스크립트는 X 클라이언트에 대한 쿠키 인증을 설정하지 않습니다. 대신에 다음을 사용할 수 있습니다.x11docker쿠키 인증도 가능합니다:

# start weston and Xwayland, read X environment
read Xenv < <(x11docker --weston-xwayland --gpu --output-count=2 --westonini=$HOME/myweston.ini)

# move weston windows to target locations
xdotool windowmove $(xwininfo -name "Weston Compositor - X1" | grep "Window id" | cut -d' ' -f4) 0 0
xdotool windowmove $(xwininfo -name "Weston Compositor - X2" | grep "Window id" | cut -d' ' -f4) 1367 400

# start desired desktop environment
env $Xenv startlxde

Xwayland는 weston의 클라이언트 "창"으로 나타납니다. 아쉽게도 Weston이나 Xwayland의 버그로 인해 항상 0:0 위치에 있지는 않습니다. [META] + 마우스 왼쪽 버튼을 이용하여 Xwayland를 원하는 위치로 이동할 수 있습니다. 나는 썼다오류 보고서, 그러나 응답이 없습니다.

관련 정보