Debian

Debian 初始化腳本所需的顯示服務(X 伺服器)

  • January 26, 2020

我在 Debian 9.11 上使用 MATE 桌面(pinebook pro)

我有一個初始化腳本,它使用和/etc/init.d/customMapping重新映射我的一些鍵。這裡是setxkbmap``xmodmap

#! /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正確嗎?

謝謝

您真的不想將這些命令作為啟動服務執行,而是在啟動時作為 X 會話的一部分執行。

如果它們在初始化腳本中執行,它們會在啟動上下文中以 root 身份執行,而不是作為 X 會話的一部分。

您最好將這些命令放在您的 xinitrc 或 xsessionrc 中(取決於您如何啟動 X)。

引用自:https://unix.stackexchange.com/questions/564081