ログイン時に〜/ .Xmodmapファイルが読み込まれないのはなぜですか?


16

この回答に従って、次の~/.Xmodmapファイルを作成しました。

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

言い換えるDeleteMenu、とを交換し、さらにを作成Caps LockEscapeます。

次回ログインしたとき、Ubuntuは~/.Xmodmap期待どおりにロードするかどうかを尋ねてきました。私はそれをロードしましたが、何も起こりませんでした(その時またはその後のログインで)手動で実行するとxmodmap ~/.Xmodmap、期待どおりに動作します。

これは10.10ベータの初期に機能したことは知っていますが、10.10の新規インストールでは失敗しています。私は10.10より前のものには試していません。何か案は?

編集:私はいくつかのデバッグステートメントを入れて、ロード/etc/gdm/Xsessionが確実に~/.Xmodmap行われ、すべてが魔法のように動作し始めたことを確認しました。エコーを追加する以外は何も変更しませんでしたが、変更を元に戻して再起動したので、今でも機能しています。私が今まで見た中で奇妙なこと。

私が気づいたことの1つは、Xmodmapの「Caps Lock to Escape」の部分が常に機能していたことです。失敗したのは、削除/メニュースワップだけでした。問題が停止した理由が実際にはわからないため、他の誰かが同じ問題を抱えている場合に備えて、この質問は今のところ公開しておきます。


私はこの同じ問題を自分で経験しており、私を夢中にさせています。原因を特定したら、必ず回答を投稿します。
ホルヘイスラエルペニャ

回答:


11

私はそれが愚かであることを知っていますが、回避策としてあなたはただautostartすることができますxmodmap ~/.Xmodmap

また/etc/gdm/Xsession、行usermodmap="$HOME/.Xmodmap"を確認し、行がない場合はファイルの最後に追加します。システムの唯一のユーザーである場合は、変更をに入れてください/etc/X11/Xmodmap


2
どのようにしてコマンドを「自動起動」しますか?
miguel.martin

自動起動を参照してください。おそらく最も簡単なのは、にエントリを追加するSettings->Session and Startupか、それらの行に沿って何かを追加することです。
Mateen Ulhaq

または、たとえば、シェルに追加して、頻繁にシェルを開くと実行されるようにします。私がGnomeに入ったときに最初に行うことは、ほとんどの場合シェルを開くことです。
trusktr

3

パーティーに遅刻したが、これは私にも夢中になった。そして、私と同じように頑固ですが、あきらめることは選択肢ではありませんでした。

基本的にこれは私が試したものです(私のユーザー、または必要に応じてrootとして)

  • 〜/ .Xmodmapのみ
  • 〜/ .xsession、〜/ .xsessionrc
  • 〜/ .gnomerc
  • 〜/ .xprofile
  • 〜/ .xinitrc
  • /etc/X11/Xsession.d/myscript
  • /usr/share/X11/xorg.conf.d/(設定ファイル、触れていない

(実際には、xmodmapコマンドをworkingに追加し~/.bashrcますが、ログイン後に毎回ターミナルを起動する必要があります)

数年前(?)は、xkbキーのマッピングと構成(Xとのインターフェイス)を扱うために選択されましたxmodmapxkb、Xセッションの初期化中にその作業を行った後、Xにキー関連の変更を要求することもあります。

問題は、これらのxmodmap設定がいつ発生するかです。そうです、これらの上記のファイルが早すぎるプロセスで処理され、いずれかのXは、変更をxmodmapを受け入れる準備ができていなかった、またはXKBはそれらを上書きします。注:これらのファイルに実際に実行されていることを確認するために、これらのファイルにいくつかの「追跡」を追加しました!


動作しているように見えるソリューション

.desktop最初はファイルを追加したくありませんでした(単純な1行のスクリプトで十分でした)が、それでうまくいきます。
ソリューションは、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

スクリプトは、xmodmapを実行する5秒前にスリープし、実行された時刻(ファイル内/tmp/xmodmap-has-run)を追跡します。

うまくいけばそれですべてです!


xkb confiturationの編集が機能した:askubuntu.com/a/1090892/1021380
postrational

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.