From 9b6031435488a69e691d382197603be194ce8b6f Mon Sep 17 00:00:00 2001 From: rocketcamel Date: Tue, 16 Sep 2025 19:11:11 -0700 Subject: [PATCH] feat: move to rofi, use tokyonight theme, add missing keybinds, update scripts --- custom/rofi/config.rasi | 204 ++++---------------------------- custom/rofi/launcher.rasi | 171 -------------------------- custom/rofi/oneline-config.rasi | 106 +++++++++++++++++ custom/rofi/shared/colors.rasi | 33 ------ custom/rofi/shared/fonts.rasi | 12 -- custom/rofi/tokyonight.rasi | 137 +++++++++++++++++++++ nix/modules/default.nix | 2 +- nix/modules/desktop.nix | 9 +- nix/modules/rofi.nix | 20 ++++ nix/modules/wofi.nix | 20 ---- scripts/copy.sh | 2 +- scripts/workspace.sh | 2 +- 12 files changed, 295 insertions(+), 423 deletions(-) delete mode 100644 custom/rofi/launcher.rasi create mode 100644 custom/rofi/oneline-config.rasi delete mode 100644 custom/rofi/shared/colors.rasi delete mode 100644 custom/rofi/shared/fonts.rasi create mode 100644 custom/rofi/tokyonight.rasi create mode 100644 nix/modules/rofi.nix delete mode 100644 nix/modules/wofi.nix diff --git a/custom/rofi/config.rasi b/custom/rofi/config.rasi index 58a5e0d..4d88bfe 100644 --- a/custom/rofi/config.rasi +++ b/custom/rofi/config.rasi @@ -1,181 +1,29 @@ -/** - * - * Author : Aditya Shakya (adi1090x) - * Github : @adi1090x - * - * Configuration For Rofi Version: 1.7.3 - **/ +configuration{ + modi: ["drun", "window", "run"]; + icon-theme: "Papirus-Dark"; + show-icons: true; + terminal: "ghostty"; + drun-display-format: "{icon} {name}"; + location: 0; + disable-history: false; + sidebar-mode: false; + display-drun: " "; + display-run: " "; + display-window: " "; + + //adding vim keybindings + kb-row-up: "Up,Control+k"; + kb-row-left: "Left,Control+h"; + kb-row-right: "Right,Control+l"; + kb-row-down: "Down,Control+j"; -configuration { - /*---------- General setting ----------*/ - modi: "drun,run,filebrowser,window"; - case-sensitive: false; - cycle: true; - filter: ""; - scroll-method: 0; - normalize-match: true; - show-icons: true; - icon-theme: "Papirus"; -/* cache-dir: ;*/ - steal-focus: false; -/* dpi: -1;*/ + kb-accept-entry: "Control+z,Control+y,Return,KP_Enter"; - /*---------- Matching setting ----------*/ - matching: "normal"; - tokenize: true; - - /*---------- SSH settings ----------*/ - ssh-client: "ssh"; - ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]"; - parse-hosts: true; - parse-known-hosts: true; - - /*---------- Drun settings ----------*/ - drun-categories: ""; - drun-match-fields: "name,generic,exec,categories,keywords"; - drun-display-format: "{name} [({generic})]"; - drun-show-actions: false; - drun-url-launcher: "xdg-open"; - drun-use-desktop-cache: false; - drun-reload-desktop-cache: false; - drun { - /** Parse user desktop files. */ - parse-user: true; - /** Parse system desktop files. */ - parse-system: true; - } - - /*---------- Run settings ----------*/ - run-command: "{cmd}"; - run-list-command: ""; - run-shell-command: "{terminal} -e {cmd}"; - - /*---------- Fallback Icon ----------*/ - run,drun { - fallback-icon: "application-x-addon"; - } - - /*---------- Window switcher settings ----------*/ - window-match-fields: "title,class,role,name,desktop"; - window-command: "wmctrl -i -R {window}"; - window-format: "{w} - {c} - {t:0}"; - window-thumbnail: false; - - /*---------- Combi settings ----------*/ -/* combi-modi: "window,run";*/ -/* combi-hide-mode-prefix: false;*/ -/* combi-display-format: "{mode} {text}";*/ - - /*---------- History and Sorting ----------*/ - disable-history: false; - sorting-method: "normal"; - max-history-size: 25; - - /*---------- Display setting ----------*/ - display-window: "Windows"; - display-windowcd: "Window CD"; - display-run: "Run"; - display-ssh: "SSH"; - display-drun: "Apps"; - display-combi: "Combi"; - display-keys: "Keys"; - display-filebrowser: "Files"; - - /*---------- Misc setting ----------*/ - terminal: "rofi-sensible-terminal"; - font: "Mono 12"; - sort: false; - threads: 0; - click-to-exit: true; -/* ignored-prefixes: "";*/ -/* pid: "/run/user/1000/rofi.pid";*/ - - /*---------- File browser settings ----------*/ - filebrowser { -/* directory: "/home";*/ - directories-first: true; - sorting-method: "name"; - } - - /*---------- Other settings ----------*/ - timeout { - action: "kb-cancel"; - delay: 0; - } - - /*---------- Keybindings ----------*/ -/* - kb-primary-paste: "Control+V,Shift+Insert"; - kb-secondary-paste: "Control+v,Insert"; - kb-clear-line: "Control+w"; - kb-move-front: "Control+a"; - kb-move-end: "Control+e"; - kb-move-word-back: "Alt+b,Control+Left"; - kb-move-word-forward: "Alt+f,Control+Right"; - kb-move-char-back: "Left,Control+b"; - kb-move-char-forward: "Right,Control+f"; - kb-remove-word-back: "Control+Alt+h,Control+BackSpace"; - kb-remove-word-forward: "Control+Alt+d"; - kb-remove-char-forward: "Delete,Control+d"; - kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h"; - kb-remove-to-eol: "Control+k"; - kb-remove-to-sol: "Control+u"; - kb-accept-entry: "Control+j,Control+m,Return,KP_Enter"; - kb-accept-custom: "Control+Return"; - kb-accept-custom-alt: "Control+Shift+Return"; - kb-accept-alt: "Shift+Return"; - kb-delete-entry: "Shift+Delete"; - kb-mode-next: "Shift+Right,Control+Tab"; - kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab"; - kb-mode-complete: "Control+l"; - kb-row-left: "Control+Page_Up"; - kb-row-right: "Control+Page_Down"; - kb-row-down: "Down,Control+n"; - kb-page-prev: "Page_Up"; - kb-page-next: "Page_Down"; - kb-row-first: "Home,KP_Home"; - kb-row-last: "End,KP_End"; - kb-row-select: "Control+space"; - kb-screenshot: "Alt+S"; - kb-ellipsize: "Alt+period"; - kb-toggle-case-sensitivity: "grave,dead_grave"; - kb-toggle-sort: "Alt+grave"; - kb-cancel: "Escape,Control+g,Control+bracketleft"; - kb-custom-1: "Alt+1"; - kb-custom-2: "Alt+2"; - kb-custom-3: "Alt+3"; - kb-custom-4: "Alt+4"; - kb-custom-5: "Alt+5"; - kb-custom-6: "Alt+6"; - kb-custom-7: "Alt+7"; - kb-custom-8: "Alt+8"; - kb-custom-9: "Alt+9"; - kb-custom-10: "Alt+0"; - kb-custom-11: "Alt+exclam"; - kb-custom-12: "Alt+at"; - kb-custom-13: "Alt+numbersign"; - kb-custom-14: "Alt+dollar"; - kb-custom-15: "Alt+percent"; - kb-custom-16: "Alt+dead_circumflex"; - kb-custom-17: "Alt+ampersand"; - kb-custom-18: "Alt+asterisk"; - kb-custom-19: "Alt+parenleft"; - kb-select-1: "Super+1"; - kb-select-2: "Super+2"; - kb-select-3: "Super+3"; - kb-select-4: "Super+4"; - kb-select-5: "Super+5"; - kb-select-6: "Super+6"; - kb-select-7: "Super+7"; - kb-select-8: "Super+8"; - kb-select-9: "Super+9"; - kb-select-10: "Super+0"; - ml-row-left: "ScrollLeft"; - ml-row-right: "ScrollRight"; - ml-row-up: "ScrollUp"; - ml-row-down: "ScrollDown"; - me-select-entry: "MousePrimary"; - me-accept-entry: "MouseDPrimary"; - me-accept-custom: "Control+MouseDPrimary"; -*/ + //fixing up + kb-remove-to-eol: ""; + kb-move-char-back: "Control+b"; + kb-remove-char-back: "BackSpace"; + kb-move-char-forward: "Control+f"; + kb-mode-complete: "Control+o"; } +@theme "tokyonight.rasi" diff --git a/custom/rofi/launcher.rasi b/custom/rofi/launcher.rasi deleted file mode 100644 index fe2c342..0000000 --- a/custom/rofi/launcher.rasi +++ /dev/null @@ -1,171 +0,0 @@ -/** - * - * Author : Aditya Shakya (adi1090x) - * Github : @adi1090x - * - * Rofi Theme File - * Rofi Version: 1.7.3 - **/ - -/*****----- Configuration -----*****/ -configuration { - modi: "drun"; - show-icons: true; - display-drun: ""; - drun-display-format: "{name}"; -} - -/*****----- Global Properties -----*****/ -@import "shared/colors.rasi" -@import "shared/fonts.rasi" - -/*****----- Main Window -----*****/ -window { - transparency: "real"; - location: center; - anchor: center; - fullscreen: false; - width: 400px; - x-offset: 0px; - y-offset: 0px; - - enabled: true; - margin: 0px; - padding: 0px; - border: 0px solid; - border-radius: 12px; - border-color: @selected; - background-color: @background; - cursor: "default"; -} - -/*****----- Main Box -----*****/ -mainbox { - enabled: true; - spacing: 0px; - margin: 0px; - padding: 0px; - border: 0px solid; - border-radius: 0px 0px 0px 0px; - border-color: @selected; - background-color: transparent; - children: [ "inputbar", "listview" ]; -} - -/*****----- Inputbar -----*****/ -inputbar { - enabled: true; - spacing: 10px; - margin: 0px; - padding: 15px; - border: 0px solid; - border-radius: 0px; - border-color: @selected; - background-color: @selected; - text-color: @background; - 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: inherit; -} - -/*****----- Listview -----*****/ -listview { - enabled: true; - columns: 1; - lines: 6; - cycle: true; - dynamic: true; - scrollbar: false; - layout: vertical; - reverse: false; - fixed-height: true; - fixed-columns: true; - - spacing: 5px; - margin: 0px; - padding: 0px; - border: 0px solid; - border-radius: 0px; - border-color: @selected; - background-color: transparent; - text-color: @foreground; - cursor: "default"; -} -scrollbar { - handle-width: 5px ; - handle-color: @selected; - border-radius: 0px; - background-color: @background-alt; -} - -/*****----- Elements -----*****/ -element { - enabled: true; - spacing: 10px; - margin: 0px; - padding: 8px; - border: 0px solid; - border-radius: 0px; - border-color: @selected; - background-color: transparent; - text-color: @foreground; - cursor: pointer; -} -element normal.normal { - background-color: @background; - text-color: @foreground; -} -element selected.normal { - background-color: @background-alt; - text-color: @foreground; -} -element-icon { - background-color: transparent; - text-color: inherit; - size: 32px; - cursor: inherit; -} -element-text { - background-color: transparent; - text-color: inherit; - highlight: inherit; - cursor: inherit; - vertical-align: 0.5; - horizontal-align: 0.0; -} - -/*****----- Message -----*****/ -error-message { - padding: 15px; - border: 2px solid; - border-radius: 12px; - border-color: @selected; - background-color: @background; - text-color: @foreground; -} -textbox { - background-color: @background; - text-color: @foreground; - vertical-align: 0.5; - horizontal-align: 0.0; - highlight: none; -} diff --git a/custom/rofi/oneline-config.rasi b/custom/rofi/oneline-config.rasi new file mode 100644 index 0000000..9942a21 --- /dev/null +++ b/custom/rofi/oneline-config.rasi @@ -0,0 +1,106 @@ +configuration { + modi: "drun"; + font: "JetBrainsMono Nerd Font 10"; + show-icons: false; + terminal: "ghostty"; + icon-theme: "Papirus-Dark"; + drun-display-format: "{name}"; + display-drun: ""; + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } + kb-row-up: "Up,Control+k"; + kb-row-left: "Left,Control+h"; + kb-row-right: "Right,Control+l"; + kb-row-down: "Down,Control+j"; + + kb-accept-entry: "Control+z,Control+y,Return,KP_Enter"; + + //fixing up + kb-remove-to-eol: ""; + kb-move-char-back: "Control+b"; + kb-remove-char-back: "BackSpace"; + kb-move-char-forward: "Control+f"; + kb-mode-complete: "Control+o"; +} + +@theme "/dev/null" + +* { + bg: #232933; + fg: #d8dee9; + selected: #2d3543; + accent: #4d6a8e; + background-color: @bg; + + color: @fg; + border: 0; + border-color: @bg; + margin: 0; + padding: 0; + spacing: 0; + highlight: none; +} + +window { + width: 700px; +} + +element { + padding: 6 5 7 5; + text-color: @fg; +} + +element-text { + vertical-align: 0.5; + padding: 5px; +} + +element selected { + background-color: @selected; +} + +element-text selected { + background-color: @selected; +} + +element-icon selected { + background-color: @selected; +} + +element-icon { + size: 30; +} + +entry { + background-color: @bg; + columns: 1; + lines: 20; +} + +inputbar { + children: [prompt, entry]; +} + +prompt { + text-color: @bg; + background-color: @accent; + padding: 12 12 12 12; +} + +entry { + text-color: @bg; + background-color: @accent; + padding: 12 5 12 0; +} + +listview { + background-color: @bg; + columns: 1; + lines: 6; +} diff --git a/custom/rofi/shared/colors.rasi b/custom/rofi/shared/colors.rasi deleted file mode 100644 index 7390656..0000000 --- a/custom/rofi/shared/colors.rasi +++ /dev/null @@ -1,33 +0,0 @@ -/** - * - * Author : Aditya Shakya (adi1090x) - * Github : @adi1090x - * - * Colors - * - * Available Colors Schemes - * - * adapta catppuccin everforest navy paper - * arc cyberpunk gruvbox nord solarized - * black dracula lovelace onedark yousai - * - **/ - -/* Import color-scheme from `colors` directory */ - -/** - * - * Author : Levi Lacoss (fishyfishfish55) - * Github : @fishyfishfish55 - * - * Colors - **/ - -* { - background: #15161EFF; - background-alt: #1A1B26FF; - foreground: #C0CAF5FF; - selected: #33467CFF; - active: #414868FF; - urgent: #F7768EFF; -} diff --git a/custom/rofi/shared/fonts.rasi b/custom/rofi/shared/fonts.rasi deleted file mode 100644 index 430c73d..0000000 --- a/custom/rofi/shared/fonts.rasi +++ /dev/null @@ -1,12 +0,0 @@ -/** - * - * Author : Aditya Shakya (adi1090x) - * Github : @adi1090x - * - * Fonts - * - **/ - -* { - font: "JetBrains Mono Nerd Font 10"; -} diff --git a/custom/rofi/tokyonight.rasi b/custom/rofi/tokyonight.rasi new file mode 100644 index 0000000..bd64a99 --- /dev/null +++ b/custom/rofi/tokyonight.rasi @@ -0,0 +1,137 @@ +/* + * Tokyonight colorscheme (big icons) for rofi + * User: w8ste + */ + + +// define colors etc. +* { + bg: #24283b; + hv: #9274ca; + primary: #444b6a; // TokyoNight bright black + ug: #0B2447; + font: "Monospace 11"; + background-color: @bg; + //dark: @bg; + border: 0px; + kl: #7aa2f7; + black: #000000; + + transparent: rgba(46,52,64,0); +} + +// defines different aspects of the window +window { + width: 700; + /*since line wont work with height, i comment it out + if you rather control the size via height + just comment it out */ + //height: 500; + + orientation: horizontal; + location: center; + anchor: center; + transparency: "screenshot"; + border-color: @transparent; + border: 0px; + border-radius: 6px; + spacing: 0; + children: [ mainbox ]; +} + +mainbox { + spacing: 0; + children: [ inputbar, message, listview ]; +} + +inputbar { + color: @kl; + padding: 11px; + border: 3px 3px 2px 3px; + border-color: @primary; + border-radius: 6px 6px 0px 0px; +} + +message { + padding: 0; + border-color: @primary; + border: 0px 1px 1px 1px; +} + +entry, prompt, case-indicator { + text-font: inherit; + text-color: inherit; +} + +entry { + cursor: pointer; +} + +prompt { + margin: 0px 5px 0px 0px; +} + +listview { + layout: vertical; + //spacing: 5px; + padding: 8px; + lines: 7; + columns: 2; + border: 0px 3px 3px 3px; + border-radius: 0px 0px 6px 6px; + border-color: @primary; + dynamic: false; +} + +element { + padding: 2px; + vertical-align: 1; + color: @kl; + font: inherit; +} + +element-text { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; +} + +element selected.normal { + color: @black; + background-color: @hv; +} + +element normal active { + background-color: @hv; + color: @black; +} + +element-icon { + background-color: inherit; + text-color: inherit; + size: 2.5em; +} + +element normal urgent { + background-color: @primary; +} + +element selected active { + background: @hv; + foreground: @bg; +} + +button { + padding: 6px; + color: @primary; + horizonatal-align: 0.5; + + border: 2px 0px 2px 2px; + border-radius: 4px 0px 0px 4px; + border-color: @primary; +} + +button selected normal { + border: 2px 0px 2px 2px; + border-color: @primary; +} diff --git a/nix/modules/default.nix b/nix/modules/default.nix index 5372957..0f0833e 100644 --- a/nix/modules/default.nix +++ b/nix/modules/default.nix @@ -12,7 +12,7 @@ ./kanata.nix ./pipewire.nix ./keys.nix - ./wofi.nix + ./rofi.nix ./desktop.nix ./zed-editor.nix ./virtualization.nix diff --git a/nix/modules/desktop.nix b/nix/modules/desktop.nix index 616e10b..11b322d 100644 --- a/nix/modules/desktop.nix +++ b/nix/modules/desktop.nix @@ -19,16 +19,13 @@ vesktop firefox brightnessctl - flameshot jellyfin-media-player anki-bin mpv - ahk_x11 prismlauncher feh dconf papirus-icon-theme - pa_applet libnotify adwaita-icon-theme gnome-themes-extra @@ -50,7 +47,6 @@ htop lm_sensors fanctl - libnotify ]; boot.kernelModules = [ "iptables" @@ -72,7 +68,7 @@ enable = true; wayland = true; }; - wofi.enable = true; + rofi.enable = true; services.upower.enable = true; zed.enable = true; virt.enable = true; @@ -188,7 +184,7 @@ settings = { "$mod" = "SUPER"; "$terminal" = "ghostty"; - "$menu" = "wofi"; + "$menu" = "rofi -show drun"; bind = [ "$mod, Return, exec, $terminal" "$mod SHIFT, Q, killactive" @@ -202,6 +198,7 @@ "$mod, j, movefocus, d" "$mod, Space, togglesplit" "$mod SHIFT, v, exec, bash -c ~/dotfiles/scripts/copy.sh" + "$mod SHIFT, s, exec, bash -c ~/dotfiles/scripts/screenshot.sh" "$mod, 0, workspace, 10" "$mod SHIFT, 0, movetoworkspacesilent, 10" diff --git a/nix/modules/rofi.nix b/nix/modules/rofi.nix new file mode 100644 index 0000000..42909e8 --- /dev/null +++ b/nix/modules/rofi.nix @@ -0,0 +1,20 @@ +{ + pkgs, + lib, + config, + ... +}: +{ + options.rofi = { + enable = lib.mkEnableOption "enable rofi"; + }; + + config = lib.mkIf config.rofi.enable { + environment.systemPackages = with pkgs; [ rofi ]; + home-manager.users.luca = { + xdg.configFile = { + rofi.source = ../../custom/rofi; + }; + }; + }; +} diff --git a/nix/modules/wofi.nix b/nix/modules/wofi.nix deleted file mode 100644 index cc0c0c4..0000000 --- a/nix/modules/wofi.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -{ - options.wofi = { - enable = lib.mkEnableOption "enable wofi"; - }; - - config = lib.mkIf config.wofi.enable { - environment.systemPackages = with pkgs; [ wofi ]; - home-manager.users.luca = { - xdg.configFile = { - wofi.source = ../../custom/wofi; - }; - }; - }; -} diff --git a/scripts/copy.sh b/scripts/copy.sh index d4ad387..d1314aa 100755 --- a/scripts/copy.sh +++ b/scripts/copy.sh @@ -1 +1 @@ -cliphist list | wofi --dmenu | cliphist decode | wl-copy +cliphist list | rofi -dmenu -p "Copy to clipboard:" -config ~/.config/rofi/oneline-config.rasi | cliphist decode | wl-copy diff --git a/scripts/workspace.sh b/scripts/workspace.sh index 94a94e0..2c612b1 100755 --- a/scripts/workspace.sh +++ b/scripts/workspace.sh @@ -1,6 +1,6 @@ workspaces=$(hyprctl workspaces -j | jq -r '.[].name') -target=$(echo "$workspaces" | wofi -d -p "Switch to workspace:") +target=$(echo "$workspaces" | rofi -dmenu -config ~/.config/rofi/oneline-config.rasi -p "Switch to workspace:") if [[ -n "$target" ]]; then hyprctl dispatch workspace "$target"