192 lines
6.2 KiB
Nix
192 lines
6.2 KiB
Nix
{pkgs, config, ...}: {
|
|
# Enable Rofi
|
|
programs.rofi = {
|
|
enable = true;
|
|
package = pkgs.rofi-wayland;
|
|
terminal = "foot";
|
|
font = let
|
|
fonts = import ../common/fonts.nix;
|
|
in "${fonts.main} 14";
|
|
theme = let
|
|
inherit (config.lib.formats.rasi) mkLiteral;
|
|
border = import ../common/border.nix;
|
|
colors = import ../style/colors.nix;
|
|
in {
|
|
"*" = {
|
|
lightbg = mkLiteral "#EEE8D5";
|
|
lightfg = mkLiteral "#586875";
|
|
blue = mkLiteral "#268BD2";
|
|
red = mkLiteral "#DC322F";
|
|
background-color = mkLiteral "#00000000";
|
|
separatorcolor = mkLiteral "#00000000";
|
|
normal-foreground = mkLiteral "#${colors.text}";
|
|
normal-background = mkLiteral "#${colors.dark}1A";
|
|
urgent-foreground = mkLiteral "#${colors.urgent}";
|
|
active-foreground = mkLiteral "#${colors.split}";
|
|
selected-active-foreground = mkLiteral "#${colors.prime}";
|
|
background = mkLiteral "#${colors.dark}B3";
|
|
bordercolor = mkLiteral "#${colors.prime}";
|
|
selected-normal-foreground = mkLiteral "#FFFFFF";
|
|
selected-normal-background = mkLiteral "#${colors.prime}80";
|
|
border-color = mkLiteral "#${colors.prime}";
|
|
urgent-background = mkLiteral "#${colors.accent}26";
|
|
active-background = mkLiteral "#${colors.accent}26";
|
|
selected-active-background = mkLiteral "#${colors.split}54";
|
|
};
|
|
"#window" = {
|
|
background-color = mkLiteral "@background";
|
|
width = 500;
|
|
border = mkLiteral "${border.weight}";
|
|
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 = let
|
|
# All my rofi scripts in one file
|
|
rofiScripts = let
|
|
displays = import ../common/displays.nix;
|
|
in pkgs.writeScriptBin "rofiscripts" ''
|
|
# Scratchpad function
|
|
handle_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
|
|
handle_power() {
|
|
POWER=$(echo -e "Shutdown\nReboot\nSleep\nLock\nKill" | rofi -dmenu -i -p "Power")
|
|
case $POWER in
|
|
Shutdown) poweroff;;
|
|
Reboot) reboot;;
|
|
Sleep) swaylock --sleep &;;
|
|
Lock) swaylock &;;
|
|
Kill) pkill -9 sway;;
|
|
esac
|
|
}
|
|
|
|
# Resolutions
|
|
handle_resolutions() {
|
|
RET=$(echo -e "Default\nWide\nGPU2" | rofi -dmenu -i -p "Resolutions")
|
|
case $RET in
|
|
Default) swaymsg reload ;;
|
|
Wide) swaymsg "
|
|
output ${displays.d1} enable pos 1680 0 mode 1680x1050@59.954Hz
|
|
output ${displays.d2} enable pos 0 0 mode 1680x1050@59.954Hz
|
|
output ${displays.d3} enable pos 3360 0 transform 0
|
|
";;
|
|
GPU2) swaymsg "
|
|
output ${displays.d2} enable pos 1680 0 mode 1920x1080@60Hz
|
|
output ${displays.d3} enable pos 0 0 transform 0
|
|
";;
|
|
esac
|
|
}
|
|
|
|
# Check for command-line arguments
|
|
if [ "$1" == "--scratchpads" ]; then
|
|
handle_scratchpads
|
|
elif [ "$1" == "--power" ]; then
|
|
handle_power
|
|
elif [ "$1" == "--resolutions" ]; then
|
|
handle_resolutions
|
|
else
|
|
echo "Please use a valid argument."
|
|
fi
|
|
'';
|
|
in with pkgs; [
|
|
rofiScripts
|
|
rofi-bluetooth
|
|
bemoji
|
|
];
|
|
}
|