mirror of
https://github.com/nmasur/dotfiles
synced 2024-12-27 07:34:52 +00:00
179 lines
5.7 KiB
Nix
179 lines
5.7 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
|
|
rofi = config.home-manager.users.${config.user}.programs.rofi.finalPackage;
|
|
|
|
in {
|
|
|
|
imports = [ ./rofi/power.nix ./rofi/brightness.nix ];
|
|
|
|
config = lib.mkIf (pkgs.stdenv.isLinux && config.services.xserver.enable) {
|
|
|
|
# Set the Rofi-Systemd terminal for viewing logs
|
|
environment.sessionVariables.ROFI_SYSTEMD_TERM =
|
|
lib.mkIf config.kitty.enable "${pkgs.kitty}/bin/kitty";
|
|
|
|
home-manager.users.${config.user} = {
|
|
|
|
home.packages = with pkgs;
|
|
[
|
|
jq # Required for rofi-systemd
|
|
];
|
|
|
|
programs.rofi = {
|
|
enable = true;
|
|
cycle = true;
|
|
location = "center";
|
|
pass = { };
|
|
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji pkgs.rofi-systemd ];
|
|
theme = let
|
|
inherit (config.home-manager.users.${config.user}.lib.formats.rasi)
|
|
mkLiteral;
|
|
in {
|
|
|
|
# Inspired by https://github.com/sherubthakur/dotfiles/blob/master/users/modules/desktop-environment/rofi/launcher.rasi
|
|
|
|
"*" = {
|
|
background-color = mkLiteral config.theme.colors.base00;
|
|
foreground-color = mkLiteral config.theme.colors.base07;
|
|
text-color = mkLiteral config.theme.colors.base07;
|
|
border-color = mkLiteral config.theme.colors.base04;
|
|
};
|
|
|
|
# Holds the entire window
|
|
"#window" = {
|
|
transparency = "real";
|
|
background-color = mkLiteral config.theme.colors.base00;
|
|
text-color = mkLiteral config.theme.colors.base07;
|
|
border = mkLiteral "4px";
|
|
border-color = mkLiteral config.theme.colors.base04;
|
|
border-radius = mkLiteral "4px";
|
|
width = mkLiteral "850px";
|
|
padding = mkLiteral "15px";
|
|
};
|
|
|
|
# Wrapper around bar and results
|
|
"#mainbox" = {
|
|
background-color = mkLiteral config.theme.colors.base00;
|
|
border = mkLiteral "0px";
|
|
border-radius = mkLiteral "0px";
|
|
border-color = mkLiteral config.theme.colors.base04;
|
|
children = map mkLiteral [ "inputbar" "listview" ];
|
|
spacing = mkLiteral "10px";
|
|
padding = mkLiteral "10px";
|
|
};
|
|
|
|
# Unknown
|
|
"#textbox-prompt-colon" = {
|
|
expand = false;
|
|
str = ":";
|
|
margin = mkLiteral "0px 0.3em 0em 0em";
|
|
text-color = mkLiteral config.theme.colors.base07;
|
|
};
|
|
|
|
# Command prompt left of the input
|
|
"#prompt" = { enabled = false; };
|
|
|
|
# Actual text box
|
|
"#entry" = {
|
|
placeholder-color = mkLiteral config.theme.colors.base03;
|
|
expand = true;
|
|
horizontal-align = "0";
|
|
placeholder = "";
|
|
padding = mkLiteral "0px 0px 0px 5px";
|
|
blink = true;
|
|
};
|
|
|
|
# Top bar
|
|
"#inputbar" = {
|
|
children = map mkLiteral [ "prompt" "entry" ];
|
|
border = mkLiteral "1px";
|
|
border-radius = mkLiteral "4px";
|
|
padding = mkLiteral "6px";
|
|
};
|
|
|
|
# Results
|
|
"#listview" = {
|
|
background-color = mkLiteral config.theme.colors.base00;
|
|
padding = mkLiteral "0px";
|
|
columns = 1;
|
|
lines = 12;
|
|
spacing = "5px";
|
|
cycle = true;
|
|
dynamic = true;
|
|
layout = "vertical";
|
|
};
|
|
|
|
# Each result
|
|
"#element" = {
|
|
orientation = "vertical";
|
|
border-radius = mkLiteral "0px";
|
|
padding = mkLiteral "5px 0px 5px 5px";
|
|
};
|
|
"#element.selected" = {
|
|
border = mkLiteral "1px";
|
|
border-radius = mkLiteral "4px";
|
|
border-color = mkLiteral config.theme.colors.base07;
|
|
background-color = mkLiteral config.theme.colors.base04;
|
|
text-color = mkLiteral config.theme.colors.base00;
|
|
};
|
|
|
|
"#element-text" = {
|
|
expand = true;
|
|
# horizontal-align = mkLiteral "0.5";
|
|
vertical-align = mkLiteral "0.5";
|
|
margin = mkLiteral "0px 2.5px 0px 2.5px";
|
|
};
|
|
"#element-text.selected" = {
|
|
background-color = mkLiteral config.theme.colors.base04;
|
|
text-color = mkLiteral config.theme.colors.base00;
|
|
};
|
|
|
|
# Not sure how to get icons
|
|
"#element-icon" = {
|
|
size = mkLiteral "18px";
|
|
border = mkLiteral "0px";
|
|
padding = mkLiteral "2px 5px 2px 2px";
|
|
background-color = mkLiteral config.theme.colors.base00;
|
|
};
|
|
"#element-icon.selected" = {
|
|
background-color = mkLiteral config.theme.colors.base04;
|
|
text-color = mkLiteral config.theme.colors.base00;
|
|
};
|
|
|
|
};
|
|
xoffset = 0;
|
|
yoffset = -20;
|
|
extraConfig = {
|
|
show-icons = true;
|
|
kb-cancel = "Escape,Super+space";
|
|
modi = "window,run,ssh,emoji,calc,systemd";
|
|
sort = true;
|
|
# levenshtein-sort = true;
|
|
};
|
|
};
|
|
|
|
home.file.".local/share/rofi/themes" = {
|
|
recursive = true;
|
|
source = ./rofi/themes;
|
|
};
|
|
|
|
};
|
|
|
|
launcherCommand = ''
|
|
${rofi}/bin/rofi -modes drun -show drun -theme-str '@import "launcher.rasi"' '';
|
|
systemdSearch = "${pkgs.rofi-systemd}/bin/rofi-systemd";
|
|
altTabCommand = "${rofi}/bin/rofi -show window -modi window";
|
|
calculatorCommand = "${rofi}/bin/rofi -modes calc -show calc";
|
|
audioSwitchCommand = "${
|
|
(pkgs.writeShellApplication {
|
|
name = "switch-audio";
|
|
runtimeInputs = [ pkgs.ponymix rofi ];
|
|
text = builtins.readFile ./rofi/pulse-sink.sh;
|
|
})
|
|
}/bin/switch-audio";
|
|
};
|
|
|
|
}
|