{ pkgs
, lib
, config
, ... }: with lib; mkIf config.passthrough.gui {
  services.swayidle = let
    sway = config.wayland.windowManager.sway.package;
    swaymsg = "${sway}/bin/swaymsg";
    swaylock = "${config.programs.swaylock.package}/bin/swaylock";
  in {
    enable = true;
    systemdTarget = "sway-session.target";
    timeouts = [
      { timeout = 600; command = "${swaymsg} 'output * dpms off'"; resumeCommand = "${swaymsg} 'output * dpms on'"; }
    ];
    events = [
      { event = "before-sleep"; command = "${swaylock} -f --grace 0"; }
    ];
  };

  # fullscreen as simple idle inhibitor shortcut
  wayland.windowManager.sway.config.window.commands = [
    { criteria.shell = ".*"; command = "inhibit_idle fullscreen"; }
  ];
}
