dotool – 설치 및 구성 (Manjaro / Arch 기반)¶
개요¶
dotool은 저수준 입력 시뮬레이션 유틸리티입니다. ‘xdotool’과 달리 ‘uinput’을 통해 Linux 커널과 직접 상호작용하므로 X11 및 Wayland와 모두 호환됩니다.
설치 (만자로/아치)¶
1. 패키지 설치¶
pamac build dotool
# or via yay: yay -S dotool
2. 권한 및 udev 규칙¶
dotool이 루트 권한 없이 입력을 시뮬레이션하도록 허용하려면 사용자가 input 그룹의 일부여야 하고 udev 규칙이 활성화되어 있어야 합니다.
그룹에 사용자 추가:
sudo gpasswd -a $USER 입력udev 규칙 생성:
echo 'KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"' \ | sudo tee /etc/udev/rules.d/80-dotool.rules
udev 규칙을 다시 로드합니다:
sudo udevadm control --reload-rules && sudo udevadm trigger
중요: 그룹 변경 사항을 적용하려면 로그아웃했다가 다시 로그인해야 합니다.
프로젝트 구성(config/settings.py)¶
# Override X11 default to use dotool (recommended for better layout stability)
x11_input_method_OVERRIDE = "dotool"
# Delay between keystrokes in milliseconds
# 2ms = Default, reliable for special characters and Umlauts
# 0ms = Maximum speed (Instant mode)
dotool_typedelay = 2
스크립트 구현¶
성능 최적화(FIFO)¶
모든 단어에 대해 새로운 dotool 인스턴스를 시작하는 것은 느립니다(~100ms 대기 시간). “인스턴트” 타이핑을 달성하기 위해 스크립트는 FIFO 파이프에서 읽는 지속적인 백그라운드 프로세스를 사용합니다.
# Setup in the main script
mkfifo /tmp/dotool_fifo 2>/dev/null
dotool < /tmp/dotool_fifo &
DOTOOL_PID=$!
타이핑 기능¶
do_type() {
local text="$1"
if [[ "$INPUT_METHOD" == "dotool" ]]; then
# Pipe commands directly into the running background process
printf 'typedelay %s\ntype %s\n' "$DOTOOL_TYPEDELAY" "$text" > /tmp/dotool_fifo
else
LC_ALL=C.UTF-8 xdotool type --clearmodifiers --delay 12 "$text"
fi
}
문제 해결 및 참고 사항¶
누락된 문자: 특수 문자(예: 움라우트)를 건너뛴 경우
dotool_typedelay를 5 또는 10으로 늘립니다.애플리케이션 호환성: 일부 앱(Electron, 브라우저)은 빠른 입력을 올바르게 등록하기 위해 더 높은 지연이 필요할 수 있습니다.
Wayland 지원:
dotool은 Wayland에 필요한 백엔드입니다.xdotool은 이를 지원하지 않습니다.자동 대체:
dotool이 설치되지 않았거나 올바르게 구성되지 않은 경우 스크립트가 자동으로xdotool로 대체됩니다.