# ./modules/users/psljr/rofi.nix
# Configure the rofi launcher for user psljr.

{ config, lib, pkgs, ... }:

{
  home-manager.users.psljr = {
    programs.rofi = {
      enable = true;

      font = "JetbrainsMono 10";
      extraConfig = {
        show-icons = true;
      };

      plugins = with pkgs; [
        rofi-calc
        rofi-bluetooth
        rofi-power-menu
        rofi-network-manager
      ];
    
      theme = let
        inherit (config.home-manager.users.psljr.lib.formats.rasi) mkLiteral;
      in {
        "*" = {
          bg0 = mkLiteral "#262626";
          bg1 = mkLiteral "#303030";
          fg0 = mkLiteral "#F7F7F7";

          accent-color = mkLiteral "#FF9955";
          urgent-color = mkLiteral "#DBBC7F";

          background-color = mkLiteral "transparent";
          text-color = mkLiteral "@fg0";

          margin = mkLiteral "0";
          padding = mkLiteral "0";
          spacing = mkLiteral "0";
        };

        "window" = {
          location = mkLiteral "center";
          width = mkLiteral "480";
          border-radius = mkLiteral "5px";
          border = mkLiteral "1px";
          border-color = mkLiteral "#FF995555";
          background-color = mkLiteral "@bg0";
        };

        "inputbar" = {
          spacing = mkLiteral "8px";
          padding = mkLiteral "8px";
          background-color = mkLiteral "@bg1";
        };

        "prompt, entry, element-icon, element-text" = {
          vertical-align = mkLiteral "0.5";
        };
    
        "prompt" = {
          text-color = mkLiteral "@accent-color";
        };
    
        "textbox" = {
          padding = mkLiteral "8px";
          background-color = mkLiteral "@bg1";
        };
    
        /*
        "listview" = {
          padding = mkLiteral "4px 0";
          lines = mkLiteral "8";
          columns = mkLiteral "1";
          fixed-height = mkLiteral "false";
        };
        */
    
        "element" = {
          padding = mkLiteral "8px";
          spaciong = mkLiteral "8px";
        };
    
        "element normal normal, element alternate normal" = {
          text-color = mkLiteral "@fg0";
          background-color = mkLiteral "@bg0";
        };
    
        "element normal urgent, element alternate urgent" = {
          text-color = mkLiteral "@urgent-color";
        };
    
        "element normal active, element alternate active" = {
          text-color = mkLiteral "@accent-color";
        };
    
        "element selected" = {
          text-color = mkLiteral "@bg0";
        };
    
        "element selected normal, element selected active" = {
          background-color = mkLiteral "@accent-color";
          text-color = mkLiteral "@bg0";
        };
    
        "element selected urgent" = {
          background-color = mkLiteral "@urgent-color";
        };
    
        "element-icon" = {
          size = mkLiteral "0.8em";
        };
    
        "element-text" = {
          text-color = mkLiteral "inherit";
        };
      };
    };
  };
}
