Debian 初始化脚本所需的显示服务(X 服务器)

Debian 初始化脚本所需的显示服务(X 服务器)

我使用的是 Debian 9.11 和 MATE 桌面(pinebook pro)

我有一个 Init 脚本,它使用和/etc/init.d/customMapping重新映射我的一些键。这里是setxkbmapxmodmap

#! /bin/sh

### BEGIN INIT INFO
# Provides:          customMapping
# Required-Start:    $local_fs x11-common xserver display
# Required-Stop:     $local_fs x11-common xserver display
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Custom keyboard mapping
# Description:       This is a simple Init script
#                    Custom keyboard mapping
### END INIT INFO
#

# Some things that run always
echo "customMapping script"

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script customMapping "
    echo "start" >> /opt/test.txt

    # Make Caps Lock a Control key
    setxkbmap -option ctrl:nocaps > /opt/logs 2>&1

    # Swap Left Control with Left Alt
    setxkbmap -option ctrl:swap_lalt_lctl > /opt/logs 2>&1

    # Make Pause/Break an End key
    xmodmap -e "keycode 127 = End" > /opt/logs 2>&1

    # Make Screen Lock a Home key
    xmodmap -e "keycode 78 = Home" > /opt/logs 2>&1

    ;;
  stop)
    echo "Stopping custom Mapping"
    ;;
  *)
    echo "Usage: /etc/init.d/customMapping {start|stop}"
    exit 1
    ;;
esac

exit 0

正如您所看到的,我在本节中尝试了几种关键字,Required-Start但这不起作用,当我签入文件时,/opt/logs我看到以下错误消息

无法打开显示“默认显示”

无法打开显示“默认显示”

xmodmap:无法打开显示“”

xmodmap:无法打开显示“”

我应该设置什么值Required-Start才能让我的脚本访问display(X 服务器)?另外,这些值是否Default-Start正确?

谢谢

答案1

您确实不想将这些命令作为启动服务运行,而是希望在启动时作为 X 会话的一部分来执行某些命令。

如果它们在 init 脚本中运行,它们会在启动上下文中以 root 身份运行,而不是作为 X 会话的一部分运行。

您最好将这些命令放在 xinitrc 或 xsessionrc 中(取决于您启动 X 的方式)。

相关内容