Optimize sunset.py
This commit is contained in:
parent
310b879416
commit
c1c8a83ec5
5 changed files with 103 additions and 95 deletions
37
scripts/lib/sunset.py
Normal file
37
scripts/lib/sunset.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
"""Sets the monitor temperature based on the current time using Hyprsunset"""
|
||||
from os import environ
|
||||
from socket import AF_UNIX, SOCK_STREAM, socket
|
||||
|
||||
from .evening import on_steam, Range, smoothstep, sunup_amount
|
||||
|
||||
|
||||
def setup_socket() -> socket:
|
||||
"""Connects to the Hyprsunset socket"""
|
||||
hyprsunset = socket(AF_UNIX, SOCK_STREAM)
|
||||
hyprsunset.connect(f"{environ["XDG_RUNTIME_DIR"]}/hypr/{environ["HYPRLAND_INSTANCE_SIGNATURE"]}/.hyprsunset.sock")
|
||||
return hyprsunset
|
||||
|
||||
|
||||
def get_temperature(hyprsunset: socket) -> int:
|
||||
"""Retrieves the current screen temperature"""
|
||||
# In theory the message might not send in one go, but in practice it does so I won't bother handling the error
|
||||
_ = hyprsunset.send(b"temperature")
|
||||
# 4 bytes should be enough but why not 8 for comfort
|
||||
# Just raise an error if it's not a number, nothing special to do here
|
||||
return int(hyprsunset.recv(8))
|
||||
|
||||
|
||||
def set_temperature(hyprsunset: socket, temperature: float) -> None:
|
||||
"""Sends a message to hyprsunset to set the temperature"""
|
||||
# In theory the message might not send in one go, but in practice it does so I won't bother handling the error
|
||||
_ = hyprsunset.send(f"temperature {temperature:.1f}".encode())
|
||||
|
||||
|
||||
def main(temperature_range: Range, /, check_steam: bool = False) -> None:
|
||||
"""Adjusts the monitor temperature based on the current time"""
|
||||
hyprsunset = setup_socket()
|
||||
temperature = int(smoothstep(sunup_amount(), temperature_range))
|
||||
if temperature != get_temperature(hyprsunset):
|
||||
if check_steam and on_steam():
|
||||
return
|
||||
set_temperature(hyprsunset, temperature)
|
Loading…
Add table
Add a link
Reference in a new issue