Проблема с несколькими контурными картами, когда след от приостанавливают

Попытка к xmodmap этот файл.Xmodmap на резюме. Попробованный, как выполнить команду после того, как резюме от приостанавливает? путем добавления нескольких ключевых отображений с помощью xmodmap-e без успеха (каждый раз это только приняло бы первую строку). Я чувствую, что это должно смочь использовать.Xmodmap для хранения кода простым. Ubuntu 14.04.Спасибо.

Мой.Xmodmap (с исполняемым разрешением) в/home/dadtwo/

clear control
clear mod4

keycode 133 = Control_L NoSymbol Control_L
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add mod4 = Super_L

Моя 10_keyboard-подкачка (с исполняемым разрешением) расположенный в/etc/pm/sleep.d

#!/bin/sh

# Remap Swap Super_L and Control_L

case "${1}" in
    resume|thaw)
    DISPLAY=:0.0 ; export DISPLAY
    su $dadtwo -c "sleep 3; /usr/bin/xmodmap /home/dadtwo/.Xmodmap"&
;;
esac

В /var/log/pm-suspend.log говорится "/usr/bin/xmodmap: не мог открыть дисплей ':0.0'"

0
задан 13 April 2017 в 15:23

1 ответ

ldd $(type -p xmodmap) шоу это xmodmap использование libX11.so.6 связываться с X-сервером. Поэтому нельзя использовать xmodmap прежде чем X-сервер работает.

$ ldd $(type -p xmodmap)
    linux-vdso.so.1 =>  (0x00007ffc5c1f3000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f8abffa6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8abfbe1000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f8abf9c2000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8abf7be000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f8ac02db000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f8abf5ba000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f8abf3b4000)

На моей Ubuntu 14.04.5, (YMMV), при помощи pgrep X, и ps -fp$(pgrep X) и после PPID поле назад два шага, я вижу:

$ ps -fp1851,1801,1603
UID        PID  PPID  C STIME TTY          TIME CMD
root      1603     1  0 Jul27 ?        00:00:00 gdm
root      1801  1603  0 Jul27 ?        00:00:00 /usr/lib/gdm/gdm-simple-slave --display-id /org/gnome/DisplayManager/Displays/_0
root      1851  1801  1 Jul27 tty7     04:30:37 /usr/bin/X :0 -background none -verbose -logverbose 7 -core -auth /var/run/gdm/auth-for-gdm-ZKZ4jH/database -seat seat0 -nolisten t

Который говорит мне что X-сервер (X), PID 1851 (в моей системе, в это время, YMMV) был запущен PID 1801 (/usr/lib/gdm/gdm-simple-slave), который, в свою очередь, был запущен PID 1603 (gdm).

gdm только запускается gdm-simple-slave (который запускается X) После входа в систему таким образом, это не будет работать перед входом в систему.

Выполнение xmodmap любой прежде X запускается, или без помещения export DISPLAY=:0 в Ваш сценарий перед xmodmap, И сделавший man xhost;xhost +local: на Ваших X сессиях.

Перефразированный ответ:

Читать man xhost.

После входа в систему откройте окно терминала и взгляд:

$ echo $DISPLAY
:0

Позвольте процессы, работающие на этой системе, но не работающие под X серверный процесс для общения с X серверный процесс:

$ xhost +local:
non-network local connections being added to access control list

Это продлится, пока Вы не возвратите его (xhost -local:) ИЛИ до X выходы сервера, таким образом, если это работает на Вас, помещают его в Ваш пользовательский запуск где-нибудь.

Столько, сколько xhost +locakl: в действительности, можно выполнить Ваш xmodmap в любом контексте (например, от /etc/pm/power.d/) путем выполнения:

env DISPLAY=:0 xmodmap ....

или, если Вы хотите использовать несколько xmodmap команды,

export DISPLAY=:0
xmodmap ...
xmodmap ...

Примечание: Разрешение соединений с Вашим X сервер "несетевыми локальными соединениями" ДЕЙСТВИТЕЛЬНО делает Вашу систему менее безопасной.

0
ответ дан 28 September 2019 в 17:50

Другие вопросы по тегам:

Похожие вопросы: