ログイン時にXmodmapを設定するにはどうすればよいですか?


46

キーボードレイアウトが私に合わないのでxmodmap、ログイン時に実行します。スクリプトには名前が付けられ.profile、正常に実行されますが、Unityインターフェースは破損します。

xmodmapログイン時に実行され、何も壊れないように、行を配置する場所を知りたいです。

私はすでに成功せずにファイル.bash_login.bash_profileファイルに入れようとしました(xmodmapキーボードを設定しません)。

私のオプションは何ですか?


4
一体型インターフェースはどのように壊れますか?
djeikyb

1
xmodmapの実行時間が長すぎる場合は、手動で変更しなかったすべてのエントリを削除する必要があることを付け加えます。入力ファイルの変更のみを保持すると、xmodmapの実行がはるかに高速になります。
user1071575

回答:


29

xmodmap ~/.Xmodmap(起動時に変更が読み取られるように)置く場所は正しい~/.xinitrc(以下の説明を参照)ですが、代わりにxmodmapコマンドをスタートアップ項目として配置することもできます(/usr/bin/xmodmap /home/user/.Xmodmap)。12.04(おそらく12.10)では、これら2つの選択肢は間違いなく機能します。どちらの方法でもログイン後に読み取らますlightdm。(私はReturn to Right Shiftを変更しました。変更は、パスワードを入力してログインした後にのみ有効になりました)。

注意: Xfce を使用している場合、を使用する代わりにスタートアップアイテムを作成する必要がある場合があり、変更がによって上書きされないように実行を遅らせる必要がある場合があることが公式のXfce FAQに記載されています。スタートアップエントリでこれを実現するために遅延を使用できます。~/.xinitrcxmodmapsetxkbmap

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(スタートアップエントリには、絶対パスを指定する必要があります)

setxkbmapキーボードレイアウトを変更するために実行するたびxmodmap ~/.Xmodmapに、ターミナルで再度実行する必要があります。

作成 ~/.xinitrc

呼ばれるホームフォルダ内のファイルを作成.xinitrcしてし

touch .xinitrc

そしてその中に配置します。

xmodmap ~/.Xmodmap

あなたのXmodmapファイルはすべきではないのエントリ持ってxmodmap -e " "、一時的に値を設定するための端末で使用されているようなスタイルを。次の形式のエントリが必要です。

keycode 65 = Tab
keycode 23 = Space

多くの場合、各種のどの混乱さX(のようなファイル.xprofile.xinitrcなど)を起動時に読み込まれますが、.xinitrc一方で、まだ、12.04の下で読むように見えるん.Xmodmap.xinputrc自身によって読まれていません。


5
で変更を加えた場合、現在のマッピングを出力するwith xmodmap -e '...の正しい形式を取得できることに注意してください。ただし、これを行った変更に適用される行だけにフィルターをかけたいと思うでしょう。xmodmap .Xmodmapxmodmap -pke
バリーケリー

1
これは私にはうまくいきませんでした。.Xmodmapと.xinitrcを作成しました| 次に、xmodmap〜/ .Xmodmapを.xinitrcに配置し、次に.Xmodmad内にキーコード166 =前のキーコード167 =次へ
-miguelmorales85

Ubuntu 17.10では、.xinitrcが自動的に起動されないようです。次のコマンドで自動起動する必要があります:/ bin / bash -c "sleep 15 && /home/USERNAME/.xinitrc"
thebunnyrules

9

ElementaryOS(GNOMEベースのウィンドウマネージャー)を使用していて、xdg自動起動スクリプトを使用して解決策を見つけました。多くのウィンドウマネージャーはxdgを使用しているため、このアプローチは他の環境でも機能すると想定しています。少なくともGNOMEで動作するはずです。

xdg ~/.config/autostartは、Xセッションでのログイン時にスクリプトを実行します。ログイン時にxmodmap構成をロードするには、次のスクリプトをに追加します~/.config/autostart/xmodmap.desktop

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

その後、ログアウトして再度ログインすると、Xmodmap構成がロードされます。

動作しない場合は、ターミナルでxmodmapを実行して、問題のあるxmodmapかどうかを確認します。

$ xmodmap ~/.Xmodmap

エラーが発生しない場合は、次のコマンドを実行してデバッグします。

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap

Linux Mint 17(Ubuntu 14.04.5ベース)では、~/.xinitrcファイルの使用に失敗した後、自動開始のアプローチは完璧に機能しました。hxpaxが指摘したように、Mintユーザー(おそらくほとんど/すべてのDebian派生Linux)は、GUIダイアログを使用して、経由で自動開始エントリを追加できますMain Menu --> Preferences --> Startup Applications
マット

2
18.04 Ubuntuの勤務
TooTone

2

今は目の前に統一インターフェースがありませんが、ランチャーの[アプリケーション]ボタンをクリックしてから、startupと入力してみてください。Startup Applications(またはそのようなもの)と呼ばれるアプリが必要です。それをクリックして、xmodmapコマンド(例xmodmap /home/thiago/.Xmodmap)を追加します。


少し前に試しましたが、うまくいきませんでした。私は今Windowsを使用していますが、後でもう一度試してみて、動作する場合はここに報告します。thx
チアゴモラエス

2
@Thiago Moraesこの基本的なコマンドは機能しますか(機能しない場合、エラーを投稿します)?xmodmap .Xmodmap
-djeikyb

+1これは機能します。より明確にするために、.Xmodmapのフルパスを使用しました。
pwned

3
これは動作しません。私は16.04を使用しています
-miguelmorales85

@ miguelmorales85基本的なコマンドは端末で機能しますか?絶対パスを使用してみましたか?
djeikyb

2

Mint 17/18では、1秒の遅延で、スクリプトをスタートアップアプリケーションに入れることができます。

Mint 18はUbuntu 1604から派生したものであるため、同じことを行うことができると思います。または、スタートアップアプリケーション管理パネルがインストールされていない場合は最初にインストールすることもできます。

それが役に立てば幸い。


+1うまくいく。Linux Mint 17で遅延は必要ありませんでした
mattst

@mattstええ、遅延はオプションです。
hxpax

これが機能するには5秒の遅延が必要でした。そのため、次の起動シェルスクリプトを使用しました:gist.github.com/ghagerer/58212241e37229f9d6fe3a133b34be97
Gerhard Hagerer

0

上記の提案のいずれにもあまり満足していませんでした(すべての新しいターミナルでxmodmapを実行するため、.bashrcオプションは実際には実行可能ではありませんでした)

xmodstartup.shホームフォルダーで呼び出されるスクリプトに触れた

  #!/bin/bash           
  sleep 1;               
  echo "running xmodmap" 
  xmodmap ~/.Xmodmap     

保存してから、 sudo chmod +x xmodstartup.sh

次に、実行可能ファイルをgnomeの「スタートアップアプリケーション設定」ウィンドウに追加しました。bish bosh、英語レイアウトyEspañolon altgr:)


-1

xmodmapを変更を置く~/.bashrcか、/etc/bash.bashrc何かを破壊しません。

唯一の欠点は、起動するたびに端末を開いてアクティブにする必要があることです。


3
私はすでにそれをやっていますが、問題は、開いているすべての端末でこのコマンドが実行されることです。それはほんの一瞬ですが、それは少し面倒であり、私は本当の解決策を好むでしょう。thxとにかく
チアゴモラエス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.