2024-10-20 00:30:58 +02:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
pkgs,
|
|
|
|
|
lib,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
with lib; let
|
|
|
|
|
cfg = config.features.desktop.rofi;
|
|
|
|
|
in {
|
|
|
|
|
options.features.desktop.rofi.enable = mkEnableOption "enable rofi";
|
|
|
|
|
|
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
|
programs.rofi = with pkgs; {
|
|
|
|
|
enable = true;
|
|
|
|
|
package = rofi.override {
|
|
|
|
|
plugins = [
|
|
|
|
|
rofi-calc
|
|
|
|
|
rofi-emoji
|
2025-01-09 10:04:13 +01:00
|
|
|
stable.rofi-file-browser
|
2024-10-20 00:30:58 +02:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
pass = {
|
|
|
|
|
enable = true;
|
|
|
|
|
package = rofi-pass-wayland;
|
|
|
|
|
};
|
|
|
|
|
terminal = "\${pkgs.kitty}/bin/kitty";
|
|
|
|
|
font = "Fira Code";
|
|
|
|
|
extraConfig = {
|
|
|
|
|
show-icons = true;
|
|
|
|
|
disable-history = false;
|
|
|
|
|
modi = "drun,calc,emoji,filebrowser";
|
|
|
|
|
kb-primary-paste = "Control+V,Shift+Insert";
|
|
|
|
|
kb-secondary-paste = "Control+v,Insert";
|
|
|
|
|
};
|
2025-09-02 20:18:42 +02:00
|
|
|
theme = let
|
|
|
|
|
inherit (config.colorScheme) palette;
|
|
|
|
|
in
|
|
|
|
|
builtins.toString (pkgs.writeText "rofi-universal-theme.rasi" ''
|
|
|
|
|
* {
|
|
|
|
|
/* Universal theme colors from nix-colors */
|
|
|
|
|
background: #${palette.base00};
|
|
|
|
|
surface: #${palette.base01};
|
|
|
|
|
overlay: #${palette.base02};
|
|
|
|
|
muted: #${palette.base03};
|
|
|
|
|
subtle: #${palette.base04};
|
|
|
|
|
text: #${palette.base05};
|
|
|
|
|
bright-text: #${palette.base06};
|
|
|
|
|
highlight: #${palette.base07};
|
|
|
|
|
accent1: #${palette.base08};
|
|
|
|
|
accent2: #${palette.base09};
|
|
|
|
|
accent3: #${palette.base0A};
|
|
|
|
|
accent4: #${palette.base0B};
|
|
|
|
|
accent5: #${palette.base0C};
|
|
|
|
|
accent6: #${palette.base0D};
|
|
|
|
|
accent7: #${palette.base0E};
|
|
|
|
|
accent8: #${palette.base0F};
|
|
|
|
|
|
|
|
|
|
/* Global properties */
|
|
|
|
|
background-color: @background;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
font: "Fira Code 12";
|
|
|
|
|
border: 0;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
spacing: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window {
|
|
|
|
|
background-color: @background;
|
|
|
|
|
border: 1px;
|
|
|
|
|
border-color: @accent7;
|
|
|
|
|
border-radius: 6px;
|
|
|
|
|
width: 40%;
|
|
|
|
|
padding: 16px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inputbar {
|
|
|
|
|
children: [ prompt, entry ];
|
|
|
|
|
spacing: 12px;
|
|
|
|
|
padding: 8px;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
background-color: @surface;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
prompt {
|
|
|
|
|
text-color: @accent7;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
entry {
|
|
|
|
|
placeholder: "Search...";
|
|
|
|
|
placeholder-color: @subtle;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
cursor-color: @accent7;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message {
|
|
|
|
|
background-color: @surface;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
padding: 8px;
|
|
|
|
|
margin: 8px 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
textbox {
|
|
|
|
|
text-color: @text;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
listview {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
margin: 8px 0 0;
|
|
|
|
|
lines: 10;
|
|
|
|
|
columns: 1;
|
2025-09-04 18:15:37 +02:00
|
|
|
fixed-height: true;
|
2025-09-02 20:18:42 +02:00
|
|
|
scrollbar: false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
padding: 8px;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
spacing: 8px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element normal.normal {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element selected.normal {
|
|
|
|
|
background-color: @accent7;
|
|
|
|
|
text-color: @background;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element alternate.normal {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element-icon {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
size: 24px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element-text {
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
text-color: inherit;
|
|
|
|
|
vertical-align: 0.5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mode-switcher {
|
|
|
|
|
spacing: 0;
|
|
|
|
|
background-color: @surface;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
margin: 8px 0 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
button {
|
|
|
|
|
padding: 8px 16px;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
text-color: @text;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
button selected {
|
|
|
|
|
background-color: @accent7;
|
|
|
|
|
text-color: @background;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Scrollbar */
|
|
|
|
|
scrollbar {
|
|
|
|
|
width: 4px;
|
|
|
|
|
border: 0;
|
|
|
|
|
handle-color: @accent7;
|
|
|
|
|
handle-width: 4px;
|
|
|
|
|
padding: 0;
|
|
|
|
|
}
|
|
|
|
|
'');
|
2024-10-20 00:30:58 +02:00
|
|
|
};
|
2026-01-02 15:12:26 +01:00
|
|
|
cli.rofi-project-opener = {
|
|
|
|
|
enable = true;
|
2026-01-06 05:54:19 +01:00
|
|
|
projectDirs = {
|
2026-01-11 13:13:07 +01:00
|
|
|
AI = {
|
|
|
|
|
path = "~/p/AI";
|
2026-01-06 05:54:19 +01:00
|
|
|
args = "";
|
|
|
|
|
};
|
|
|
|
|
CHAT = {
|
|
|
|
|
path = "~/p/CHAT";
|
|
|
|
|
args = "--agent chiron";
|
|
|
|
|
};
|
2026-01-10 18:09:58 +01:00
|
|
|
MISC = {
|
|
|
|
|
path = "~/p/MISC";
|
|
|
|
|
args = "--agent chiron-forge";
|
|
|
|
|
};
|
2026-01-11 13:13:07 +01:00
|
|
|
NIX = {
|
|
|
|
|
path = "~/p/NIX";
|
|
|
|
|
args = "";
|
|
|
|
|
};
|
2026-01-06 05:54:19 +01:00
|
|
|
};
|
2026-01-02 15:12:26 +01:00
|
|
|
terminal = pkgs.kitty;
|
2026-01-06 05:54:19 +01:00
|
|
|
terminalCommand = "opencode %a";
|
2026-01-02 15:12:26 +01:00
|
|
|
};
|
2024-10-20 00:30:58 +02:00
|
|
|
};
|
|
|
|
|
}
|