Crates.io | hinoirisetr |
lib.rs | hinoirisetr |
version | 1.2.2 |
created_at | 2025-04-27 09:33:17.789043+00 |
updated_at | 2025-08-03 18:05:50.137708+00 |
description | A daemon to dim the screen at night |
homepage | |
repository | https://git.vavakado.xyz/vavakado/hinoirisetr |
max_upload_size | |
id | 1650973 |
size | 86,528 |
hinoirisetr is a lightweight daemon that automatically adjusts your screen's color temperature and gamma based on the time of day. It helps reduce eye strain and improve sleep quality by dimming the screen at night. The daemon supports multiple backends for flexibility and can be controlled at runtime via a Unix socket.
ddcutil
gammastep
hyprctl
(with hyprsunset
)redshift
xsct
hinoirisetr uses backends to apply screen adjustments. You can choose different backends for temperature and gamma control:
hyprsunset
).Select the appropriate backend based on your system and preferences. Ensure the required binaries are installed and available in your PATH
.
hinoirisetr is written in Rust. To build and install it:
Install Rust and Cargo if you haven't already:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Clone the repository:
git clone https://git.vavakado.xyz/vavakado/hinoirisetr.git
cd hinoirisetr
Build the project:
cargo install --path .
Alternatively, if using Nix, you can use the provided flake:
nix build
hinoirisetr uses a TOML configuration file located at:
$XDG_CONFIG_HOME/hinoirisetr.toml
(if XDG_CONFIG_HOME
is set)~/.config/hinoirisetr.toml
(otherwise)If no configuration file is found, the daemon will use default settings and log a warning.
The configuration file supports the following options:
Global Options:
notification_timeout
: Timeout in milliseconds for desktop notifications (default: 5000).disable_timeout
: Timeout in seconds for disabling adjustments (default: 300).gamma_backend
: Backend for gamma control (options: hyprctl
, ddcutil
, gammastep
, xsct
, redshift
, none
).temp_backend
: Backend for temperature control (options: hyprctl
, gammastep
, xsct
, redshift
, none
).Section [gamma]
:
day
: Gamma percentage for daytime (0–100, default: 100).night
: Gamma percentage for nighttime (0–100, default: 95).Section [temp]
:
day
: Color temperature in Kelvin for daytime (1000–20000, default: 6500).night
: Color temperature in Kelvin for nighttime (1000–20000, default: 2500).Section [time]
:
sunset_start
: Hour (0–23) when sunset starts.sunset_end
: Hour (0–23) when sunset ends.sunrise_start
: Hour (0–23) when sunrise starts.sunrise_end
: Hour (0–23) when sunrise ends.interpolation_temp
: Interpolation method for temperature (options: linear
, cubic
, cubiceaseinout
, cosine
, exponential
).interpolation_gamma
: Interpolation method for gamma (same options as above).Note: The daemon will interpolate settings between day and night during sunrise and sunset periods using the specified interpolation methods.
notification_timeout = 3000
gamma_backend = "xsct"
temp_backend = "xsct"
[gamma]
day = 100
night = 90
[temp]
day = 6500
night = 3500
[time]
sunset_start = 18
sunset_end = 21
sunrise_start = 5
sunrise_end = 8
interpolation_temp = "cubic"
interpolation_gamma = "linear"
To start the daemon, simply run:
hinoirisetr
It will load the configuration, check for required backends, and start adjusting the screen settings based on the current time.
hinoirisetr listens on a Unix socket at /tmp/hinoirisetr-$USER.sock
for control commands. Available commands include:
To send a command, use a tool like socat
:
echo "toggle" | socat - UNIX-CONNECT:/tmp/hinoirisetr-$USER.sock
You can also send commands directly from the command line without using socat:
hinoirisetr toggle
Set the RUST_LOG
environment variable to control log verbosity:
trace
(only on debug builds)debug
(only on debug builds)info
(default)warn
error
For example:
RUST_LOG=debug hinoirisetr
ddcutil
gammastep
hyprctl
(with hyprsunset
for Hyprland)redshift
xsct
Ensure that the required backends are installed and available in your PATH
.
Contributions are welcome! Please submit issues or pull requests to the repository at forgejo.
This project is licensed under the MIT License. See the LICENSE file for details.