From ebb5b6db136fbdd672537093bab26c1b7ca8da15 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Mon, 23 Jan 2023 10:48:07 -0500 Subject: [PATCH] Attempt to udev better --- Makefile | 12 +++++++++++- udev/handle-trackman-marble | 19 ++++++++++++++----- udev/rules.d/90-trackman-marble.rules | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 2a14c7d..7f10d82 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +SUDO ?= sudo + TOP_SOURCES := $(shell git ls-files | grep -vE 'README|Makefile|^config|^\.git|^\.travis' | grep -v /) CONFIG_SOURCES := $(shell git ls-files config) LOCAL_BIN_SOURCES := $(shell git ls-files local/bin) @@ -5,7 +7,9 @@ TARGETS := \ $(patsubst %,$(HOME)/.%,$(TOP_SOURCES)) \ $(patsubst %,$(HOME)/.%,$(CONFIG_SOURCES)) \ $(patsubst %,$(HOME)/.%,$(LOCAL_BIN_SOURCES)) \ - $(HOME)/.config/i3/config + $(HOME)/.config/i3/config \ + /etc/udev/rules.d/90-trackman-marble.rules \ + /usr/local/bin/handle-trackman-marble $(HOME)/.%: % $(RM) '$@' && mkdir -p $(dir $@) && ln -svf '$(PWD)/$^' '$@' @@ -19,6 +23,12 @@ $(HOME)/.config: $(HOME)/.local/bin: mkdir -p $@ +/etc/udev/rules.d/90-trackman-marble.rules: udev/rules.d/90-trackman-marble.rules + $(SUDO) install -m 0644 -v udev/rules.d/90-trackman-marble.rules $@ + +/usr/local/bin/handle-trackman-marble: udev/handle-trackman-marble + $(SUDO) install -m 0644 -v udev/handle-trackman-marble $@ + .PHONY: echo echo: @echo TOP_SOURCES=$(TOP_SOURCES) diff --git a/udev/handle-trackman-marble b/udev/handle-trackman-marble index 9f9d365..1e3396b 100755 --- a/udev/handle-trackman-marble +++ b/udev/handle-trackman-marble @@ -1,14 +1,17 @@ #!/usr/bin/env bash set -o errexit +set -o pipefail main() { - export RUNNING_AS="${RUNNING_AS:-me}" - export RUNNING_AS_ID="$(id -u "${RUNNING_AS}")" - export XINPUT_EXE="${XINPUT_EXE:=xinput}" + export RUNNING_AS="${RUNNING_AS:-dan}" + RUNNING_AS_ID="$(id -u "${RUNNING_AS}")" + export RUNNING_AS_ID - export XAUTHORITY="/home/${RUNNING_AS}/.Xauthority" + export XINPUT_EXE="${XINPUT_EXE:=xinput}" + export XAUTHORITY="/run/user/${RUNNING_AS_ID}/gdm/Xauthority" export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUNNING_AS_ID}/bus" - export DISPLAY=:0 + : "${DISPLAY:=0}" + export DISPLAY export HOME="/home/${RUNNING_AS}" @@ -25,8 +28,14 @@ main() { __get_prop_id "${device_id}" 'Scroll Method Enabled' )" + local scrollbutton + scrollbutton="$( + __get_prop_id "${device_id}" 'Button Scrolling Button' + )" + __run_xinput_as set-prop "${device_id}" "${natscroll_enabled}" 1 __run_xinput_as set-prop "${device_id}" "${scrollmeth_enabled}" 0 0 1 + __run_xinput_as set-prop "${device_id}" "${scrollbutton}" 8 } __get_device_id() { diff --git a/udev/rules.d/90-trackman-marble.rules b/udev/rules.d/90-trackman-marble.rules index 2f6ef55..99230b6 100644 --- a/udev/rules.d/90-trackman-marble.rules +++ b/udev/rules.d/90-trackman-marble.rules @@ -1 +1 @@ -ACTION=="bind", SUBSYSTEM=="usb", ENV{ID_VENDOR}=="Logitech", ENV{ID_SERIAL}=="Logitech_USB_Trackball", RUN:="/usr/local/bin/handle-trackman-marble" +ACTION=="bind", SUBSYSTEM=="usb", ENV{NAME}=="Logitech USB Trackball", MODE="0660", TAG+="uaccess", RUN:="/usr/local/bin/handle-trackman-marble"