Create TOC

2021년 1월 27일

Debian/KDE에 xrdp 환경 설정

KDE에 xrdp 환경을 설정한다.

xrdp

설치

$ sudo apt install xrdp

설정

xrdp

/etc/xrdp/xrdp.ini에 아래 내용을 추가한다.

[x11vnc]
name=x11vnc
lib=libvnc.so
ip=127.0.0.1
port=5900
username=na
pamusername=ask
pampassword=ask
pamsessionmng=127.0.0.1

설정이 끝나면 xrdp 서버를 재시작한다.

$ sudo systemctl restart xrdp

방화벽

192.168.0.x 대역에서만 접속할 수 있게 방화벽을 설정한다.

$ sudo ufw allow from 192.168.0.0/24 to any port 3389 comment RDP

x11vnc

xrdp에서 사용할 x11vnc 서버를 설정한다. KDE의 krfb를 사용하면 한글 입력시 자소가 분리된다.

설치

$ sudo apt install x11vnc

systemd 설정

아래 명령으로 x11vnc.service 파일을 편집한다.

$ sudo systemctl edit --force --full x11vnc.service

파일 내용은 아래와 같다. xrdp에서만 접속하기 때문에 -localhost옵션을 넣었고 비밀번호를 사용하지 않기 위해 -nopw옵션을 사용했다.

[Unit]
Description=x11vnc server for SDDM
Requires=display-manager.service
After=display-manger.service

[Service]
ExecStartPre=/bin/bash -c 'while ! find /var/run/sddm -type f; do sleep 2; done' 
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth $(/usr/bin/find /var/run/sddm/ -type f) -nopw -shared -xkb -norepeat -noxrecord -noxdamage -localhost -no6 -loop -forever"

[Install]
WantedBy=graphical.target

테스트

적당한 RDP client를 사용해 접속이 잘되는지 확인한다.

자동 실행 설정

재부팅 후 자동 실행하도록 설정한다.

$ sudo systemctl enable x11vnc.service

입력기 설정

RDP Client 에 따라서 오른쪽 alt 키나 한/영 키가 동작 안할 수 있기 때문에, 사용하는 입력기 설정에서 한/영 전환 키에 shift+space를 추가해둔다.

2021년 1월 13일

Debian/UltraNav Travel 터치 패드 설정

탭 클릭과 스크롤 방향을 자연스럽게 바꾸도록 설정한다.

xinput을 사용해서 UltrNav의 터치 패드 장치를 찾는다.

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ UNIW0001:00 093A:0255 Mouse               id=12   [slave  pointer  (2)]
⎜   ↳ UNIW0001:00 093A:0255 Touchpad            id=13   [slave  pointer  (2)]
⎜   ↳ Synaptics Inc. Composite TouchPad / TrackPoint (Stick)    id=15   [slave  pointer  (2)]
⎜   ↳ 2.4G Mouse                                id=16   [slave  pointer  (2)]
⎜   ↳ Synaptics Inc. Composite TouchPad / TrackPoint    id=20   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Lid Switch                                id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ HD Webcam: HD Webcam                      id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav Consumer Control       id=17   [slave  keyboard (3)]
    ↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav        id=18   [slave  keyboard (3)]
    ↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav System Control id=19   [slave  keyboard (3)]

찾은 장치에서 Tapping, Natural Scrolling 속성이 있는지 찾아본다.

$ xinput list-props "Synaptics Inc. Composite TouchPad / TrackPoint" | grep -i "Tapping Enabled"
        libinput Tapping Enabled (304): 0
        libinput Tapping Enabled Default (305): 0
$ xinput list-props "Synaptics Inc. Composite TouchPad / TrackPoint" | grep -i "Natural Scrolling Enabled"
        libinput Natural Scrolling Enabled (286):       0
        libinput Natural Scrolling Enabled Default (287):       0

xinput으로 속성을 바꾸고 원하는대로 동작하는지 확인한다.

$ xinput set-prop "Synaptics Inc. Composite TouchPad / TrackPoint" "libinput Tapping Enabled" 1
$ xinput set-prop "Synaptics Inc. Composite TouchPad / TrackPoint" "libinput Natural Scrolling Enabled" 1

다음에 X를 다시시작해도 적용하기 위해서 아래 내용으로 /etc/X11/xorg.conf.d/ultranav.conf 파일을 만든다.

Section "InputClass"
    Identifier "Synaptics Inc. Composite TouchPad / TrackPoint"
    MatchProduct "Synaptics Inc. Composite TouchPad / TrackPoint"
    MatchDriver "libinput"
    Option "Tapping" "on"
    Option "Natural Scrolling" "on"
EndSection