Bagaimana cara saya memperbarui tata letak monitor saya secara otomatis di XFCE?

9

Saya punya laptop yang biasanya merapat ke monitor besar. Ketika merapat, saya ingin menggunakan monitor besar sebagai tampilan utama, dengan layar laptop sebagai tampilan sekunder di sebelah kanan. Saat dicabut, layar laptop adalah satu-satunya tampilan.

XFCE tampaknya tidak memiliki dukungan multi-monitor semacam itu. Saya menemukan ARandR , yang memungkinkan saya mengatur monitor seperti yang saya inginkan. Saya dapat menggunakan ARandR untuk menyimpan profil untuk konfigurasi dock dan undocked (yang sebenarnya hanya skrip shell yang menjalankan xrandr ).

Tetapi bagaimana cara saya mendapatkan profil tersebut untuk diterapkan secara otomatis ketika laptop di-dock dan undocked? Haruskah saya mencoba membuat aturan udev yang mendeteksi stasiun dok? Apakah ada cara yang lebih baik?

cjm
sumber
Belum mengujinya, tetapi x-on-resize dikembangkan oleh salah satu pengembang X untuk melakukan hal ini.
Mikel

Jawaban:

5

Salah satu caranya adalah dengan membuat aturan udev, tetapi karena saya menginginkan sesuatu yang lebih portabel, saya memiliki skrip bash ini. Itu bergantung pada dukungan menunggu inotify, tidak memiliki semacam loop dan dianggap efisien.

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 

Jangan lupa untuk membuat file tersebut dapat dieksekusi ( chmod +x external-lcd.sh). Kemudian mulai saja setiap kali Anda meluncurkan DE Anda.

Saya menggunakan ini di archlinux jadi saya pikir itu harus berfungsi. Anda dapat mengubah parameter xrandr atau menukar dengan menggunakan konfigurasi arandr.

phoops
sumber