Laptop control, udev rules, xorg configs, README
This commit is contained in:
17
README.md
17
README.md
@@ -1,3 +1,18 @@
|
||||
# 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