在 X11 启动时运行脚本

Mcp*_*cpg 4 startup xorg

我在使用 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
Run Code Online (Sandbox Code Playgroud)

我只是将它添加到启动应用程序中,但我想在 LightDM 启动时运行它,甚至在 X11 启动时运行它。有什么办法可以在 X11 启动时运行这个脚本吗?我正在使用 Xubuntu 16.04.2。

谢谢。

ste*_*ver 6

请尝试以下操作:

  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
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

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

  • `[SeatDefaults]` 部分已弃用(打印警告)。在 lightdm 的更高版本中使用 `[Seat:*]`,在 Ubuntu 15.10 及更高版本中使用。参考:https://wiki.ubuntu.com/LightDM#Configuration (2认同)