{ config, pkgs, ... }: let rofi = config.home-manager.users.${config.user}.programs.rofi.finalPackage; in { # Adapted from: # https://gitlab.com/vahnrr/rofi-menus/-/blob/b1f0e8a676eda5552e27ef631b0d43e660b23b8e/scripts/rofi-power # A rofi powered menu to execute power related action. config.powerCommand = builtins.toString ( pkgs.writeShellScript "powermenu" '' power_off='' reboot='' lock='' suspend='󰒲' log_out='' chosen=$(printf '%s;%s;%s;%s;%s\n' \ "$power_off" \ "$reboot" \ "$lock" \ "$suspend" \ "$log_out" \ | ${rofi}/bin/rofi \ -theme-str '@import "power.rasi"' \ -hover-select \ -me-select-entry "" \ -me-accept-entry MousePrimary \ -dmenu \ -sep ';' \ -selected-row 2) confirm () { ${builtins.readFile ./rofi-prompt.sh} } case "$chosen" in "$power_off") confirm 'Shutdown?' && doas shutdown now ;; "$reboot") confirm 'Reboot?' && doas reboot ;; "$lock") ${pkgs.betterlockscreen}/bin/betterlockscreen --lock --display 1 --blur 0.5 --span ;; "$suspend") systemctl suspend ;; "$log_out") confirm 'Logout?' && i3-msg exit ;; *) exit 1 ;; esac '' ); }