├── .config ├── alacritty │ ├── alacritty.yml │ ├── colors.yml │ └── fonts.yml ├── cava │ └── config ├── dunst │ └── dunstrc ├── eww │ ├── assets │ │ ├── fallback.png │ │ └── pfps │ │ │ └── arlo.png │ ├── dashboard │ │ ├── eww.scss │ │ ├── eww.yuck │ │ ├── gruvbox.scss │ │ ├── mountain.scss │ │ ├── paradise.scss │ │ └── scripts │ │ │ ├── bluetooth │ │ │ ├── dunst │ │ │ ├── getbright │ │ │ ├── getcpu │ │ │ ├── getmic │ │ │ ├── getos │ │ │ ├── getram │ │ │ ├── getspace │ │ │ ├── getwm │ │ │ ├── network │ │ │ ├── quote │ │ │ └── volume │ ├── lock │ │ ├── eww.scss │ │ ├── eww.yuck │ │ ├── gruvbox.scss │ │ ├── mountain.scss │ │ ├── paradise.scss │ │ └── scripts │ │ │ ├── getart │ │ │ ├── getbat │ │ │ ├── getmusic │ │ │ ├── getos │ │ │ └── getwm │ ├── pfp │ └── vbar │ │ ├── assets │ │ ├── arlo1.png │ │ ├── arlo2.png │ │ ├── fallback.png │ │ └── tanjiro1.png │ │ ├── eww.scss │ │ ├── eww.yuck │ │ ├── gruvbox.scss │ │ ├── mountain.scss │ │ ├── paradise.scss │ │ └── scripts │ │ ├── cal │ │ ├── getart │ │ ├── getbright │ │ ├── getcpu │ │ ├── getmusic │ │ ├── getram │ │ ├── profile │ │ ├── volume │ │ └── workspaces ├── lf │ ├── cleaner │ ├── lfrc │ ├── preview │ └── startlf ├── nvim │ ├── init.lua │ ├── lua │ │ └── user │ │ │ ├── alpha.lua │ │ │ ├── autocommands.lua │ │ │ ├── autopairs.lua │ │ │ ├── base16.lua │ │ │ ├── cmp.lua │ │ │ ├── colorizer.lua │ │ │ ├── colors.lua │ │ │ ├── jaq.lua │ │ │ ├── lsp │ │ │ ├── handlers.lua │ │ │ ├── init.lua │ │ │ ├── installer.lua │ │ │ └── settings │ │ │ │ └── sumneko_lua.lua │ │ │ ├── mappings.lua │ │ │ ├── mini.lua │ │ │ ├── packer.lua │ │ │ ├── settings.lua │ │ │ ├── telescope.lua │ │ │ ├── treeshitter.lua │ │ │ └── tui.lua │ └── plugin │ │ └── packer_compiled.lua ├── picom │ └── picom.conf ├── rofi │ └── config.rasi ├── sxhkd │ └── sxhkdrc └── worm │ ├── icons │ ├── close.png │ └── close2.png │ ├── rc │ └── sxhkdrc ├── .github └── README.md ├── .local └── bin │ ├── colorblocks │ ├── dashboard │ ├── floating │ ├── lock │ ├── screenrecord │ ├── screenshot │ └── vbar ├── .xprofile ├── .zshenv └── .zshrc /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | # Import files (Colors, Fonts, Etc) 2 | import: 3 | - ~/.config/alacritty/colors.yml 4 | - ~/.config/alacritty/fonts.yml 5 | 6 | # Set environment variables 7 | env: 8 | TERM: xterm-256color 9 | 10 | # Terminal window settings 11 | window: 12 | opacity: 0.85 13 | 14 | padding: 15 | x: 8 16 | y: 8 17 | 18 | # dimensions: 19 | # columns: 98 20 | # lines: 24 21 | 22 | # Scrolling 23 | history: 10000 24 | multiplier: 3 25 | 26 | # Live config reload 27 | live_config_reload: true 28 | -------------------------------------------------------------------------------- /.config/alacritty/colors.yml: -------------------------------------------------------------------------------- 1 | # Colorschemes 2 | schemes: 3 | mountain: &mountain 4 | primary: 5 | background: "#0f0f0f" 6 | foreground: "#f0f0f0" 7 | 8 | normal: 9 | black: "#262626" 10 | red: "#ac8a8c" 11 | green: "#8aac8b" 12 | yellow: "#aca98a" 13 | blue: "#8f8aac" 14 | magenta: "#ac8aac" 15 | cyan: "#8aabac" 16 | white: "#e7e7e7" 17 | 18 | bright: 19 | black: "#4c4c4c" 20 | red: "#c49ea0" 21 | green: "#9ec49f" 22 | yellow: "#c4c19e" 23 | blue: "#a39ec4" 24 | magenta: "#c49ec4" 25 | cyan: "#9ec3c4" 26 | white: "#f5f5f5" 27 | paradise: ¶dise 28 | primary: 29 | background: '#151515' 30 | foreground: '#E8E3E3' 31 | 32 | normal: 33 | black: '#151515' 34 | red: '#B66467' 35 | green: '#8C977D' 36 | yellow: '#D9BC8C' 37 | blue: '#8DA3B9' 38 | magenta: '#A988B0' 39 | cyan: '#8AA6A2' 40 | white: '#E8E3E3' 41 | bright: 42 | 43 | black: '#424242' 44 | red: '#B66467' 45 | green: '#8C977D' 46 | yellow: '#D9BC8C' 47 | blue: '#8DA3B9' 48 | magenta: '#A988B0' 49 | cyan: '#8AA6A2' 50 | white: '#E8E3E3' 51 | 52 | # Apply the color scheme. 53 | colors: *paradise 54 | -------------------------------------------------------------------------------- /.config/alacritty/fonts.yml: -------------------------------------------------------------------------------- 1 | # Font configuration 2 | font: 3 | normal: 4 | family: "JetBrains Mono" 5 | style: Medium 6 | 7 | # Bold font face 8 | bold: 9 | family: "JetBrains Mono" 10 | style: Bold 11 | 12 | # Italic font face 13 | italic: 14 | family: "JetBrains Mono" 15 | style: Italic 16 | 17 | # Bold italic font face 18 | bold_italic: 19 | family: "JetBrains Mono" 20 | style: Bold Italic 21 | 22 | # Point size 23 | size: 11 24 | 25 | offset: 26 | x: -1 27 | y: -1 28 | -------------------------------------------------------------------------------- /.config/cava/config: -------------------------------------------------------------------------------- 1 | method = pulse 2 | 3 | [general] 4 | bars = 120 5 | bar_width = 4 6 | bar_spacing = 1 7 | 8 | [color] 9 | gradient = 1 10 | gradient_color_1 = '#b66467' 11 | gradient_color_2 = '#8c977d' 12 | gradient_color_3 = '#d9bc8c' 13 | gradient_color_4 = '#8da3b9' 14 | gradient_color_5 = '#a988b0' 15 | gradient_color_6 = '#8aa6a2' 16 | gradient_color_7 = '#e8e3e3' 17 | gradient_color_8 = '#b66467' 18 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | 3 | # --- Display --- # 4 | 5 | # The monitor to be displayed to 6 | monitor = 0 7 | 8 | # Follow monitor with mouse 9 | follow = mouse 10 | 11 | # Appearance 12 | width = 300 13 | height = 260 14 | origin = bottom-right 15 | offset = 12x12 16 | 17 | # Progress bar 18 | progress_bar = true 19 | progress_bar_height = 10 20 | progress_bar_frame_width = 1 21 | progress_bar_min_width = 150 22 | progress_bar_max_width = 300 23 | highlight = "#E8E3E3" 24 | 25 | # Show how many messages are hidden 26 | indicate_hidden = no 27 | 28 | # Shrink window if it's smaller than the width. 29 | shrink = no 30 | 31 | # The transparency of the window. 32 | transparency = 1 33 | 34 | # Draw a line between multiple notifications 35 | separator_height = 1 36 | 37 | separator_color = "#E8E3E3" 38 | 39 | # Set notification padding 40 | padding = 16 41 | horizontal_padding = 16 42 | 43 | # Disable frame (border) 44 | frame_width = 1 45 | frame_color = "#E8E3E3" 46 | 47 | # Sort messages by urgency. 48 | sort = no 49 | 50 | # Disable idle time 51 | idle_threshold = 0 52 | 53 | # --- Text --- # 54 | 55 | # Set the font 56 | font = "JetBrains Mono 11" 57 | 58 | # Set line height to font height 59 | line_height = 0 60 | 61 | # Reference for markup and formatting: 62 | # bold 63 | # italic 64 | # strikethrough 65 | # underline 66 | # . 67 | # %a appname 68 | # %s summary 69 | # %b body 70 | # %i iconname (including its path) 71 | # %I iconname (without its path) 72 | # %p progress value if set ([ 0%] to [100%]) or nothing 73 | # %n progress value if set without any extra characters 74 | # %% Literal % 75 | 76 | markup = full 77 | format = "%s\n%b" 78 | 79 | # Left align the text 80 | alignment = left 81 | 82 | # Vertical alignment of message text and icon. 83 | vertical_alignment = center 84 | 85 | # Show age of message if message is old 86 | show_age_threshold = 120 87 | 88 | # Wrap text if it doesn't fit in geometry 89 | word_wrap = no 90 | 91 | # Where to place ellipses if word wrap is disabled 92 | # ellipsize = middle 93 | 94 | # Use newlines '\n' in notifications. 95 | ignore_newline = no 96 | 97 | # Don't stack together notifications 98 | stack_duplicates = false 99 | 100 | # Hide the count of stacked notifications 101 | # hide_duplicate_count = false 102 | 103 | # Display indicators for URLs (U) and actions (A). 104 | show_indicators = yes 105 | 106 | # ---- Icons ---- # 107 | 108 | # Align icons left/right/off 109 | icon_position = left 110 | 111 | # Scale small icons up to this size, set to 0 to disable. 112 | min_icon_size = 64 113 | 114 | # Scale larger icons down to this size, set to 0 to disable 115 | max_icon_size = 64 116 | 117 | # Paths to default icons. 118 | icon_path = /usr/share/icons/Adwaita/64x64/status:/usr/share/icons/Adwaita/64x64/devices/ 119 | 120 | # --- History --- # 121 | 122 | # Avoid timing out hidden notifications 123 | sticky_history = yes 124 | 125 | # Maximum amount of notifications kept in history 126 | history_length = 100 127 | 128 | # --- Misc/Advanced --- # 129 | 130 | dmenu = /usr/bin/dmenu -p dunst: 131 | 132 | # Browser for opening urls in context menu. 133 | browser = /usr/bin/firefox -new-tab 134 | 135 | # Always run rule-defined scripts, even if the notification is suppressed 136 | always_run_script = false 137 | 138 | # Define the title of the windows spawned by dunst 139 | title = Dunst 140 | 141 | # Define the class of the windows spawned by dunst 142 | class = Dunst 143 | 144 | # Define the corner radius of the notification window 145 | corner_radius = 10 146 | 147 | # Don't gnore the dbus closeNotification message. 148 | ignore_dbusclose = false 149 | 150 | # --- Legacy --- # 151 | 152 | # Use the Xinerama extension instead of RandR for multi-monitor support. 153 | force_xinerama = false 154 | 155 | # --- Mouse --- # 156 | mouse_left_click = close_current 157 | mouse_middle_click = do_action, close_current 158 | mouse_right_click = close_all 159 | 160 | [experimental] 161 | per_monitor_dpi = false 162 | 163 | [urgency_low] 164 | background = "#151515" 165 | foreground = "#E8E3E3" 166 | timeout = 8 167 | 168 | [urgency_normal] 169 | background = "#151515" 170 | foreground = "#E8E3E3" 171 | timeout = 8 172 | 173 | [urgency_critical] 174 | background = "#151515" 175 | foreground = "#E8E3E3" 176 | timeout = 0 177 | 178 | # vim:ft=cfg 179 | -------------------------------------------------------------------------------- /.config/eww/assets/fallback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/assets/fallback.png -------------------------------------------------------------------------------- /.config/eww/assets/pfps/arlo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/assets/pfps/arlo.png -------------------------------------------------------------------------------- /.config/eww/dashboard/eww.scss: -------------------------------------------------------------------------------- 1 | @import "paradise.scss"; 2 | 3 | * { 4 | all: unset; 5 | font-family: JetBrains Mono; 6 | } 7 | 8 | tooltip { 9 | background-color: $background; 10 | border-radius: 10px; 11 | font-size: 14px; 12 | border: 2px solid $foreground; 13 | } 14 | 15 | .dashboard { 16 | border-radius: 10px 0px 0px 10px; 17 | padding: 20px; 18 | background-color: $background; 19 | color: $foreground; 20 | border: 1px solid $foreground; 21 | } 22 | 23 | .profile, .fetch, .time, .control, .sliders, .circles, .powerbuttons { 24 | background-color: $black; 25 | border-radius: 10px; 26 | padding: 20px; 27 | } 28 | 29 | .pfp { 30 | min-width: 125px; 31 | min-height: 125px; 32 | background-size: cover; 33 | background-position: center; 34 | border-radius: 10px; 35 | border: 1px solid $foreground; 36 | } 37 | 38 | .me { 39 | padding: 1rem 0rem 0rem 0rem; 40 | color: $magenta; 41 | } 42 | 43 | .os { 44 | color: $green; 45 | } 46 | 47 | .wm { 48 | color: $cyan; 49 | } 50 | 51 | .usr { 52 | color: $yellow; 53 | } 54 | 55 | .hst { 56 | color: $red; 57 | } 58 | 59 | .label { 60 | font-size: 30px; 61 | } 62 | 63 | .hour { 64 | font-size: 30px; 65 | color: $blue; 66 | } 67 | 68 | .date { 69 | font-size: 15px; 70 | color: $magenta; 71 | } 72 | 73 | .dunst, .bt, .mute, .net { 74 | color: $background; 75 | border-radius: 10px; 76 | font-size: 30px; 77 | } 78 | 79 | .muteActive, .volScale trough highlight { 80 | background-color: $green; 81 | } 82 | 83 | .btActive, .micScale trough highlight { 84 | background-color: $cyan; 85 | } 86 | 87 | .dunstActive, .brightScale trough highlight { 88 | background-color: $yellow; 89 | } 90 | 91 | .netActive, .spaceScale trough highlight { 92 | background-color: $red; 93 | } 94 | 95 | .dunstInactive, .btInactive, .muteInactive, .netInactive { 96 | background-color: $altblack; 97 | } 98 | 99 | .icon { 100 | font-size: 30px; 101 | color: $foreground; 102 | } 103 | 104 | scale trough { 105 | border-radius: 10px; 106 | min-width: 1.1rem; 107 | min-height: 10rem; 108 | background-color: $background; 109 | } 110 | 111 | scale trough highlight { 112 | border-radius: 10px; 113 | } 114 | 115 | .cpu { 116 | color: $magenta; 117 | background-color: $background; 118 | } 119 | 120 | .ram { 121 | color: $blue; 122 | background-color: $background; 123 | } 124 | 125 | .cpuIcon, .ramIcon { 126 | margin: 2.5rem; 127 | font-size: 40px; 128 | color: $foreground; 129 | } 130 | 131 | .shutdown, .reboot, .lock, .sleep, .logout { 132 | color: $background; 133 | font-size: 30px; 134 | border-radius: 10px; 135 | } 136 | 137 | .shutdown { 138 | background-color: $green; 139 | } 140 | 141 | .reboot { 142 | background-color: $cyan; 143 | } 144 | 145 | .lock { 146 | background-color: $yellow; 147 | } 148 | 149 | .sleep { 150 | background-color: $red; 151 | } 152 | 153 | .logout { 154 | background-color: $blue; 155 | } 156 | -------------------------------------------------------------------------------- /.config/eww/dashboard/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwindow dashboard 2 | :monitor 0 3 | :geometry (geometry :anchor "center right") 4 | :stacking "fg" 5 | :windowtype "dock" 6 | (dashboard)) 7 | 8 | (defwidget dashboard [] 9 | (box :orientation "v" :space-evenly false :class "dashboard" :spacing 20 :halign "center" 10 | (info) 11 | (mid) 12 | (circles) 13 | (powerbuttons))) 14 | 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 16 | 17 | (defwidget info [] 18 | (box :class "info" :space-evenly false :spacing 20 19 | (profile) 20 | (fetch))) 21 | 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 23 | 24 | (defwidget profile [] 25 | (box :orientation "v" :space-evenly false :class "profile" :halign "center" 26 | (box :class "pfp" 27 | :valign "center" 28 | :style "background-image: url('${pfp}');") 29 | (label :class "me" :text "[${usr}@${hst}]"))) 30 | 31 | (deflisten pfp "tail -F ~/.config/eww/pfp 2>/dev/null") 32 | 33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 34 | 35 | (defwidget fetch [] 36 | (box :space-evenly true 37 | :orientation "v" 38 | :class "fetch" 39 | (box :space-evenly false :class "os" 40 | (box :class "label" "") 41 | (label :text ": ${os}" 42 | :class "text" 43 | :halign "start")) 44 | (box :space-evenly false :class "wm" 45 | (box :class "label" "") 46 | (label :text ": ${wm}" 47 | :class "text" 48 | :halign "start")) 49 | (box :space-evenly false :class "usr" 50 | (box :class "label" "") 51 | (label :text ": ${usr}" 52 | :class "text" 53 | :halign "start")) 54 | (box :space-evenly false :class "hst" 55 | (box :class "label" "") 56 | (label :text ": ${hst}" 57 | :class "text" 58 | :halign "start")))) 59 | 60 | (defpoll os :interval "24h" "scripts/getos") 61 | (defpoll wm :interval "24h" "scripts/getwm") 62 | (defpoll usr :interval "24h" "whoami") 63 | (defpoll hst :interval "24h" "uname -n") 64 | 65 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 66 | 67 | (defwidget mid [] 68 | (box :class "mid" :space-evenly false :spacing 20 69 | (box :orientation "v" :space-evenly false :spacing 20 70 | (time) 71 | (control)) 72 | (box :orientation "h" :halign "end" 73 | (sliders)))) 74 | 75 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 76 | 77 | (defwidget sliders [] 78 | (box :orientation "h" :space-evenly false :class "sliders" :halign "start" :valign "center" :spacing 20 79 | (metric :class "volScale" 80 | :value vol 81 | :tooltip "${vol}%" 82 | :onchange "amixer -D pulse sset Master {}%" 83 | :icon volIcon) 84 | (metric :class "micScale" 85 | :value mic 86 | :tooltip "${mic}%" 87 | :onchange "amixer -D pulse sset Capture {}%" 88 | :icon "") 89 | (metric :class "brightScale" 90 | :value bright 91 | :tooltip "${bright}%" 92 | :onchange "" 93 | :icon "") 94 | (metric :class "spaceScale" 95 | :value space 96 | :tooltip "${space}%" 97 | :onchange "" 98 | :icon ""))) 99 | 100 | (defwidget metric [class value tooltip onchange icon] 101 | (box :orientation "v" 102 | :class "metric" 103 | :space-evenly false 104 | :spacing 20 105 | (scale :min 0 106 | :max 101 107 | :orientation "v" 108 | :flipped true 109 | :class class 110 | :value value 111 | :tooltip tooltip 112 | :onchange onchange) 113 | (label :text icon :class "icon"))) 114 | 115 | (defpoll mic :interval "10s" "scripts/getmic") 116 | (defpoll vol :interval "2s" "scripts/volume value") 117 | (defpoll space :interval "10m" "scripts/getspace") 118 | (defpoll bright :interval "2s" "scripts/getbright") 119 | 120 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 121 | 122 | (defwidget time[] 123 | (box :orientation "v" 124 | :halign "center" 125 | :space-evenly false 126 | :class "time" 127 | (label :text hour 128 | :class "hour") 129 | (label :text date 130 | :class "date"))) 131 | 132 | (defpoll hour :interval "2s" "date '+%H:%M'") 133 | (defpoll date :interval "10m" "date +%a,' '%b' '%d") 134 | 135 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 136 | 137 | (defwidget control [] 138 | (box :class "control" :orientation "v" :spacing 10 139 | (box :orientation "h" :spacing 10 140 | (button :tooltip "Mute" :class "mute ${volIcon == "墳" ? "muteActive" : "muteInactive"}" :onclick "amixer sset Master toggle" volIcon) 141 | (button :tooltip "Bluetooth" :class "bt ${btIcon == "" ? "btInactive" : "btActive"}" :onclick "scripts/bluetooth toggle" btIcon)) 142 | (box :orientation "h" :spacing 10 143 | (button :tooltip "Do Not Disturb" :class "dunst ${dunstIcon == "" ? "dunstActive" : "dunstInactive"}" :onclick "scripts/dunst toggle" dunstIcon) 144 | (button :tooltip "Networking" :class "net ${netIcon == "直" ? "netActive" : "netInactive"}" :onclick "scripts/network toggle" netIcon)))) 145 | 146 | (defpoll btIcon :interval "2s" "scripts/bluetooth icon") 147 | (defpoll volIcon :interval "2s" "scripts/volume icon") 148 | (defpoll netIcon :interval "2s" "scripts/network icon") 149 | (defpoll dunstIcon :interval "2s" "scripts/dunst icon") 150 | 151 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 152 | 153 | (defwidget circles [] 154 | (box :orientation "h" :spacing 20 155 | (box :class "circles" 156 | (circular-progress :value cpu 157 | :thickness 15 158 | :clockwise true 159 | :class "cpu" 160 | :tooltip "${cpu}%" 161 | (label :text "" 162 | :class "cpuIcon"))) 163 | (box :class "circles" 164 | (circular-progress :value ram 165 | :thickness 15 166 | :clockwise true 167 | :class "ram" 168 | :tooltip "${ram}%" 169 | (label :text "" 170 | :class "ramIcon"))))) 171 | 172 | (defpoll cpu :interval "10s" "scripts/getcpu") 173 | (defpoll ram :interval "10s" "scripts/getram") 174 | 175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 176 | 177 | (defwidget powerbuttons [] 178 | (box :orientation "h" :class "powerbuttons" :spacing 20 179 | (button :class "shutdown" :tooltip "Shutdown" :onclick "systemctl poweroff" "") 180 | (button :class "reboot" :tooltip "Reboot" :onclick "systemctl reboot" "") 181 | (button :class "lock" :tooltip "Lock" :onclick "~/.local/bin/lock &" "") 182 | (button :class "sleep" :tooltip "Sleep" :onclick "~/.local/bin/lock suspend &" "") 183 | (button :class "logout" :tooltip "Logout" :onclick "killall $(wmctrl -m | grep Name | cut -d ' ' -f2)" "﫼"))) 184 | -------------------------------------------------------------------------------- /.config/eww/dashboard/gruvbox.scss: -------------------------------------------------------------------------------- 1 | $background: #282828; 2 | $foreground: #dfbf8e; 3 | 4 | $black: #3c3836; 5 | $altblack: #45403d; 6 | $red: #ea6962; 7 | $green: #a9b665; 8 | $yellow: #d8a657; 9 | $blue: #7daea3; 10 | $magenta: #d3869b; 11 | $cyan: #89b482; 12 | -------------------------------------------------------------------------------- /.config/eww/dashboard/mountain.scss: -------------------------------------------------------------------------------- 1 | $background: #0f0f0f; 2 | $foreground: #f0f0f0; 3 | 4 | $black: #262626; 5 | $altblack: #4c4c4c; 6 | $red: #ac8a8c; 7 | $green: #8aac8b; 8 | $yellow: #aca98a; 9 | $blue: #8f8aac; 10 | $magenta: #ac8aac; 11 | $cyan: #8aabac; 12 | -------------------------------------------------------------------------------- /.config/eww/dashboard/paradise.scss: -------------------------------------------------------------------------------- 1 | $background: #151515; 2 | $foreground: #E8E3E3; 3 | 4 | $black: #2E2E2E; 5 | $altblack: #424242; 6 | $red: #B66467; 7 | $green: #8C977D; 8 | $yellow: #D9BC8C; 9 | $blue: #8DA3B9; 10 | $magenta: #A988B0; 11 | $cyan: #8AA6A2; 12 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/bluetooth: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function status { 4 | if bluetoothctl show | grep -q "Powered: yes"; then 5 | return 0 6 | else 7 | return 1 8 | fi 9 | } 10 | 11 | function toggle { 12 | if status; then 13 | bluetoothctl power off 14 | else 15 | bluetoothctl power on 16 | fi 17 | } 18 | 19 | function icon { 20 | if echo info | bluetoothctl | grep -q "Device"; then 21 | echo "" 22 | elif status; then 23 | echo "" 24 | else 25 | echo "" 26 | fi 27 | } 28 | 29 | case "$1" in 30 | icon) 31 | icon;; 32 | toggle) 33 | toggle;; 34 | esac 35 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/dunst: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function status { 4 | if [ "$(dunstctl is-paused)" = "false" ]; then 5 | return 0 6 | else 7 | return 1 8 | fi 9 | } 10 | 11 | function toggle { 12 | if status; then 13 | dunstctl set-paused true 14 | else 15 | dunstctl set-paused false 16 | fi 17 | } 18 | 19 | function icon { 20 | if status; then 21 | echo "" 22 | else 23 | echo "" 24 | fi 25 | } 26 | 27 | case "$1" in 28 | icon) 29 | icon;; 30 | toggle) 31 | toggle;; 32 | esac 33 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getbright: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | brightness=$(xrandr --verbose --current | grep ^"DP-1" -A5 | tail -n1 | cut -d " " -f2) 4 | 5 | echo "${brightness} * 100" | bc | cut -d "." -f1 6 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getcpu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | printf "%.0f\n" $(top -b -n1 | grep ^%Cpu | awk '{print 100-$8}') 4 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getmic: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | amixer -D pulse get Capture | grep 'Mono:' | cut -d '[' -f 2 | cut -d ']' -f 1 | tr -d '%' 4 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getos: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cat /etc/os-release | head -n1 | cut -d '"' -f2 | cut -d ' ' -f1 4 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getram: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}') 4 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getspace: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | space=$(df -k . | cut -d '%' -f1) 4 | space=${space##* } 5 | 6 | echo ${space} 7 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/getwm: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wm=$(wmctrl -m | grep Name: | awk '{print $2}') 4 | 5 | if [ "${wm}" = "herbstluftwm" ]; then 6 | echo "hlwm" 7 | else 8 | echo "${wm}" 9 | fi 10 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/network: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function status { 4 | if nmcli | grep -q "wlp3s0: connected"; then 5 | return 0 6 | else 7 | return 1 8 | fi 9 | } 10 | 11 | function toggle { 12 | if status; then 13 | nmcli radio wifi off 14 | else 15 | nmcli radio wifi on 16 | fi 17 | } 18 | 19 | function icon { 20 | if status; then 21 | echo "直" 22 | else 23 | echo "睊" 24 | fi 25 | } 26 | 27 | case "$1" in 28 | icon) 29 | icon;; 30 | toggle) 31 | toggle;; 32 | esac 33 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/quote: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | quotes=" 4 | software is like sex : it's better when it's free. 5 | Intelligence is the ability to avoid doing work, yet getting the work done. 6 | Given enough eyeballs, all bugs are shallow. 7 | I'd argue that everybody wants to do something that matters 8 | Humans are destined to be party animals, and technology will follow." 9 | 10 | lines="$(echo "${quotes}" | tail -n +2 | wc -l)" 11 | random=$((1 + $RANDOM % $lines)) 12 | 13 | quote=$(echo "${quotes}" | tail -n +2 | sed "${random}!d") 14 | 15 | echo "\"${quote}\" 16 | ― Linus Torvalds" 17 | -------------------------------------------------------------------------------- /.config/eww/dashboard/scripts/volume: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | volume=$(amixer -D pulse sget Master | grep 'Left:' | awk -F '[][]' '{ print $2 }' | tr -d '%' | head -1) 4 | 5 | function status { 6 | if pacmd list-sinks | grep muted | grep yes -q; then 7 | return 0 8 | else 9 | return 1 10 | fi 11 | } 12 | 13 | function value { 14 | if status; then 15 | exit 16 | else 17 | echo "${volume}" 18 | fi 19 | } 20 | 21 | function icon { 22 | if [ "${volume}" = 0 ] || status; then 23 | echo "婢" 24 | else 25 | echo "墳" 26 | fi 27 | } 28 | 29 | case "$1" in 30 | icon) 31 | icon;; 32 | value) 33 | value;; 34 | esac 35 | -------------------------------------------------------------------------------- /.config/eww/lock/eww.scss: -------------------------------------------------------------------------------- 1 | @import "paradise.scss"; 2 | 3 | * { 4 | all: unset; 5 | font-family: JetBrains Mono; 6 | } 7 | 8 | .music, .fetch, .time, .quote, .bat { 9 | background-color: $background; 10 | border-radius: 10px; 11 | padding: 20px; 12 | border: 1px solid $foreground; 13 | } 14 | 15 | .art { 16 | background-size: 150px; 17 | min-height: 150px; 18 | min-width: 150px; 19 | border-radius: 10px; 20 | border: 1px solid $foreground; 21 | } 22 | 23 | .info { 24 | border-radius: 10px; 25 | padding: 20px; 26 | border: 1px solid $foreground; 27 | } 28 | 29 | .fetch { 30 | min-height: 150px; 31 | min-width: 150px; 32 | } 33 | 34 | .os, .title { 35 | color: $green; 36 | } 37 | 38 | .wm, .artist { 39 | color: $cyan; 40 | } 41 | 42 | .usr, .album { 43 | color: $yellow; 44 | } 45 | 46 | .hst { 47 | color: $red; 48 | } 49 | 50 | .pkg { 51 | color: $blue; 52 | } 53 | 54 | .uptime { 55 | color: $magenta; 56 | } 57 | 58 | .label { 59 | font-size: 30px; 60 | } 61 | 62 | .hour { 63 | font-size: 60px; 64 | color: $blue; 65 | } 66 | 67 | .date { 68 | font-size: 30px; 69 | color: $magenta; 70 | } 71 | 72 | .batIcon { 73 | margin: 2.5rem; 74 | font-size: 40px; 75 | color: $green; 76 | } 77 | 78 | .bat { 79 | color: $green; 80 | background-color: $background; 81 | } 82 | -------------------------------------------------------------------------------- /.config/eww/lock/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwindow music 2 | :monitor 0 3 | :geometry (geometry 4 | :x "12px" 5 | :y "12px" 6 | :anchor "top left") 7 | :stacking "fg" 8 | :windowtype "dock" 9 | (music)) 10 | 11 | (defwidget music [] 12 | (box :orientation "h" :space-evenly false :spacing 20 :class "music" 13 | (box :class "art" :style "background-image: url('${cover}');" art) 14 | (box :orientation "v" :space-evenly true :class "info" 15 | (box :space-evenly false :class "title" 16 | (box :class "label" "") 17 | (label :text ": ${title}" 18 | :class "text" 19 | :limit-width 25 20 | :halign "start")) 21 | (box :space-evenly false :class "artist" 22 | (box :class "label" "") 23 | (label :text ": ${artist}" 24 | :class "text" 25 | :limit-width 25 26 | :halign "start")) 27 | (box :space-evenly false :class "album" 28 | (box :class "label" "") 29 | (label :text ": ${album}" 30 | :class "text" 31 | :limit-width 25 32 | :halign "start"))))) 33 | 34 | (defpoll cover :interval "5s" "scripts/getmusic art") 35 | (defpoll title :interval "5s" "scripts/getmusic title") 36 | (defpoll artist :interval "5s" "scripts/getmusic artist") 37 | (defpoll album :interval "5s" "scripts/getmusic album") 38 | (defpoll art :interval "5s" "scripts/getart") 39 | 40 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 41 | 42 | (defwindow fetch 43 | :monitor 0 44 | :geometry (geometry 45 | :x "-12px" 46 | :y "12px" 47 | :anchor "top right") 48 | :stacking "fg" 49 | :windowtype "dock" 50 | (fetch)) 51 | 52 | (defwidget fetch [] 53 | (box :space-evenly true 54 | :orientation "v" 55 | :class "fetch" 56 | (box :space-evenly false :class "os" 57 | (box :class "label" "") 58 | (label :text ": ${os}" 59 | :class "text" 60 | :halign "start")) 61 | (box :space-evenly false :class "wm" 62 | (box :class "label" "") 63 | (label :text ": ${wm}" 64 | :class "text" 65 | :halign "start")) 66 | (box :space-evenly false :class "usr" 67 | (box :class "label" "") 68 | (label :text ": ${usr}" 69 | :class "text" 70 | :halign "start")) 71 | (box :space-evenly false :class "hst" 72 | (box :class "label" "") 73 | (label :text ": ${hst}" 74 | :class "text" 75 | :halign "start")) 76 | (box :space-evenly false :class "pkg" 77 | (box :class "label" "") 78 | (label :text ": ${pkg}" 79 | :class "text" 80 | :halign "start")) 81 | (box :space-evenly false :class "uptime" 82 | (box :class "label" "") 83 | (label :text ": ${uptime}" 84 | :class "text" 85 | :halign "start")))) 86 | 87 | (defpoll os :interval "24h" "scripts/getos") 88 | (defpoll wm :interval "24h" "scripts/getwm") 89 | (defpoll usr :interval "24h" "whoami") 90 | (defpoll hst :interval "24h" "uname -n") 91 | (defpoll pkg :interval "24h" "pacman -Q | wc -l") 92 | (defpoll uptime :interval "10m" "uptime -p | sed -e 's/up //;s/ hours,/h/;s/ minutes/m/'") 93 | 94 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 95 | 96 | (defwindow time 97 | :monitor 0 98 | :geometry (geometry 99 | :y "-25%" 100 | :anchor "center") 101 | :stacking "fg" 102 | :windowtype "dock" 103 | (time)) 104 | 105 | (defwidget time [] 106 | (box :orientation "v" 107 | :halign "center" 108 | :space-evenly false 109 | :class "time" 110 | (label :text hour 111 | :class "hour") 112 | (label :text date 113 | :class "date"))) 114 | 115 | (defpoll hour :interval "2s" "date '+%H:%M'") 116 | (defpoll date :interval "10m" "date +%a,' '%b' '%d") 117 | 118 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 119 | 120 | (defwindow quote 121 | :monitor 0 122 | :geometry (geometry 123 | :y "-12px" 124 | :x "12px" 125 | :anchor "center bottom") 126 | :stacking "fg" 127 | :windowtype "dock" 128 | (label :class "quote" 129 | :text "${quote}" 130 | :limit-width 100)) 131 | 132 | (defpoll quote :interval "24h" "fortune -n 90 -s") 133 | -------------------------------------------------------------------------------- /.config/eww/lock/gruvbox.scss: -------------------------------------------------------------------------------- 1 | $background: #282828; 2 | $foreground: #dfbf8e; 3 | 4 | $black: #3c3836; 5 | $altblack: #45403d; 6 | $red: #ea6962; 7 | $green: #a9b665; 8 | $yellow: #d8a657; 9 | $blue: #7daea3; 10 | $magenta: #d3869b; 11 | $cyan: #89b482; 12 | -------------------------------------------------------------------------------- /.config/eww/lock/mountain.scss: -------------------------------------------------------------------------------- 1 | $background: #0f0f0f; 2 | $foreground: #f0f0f0; 3 | 4 | $black: #262626; 5 | $altblack: #4c4c4c; 6 | $red: #ac8a8c; 7 | $green: #8aac8b; 8 | $yellow: #aca98a; 9 | $blue: #8f8aac; 10 | $magenta: #ac8aac; 11 | $cyan: #8aabac; 12 | -------------------------------------------------------------------------------- /.config/eww/lock/paradise.scss: -------------------------------------------------------------------------------- 1 | $background: #151515; 2 | $foreground: #E8E3E3; 3 | 4 | $black: #2E2E2E; 5 | $altblack: #424242; 6 | $red: #B66467; 7 | $green: #8C977D; 8 | $yellow: #D9BC8C; 9 | $blue: #8DA3B9; 10 | $magenta: #A988B0; 11 | $cyan: #8AA6A2; 12 | -------------------------------------------------------------------------------- /.config/eww/lock/scripts/getart: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # this only works with spotifyd + spotify-tui 4 | # this script is long and confusing b/c spotifyd sucks 5 | 6 | tmp_dir="/tmp/eww" 7 | tmp_cover_path="${tmp_dir}/cover.png" 8 | fallback="${HOME}/.config/eww/assets/fallback.png" 9 | 10 | mkdir -p "${tmp_dir}" 11 | 12 | if ! spt playback --share-track &>/dev/null; then 13 | cp "${fallback}" "${tmp_cover_path}" 14 | exit 15 | fi 16 | 17 | base_url="https://open.spotify.com/oembed?url=spotify:" 18 | keyword="https://i.scdn.co/image/[a-zA-Z0-9./?=_%:-]*" 19 | 20 | song_link="$(spt playback --share-track)" 21 | song_link="${song_link##*.com/}" 22 | song_link="${song_link//[\/]/:}" 23 | 24 | artlink="$( 25 | curl -s "${base_url}${song_link}" | 26 | grep -Eo "${keyword}" 27 | )" 28 | 29 | curl -s "${artlink}" > "${tmp_cover_path}"; 30 | convert "${tmp_cover_path}" -resize 150x150 "${tmp_cover_path}" 31 | -------------------------------------------------------------------------------- /.config/eww/lock/scripts/getbat: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | BAT=$(ls /sys/class/power_supply | grep BAT | head -n 1) 4 | cat /sys/class/power_supply/${BAT}/capacity 5 | -------------------------------------------------------------------------------- /.config/eww/lock/scripts/getmusic: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function status { 4 | if spt playback --share-track &>/dev/null; then 5 | return 0 6 | else 7 | return 1 8 | fi 9 | } 10 | 11 | function art { 12 | echo "/tmp/eww/cover.png" 13 | } 14 | 15 | function title { 16 | if status; then 17 | spt playback --format '%t' 18 | else 19 | echo "N/A" 20 | fi 21 | } 22 | 23 | function artist { 24 | if status; then 25 | spt playback --format '%a' 26 | else 27 | echo "N/A" 28 | fi 29 | } 30 | 31 | function album { 32 | if status; then 33 | spt playback --format '%b' 34 | else 35 | echo "N/A" 36 | fi 37 | } 38 | 39 | case "$1" in 40 | art) 41 | art;; 42 | title) 43 | title;; 44 | artist) 45 | artist;; 46 | album) 47 | album;; 48 | esac 49 | -------------------------------------------------------------------------------- /.config/eww/lock/scripts/getos: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cat /etc/os-release | head -n1 | cut -d '"' -f2 | cut -d ' ' -f1 4 | -------------------------------------------------------------------------------- /.config/eww/lock/scripts/getwm: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wm="$(wmctrl -m | grep Name | cut -d ' ' -f2)" 4 | 5 | if [ "${wm}" = "herbstluftwm" ]; then 6 | wm="hlwm" 7 | fi 8 | 9 | echo "${wm}" 10 | -------------------------------------------------------------------------------- /.config/eww/pfp: -------------------------------------------------------------------------------- 1 | /home/is0n/.config/eww/assets/pfps/arlo.png 2 | -------------------------------------------------------------------------------- /.config/eww/vbar/assets/arlo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/vbar/assets/arlo1.png -------------------------------------------------------------------------------- /.config/eww/vbar/assets/arlo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/vbar/assets/arlo2.png -------------------------------------------------------------------------------- /.config/eww/vbar/assets/fallback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/vbar/assets/fallback.png -------------------------------------------------------------------------------- /.config/eww/vbar/assets/tanjiro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/eww/vbar/assets/tanjiro1.png -------------------------------------------------------------------------------- /.config/eww/vbar/eww.scss: -------------------------------------------------------------------------------- 1 | @import "paradise.scss"; 2 | 3 | * { 4 | all: unset; 5 | } 6 | 7 | tooltip { 8 | background-color: $background; 9 | border-radius: 10px; 10 | font-size: 14px; 11 | border: 2px solid $foreground; 12 | font-family: "JetBrains Mono"; 13 | } 14 | 15 | .bar { 16 | font-family: "JetBrains Mono"; 17 | border-radius: 10px; 18 | background-color: $background; 19 | color: $foreground; 20 | } 21 | 22 | .profile-btn { 23 | background-color: $black; 24 | border-radius: 10px 10px 0px 0px; 25 | padding: 0px 10px 0px 10px; 26 | font-size: 30px; 27 | color: $cyan; 28 | } 29 | 30 | .shutdown, .reboot, .lock, .sleep, .logout { 31 | color: $background; 32 | font-size: 25px; 33 | margin: 5px; 34 | border-radius: 100%; 35 | } 36 | 37 | .shutdown { 38 | color: $green; 39 | } 40 | 41 | .reboot { 42 | color: $cyan; 43 | } 44 | 45 | .lock { 46 | color: $yellow; 47 | } 48 | 49 | .sleep { 50 | color: $magenta; 51 | } 52 | 53 | .logout { 54 | color: $red; 55 | } 56 | 57 | .workspaces, .icon { 58 | font-size: 25px; 59 | } 60 | 61 | .empty { 62 | color: $altblack; 63 | } 64 | 65 | scale trough { 66 | border-radius: 10px; 67 | min-width: 0.4rem; 68 | min-height: 4rem; 69 | background-color: $black; 70 | } 71 | 72 | scale trough highlight { 73 | border-radius: 10px; 74 | } 75 | 76 | .cpu trough highlight { 77 | background-color: $red; 78 | } 79 | 80 | .ram trough highlight { 81 | background-color: $green; 82 | } 83 | 84 | .mic trough highlight { 85 | background-color: $magenta; 86 | } 87 | 88 | .vol trough highlight { 89 | background-color: $blue; 90 | } 91 | 92 | .bright trough highlight { 93 | background-color: $yellow; 94 | } 95 | 96 | .time { 97 | background-color: $black; 98 | border-radius: 0px 0px 10px 10px; 99 | padding: 10px; 100 | font-size: 14px; 101 | } 102 | 103 | .profile { 104 | font-family: "JetBrains Mono"; 105 | background-color: $background; 106 | border-radius: 10px; 107 | padding: 20px; 108 | border: 1px solid $foreground; 109 | } 110 | 111 | .pfp { 112 | min-width: 150px; 113 | min-height: 150px; 114 | background-size: cover; 115 | background-position: center; 116 | border-radius: 10px; 117 | border: 1px solid $foreground; 118 | } 119 | 120 | .me { 121 | padding: 1rem 0rem 0rem 0rem; 122 | color: $magenta; 123 | font-size: 14px; 124 | } 125 | 126 | .btn { 127 | padding: 1rem 0rem 0rem 0rem; 128 | font-size: 30px; 129 | font-family: "JetBrainsMono Nerd Font"; 130 | } 131 | 132 | .art { 133 | min-height: 150px; 134 | min-width: 150px; 135 | border-radius: 10px; 136 | border: 1px solid $foreground; 137 | } 138 | 139 | .info { 140 | border-radius: 10px; 141 | padding: 20px; 142 | border: 1px solid $foreground; 143 | } 144 | 145 | .firefox, .title, .prev { 146 | color: $red; 147 | } 148 | 149 | .profile, .artist, .toggle { 150 | color: $cyan; 151 | } 152 | 153 | .discord, .album, .next { 154 | color: $magenta; 155 | } 156 | 157 | .line { 158 | all: unset; 159 | padding: 0px; 160 | border: 1px solid $foreground; 161 | } 162 | 163 | .cal-out { 164 | border: 1px solid $foreground; 165 | border-radius: 10px; 166 | } 167 | 168 | .cal-in { 169 | padding: 0px 10px 0px 10px; 170 | color: $foreground; 171 | } 172 | 173 | .cal { 174 | background-color: $background; 175 | font-family: "JetBrains Mono"; 176 | font-size: 14px; 177 | padding: 5px; 178 | } 179 | 180 | calendar:selected { 181 | color: $magenta; 182 | } 183 | 184 | calendar.header { 185 | color: $cyan; 186 | font-weight: bold; 187 | } 188 | 189 | calendar.button { 190 | color: $green; 191 | } 192 | 193 | calendar.highlight { 194 | color: $blue; 195 | font-weight: bold; 196 | } 197 | 198 | calendar:indeterminate { 199 | color: $foreground; 200 | } 201 | -------------------------------------------------------------------------------- /.config/eww/vbar/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwindow vbar 2 | :monitor 0 3 | :geometry (geometry 4 | :x "6px" 5 | :width "35px" 6 | :height "98%" 7 | :anchor "left center") 8 | :stacking "fg" 9 | :windowtype "dock" 10 | :reserve (struts :side "left" :distance "42px") 11 | (bar)) 12 | 13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 14 | 15 | (defwidget bar [] 16 | (box :class "bar" 17 | :orientation "v" 18 | (top) 19 | (center) 20 | (btm))) 21 | 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 23 | 24 | (defwidget top [] 25 | (box :valign "start" :orientation "v" :spacing 5 :space-evenly false 26 | (eventbox :onhover "scripts/profile open &" 27 | (button :class "profile-btn" :onclick "scripts/profile toggle &" "")) 28 | (powerbuttons))) 29 | 30 | (defwidget powerbuttons [] 31 | (eventbox :onhover "eww -c . update showbuttons=true" 32 | :onhoverlost "eww -c . update showbuttons=false" 33 | (box :space-evenly false :spacing 3 :orientation "v" 34 | (button :class "logout" :tooltip "Logout" :onclick "killall $(wmctrl -m | grep Name | cut -d ' ' -f2)" "﫼") 35 | (revealer :transition "slidedown" 36 | :reveal showbuttons 37 | :duration "500ms" 38 | (box :orientation "v" 39 | (button :class "sleep" :tooltip "Sleep" :onclick "~/.local/bin/lock suspend &" "") 40 | (button :class "lock" :tooltip "Lock" :onclick "~/.local/bin/lock &" "") 41 | (button :class "reboot" :tooltip "Reboot" :onclick "systemctl reboot" "") 42 | (button :class "shutdown" :tooltip "Shutdown" :onclick "systemctl poweroff" "")))))) 43 | 44 | (defvar showbuttons false) 45 | 46 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 47 | 48 | (defwidget center [] 49 | (box :valign "center" 50 | (literal :content ws))) 51 | 52 | (deflisten ws "scripts/workspaces") 53 | 54 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 55 | 56 | (defwidget btm [] 57 | (box :orientation "v" 58 | :space-evenly false 59 | :valign "end" 60 | :spacing 10 61 | (metric :reveal showcpu 62 | :class "cpu" 63 | :value cpu 64 | :tooltip "${cpu}%" 65 | :onchange "" 66 | :icon "") 67 | (metric :reveal showram 68 | :class "ram" 69 | :value ram 70 | :tooltip "${ram}%" 71 | :onchange "" 72 | :icon "") 73 | (metric :reveal showvol 74 | :class "vol" 75 | :value vol 76 | :tooltip "${vol}%" 77 | :onchange "amixer -D pulse sset Master {}%" 78 | :icon volIcon) 79 | (metric :reveal showbright 80 | :class "bright" 81 | :value bright 82 | :tooltip "${bright}%" 83 | :onchange "" 84 | :icon "") 85 | (eventbox :onhover "scripts/cal open &" 86 | (button :class "time" :onclick "scripts/cal toggle &" time)))) 87 | 88 | (defwidget metric [reveal class value tooltip onchange icon] 89 | (eventbox :onhover "eww -c . update show${class}=true" 90 | :onhoverlost "eww -c . update show${class}=false" 91 | (box :space-evenly false :spacing 3 :orientation "v" 92 | (revealer :transition "slideup" 93 | :reveal reveal 94 | :duration "500ms" 95 | (scale :min 0 96 | :max 100 97 | :orientation "v" 98 | :flipped true 99 | :class class 100 | :value value 101 | :tooltip tooltip 102 | :onchange onchange)) 103 | (label :class "icon" :text icon)))) 104 | 105 | (defvar showcpu false) 106 | (defvar showram false) 107 | (defvar showmic false) 108 | (defvar showvol false) 109 | (defvar showbright false) 110 | 111 | (defpoll cpu :interval "10s" "scripts/getcpu") 112 | (defpoll ram :interval "10s" "scripts/getram") 113 | (defpoll mic :interval "10s" "scripts/getmic") 114 | (defpoll vol :interval "2s" "scripts/volume value") 115 | (defpoll bright :interval "2s" "scripts/getbright") 116 | (defpoll volIcon :interval "2s" "scripts/volume icon") 117 | (defpoll time :interval "1s" "date '+%H%n%M'") 118 | 119 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 120 | 121 | (defwindow profile 122 | :monitor 0 123 | :geometry (geometry 124 | :x "53px" 125 | :y "1%" 126 | :anchor "top left") 127 | :stacking "fg" 128 | :windowtype "dock" 129 | (profile)) 130 | 131 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 132 | 133 | (defwidget profile [] 134 | (box :class "profile" 135 | :space-evenly false 136 | :spacing 20 137 | (box :orientation "v" 138 | :space-evenly false 139 | (pfp) 140 | (launcher)) 141 | (box :class "line") 142 | (box :orientation "v" 143 | :space-evenly false 144 | (music) 145 | (player)))) 146 | 147 | (defwidget pfp [] 148 | (box :class "pfp" 149 | :valign "center" 150 | :style "background-image: url('${pfp}');")) 151 | 152 | (deflisten pfp "tail -F ~/.config/eww/pfp 2>/dev/null") 153 | 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 155 | 156 | (defwidget launcher [] 157 | (box :class "btn" :spacing 10 158 | (button :class "firefox" :onclick "firefox -P default-release & disown" "") 159 | (button :class "dashboard" :onclick "~/.local/bin/dashboard toggle" "舘") 160 | (button :class "discord" :onclick "discord & disown" "ﭮ"))) 161 | 162 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 163 | 164 | (defwidget music [] 165 | (box :orientation "h" :space-evenly false :spacing 20 166 | (box :class "art" :style "background-image: url('${cover}');" art) 167 | (box :orientation "v" :space-evenly true :class "info" 168 | (box :space-evenly false :class "title" 169 | (box :class "icon" "") 170 | (label :text ": ${title}" 171 | :class "text" 172 | :limit-width 20 173 | :halign "start")) 174 | (box :space-evenly false :class "artist" 175 | (box :class "icon" "") 176 | (label :text ": ${artist}" 177 | :class "text" 178 | :limit-width 20 179 | :halign "start")) 180 | (box :space-evenly false :class "album" 181 | (box :class "icon" "") 182 | (label :text ": ${album}" 183 | :class "text" 184 | :limit-width 20 185 | :halign "start"))))) 186 | 187 | (defwidget player [] 188 | (box :class "btn" :spacing 10 189 | (button :class "prev" :onclick "spt playback -p &" "玲") 190 | (button :class "toggle" :onclick "spt playback -t &" "懶") 191 | (button :class "next" :onclick "spt playback -n &" "怜"))) 192 | 193 | (defpoll cover :interval "5s" "scripts/getmusic art") 194 | (defpoll title :interval "5s" "scripts/getmusic title") 195 | (defpoll artist :interval "5s" "scripts/getmusic artist") 196 | (defpoll album :interval "5s" "scripts/getmusic album") 197 | (defpoll art :interval "5s" "scripts/getart") 198 | 199 | ;;;;;;;;;;;;;;;;;;;;;;;;;;; 200 | 201 | (defwidget cal [] 202 | (box :class "cal-out" 203 | (box :class "cal-in" 204 | (calendar :class "cal" 205 | :day calday 206 | :year calyr)))) 207 | 208 | (defwindow cal 209 | :geometry (geometry 210 | :x "53px" 211 | :y "-1%" 212 | :anchor "bottom left") 213 | (cal)) 214 | 215 | (defpoll calday :interval "24h" "date '+%d'") 216 | (defpoll calyr :interval "24h" "date '+%Y'") 217 | -------------------------------------------------------------------------------- /.config/eww/vbar/gruvbox.scss: -------------------------------------------------------------------------------- 1 | $background: #282828; 2 | $foreground: #dfbf8e; 3 | 4 | $black: #3c3836; 5 | $altblack: #45403d; 6 | $red: #ea6962; 7 | $green: #a9b665; 8 | $yellow: #d8a657; 9 | $blue: #7daea3; 10 | $magenta: #d3869b; 11 | $cyan: #89b482; 12 | -------------------------------------------------------------------------------- /.config/eww/vbar/mountain.scss: -------------------------------------------------------------------------------- 1 | $background: #0f0f0f; 2 | $foreground: #f0f0f0; 3 | 4 | $black: #262626; 5 | $altblack: #4c4c4c; 6 | $red: #ac8a8c; 7 | $green: #8aac8b; 8 | $yellow: #aca98a; 9 | $blue: #8f8aac; 10 | $magenta: #ac8aac; 11 | $cyan: #8aabac; 12 | -------------------------------------------------------------------------------- /.config/eww/vbar/paradise.scss: -------------------------------------------------------------------------------- 1 | $background: #151515; 2 | $foreground: #E8E3E3; 3 | 4 | $black: #2E2E2E; 5 | $altblack: #424242; 6 | $red: #B66467; 7 | $green: #8C977D; 8 | $yellow: #D9BC8C; 9 | $blue: #8DA3B9; 10 | $magenta: #A988B0; 11 | $cyan: #8AA6A2; 12 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/cal: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG_DIR="${HOME}/.config/eww/vbar/" 4 | EWW="eww -c ${CONFIG_DIR}" 5 | WIN="cal" 6 | 7 | function close { 8 | ${EWW} close ${WIN} 9 | } 10 | 11 | function open { 12 | ${EWW} open ${WIN} 13 | } 14 | 15 | function toggle { 16 | ${EWW} close ${WIN} || ${EWW} open ${WIN} 17 | } 18 | 19 | case "$1" in 20 | open) 21 | open;; 22 | close) 23 | close;; 24 | toggle) 25 | toggle;; 26 | esac 27 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/getart: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # this only works with spotifyd + spotify-tui 4 | # this script is long and confusing b/c spotifyd sucks 5 | 6 | tmp_dir="/tmp/eww" 7 | tmp_cover_path="${tmp_dir}/cover.png" 8 | fallback="${HOME}/.config/eww/assets/fallback.png" 9 | 10 | mkdir -p "${tmp_dir}" 11 | 12 | if ! spt playback --share-track &>/dev/null; then 13 | cp "${fallback}" "${tmp_cover_path}" 14 | exit 15 | fi 16 | 17 | base_url="https://open.spotify.com/oembed?url=spotify:" 18 | keyword="https://i.scdn.co/image/[a-zA-Z0-9./?=_%:-]*" 19 | 20 | song_link="$(spt playback --share-track)" 21 | song_link="${song_link##*.com/}" 22 | song_link="${song_link//[\/]/:}" 23 | 24 | artlink="$( 25 | curl -s "${base_url}${song_link}" | 26 | grep -Eo "${keyword}" 27 | )" 28 | 29 | curl -s "${artlink}" > "${tmp_cover_path}"; 30 | convert "${tmp_cover_path}" -resize 150x150 "${tmp_cover_path}" 31 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/getbright: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | brightness=$(xrandr --verbose --current | grep ^"DP-1" -A5 | tail -n1 | cut -d " " -f2) 4 | 5 | echo "${brightness} * 100" | bc | cut -d "." -f1 6 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/getcpu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | printf "%.0f\n" $(top -b -n1 | grep ^%Cpu | awk '{print 100-$8}') 4 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/getmusic: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function status { 4 | if spt playback --share-track &>/dev/null; then 5 | return 0 6 | else 7 | return 1 8 | fi 9 | } 10 | 11 | function art { 12 | echo "/tmp/eww/cover.png" 13 | } 14 | 15 | function title { 16 | if status; then 17 | spt playback --format '%t' 18 | else 19 | echo "N/A" 20 | fi 21 | } 22 | 23 | function artist { 24 | if status; then 25 | spt playback --format '%a' 26 | else 27 | echo "N/A" 28 | fi 29 | } 30 | 31 | function album { 32 | if status; then 33 | spt playback --format '%b' 34 | else 35 | echo "N/A" 36 | fi 37 | } 38 | 39 | case "$1" in 40 | art) 41 | art;; 42 | title) 43 | title;; 44 | artist) 45 | artist;; 46 | album) 47 | album;; 48 | esac 49 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/getram: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}') 4 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/profile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG_DIR="${HOME}/.config/eww/vbar/" 4 | EWW="eww -c ${CONFIG_DIR}" 5 | WIN="profile" 6 | 7 | function close { 8 | ${EWW} close ${WIN} 9 | } 10 | 11 | function open { 12 | ${EWW} open ${WIN} 13 | } 14 | 15 | function toggle { 16 | ${EWW} close ${WIN} || ${EWW} open ${WIN} 17 | } 18 | 19 | case "$1" in 20 | open) 21 | open;; 22 | close) 23 | close;; 24 | toggle) 25 | toggle;; 26 | esac 27 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/volume: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | volume=$(amixer -D pulse sget Master | grep 'Left:' | awk -F '[][]' '{ print $2 }' | tr -d '%' | head -1) 4 | 5 | function status { 6 | if pacmd list-sinks | grep muted | grep yes -q; then 7 | return 0 8 | else 9 | return 1 10 | fi 11 | } 12 | 13 | function value { 14 | if status; then 15 | exit 16 | else 17 | echo "${volume}" 18 | fi 19 | } 20 | 21 | function icon { 22 | if [ "${volume}" = 0 ] || status; then 23 | echo "婢" 24 | else 25 | echo "墳" 26 | fi 27 | } 28 | 29 | case "$1" in 30 | icon) 31 | icon;; 32 | value) 33 | value;; 34 | esac 35 | -------------------------------------------------------------------------------- /.config/eww/vbar/scripts/workspaces: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | function all_ws { 4 | wmctrl -d | 5 | cut -d " " -f1 6 | } 7 | 8 | function active_ws { 9 | wmctrl -d | 10 | grep "*" | 11 | cut -d " " -f1 12 | } 13 | 14 | function occupied_ws { 15 | wmctrl -l | 16 | cut -d " " -f3 | 17 | sort -u 18 | } 19 | 20 | box_attrs=':orientation "v" :class "workspaces" :space-evenly false :spacing 3' 21 | function eww_buttons { 22 | button="" 23 | for ws in $(all_ws); do 24 | icon="" 25 | class="empty" 26 | if [ "${ws}" = "$(active_ws)" ]; then 27 | icon="" 28 | class="active" 29 | else 30 | for workspace in $(occupied_ws); do 31 | if [ "${ws}" = "${workspace}" ]; then 32 | icon="" 33 | class="occupied" 34 | break 35 | fi 36 | done 37 | fi 38 | button+="(button :class \"${class}\" :onclick \"wmctrl -s ${ws}\" \"${icon}\")" 39 | done 40 | echo "(box ${box_attrs} ${button})" 41 | } 42 | 43 | xprop -spy -root _NET_CURRENT_DESKTOP | while read; do 44 | eww_buttons 45 | done 46 | -------------------------------------------------------------------------------- /.config/lf/cleaner: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | >"${UEBERZUG_FIFO}" declare -A -p cmd=( \ 4 | [action]=remove [identifier]="$UEBERZUG_IDEN" ) 5 | -------------------------------------------------------------------------------- /.config/lf/lfrc: -------------------------------------------------------------------------------- 1 | # Settings 2 | set previewer ~/.config/lf/preview 3 | set cleaner ~/.config/lf/cleaner 4 | set drawbox true 5 | set icons true 6 | set info "size" 7 | # set hidden 8 | 9 | # Functions 10 | cmd open ${{ 11 | case $(file -b --mime-type "$f") in 12 | video/* | image/gif) 13 | mpv "$f" 14 | ;; 15 | image/*) 16 | sxiv "$f" 17 | ;; 18 | application/pdf) 19 | zathura "$f" 20 | ;; 21 | *) 22 | $EDITOR "$f" 23 | ;; 24 | esac 25 | }} 26 | 27 | cmd mkdir ${{ 28 | mkdir "$1" 29 | }} 30 | 31 | cmd touch ${{ 32 | touch "$1" 33 | }} 34 | 35 | cmd edit ${{ 36 | $EDITOR "$1" 37 | }} 38 | 39 | cmd mv ${{ 40 | mv "$f" "$1" 41 | }} 42 | 43 | cmd rn ${{ 44 | EXT=$(basename "$f" | cut -d . -f2) 45 | mv "$f" "${1}.${EXT}" 46 | }} 47 | 48 | cmd chmod ${{ 49 | chmod +x "$f" 50 | lf -remote 'send reload' 51 | }} 52 | 53 | cmd unarchive ${{ 54 | case "$f" in 55 | *.zip) 56 | unzip "$f" 57 | rm "$f" 58 | ;; 59 | *.tar.gz) 60 | tar -xzvf "$f" 61 | rm "$f" 62 | ;; 63 | *.tar.bz2) 64 | tar -xjvf "$f" 65 | rm "$f" 66 | ;; 67 | *.tar) 68 | rm "$f" 69 | tar -xvf "$f" 70 | ;; 71 | *) echo "Unsupported format";; 72 | esac 73 | }} 74 | 75 | cmd bulkrename ${{ 76 | ls -a | tail -n +3 | vimv --stdin -q 77 | lf -remote "send $id load" 78 | }} 79 | 80 | cmd zoxide %{{ 81 | lf -remote "send $id cd '$(zoxide query $@)'" 82 | }} 83 | 84 | cmd preview ${{ 85 | case $(file -b --mime-type "$f") in 86 | image/*) 87 | >"${UEBERZUG_FIFO}" declare -A -p cmd=( \ 88 | [action]=add [identifier]="$UEBERZUG_IDEN" \ 89 | [x]="0" [y]="0" [width]=$(tput cols) [height]=$(tput lines) \ 90 | [scaler]=fit_contain [scaling_position_x]=0.5 [scaling_position_y]=0.5 \ 91 | [path]="$f" ) 92 | read -s -n1 93 | ;; 94 | text/*) 95 | gnat "$f" | less -R 96 | ;; 97 | esac 98 | }} 99 | 100 | cmd fzf_search ${{ 101 | file=$(ls -a -F | tail -n +3 | sed 's/*//g;s/@//g' | fzfp --header='Jump to location') 102 | lf -remote "send $id select \"$file\"" 103 | }} 104 | 105 | # Unbind Defaults 106 | map m 107 | map r 108 | 109 | # Remap Defaults 110 | map C clear 111 | map c cut 112 | map d delete 113 | map toggle 114 | 115 | # Function Mappings 116 | map F fzf_search 117 | map t push :touch 118 | map md push :mkdir 119 | map mv push :mv 120 | map rn push :rn 121 | map z push :zoxide 122 | map x $chmod +x "$f" && lf -remote "send $id reload" 123 | map X $chmod -x "$f" && lf -remote "send $id reload" 124 | map U unarchive 125 | map o open "$f" 126 | map br bulkrename 127 | 128 | # Terminal Programs 129 | map i preview 130 | map mi !mediainfo "$f" 131 | map W &wallpaper set "$f" 132 | map R &wallpaper random; lf -remote "send $id select '$(wallpaper get)'" 133 | map P &wal -i "$f" -n -q; wallpaper set "$f" 134 | 135 | # Built In Stuff 136 | map . set hidden! 137 | map K page-up 138 | map J page-down 139 | 140 | # Dir Mappings 141 | map g/ cd / 142 | map ~ cd ~ 143 | map gD cd ~/Desktop/ 144 | map gd cd ~/Downloads/ 145 | map gw cd ~/Wallpapers/ 146 | map ga cd ~/Wallpapers/alphacoders/ 147 | map gW %lf -remote "send $id select '$(wallpaper get)'" 148 | map gs cd ~/Pictures/Screenshots/ 149 | map gr cd ~/Videos/Recordings/ 150 | map gc cd ~/.config/ 151 | map gb cd ~/.local/bin/ 152 | map gv cd /run/media/is0n/ 153 | 154 | # vim:ft=sh 155 | -------------------------------------------------------------------------------- /.config/lf/preview: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | TMP_FILE="$HOME/.cache/lf-thumbcache.png" 4 | 5 | w=$(( $2 - 1 )) 6 | h="$3" 7 | x="$4" 8 | y=$(( $5 + 1 )) 9 | 10 | function draw_image { 11 | >"${UEBERZUG_FIFO}" declare -A -p cmd=( \ 12 | [action]=add [identifier]="$UEBERZUG_IDEN" \ 13 | [x]="$x" [y]="$y" [width]="$w" [height]="$h" \ 14 | [scaler]=fit_contain [scaling_position_x]=0.5 [scaling_position_y]=0.5 \ 15 | [path]="$1" ) 16 | exit 1 17 | } 18 | 19 | case $(file -b --mime-type "$1") in 20 | image/svg+xml) 21 | echo "Size: `exiftool "$1" | grep '^Image Size' | awk '{print $4}'`" 22 | rsvg-convert -w 1024 -h 1024 "$1" -o "${TMP_FILE}" 23 | draw_image "${TMP_FILE}" 24 | ;; 25 | image/*) 26 | echo "Size: `exiftool "$1" | grep '^Image Size' | awk '{print $4}'`" 27 | draw_image "$1" 28 | ;; 29 | application/pdf) 30 | y="$5" 31 | pdftoppm -png -f 1 -singlefile "$1" "${TMP_FILE%.png}" 32 | draw_image "${TMP_FILE}" 33 | ;; 34 | video/*) 35 | echo "Duration: `exiftool "$1" | grep '^Duration' | awk '{print $3}'`" 36 | ffmpegthumbnailer -i "$1" -o "${TMP_FILE}" -s 0 37 | draw_image "${TMP_FILE}" 38 | ;; 39 | application/x-mach-binary | application/zip | inode/symlink) 40 | exa -lha --color=always "$1" 41 | ;; 42 | *) 43 | gnat "$1" 44 | ;; 45 | esac 46 | 47 | rm -f "${TMP_FILE}" 48 | -------------------------------------------------------------------------------- /.config/lf/startlf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | declare -r -x UEBERZUG_FIFO="$(mktemp --dry-run --suffix "lf$$-ueberzug")" 4 | declare -r -x UEBERZUG_IDEN="${UEBERZUG_FIFO#*.}" 5 | declare -r -x PREVIEW_TMP="$(mktemp -d --suffix "lf-$$-ueberzug")" 6 | 7 | function start_ueberzug { 8 | mkfifo "${UEBERZUG_FIFO}" 9 | <"${UEBERZUG_FIFO}" ueberzug layer --parser bash --silent & 10 | 3> "${UEBERZUG_FIFO}" exec 11 | } 12 | 13 | function remove_temp { 14 | rm "${UEBERZUG_FIFO}" 15 | rm -r "${PREVIEW_TMP}" 16 | } 17 | 18 | start_ueberzug 19 | lf "$@" 20 | remove_temp 21 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- Plugins 2 | require("user.packer") 3 | 4 | -- User Settings 5 | require("user.settings") 6 | require("user.mappings") 7 | require("user.autocommands") 8 | 9 | -- Plugin Settings 10 | require("user.tui") 11 | require("user.jaq") 12 | require("user.cmp") 13 | require("user.lsp") 14 | require("user.mini") 15 | require("user.alpha") 16 | require("user.colorizer") 17 | require("user.telescope") 18 | require("user.treeshitter") 19 | require("user.autopairs") 20 | 21 | -- Colors 22 | require("user.base16") 23 | require("user.colors") 24 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/alpha.lua: -------------------------------------------------------------------------------- 1 | local status_ok, dashboard = pcall(require, "alpha.themes.dashboard") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local headers = { 7 | { 8 | -- Saitama • Ok 9 | " ", 10 | " ⢀⣀⡤⡤⣴⣤⣦⣄⣀ ⢀⣴⣿⣿⣿⣿⣿⣷⣶⡄ ", 11 | " ⢠⠶⡷⢷⢾⣿⣿⣿⣿⣿⣿⣿⣶⡄ ⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦ ", 12 | " ⡠⢮⢯⠿⠽⡯⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀ ⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆ ", 13 | " ⣰⣿⣿⣿⣿⣿⢽⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀ ⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ", 14 | " ⢠⣿⣿⣿⣿⣯⢯⢽⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧ ⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄ ", 15 | " ⣞⣟⣷⣻⣞⣟⣿⣿⡽⠿⠿⠿⠿⠿⣿⣿⢿⠿⠿⠿⢿⡄ ⣾⣿⣿⣿⣿⣿⢿⣿⣿⣿⡿⣿⣿⣿⣿⡇ ", 16 | " ⣳⣒⣞⣲⣺⣺⣾⡷⣛⣛⣛⣛⡻⢿⣿⣿⢗⣛⢟⣛⢿⡇ ⣿⣿⣿⣿⢫⣴⣶⢸⠸⢋⣴⣿⣿⣿⣿⡇ ", 17 | " ⢀⣬⡹⢵⠿⡾⣞⣟⣧⡻⠿⡷⠾⣣⣿⣿⢱⡹⢿⠾⣛⣼⡏ ⣿⣿⣿⣧⠹⠟⣋⣾⢰⣦⡝⣿⣿⣿⣿⡇ ", 18 | " ⡏⣍⢻⣼⡽⢭⠯⢿⢿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⡏ ⠐⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁ ", 19 | " ⢯⡭⠌⣭⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣿⣿⣿⣿⣿⡗ ⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ", 20 | " ⠹⣇⠻⣹⣟⣻⣛⣻⣻⣾⣷⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⡓ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ ", 21 | " ⠘⠳⠒⢷⣷⣻⣞⣿⣺⣿⣿⣿⣿⣿⠻⢻⣿⣿⣿⣿⣿⠨ ⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ", 22 | " ⠘⣵⡵⠷⠽⠿⡷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠁ ⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃ ", 23 | " ⠊⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠁ ⠈⠛⠿⣿⣿⣿⣿⣿⠿⠋ ", 24 | " ⠁⠙⡻⣻⣿⣻⣿⣿⣿⣿⣿⢿⢛⠁ ⠈⠉⠁ ", 25 | " ⢸⠿⡲⢍⢝⣛⣛⣛⣹⣪⡁ ", 26 | " ⡴⢰⣷⢿⣾⣾⣿⣿⣿⣿⣿⡎⣷⣆⢲⡆⢀ ", 27 | " ⣐⣒⢂⢳⡘⣺⣿⣿⣿⣿⣿⣿⣿⣿⣥⠙⣿⣧⠻⠜⠷⢹⣿⣄ ", 28 | " ⢀⣤⣄⣍⠭⠥⠙⠈⠸⣽⢠⣍⣛⠿⠿⡿⡿⡿⠟⣋⣾⣎⢻⣧⠄⡀⠄⣡⣾⡿⢃ ", 29 | " ⢐⣛⠛⢛⣛⣓⡀⠄⡀⣂⡿⠸⣿⣿⣿⣿⠂⡪⡄⡜⣿⣿⠿⣡⣭⣓⣒⣓⣛⣥⣾⡇ ", 30 | " ⣔⣒⣺⣒⣦⣝⣛⣭⣭⣵⣲⣷⣬⣛⣛⠿⠆⣿⣾⣧⢫⢱⣾⣿⣿⣿⣿⣿⣿⡿⣿⣿ ", 31 | " ⢠⡃⣲⣒⡗⣗⣷⣿⡧⢒⢢⣳⣺⣾⣾⣿⣿⣷⢈⠿⠶⢛⣴⢸⣿⣿⣿⣿⣿⣿⣿⢱⢻⣿⡄ ", 32 | " ⢀⣞⢐⣟⣻⣻⣟⣿⣿⣿⢀⠞⣾⣾⣾⣿⣿⣿⣿⢸⣿⠨⢸⣿⢸⣿⣿⣿⣿⣿⣿⡏⢢⣿⣿⡇ ", 33 | " ⣼⣽⢸⣭⣭⣭⣭⣿⣽⣟⡨⣼⣿⣿⣿⣿⣿⣿⣿⢸⣿⠨⢸⣿⢸⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⡀ ", 34 | " ", 35 | }, 36 | { 37 | -- JJBA • Kono Dio Da! 38 | " ", 39 | " ⢰⣼⣿⣿⡟ ⡀⠴⠊⠁ ⠈⠑⢦⡀⠹⣿⣷⡄ ⡠ ", 40 | " ⢈⣿⣿⣿⣴⠞⠁ ⠙⢦⣿⣿⣿⣻⠥ ", 41 | " ⢸⣿⣿⠟⠁ ⠈⠻⣿⣿⡷⡄ ", 42 | " ⡀ ⢀⣼⣿⣿ ⠈⢿⣧⠘ ", 43 | " ⠙⢿⣿⣿⣿⠇ ⣤⣄⣀ ⠐⣼⣿ ", 44 | " ⢀⡿⣻⣿⡖ ⣿⣿⣿⣎⡟⠂ ⠠⢄⣀⣤⡴ ⢻⡿ ", 45 | " ⠘ ⣿⣿⣇ ⢀⣀⠙⠛⣿⣿⣡⣶⡶⣸⣯⣤⣪⣿⣿⣷⣶⡀ ⡿⠁ ", 46 | " ⠈⣻⡻ ⠘⡁⡬⢠⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ ⢠⠵⠖⠊ ", 47 | " ⠒⠚⠋⡇ ⢻⣯⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇ ⣦⠿⣆ ", 48 | " ⠃ ⠸⣿⣿⣿⡋ ⢀⣽⣿⣿⣿⣿⣿⢿⣿⣿ ⢿⡀⠈⠃ ", 49 | " ⢹⣿⣿⣿⣷⣾⣿⣿⣿⣿⡿⠁⣿⣿⡿ ⠈⠧⡀ ", 50 | " このディオだ / Kono Dio Da! ⠹⣿⣿⣿⡛⠋⠉⢀⣀⣀⢰⣿⣿⡇ ⠈⢲⣓⠒⠂ ", 51 | " ⠈⢿⣿⣿⣴⣾⣿⣻⣷⣾⣿⡿ ⠙⢷⣄ ", 52 | " ⢀⡀ ⠙⢿⣿⣿⠿⠿⠟⣿⣿⠇ ⠈⢱⡙⠷⡀ ", 53 | " ⢰⣾⣿⣿⡿ ⠈⢿⣿⣦⣶⣿⡿⠛ ⠸⣧ ", 54 | " ⣠⣼⣿⡿⠋ ⠈⠙⠛⠛⠁ ⣿ ", 55 | " ⢀⣾⣿⣿⠟ ⣄ ⠿ ", 56 | " ⣀⣤⣾⣿⠟⠁ ⠘⣶⡀ ", 57 | " ⠰⣿⣿⡿⠋ ⢀⣿⡟⣠ ", 58 | " ⣿⣿⠏ ⢀⣀⣠⣾⣿⣧⣿⣶⡄ ", 59 | " ⠈⠁ ⢀⣠⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢱⣄ ", 60 | " ⢀⣠⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣯⣺⣯⣿⣾⣿⣷⣄ ", 61 | " ⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣯⣾⣿⣿⣿⣿⣿⣿⣿⣷⡀ ", 62 | " ", 63 | }, 64 | { 65 | -- Giga Chad 66 | "⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠛⠋⠉⠈⠉⠉⠉⠉⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿", 67 | "⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿", 68 | "⣿⣿⣿⣿⡏⣀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿", 69 | "⣿⣿⣿⢏⣴⣿⣷⠀⠀⠀⠀⠀⢾⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿", 70 | "⣿⣿⣟⣾⣿⡟⠁⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣷⢢⠀⠀⠀⠀⠀⠀⠀⢸⣿", 71 | "⣿⣿⣿⣿⣟⠀⡴⠄⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⣿", 72 | "⣿⣿⣿⠟⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠶⢴⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⣿", 73 | "⣿⣁⡀⠀⠀⢰⢠⣦⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⡄⠀⣴⣶⣿⡄⣿", 74 | "⣿⡋⠀⠀⠀⠎⢸⣿⡆⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⠗⢘⣿⣟⠛⠿⣼", 75 | "⣿⣿⠋⢀⡌⢰⣿⡿⢿⡀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⡇⠀⢸⣿⣿⣧⢀⣼", 76 | "⣿⣿⣷⢻⠄⠘⠛⠋⠛⠃⠀⠀⠀⠀⠀⢿⣧⠈⠉⠙⠛⠋⠀⠀⠀⣿⣿⣿⣿⣿", 77 | "⣿⣿⣧⠀⠈⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠟⠀⠀⠀⠀⢀⢃⠀⠀⢸⣿⣿⣿⣿", 78 | "⣿⣿⡿⠀⠴⢗⣠⣤⣴⡶⠶⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡸⠀⣿⣿⣿⣿", 79 | "⣿⣿⣿⡀⢠⣾⣿⠏⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠉⠀⣿⣿⣿⣿", 80 | "⣿⣿⣿⣧⠈⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿", 81 | "⣿⣿⣿⣿⡄⠈⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿", 82 | "⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿", 83 | "⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿", 84 | "⣿⣿⣿⣿⣿⣦⣄⣀⣀⣀⣀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿", 85 | "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿", 86 | "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠙⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿", 87 | "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠁⠀⠀⠹⣿⠃⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿", 88 | "⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⢐⣿⣿⣿⣿⣿⣿⣿⣿⣿", 89 | "⣿⣿⣿⣿⠿⠛⠉⠉⠁⠀⢻⣿⡇⠀⠀⠀⠀⠀⠀⢀⠈⣿⣿⡿⠉⠛⠛⠛⠉⠉", 90 | "⣿⡿⠋⠁⠀⠀⢀⣀⣠⡴⣸⣿⣇⡄⠀⠀⠀⠀⢀⡿⠄⠙⠛⠀⣀⣠⣤⣤⠄⠄", 91 | }, 92 | { 93 | -- Menacing 94 | " ⣀⡀ ", 95 | " ⣴⣿⣿⠿⣫⣥⣄ ", 96 | " ⢀ ⠾⢿⢟⣵⣾⣿⡿⠃ ", 97 | " ⣰⡿⣀⣤⣴⣾⣿⡇⠙⠛⠁ ", 98 | " ⣠⣾⣿⣿⣿⣿⣿⣿⣿⠁ ", 99 | " ⣴⣿⣿⠿⠛⠉⢩⣿⣿⡇ ⣀⣀⡀ ", 100 | " ⠈⠛⠉ ⢸⣿⣿⡇ ⢀⣼⡿⣫⣾⠆ ", 101 | " ⢀⣶⣶⣶⣶⣶⣶⣿⣿⣿⠇ ⣠⣎⣠⣴⣶⠎⠛⠁ ", 102 | " ⣾⣿⣿⣿⣿⠿⠿⠟⠛⠋ ⢀⣼⣿⠿⠛⣿⡟ ", 103 | " ⠛⠉⠉ ⠘⠉ ⢸⣿⡇ ", 104 | " ⣼⣿⣿⣿⡿⠿⠃ ", 105 | " ⠋⠉ ", 106 | }, 107 | { 108 | -- Don't ask 109 | "⠄⠄⠄⢰⣧⣼⣯⠄⣸⣠⣶⣶⣦⣾⠄⠄⠄⠄⡀⠄⢀⣿⣿⠄⠄⠄⢸⡇⠄⠄", 110 | "⠄⠄⠄⣾⣿⠿⠿⠶⠿⢿⣿⣿⣿⣿⣦⣤⣄⢀⡅⢠⣾⣛⡉⠄⠄⠄⠸⢀⣿⠄", 111 | "⠄⠄⢀⡋⣡⣴⣶⣶⡀⠄⠄⠙⢿⣿⣿⣿⣿⣿⣴⣿⣿⣿⢃⣤⣄⣀⣥⣿⣿⠄", 112 | "⠄⠄⢸⣇⠻⣿⣿⣿⣧⣀⢀⣠⡌⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⣿⣿⣿⠄", 113 | "⠄⢀⢸⣿⣷⣤⣤⣤⣬⣙⣛⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⡍⠄⠄⢀⣤⣄⠉⠋⣰", 114 | "⠄⣼⣖⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⢇⣿⣿⡷⠶⠶⢿⣿⣿⠇⢀⣤", 115 | "⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣷⣶⣥⣴⣿⡗", 116 | "⢀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄", 117 | "⢸⣿⣦⣌⣛⣻⣿⣿⣧⠙⠛⠛⡭⠅⠒⠦⠭⣭⡻⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠄", 118 | "⠘⣿⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠄⠄⠄⠄⠹⠈⢋⣽⣿⣿⣿⣿⣵⣾⠃⠄", 119 | "⠄⠘⣿⣿⣿⣿⣿⣿⣿⣿⠄⣴⣿⣶⣄⠄⣴⣶⠄⢀⣾⣿⣿⣿⣿⣿⣿⠃⠄⠄", 120 | "⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿⠄⣿⣿⡀⣾⣿⣿⣿⣿⣛⠛⠁⠄⠄⠄", 121 | "⠄⠄⠄⠄⠈⠛⢿⣿⣿⣿⠁⠞⢿⣿⣿⡄⢿⣿⡇⣸⣿⣿⠿⠛⠁⠄⠄⠄⠄⠄", 122 | "⠄⠄⠄⠄⠄⠄⠄⠉⠻⣿⣿⣾⣦⡙⠻⣷⣾⣿⠃⠿⠋⠁⠄⠄⠄⠄⠄⢀⣠⣴", 123 | "⣿⣿⣿⣶⣶⣮⣥⣒⠲⢮⣝⡿⣿⣿⡆⣿⡿⠃⠄⠄⠄⠄⠄⠄⠄⣠⣴⣿⣿⣿", 124 | }, 125 | { 126 | -- UwU 127 | "⡆⣐⢕⢕⢕⢕⢕⢕⢕⢕⠅⢗⢕⢕⢕⢕⢕⢕⢕⠕⠕⢕⢕⢕⢕⢕⢕⢕⢕⢕", 128 | "⢐⢕⢕⢕⢕⢕⣕⢕⢕⠕⠁⢕⢕⢕⢕⢕⢕⢕⢕⠅⡄⢕⢕⢕⢕⢕⢕⢕⢕⢕", 129 | "⢕⢕⢕⢕⢕⠅⢗⢕⠕⣠⠄⣗⢕⢕⠕⢕⢕⢕⠕⢠⣿⠐⢕⢕⢕⠑⢕⢕⠵⢕", 130 | "⢕⢕⢕⢕⠁⢜⠕⢁⣴⣿⡇⢓⢕⢵⢐⢕⢕⠕⢁⣾⢿⣧⠑⢕⢕⠄⢑⢕⠅⢕", 131 | "⢕⢕⠵⢁⠔⢁⣤⣤⣶⣶⣶⡐⣕⢽⠐⢕⠕⣡⣾⣶⣶⣶⣤⡁⢓⢕⠄⢑⢅⢑", 132 | "⠍⣧⠄⣶⣾⣿⣿⣿⣿⣿⣿⣷⣔⢕⢄⢡⣾⣿⣿⣿⣿⣿⣿⣿⣦⡑⢕⢤⠱⢐", 133 | "⢠⢕⠅⣾⣿⠋⢿⣿⣿⣿⠉⣿⣿⣷⣦⣶⣽⣿⣿⠈⣿⣿⣿⣿⠏⢹⣷⣷⡅⢐", 134 | "⣔⢕⢥⢻⣿⡀⠈⠛⠛⠁⢠⣿⣿⣿⣿⣿⣿⣿⣿⡀⠈⠛⠛⠁⠄⣼⣿⣿⡇⢔", 135 | "⢕⢕⢽⢸⢟⢟⢖⢖⢤⣶⡟⢻⣿⡿⠻⣿⣿⡟⢀⣿⣦⢤⢤⢔⢞⢿⢿⣿⠁⢕", 136 | "⢕⢕⠅⣐⢕⢕⢕⢕⢕⣿⣿⡄⠛⢀⣦⠈⠛⢁⣼⣿⢗⢕⢕⢕⢕⢕⢕⡏⣘⢕", 137 | "⢕⢕⠅⢓⣕⣕⣕⣕⣵⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣕⢕⢕⢕⢕⡵⢀⢕⢕", 138 | "⢑⢕⠃⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⢕⢕⢕", 139 | "⣆⢕⠄⢱⣄⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢁⢕⢕⠕⢁", 140 | "⣿⣦⡀⣿⣿⣷⣶⣬⣍⣛⣛⣛⡛⠿⠿⠿⠛⠛⢛⣛⣉⣭⣤⣂⢜⠕⢑⣡⣴⣿", 141 | }, 142 | { 143 | -- JJBA • Taste of a Liar 144 | " ⠻⣷⡀ ⢀⣼⣿⠏ ⠙⢧ ⠙⠿⢿⣿⣿⡿⠛⠁ ⣀⡀ ⢼⣾⠟⠁ ", 145 | "⠙⠻⢷⣶⣾⣿⠿⠃ ⣀⣴⣿⣛⡻⣄ ⠠⠤⠷⠷⠁ ", 146 | " ⣼⣆⡀ ⡿⠟⠋⠙⡲⣽⣿⣷⣀⡀⠐ ⢀ ", 147 | " ⣦⣜ ⠻⣿⣿⠶⠶⠖ ⠉ ⣠⣀⡬⣻⣿⣅⠏⣀⢤⠺⣿⣧ ", 148 | " ⠘⢇⠑ ⢀ ⠁⠂⠐ ⠈⠫⠝⠛⣳⣮⣷⣿⣾⣸⢷⣿⣯ ⠘⢷⣶⣦⡀ ", 149 | " ⣆⠐ ⠁ ⣰⣶⣷⡿⡋⠁⠂⣀⠉⠽⣿⣿⣿⣿⣗⣿⣿⡿ ⣤⡀⠠⣷⣄⡀ ⠈⠉⠁ ", 150 | " ⠈⠂⣀ ⢀⣠⣶⣖ ⠸⢿⣿⣿⣧ ⠤⠂⠋⣩⣷⠹⡿⣿⣿⣿⣿⣿⡁ ⣼⣿⣿⣶⣤⣌⡀ ", 151 | " ⡐⣄⣠⣾⣿⣿⡀ ⠆⠃⡄⣄⡀⣐⣷⡄⠠ ⢠⢈⡉⡠⣤⣖⣾⡏⢤⣤⣬⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿ ", 152 | " ⠡⣯⣍⢉⢉⠙⢋⠁ ⣿⣿⣿⣿⡋⣿⣷⣬⣦⣶⣶⣰⣶⣿⣿⣿⣿⣿⠁ ⠙⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋ ", 153 | " ⣴⢻⣿⣿⣿⣾⣷⣆ ⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⣤⣶⣬⡕⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁ ", 154 | " ⢿⣿⣿⣿⣿⣿⣿⣿⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢳⡿⠛⠉⠉⠛⠈⣿⣿⣿⣿⣿⣿⣿⠟⠁ ", 155 | " ⠸⣧⣾⣿⣿⣿⣿⠟⠓⢈⡋⡟⣽⣛⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⡀ ⣾⣿⣿⣿⣿⡿⠃ ", 156 | " ⢻⣸⣿⣿⣿⡇ ⣠⡤⠐⢠⡈⡡⡾⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡆⣿⣇⣤⣾⣿⣿⣿⠟⠁ ", 157 | " ⠣⢟⣿⣿⣧⣲⣿⣿⠐⠃⢨⠞⠃⠸⣾⣝⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢺⡅⠉⣡⣼⠟⠁ ", 158 | " ⠉⢞⣿⣿⣿⣿⣿⣠⠳⣶⡾⠿⠿⠧⠬⠭⣛⠿⣿⣿⣿⣿⣿⣿⣿⡿⠞⠑⣠⣾⣅⡀ ", 159 | " ⠈⢚⣿⣿⣿⣿⡧⣶⣾⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣆ ⢿⣿⣿⣿⣶⣤⣀ ", 160 | " ⢰⡻⣿⣿⣿⣇⠩⠿⠙⠛⠛⠛⠛⢋⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠊⢛⣻⡛⠛⠛⠛⠗⣕⡐ ⢀⣠⢎", 161 | " ⢸⡇⡝⣿⣿⣿⣗⣀ ⢶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁ ⣽⣿⣿⡏⢐ ⣿⣧ ⢀⣴⡿⣷⣿", 162 | " ⠸⡇⣿⢘⢿⣿⣿⣶⣯⣤⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁ ⣤⣿⣿⣿⠇⠈⢐ ⢃⠻⣆ ⣀⣴⣿⢯⣾⣿⣿", 163 | " ⡇⣿⢸⣯⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⠿⠛⠁⠠⡆ ⢐⢹⠿⠋⣁⡀⠠⢐⣦ ⢻⣖ ⣠⣾⣿⢟⡵⢿⣿⣿⣿", 164 | " ⡇⣟⡴⠁ ⠉⠛⠿⠿⠿⠿⠿⠟⠛⠉ ⢠⣰⡼⠟⡫⣪⣼⣿ ⣿⣄⡢ ⣀⣴⣿⣿⢿⣿⠃ ⣸⣿⣿⡿", 165 | " ⠉⢸⡇ ⢠ ⢀⣤⣶⢿⢿⠫⣱⣽⣾⣿⡏⣿⡀ ⢸⡇⣶⣦⡀ ⢀⣤⣾⡿⢟⣫⣷⡿⠁⣠⣾⣿⣿⡿⠁", 166 | " ⠘⣧ ⢀ ⣠⣤⡀ ⡰⠙⢛⣱⣼⣶⣿⣿⣿⣿⣿⣷⣓⣴ ⠈⡇⠟⠛⠴⠐⠁⠲⠂ ⠺⡛⢯⣵⣾⣿⣿⡟⣠⣾⣿⣿⣿⣿⠁⢠", 167 | }, 168 | { 169 | -- JJBA • Noriaki Kakyoin 170 | " ⢠ ⡀ ⢀⣠ ", 171 | " ⢀⣤⣶⠎ ⣼⠃ ⣠⣴⣾⣿⡏ ", 172 | " ⠸⢀⣿⠋⠁ ⠸⠷⡆⢠ ⣠⣾⣿⠿⣿⣿⣇⢀⡆ ⢀ ⠠ ", 173 | " ⢀⣴⡄⠁⢀⣀⣤⠴⢾⣿⣼⣶⡟⠋⠛⣿⣿⣿⣿⣸⣧⣼⡀⡇ ⢀ ⠠⡀ ", 174 | " ⢰⡿⢿⠁⠺⠿⠋ ⠈⠙⠻⢿⣾⠿⣿⣿⣿⣿⣿⣿⣿⣷⡁⡆⠸⡀ ⢰⡆⠠⡀ ⠡⣄ ⠑⢦", 175 | " ⠰ ⡠ ⠁⠈ ⠉⠙⠛⠿⠿⠿⣿⣿⣿⣧⣿⡄⢧ ⢸⣿⡄⢨⣄ ⠈⠳⣄ ", 176 | " ⢀ ⢈ ⠠ ⠙⢶⣴⣶⣤⣤⡄ ⢀⡀⠠⠔⡲⢦⣄⣀⣀ ⣀⣤⣾⣴⣎⠆ ⢿⣿⣆⠹⣧⡀ ⠑⠢⣀", 177 | " ⣀⠉ ⠸⡿ ⢀⣾⣿⣿⣿⣛⡛⠘⣶⣯⠭⣶⣶⣤⣍⡙⠛⠿⠟⣿⣷⣤⣀⣉⠻⣿⣿⣿⣿⣯⡀⠈⢿⣿⣷⡝⣿⣦⡀⠑⣆ ⠈", 178 | "⠰ ⣠⠝⠁ ⢀⣿⣿⣿⣿⣿⣿⣿⣣⣌⠙⠿⣾⣝⢿⣿⣿⣶⣤⣶⣶⣤⣌⡻⠿⣿⣿⣿⣿⣿⣿⣿⣄ ⢙⠿⡿⣿⣯⣿⣶⣾⡂ ", 179 | " ⠠⠘⠁ ⢀⣮⣾⣿⣿⣿⣿⣿⣿⣿⣷⣻⠂ ⢀⡙⠻⠿⠿⠿⠿⢿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿ ⣞⣤⣾⣿⠿⠋⠉⢹⡇ ", 180 | " ⢀⡤ ⡐⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣞⣭⣶⣿⣿⣿⣾⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣜⣾⣿⠟⠁ ⣠⢆⢼⠁ ", 181 | "⣾⣿⡏ ⡀ ⠙⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⢮⣾⡿⠃ ⢠⣿⣼⡟ ", 182 | "⣿⣿⣯ ⣠⣷⣀⣀⣠⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣳⣿⣿⡅ ⢀⣾⣿⣿⠃ ", 183 | "⣝⢿⣗ ⠐⠾⠿⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⡿⠛⠁ ⢠⣺⣿⣿⡟ ", 184 | "⢔⡽⠁ ⡀ ⢠⣤⣤⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏ ⣀⣠⣴⣿⣿⡿⠛ ⢀", 185 | "⠛⠐ ⢀ ⢀⣭⠉⠁ ⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⡿⠿⢛⣩⣶⣀ ⠐", 186 | " ⠃ ⠠⣀ ⢈⣃⣀⣒⣶⢄⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠛⠋⠉⣠⣴⣾⣿⣿⣿⡇ ", 187 | " ⠸⣿⣶⣶⣴⣶⣿⣿⣿⡿⠟⠋⠁⣙⣢⣄⣙⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏ ⣰⣶⣧⢹⣿⡿⣻⡷⠋⠁ ", 188 | " ⠉⢻⡿⠿⠿⠟⣛⣣⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃ ⣐⣿⣿⡿⢸⡵⠛⠁ ", 189 | " ⢀⡄ ⠉⠻⣿⣿⠿⠟⣛⣭⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁ ⢀⡴⢼⣻⠵⠋ ", 190 | " ⡼⣫⣶⣄⣀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠉ ⢀⣀⡿⠞⠋ ", 191 | " ⣼⣿⣜⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠋⠉ ⢀⣠⡤⠖⠋⠁ ", 192 | " ⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠋⠉ ⣀⡠⠴⠚⠉ ⣀⡀ ", 193 | " ⠉⠛⠛⠿⠛⠛⠉⠁ ⠈⠲⣄⣀⣠⠤⠔⠒⠉⠁ ⢀⣠⣴⣾⣿⣿⡇ ", 194 | " ⢠ ⠉⠙⠻⢿⣿⣧ ", 195 | }, 196 | { 197 | -- Mega Mind 198 | "⠀⣞⢽⢪⢣⢣⢣⢫⡺⡵⣝⡮⣗⢷⢽⢽⢽⣮⡷⡽⣜⣜⢮⢺⣜⢷⢽⢝⡽⣝", 199 | "⠸⡸⠜⠕⠕⠁⢁⢇⢏⢽⢺⣪⡳⡝⣎⣏⢯⢞⡿⣟⣷⣳⢯⡷⣽⢽⢯⣳⣫⠇", 200 | "⠀⠀⢀⢀⢄⢬⢪⡪⡎⣆⡈⠚⠜⠕⠇⠗⠝⢕⢯⢫⣞⣯⣿⣻⡽⣏⢗⣗⠏⠀", 201 | "⠀⠪⡪⡪⣪⢪⢺⢸⢢⢓⢆⢤⢀⠀⠀⠀⠀⠈⢊⢞⡾⣿⡯⣏⢮⠷⠁⠀⠀ ", 202 | "⠀⠀⠀⠈⠊⠆⡃⠕⢕⢇⢇⢇⢇⢇⢏⢎⢎⢆⢄⠀⢑⣽⣿⢝⠲⠉⠀⠀⠀⠀", 203 | "⠀⠀⠀⠀⠀⡿⠂⠠⠀⡇⢇⠕⢈⣀⠀⠁⠡⠣⡣⡫⣂⣿⠯⢪⠰⠂⠀⠀⠀⠀", 204 | "⠀⠀⠀⠀⡦⡙⡂⢀⢤⢣⠣⡈⣾⡃⠠⠄⠀⡄⢱⣌⣶⢏⢊⠂⠀⠀⠀⠀⠀⠀", 205 | "⠀⠀⠀⠀⢝⡲⣜⡮⡏⢎⢌⢂⠙⠢⠐⢀⢘⢵⣽⣿⡿⠁⠁⠀⠀⠀⠀⠀⠀⠀", 206 | "⠀⠀⠀⠀⠨⣺⡺⡕⡕⡱⡑⡆⡕⡅⡕⡜⡼⢽⡻⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", 207 | "⠀⠀⠀⠀⣼⣳⣫⣾⣵⣗⡵⡱⡡⢣⢑⢕⢜⢕⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", 208 | "⠀⠀⠀⣴⣿⣾⣿⣿⣿⡿⡽⡑⢌⠪⡢⡣⣣⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", 209 | "⠀⠀⠀⡟⡾⣿⢿⢿⢵⣽⣾⣼⣘⢸⢸⣞⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", 210 | "⠀⠀⠀⠀⠁⠇⠡⠩⡫⢿⣝⡻⡮⣒⢽⠋ ", 211 | } 212 | } 213 | 214 | math.randomseed(os.time()) 215 | dashboard.section.header.val = headers[math.random(#headers)] 216 | 217 | dashboard.section.buttons.val = { 218 | dashboard.button("f", " Find File ", "Telescope find_files"), 219 | dashboard.button("w", " Find Word ", "Telescope live_grep"), 220 | dashboard.button("h", " File Hist ", "Telescope oldfiles"), 221 | dashboard.button("i", " init.lua ", "e ~/.config/nvim/init.lua"), 222 | dashboard.button("l", " Lf ", "Lf"), 223 | dashboard.button("q", " Quit NVIM ", "qa"), 224 | } 225 | 226 | dashboard.section.footer.val = require("alpha.fortune") 227 | 228 | local function randomColor() 229 | local highlights = { "Debug", "Character", "PreCondit", "Boolean", "Number", "SpecialComment" } 230 | return highlights[math.random(#highlights)] 231 | end 232 | 233 | dashboard.section.footer.opts.hl = randomColor() 234 | dashboard.section.header.opts.hl = randomColor() 235 | 236 | require("alpha").setup(dashboard.opts) 237 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/autocommands.lua: -------------------------------------------------------------------------------- 1 | vim.api.nvim_create_autocmd({ "BufEnter" }, { 2 | pattern = { "*" }, 3 | command = [[setlocal formatoptions-=cro]], 4 | }) 5 | 6 | vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { 7 | pattern = { "*.conf" }, 8 | command = [[set ft=conf]], 9 | }) 10 | 11 | vim.api.nvim_create_autocmd({ "BufReadPost" }, { 12 | pattern = { "*" }, 13 | command = [[if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif]], 14 | }) 15 | 16 | vim.api.nvim_create_autocmd({ "BufWritePre" }, { 17 | pattern = { "*" }, 18 | command = [[%s/\\s\\+$//e]], 19 | }) 20 | 21 | vim.api.nvim_create_autocmd({ "TextYankPost" }, { 22 | pattern = { "*" }, 23 | command = [[silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200})]], 24 | }) 25 | 26 | vim.api.nvim_create_autocmd({ "Filetype" }, { 27 | pattern = { "markdown" }, 28 | command = [[setlocal spell]], 29 | }) 30 | 31 | vim.api.nvim_create_autocmd({ "Filetype" }, { 32 | pattern = { "qf", "man", "lspinfo", "help" }, 33 | command = [[nnoremap q :close]], 34 | }) 35 | 36 | vim.api.nvim_create_autocmd({ "Filetype" }, { 37 | pattern = { "qf" }, 38 | command = [[set nobuflisted]], 39 | }) 40 | 41 | vim.api.nvim_create_autocmd({ "BufWritePre" }, { 42 | pattern = { "*" }, 43 | command = [[%s/\s\+$//e]], 44 | }) 45 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/autopairs.lua: -------------------------------------------------------------------------------- 1 | -- Setup nvim-cmp. 2 | local status_ok, npairs = pcall(require, "nvim-autopairs") 3 | if not status_ok then 4 | return 5 | end 6 | 7 | npairs.setup { 8 | check_ts = true, 9 | disable_filetype = { "TelescopePrompt", "spectre_panel" }, 10 | fast_wrap = { 11 | map = "", 12 | chars = { "{", "[", "(", '"', "'" }, 13 | pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), 14 | offset = 0, -- Offset from pattern match 15 | end_key = "$", 16 | keys = "qwertyuiopzxcvbnmasdfghjkl", 17 | check_comma = true, 18 | highlight = "PmenuSel", 19 | highlight_grey = "LineNr", 20 | }, 21 | } 22 | 23 | local cmp_autopairs = require "nvim-autopairs.completion.cmp" 24 | local cmp_status_ok, cmp = pcall(require, "cmp") 25 | if not cmp_status_ok then 26 | return 27 | end 28 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) 29 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/base16.lua: -------------------------------------------------------------------------------- 1 | local status_ok, base16 = pcall(require, "base16") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | base16.themes["mountain"] = { 7 | base00 = "0f0f0f"; base01 = "191919"; base02 = "262626"; base03 = "4c4c4c"; 8 | base04 = "ac8a8c"; base05 = "f0f0f0"; base06 = "e7e7e7"; base07 = "f0f0f0"; 9 | base08 = "ac8a8c"; base09 = "ceb188"; base0A = "aca98a"; base0B = "8aac8b"; 10 | base0C = "8aabac"; base0D = "8f8aac"; base0E = "ac8aac"; base0F = "ac8a8c"; 11 | } 12 | 13 | base16.themes["paradise"] = { 14 | base00 = "151515"; base01 = "1F1F1F"; base02 = "2E2E2E"; base03 = "424242"; 15 | base04 = "BBB6B6"; base05 = "E8E3E3"; base06 = "E8E3E3"; base07 = "E8E3E3"; 16 | base08 = "B66467"; base09 = "D9BC8C"; base0A = "D9BC8C"; base0B = "8C977D"; 17 | base0C = "8AA6A2"; base0D = "8DA3B9"; base0E = "A988B0"; base0F = "BBB6B6"; 18 | } 19 | 20 | base16(base16.themes["paradise"], true) 21 | -- base16(base16.themes["mountain"], true) 22 | -- vim.cmd [[ colo gruvbox-material ]] 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/cmp.lua: -------------------------------------------------------------------------------- 1 | local cmp_status_ok, cmp = pcall(require, "cmp") 2 | if not cmp_status_ok then 3 | return 4 | end 5 | 6 | local snip_status_ok, luasnip = pcall(require, "luasnip") 7 | if not snip_status_ok then 8 | return 9 | end 10 | 11 | require("luasnip/loaders/from_vscode").lazy_load() 12 | 13 | local check_backspace = function() 14 | local col = vim.fn.col "." - 1 15 | return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" 16 | end 17 | 18 | local kind_icons = { 19 | Text = "", 20 | Method = "m", 21 | Function = "", 22 | Constructor = "", 23 | Field = "", 24 | Variable = "", 25 | Class = "", 26 | Interface = "", 27 | Module = "", 28 | Property = "", 29 | Unit = "", 30 | Value = "", 31 | Enum = "", 32 | Keyword = "", 33 | Snippet = "", 34 | Color = "", 35 | File = "", 36 | Reference = "", 37 | Folder = "", 38 | EnumMember = "", 39 | Constant = "", 40 | Struct = "", 41 | Event = "", 42 | Operator = "", 43 | TypeParameter = "", 44 | } 45 | 46 | cmp.setup { 47 | snippet = { 48 | expand = function(args) 49 | luasnip.lsp_expand(args.body) 50 | end, 51 | }, 52 | mapping = { 53 | [""] = cmp.mapping.select_prev_item(), 54 | [""] = cmp.mapping.select_next_item(), 55 | [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), 56 | [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), 57 | [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), 58 | [""] = cmp.config.disable, 59 | [""] = cmp.mapping { 60 | i = cmp.mapping.abort(), 61 | c = cmp.mapping.close(), 62 | }, 63 | [""] = cmp.mapping.confirm { select = true }, 64 | [""] = cmp.mapping(function(fallback) 65 | if cmp.visible() then 66 | cmp.select_next_item() 67 | elseif luasnip.expandable() then 68 | luasnip.expand() 69 | elseif luasnip.expand_or_jumpable() then 70 | luasnip.expand_or_jump() 71 | elseif check_backspace() then 72 | fallback() 73 | else 74 | fallback() 75 | end 76 | end, { 77 | "i", 78 | "s", 79 | }), 80 | [""] = cmp.mapping(function(fallback) 81 | if cmp.visible() then 82 | cmp.select_prev_item() 83 | elseif luasnip.jumpable(-1) then 84 | luasnip.jump(-1) 85 | else 86 | fallback() 87 | end 88 | end, { 89 | "i", 90 | "s", 91 | }), 92 | }, 93 | formatting = { 94 | fields = { "kind", "abbr", "menu" }, 95 | format = function(entry, vim_item) 96 | vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) 97 | vim_item.menu = ({ 98 | nvim_lsp = "[LSP]", 99 | luasnip = "[Luasnip]", 100 | buffer = "[Buffer]", 101 | path = "[Path]", 102 | })[entry.source.name] 103 | return vim_item 104 | end, 105 | }, 106 | sources = { 107 | { name = "nvim_lsp" }, 108 | { name = "luasnip" }, 109 | { name = "buffer" }, 110 | { name = "path" }, 111 | }, 112 | confirm_opts = { 113 | behavior = cmp.ConfirmBehavior.Replace, 114 | select = false, 115 | }, 116 | window = { 117 | documentation = { 118 | border = "rounded", 119 | winhighlight = "Normal:NONE" 120 | }, 121 | completion = { 122 | border = "rounded", 123 | winhighlight = "Normal:NONE" 124 | } 125 | }, 126 | } 127 | 128 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/colorizer.lua: -------------------------------------------------------------------------------- 1 | local status_ok, colorizer = pcall(require, "colorizer") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | colorizer.setup( 7 | {'*';}, 8 | { 9 | RGB = true; 10 | RRGGBB = true; 11 | names = false; 12 | RRGGBBAA = true; 13 | rgb_fn = true; 14 | hsl_fn = true; 15 | css = true; 16 | css_fn = true; 17 | mode = "background"; 18 | }) 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/colors.lua: -------------------------------------------------------------------------------- 1 | local groups = { 2 | "Normal", 3 | "NormalFloat", 4 | "Comment", 5 | "Constant", 6 | "Special", 7 | "SpecialKey", 8 | "Identifier", 9 | "Statement", 10 | "PreProc", 11 | "Type", 12 | "Underlined", 13 | "Todo", 14 | "String", 15 | "Function", 16 | "Conditional", 17 | "Repeat", 18 | "Operator", 19 | "Structure", 20 | "LineNr", 21 | "NonText", 22 | "SignColumn", 23 | "CursorLineNr", 24 | "EndOfBuffer", 25 | "TelescopeSelection", 26 | "Folded", 27 | "VertSplit" 28 | } 29 | 30 | for _,highlight in pairs(groups) do 31 | vim.cmd("hi! " .. highlight .. " guibg=NONE ctermbg=NONE") 32 | end 33 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/jaq.lua: -------------------------------------------------------------------------------- 1 | local status_ok, jaq = pcall(require, "jaq-nvim") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | jaq.setup{ 7 | cmds = { 8 | default = "float", 9 | external = { 10 | markdown = "glow %", 11 | yuck = "eww logs", 12 | lua = "lua %", 13 | sh = "./%", 14 | }, 15 | }, 16 | ui = { 17 | startinsert = true, 18 | float = { 19 | border = "rounded", 20 | border_hl = "NONE", 21 | }, 22 | } 23 | } 24 | 25 | vim.api.nvim_set_keymap("n", "r", ":Jaq float", { noremap = true, silent = true }) 26 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/handlers.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | -- TODO: backfill this to template 4 | M.setup = function() 5 | local signs = { 6 | { name = "DiagnosticSignError", text = "" }, 7 | { name = "DiagnosticSignWarn", text = "" }, 8 | { name = "DiagnosticSignHint", text = "" }, 9 | { name = "DiagnosticSignInfo", text = "" }, 10 | } 11 | 12 | for _, sign in ipairs(signs) do 13 | vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) 14 | end 15 | 16 | local config = { 17 | virtual_text = true, 18 | signs = { 19 | active = signs, 20 | }, 21 | update_in_insert = true, 22 | underline = true, 23 | severity_sort = true, 24 | float = { 25 | focusable = false, 26 | style = "minimal", 27 | border = "rounded", 28 | source = "always", 29 | header = "", 30 | prefix = "", 31 | }, 32 | } 33 | 34 | vim.diagnostic.config(config) 35 | 36 | vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { 37 | border = "rounded", 38 | }) 39 | 40 | vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { 41 | border = "rounded", 42 | }) 43 | end 44 | 45 | local function lsp_highlight_document(client) 46 | if client.resolved_capabilities.document_highlight then 47 | vim.api.nvim_exec( 48 | [[ 49 | augroup lsp_document_highlight 50 | autocmd! * 51 | autocmd CursorHold lua vim.lsp.buf.document_highlight() 52 | autocmd CursorMoved lua vim.lsp.buf.clear_references() 53 | augroup END 54 | ]], 55 | false 56 | ) 57 | end 58 | end 59 | 60 | local function lsp_keymaps(bufnr) 61 | local opts = { noremap = true, silent = true } 62 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) 63 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) 64 | vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) 65 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) 66 | vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) 67 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) 68 | vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", 'lua vim.diagnostic.goto_prev({ border = "rounded" })', opts) 69 | vim.api.nvim_buf_set_keymap( 70 | bufnr, 71 | "n", 72 | "gl", 73 | 'lua vim.lsp.diagnostic.show_line_diagnostics({ border = "rounded" })', 74 | opts 75 | ) 76 | vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", 'lua vim.diagnostic.goto_next({ border = "rounded" })', opts) 77 | vim.api.nvim_buf_set_keymap(bufnr, "n", "q", "lua vim.diagnostic.setloclist()", opts) 78 | vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]] 79 | end 80 | 81 | M.on_attach = function(client, bufnr) 82 | if client.name == "tsserver" then 83 | client.resolved_capabilities.document_formatting = false 84 | end 85 | lsp_keymaps(bufnr) 86 | lsp_highlight_document(client) 87 | end 88 | 89 | local capabilities = vim.lsp.protocol.make_client_capabilities() 90 | 91 | local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") 92 | if not status_ok then 93 | return 94 | end 95 | 96 | M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) 97 | 98 | return M 99 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/init.lua: -------------------------------------------------------------------------------- 1 | local status_ok, _ = pcall(require, "lspconfig") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | require("user.lsp.installer") 7 | require("user.lsp.handlers").setup() 8 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/installer.lua: -------------------------------------------------------------------------------- 1 | local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | lsp_installer.on_server_ready(function(server) 7 | local opts = { 8 | on_attach = require("user.lsp.handlers").on_attach, 9 | capabilities = require("user.lsp.handlers").capabilities, 10 | } 11 | 12 | if server.name == "sumneko_lua" then 13 | local sumneko_opts = require("user.lsp.settings.sumneko_lua") 14 | opts = vim.tbl_deep_extend("force", sumneko_opts, opts) 15 | end 16 | 17 | server:setup(opts) 18 | end) 19 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/settings/sumneko_lua.lua: -------------------------------------------------------------------------------- 1 | return { 2 | settings = { 3 | 4 | Lua = { 5 | diagnostics = { 6 | globals = { "vim", "awesome", "client", "root" }, 7 | }, 8 | workspace = { 9 | library = { 10 | [vim.fn.expand("$VIMRUNTIME/lua")] = true, 11 | [vim.fn.stdpath("config") .. "/lua"] = true, 12 | }, 13 | }, 14 | }, 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/mappings.lua: -------------------------------------------------------------------------------- 1 | local opts = { noremap = true, silent = true } 2 | 3 | -- Shorten function name 4 | local keymap = vim.api.nvim_set_keymap 5 | 6 | -- Normal -- 7 | -- Remap space as leader key 8 | keymap("", "", "", opts) 9 | vim.g.mapleader = " " 10 | vim.g.maplocalleader = " " 11 | 12 | -- Better window navigation 13 | keymap("n", "", "h", opts) 14 | keymap("n", "", "j", opts) 15 | keymap("n", "", "k", opts) 16 | keymap("n", "", "l", opts) 17 | keymap("n", "", "w", opts) 18 | keymap("n", "", "w:startinsert", opts) 19 | 20 | -- Navigate buffers 21 | keymap("n", "", ":bnext", opts) 22 | keymap("n", "", ":bprevious", opts) 23 | keymap("n", "w", ":bdelete", opts) 24 | 25 | -- Improve/Remap Defaults 26 | keymap("n", "0", "0^", opts) 27 | keymap("n", "U", "", opts) 28 | keymap("n", ">", ">>", opts) 29 | keymap("n", "<", "<<", opts) 30 | 31 | -- Move text up and down 32 | keymap("n", "", ":m .+1==", opts) 33 | keymap("n", "", ":m .-2==", opts) 34 | 35 | -- Insert -- 36 | keymap("i", "jk", "", opts) 37 | keymap("i", "kj", "", opts) 38 | 39 | -- Visual -- 40 | -- Stay in indent mode 41 | keymap("v", "<", "", ">gv", opts) 43 | 44 | -- Move text up and down 45 | keymap("v", "", ":m .+1==", opts) 46 | keymap("v", "", ":m .-2==", opts) 47 | 48 | -- Terminal -- 49 | keymap("t", "Z", "lua require('tui-nvim').resize()", {silent = true}) 50 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/mini.lua: -------------------------------------------------------------------------------- 1 | local status_ok, _ = pcall(require, "mini.pairs") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | -- require("mini.pairs").setup { 7 | -- modes = { insert = true, command = false, terminal = false }, 8 | -- 9 | -- mappings = { 10 | -- ['('] = { action = 'open', pair = '()', neigh_pattern = '[^\\].' }, 11 | -- ['['] = { action = 'open', pair = '[]', neigh_pattern = '[^\\].' }, 12 | -- ['{'] = { action = 'open', pair = '{}', neigh_pattern = '[^\\].' }, 13 | -- 14 | -- [')'] = { action = 'close', pair = '()', neigh_pattern = '[^\\].' }, 15 | -- [']'] = { action = 'close', pair = '[]', neigh_pattern = '[^\\].' }, 16 | -- ['}'] = { action = 'close', pair = '{}', neigh_pattern = '[^\\].' }, 17 | -- 18 | -- ['"'] = { action = 'closeopen', pair = '""', neigh_pattern = '[^\\].', register = { cr = true } }, 19 | -- ["'"] = { action = 'closeopen', pair = "''", neigh_pattern = '[^%a\\].', register = { cr = true } }, 20 | -- ['`'] = { action = 'closeopen', pair = '``', neigh_pattern = '[^\\].', register = { cr = true } }, 21 | -- } 22 | -- } 23 | 24 | require("mini.comment").setup { 25 | mappings = { 26 | comment = 'gc', 27 | comment_line = 'gcc', 28 | textobject = 'gc', 29 | }, 30 | } 31 | 32 | require("mini.surround").setup { 33 | n_lines = 40, 34 | highlight_duration = 1000, 35 | 36 | mappings = { 37 | add = "ys", 38 | delete = "ds", 39 | replace = "cs", 40 | find = "yf", 41 | find_left = "yF", 42 | highlight = "yh", 43 | update_n_lines = "yn", 44 | } 45 | } 46 | 47 | require("mini.cursorword").setup { 48 | delay = 100 49 | } 50 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/packer.lua: -------------------------------------------------------------------------------- 1 | local fn = vim.fn 2 | 3 | local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' 4 | if fn.empty(fn.glob(install_path)) > 0 then 5 | PACKER_BOOTSTRAP = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) 6 | print("Installing packer close and reopen Neovim...") 7 | end 8 | 9 | vim.api.nvim_create_autocmd({ "BufWritePost" }, { 10 | pattern = { "packer.lua" }, 11 | command = [[source | PackerSync]], 12 | }) 13 | 14 | local status_ok, packer = pcall(require, "packer") 15 | if not status_ok then 16 | return 17 | end 18 | 19 | packer.init({ 20 | display = { 21 | open_fn = function() 22 | return require('packer.util').float({ border = 'rounded' }) 23 | end 24 | } 25 | } 26 | ) 27 | 28 | return require("packer").startup( 29 | function(use) 30 | 31 | -- Packer can manage itself 32 | use {"wbthomason/packer.nvim"} 33 | 34 | -- Color Scheme 35 | use {"norcalli/nvim-base16.lua"} 36 | use {"WIttyJudge/gruvbox-material.nvim"} 37 | 38 | -- Snippets 39 | use {"L3MON4D3/LuaSnip"} 40 | use {"rafamadriz/friendly-snippets"} 41 | 42 | -- Automatic Completion 43 | use {"hrsh7th/nvim-cmp"} 44 | use {"hrsh7th/cmp-nvim-lsp"} 45 | use {"saadparwaiz1/cmp_luasnip"} 46 | use {"hrsh7th/cmp-buffer"} 47 | use {"hrsh7th/cmp-path"} 48 | 49 | -- Language Server Protocol 50 | use {"neovim/nvim-lspconfig"} 51 | use {"williamboman/nvim-lsp-installer"} 52 | 53 | -- Treeshitter 54 | use {"nvim-treesitter/nvim-treesitter", run = { ":TSUpdate" } } 55 | use {"p00f/nvim-ts-rainbow", requires = { "nvim-treesitter/nvim-treesitter" } } 56 | use {"m-demare/hlargs.nvim", requires = { "nvim-treesitter/nvim-treesitter" } } 57 | use {"haringsrob/nvim_context_vt", requires = { "nvim-treesitter/nvim-treesitter" } } 58 | 59 | -- Language Support 60 | use {"elkowar/yuck.vim"} 61 | use {"davidgranstrom/nvim-markdown-preview"} 62 | 63 | -- Color Preview 64 | use {"norcalli/nvim-colorizer.lua"} 65 | 66 | -- Lots o' Stuff 67 | use {"echasnovski/mini.nvim"} 68 | 69 | -- Auto Pairs 70 | use {"windwp/nvim-autopairs"} 71 | 72 | -- Start Screen 73 | use {"goolord/alpha-nvim", requires = { "kyazdani42/nvim-web-devicons" } } 74 | 75 | -- Powerful Fuzzy Finder 76 | use {"nvim-telescope/telescope.nvim", requires = { { "nvim-lua/popup.nvim" }, { "nvim-lua/plenary.nvim" } } } 77 | 78 | -- Local Plugins 79 | use {"~/Programming/lua/neovim/tui-nvim/"} 80 | use {"~/Programming/lua/neovim/jaq-nvim/"} 81 | 82 | if PACKER_BOOTSTRAP then 83 | require("packer").sync() 84 | end 85 | 86 | end 87 | ) 88 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/settings.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | backup = false, 3 | clipboard = "unnamedplus", 4 | cmdheight = 1, 5 | completeopt = { "menu", "menuone", "noselect" }, 6 | conceallevel = 0, 7 | fileencoding = "utf-8", 8 | hlsearch = false, 9 | ignorecase = true, 10 | mouse = "a", 11 | pumheight = 10, 12 | showmode = false, 13 | showtabline = 0, 14 | laststatus = 0, 15 | smartcase = true, 16 | smartindent = true, 17 | splitbelow = true, 18 | splitright = true, 19 | swapfile = false, 20 | termguicolors = true, 21 | timeoutlen = 150, 22 | undofile = true, 23 | updatetime = 300, 24 | writebackup = false, 25 | expandtab = true, 26 | shiftwidth = 2, 27 | tabstop = 2, 28 | cursorline = false, 29 | number = true, 30 | relativenumber = false, 31 | numberwidth = 4, 32 | signcolumn = "yes", 33 | ruler = false, 34 | wrap = false, 35 | background = "dark", 36 | scrolloff = 8, 37 | sidescrolloff = 8, 38 | fillchars = "eob: ", 39 | autochdir = true 40 | } 41 | 42 | vim.opt.shortmess:append "c" 43 | vim.g.markdown_fenced_languaged = { "lua" } 44 | 45 | for k, v in pairs(options) do 46 | vim.opt[k] = v 47 | end 48 | 49 | vim.cmd [[ set whichwrap+=<,>,[,],h,l ]] 50 | vim.cmd [[ set iskeyword+=- ]] 51 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/telescope.lua: -------------------------------------------------------------------------------- 1 | local status_ok, telescope = pcall(require, "telescope") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | telescope.setup { 7 | defaults = { 8 | prompt_prefix = ' ❯ ', 9 | selection_caret = " ", 10 | -- path_display = { "smart" }, 11 | color_devicons = true, 12 | 13 | sorting_strategy = 'ascending', 14 | layout_config = { 15 | prompt_position = 'top', 16 | } 17 | } 18 | } 19 | 20 | vim.api.nvim_set_keymap("n", "f", ":Telescope find_files", { noremap = true, silent = true }) 21 | vim.api.nvim_set_keymap("n", "h", ":Telescope oldfiles", { noremap = true, silent = true }) 22 | vim.api.nvim_set_keymap("n", "g", ":Telescope live_grep", { noremap = true, silent = true }) 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/treeshitter.lua: -------------------------------------------------------------------------------- 1 | local status_ok, treesitter = pcall(require, "nvim-treesitter.configs") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | treesitter.setup { 7 | highlight = { 8 | enable = true, 9 | }, 10 | indent = { 11 | enable = true 12 | }, 13 | rainbow = { 14 | enable = true, 15 | extended_mode = true, 16 | max_file_lines = 1000, 17 | } 18 | } 19 | 20 | local status_ok, hlargs = pcall(require, "hlargs") 21 | if not status_ok then 22 | return 23 | else 24 | require("hlargs").setup() 25 | end 26 | 27 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/tui.lua: -------------------------------------------------------------------------------- 1 | local status_ok, tui = pcall(require, "tui-nvim") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | function Lf() 7 | tui:new { 8 | cmd = "~/.config/lf/startlf -selection-path /tmp/tui-nvim " .. vim.fn.fnameescape(vim.fn.expand("%:p")), 9 | } 10 | end 11 | 12 | function Tig() 13 | tui:new { 14 | cmd = "tig -C " .. vim.fn.fnameescape(vim.fn.expand("%:p:h")), 15 | width = 0.3, 16 | height = 0.6, 17 | x = 1, 18 | y = 1 19 | } 20 | end 21 | 22 | vim.cmd [[ command! Lf :lua Lf() ]] 23 | vim.cmd [[ command! Tig :lua Tig() ]] 24 | vim.api.nvim_set_keymap("n", "l", ":Lf", { noremap = true, silent = true }) 25 | vim.api.nvim_set_keymap("n", "t", ":Tig", { noremap = true, silent = true }) 26 | -------------------------------------------------------------------------------- /.config/nvim/plugin/packer_compiled.lua: -------------------------------------------------------------------------------- 1 | -- Automatically generated packer.nvim plugin loader code 2 | 3 | if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then 4 | vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') 5 | return 6 | end 7 | 8 | vim.api.nvim_command('packadd packer.nvim') 9 | 10 | local no_errors, error_msg = pcall(function() 11 | 12 | local time 13 | local profile_info 14 | local should_profile = false 15 | if should_profile then 16 | local hrtime = vim.loop.hrtime 17 | profile_info = {} 18 | time = function(chunk, start) 19 | if start then 20 | profile_info[chunk] = hrtime() 21 | else 22 | profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 23 | end 24 | end 25 | else 26 | time = function(chunk, start) end 27 | end 28 | 29 | local function save_profiles(threshold) 30 | local sorted_times = {} 31 | for chunk_name, time_taken in pairs(profile_info) do 32 | sorted_times[#sorted_times + 1] = {chunk_name, time_taken} 33 | end 34 | table.sort(sorted_times, function(a, b) return a[2] > b[2] end) 35 | local results = {} 36 | for i, elem in ipairs(sorted_times) do 37 | if not threshold or threshold and elem[2] > threshold then 38 | results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' 39 | end 40 | end 41 | 42 | _G._packer = _G._packer or {} 43 | _G._packer.profile_output = results 44 | end 45 | 46 | time([[Luarocks path setup]], true) 47 | local package_path_str = "/home/is0n/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/is0n/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/is0n/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/is0n/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" 48 | local install_cpath_pattern = "/home/is0n/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" 49 | if not string.find(package.path, package_path_str, 1, true) then 50 | package.path = package.path .. ';' .. package_path_str 51 | end 52 | 53 | if not string.find(package.cpath, install_cpath_pattern, 1, true) then 54 | package.cpath = package.cpath .. ';' .. install_cpath_pattern 55 | end 56 | 57 | time([[Luarocks path setup]], false) 58 | time([[try_loadstring definition]], true) 59 | local function try_loadstring(s, component, name) 60 | local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) 61 | if not success then 62 | vim.schedule(function() 63 | vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) 64 | end) 65 | end 66 | return result 67 | end 68 | 69 | time([[try_loadstring definition]], false) 70 | time([[Defining packer_plugins]], true) 71 | _G.packer_plugins = { 72 | LuaSnip = { 73 | loaded = true, 74 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/LuaSnip", 75 | url = "https://github.com/L3MON4D3/LuaSnip" 76 | }, 77 | ["alpha-nvim"] = { 78 | loaded = true, 79 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/alpha-nvim", 80 | url = "https://github.com/goolord/alpha-nvim" 81 | }, 82 | ["cmp-buffer"] = { 83 | loaded = true, 84 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/cmp-buffer", 85 | url = "https://github.com/hrsh7th/cmp-buffer" 86 | }, 87 | ["cmp-nvim-lsp"] = { 88 | loaded = true, 89 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", 90 | url = "https://github.com/hrsh7th/cmp-nvim-lsp" 91 | }, 92 | ["cmp-path"] = { 93 | loaded = true, 94 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/cmp-path", 95 | url = "https://github.com/hrsh7th/cmp-path" 96 | }, 97 | cmp_luasnip = { 98 | loaded = true, 99 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/cmp_luasnip", 100 | url = "https://github.com/saadparwaiz1/cmp_luasnip" 101 | }, 102 | ["friendly-snippets"] = { 103 | loaded = true, 104 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/friendly-snippets", 105 | url = "https://github.com/rafamadriz/friendly-snippets" 106 | }, 107 | ["gruvbox-material.nvim"] = { 108 | loaded = true, 109 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/gruvbox-material.nvim", 110 | url = "https://github.com/WIttyJudge/gruvbox-material.nvim" 111 | }, 112 | ["hlargs.nvim"] = { 113 | loaded = true, 114 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/hlargs.nvim", 115 | url = "https://github.com/m-demare/hlargs.nvim" 116 | }, 117 | ["jaq-nvim"] = { 118 | loaded = true, 119 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/jaq-nvim", 120 | url = "/home/is0n/Programming/lua/neovim/jaq-nvim/" 121 | }, 122 | ["mini.nvim"] = { 123 | loaded = true, 124 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/mini.nvim", 125 | url = "https://github.com/echasnovski/mini.nvim" 126 | }, 127 | ["nvim-autopairs"] = { 128 | loaded = true, 129 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-autopairs", 130 | url = "https://github.com/windwp/nvim-autopairs" 131 | }, 132 | ["nvim-base16.lua"] = { 133 | loaded = true, 134 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-base16.lua", 135 | url = "https://github.com/norcalli/nvim-base16.lua" 136 | }, 137 | ["nvim-cmp"] = { 138 | loaded = true, 139 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-cmp", 140 | url = "https://github.com/hrsh7th/nvim-cmp" 141 | }, 142 | ["nvim-colorizer.lua"] = { 143 | loaded = true, 144 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-colorizer.lua", 145 | url = "https://github.com/norcalli/nvim-colorizer.lua" 146 | }, 147 | ["nvim-lsp-installer"] = { 148 | loaded = true, 149 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-lsp-installer", 150 | url = "https://github.com/williamboman/nvim-lsp-installer" 151 | }, 152 | ["nvim-lspconfig"] = { 153 | loaded = true, 154 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", 155 | url = "https://github.com/neovim/nvim-lspconfig" 156 | }, 157 | ["nvim-markdown-preview"] = { 158 | loaded = true, 159 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-markdown-preview", 160 | url = "https://github.com/davidgranstrom/nvim-markdown-preview" 161 | }, 162 | ["nvim-treesitter"] = { 163 | loaded = true, 164 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-treesitter", 165 | url = "https://github.com/nvim-treesitter/nvim-treesitter" 166 | }, 167 | ["nvim-ts-rainbow"] = { 168 | loaded = true, 169 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-ts-rainbow", 170 | url = "https://github.com/p00f/nvim-ts-rainbow" 171 | }, 172 | ["nvim-web-devicons"] = { 173 | loaded = true, 174 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", 175 | url = "https://github.com/kyazdani42/nvim-web-devicons" 176 | }, 177 | nvim_context_vt = { 178 | loaded = true, 179 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/nvim_context_vt", 180 | url = "https://github.com/haringsrob/nvim_context_vt" 181 | }, 182 | ["packer.nvim"] = { 183 | loaded = true, 184 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/packer.nvim", 185 | url = "https://github.com/wbthomason/packer.nvim" 186 | }, 187 | ["plenary.nvim"] = { 188 | loaded = true, 189 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/plenary.nvim", 190 | url = "https://github.com/nvim-lua/plenary.nvim" 191 | }, 192 | ["popup.nvim"] = { 193 | loaded = true, 194 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/popup.nvim", 195 | url = "https://github.com/nvim-lua/popup.nvim" 196 | }, 197 | ["telescope.nvim"] = { 198 | loaded = true, 199 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/telescope.nvim", 200 | url = "https://github.com/nvim-telescope/telescope.nvim" 201 | }, 202 | ["tui-nvim"] = { 203 | loaded = true, 204 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/tui-nvim", 205 | url = "/home/is0n/Programming/lua/neovim/tui-nvim/" 206 | }, 207 | ["yuck.vim"] = { 208 | loaded = true, 209 | path = "/home/is0n/.local/share/nvim/site/pack/packer/start/yuck.vim", 210 | url = "https://github.com/elkowar/yuck.vim" 211 | } 212 | } 213 | 214 | time([[Defining packer_plugins]], false) 215 | if should_profile then save_profiles() end 216 | 217 | end) 218 | 219 | if not no_errors then 220 | error_msg = error_msg:gsub('"', '\\"') 221 | vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') 222 | end 223 | -------------------------------------------------------------------------------- /.config/picom/picom.conf: -------------------------------------------------------------------------------- 1 | # GLX/Backend 2 | backend = "glx"; 3 | glx-no-stencil = true; 4 | glx-copy-from-front = false; 5 | 6 | # Opacity 7 | active-opacity = 1; 8 | inactive-opacity = 1; 9 | frame-opacity = 1; 10 | inactive-opacity-override = false; 11 | 12 | opacity-rule = [ 13 | "90:class_g = 'Rofi'", 14 | ]; 15 | 16 | # Rounded Corners 17 | corner-radius = 12; 18 | 19 | rounded-corners-exclude = [ 20 | "window_type = 'dock'", 21 | ]; 22 | 23 | # Fading 24 | fading = true; 25 | fade-delta = 3; 26 | fade-in-step = 0.028; 27 | fade-out-step = 0.03; 28 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | display-drun: "Applications:"; 3 | font: "JetBrains Mono Medium 12"; 4 | modi: "drun"; 5 | show-icons: false; 6 | display-drun: ""; 7 | drun-display-format: "{name}"; 8 | disable-history: false; 9 | click-to-exit: true; 10 | location: 0; 11 | } 12 | 13 | @theme "/dev/null" 14 | 15 | * { 16 | background: #151515; 17 | background-alt: #424242; 18 | foreground: #e8e3e3; 19 | foresel: #2e2e2e; 20 | selected: #1f1f1f; 21 | urgent: #b66467; 22 | on: #8c977d; 23 | off: #a988b0; 24 | } 25 | 26 | * { 27 | background-color: @background; 28 | } 29 | 30 | window { 31 | border: 0px; 32 | border-color: @foreground; 33 | border-radius: 8px; 34 | width: 500px; 35 | height: 0px; 36 | x-offset: 20px; 37 | y-offset: 67px; 38 | } 39 | 40 | prompt { 41 | spacing: 0; 42 | border: 0; 43 | border-radius: 8px; 44 | background-color: @background-alt; 45 | text-color: @foreground; 46 | padding: 6px 14px 6px 14px; 47 | } 48 | 49 | textbox-prompt-colon { 50 | expand: false; 51 | str: ""; 52 | padding: 6px 4px 6px 4px; 53 | text-color: inherit; 54 | } 55 | 56 | entry { 57 | spacing: 0; 58 | expand: true; 59 | horizontal-align: 0; 60 | text-color: @foreground; 61 | padding: 6px 2px 6px 2px; 62 | border: 0px 0px 0px 0px; 63 | border-color: @selected; 64 | border-radius: 0px; 65 | } 66 | 67 | case-indicator { 68 | spacing: 0; 69 | text-color: @foreground; 70 | } 71 | 72 | inputbar { 73 | spacing: 0px; 74 | text-color: @foreground; 75 | border: 0px; 76 | border-color: @selected; 77 | border-radius: 0px; 78 | children: [ prompt,textbox-prompt-colon,entry ]; 79 | } 80 | 81 | mainbox { 82 | border: 0px; 83 | border-color: @selected; 84 | spacing: 15px; 85 | padding: 30px; 86 | } 87 | 88 | listview { 89 | lines: 7; 90 | columns: 1; 91 | fixed-height: 0; 92 | border: 0px; 93 | border-color: @foreground; 94 | spacing: 5px; 95 | scrollbar: false; 96 | padding: 5px 0px 0px; 97 | } 98 | 99 | element-text, element-icon { 100 | background-color: inherit; 101 | text-color: inherit; 102 | } 103 | 104 | element { 105 | border: 0px; 106 | padding: 8px; 107 | } 108 | element normal.normal { 109 | background-color: @background; 110 | text-color: @foreground; 111 | } 112 | element normal.urgent { 113 | background-color: @background; 114 | text-color: @off; 115 | } 116 | element normal.active { 117 | background-color: @background; 118 | text-color: @on; 119 | } 120 | element selected.normal { 121 | background-color: @selected; 122 | text-color: @foreground; 123 | border: 0px; 124 | border-radius: 8px; 125 | border-color: @selected; 126 | } 127 | element selected.urgent { 128 | background-color: @background; 129 | text-color: @off; 130 | } 131 | element selected.active { 132 | background-color: @background; 133 | text-color: @selected; 134 | } 135 | element alternate.normal { 136 | background-color: @background; 137 | text-color: @foreground; 138 | } 139 | element alternate.urgent { 140 | background-color: @background; 141 | text-color: @foreground; 142 | } 143 | element alternate.active { 144 | background-color: @background; 145 | text-color: @foreground; 146 | } 147 | 148 | sidebar { 149 | border: 0px; 150 | border-color: @selected; 151 | border-radius: 0px; 152 | } 153 | 154 | button { 155 | margin: 5px 10px 0px 10px; 156 | horizontal-align: 0.5; 157 | vertical-align: 0.5; 158 | padding: 8px; 159 | background-color: @background-alt; 160 | text-color: @foreground; 161 | border: 0px; 162 | border-radius: 8px; 163 | border-color: @selected; 164 | } 165 | 166 | button selected { 167 | background-color: @selected; 168 | text-color: @background; 169 | border: 0px; 170 | border-radius: 8px; 171 | border-color: @selected; 172 | } 173 | 174 | scrollbar { 175 | width: 4px; 176 | border: 0px; 177 | handle-color: @foreground; 178 | handle-width: 8px; 179 | padding: 0; 180 | } 181 | 182 | message { 183 | border: 0px; 184 | border-color: @selected; 185 | padding: 1px; 186 | } 187 | 188 | textbox { 189 | text-color: @foreground; 190 | } 191 | -------------------------------------------------------------------------------- /.config/sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | # Floating Window 2 | hyper + {f,a,m} 3 | floating {~/.config/lf/startlf,ani-cli,spt} 4 | 5 | # Terminals 6 | super + Return 7 | $TERMINAL 8 | 9 | super + shift + Return 10 | floating $SHELL 11 | 12 | # System Control (volume/brightness) 13 | {F1,F2} 14 | bright {-,+} 15 | 16 | XF86MonBrightness{Down,Up} 17 | bright {-,+} 18 | 19 | {F10,XF86AudioMute} 20 | amixer sset Master toggle 21 | 22 | {F11,F12} 23 | amixer sset Master 5%{-,+} 24 | 25 | XF86Audio{Lower,Raise}Volume 26 | amixer sset Master 5%{-,+} 27 | 28 | {F7,F8,F9} 29 | spt playback {-p,-t,-n} 30 | # playerctl -p spotifyd {previous,play-pause,next} 31 | 32 | # Restart sxhkd 33 | super + Escape 34 | pkill -USR1 -x sxhkd 35 | 36 | # Toggle screenkey 37 | hyper + s 38 | pgrep screenkey && killall screenkey || screenkey -s small 39 | 40 | # rofi 41 | super + {space} 42 | rofi -disable-history -show drun 43 | 44 | hyper + b 45 | rofi-bluetooth 46 | 47 | # screenshot 48 | super + ctrl + {1,2} 49 | screenshot {full,area} 50 | 51 | # screenrecord 52 | super + ctrl + 3 53 | screenrecord 54 | 55 | ctrl + space 56 | ~/.config/spotifyd/notif 57 | 58 | hyper + d 59 | dashboard toggle 60 | 61 | ~button3 62 | xqp 0 && jgmenu_run 63 | -------------------------------------------------------------------------------- /.config/worm/icons/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/worm/icons/close.png -------------------------------------------------------------------------------- /.config/worm/icons/close2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/is0n/dotfiles/08865495e4b588761bc1aeebdf1763b5562377ae/.config/worm/icons/close2.png -------------------------------------------------------------------------------- /.config/worm/rc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Behavior 4 | wormc layout 'floating' 5 | wormc struts 12 12 54 12 6 | wormc gaps 12 7 | wormc border-width 1 8 | 9 | # Colors 10 | wormc border-active-pixel $((16#fff0f0f0)) 11 | wormc border-inactive-pixel $((16#ff0f0f0f)) 12 | wormc text-active-pixel $((16#fff0f0f0)) 13 | wormc text-inactive-pixel $((16#fff0f0f0)) 14 | wormc frame-active-pixel $((16#ff0f0f0f)) 15 | wormc frame-inactive-pixel $((16#ff0f0f0f)) 16 | 17 | # Frame Buttons 18 | wormc close-path "$HOME/.config/worm/icons/close.png" 19 | 20 | # Frame Settings 21 | wormc text-font 'JetBrains Mono:pixelsize=14:antialias=true' 22 | wormc frame-left 'T;' 23 | wormc frame-right 'C;' 24 | wormc button-offset 12 8 25 | 26 | # EWW 27 | function launch_eww { 28 | eww daemon 29 | ~/.local/bin/dashboard open 30 | ~/.local/bin/vbar open 31 | } 32 | 33 | pgrep eww || launch_eww & 34 | 35 | # Psuedo swallowing 36 | pgrep pidswallow || pidswallow -gl & 37 | 38 | # Start sxhkd with worm bindings 39 | pgrep -f "sxhkd -c $HOME/.config/worm/sxhkdrc" || sxhkd -c $HOME/.config/worm/sxhkdrc & 40 | 41 | # Music daemon 42 | pgrep spotifyd || spotifyd & 43 | 44 | # Alttab 45 | pgrep alttab || alttab -w 1 & 46 | -------------------------------------------------------------------------------- /.config/worm/sxhkdrc: -------------------------------------------------------------------------------- 1 | # Restart Worm 2 | super + shift + r 3 | exec ~/.config/worm/rc 4 | 5 | # Close app 6 | super + q 7 | wormc close-active-client 8 | 9 | # Maximize window 10 | super + f 11 | wormc maximize-active-client 12 | 13 | # Make active window float 14 | super + shift + space 15 | wormc float-active 16 | 17 | # Make active window master 18 | super + ctrl + space 19 | wormc master-active 20 | 21 | # Enable tiling 22 | super + shift + t 23 | wormc layout 'tiling' 24 | 25 | # Enable floating 26 | super + shift + f 27 | wormc layout 'floating' 28 | 29 | # Tags (Workspaces) 30 | super + {_, shift + } {1-9} 31 | wormc {switch,move-active}-tag {1-9} 32 | -------------------------------------------------------------------------------- /.github/README.md: -------------------------------------------------------------------------------- 1 |

is0n/dotfiles

2 | 3 | | | | 4 | | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | 5 | | **Main** | **Floating** | 6 | | ![Main](https://user-images.githubusercontent.com/57725322/175221022-787fafc5-d24b-4b27-9b7d-964d44bc45b5.png) | ![Floating](https://user-images.githubusercontent.com/57725322/175328997-0854a94b-505a-455e-bcb3-4826bb32602c.png) | 7 | | **Tiling** | **Lockscreen** | 8 | | ![Tiling](https://user-images.githubusercontent.com/57725322/175367734-9faeb3af-55be-435b-b156-e74035c8c765.png) | ![Lockscreen](https://user-images.githubusercontent.com/57725322/175221019-4204c94d-b9ec-4097-98d3-5a1b8537351d.png) | 9 | 10 | 11 | 12 |
Config Info Demonstration
13 | 14 | | | | 15 | | ----------------- | --------------------------------------------------- | 16 | | os | [arch](https://archlinux.org/) | 17 | | wm | [worm](https://github.com/codic12/worm) | 18 | | fm | [lf](https://github.com/gokcehan/lf/) | 19 | | theme | [paradise](https://github.com/Manas140/paradise/) | 20 | | editor | [neovim](https://github.com/neovim/neovim) | 21 | | widgets | [eww](https://github.com/elkowar/eww) | 22 | | terminal | [alacritty](https://github.com/alacritty/alacritty) | 23 | | compositor | [picom](https://github.com/yshui/picom) | 24 | 25 | 26 | 27 | 28 | 30 | 31 |
32 | 33 | ### To Do 34 | - [ ] Screenshot/record widgets 35 | 36 | ## Gallery 37 | 38 |

Main

39 | 40 | ![Main](https://user-images.githubusercontent.com/57725322/175221022-787fafc5-d24b-4b27-9b7d-964d44bc45b5.png) 41 | 42 | ### Programs 43 | - [eww](https://github.com/elkowar/eww) - widgets 44 | 45 |

Floating

46 | 47 | ![Floating](https://user-images.githubusercontent.com/57725322/175328997-0854a94b-505a-455e-bcb3-4826bb32602c.png) 48 | 49 | ### Programs 50 | - [eww](https://github.com/elkowar/eww) - widgets 51 | - [cava](https://github.com/karlstav/cava) - music visualizer 52 | - [pfetch](https://github.com/dylanaraps/pfetch) - fetch tool 53 | - [lf](https://github.com/gokcehan/lf/) - file manager 54 | - [neovim](https://github.com/neovim/neovim) - text editor 55 | - [sxiv](https://github.com/muennich/sxiv) - image viewer 56 | - [.local/bin/colorblocks](https://github.com/is0n/dotfiles/blob/master/.local/bin/colorblocks) - rice? 57 | 58 |

Tiling

59 | 60 | ![Tiling](https://user-images.githubusercontent.com/57725322/175367734-9faeb3af-55be-435b-b156-e74035c8c765.png) 61 | 62 | ### Programs 63 | - [firefox](https://www.mozilla.org/en-US/firefox/new/) - web browser 64 | - [eww](https://github.com/elkowar/eww) - widgets 65 | - [neovim](https://github.com/neovim/neovim) - text editor 66 | - [sxiv](https://github.com/muennich/sxiv) - image viewer 67 | 68 |

Lockscreen (06/22/22 - 22:22?)

69 | 70 | ![Lockscreen](https://user-images.githubusercontent.com/57725322/175221019-4204c94d-b9ec-4097-98d3-5a1b8537351d.png) 71 | 72 | ### Programs 73 | - [i3lockmore](https://github.com/SammysHP/i3lockmore) - lockscreen 74 | - [eww](https://github.com/elkowar/eww) - widgets 75 | 76 | ## Credits 77 | 78 | * Amazing dotfiles from amazing people 79 | * [Syndrizzle/hotfiles](https://github.com/Syndrizzle/hotfiles/) 80 | * [okklol/eww-bar](https://github.com/okklol/eww-bar) 81 | * [saimoon/eww-widgets](https://github.com/saimoomedits/eww-widgets) 82 | * [N3k0Ch4n/.files](https://github.com/N3k0Ch4n/.files) 83 | -------------------------------------------------------------------------------- /.local/bin/colorblocks: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | f=3 b=4 4 | for j in f b; do 5 | for i in {0..7}; do 6 | printf -v $j$i %b "\e[${!j}${i}m" 7 | done 8 | done 9 | d=$'\e[1m' 10 | t=$'\e[0m' 11 | v=$'\e[7m' 12 | 13 | cat << EOF 14 | 15 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t 16 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t 17 | $f1██████$d██$t $f2██████$d██$t $f3██████$d██$t $f4██████$d██$t $f5██████$d██$t $f6██████$d██$t 18 | $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t $ft██████$d$f7██$t 19 | 20 | EOF 21 | -------------------------------------------------------------------------------- /.local/bin/dashboard: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG_DIR="${HOME}/.config/eww/dashboard/" 4 | EWW="eww -c ${CONFIG_DIR}" 5 | WIN="dashboard" 6 | 7 | function close { 8 | ${EWW} close ${WIN} 9 | } 10 | 11 | function open { 12 | ${EWW} open ${WIN} 13 | } 14 | 15 | function toggle { 16 | ${EWW} close ${WIN} || ${EWW} open ${WIN} 17 | } 18 | 19 | case "$1" in 20 | open) 21 | open;; 22 | close) 23 | close;; 24 | toggle) 25 | toggle;; 26 | esac 27 | -------------------------------------------------------------------------------- /.local/bin/floating: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | alacritty \ 4 | --class "Floating" \ 5 | -o window.dimensions.lines=24 \ 6 | -o window.dimensions.columns=98 \ 7 | -e "zsh" \ 8 | -c "sleep 0.04 && xdotool getwindowfocus > /tmp/term-wid-\"\$\$\" && trap \"(rm -f /tmp/term-wid-"\$\$")\" EXIT HUP && $@" 9 | -------------------------------------------------------------------------------- /.local/bin/lock: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Colors 4 | clear="#00000000" 5 | fg="#f0f0f0" 6 | bg="#0f0f0f" 7 | altfg="#4c4c4c" 8 | altbg="#262626" 9 | error="#ac8a8c" 10 | verif="#8aac8b" 11 | 12 | # Spawn the lockscreen 13 | i3lockmore -n \ 14 | --image-fill "$(cat ~/.cache/wallpaper)" \ 15 | \ 16 | --verif-text="" \ 17 | --wrong-text="" \ 18 | --noinput-text="" \ 19 | --ring-width 10 \ 20 | --radius 100 \ 21 | --indicator \ 22 | \ 23 | --insidever-color=$bg \ 24 | --insidewrong-color=$bg \ 25 | \ 26 | --ringver-color=$verif \ 27 | --ringwrong-color=$error \ 28 | \ 29 | --inside-color=$bg \ 30 | --ring-color=$bg \ 31 | --line-color=$altbg \ 32 | --separator-color=$bg \ 33 | \ 34 | --verif-color=$fg \ 35 | --wrong-color=$altfg \ 36 | --layout-color=$fg \ 37 | --keyhl-color=$altfg \ 38 | --bshl-color=$altfg & 39 | 40 | sleep 2 41 | 42 | # Launch eww widgets 43 | eww -c ~/.config/eww/lock/ close-all 44 | eww -c ~/.config/eww/lock/ open-many fetch music time quote 45 | 46 | sleep 1 47 | 48 | # Suspend if given the 'suspend' arg 49 | [ "${1}" = "suspend" ] && systemctl suspend & 50 | 51 | # Do not disturb 52 | dunstctl set-paused true 53 | 54 | # Wait until the lockscreen exits 55 | wait 56 | 57 | # Close the widgets 58 | eww -c ~/.config/eww/lock/ close-all 59 | 60 | # Disable Do not disturb 61 | dunstctl set-paused false 62 | -------------------------------------------------------------------------------- /.local/bin/screenrecord: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | dimensions=$(xdpyinfo | grep 'dimensions:' | sed 's/ dimensions: //g;s/ pixels (507x317 millimeters)//g') 4 | output="$HOME/Videos/Recordings/$(date +%Y-%m-%d-%T)-recording.mkv" 5 | thumbnail="$HOME/.cache/recording-thumbnail.png" 6 | 7 | function record { 8 | scrot "${thumbnail}" 9 | dunstify -i "${thumbnail}" "Screen Recording Initiated" 10 | ffmpeg -video_size $dimensions -framerate 30 -f x11grab -i :0.0+0,0 -c:v libx264rgb -crf 0 -preset ultrafast $output 11 | rm "${thumbnail}" 12 | } 13 | 14 | function end_record { 15 | dunstify -i "${thumbnail}" "Screen Recording Ended" 16 | killall ffmpeg 17 | } 18 | 19 | pgrep ffmpeg && end_record || record 20 | -------------------------------------------------------------------------------- /.local/bin/screenshot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | output="/home/is0n/Pictures/Screenshots/$(date +%Y-%m-%d-%T)-screenshot.png" 4 | 5 | case "$1" in 6 | "full") scrot "$output" || exit ;; 7 | "area") scrot "$output" --select || exit ;; 8 | "window") scrot "$output" --focused || exit ;; 9 | esac 10 | 11 | dunstify -i "$output" "Screenshot Taken" 12 | -------------------------------------------------------------------------------- /.local/bin/vbar: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG_DIR="${HOME}/.config/eww/vbar/" 4 | EWW="eww -c ${CONFIG_DIR}" 5 | WIN="vbar" 6 | 7 | function close { 8 | ${EWW} close ${WIN} 9 | } 10 | 11 | function open { 12 | ${EWW} open ${WIN} 13 | } 14 | 15 | function toggle { 16 | ${EWW} close ${WIN} || ${EWW} open ${WIN} 17 | } 18 | 19 | case "$1" in 20 | open) 21 | open;; 22 | close) 23 | close;; 24 | toggle) 25 | toggle;; 26 | esac 27 | -------------------------------------------------------------------------------- /.xprofile: -------------------------------------------------------------------------------- 1 | # Keyboard 2 | xmodmap -e "clear lock" 3 | xmodmap -e "keycode 66 = Hyper_L" 4 | xmodmap -e "remove mod4 = Hyper_L" 5 | xmodmap -e "add mod3 = Hyper_L" 6 | xcape -e 'Hyper_L=Escape' 7 | xset r rate 280 40 8 | xmodmap -e 'keysym Escape = Escape asciitilde Escape' 9 | xmodmap -e "keycode 135 = Super_L" 10 | 11 | # Colors 12 | xrdb ~/.Xresources 13 | 14 | # Wallpaper 15 | ~/.local/bin/wallpaper -R 16 | 17 | # Daemons 18 | sxhkd & 19 | nm-applet & 20 | picom -b --experimental-backends & 21 | -------------------------------------------------------------------------------- /.zshenv: -------------------------------------------------------------------------------- 1 | export PATH="$HOME/.cargo/bin:$PATH" 2 | export PATH="$HOME/.local/bin:$PATH" 3 | export PATH="$HOME/.npm-global/bin:$PATH" 4 | 5 | export TERMINAL="alacritty" 6 | export EDITOR="nvim" 7 | export VISUAL="nvim" 8 | export READER="zathura" 9 | export VIDEO="mpv" 10 | 11 | # LF Icons 12 | export LF_ICONS="\ 13 | di=:\ 14 | fi=:\ 15 | ln=:\ 16 | or=:\ 17 | ex=:\ 18 | *.vimrc=:\ 19 | *.viminfo=:\ 20 | *.gitignore=:\ 21 | *.c=:\ 22 | *.cc=:\ 23 | *.clj=:\ 24 | *.coffee=:\ 25 | *.cpp=:\ 26 | *.css=:\ 27 | *.d=:\ 28 | *.dart=:\ 29 | *.erl=:\ 30 | *.exs=:\ 31 | *.fs=:\ 32 | *.go=:\ 33 | *.h=:\ 34 | *.hh=:\ 35 | *.hpp=:\ 36 | *.hs=:\ 37 | *.html=:\ 38 | *.java=:\ 39 | *.jl=:\ 40 | *.js=:\ 41 | *.json=:\ 42 | *.lua=:\ 43 | *.md=:\ 44 | *.php=:\ 45 | *.pl=:\ 46 | *.pro=:\ 47 | *.py=:\ 48 | *.rb=:\ 49 | *.rs=:\ 50 | *.scala=:\ 51 | *.ts=:\ 52 | *.vim=:\ 53 | *.cmd=:\ 54 | *.ps1=:\ 55 | *.sh=:\ 56 | *.bash=:\ 57 | *.zsh=:\ 58 | *.fish=:\ 59 | *.tar=:\ 60 | *.tgz=:\ 61 | *.arc=:\ 62 | *.arj=:\ 63 | *.taz=:\ 64 | *.lha=:\ 65 | *.lz4=:\ 66 | *.lzh=:\ 67 | *.lzma=:\ 68 | *.tlz=:\ 69 | *.txz=:\ 70 | *.tzo=:\ 71 | *.t7z=:\ 72 | *.zip=:\ 73 | *.z=:\ 74 | *.dz=:\ 75 | *.gz=:\ 76 | *.lrz=:\ 77 | *.lz=:\ 78 | *.lzo=:\ 79 | *.xz=:\ 80 | *.zst=:\ 81 | *.tzst=:\ 82 | *.bz2=:\ 83 | *.bz=:\ 84 | *.tbz=:\ 85 | *.tbz2=:\ 86 | *.tz=:\ 87 | *.deb=:\ 88 | *.rpm=:\ 89 | *.jar=:\ 90 | *.war=:\ 91 | *.ear=:\ 92 | *.sar=:\ 93 | *.rar=:\ 94 | *.alz=:\ 95 | *.ace=:\ 96 | *.zoo=:\ 97 | *.cpio=:\ 98 | *.7z=:\ 99 | *.rz=:\ 100 | *.cab=:\ 101 | *.wim=:\ 102 | *.swm=:\ 103 | *.dwm=:\ 104 | *.esd=:\ 105 | *.jpg=:\ 106 | *.jpeg=:\ 107 | *.mjpg=:\ 108 | *.mjpeg=:\ 109 | *.gif=:\ 110 | *.bmp=:\ 111 | *.pbm=:\ 112 | *.pgm=:\ 113 | *.ppm=:\ 114 | *.tga=:\ 115 | *.xbm=:\ 116 | *.xpm=:\ 117 | *.tif=:\ 118 | *.tiff=:\ 119 | *.png=:\ 120 | *.svg=:\ 121 | *.svgz=:\ 122 | *.mng=:\ 123 | *.pcx=:\ 124 | *.mov=:\ 125 | *.mpg=:\ 126 | *.mpeg=:\ 127 | *.m2v=:\ 128 | *.mkv=:\ 129 | *.webm=:\ 130 | *.ogm=:\ 131 | *.mp4=:\ 132 | *.m4v=:\ 133 | *.mp4v=:\ 134 | *.vob=:\ 135 | *.qt=:\ 136 | *.nuv=:\ 137 | *.wmv=:\ 138 | *.asf=:\ 139 | *.rm=:\ 140 | *.rmvb=:\ 141 | *.flc=:\ 142 | *.avi=:\ 143 | *.fli=:\ 144 | *.flv=:\ 145 | *.gl=:\ 146 | *.dl=:\ 147 | *.xcf=:\ 148 | *.xwd=:\ 149 | *.yuv=:\ 150 | *.cgm=:\ 151 | *.emf=:\ 152 | *.ogv=:\ 153 | *.ogx=:\ 154 | *.aac=:\ 155 | *.au=:\ 156 | *.flac=:\ 157 | *.m4a=:\ 158 | *.mid=:\ 159 | *.midi=:\ 160 | *.mka=:\ 161 | *.mp3=:\ 162 | *.mpc=:\ 163 | *.ogg=:\ 164 | *.ra=:\ 165 | *.wav=:\ 166 | *.oga=:\ 167 | *.opus=:\ 168 | *.spx=:\ 169 | *.xspf=:\ 170 | *.pdf=:\ 171 | *.nix=:\ 172 | *.yml=:\ 173 | *.yaml=:\ 174 | *.zshrc=:\ 175 | *.zshenv=:\ 176 | *.bashrc=:\ 177 | *.DS_Store=:\ 178 | bin/=:\ 179 | Downloads/=:\ 180 | Documents/=:\ 181 | Desktop/=:\ 182 | Music/=:\ 183 | Wallpapers/=:\ 184 | Pictures/=:\ 185 | Programming/=:\ 186 | Movies/=:\ 187 | TV/=:\ 188 | Public/=:\ 189 | Users/=:\ 190 | Notes/=:\ 191 | Shared/=:\ 192 | node_modules/=:\ 193 | .git/=:\ 194 | " 195 | 196 | # Fzf Stuff 197 | export FZF_DEFAULT_OPTS="--reverse" 198 | 199 | zle_highlight+=(paste:none) 200 | 201 | # vim: ft=sh 202 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # pidswallow 2 | [ "$XDG_SESSION_TYPE" = "x11" ] && xdotool getwindowfocus > /tmp/term-wid-"$$" 3 | trap "(rm -f /tmp/term-wid-"$$")" EXIT HUP 4 | 5 | # rice? 6 | colorblocks 7 | 8 | # Personal Settings & Vi Mode 9 | autoload -U compinit; compinit 10 | source ~/.config/shell/zsh-prompt-minimal 11 | source ~/.config/shell/shortcuts 12 | source ~/.config/shell/zsh-vi-mode 13 | 14 | # Options For History 15 | HISTSIZE=1000 16 | SAVEHIST=1000 17 | HISTFILE=~/.cache/zsh/history 18 | 19 | # ZSH Plugins 20 | [ -f ~/.config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh ] && source ~/.config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh 21 | [ -f ~/.config/shell/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ] && source ~/.config/shell/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh 22 | 23 | # Zoxide 24 | eval "$(zoxide init zsh)" 25 | --------------------------------------------------------------------------------