在 X11 启动时运行脚本

在 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。

谢谢。

答案1

请尝试以下操作:

  1. 将您的脚本放入系统范围的目录中,例如 /usr/local/bin,并使用适当的 shebang

    #!/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-scriptint 部分[SeatDefaults]

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

应该display-setup-script在 X 服务器启动之后运行,但在运行任何欢迎程序之前 - 参见LightDM:添加系统挂钩

相关内容