ฉันจะรันสคริปต์ที่เริ่มต้นก่อนหน้าจอเข้าสู่ระบบของฉันได้อย่างไร


17

ฉันปรับเทียบหน้าจอสัมผัสของฉันและเห็นว่าเครื่องมือที่ดีที่สุดคือ xinput_calibrator ดังนั้นฉันใช้มัน มันมีสองตัวเลือก (หนึ่งในนั้นใช้งานไม่ได้) ดังนั้นฉันมาที่นี่เป็นครั้งที่สอง มันบอกว่าฉันควรรันคำสั่งนี้ "ในสคริปต์ที่เริ่มต้นด้วยเซสชั่น X ของคุณ":

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

ดังนั้นผมจึงพยายาม~/.xinitrc, ~/.xsessionและ~/.xsessionrcทุกคนที่ไม่ได้อยู่ ดังนั้นฉันจึงสร้างพวกเขาและเนื้อหาที่แน่นอนคือคำสั่งนี้ สองไฟล์แรกทำให้การเข้าสู่ระบบของฉันล้มเหลว (หลังจากฉันเข้าสู่ระบบฉันกลับไปที่หน้าจอเข้าสู่ระบบ)

ด้วยไฟล์สุดท้ายการปรับเทียบก็ใช้งานได้ แต่หลังจากเข้าสู่ระบบ ...

ฉันต้องการให้คำสั่งนั้นทำงานก่อนที่กล่องโต้ตอบการเข้าสู่ระบบจะปรากฏขึ้น ฉันคิดว่าการเพิ่มคำสั่งนี้ไปยังจุดสิ้นสุด/etc/X11/xinit/xinitrcโดยไม่มีผลลัพธ์ (ไม่มีการเปลี่ยนแปลง) นอกจากนี้ผมพยายามที่จะเพิ่มเข้าไปในส่วนท้ายของ/etc/X11/Xsession.d/40x11-common_xsessionrc(หลังจากการตรวจสอบบางไฟล์) ~/.xsessionrcแต่ผลที่ได้เหมือนกับการเพิ่มเข้าไป

ฉันจะทำให้คำสั่งนี้รันก่อนที่หน้าจอเข้าสู่ระบบจะปรากฏขึ้น (นี่เป็นก่อนที่ตัวจัดการหน้าต่างจะเริ่มทำงานหรือก่อนที่จะเริ่มเซสชัน X)

(ฉันใช้ Kubuntu กับตัวจัดการหน้าต่างเริ่มต้นถ้าเป็นเช่นนั้น)

อัปเดตเมื่อฉันใช้ Kubuntu ตัวจัดการการแสดงผลของฉันคือ kdm ตามคำตอบที่ยอมรับฉันแนะนำให้แก้ไขไฟล์/etc/kde4/kdm/Xsetupและตามที่กล่าวไว้ที่นี่ฉันได้เพิ่มคำสั่งก่อนคำสั่งที่มีโดยค่าเริ่มต้น และมันก็ใช้งานได้เหมือนมีเสน่ห์ :)


4
คุณใช้ตัวจัดการการเข้าสู่ระบบอะไร สำหรับ gdm3 คุณสามารถใช้/etc/gdm3/Init/displayหรือ/etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel

เฮ้สิ่งที่ดี ฉันโพสต์คำถามที่นี่ [ unix.stackexchange.com/questions/172007/ซึ่งทำเครื่องหมายว่าซ้ำกับคำถาม & คำตอบที่เป็นไปได้ อย่างไรก็ตามผู้คนไม่เชื่อว่ามันเป็นโคลน โปรดดูคำถามของฉันด้วยและช่วยฉันด้วย :)
kaiwan

คำตอบ:


13

ไฟล์ทั้งหมดที่คุณพยายามจะเปลี่ยนแปลงจะถูกอ่านหลังจากที่คุณเข้าสู่ระบบนอกจากนี้~/.xinitrcและ~/.xsessionเป็นชุดคำสั่งเต็มรูปแบบที่ทำงานในเซสชัน ~/.xinitrcถูกอ่านถ้าคุณเรียกใช้xinitหรือstartxจากพรอมต์โหมดข้อความและ~/.xsessionจะอ่านถ้าคุณเรียกใช้“ เซสชันที่กำหนดเอง” (ชื่ออาจแตกต่างกัน) จากพรอมต์การเข้าสู่ระบบแบบกราฟิก

คุณต้องกำหนดค่าเครื่องมือจัดการการแสดงผลของคุณโปรแกรมที่แสดงข้อความแจ้งการเข้าสู่ระบบ สำหรับ kdm ตัวจัดการการแสดงผล KDE เพิ่มคำสั่งของคุณไปที่/etc/kde4/kdm/Xsetup(หรือ/etc/kde3/kdm/Xsetupสำหรับเวอร์ชั่นที่เก่ากว่า) (นั่นคือพา ธ บนเดเบียนฉันไม่ได้ตรวจสอบว่า Kubuntu ใช้พา ธ เดียวกัน)

สำหรับ GDM (ผู้จัดการฝ่ายการแสดงผล Gnome), /etc/gdm/Init/Defaultเพิ่มคำสั่งของคุณจะ สำหรับ xdm (ผู้จัดการ X จอแสดงผลแบบดั้งเดิม), /etc/X11/xdm/Xsetupเพิ่มคำสั่งของคุณจะ


ขอบคุณสำหรับคำอธิบาย! ฉันลองสิ่งที่คุณแนะนำไม่สำเร็จ ฉันพบXsetupไฟล์ (ในพา ธ เดียวกับที่คุณพูดถึง) และเพิ่มคำสั่ง การสอบเทียบไม่ทำงาน แต่ฉันตรวจสอบให้แน่ใจว่าได้ดำเนินการโดยเพิ่มecho "w" > /test.logและยืนยัน/test.logว่ามีอยู่หลังจากรีบูต เป็นไปได้หรือไม่ที่xinputต้องใช้ "บริบท" พิเศษหรือบางสิ่ง ...
jadkik94

ที่จริงแล้วไม่สนใจความคิดเห็นล่าสุด ฉันเปลี่ยนเส้นทางxinputคำสั่งไปยังไฟล์นั้นและดูเหมือนว่าฉันได้เพิ่มช่องว่างให้กับชื่ออุปกรณ์ซึ่งทำให้การปรับเทียบไม่ทำงาน คุณถูกต้อง 100% :) ขอบคุณอีกครั้ง
jadkik94

5
และเพียงแค่ให้เสร็จสมบูรณ์คำตอบ - จะหาสิ่งที่เป็นผู้จัดการแสดงของคุณ (เพื่อไม่ให้สับสนกับสภาพแวดล้อมเดสก์ทอป) cat /etc/X11/default-display-managerใช้งาน:
Nux

เกี่ยวกับxserverrcอะไร และสิ่งที่อยู่ใน/etc/X11/xinit/xserverrc?
CMCDragonkai

1
@CMCDragonkai หากมีผู้จัดการการแสดงผลstartxไม่ได้ใช้ สคริปต์การเริ่มต้นของตัวจัดการจอแสดงผลจะไม่เกี่ยวข้องที่นี่เนื่องจากพวกเขาทำงานก่อนที่ผู้ใช้จะเข้าสู่ระบบ
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

4

ฉันขอแนะนำให้คุณสร้างไฟล์กำหนดค่าของคุณเองตัวอย่างง่ายๆ:

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

Filecontent:

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

นั่นควรทำเคล็ดลับ


-1

คุณสามารถลอง / etc / rc.local?

.


4
ฉันกังวลว่าสคริปต์จะทำงานก่อนที่ X จะเริ่มต้น (ตามที่ฉันเข้าใจ) ซึ่งจะทำให้สคริปต์นั้นไร้ประโยชน์ ... การทำงานนี้จะเริ่มเมื่อใด
jadkik94

3
@ jadkik94 คุณพูดถูกสิ่งนี้จะไม่ทำงานเนื่องจาก rc.local ไม่มีสิทธิ์เข้าถึงเซสชัน x
Ulrich Dangel

-1

เมื่อคุณมี OpenSUSE คุณสามารถคัดลอกสคริปต์ของคุณไปยัง /etc/init.d และเรียกใช้ชื่อสคริปต์แบบแทรก insserv ช่วยให้สคริปต์: http://man-wiki.net/index.php/8:insserv


2
นี้อาจจะไม่ทำงานตามxinputความต้องการอาจ X ซึ่งไม่สามารถใช้ได้ / เริ่มต้นได้ในสคริปต์ init
Ulrich Dangel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.