web-dev-qa-db-ja.com

X11起動時にスクリプトを実行する

Capsに問題があり、これを修正するスクリプトがあります。残念ながら、このスクリプトは再起動するまで機能します。

# Fix caps
xkbcomp -xkb "$DISPLAY" - | sed 's#key <CAPS>.*#key <CAPS> {\
    repeat=no,\
    type[group1]="ALPHABETIC",\
    symbols[group1]=[ Caps_Lock, Caps_Lock],\
    actions[group1]=[ LockMods(modifiers=Lock),\
    Private(type=3,data[0]=1,data[1]=3,data[2]=3)]\
};\
#' | xkbcomp -w 0 - "$DISPLAY"
exit 0

起動アプリケーションに追加するだけですが、LightDM起動時、またはX11起動時にも実行したいです。 X11の起動時にこのスクリプトを実行する方法はありますか? Xubuntu 16.04.2を使用しています。

ありがとう。

2
Mcpg

以下を試してください:

  1. 適切なShebangを使用して、スクリプトを/ usr/local/binなどのシステム全体のディレクトリに配置します。

    #!/bin/sh
    
    # Fix caps
    /usr/bin/xkbcomp -xkb "$DISPLAY" - | /bin/sed 's#key <CAPS>.*#key <CAPS> {\
        repeat=no,\
        type[group1]="ALPHABETIC",\
        symbols[group1]=[ Caps_Lock, Caps_Lock],\
        actions[group1]=[ LockMods(modifiers=Lock),\
        Private(type=3,data[0]=1,data[1]=3,data[2]=3)]\
    };\
    #' | xkbcomp -w 0 - "$DISPLAY"
    exit 0
    
  2. 実行可能にします。 Sudo chmod +x /usr/local/bin/fix-caps.sh

  3. /etc/lightdm/lightdm.conf.dにカスタム構成ファイルを作成します。 99-local-settings.confなどの名前を使用します。 (99プレフィックスは、/usr/share/lightdm/lightdm.conf.dで提供される標準セットアップスクリプトの後に実行されることを意味します。)

    スクリプトの場所をdisplay-setup-scriptセクションとして[SeatDefaults]セクションに追加します。

    [SeatDefaults]
    display-setup-script = /usr/local/bin/fix-caps.sh
    

display-setup-scriptは、Xサーバーが起動した後、グリーターが実行される前に実行する必要があります- LightDM:システムフックの追加 を参照してください。

3
steeldriver