Saya mencoba menjalankan skrip yang terletak usr/local/bin/
ketika saya menghubungkan monitor eksternal ke laptop saya. Saya telah mencoba menambahkan udev
aturan baru tetapi itu tidak berhasil. Saya membuat file baru dengan /etc/udev/rules.d
nama vga-monitor-connect.rules
. Isi file itu
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/panel-fix"
Saya mengambil garis dari jawaban ini
Setelah mencari online saya juga mencoba aturan berikut
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/rumesh/.Xauthority", RUN+="/usr/local/bin/panel-fix"
Namun ini juga tidak berhasil.
Saya telah menjalankan skrip secara manual dan saya dapat mengonfirmasi bahwa skrip tersebut berfungsi sehingga tidak ada masalah dengan skrip saya.
Saya juga ingin menjelaskan bahwa saya tidak tahu banyak tentang udev
sehingga aturan yang saya gunakan mungkin salah. Jika ada yang tahu aturan yang tepat untuk masalah saya, silakan tinggalkan jawaban.
Kartu grafis saya adalah chipset terintegrasi Intel GM965
Jawaban:
Cara alternatif untuk menjalankan perintah jika layar terhubung atau terputus
Solusi alternatif adalah menjalankan skrip latar belakang kecil. Menjalankan skrip di bawah ini di latar belakang, saya tidak bisa mengukur peningkatan beban prosesor apa pun.
Ini adalah cara mudah yang mudah untuk menjalankan skrip, atau perintah lainnya, setiap kali layar kedua terhubung atau terputus.
Contoh skrip
xrandr
(ingat ruang setelah "terhubung" untuk mencegah kecocokan salah dengan "terputus"). Setiap kejadian mewakili layar yang terhubung.Naskah
Cara Penggunaan
connect_screen.py
Di bagian kepala, setel perintah untuk dijalankan pada koneksi (saya set "gedit" sebagai contoh, ingat tanda kutip). Juga dimungkinkan untuk mengatur perintah pada disconnect. Lain pergi
disconnect_command = ""
seperti itu.Jika Anda menggunakan perintah disconnect-, batalkan komentar pada baris:
dan berikan komentar:
Seperti yang ditunjukkan dalam skrip
Jika semua berfungsi dengan baik, tambahkan ke aplikasi startup Anda: Dash> Aplikasi Startup> Tambahkan perintah:
Ini
sleep 15
adalah untuk membuat desktop memulai sepenuhnya sebelum skrip mulai berjalan. Hanya untuk memastikan.EDIT
Cara menjalankan skrip saat memulai dengan cara "pintar".
Waktu istirahat
sleep 15
seharusnya bekerja secara umum, tetapi karena waktu start up berbeda per sistem, Mungkin perlu beberapa percobaan untuk menemukan waktu istirahat yang tepat. Dengan tambahan kecil, skrip menjadi "pintar", dan menungguxrandr
perintah untuk berhasil sebelum memulai skrip yang sebenarnya. Jika Anda menggunakan versi di bawah ini, Anda hanya perlu menambahkan perintah:ke Aplikasi Startup Anda. Penggunaan lebih lanjut persis sama dengan versi di atas.
Naskah
sumber
$PATH
dengan ekstensi file, dan dengan bahasa sebelumnya adalah solusi yang tidak terlalu elegan. Pertanyaannya adalah apakah Anda ingin menjalankannya untuk satu pengguna atau untuk semua pengguna. Dalam kasus terakhir, setup lain dari yang disarankan diperlukan, tetapi lebih disukai bukan yang Anda sarankan :). Thesleep 15
mungkin tidak cukup, tetapi solusi yang lebih elegan bisa membuat istirahat "pintar", biarkan script mencoba / kecuali untuk memulai sampai prosedur startup "siap" untuk script untuk menjalankan. Akan menjadi tambahan kecil. Biarkan aku tahu.$PATH
seharusnya tidak memiliki ekstensi bahasa dan dapat dieksekusi, jadi jalankan tanpapython3
melihat lintian.debian.org/tags/script-with-language-extension.htmlconnect_screen
Ini dapat dicapai dari mengikuti skrip bash juga.
sumber