태그 보관물: multiple-monitors

multiple-monitors

사용 가능한 출력 변경에 따라 xfce를 자동으로 조정하려면 어떻게해야합니까? 못한 것은 사용 가능한

xfce에서 설정-> 디스플레이를 실행하여 선호하는 출력 모니터를 변경할 수 있습니다. 내가 찾지 못한 것은 사용 가능한 출력의 변화에 ​​따라 자동으로 조정하는 것입니다.

예를 들어, DVI 디스플레이를 사용하고 있지만 랩톱을 도킹 해제하면 XFCE는 더 이상 작동 디스플레이가없고 출력을 변경한다는 것을 자동으로 인식하지 못합니다. 그놈은 어떤 서비스를했는지 잘 모르지만이 작업을 수행했습니다. 항상 적어도 하나의 작업 출력을 자동으로 유지하는 방법을 원합니다.

참고 : 이것은 내 다른 질문과 관련이 있습니다. 데스크탑 환경이 아닌 창 관리자를 사용하는 경우 자동 도킹 / 도킹 해제 업데이트를 어떻게 받습니까? 이지만 xfce 전용이며 일반적인 창 관리자가 아닙니다.



답변

$ xrandr --auto

xrandr 매뉴얼 페이지에서 :

–auto : 연결되었지만 비활성화 된 출력의 경우 선호 모드 (또는 선호 모드가없는 경우 96dpi에 가까운 것)를 사용하여 활성화합니다. 연결이 해제되었지만 활성화 된 출력의 경우 비활성화됩니다.


답변

:이 질문은 유닉스 StackExchange에 대한 답변 /unix/101809/how-can-i-automatically-update-my-monitor-layout-in-xfce/120945#120945 그렇지 않은 이후, 그러나 이 질문을 다른 사이트의 질문과 중복으로 표시 할 수 있습니다. 여기에 답을 복사하겠습니다.


한 가지 방법은 udev 규칙을 만드는 것이지만 좀 더 이식성이 좋은 것을 원했기 때문에이 bash 스크립트가 있습니다. 그것은 inotifywait 지원에 의존하고, 어떤 종류의 루프가 없으며 효율적인 것으로 간주됩니다.

external-lcd.sh

#!/bin/sh
# inspired of:
#   http://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-   when-external-display-is-p
#   http://ozlabs.org/~jk/docs/mergefb/
#   http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/181543#181543

export MONITOR2=/sys/class/drm/card0-VGA-1/status

while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;

dmode="$(cat $MONITOR2)"

do
    if [ "${dmode}" = disconnected ]; then
         /usr/bin/xrandr --auto
         echo "${dmode}"
    elif [ "${dmode}" = connected ];then
         /usr/bin/xrandr --output VGA1 --auto --right-of LVDS1
         echo "${dmode}"
    else /usr/bin/xrandr --auto
         echo "${dmode}"
    fi
done

파일을 실행 파일로 만드는 것을 잊지 마십시오 ( chmod +x external-lcd.sh). 그런 다음 DE를 시작할 때마다 시작하십시오.

나는 이것을 archlinux에서 사용하고 있으므로 작동해야한다고 생각한다. xrandr 매개 변수를 변경하거나 arandr 구성을 사용하도록 스왑 할 수 있습니다.


답변

데스크톱 불가지론 적 하드웨어 이벤트 감지 ( udev) 기술이 xfce와 같은 취미 프로젝트에 새로운 기술이기 때문에 그러한 옵션은 없습니다 .

당신은 좋은 결과를 파고 얻을 수 있습니다 D-Busudev. 우선 udev가 remove 이벤트실행하지 않는 것을 살펴보십시오 .


답변