From 34b625a402b8f43729f4b432e4ad3d0b12b9ca07 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Mon, 9 Jun 2025 12:59:05 +0100 Subject: [PATCH] Add rofi theme Signed-off-by: Nikolaos Karaolidis --- .../configs/user/console/ncspot/theme.toml | 2 +- .../config/widget/components/Launcher.tsx | 2 +- .../common/configs/user/gui/clipbook/rofi.nix | 2 +- .../common/configs/user/gui/cliphist/rofi.nix | 2 +- .../common/configs/user/gui/emoji/default.nix | 2 +- .../common/configs/user/gui/rofi/default.nix | 7 +- hosts/common/configs/user/gui/rofi/theme.rasi | 288 ++++++++++++++++++ 7 files changed, 298 insertions(+), 7 deletions(-) create mode 100644 hosts/common/configs/user/gui/rofi/theme.rasi diff --git a/hosts/common/configs/user/console/ncspot/theme.toml b/hosts/common/configs/user/console/ncspot/theme.toml index b7c7583..1d30e8d 100644 --- a/hosts/common/configs/user/console/ncspot/theme.toml +++ b/hosts/common/configs/user/console/ncspot/theme.toml @@ -6,7 +6,7 @@ library_tabs = [ "albums", "artists", "playlists", "browse" ] [theme] background = "{{colors.surface.default.hex}}" primary = "{{colors.on_surface.default.hex}}" -secondary = "{{colors.surface.default.hex}}" +secondary = "{{colors.inverse_surface.default.hex}}" title = "{{colors.primary.default.hex}}" playing = "{{colors.primary.default.hex}}" playing_bg = "{{colors.surface.default.hex}}" diff --git a/hosts/common/configs/user/gui/astal/config/widget/components/Launcher.tsx b/hosts/common/configs/user/gui/astal/config/widget/components/Launcher.tsx index c3e2359..b4f83a9 100644 --- a/hosts/common/configs/user/gui/astal/config/widget/components/Launcher.tsx +++ b/hosts/common/configs/user/gui/astal/config/widget/components/Launcher.tsx @@ -5,7 +5,7 @@ export default () => ( className="launcher" onClickRelease={() => execAsync( - 'bash -c "rofi -cache-dir $XDG_CACHE_HOME/rofi -show drun -run-command \"uwsm app -- {cmd}\""', + 'rofi -modes drun -show drun -run-command \"uwsm app -- {cmd}\"', ) } > diff --git a/hosts/common/configs/user/gui/clipbook/rofi.nix b/hosts/common/configs/user/gui/clipbook/rofi.nix index 416660d..816419a 100644 --- a/hosts/common/configs/user/gui/clipbook/rofi.nix +++ b/hosts/common/configs/user/gui/clipbook/rofi.nix @@ -21,5 +21,5 @@ in pkgs.writeShellApplication { name = "clipbook-rofi"; runtimeInputs = [ rofi ]; - text = "rofi -modi \"copy:${copy}\" -show copy"; + text = "rofi -modes \"clipbook-copy:${copy}\" -show clipbook-copy"; } diff --git a/hosts/common/configs/user/gui/cliphist/rofi.nix b/hosts/common/configs/user/gui/cliphist/rofi.nix index 5659929..cd030cb 100644 --- a/hosts/common/configs/user/gui/cliphist/rofi.nix +++ b/hosts/common/configs/user/gui/cliphist/rofi.nix @@ -27,5 +27,5 @@ in pkgs.writeShellApplication { name = "cliphist-rofi"; runtimeInputs = [ rofi ]; - text = "rofi -modi \"copy:${copy},delete:${delete}\" -show copy"; + text = "rofi -modes \"cliphist-copy:${copy},cliphist-delete:${delete}\" -show cliphist-copy"; } diff --git a/hosts/common/configs/user/gui/emoji/default.nix b/hosts/common/configs/user/gui/emoji/default.nix index b539ea7..93dc302 100644 --- a/hosts/common/configs/user/gui/emoji/default.nix +++ b/hosts/common/configs/user/gui/emoji/default.nix @@ -17,7 +17,7 @@ in wayland.windowManager.hyprland.settings.bind = [ # Super + Shift + : - "$mod_Shift, code:47, exec, ${lib.meta.getExe hmConfig.programs.rofi.finalPackage} -cache-dir ${home}/.cache/rofi -modi emoji -show emoji" + "$mod_Shift, code:47, exec, ${lib.meta.getExe hmConfig.programs.rofi.finalPackage} -cache-dir ${home}/.cache/rofi -modes emoji -show emoji" ]; }; } diff --git a/hosts/common/configs/user/gui/rofi/default.nix b/hosts/common/configs/user/gui/rofi/default.nix index 62b6289..0536456 100644 --- a/hosts/common/configs/user/gui/rofi/default.nix +++ b/hosts/common/configs/user/gui/rofi/default.nix @@ -18,11 +18,14 @@ in programs.rofi = { enable = true; package = pkgs.rofi-wayland; - font = builtins.head hmConfig.theme.font.monospace.names; }; + home.file.${hmConfig.programs.rofi.configPath}.enable = false; + theme.template.".config/rofi/config.rasi".source = ./theme.rasi; + wayland.windowManager.hyprland.settings.bind = [ - "$mod, r, exec, ${lib.meta.getExe hmConfig.programs.rofi.finalPackage} -cache-dir ${home}/.cache/rofi -modi drun,window -show drun -run-command \"uwsm app -- {cmd}\"" + "$mod, r, exec, ${lib.meta.getExe hmConfig.programs.rofi.finalPackage} -modes drun -show drun -run-command \"uwsm app -- {cmd}\"" + "Alt, Tab, exec, ${lib.meta.getExe hmConfig.programs.rofi.finalPackage} -modes window -show window" ]; }; } diff --git a/hosts/common/configs/user/gui/rofi/theme.rasi b/hosts/common/configs/user/gui/rofi/theme.rasi new file mode 100644 index 0000000..4446290 --- /dev/null +++ b/hosts/common/configs/user/gui/rofi/theme.rasi @@ -0,0 +1,288 @@ +configuration { + cache-dir: "~/.cache/rofi"; + + show-icons: false; + display-drun: ""; + display-run: ""; + display-window: ""; + display-cliphist-copy: "󰅇"; + display-cliphist-delete: "󱘚"; + display-clipbook-copy: ""; + display-emoji: "󰞅"; + + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +* { + background: {{colors.surface.default.hex}}; + background-alt: {{colors.surface_container.default.hex}}; + foreground: {{colors.on_surface.default.hex}}; + foreground-inactive: {{colors.outline_variant.default.hex}}; + selected: {{colors.primary.default.hex}}; + active: {{colors.secondary.default.hex}}; + urgent: {{colors.tertiary.default.hex}}; +} + +* { + font: "{{custom.font_monospace}} Mono {{custom.font_size}}"; +} + +* { + border-color: var(selected); + handle-color: var(selected); + background-color: var(background); + foreground-color: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 0px; + border-color: @border-color; + cursor: "default"; + background-color: @background-color; +} + +mainbox { + enabled: true; + spacing: 5px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-color; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px 0px 1px dash 0px; + border-radius: 0px; + border-color: @border-color; + background-color: @background-color; + text-color: @foreground-color; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} + +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: @foreground-inactive; +} + +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: transparent; + text-color: @foreground-color; + cursor: "default"; +} + +scrollbar { + handle-width: 5px ; + handle-color: @handle-color; + border-radius: 0px; + background-color: @alternate-background; +} + +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: transparent; + text-color: @foreground-color; + cursor: pointer; +} + +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} + +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} + +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} + +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} + +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} + +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} + +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} + +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} + +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} + +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +mode-switcher { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: transparent; + text-color: @foreground-color; +} + +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} + +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-color; + background-color: transparent; + text-color: @foreground-color; +} + +textbox { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: @alternate-background; + text-color: @foreground-color; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-color; + blink: true; + markup: true; +} + +error-message { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-color; + background-color: @background-color; + text-color: @foreground-color; +}