ไปงานปาร์ตี้สาย แต่สิ่งนี้ทำให้ฉันกลัวเช่นกัน และดื้อรั้นเช่นเดียวกับฉันการยอมแพ้ไม่ใช่ตัวเลือก
โดยทั่วไปนี่คือสิ่งที่ฉันพยายาม (ในฐานะผู้ใช้ของฉันหรือรูทหากจำเป็น)
- ~ / .Xmodmap เท่านั้น
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( ไฟล์ปรับแต่งไม่ได้สัมผัส )
(ที่จริงแล้วการเพิ่มxmodmap
คำสั่งให้~/.bashrc
ทำงาน แต่มันต้องเริ่มต้นเทอร์มินัลทุกครั้งหลังจากเข้าสู่ระบบ)
ไม่กี่ปีที่ผ่านมา (?) xkb
ได้รับเลือกให้จัดการกับการทำแผนที่และการกำหนดค่าคีย์ (เชื่อมต่อกับ X) แต่xmodmap
อาจร้องขอการเปลี่ยนแปลงที่เกี่ยวข้องกับ X หลังจากxkb
ทำงานในระหว่างการเริ่มต้นเซสชัน X
ปัญหาคือเมื่อการตั้งค่า xmodmap เหล่านี้เกิดขึ้นเมื่อใด
มันดูเหมือนว่าไฟล์ดังกล่าวข้างต้นเหล่านั้นจะถูกประมวลผลเร็วเกินไปในกระบวนการและทั้ง X ก็ยังไม่พร้อมที่จะยอมรับการเปลี่ยนแปลง xmodmap หรือ XKB จะเขียนทับพวกเขา
หมายเหตุ: ฉันได้เพิ่ม "การติดตาม" ลงในไฟล์เหล่านี้เพื่อให้แน่ใจว่าพวกเขากำลังทำงานอยู่ในบางครั้ง!
ทางออกที่ดูเหมือนว่าจะทำงาน
ฉันไม่กระตือรือร้นที่จะเพิ่ม.desktop
ไฟล์ในตอนแรก (สคริปต์บรรทัดเดียวง่าย ๆ ก็เพียงพอแล้ว) แต่มันใช้งานได้ดังนั้นนี่คือ
การแก้ปัญหามาจากวิธีการแมปหรือแลกเปลี่ยนแป้นคีย์บอร์ดพิเศษใน Linux?"โซลูชัน 1"
โดยทั่วไปสร้าง~/.config/autostart/my-xmodmap.desktop
ไฟล์และใส่ไว้ใน:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
แทนที่me
ด้วยชื่อผู้ใช้ของคุณ (โปรดทราบว่าฉันไม่ได้พยายาม~/
หรือ$HOME
อาจทำงานได้ดีเท่า ๆ กัน/home/me
และเส้นทางแบบเต็มของ xmodmap ไม่น่าจะจำเป็น ... ) และเพิ่มบิตบิต
chmod +x ~/.config/autostart/my-xmodmap.desktop
คำสั่ง xmodmap ต้องอยู่ใน~/.Xmodmap
ไฟล์ในกรณีนี้ (หรือใช้-e
ตัวเลือกหรือเลือกชื่อไฟล์อื่น!) ออกจากระบบและกลับเข้ามาใหม่
โปรดทราบว่าคุณอาจสร้างโปรแกรมเริ่มต้นจาก "แอปพลิเคชันเริ่มต้น"
อีกวิธีหนึ่งคือลืม xmodmap และเรียนรู้วิธีกำหนดค่า xkb
!
แก้ไข (อีกครั้ง)
บางครั้งอาจมี 25% ของการเข้าสู่ระบบxmodmap
ดูเหมือนว่าจะยังไม่ทำงาน - ในขณะที่คำสั่งทำงานจริง (ตัวติดตามพิสูจน์ว่า) ข้อสรุปเดียวที่ฉันอาจเข้ามาในเวลานี้คือxkb
กระบวนการทำงานช้าในกระบวนการเข้าสู่ระบบและอาจสิ้นสุดหลังจากxmodmap
รันได้ ดูเหมือนสภาพการแข่งขัน ... ดังนั้นในที่สุดฉันเปลี่ยนexec
บรรทัดไฟล์เดสก์ท็อปอัตโนมัติไปเป็น
Exec=$HOME/bin/mystart &
(หมายเหตุ&
)
mystart
เป็นสคริปต์ในไดเรกทอรีใหม่ที่bin
ฉันสร้างขึ้นซึ่งมี
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
และ
chmod u+x ~/bin/mystart
สคริปต์พัก 5 วินาทีก่อนที่จะเรียกใช้ xmodmap และติดตามเมื่อมันทำงาน (ในไฟล์/tmp/xmodmap-has-run
)
หวังว่าจะเป็นเช่นนั้น!