{ config, pkgs, lib, ... }:
let
  cfg = config.nix-config.style;

  wofiPowerMenu = pkgs.writeShellScriptBin "wofi-power-menu" ''
    #!/usr/bin/env bash

    options=" Power Off\n Reboot\n Lock\n Suspend"
    selected=$(echo -e "$options" | wofi --dmenu --prompt "Power Menu")
    #  --width 300 --height 250

    case "$selected" in
      " Power Off") systemctl poweroff ;;
      " Reboot") systemctl reboot ;;
      " Lock") hyprlock ;;
      " Suspend") systemctl suspend ;;
      *) exit 1 ;;
    esac
  '';

  wofiFilePicker = pkgs.writeShellScriptBin "wofi-file-picker" ''
    #!/usr/bin/env bash
    initial=$(find $HOME -maxdepth 2 -type f)
    selected=$(printf "%s\n" $initial | wofi --dmenu --prompt "Select a file")

    if [ -n "$selected" ]; then
      xdg-open "$selected"
    else
      echo "No file selected"
      exit 1
    fi
  '';
in
{

  options.nix-config = {
    powerMenu = lib.mkOption {
      description = "Package to use as a power menu";
      type = lib.types.package;
      default = wofiPowerMenu;
    };
  };

  config = {
    programs.wofi = {
      enable = true;

      settings = {
        # global layout
        width = "50%";
        height = "50%";
        orientation = "vertical";
        hide_scroll = true;
        line_wrap = "off";
        dynamic_lines = true;

        # search behaviour
        matching = "fuzzy";
        single_click = true;


        show = "drun";
        prompt = "Launch...";
        # normal_window = true;
        layer = "top";
        term = "foot";
        halign = "fill";

        # Rich rendering
        allow_markup = true;
        allow_images = true;
        image_size = 24;


        exec_search = false;
        hide_search = false;
        parse_search = false;
        insensitive = true;
        no_actions = true;


        filter_rate = 100;
        key_expand = "Tab";
        key_exit = "Escape";

      };


      style = ''
        * {
          font-family: ${cfg.monospaceFont};
          font-size: ${builtins.toString (cfg.fontSizes.desktop + 8)}px;
          color: white;
          background: transparent;
        }

        #window {
          background: rgba(1, 1, 1, 0.5);
          margin: auto;
          padding: 10px;
        }

        #input {
          padding: 10px;
          margin-bottom: 10px;
          border-radius: 15px;
        }

        #outer-box {
          padding: 20px;
        }

        #img {
          margin-right: 6px;
        }

        #entry {
          padding: 10px;
          border-radius: 15px;
        }

        #entry:selected {
          background-color: #2e3440;
          outline: none;
          border: none;
        }

        #text {
          margin: 2px;
        }
      '';
    };

    home.packages = with pkgs; [
      wofiPowerMenu
      wofi-emoji
    ];
  };
}
