Cara menulis skrip bash untuk mengonfigurasi display saya ketika HDMI dicolokkan atau dicabut


8

Saya memiliki notebook yang menjalankan Kubuntu Precise (12.04) yang sesekali saya gunakan untuk menonton video. Ketika saya melakukannya, saya pasang kabel HDMI yang terhubung ke penerima A / V dengan monitor HDMI yang terpasang padanya.

Ketika saya menonton video dengan cara ini, saya masih perlu menggunakan layar notebook ketika saya berinteraksi dengan sistem untuk mengontrol pemutaran, dll. Teks pada monitor HDMI sulit dibaca dari tempat saya duduk.

Ketika saya mencolokkan kabel HDMI, Kubuntu mendeteksinya, tetapi saya harus melalui urutan tarian aneh (yang bekerja, tetapi berbelit-belit) untuk membuatnya setup dengan benar setiap kali untuk video dan audio. Untuk memperbaikinya, saya mencoba menulis skrip bash dengan xrandrmelakukannya dengan benar pertama kali.

Saya mendapat ide dasar dari jawaban Peoro untuk U&L Q&A berjudul: Alat untuk secara otomatis menerapkan konfigurasi RandR ketika layar eksternal dicolokkan .

Tentang skrip saya

Skrip saya (termasuk di bawah) berfungsi, tetapi perlu diperbaiki.

Ini mengatur mode video dengan benar untuk monitor HDMI, tetapi monitor LVDS1 (pada notebook) berubah untuk hanya menampilkan bagian kiri atas desktop - yang merupakan masalah karena memotong bilah gulir jendela di sebelah kanan dan bilah tugas menyala bagian bawah.

Saya mencoba memperbaiki ini dengan --scale, tetapi upaya pertama saya mengacaukan semuanya sehingga saya harus reboot untuk mendapatkan tampilan yang berfungsi kembali.

Apakah ada cara untuk membuat kedua layar menampilkan konten yang sama, tetapi dengan masing-masing layar menggunakan resolusi pilihan yang terpisah?

Atau, setidaknya, cara mengatur tampilan notebook sehingga seluruh desktop masih dapat diakses ketika layar HDMI sedang digunakan?

Karena saya sedang men-debug script, itu belum dibersihkan. Saya mungkin ingin membuatnya lebih banyak nanti.

Naskah saya

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## /unix/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p
## Answer by peoro

# 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

##source $HOME/bin/bash_trace
# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to HDMI and vice versa
function ActivateHDMI {
    echo "Switching to HDMI"
    ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    ##xrandr --output HDMI1 --same-as LVDS1
    xrandr --output HDMI1 --mode 1920x1080
    xrandr --output LVDS1 --mode 1366x768
    MONITOR=HDMI1
}
function DeactivateHDMI {
    echo "Switching to LVDS1"
    xrandr --output HDMI1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

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

## MONITOR doesn't do anything because it's not preserved between script executions
# actual script
##while true
##do
    if HDMIConnected
    then
        ActivateHDMI
    fi

    if ! HDMIConnected
    then
        DeactivateHDMI
    fi

    ##sleep 1s
##done

Output dari xrandr

Inilah yang dilihat xrandr:

bigbird@ramdass:~$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   720x480        59.9  
   640x480        60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)

Jawaban:


3

Anda mungkin sebaiknya menggunakan layar saja, yang seharusnya menyelesaikan semua masalah Anda. Ini akan mengingat pengaturan layar yang sebelumnya terhubung dan akan mengembalikannya, setelah Anda menghubungkannya lagi.

Jika Anda masih memiliki masalah seperti itu saat masih menggunakan kscreen, itu harus bernilai laporan bug .

Seperti Kubuntu 12.04 ini cukup lama, Anda mungkin harus melihat di ini .


Molly suci! Ppa itu memberi saya 347 pembaruan! Saya tidak tahu mengapa saya tidak menginstalnya sebelumnya. Dan, itu sebelum menginstal kscreen. Sekarang jika itu hanya akan mengalihkan suara (phonon) ke dan dari HDMI juga ... Saya akan kembali ke sini setelah upgrade selesai dan saya dapat menguji kscreen.
Joe

Peralihan suara dinamis berfungsi dengan baik jika Anda mengkonfigurasi prioritas perangkat dalam konfigurasi Phonon.
Elias Probst

kscreen benar-benar batu! Terima kasih. Sekarang saya hanya harus membiasakan diri atau memperbaiki segala sesuatu yang ppa diperbarui. Saya masuk ke Pengaturan Sistem-> Multimedia-> Pengaturan Audio dan Video dan memindahkan Audio Digital Stereo Built-in (HDMI) di atas Audio Analog Stereo Built-In, tetapi tidak ada perpindahan audio yang terjadi ketika saya mencolokkan / cabut kabel HDMI saya. Apa lagi yang saya lewatkan?
Joe

Aplikasi apa yang terpengaruh / tidak mengalihkan output?
Elias Probst

Saya baru saja memutakhirkan dari kubuntu 12.04 ke 14.04.1. Saya menunggu untuk berkomentar karena saya berharap itu akan membantu, tetapi tidak ada yang berubah. Saya masih harus mengganti audio secara manual. Saya pikir saya akan membuka pertanyaan baru di SE. Tanyakan Ubuntu. Saya tidak berpikir ada saklar audio. Saya baru saja mencoba vlc, dragonplayer, dan amarok.
Joe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.