├── README.md ├── eww ├── bar.scss ├── bar.yuck ├── controlpanel.yuck ├── eww.scss ├── eww.yuck └── scripts │ ├── battery.sh │ ├── change-active-workspace.sh │ ├── charging_anim.txt │ ├── get-active-workspace.sh │ └── get-workspaces.sh ├── hypr ├── hyprland.conf └── hyprpaper.conf ├── nvim ├── init.lua └── lua │ └── plugins.lua ├── rice.png ├── rofi ├── config.rasi └── themes │ └── forest.rasi ├── wall.jpg └── zsh └── my_theme.zsh-theme /README.md: -------------------------------------------------------------------------------- 1 | # Hyprland Everforest rice 2 | 3 | [![Reddit Post Link](https://img.shields.io/badge/Reddit-FF4500?style=for-the-badge&logo=Reddit&logoColor=white)](https://www.reddit.com/r/unixporn/s/jviOIvkat4) ![Stars Counter](https://img.shields.io/github/stars/VladimirPapazov88/Everforest-Hyprland?style=for-the-badge&labelColor=%232e383c&color=%23dbbc7f) 4 | 5 | ## It's not done yet, so enjoy beta dotfiles :) 6 | 7 | # Included: 8 | - Hyprland config 9 | - Hyprpaper config 10 | - Eww config 11 | - Rofi theme 12 | - Zsh theme (for OhMyZSH) 13 | - Neovim config 14 | 15 | # Fonts that i use: 16 | - Fira Code Nerd Font 17 | - Ubuntu Nerd Font 18 | 19 | # Screenshots: 20 | ![Screenshots](rice.png) 21 | -------------------------------------------------------------------------------- /eww/bar.scss: -------------------------------------------------------------------------------- 1 | .bar { 2 | background-color: rgba(0, 0, 0, 0); 3 | padding-top: 5px; 4 | padding-left: 5px; 5 | padding-right: 5px; 6 | } 7 | 8 | .workspaces-widget { 9 | padding-left: 10px; 10 | padding-right: 5px; 11 | 12 | background-color: #272e33; 13 | border-radius: 5px; 14 | } 15 | 16 | .workspace-entry { 17 | margin-right: 5px; 18 | } 19 | 20 | .occupied { 21 | font-size: 15px; 22 | color: #7a8478; 23 | } 24 | 25 | .empty { 26 | font-size: 15px; 27 | color: #7a8478; 28 | } 29 | 30 | .current { 31 | font-size: 17px; 32 | color: #a7c080; 33 | } 34 | 35 | .iconbox { 36 | border-radius: 5px; 37 | padding-right: 10px; 38 | padding-left: 11px; 39 | background-color: #3c4841; 40 | margin-right: 5px; 41 | } 42 | 43 | .icon { 44 | color: #a7c080; 45 | font-size: 17px 46 | } 47 | 48 | .sidebar-btn { 49 | padding-right: 10px; 50 | padding-left: 10px; 51 | border-radius: 5px; 52 | background-color: #493b40; 53 | } 54 | 55 | .sidebar-btn-label { 56 | color: #e69875; 57 | } 58 | 59 | .time-widget { 60 | padding-right: 10px; 61 | padding-left: 10px; 62 | margin-right: 10px; 63 | border-radius: 5px; 64 | background-color: #272e33; 65 | } 66 | 67 | .time-icon { 68 | color: #a7c080; 69 | font-size: 17px; 70 | margin-right: 5px; 71 | } 72 | 73 | .wifi-widget { 74 | padding-right: 10px; 75 | padding-left: 10px; 76 | border-radius: 5px; 77 | margin-right: 10px; 78 | background-color: #2e383c; 79 | } 80 | 81 | .wifi-icon { 82 | color: #83c092; 83 | font-size: 17px; 84 | margin-right: 5px; 85 | } 86 | 87 | .battery-widget { 88 | padding-right: 10px; 89 | padding-left: 10px; 90 | border-radius: 5px; 91 | margin-right: 10px; 92 | background-color: #272e33; 93 | } 94 | 95 | .battery-icon { 96 | font-size: 18px; 97 | margin-right: 3px; 98 | } 99 | 100 | .battery-low { 101 | color: #e67e80; 102 | } 103 | 104 | .battery-med { 105 | color: #dbbc7d 106 | } 107 | 108 | .battery-high { 109 | color: #a7c080; 110 | } 111 | 112 | .volume-widget { 113 | padding-right: 10px; 114 | padding-left: 10px; 115 | margin-right: 10px; 116 | border-radius: 5px; 117 | background-color: #2e383c; 118 | } 119 | 120 | .volume-icon { 121 | color: #7fbbb3; 122 | font-size: 18px; 123 | margin-right: 5px; 124 | } 125 | 126 | .volume-margin { 127 | margin-left: 5px; 128 | } 129 | 130 | .volume-bar trough highlight { 131 | all: unset; 132 | background-color: #7fbbb3; 133 | border-radius: 5px; 134 | min-width: 70px; 135 | } 136 | 137 | .tray { 138 | background-color: #2e383c; 139 | margin-right: 10px; 140 | border-radius: 5px; 141 | } 142 | -------------------------------------------------------------------------------- /eww/bar.yuck: -------------------------------------------------------------------------------- 1 | (defwidget bar [] 2 | (box :class "main" :space-evenly true 3 | (left) 4 | (right) 5 | ) 6 | ) 7 | 8 | (defwidget left [] 9 | (box :space-evenly false 10 | (icon) 11 | (workspaces) 12 | ) 13 | ) 14 | 15 | (defwidget right [] 16 | (box :space-evenly false :halign "end" 17 | (volume) 18 | (battery) 19 | (wifi) 20 | (time) 21 | (systray :class "tray") 22 | (sidebar-btn) 23 | ) 24 | ) 25 | 26 | (defwidget icon [] 27 | (eventbox :onclick "rofi -show drun &" 28 | (box :space-evenly false :class "iconbox" 29 | (label :class "icon" :text "") 30 | ) 31 | ) 32 | ) 33 | 34 | (deflisten workspaces :initial "[]" "bash ~/.config/eww/scripts/get-workspaces.sh") 35 | (deflisten current_workspace :initial "1" "bash ~/.config/eww/scripts/get-active-workspace.sh") 36 | (defwidget workspaces [] 37 | (eventbox :onscroll "bash ~/.config/eww/scripts/change-active-workspace.sh {} ${current_workspace}" 38 | (box :space-evenly false :class "workspaces-widget" 39 | (label :text "${workspaces}${current_workspace}" :visible false) 40 | (for workspace in workspaces 41 | (eventbox :onclick "hyprctl dispatch workspace ${workspace.id}" :class "workspaces-elements-box" 42 | (box :class "workspace-entry ${workspace.id == current_workspace ? "current" : ""} ${workspace.windows > 0 ? "occupied" : "empty"}" 43 | (label :text "${workspace.id == current_workspace ? "󰮯" : ""}") 44 | ) 45 | ) 46 | ) 47 | ) 48 | ) 49 | ) 50 | 51 | 52 | (defpoll current-vol :interval "1s" "awk -F\"[][]\" '/Left:/ { print $2 }' <(amixer sget Master) | tr -d \"%\"") 53 | (defvar volume-state false) 54 | (defwidget volume [] 55 | (eventbox :onhover "eww update volume-state=true" :onhoverlost "eww update volume-state=false" 56 | (box :space-evenly false :class "volume-widget" 57 | (label :class "volume-icon" :text "") 58 | (label :text "${volume-state ? "" : "${current-vol}%"}") 59 | (revealer :transition "slideright" :reveal volume-state :duration "500ms" 60 | (box :class "volume-margin" 61 | (scale :class "volume-bar" :value current-vol :orientation "h" :max 101 :min 0 :onchange "amixer sset Master {}%" :tooltip "${current-vol}%") 62 | ) 63 | ) 64 | ) 65 | ) 66 | ) 67 | 68 | (defpoll time :interval "1s" "date '+%b %d, %H:%M'") 69 | (defwidget time [] 70 | (box :space-evenly false :class "time-widget" 71 | (label :class "time-icon" :text "") 72 | (label :text "${time}") 73 | ) 74 | ) 75 | 76 | (defwidget sidebar-btn [] 77 | (eventbox :onclick "eww open --toggle controlpanel" 78 | (box :space-evenly false :class "sidebar-btn" 79 | (label :class "sidebar-btn-label" :text "") 80 | ) 81 | ) 82 | ) 83 | 84 | (defpoll wifi-name :interval "1s" "nmcli -t -f NAME connection show --active | awk 'NR==1 {print}'") 85 | (defwidget wifi [] 86 | (eventbox :onclick "kitty -e nmtui &" 87 | (box :space-evenly false :class "wifi-widget" 88 | (label :class "wifi-icon" :text "󰤨") 89 | (label :text "${wifi-name}") 90 | ) 91 | ) 92 | ) 93 | 94 | (defpoll current_state :interval "1s" "~/.config/eww/scripts/battery.sh") 95 | (defpoll current_percentage :interval "1s" "upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"percentage\" | awk '{split($2, a, \".\"); print a[1]}'") 96 | 97 | (defwidget battery [] 98 | (box :space-evenly false :class "battery-widget" 99 | (label :class "battery-icon ${current_state <= 25 ? 'battery-low' : '${current_state <= 50 ? 'battery-med' : '${current_state <= 100 ? 'battery-high' : ''}'}'}" :text "${current_state <= 15 ? '󰂎' : '${current_state <= 25 ? '󰁻' : '${current_state <= 50 ? '󰁾' : '${current_state <= 75 ? '󰂀' : '${current_state <= 95 ? '󰁹' : '󰁹'}'}'}'}'}") 100 | (label :text "${current_percentage}%") 101 | ) 102 | ) 103 | 104 | (defwindow bar 105 | :monitor 0 106 | :windowtype "dock" 107 | :geometry (geometry :x "0%" 108 | :y "0%" 109 | :width "100%" 110 | :height "40px" 111 | :anchor "top center") 112 | (bar)) 113 | -------------------------------------------------------------------------------- /eww/controlpanel.yuck: -------------------------------------------------------------------------------- 1 | (defwidget controlpanel [] 2 | (box 3 | (label :text "will be implemented in newer updates") 4 | (eventbox :onclick "eww open --toggle controlpanel" 5 | (label :text "") 6 | ) 7 | ) 8 | ) 9 | 10 | (defwindow controlpanel 11 | :monitor 0 12 | :windowtype "dock" 13 | :geometry (geometry :x "0%" 14 | :y "0%" 15 | :width "500px" 16 | :height "93.8%" 17 | :anchor "bottom right") 18 | (controlpanel) 19 | ) 20 | -------------------------------------------------------------------------------- /eww/eww.scss: -------------------------------------------------------------------------------- 1 | @import "./bar.scss"; 2 | 3 | * { 4 | font-family: "Ubuntu Nerd Font"; 5 | } 6 | 7 | -------------------------------------------------------------------------------- /eww/eww.yuck: -------------------------------------------------------------------------------- 1 | (include "./bar.yuck") 2 | (include "./controlpanel.yuck") 3 | 4 | -------------------------------------------------------------------------------- /eww/scripts/battery.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/bash 2 | 3 | percents=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E "percentage" | awk '{split($2, a, "."); print a[1]}') 4 | state=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E "state" | awk '{print $2}') 5 | 6 | if [ "$state" = "charging" ] 7 | then 8 | chr_perc=$(cat ~/.config/eww/scripts/charging_anim.txt) 9 | 10 | if [ "$chr_perc" = "100" ] 11 | then 12 | echo 0 &> ~/.config/eww/scripts/charging_anim.txt 13 | elif [ "$chr_perc" != "100" ] 14 | then 15 | echo $((chr_perc+25)) &> ~/.config/eww/scripts/charging_anim.txt 16 | fi 17 | 18 | echo $chr_perc 19 | elif [ "$state" != "charging" ] 20 | then 21 | echo $percents 22 | echo 0 &> ~/.config/eww/scripts/charging_anim.txt 23 | fi -------------------------------------------------------------------------------- /eww/scripts/change-active-workspace.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | function clamp { 3 | min=$1 4 | max=$2 5 | val=$3 6 | python -c "print(max($min, min($val, $max)))" 7 | } 8 | 9 | direction=$1 10 | current=$2 11 | if test "$direction" = "down" 12 | then 13 | target=$(clamp 1 10 $(($current+1))) 14 | echo "jumping to $target" 15 | hyprctl dispatch workspace $target 16 | elif test "$direction" = "up" 17 | then 18 | target=$(clamp 1 10 $(($current-1))) 19 | echo "jumping to $target" 20 | hyprctl dispatch workspace $target 21 | fi 22 | 23 | -------------------------------------------------------------------------------- /eww/scripts/charging_anim.txt: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /eww/scripts/get-active-workspace.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id' 4 | 5 | socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | 6 | stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}' 7 | -------------------------------------------------------------------------------- /eww/scripts/get-workspaces.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | spaces (){ 4 | WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries') 5 | seq 1 10 | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})' 6 | } 7 | 8 | spaces 9 | socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do 10 | spaces 11 | done 12 | -------------------------------------------------------------------------------- /hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | # See https://wiki.hyprland.org/Configuring/Monitors/ 2 | monitor=,addreserved,35,0,0,0,preferred,auto,auto 3 | 4 | 5 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 6 | 7 | # Execute your favorite apps at launch 8 | exec-once = hyprpaper & eww open bar 9 | 10 | # Source a file (multi-file configs) 11 | # source = ~/.config/hypr/myColors.conf 12 | 13 | # Set programs that you use 14 | $terminal = kitty 15 | $fileManager = dolphin 16 | $menu = rofi -show drun 17 | 18 | # Some default env vars. 19 | env = XCURSOR_SIZE,24 20 | env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that 21 | 22 | # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ 23 | input { 24 | kb_layout = us,ru 25 | kb_variant = 26 | kb_model = 27 | kb_options = grp:alt_shift_toggle 28 | kb_rules = 29 | 30 | follow_mouse = 1 31 | 32 | touchpad { 33 | natural_scroll = yes 34 | } 35 | 36 | sensitivity = 0 # -1.0 - 1.0, 0 means no modification. 37 | } 38 | 39 | general { 40 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 41 | 42 | gaps_in = 5 43 | gaps_out = 20 44 | border_size = 0 45 | col.active_border = rgb(a7c080) 46 | col.inactive_border = rgb(7a8478) 47 | 48 | layout = dwindle 49 | 50 | # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on 51 | allow_tearing = false 52 | } 53 | 54 | decoration { 55 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 56 | 57 | rounding = 7 58 | 59 | blur { 60 | enabled = true 61 | size = 7 62 | passes = 2 63 | } 64 | 65 | drop_shadow = no 66 | shadow_range = 10 67 | shadow_render_power = 4 68 | col.shadow = rgb(000000) 69 | } 70 | 71 | animations { 72 | enabled = yes 73 | 74 | # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 75 | 76 | bezier = myBezier, 0.05, 0.9, 0.1, 1.05 77 | 78 | animation = windows, 1, 7, default 79 | animation = windowsOut, 1, 7, default, popin 80% 80 | animation = border, 1, 10, default 81 | animation = borderangle, 1, 8, default 82 | animation = fade, 1, 7, default 83 | animation = workspaces, 1, 6, default 84 | } 85 | 86 | dwindle { 87 | # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more 88 | pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 89 | preserve_split = yes # you probably want this 90 | } 91 | 92 | master { 93 | # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more 94 | new_is_master = true 95 | } 96 | 97 | gestures { 98 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 99 | workspace_swipe = off 100 | } 101 | 102 | misc { 103 | # See https://wiki.hyprland.org/Configuring/Variables/ for more 104 | force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers 105 | } 106 | 107 | # Example per-device config 108 | # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more 109 | device:epic-mouse-v1 { 110 | sensitivity = -0.5 111 | } 112 | 113 | # Example windowrule v1 114 | # windowrule = float, ^(kitty)$ 115 | # Example windowrule v2 116 | # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ 117 | # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more 118 | windowrulev2 = nomaximizerequest, class:.* # You'll probably like this. 119 | 120 | 121 | # See https://wiki.hyprland.org/Configuring/Keywords/ for more 122 | $mainMod = SUPER 123 | 124 | # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more 125 | bind = $mainMod, Return, exec, $terminal 126 | bind = $mainMod, Q, killactive, 127 | bind = $mainMod, M, exit, 128 | bind = $mainMod, F, fullscreen, 1 129 | bind = $mainMod, E, togglefloating, 130 | bind = $mainMod, Space, exec, $menu 131 | bind = $mainMod, P, pseudo, # dwindle 132 | bind = $mainMod, J, togglesplit, # dwindle 133 | 134 | # Move focus with mainMod + arrow keys 135 | bind = $mainMod, left, movefocus, l 136 | bind = $mainMod, right, movefocus, r 137 | bind = $mainMod, up, movefocus, u 138 | bind = $mainMod, down, movefocus, d 139 | 140 | # Switch workspaces with mainMod + [0-9] 141 | bind = $mainMod, 1, workspace, 1 142 | bind = $mainMod, 2, workspace, 2 143 | bind = $mainMod, 3, workspace, 3 144 | bind = $mainMod, 4, workspace, 4 145 | bind = $mainMod, 5, workspace, 5 146 | bind = $mainMod, 6, workspace, 6 147 | bind = $mainMod, 7, workspace, 7 148 | bind = $mainMod, 8, workspace, 8 149 | bind = $mainMod, 9, workspace, 9 150 | bind = $mainMod, 0, workspace, 10 151 | 152 | # Move active window to a workspace with mainMod + SHIFT + [0-9] 153 | bind = $mainMod SHIFT, 1, movetoworkspace, 1 154 | bind = $mainMod SHIFT, 2, movetoworkspace, 2 155 | bind = $mainMod SHIFT, 3, movetoworkspace, 3 156 | bind = $mainMod SHIFT, 4, movetoworkspace, 4 157 | bind = $mainMod SHIFT, 5, movetoworkspace, 5 158 | bind = $mainMod SHIFT, 6, movetoworkspace, 6 159 | bind = $mainMod SHIFT, 7, movetoworkspace, 7 160 | bind = $mainMod SHIFT, 8, movetoworkspace, 8 161 | bind = $mainMod SHIFT, 9, movetoworkspace, 9 162 | bind = $mainMod SHIFT, 0, movetoworkspace, 10 163 | 164 | # Example special workspace (scratchpad) 165 | bind = $mainMod, S, togglespecialworkspace, magic 166 | bind = $mainMod SHIFT, S, movetoworkspace, special:magic 167 | 168 | # Scroll through existing workspaces with mainMod + scroll 169 | bind = $mainMod, mouse_down, workspace, e+1 170 | bind = $mainMod, mouse_up, workspace, e-1 171 | 172 | # Move/resize windows with mainMod + LMB/RMB and dragging 173 | bindm = $mainMod, mouse:272, movewindow 174 | bindm = $mainMod, mouse:273, resizewindow 175 | 176 | # Function keys 177 | bind = , XF86AudioRaiseVolume, exec, amixer sset Master 2%+ 178 | bind = , XF86AudioLowerVolume, exec, amixer sset Master 2%- 179 | bind = , XF86AudioMute, exec, amixer sset Master toggle 180 | 181 | bind = , XF86AudioPlay, exec, playerctl play-pause 182 | bind = , XF86AudioPrev, exec, playerctl previous 183 | bind = , XF86AudioNext, exec, playerctl next 184 | 185 | bind = , XF86MonBrightnessUp, exec, brightnessctl set +10% 186 | bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%- 187 | 188 | bind = , XF86KbdBrightnessUp, exec, brightnessctl --device='smc::kbd_backlight' set +10% 189 | bind = , XF86KbdBrightnessDown, exec, brightnessctl --device='smc::kbd_backlight' set 10%- 190 | 191 | -------------------------------------------------------------------------------- /hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | preload = ~/Pictures/wall.jpg 2 | 3 | wallpaper = ,~/Pictures/wall.jpg 4 | splash = false 5 | 6 | -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("plugins") 2 | 3 | vim.cmd([[colorscheme everforest]]) 4 | 5 | require('lualine').setup { 6 | options = { 7 | component_separators = '|', 8 | section_separators = { left = '', right = '' }, 9 | }, 10 | sections = { 11 | lualine_a = { 12 | { 'mode', separator = { left = '' }, right_padding = 2 }, 13 | }, 14 | lualine_b = { 'filename', 'branch' }, 15 | lualine_c = {}, 16 | lualine_x = {}, 17 | lualine_y = { 'filetype' }, 18 | lualine_z = { 19 | { 'location', separator = { right = '' }, left_padding = 2 }, 20 | }, 21 | }, 22 | inactive_sections = { 23 | lualine_a = { 'filename' }, 24 | lualine_b = {}, 25 | lualine_c = {}, 26 | lualine_x = {}, 27 | lualine_y = {}, 28 | lualine_z = { 'location' }, 29 | }, 30 | tabline = {}, 31 | extensions = {}, 32 | } 33 | 34 | require("mason").setup() 35 | local mason_lspconfig = require("mason-lspconfig") 36 | 37 | mason_lspconfig.setup() 38 | 39 | local cmp = require 'cmp' 40 | local luasnip = require 'luasnip' 41 | require('luasnip.loaders.from_vscode').lazy_load() 42 | luasnip.config.setup {} 43 | 44 | cmp.setup { 45 | snippet = { 46 | expand = function(args) 47 | luasnip.lsp_expand(args.body) 48 | end, 49 | }, 50 | completion = { 51 | completeopt = 'menu,menuone,noinsert', 52 | }, 53 | mapping = cmp.mapping.preset.insert { 54 | [''] = cmp.mapping.select_next_item(), 55 | [''] = cmp.mapping.select_prev_item(), 56 | [''] = cmp.mapping.scroll_docs(-4), 57 | [''] = cmp.mapping.scroll_docs(4), 58 | [''] = cmp.mapping.complete {}, 59 | [''] = cmp.mapping.confirm { 60 | behavior = cmp.ConfirmBehavior.Replace, 61 | select = true, 62 | }, 63 | [''] = cmp.mapping(function(fallback) 64 | if cmp.visible() then 65 | cmp.select_next_item() 66 | elseif luasnip.expand_or_locally_jumpable() then 67 | luasnip.expand_or_jump() 68 | else 69 | fallback() 70 | end 71 | end, { 'i', 's' }), 72 | [''] = cmp.mapping(function(fallback) 73 | if cmp.visible() then 74 | cmp.select_prev_item() 75 | elseif luasnip.locally_jumpable(-1) then 76 | luasnip.jump(-1) 77 | else 78 | fallback() 79 | end 80 | end, { 'i', 's' }), 81 | }, 82 | sources = { 83 | { name = 'nvim_lsp' }, 84 | { name = 'luasnip' }, 85 | { name = 'path' }, 86 | }, 87 | } 88 | 89 | local on_attach = function (_, bufnr) 90 | local nmap = function(keys, func, desc) 91 | if desc then 92 | desc = 'LSP: ' .. desc 93 | end 94 | 95 | vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) 96 | end 97 | 98 | nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') 99 | nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') 100 | 101 | nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') 102 | nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') 103 | nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') 104 | nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') 105 | nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') 106 | nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') 107 | 108 | -- See `:help K` for why this keymap 109 | nmap('K', vim.lsp.buf.hover, 'Hover Documentation') 110 | nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') 111 | 112 | -- Lesser used LSP functionality 113 | nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') 114 | end 115 | 116 | local servers = { 117 | -- clangd = {}, 118 | -- gopls = {}, 119 | -- pyright = {}, 120 | -- rust_analyzer = {}, 121 | -- tsserver = {}, 122 | -- html = { filetypes = { 'html', 'twig', 'hbs'} }, 123 | 124 | lua_ls = { 125 | Lua = { 126 | workspace = { checkThirdParty = false }, 127 | telemetry = { enable = false }, 128 | -- NOTE: toggle below to ignore Lua_LS's noisy `missing-fields` warnings 129 | -- diagnostics = { disable = { 'missing-fields' } }, 130 | }, 131 | }, 132 | } 133 | 134 | mason_lspconfig.setup_handlers { 135 | function(server_name) 136 | require('lspconfig')[server_name].setup { 137 | on_attach = on_attach, 138 | settings = servers[server_name], 139 | filetypes = (servers[server_name] or {}).filetypes, 140 | } 141 | end, 142 | } 143 | 144 | local map = vim.api.nvim_set_keymap 145 | local opts = { noremap = true, silent = true } 146 | 147 | -- Move to previous/next 148 | map('n', '', 'BufferPrevious', opts) 149 | map('n', '', 'BufferNext', opts) 150 | -- Re-order to previous/next 151 | map('n', '', 'BufferMovePrevious', opts) 152 | map('n', '>', 'BufferMoveNext', opts) 153 | -- Goto buffer in position... 154 | map('n', '', 'BufferGoto 1', opts) 155 | map('n', '', 'BufferGoto 2', opts) 156 | map('n', '', 'BufferGoto 3', opts) 157 | map('n', '', 'BufferGoto 4', opts) 158 | map('n', '', 'BufferGoto 5', opts) 159 | map('n', '', 'BufferGoto 6', opts) 160 | map('n', '', 'BufferGoto 7', opts) 161 | map('n', '', 'BufferGoto 8', opts) 162 | map('n', '', 'BufferGoto 9', opts) 163 | map('n', '', 'BufferLast', opts) 164 | -- Pin/unpin buffer 165 | map('n', '', 'BufferPin', opts) 166 | -- Close buffer 167 | map('n', '', 'BufferClose', opts) 168 | -- Wipeout buffer 169 | -- :BufferWipeout 170 | -- Close commands 171 | -- :BufferCloseAllButCurrent 172 | -- :BufferCloseAllButPinned 173 | -- :BufferCloseAllButCurrentOrPinned 174 | -- :BufferCloseBuffersLeft 175 | -- :BufferCloseBuffersRight 176 | -- Magic buffer-picking mode 177 | map('n', '', 'BufferPick', opts) 178 | -- Sort automatically by... 179 | map('n', 'bb', 'BufferOrderByBufferNumber', opts) 180 | map('n', 'bd', 'BufferOrderByDirectory', opts) 181 | map('n', 'bl', 'BufferOrderByLanguage', opts) 182 | map('n', 'bw', 'BufferOrderByWindowNumber', opts) 183 | 184 | -- Other: 185 | -- :BarbarEnable - enables barbar (enabled by default) 186 | -- :BarbarDisable - very bad command, should never be used 187 | -------------------------------------------------------------------------------- /nvim/lua/plugins.lua: -------------------------------------------------------------------------------- 1 | vim.cmd [[packadd packer.nvim]] 2 | 3 | return require('packer').startup(function(use) 4 | -- Packer can manage itself 5 | use 'wbthomason/packer.nvim' 6 | 7 | use { "neanias/everforest-nvim", config = require("everforest").setup({background = "hard", 8 | colours_override = function (palette) 9 | palette.bg0 = "#1e2326" 10 | end 11 | }) } 12 | 13 | use { 14 | 'nvim-lualine/lualine.nvim', 15 | } 16 | 17 | use 'nvim-tree/nvim-web-devicons' 18 | 19 | use 'neovim/nvim-lspconfig' 20 | 21 | use "williamboman/mason.nvim" 22 | 23 | use "williamboman/mason-lspconfig.nvim" 24 | 25 | use "hrsh7th/nvim-cmp" 26 | 27 | use "L3MON4D3/LuaSnip" 28 | 29 | use "saadparwaiz1/cmp_luasnip" 30 | 31 | use "hrsh7th/cmp-nvim-lsp" 32 | 33 | use "hrsh7th/cmp-path" 34 | 35 | use "rafamadriz/friendly-snippets" 36 | 37 | use { 38 | 'nvim-telescope/telescope.nvim', tag = '0.1.5', 39 | requires = { {'nvim-lua/plenary.nvim'} } 40 | } 41 | 42 | use "elkowar/yuck.vim" 43 | 44 | use 'lewis6991/gitsigns.nvim' 45 | 46 | use 'romgrk/barbar.nvim' 47 | end) 48 | -------------------------------------------------------------------------------- /rice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlppz/Everforest-Hyprland/dbbbd77cf032cd0b5cdcaea7af6dff8fcefcd46b/rice.png -------------------------------------------------------------------------------- /rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration{ 2 | modi: "drun"; 3 | font: "Ubuntu Nerd Font 12"; 4 | lines: 5; 5 | show-icons: true; 6 | icon-theme: "Oranchelo"; 7 | terminal: "kitty"; 8 | drun-display-format: "{icon} {name}"; 9 | location: 0; 10 | disable-history: false; 11 | hide-scrollbar: true; 12 | display-drun: "  "; 13 | /* display-Network: " 󰤨 Network"; */ 14 | sidebar-mode: false; 15 | } 16 | 17 | @theme "forest" 18 | 19 | element-text, element-icon , mode-switcher { 20 | background-color: inherit; 21 | text-color: inherit; 22 | } 23 | 24 | element-text { 25 | vertical-align: 0.5; 26 | } 27 | 28 | window { 29 | height: 360px; 30 | border: 0px; 31 | border-color: @border-col; 32 | background-color: @bg-col; 33 | } 34 | 35 | mainbox { 36 | background-color: @bg-col; 37 | } 38 | 39 | inputbar { 40 | children: [prompt,entry]; 41 | background-color: @bg-col; 42 | border-radius: 5px; 43 | padding: 2px; 44 | } 45 | 46 | prompt { 47 | background-color: @blue; 48 | padding: 6px; 49 | text-color: @bg-col; 50 | border-radius: 5px; 51 | margin: 20px 0px 0px 20px; 52 | } 53 | 54 | textbox-prompt-colon { 55 | expand: false; 56 | str: ":"; 57 | } 58 | 59 | entry { 60 | padding: 6px; 61 | margin: 20px 0px 0px 10px; 62 | text-color: @fg-col; 63 | background-color: @bg-col; 64 | } 65 | 66 | listview { 67 | border: 0px 0px 0px; 68 | padding: 6px 0px 0px; 69 | margin: 10px 20px 0px 20px; 70 | columns: 1; 71 | background-color: @bg-col; 72 | } 73 | 74 | element { 75 | padding: 5px; 76 | background-color: @bg-col; 77 | text-color: @fg-col ; 78 | } 79 | 80 | element-icon { 81 | size: 25px; 82 | } 83 | 84 | element selected { 85 | background-color: @selected-col ; 86 | text-color: @fg-col2 ; 87 | border-radius: 5px ; 88 | } 89 | 90 | mode-switcher { 91 | enabled: false; 92 | } 93 | 94 | button { 95 | padding: 10px; 96 | background-color: @bg-col-light; 97 | text-color: @grey; 98 | vertical-align: 0.5; 99 | horizontal-align: 0.5; 100 | } 101 | 102 | button selected { 103 | background-color: @bg-col; 104 | text-color: @blue; 105 | } 106 | -------------------------------------------------------------------------------- /rofi/themes/forest.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | bg-col: #1e2326; 3 | bg-col-light: #272e33; 4 | border-col: #1e2326; 5 | selected-col: #272e33; 6 | blue: #a7c080; 7 | fg-col: #d3c6aa; 8 | fg-col2: #d3c6aa; 9 | grey: #7a8478; 10 | width: 300; 11 | } 12 | -------------------------------------------------------------------------------- /wall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vlppz/Everforest-Hyprland/dbbbd77cf032cd0b5cdcaea7af6dff8fcefcd46b/wall.jpg -------------------------------------------------------------------------------- /zsh/my_theme.zsh-theme: -------------------------------------------------------------------------------- 1 | PROMPT=$'%F{#d3c6aa}%K{#d3c6aa}%B%F{#1e2326} %n%k%F{#d3c6aa}%F{#d3c6aa}%F{#1e2326}%K{#d3c6aa} %1~%k%F{#d3c6aa}$(git_prompt_info)\ 2 | %F{#d3c6aa}󰁕%{$reset_color%} ' 3 | 4 | ZSH_THEME_GIT_PROMPT_PREFIX="%F{#d3c6aa}%F{#1e2326}%K{#d3c6aa} " 5 | ZSH_THEME_GIT_PROMPT_SUFFIX="%k%F{#d3c6aa}%{$reset_color%}" 6 | ZSH_THEME_GIT_PROMPT_DIRTY="*%F{#1e2326}" 7 | ZSH_THEME_GIT_PROMPT_CLEAN="" 8 | 9 | precmd() { 10 | precmd() { 11 | echo 12 | } 13 | } 14 | --------------------------------------------------------------------------------