web-dev-qa-db-ja.com

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

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

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

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

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

45
Thiago Moraes

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

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

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

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

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

~/.xinitrcの作成

.xinitrcという名前のホームフォルダーにファイルを作成します。

touch .xinitrc

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

xmodmap ~/.Xmodmap

Xmodmapファイルには、一時的に値を設定するために端末で使用されるxmodmap -e " "スタイルのエントリがnotである必要があります。次の形式のエントリが必要です。

keycode 65 = Tab
keycode 23 = Space

多くの場合、さまざまなXファイル(.xprofile.xinitrcなど)のどれが起動時に読み取られるかわかりませんが、.xinitrcは12.04でまだ読み取られているようですが、.Xmodmapまたは.xinputrcは自動的には読み取られません。

28
user76204

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

xdgは、Xセッションでのログイン時に~/.config/autostartでスクリプトを実行します。ログイン時に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
8
kontrollanten

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

2
djeikyb

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

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

それが役に立てば幸い。

2
hxpax

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

ホームフォルダーのxmodstartup.shというスクリプトに触れました

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

保存したら、Sudo chmod +x xmodstartup.shを実行しました

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

0
Jay Edwards