Bagaimana saya bisa menjalankan skrip yang dimulai sebelum layar login saya?

17

Saya sedang mengkalibrasi layar sentuh saya, dan melihat bahwa alat terbaik di sekitar adalah xinput_calibrator. Jadi saya menggunakannya. Ini memiliki dua opsi (salah satunya tidak berfungsi), jadi saya di sini untuk yang kedua. Dikatakan saya harus menjalankan perintah ini "dalam skrip yang dimulai dengan sesi X Anda":

xinput set-int-prop "3M 3M USB Touchscreen - EX II" "Evdev Axis Calibration" 32 14410 2146 14574 2115

Jadi saya mencoba ~/.xinitrc, ~/.xsessiondan ~/.xsessionrcsemuanya tidak ada. Jadi saya membuat mereka dan konten yang tepat adalah perintah ini. Dua file pertama membuat login saya gagal (setelah saya login, saya kembali ke layar login).

Dengan file terakhir, kalibrasi berfungsi, tetapi hanya setelah masuk ...

Saya perlu perintah itu untuk dijalankan sebelum dialog login muncul. Saya berpikir untuk menambahkan perintah ini ke akhir /etc/X11/xinit/xinitrctanpa hasil (tidak ada yang berubah). Juga, saya mencoba menambahkannya ke akhir /etc/X11/Xsession.d/40x11-common_xsessionrc(setelah memeriksa beberapa file), tetapi hasilnya persis sama dengan menambahkannya ~/.xsessionrc.

Bagaimana saya bisa menjalankan perintah ini sebelum layar masuk muncul (apakah ini sebelum manajer jendela dimulai, atau sebelum sesi X dimulai)?

(Saya menjalankan Kubuntu dengan window manager default, jika itu penting)

PEMBARUAN Saat saya menggunakan Kubuntu, manajer tampilan saya adalah kdm. Seperti yang disarankan oleh jawaban yang diterima, saya mengedit file /etc/kde4/kdm/Xsetup, dan seperti yang disebutkan di sini saya menambahkan perintah sebelum perintah yang ada secara default. Dan itu bekerja seperti pesona :)

jadkik94
sumber
4
Manajer login apa yang Anda gunakan? Untuk gdm3 Anda mungkin dapat menggunakan /etc/gdm3/Init/displayatau /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel
Hei, barang bagus. Saya telah memposting pertanyaan di sini [ unix.stackexchange.com/questions/172007/… yang ditandai sebagai kemungkinan duplikat untuk Tanya Jawab ini. Namun, kawan, saya tidak yakin itu adalah tiruan. Tolong lihat juga pertanyaan saya dan bantu saya :)
kaiwan

Jawaban:

13

Semua file yang Anda coba ubah dibaca setelah Anda masuk. Selanjutnya, ~/.xinitrcdan ~/.xsessionmerupakan set lengkap perintah yang berjalan dalam satu sesi; ~/.xinitrcdibaca jika Anda menjalankan xinitatau startxdari prompt mode teks, dan ~/.xsessiondibaca jika Anda menjalankan "sesi khusus" (namanya mungkin berbeda) dari prompt login grafis.

Anda perlu mengonfigurasi pengelola tampilan Anda , program yang menampilkan permintaan masuk. Untuk kdm, manajer tampilan KDE, tambahkan perintah Anda ke /etc/kde4/kdm/Xsetup(atau /etc/kde3/kdm/Xsetupuntuk versi yang lebih lama) (itu adalah jalur di Debian, saya belum memverifikasi bahwa Kubuntu menggunakan jalur yang sama).

Untuk gdm (pengelola tampilan Gnome), tambahkan perintah Anda ke /etc/gdm/Init/Default. Untuk xdm (manajer tampilan X tradisional), tambahkan perintah Anda ke /etc/X11/xdm/Xsetup.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih untuk penjelasannya! Saya mencoba apa yang Anda sarankan tanpa hasil. Saya menemukan Xsetupfile (di jalan yang sama yang Anda sebutkan) dan menambahkan perintah. Kalibrasi tidak berfungsi, tetapi saya memastikan itu dijalankan, dengan menambahkan echo "w" > /test.log, dan memverifikasi /test.logmemang ada setelah reboot. Mungkinkah itu xinputmemerlukan "konteks" khusus atau sesuatu ...?
jadkik94
Sebenarnya, abaikan komentar terakhir. Saya mengalihkan xinputperintah ke file itu, dan sepertinya saya telah menambahkan spasi ke nama perangkat yang membuat kalibrasi tidak berfungsi. Anda 100% benar :) Terima kasih lagi.
jadkik94
5
Dan hanya untuk menyelesaikan jawaban - untuk mencari tahu apa yang manajer tampilan Anda (tidak harus bingung dengan lingkungan desktop) penggunaan: cat /etc/X11/default-display-manager.
Nux
Bagaimana dengan xserverrc? Dan yang ada di /etc/X11/xinit/xserverrcdalamnya?
CMCDragonkai
1
@ CMCDragonkai Jika ada manajer tampilan, startxtidak digunakan. Skrip inisialisasi pengelola tampilan tidak akan relevan di sini karena dijalankan sebelum pengguna masuk.
Gilles 'SO-stop being evil'
4

Saya sarankan Anda membuat file konfigurasi Anda sendiri, contoh sederhana:

/usr/lib/X11/xorg.conf.d/20-calibration.conf

Isi dokumen:

Section "InputClass"
         Identifier "Calibration"
         MatchProduct "3M 3M USB Touchscreen - EX II"
         Option "Calibration" "14410 2146 14574 2115"
EndSection

Itu harus melakukan trik.

ortang
sumber
-1

Anda dapat mencoba /etc/rc.local?

.

amarc
sumber
4
Saya khawatir skrip akan berjalan sebelum X bahkan dimulai (seperti yang saya mengerti), yang akan membuat skrip itu tidak berguna ... Kapan ini berjalan?
jadkik94
3
@ jadkik94 Anda benar, ini tidak akan berfungsi karena rc.local tidak memiliki akses ke sesi x.
Ulrich Dangel
-1

Ketika Anda memiliki OpenSUSE Anda dapat menyalin skrip Anda ke /etc/init.d dan menjalankan nama skrip insserv. insserv mengaktifkan skrip: http://man-wiki.net/index.php/8:insserv .

Gigameg
sumber
2
Ini mungkin tidak akan berfungsi karena xinputkebutuhan mungkin X yang tidak tersedia / diinisialisasi dalam skrip init
Ulrich Dangel