From 3b59d9249a4adfb9f8a61c0135241c7a33a900d3 Mon Sep 17 00:00:00 2001 From: Kaan Genc Date: Wed, 9 Mar 2022 22:01:45 -0500 Subject: [PATCH] backlight control --- .vscode/settings.json | 3 +++ sway/backlight.py | 44 +++++++++++++++++++++++++++++++++++++++++++ sway/config | 3 +++ waybar/config | 3 +++ 4 files changed, 53 insertions(+) create mode 100644 .vscode/settings.json create mode 100755 sway/backlight.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..44aef9f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.formatting.provider": "black" +} \ No newline at end of file diff --git a/sway/backlight.py b/sway/backlight.py new file mode 100755 index 0000000..69e1642 --- /dev/null +++ b/sway/backlight.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +import argparse +from decimal import Clamped + +parser = argparse.ArgumentParser( + "backlight.py", description="Adjust backlight levels for intel backlight." +) +# You can either set min or max, or change some amount. Not all. +group = parser.add_mutually_exclusive_group(required=False) +group.add_argument( + "change", + type=int, + nargs="?", + help="The mount, as a percentage, to change the brightness by. Negative numbers lower brightness.", +) +group.add_argument( + "--max", action="store_true", help="Set the brightness to max possible." +) +group.add_argument("--off", action="store_true", help="Set the brightness to 0.") + + +def backlight(file_name: str) -> str: + return f"/sys/class/backlight/intel_backlight/{file_name}" + + +args = parser.parse_args() + +with open(backlight("max_brightness"), "r") as max_f: + max_brightness = int(max_f.read().strip()) + with open(backlight("brightness"), "w+") as current_f: + current_brightness = int(current_f.read().strip()) + if args.max: + current_f.write(str(max_brightness)) + elif args.off: + current_f.write(str(0)) + elif args.change: + percent = int(max_brightness / 100.0) + to = current_brightness + percent * args.change + # Make sure number is in bounds + # Bounding min at 1 to avoid fully shutting down screen without the off option + to = max(min(to, max_brightness), 1) + current_f.write(str(to)) + else: + print(int((current_brightness / float(max_brightness)) * 100)) diff --git a/sway/config b/sway/config index 2fa46b2..dfe7dea 100644 --- a/sway/config +++ b/sway/config @@ -243,6 +243,9 @@ bindsym $mod+c mode "screenshot" bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + # Screen brightness + bindsym XF86MonBrightnessUp exec /home/kaan/.config/sway/backlight.py +5 + bindsym XF86MonBrightnessDown exec /home/kaan/.config/sway/backlight.py -5 # # Resizing containers: diff --git a/waybar/config b/waybar/config index c59135c..cc8c61e 100644 --- a/waybar/config +++ b/waybar/config @@ -66,6 +66,9 @@ "device": "intel_backlight", "format": "{percent}% {icon}", "format-icons": ["", ""], + "on-scroll-up": "/home/kaan/.config/sway/backlight.py +1", + "on-scroll-down": "/home/kaan/.config/sway/backlight.py -1", + "on-click": "/home/kaan/.config/sway/backlight.py --off" }, "pulseaudio": { // "scroll-step": 1, // %, can be a float