中断後にxmodmapを維持する方法

中断後にxmodmapを維持する方法

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セッションにアクセスするにはDISPLAY2つの環境変数が必要です。X11セッションクッキー(=一種の鍵).デフォルトでは、セッションCookieは~/.XauthorityX11ログインごとに保存され、再作成されます。スクリプトがxmodmaprootとしてコマンドを実行すると、/root/.Xauthority現在ログインしているユーザーがいることを確認できる正しい場所ではなく、セッションCookieが見つかりますyasser

幸いなことに、XAUTHORITY環境変数を使用して、X11アプリケーションに非標準の場所でセッションCookieを見つけるように指示できます。ルートはすべてにアクセスできるため、rootとして実行されるコマンドはCookieファイルをxmodmap読み取ることができます。yasser

関連情報