Laptop control, udev rules, xorg configs, README
This commit is contained in:
17
README.md
17
README.md
@@ -1,3 +1,18 @@
|
|||||||
# legion-7
|
# legion-7
|
||||||
|
|
||||||
Repository with various scripts/configs for Arch Linux on the Lenovo Legion 7 (2021)
|
Repository with various scripts/configs for Arch Linux on the Lenovo Legion 7 (2021).
|
||||||
|
|
||||||
|
Scripts in the `bin` folder should be placed in `/usr/local/bin` or a similar directory and given execute permissions.
|
||||||
|
|
||||||
|
- `brightness_up` and `brightness_down`: See which GPU is connected and control brightness using ACPI
|
||||||
|
- `conservation_mode`: Toggle battery conservation mode which limits charge to 60% to preserve its health
|
||||||
|
- `power_saving_mode`: Change CPU governor, brightness, and refresh rate to extend battery life
|
||||||
|
|
||||||
|
Files in the `udev` folder should be placed in `/etc/udev/rules.d` and owned by `root`.
|
||||||
|
|
||||||
|
- `backlight.rules`: Gives normal users access to backlight controls
|
||||||
|
- `touchpad_input.rules`: Maps the touchpad's variable `/dev/input/event*` path to the static `/dev/input/touchpad` for VFIO passthrough
|
||||||
|
|
||||||
|
FIles in the `xorg` folder should be placed in `/etc/X11/xorg.conf.d` and owned by `root`.
|
||||||
|
|
||||||
|
- `10-monitor.conf`: Enables 165Hz on boot.
|
||||||
|
34
bin/brightness_down
Normal file
34
bin/brightness_down
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if AMD or NVIDIA GPU is connected
|
||||||
|
BrPath=
|
||||||
|
for Dir in /sys/class/backlight/amdgpu_*
|
||||||
|
do
|
||||||
|
if [ -d "$Dir" ]
|
||||||
|
then
|
||||||
|
BrPath="$Dir"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -d "$BrPath" ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
# echo "Found AMD GPU folder $BrPath"
|
||||||
|
else
|
||||||
|
BrPath=/sys/class/backlight/nvidia_0
|
||||||
|
# echo "Didn't find AMD GPU, defaulting to $BrPath"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step brightness by 10%
|
||||||
|
BrCur=$(cat $BrPath/brightness)
|
||||||
|
BrMax=$(cat $BrPath/max_brightness)
|
||||||
|
BrStep=$(($BrMax/10))
|
||||||
|
|
||||||
|
if [ "$(($BrCur - $BrStep))" -lt "$BrStep" ]
|
||||||
|
then
|
||||||
|
echo "$BrStep" > "${BrPath}/brightness"
|
||||||
|
else
|
||||||
|
BrCur=$(($BrCur-$BrStep))
|
||||||
|
echo "$BrCur" > "${BrPath}/brightness"
|
||||||
|
fi
|
34
bin/brightness_up
Normal file
34
bin/brightness_up
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if AMD or NVIDIA GPU is connected
|
||||||
|
BrPath=
|
||||||
|
for Dir in /sys/class/backlight/amdgpu_*
|
||||||
|
do
|
||||||
|
if [ -d "$Dir" ]
|
||||||
|
then
|
||||||
|
BrPath="$Dir"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -d "$BrPath" ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
#echo "Found AMD GPU folder $BrPath"
|
||||||
|
else
|
||||||
|
BrPath=/sys/class/backlight/nvidia_0
|
||||||
|
#echo "Didn't find AMD GPU, defaulting to $BrPath"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step brightness by 10%
|
||||||
|
BrCur=$(cat $BrPath/brightness)
|
||||||
|
BrMax=$(cat $BrPath/max_brightness)
|
||||||
|
BrStep=$(($BrMax/10))
|
||||||
|
|
||||||
|
if [ "$(($BrCur + $BrStep))" -gt "$BrMax" ]
|
||||||
|
then
|
||||||
|
echo "$BrMax" > "${BrPath}/brightness"
|
||||||
|
else
|
||||||
|
BrCur=$(($BrCur+$BrStep))
|
||||||
|
echo "$BrCur" > "${BrPath}/brightness"
|
||||||
|
fi
|
15
bin/conservation_mode
Normal file
15
bin/conservation_mode
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Run as sudo
|
||||||
|
[ "$UID" -eq 0 ] || exec sudo "$0" "$@"
|
||||||
|
|
||||||
|
Mode=$(cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode)
|
||||||
|
|
||||||
|
if [ "$Mode" -eq "1" ]
|
||||||
|
then
|
||||||
|
echo 0 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
|
||||||
|
echo "Battery Conservation Mode is now inactive"
|
||||||
|
else
|
||||||
|
echo 1 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
|
||||||
|
echo "Battery Conservation Mode is now active"
|
||||||
|
fi
|
28
bin/power_saving_mode
Normal file
28
bin/power_saving_mode
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Run as sudo
|
||||||
|
[ "$UID" -eq 0 ] || exec sudo "$0" "$@"
|
||||||
|
|
||||||
|
if [ "$1" == "on" ]
|
||||||
|
then
|
||||||
|
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;
|
||||||
|
do
|
||||||
|
echo "powersave" > $file;
|
||||||
|
done
|
||||||
|
xrandr --output DP-4 --mode 2560x1600 --rate 60 > /dev/null 2>&1
|
||||||
|
xrandr --output eDP-1 --mode 2560x1600 --rate 60 > /dev/null 2>&1
|
||||||
|
for i in {1..3}; do brightness_down; done
|
||||||
|
echo "Power Saving Mode is now active"
|
||||||
|
elif [ "$1" == "off" ]
|
||||||
|
then
|
||||||
|
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;
|
||||||
|
do
|
||||||
|
echo "schedutil" > $file;
|
||||||
|
done
|
||||||
|
xrandr --output DP-4 --mode 2560x1600 --rate 165 > /dev/null 2>&1
|
||||||
|
xrandr --output eDP-1 --mode 2560x1600 --rate 165 > /dev/null 2>&1
|
||||||
|
for i in {1..3}; do brightness_up; done
|
||||||
|
echo "Power Saving Mode is now inactive"
|
||||||
|
else
|
||||||
|
echo "Usage: power_saving_mode [on/off]"
|
||||||
|
fi
|
8
udev/backlight.rules
Normal file
8
udev/backlight.rules
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="nvidia_0", RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="nvidia_0", RUN+="/usr/bin/chmod g+rw /sys/class/backlight/%k/brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="nvidia_0", RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/max_brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="nvidia_0", RUN+="/usr/bin/chmod g+rw /sys/class/backlight/%k/max_brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl*", RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl*", RUN+="/usr/bin/chmod g+rw /sys/class/backlight/%k/brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl*", RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/max_brightness"
|
||||||
|
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="amdgpu_bl*", RUN+="/usr/bin/chmod g+rw /sys/class/backlight/%k/max_brightness"
|
1
udev/touchpad_input.rules
Normal file
1
udev/touchpad_input.rules
Normal file
@@ -0,0 +1 @@
|
|||||||
|
KERNEL=="event[0-9]|event[0-9][0-9]", SUBSYSTEM=="input", ATTRS{name}=="MSFT0001:00 06CB:CE44 Touchpad", ACTION=="add", SYMLINK+="input/touchpad"
|
6
xorg/10-monitor.conf
Normal file
6
xorg/10-monitor.conf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Section "Screen"
|
||||||
|
Identifier "Screen 0"
|
||||||
|
Subsection "Display"
|
||||||
|
Modes "2560x1600_165"
|
||||||
|
EndSubsection
|
||||||
|
EndSection
|
Reference in New Issue
Block a user