GNU/Linux >> Belajar Linux >  >> Linux

Alat untuk menerapkan konfigurasi RandR secara otomatis saat layar eksternal terpasang

Mengenai alat yang dapat menyimpan profil konfigurasi monitor berdasarkan per pengguna dan per tampilan, autorandr akan melakukan hal itu.

Laptop saya memiliki kartu NVIDIA, jadi saya menggunakan backend disper, bukan xrandr. Autorandr akan menggunakan disper sebagai backend untuk mengelola monitor Anda jika Anda menyebutnya sebagai autodisper . Untuk sisa postingan ini, saya akan menyebutnya sebagai autorandr untuk konsistensi.

Anda dapat menyimpan profil dengan autorandr --save profile_name . Menjalankan autorandr dengan sendirinya akan memberi Anda daftar profil, dan mengidentifikasi mana yang terdeteksi sebagai konfigurasi saat ini.

Misalnya:

$ autorandr
laptop
syncmaster19 (detected)

Anda dapat memerintahkannya untuk secara otomatis memuat profil yang sesuai untuk konfigurasi saat ini dengan autorandr --change . Perintah ini, dipasangkan dengan aturan udev untuk menjalankannya saat hotplug, akan melakukan apa yang Anda minta.

Sebagai tindakan pencegahan tambahan, saya telah menambahkan --default laptop ke perintah itu, yang akan membuatnya default ke tampilan laptop jika tidak ada profil tersimpan yang cocok dengan konfigurasi saat ini. Jadi perintah lengkap yang saya gunakan untuk mengganti tampilan adalah:

autorandr --change --default laptop

Sayangnya mesin saya tidak memberikan keluaran udev saat saya menghubungkan monitor saya. Saya menggunakan driver berpemilik NVIDIA, jadi itu tidak mengejutkan. Jadi saya telah mengikatnya ke tombol XF68Display (Fn-F8) untuk saat ini, yang hampir sama bagusnya.


Saya menggunakan skrip (buatan sendiri) sederhana ini yang membuat polling RandR dan beralih antara LVDS1 dan VGA1 saat VGA terhubung/terputus. (Untuk HDMI keluaran, dalam file skrip berikut, ubah semua VGA1 ke HDMI1 )

Ini solusi kotor, namun berfungsi dengan baik.

Ini disesuaikan untuk pengaturan saya:kemungkinan besar Anda perlu mengubah nama keluaran RandR (LVDS1 dan VGA1 ) dan tidak seperti saya, Anda mungkin akan baik-baik saja dengan mode default RandR Anda untuk VGA.

#!/bin/bash

# setting up new mode for my VGA
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080

# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to VGA and vice versa
function ActivateVGA {
    echo "Switching to VGA1"
    xrandr --output VGA1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    MONITOR=VGA1
}
function DeactivateVGA {
    echo "Switching to LVDS1"
    xrandr --output VGA1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

# functions to check if VGA is connected and in use
function VGAActive {
    [ $MONITOR = "VGA1" ]
}
function VGAConnected {
    ! xrandr | grep "^VGA1" | grep disconnected
}

# actual script
while true
do
    if ! VGAActive && VGAConnected
    then
        ActivateVGA
    fi

    if VGAActive && ! VGAConnected
    then
        DeactivateVGA
    fi

    sleep 1s
done

Langkah Lengkap:

  1. Letakkan skrip di atas (homemadeMonitor.sh ) ke direktori pilihan Anda

  2. Jadikan file .sh dapat dieksekusi dengan mengetikkan perintah berikut di terminal

    chmod +x homemadeMonitor.sh

  3. Jalankan file .sh

    ./homemadeMonitor.sh


Menanggapi bagian "[a] cara untuk mengetahui bahwa monitor telah dicolokkan":

Dukungannya masih sedikit berbeda, tetapi dengan kernel terbaru ada beberapa dukungan untuk menghasilkan acara udev saat hotplug tampilan terjadi. Dengan kernel 2.6.38 dan perangkat keras ATI X1400, saya mendapatkan kejadian saat pertama kali saya menyambungkan layar VGA tetapi tidak ada kejadian pada pemutusan atau penyambungan kembali layar selanjutnya. Perangkat keras Intel mungkin memiliki dukungan yang lebih baik. Driver berpemilik NVIDIA saat ini tidak mendukung KMS; Saya belum mencoba mencari kejadian hotplug di perangkat keras NVIDIA, tetapi saya ragu ini akan berhasil.

Jika Anda ingin bereksperimen dengan udev, Anda dapat mencoba langkah-langkah berikut:

  • perbarui ke kernel terbaru
  • pastikan bahwa pengaturan mode kernel (KMS) diaktifkan. Jika diaktifkan, itu harus dilaporkan dalam keluaran kernel Anda. Milik saya mengatakan [drm] radeon kernel modesetting enabled dan [drm] initializing kernel modesetting
  • jalankan udevadm monitor --property dan lihat apakah peristiwa dilaporkan saat Anda (melepaskan) tampilan

Jika Anda mendapatkan acara udev di display hotplug, Anda dapat memicu skrip dengan aturan udev seperti:

ACTION=="change", SUBSYSTEM=="drm", HOTPLUG=="1", RUN+="/path/to/hotplug.sh"

Catatan: Ini tidak berfungsi jika Anda menggunakan GPU nVIDIA dengan driver biner berpemilik, karena tidak menggunakan KMS. Anda tidak dapatkan acara udev apa pun.


Linux
  1. Linux – Alat Untuk Mengukur Kualitas Entropi?

  2. Blender – Alat Pembuatan 3D Sempurna untuk Linux

  3. Deepin System Monitor – Alat Monitor Sistem Bergaya untuk Deepin OS

  1. alat seperti teamviewer untuk ssh?

  2. Konfigurasi Exim4 untuk menggunakan beberapa ip eksternal untuk pengiriman email

  3. Menentukan lokasi baru untuk file konfigurasi syslinux saat menyiapkan PXELinux

  1. Menggunakan alat SS untuk pemecahan masalah jaringan

  2. Linux – Alat Untuk Menerapkan Konfigurasi Randr Secara Otomatis Saat Tampilan Eksternal Dicolokkan?

  3. Nutty – Alat Diagnostik Jaringan untuk Ubuntu