* fix: allow hypridle -c to run without default conf
- checks for -c and if file exists before running Hyprutils
- update getMainConfigPath runtime_error message to be more explicit in reason for failure
- add LOG message for the config file path
* fix: use std::expected and std::error_code
* fix: remove { } from short if's
When on-timeout has executed (e.g. DPMS off) and a ScreenSaver inhibit
lock arrives afterward (e.g. from a notification sound), on-resume was
blocked by the inhibit check, leaving monitors stuck off.
Track per-listener whether on-timeout actually executed. On resume,
check this flag instead of the inhibit lock count: if on-timeout ran,
on-resume must run unconditionally. If on-timeout was itself inhibited,
skip on-resume symmetrically.
Fixes#128
Use nixbuild/nix-quick-install-action which pairs well with
nix-community/cache-nix-action.
Should help with build times by reducing the number of packages needing
to be re-downloaded on each run.
Parameters are taken from https://github.com/nix-community/cache-nix-action
and may be tweaked later.
* Add ability to ignore Wayland idle inhibitors
config: general:ignore_wayland_inhibit (bool)
If the config value general:ignore_wayland_inhibit is true, the
CCExtIdleNotifierV1 function used will be: sendGetInputIdleNotification.
This instructs the compositor (hyprland) to return all idle/resume
events, ignoring any Wayland inhibitors.
If the config value general:ignore_wayland_inhibit is false/unset,
it will use the default function sendGetIdleNotification, which obeys
Wayland inhibitors.
* Ignore idle inhibition per-listener
Add `ignore_inhibit` option (bool) to listener section of config file,
to allow ignoring idle inhibition per-listener. When set to true, all
types of inhibitors are ignored (systemd, dbus/ScreenSaver, Wayland).
Default value: false (the rule will obey inhibition)
Example:
listener {
timeout = 5
on-timeout = logger 'should obey idle inhibition'
}
listener {
timeout = 6
on-timeout = logger 'should ignore idle inhibition'
ignore_inhibit = true
}
* Add ability to ignore Wayland idle inhibitors
config: general:ignore_wayland_inhibit (bool, default: false)
If the config value general:ignore_wayland_inhibit is true, use
sendGetInputIdleNotification to create the idle notification object.
(Wayland protocol: ext_idle_notifier_v1::get_input_idle_notification)
This instructs the compositor to return all idle/resume events,
ignoring any Wayland inhibitors.
If the config value general:ignore_wayland_inhibit is false (default),
it will use sendGetIdleNotification, which obeys Wayland inhibitors.
(Wayland protocol: ext_idle_notifier_v1::get_idle_notification)
* clang-format
* Update flake.lock
* Add newline at end of file: src/core/Hypridle.cpp
* Add ability to ignore Wayland idle inhibitors
config: general:ignore_wayland_inhibit (bool)
If the config value general:ignore_wayland_inhibit is true, the
CCExtIdleNotifierV1 function used will be: sendGetInputIdleNotification.
This instructs the compositor (hyprland) to return all idle/resume
events, ignoring any Wayland inhibitors.
If the config value general:ignore_wayland_inhibit is false/unset,
it will use the default function sendGetIdleNotification, which obeys
Wayland inhibitors.
* Add ability to ignore Wayland idle inhibitors
config: general:ignore_wayland_inhibit (bool, default: false)
If the config value general:ignore_wayland_inhibit is true, use
sendGetInputIdleNotification to create the idle notification object.
(Wayland protocol: ext_idle_notifier_v1::get_input_idle_notification)
This instructs the compositor to return all idle/resume events,
ignoring any Wayland inhibitors.
If the config value general:ignore_wayland_inhibit is false (default),
it will use sendGetIdleNotification, which obeys Wayland inhibitors.
(Wayland protocol: ext_idle_notifier_v1::get_idle_notification)
* clang-format
* Update flake.lock
* core: fix sleep delay and simplify process spawning
* core: duplicate the inhibit fd with F_DUPFD_CLOEXEC
* nullptr and static
* core: use hyprutils CProcess
* fix: Do not crash if the last CLI parameter was -c
* feat: return an error if the next argument after -c is a flag
* feat: return an error if multiple config files are provided