Last active
February 5, 2023 22:41
-
-
Save meetnick/88376f2950b80a93c1672ad897f3ca3e to your computer and use it in GitHub Desktop.
Script to run when AC power supply state changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# create udev rule | |
sudo tee "/etc/udev/rules.d/60-ac-or-battery-change.rules" > /dev/null <<'EOF' | |
# Rule for when switching to battery | |
ACTION=="change",SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="0",ENV{DISPLAY}=":1",ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority",ENV{DBUS_SESSION_BUS_ADDRESS}="unix:path=/run/user/1000/bus",RUN+="/usr/bin/su niccola -c '/usr/bin/ac_change.sh 0'" | |
# Rule for when switching to powersupply | |
ACTION=="change",SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="1",ENV{DISPLAY}=":1",ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority",ENV{DBUS_SESSION_BUS_ADDRESS}="unix:path=/run/user/1000/bus",RUN+="/usr/bin/su niccola -c '/usr/bin/ac_change.sh 1'" | |
EOF | |
# Create script to run when AC power supply change state | |
sudo tee "/usr/bin/ac_change.sh" > /dev/null <<'EOF' | |
#!/usr/bin/env bash | |
EDP_CONNECTED=`xrandr | grep ' connected' | grep -oP 'eDP-1'` | |
if [ EDP_CONNECTED -eq "eDP-1" ]; then | |
exit 0 | |
fi | |
if [ "$1" -eq "1" ]; then | |
logger "AC_CHANGE setting eDP-1 screen refresh rate to 120Hz" | |
xrandr --output eDP-1 --mode "1920x1080" --refresh 120 | |
dbus-send --session --type=method_call --dest="org.gnome.SettingsDaemon.Power" /org/gnome/SettingsDaemon/Power org.freedesktop.DBus.Properties.Set string:"org.gnome.SettingsDaemon.Power.Screen" string:"Brightness" variant:int32:100 | |
elif [ "$1" -eq "0" ]; then | |
logger "AC_CHANGE setting eDP-1 screen refresh rate to 60Hz" | |
CVT_MODELINE=`cvt -r 1920 1080 | grep -oP "\".*"` | |
MODELINE_NAME=`echo ${CVT_MODELINE} | grep -o -P '(?<=\").*(?=\")'` > /dev/null | |
xrandr --newmode ${CVT_MODELINE} > /dev/null 2>&1 | |
xrandr --addmode eDP-1 "${MODELINE_NAME}" > /dev/null 2>&1 | |
xrandr --display :1 --output eDP-1 --mode "${MODELINE_NAME}" | |
dbus-send --session --type=method_call --dest="org.gnome.SettingsDaemon.Power" /org/gnome/SettingsDaemon/Power org.freedesktop.DBus.Properties.Set string:"org.gnome.SettingsDaemon.Power.Screen" string:"Brightness" variant:int32:33 | |
fi | |
EOF | |
sudo chmod +x /usr/bin/ac_change.sh | |
sudo udevadm control --reload-rules | |
sudo udevadm trigger |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment