xmodmapファイルがありますが、~/.Xmodmap
うまくいきます。このようにUbuntu 19.10の起動アプリケーションに入れると、xmodmap /home/yasser/.Xmodmap
最初の起動で動作します。ただし、一時停止後、ファイルは機能しません。/usr/lib/pm-utils/sleep.d/999zxmodmap
次の内容でスクリプトを作成しようとしています。
#!/bin/bash
case $1 in
pre)
exit 0
;;
post)
export DISPLAY=:0
sleep 10
xmodmap /home/yasser/.Xmodmap
;;
esac
私はこれが他の場所で提案されているのを見ましたが、これはうまくいきません。~/.Xmodmap
役に立つなら、私のファイルは次のようになります。
keycode 66 = Mode_switch
keysym j = j J Left
keysym l = l L Right
keysym i = i I Up
keysym k = k K Down
keysym h = h H Home
keysym semicolon = semicolon colon End
ご協力ありがとうございます。
答え1
次のexport DISPLAY=:0
行を後ろに追加してみてください。
export XAUTHORITY=/home/yasser/.Xauthority
X11 GUIセッションが開始されると、~/.Xmodmap
ユーザーがログインすると自動的に読み込まれます。
ただし/usr/lib/pm-utils/sleep.d/999zxmodmap
、一時停止状態で再開した後実行するとルートとして実行される。
他のX11アプリケーションと同様に、このxmodmap
コマンドにもGUIセッションにアクセスするにはDISPLAY
2つの環境変数が必要です。X11セッションクッキー(=一種の鍵).デフォルトでは、セッションCookieは~/.Xauthority
X11ログインごとに保存され、再作成されます。スクリプトがxmodmap
rootとしてコマンドを実行すると、/root/.Xauthority
現在ログインしているユーザーがいることを確認できる正しい場所ではなく、セッションCookieが見つかりますyasser
。
幸いなことに、XAUTHORITY
環境変数を使用して、X11アプリケーションに非標準の場所でセッションCookieを見つけるように指示できます。ルートはすべてにアクセスできるため、rootとして実行されるコマンドはCookieファイルをxmodmap
読み取ることができます。yasser