forked from 0x7375646F/Linuwu-Sense
-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathMakefile
More file actions
83 lines (76 loc) · 3.23 KB
/
Makefile
File metadata and controls
83 lines (76 loc) · 3.23 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
obj-m := src/linuwu_sense.o
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
PWD := $(shell pwd)
MDIR := /lib/modules/$(KVER)/kernel/drivers/platform/x86
MODNAME := linuwu_sense
REAL_USER := $(shell echo $${SUDO_USER:-$$(whoami)})
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
uninstall:
@sudo rm -f /etc/modules-load.d/$(MODNAME).conf
@sudo rm -f /etc/modprobe.d/blacklist-acer_wmi.conf
@sudo systemctl stop linuwu_sense.service
@sudo systemctl disable linuwu_sense.service
@sudo rm -f /etc/systemd/system/linuwu_sense.service
@sudo systemctl daemon-reload
@sudo rmmod $(MODNAME) 2>/dev/null || true
@sudo modprobe acer_wmi
@echo "Removing current user from linuwu_sense group if exists..."
@if getent group linuwu_sense >/dev/null; then \
sudo gpasswd -d $(REAL_USER) linuwu_sense || true; \
sudo groupdel linuwu_sense || true; \
else \
echo "Group linuwu_sense does not exist."; \
fi
@sudo rm -f /etc/tmpfiles.d/$(MODNAME).conf
@sudo rm -f $(MDIR)/$(MODNAME).ko
@sudo depmod -a
@echo "Uninstalled $(MODNAME) and cleaned up related configuration."
install: all
@sudo rmmod acer_wmi 2>/dev/null || true
@echo "blacklist acer_wmi" | sudo tee /etc/modprobe.d/blacklist-acer_wmi.conf > /dev/null
sudo install -d $(MDIR)
sudo install -m 644 src/$(MODNAME).ko $(MDIR)
sudo depmod -a
@echo "$(MODNAME)" | sudo tee /etc/modules-load.d/$(MODNAME).conf > /dev/null
sudo modprobe $(MODNAME)
@sudo cp linuwu_sense.service /etc/systemd/system/
@sudo systemctl daemon-reload
@sudo systemctl enable linuwu_sense.service
@sudo systemctl start linuwu_sense.service
@echo "Setting up group and permissions..."
@echo "Detected user: $(REAL_USER)"
@if ! getent group linuwu_sense >/dev/null; then \
sudo groupadd linuwu_sense; \
fi;
sudo usermod -aG linuwu_sense $(REAL_USER)
@echo "Setting permissions via tmpfiles..."
@model_path=$$(ls /sys/module/$(MODNAME)/drivers/platform:acer-wmi/acer-wmi/ | grep -E 'predator_sense|nitro_sense' || true); \
if [ -n "$$model_path" ]; then \
echo "Detected model directory: $$model_path"; \
conf_file="/etc/tmpfiles.d/$(MODNAME).conf"; \
[ -f $$conf_file ] || sudo touch $$conf_file; \
if echo "$$model_path" | grep -q "nitro_sense"; then \
supported_fields="fan_speed battery_limiter battery_calibration usb_charging"; \
else \
supported_fields="backlight_timeout battery_calibration battery_limiter boot_animation_sound fan_speed lcd_override usb_charging"; \
fi; \
for f in $$supported_fields; do \
entry="f /sys/module/$(MODNAME)/drivers/platform:acer-wmi/acer-wmi/$$model_path/$$f 0660 root $(MODNAME)"; \
grep -qxF "$$entry" $$conf_file || echo "$$entry" | sudo tee -a $$conf_file > /dev/null; \
done; \
kb_base="/sys/module/$(MODNAME)/drivers/platform:acer-wmi/acer-wmi/four_zoned_kb"; \
if [ -d "$$kb_base" ]; then \
for z in four_zone_mode per_zone_mode; do \
entry="f $$kb_base/$$z 0660 root $(MODNAME)"; \
grep -qxF "$$entry" $$conf_file || echo "$$entry" | sudo tee -a $$conf_file > /dev/null; \
done; \
fi; \
sudo systemd-tmpfiles --create $$conf_file; \
else \
echo "Warning: Could not detect predator_sense or nitro_sense in sysfs."; \
fi
@echo "Module $(MODNAME) installed and configured to load at boot."