Późno na imprezę, ale to również doprowadzało mnie do szału; i uparty jak ja, poddanie się nie było opcją.
Zasadniczo to właśnie próbowałem (jako mój użytkownik lub root, jeśli to konieczne)
- ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .gnomerc
- ~ / .xprofile
- ~ / .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( pliki konfiguracyjne, nie dotknąłem )
(Właściwie dodanie xmodmap
polecenia ~/.bashrc
działało, ale wymaga uruchomienia terminala za każdym razem po zalogowaniu)
Kilka lat temu (?) xkb
Został wybrany do obsługi mapowania i konfiguracji kluczy (interfejs z X), ale xmodmap
może również poprosić o zmiany związane z kluczami w X, po xkb
tym jak wykonał swoją pracę podczas inicjowania sesji X.
Problem polega na tym, kiedy powinny się pojawić te ustawienia xmodmap? Wygląda na
to, że powyższe pliki są przetwarzane zbyt wcześnie, a albo X nie był gotowy na zaakceptowanie zmian xmodmap, albo xkb je nadpisze.
Uwaga: Dodałem trochę „śledzenia” do tych plików, aby mieć pewność, że faktycznie zostały uruchomione w pewnym momencie!
Rozwiązanie, które wydaje się działać
.desktop
Początkowo nie chciałem dodawać pliku (wystarczył prosty skrypt w jednym wierszu), ale to działa, więc oto jest.
Rozwiązanie pochodzi z Jak zmienić przypisanie lub zamianę specjalnych klawiszy klawiatury w systemie Linux? „rozwiązanie 1”
Zasadniczo utwórz ~/.config/autostart/my-xmodmap.desktop
plik i umieść w nim:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
zastąp me
swoją nazwą użytkownika (pamiętaj, że nie zadałem sobie trudu, aby spróbować ~/
lub $HOME
że może równie dobrze działać zamiast /home/me
, a pełna ścieżka xmodmap prawdopodobnie nie jest konieczna ...) i dodaj bit exec
chmod +x ~/.config/autostart/my-xmodmap.desktop
W ~/.Xmodmap
tym przypadku polecenia xmodmap muszą znajdować się w pliku (lub skorzystać z -e
opcji lub wybrać inną nazwę pliku!). Wyloguj się i zaloguj ponownie.
Pamiętaj, że możesz utworzyć program startowy z „Aplikacji startowych”.
Innym rozwiązaniem byłoby zapomnienie xmodmap i naucz się konfigurować xkb
!
Edytuj (ponownie)
Czasami, może 25% logowania, xmodmap
nadal wydaje się nie działać - podczas gdy polecenie jest faktycznie uruchomione (tracker to potwierdza). Jedynym wnioskiem, do jakiego mogę teraz dojść, jest to, że xkb
proces działa późno w procesie logowania i może zakończyć się po jego xmodmap
uruchomieniu. Wygląda jak warunek wyścigu ... W końcu zmieniłem exec
linię pliku z autostartem pulpitu na
Exec=$HOME/bin/mystart &
(zwróć uwagę &
)
mystart
to skrypt w nowym katalogu, bin
który utworzyłem
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
i
chmod u+x ~/bin/mystart
Skrypt śpi 5 sekund przed uruchomieniem Xmodmap i śledzi, kiedy się uruchomił (w pliku /tmp/xmodmap-has-run
).
Mam nadzieję, że to wszystko!