Skip to content

Instantly share code, notes, and snippets.

@lagerone
Last active April 12, 2023 11:49
Show Gist options
  • Save lagerone/1568ea6fbb98fd90a3495f9e51e26c8c to your computer and use it in GitHub Desktop.
Save lagerone/1568ea6fbb98fd90a3495f9e51e26c8c to your computer and use it in GitHub Desktop.
A script for adjusting screen brightness in Dell laptops with OLED screens in Ubuntu. It requires xrandr to be installed.
#!/usr/bin/python3
import logging
import os
import subprocess
import sys
from typing import Literal
logging.basicConfig(level=logging.DEBUG)
FILE_PATH = os.path.join(
os.path.dirname(os.path.realpath(__file__)), ".screen-brightness"
)
def read_current_level() -> float:
if not os.path.isfile(FILE_PATH):
return 1
with open(
file=FILE_PATH,
mode="r",
encoding="utf-8",
) as file:
current_level = file.readline().strip()
return float(current_level)
def save_level(level: float) -> None:
with open(
file=FILE_PATH,
mode="w",
encoding="utf-8",
) as file:
file.write(str(level))
def adjust_level(method: Literal["up", "down"]) -> None:
adjuster = 0.05 if method == "up" else -0.05
current_level = read_current_level()
adjusted_level = current_level + adjuster
if adjusted_level > 1:
adjusted_level = 1
if adjusted_level < 0.2:
adjusted_level = 0.2
logging.debug(f"Setting screen brightness to {adjusted_level}.")
subprocess.run(["xrandr", "--output", "eDP-1", "--brightness", str(adjusted_level)])
save_level(level=adjusted_level)
if __name__ == "__main__":
METHOD = sys.argv[1] if len(sys.argv) > 1 else "up"
adjust_level(method=METHOD)
@lagerone
Copy link
Author

Is there a reason it stops at 0.2? Is it not safe or something? Since my display is OLED, depending on the lighting values below 0.2 are acceptable, but now I'm wondering if I might screwing up my display or something.

No particular reason, it was a limit I added which suited my needs. It shouldn't break anything allowing it to go to 0.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment