Чому мій файл ~ / .Xmodmap не завантажується під час входу?


16

Я створив наступний ~/.Xmodmapфайл відповідно до цієї відповіді .

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

Іншими словами, своп Deleteі Menu, і зробити Caps Lockдодатковий Escape.

Наступного разу, коли я ввійшов у систему, Ubuntu запитав мене, чи хочу я завантажуватися так, ~/.Xmodmapяк очікувалося. Я завантажив його, але нічого не сталося (ні тоді, ні на наступних реєстраціях). Якщо я запускаю вручну xmodmap ~/.Xmodmap, це працює як очікувалося.

Я знаю, що це спрацювало на початку бета-версії 10.10, але це не вдалося в моєму новому встановленні 10.10. Я не пробував нічого раніше 10.10. Будь-які ідеї?

Редагувати: я помістив кілька заяв про налагодження, /etc/gdm/Xsessionщоб переконатися, що ~/.Xmodmapзавантажується, і все магічно почало працювати. Я нічого не змінив, окрім додавання відлуння, і він все ще працює, коли я повернув свої зміни та знову запустив. Найстрашніше, що я коли-небудь бачив.

Одне, що я зрозумів - це те, що частина «перенастроювання Caps Lock to Escape» Xmodmap завжди працювала. Не вдалося здійснити заміну видалення / меню. Зараз я залишаю це питання відкритим у випадку, якщо хтось інший має таку ж проблему, оскільки я не знаю, чому проблема зупинилася.


Я сам відчуваю цю саму проблему, ганяючи мене. Якщо я з'ясую причину, я обов'язково опублікую відповідь.
Хорхе Ізраїль Пенья

Відповіді:


11

Я знаю, що це нерозумно, але як вирішення проблеми ви могли просто автозапустити xmodmap ~/.Xmodmap.

Також ви можете перевірити /etc/gdm/Xsessionрядок, usermodmap="$HOME/.Xmodmap"і якщо його немає, додайте його в кінці файлу. Якщо ви єдиний користувач системи, просто введіть свої зміни /etc/X11/Xmodmap.


2
Як ви "автозапускаєте" команди?
miguel.martin

Див. Автозапуск . Найпростіше - це, мабуть, просто додати запис Settings->Session and Startupабо щось у цьому рядку.
Мейтін Ульхак

Або, наприклад, додати його до своєї оболонки, тож якщо ви часто відкриватимете оболонки, то вона запустить її. Перше, що я роблю, коли я входжу в Gnome, це відкриття оболонки більшу частину часу, так що це один із способів роботи.
trusktr

3

Запізнився на вечірку, але це й мене загаяло; і, впертий, як і я, відмовлятися не був варіантом.

В основному це те, що я спробував (як мій користувач або root, якщо потрібно)

  • ~ / .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 зміни або Х б переписати їх.

Примітка. До цих файлів я додав деяке "відстеження", щоб переконатися, що вони справді працювали в якийсь час!

Рішення, яке, здається, працює

Я не хотів спочатку додавати .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, ймовірно, не потрібен ...), і додайте біт exec

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).

Сподіваємось, що все буде!


Редагування конфігурації xkb працювало для мене: askubuntu.com/a/1090892/1021380
постраціональне

2

Ось, можливо, краща відповідь тоді: http://cweiske.de/howto/xmodmap/ar01s06.html

Можливо, вам доведеться трохи підправити його, щоб він працював на вас, але інструкції є.


1
Ці вказівки призначені для KDE, але якщо я дивлюся на еквівалент Gnome ( /etc/gdm/Xsession), рядки, які посилаються, додають, вже є в ньому.
Метью

2

Можливо, у вашому ~/.Xmodmapфайлі є синтаксична помилка ?

Спробуйте запустити:

$ xmodmap ~/.Xmodmap

Це може призвести до помилки, якщо такі є.


0

У мене була така ж дивна проблема, намагаючись запустити свою Xmodmap під час входу в сеанс (ubuntu 13.04). Нарешті я змусив його працювати з файлом .xinitrc у своїй домашній папці, куди я помістив свою команду, але з абсолютними шляхами до неї, тобто:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

Тоді мені довелося перезавантажувати (не просто релогувати), щоб воно було виконане.


2
Для мене це не працює під Ubuntu 14.04.
miguel.martin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.