ไปงานปาร์ตี้สาย แต่สิ่งนี้ทำให้ฉันกลัวเช่นกัน และดื้อรั้นเช่นเดียวกับฉันการยอมแพ้ไม่ใช่ตัวเลือก
โดยทั่วไปนี่คือสิ่งที่ฉันพยายาม (ในฐานะผู้ใช้ของฉันหรือรูทหากจำเป็น)
- ~ / .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)
หวังว่าจะเป็นเช่นนั้น!