| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 코틀린 Hello World!
- 코틀린 시작하기
- 재귀함수
- nontrivial solution
- Big-O 예제
- one-to-one
- linear dependence
- 일차변환
- Big-Oh notation
- Big Omega
- nonhomogeneous linear system
- NumPy
- itertools
- 랜덤 순서 배열
- recursive algorithms
- matrix fo a linear transformation
- Big Theta
- Big-Oh 예제
- includepdf
- 알고리즘 분석의 실례
- 빅세타
- trivial solution
- matrix trnasformations
- 페이지 겹칩
- 배열 섞기
- python
- homogeneous linear system
- 빅오메가
- 이진 탐색
- 빅오 표기법
- Today
- Total
코딩 연습
omarchy 리눅스에서 마우스 연결시 touchpad 자동 on/off 본문
일단 적당한 디렉토리에 touch_toggle.sh 라는 파일을 다음과 같은 내용을 만든다.
#!/bin/bash
# 마우스 연결 상태에 따라 터치패드를 제어하는 스크립트 (최종 수정본)
# 1. 현재 그래픽 세션을 사용하는 사용자 이름과 ID를 찾습니다.
HYPR_USER=$(pgrep -x Hyprland | xargs -r ps -o user= -p | head -n 1)
if [ -z "$HYPR_USER" ]; then
# 사용자를 못 찾으면 /tmp에 로그를 남기고 종료합니다.
echo "toggle_touchpad: HYPR_USER not found at $(date)" >> /tmp/toggle_touchpad_fallback.log
exit 1
fi
HYPR_UID=$(id -u "$HYPR_USER")
# 2. 로그 파일을 사용자별로 고유하게 설정하여 권한 충돌을 방지합니다.
LOG_FILE="/tmp/toggle_touchpad_${HYPR_USER}.log"
# 3. Hyprland 인스턴스 서명 경로를 올바르게 설정합니다. ($XDG_RUNTIME_DIR/hypr/)
# udev(root) 환경에서는 XDG_RUNTIME_DIR이 없으므로 직접 경로를 만듭니다.
HYPRLAND_SIGNATURE_PATH="/run/user/${HYPR_UID}/hypr/"
echo "---" >> "$LOG_FILE"
echo "Script triggered with action: $1 at $(date)" >> "$LOG_FILE"
echo "Running as user: $(whoami), targeting user: $HYPR_USER (UID: $HYPR_UID)" >> "$LOG_FILE"
if [ ! -d "$HYPRLAND_SIGNATURE_PATH" ]; then
echo "Error: Hyprland signature directory not found at $HYPRLAND_SIGNATURE_PATH" >> "$LOG_FILE"
exit 1
fi
export HYPRLAND_INSTANCE_SIGNATURE=$(ls -1 "$HYPRLAND_SIGNATURE_PATH" | head -n 1)
if [ -z "$HYPRLAND_INSTANCE_SIGNATURE" ]; then
echo "Error: HYPRLAND_INSTANCE_SIGNATURE is empty. Is Hyprland running?" >> "$LOG_FILE"
exit 1
fi
echo "Found HYPRLAND_INSTANCE_SIGNATURE: $HYPRLAND_INSTANCE_SIGNATURE" >> "$LOG_FILE"
# 4. 'su'를 사용하여 실제 hyprctl 명령을 로그인된 사용자의 권한으로 실행합니다.
# 이렇게 해야 사용자의 Hyprland 세션에 접근할 수 있습니다.
# 모든 환경 변수를 전달하여 실행 컨텍스트를 유지합니다.
run_as_user() {
sudo -u "$HYPR_USER" DISPLAY=:0 HYPRLAND_INSTANCE_SIGNATURE="$HYPRLAND_INSTANCE_SIGNATURE" "$@"
}
# 5. 터치패드 장치 이름을 설정합니다. (사용자 환경에 맞게 수정 필요)
TOUCHPAD_DEVICE="asue120d:00-04f3:31fb-touchpad"
echo "Touchpad device to control: $TOUCHPAD_DEVICE" >> "$LOG_FILE"
case "$1" in
add)
echo "Action: add. Disabling touchpad." >> "$LOG_FILE"
run_as_user hyprctl keyword "device[$TOUCHPAD_DEVICE]:enabled" false
;;
remove)
echo "Action: remove. Enabling touchpad." >> "$LOG_FILE"
run_as_user hyprctl keyword "device[$TOUCHPAD_DEVICE]:enabled" true
;;
esac
echo "Script finished successfully." >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
exit 0
이때 터치패드 장치 이름은 hyprctl devices 명령으로 확인할 수 있다.
Mouse at 556d6d2388f0:
asue120d:00-04f3:31fb-touchpad
default speed: 0.00000
scroll factor: -1.00
노란 형광펜 부분이 touchpad 장치 이름이다.
그리고 나서 touch_toggle.sh 파일을 실행 가능하게 만들어줘야 한다. touch_toggle.sh 파일이 있는 디렉토리에서 다음을 실행한다.
chmod +x touch_toggle.sh
그 다음 /etc/udev/rules.d/ 로 이동하여 99-mouse-hotplug.rules 라는 파일을 만든다. 여기서는 관리자 권한으로 파일을 만들고 수정해야 한다. sudo nvim 99-mouse-hotplug.rules 를 실행하고 관리자 암호를 입력하면 됨. 그리고 다음과 같은 내용을 채워 넣는다.
ACTION=="add|remove", SUBSYSTEM=="hid", ENV{HID_NAME}=="마우스이름", RUN+="/디렉토리/touch_toggle.sh %E{ACTION}"
당연히 "디렉토리" 부분에는 touch_togle.sh 가 있는 디렉토리를 적어줘야 한다. 또한 "마우스이름" 부분에는 자신의 마우스이름을 넣어줘야 한다. ex) "Logi POP Mouse"
마우스 이름은 bluetoothctl info 를 통해서 확인할 수 있다.
Device DD:52:C4:44:F4:C4 (random)
Name: Logi POP Mouse
Alias: Logi POP Mouse
Appearance: 0x03c2 (962)
Icon: input-mouse
Paired: yes
Bonded: yes
Trusted: yes
Blocked: no
Connected: yes
WakeAllowed: yes
LegacyPairing: no
CablePairing: no
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
UUID: Battery Service (0000180f-0000-1000-8000-00805f9b34fb)
UUID: Human Interface Device (00001812-0000-1000-8000-00805f9b34fb)
UUID: Logitech International SA (0000fd72-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (00010000-0000-1000-8000-011f2000046d)
Modalias: usb:v046DpB030d0008
Battery Percentage: 0x4b (75)
노란 형광펜 부분이 마우스 이름이다.
혹시 bluetoothctl 이란 명령어가 없다고 나온다면 bluez 와 bluez-utils 를 설치해야 한다.
이제 터미널에서 sudo udevadm control --reload-rules 를 실행하면 마우스가 연결됨에 따라 자동으로 touchpad 가 on/off 되는 것을 확인할 수 있다.
'Linux' 카테고리의 다른 글
| omarchy 에서 영어단어 검색하여 네이버 사전 열기 - 단축키 (0) | 2025.12.06 |
|---|---|
| manjaro gnome 에서 theme 가 리셋되는 현상 (0) | 2023.02.22 |
| (arch) Gnome 에서 chrome-gnome-shell 설치 문제 (0) | 2022.11.10 |
| (EndeavourOS) online account 로 구글 드라이브 연동 (0) | 2022.11.10 |
| EndeavourOS 해상도 설정 (0) | 2022.06.25 |
