{ pkgs, config, ... }: { programs.rofi = { enable = true; package = pkgs.rofi-wayland; terminal = "foot"; font = "${config.look.fonts.main} 14"; theme = let inherit (config.lib.formats.rasi) mkLiteral; in { "*" = { lightbg = mkLiteral "#EEE8D5"; lightfg = mkLiteral "#586875"; blue = mkLiteral "#268BD2"; red = mkLiteral "#DC322F"; background-color = mkLiteral "#00000000"; separatorcolor = mkLiteral "#00000000"; normal-foreground = mkLiteral "#${config.look.colors.text}"; normal-background = mkLiteral "#${config.look.colors.dark}1A"; urgent-foreground = mkLiteral "#${config.look.colors.urgent}"; active-foreground = mkLiteral "#${config.look.colors.split}"; selected-active-foreground = mkLiteral "#${config.look.colors.prime}"; background = mkLiteral "#${config.look.colors.dark}D9"; bordercolor = mkLiteral "#${config.look.colors.prime}"; selected-normal-foreground = mkLiteral "#FFFFFF"; selected-normal-background = mkLiteral "#${config.look.colors.prime}80"; border-color = mkLiteral "#${config.look.colors.prime}"; urgent-background = mkLiteral "#${config.look.colors.accent}26"; active-background = mkLiteral "#${config.look.colors.accent}26"; selected-active-background = mkLiteral "#${config.look.colors.split}54"; }; "#window" = { background-color = mkLiteral "@background"; width = 500; border = mkLiteral "${config.look.border.string}"; padding = 5; }; "#message" = { border = mkLiteral "1px dash 0px 0px"; border-color = mkLiteral "@separatorcolor"; padding = 1; }; "#textbox" = { text-color = mkLiteral "@normal-foreground"; }; "#listview" = { fixed-height = 0; border-color = mkLiteral "@separatorcolor"; scrollbar = mkLiteral "false"; columns = 2; }; "#element" = { border = 0; padding = 1; }; "#element-text" = { background-color = mkLiteral "inherit"; text-color = mkLiteral "inherit"; }; "#element.normal.normal" = { text-color = mkLiteral "@normal-foreground"; }; "#element.normal.urgent" = { text-color = mkLiteral "@urgent-foreground"; }; "#element.normal.active" = { background-color = mkLiteral "@active-background"; text-color = mkLiteral "@active-foreground"; }; "#element.selected.normal" = { background-color = mkLiteral "@selected-normal-background"; text-color = mkLiteral "@selected-normal-foreground"; }; "#element.selected.urgent" = { background-color = mkLiteral "@urgent-background"; text-color = mkLiteral "@urgent-foreground"; }; "#element.selected.active" = { background-color = mkLiteral "@selected-active-background"; text-color = mkLiteral "@selected-active-foreground"; }; "#element.alternate.normal" = { text-color = mkLiteral "@normal-foreground"; }; "#element.alternate.urgent" = { text-color = mkLiteral "@urgent-foreground"; }; "#element.alternate.active" = { background-color = mkLiteral "@active-background"; text-color = mkLiteral "@active-foreground"; }; "#mode-switcher" = { border = mkLiteral "2px dash 0px 0px"; border-color = mkLiteral "@separatorcolor"; }; "#button.selected" = { background-color = mkLiteral "@selected-normal-background"; text-color = mkLiteral "@selected-normal-foreground"; }; "#case-indicator" = { spacing = mkLiteral "0"; text-color = mkLiteral "@normal-foreground"; }; "#entry" = { spacing = 0; text-color = mkLiteral "@normal-foreground"; }; "#prompt" = { spacing = 0; text-color = mkLiteral "@normal-foreground"; }; "#inputbar" = { spacing = 0; text-color = mkLiteral "@normal-foreground"; padding = 1; children = map mkLiteral ["prompt" "textbox-prompt-colon" "entry"]; }; "#textbox-prompt-colon" = { expand = false; str = ":"; margin = mkLiteral "0px 0.3em 0em 0em"; text-color = mkLiteral "@normal-foreground"; }; }; }; home.packages = with pkgs; [ (pkgs.writeScriptBin "rofiscripts" '' # Scratchpad function scratchpads() { SCRATCHPADS=$(echo -e "Gotop\nMusic\nSound\nEasyEffects" | rofi -dmenu -i -p "Scratchpads") case $SCRATCHPADS in Gotop) foot -a gotop -T Gotop gotop;; Music) foot -a music -T Music ncmpcpp;; Sound) foot -a sound -T Sound pulsemixer;; EasyEffects) easyeffects;; esac } # Lock menu power() { POWER=$(echo -e "Shutdown\nReboot\nSleep\nLock\nKill" | rofi -dmenu -i -p "Power") case $POWER in Shutdown) poweroff;; Reboot) reboot;; Sleep) swaysleep &;; Lock) swaylock &;; Kill) pkill -9 $XDG_CURRENT_DESKTOP;; esac } # Check for command-line arguments if [ "$1" == "--scratchpads" ]; then scratchpads elif [ "$1" == "--power" ]; then power else echo "Please --scratchpads or --power." fi '') rofi-bluetooth bemoji ]; }