├── .config ├── bspwm │ ├── bspwmrc │ ├── picom │ │ └── picom.conf │ ├── scripts │ │ ├── autostart.sh │ │ ├── media │ │ └── redshift_toggle.sh │ └── sxhkd │ │ └── sxhkdrc ├── dunst │ ├── README.md │ ├── dunstrc │ └── scripts │ │ ├── reload.sh │ │ └── volume.sh ├── eww │ └── applets │ │ ├── eww.scss │ │ ├── eww.yuck │ │ └── src │ │ ├── scss │ │ ├── _variables.scss │ │ └── powermenu.scss │ │ └── yuck │ │ ├── widgets.yuck │ │ └── windows.yuck ├── fish │ ├── .gitignore │ ├── completions │ │ ├── aliases.fish │ │ └── fisher.fish │ ├── config.fish │ ├── fish_plugins │ └── functions │ │ └── fisher.fish ├── hypr │ ├── hyprland.conf │ ├── keybindings.conf │ ├── scripts │ │ ├── dmenu.sh │ │ └── screenshot.sh │ ├── startup.conf │ └── windowrules.conf ├── kitty │ ├── kitty.conf │ └── themes │ │ ├── catppuccin-mocha.conf │ │ └── everforest.conf ├── lf │ ├── README.md │ ├── icons │ │ └── icons │ ├── lfrc │ └── scripts │ │ ├── cleaner │ │ ├── lf_kitty_clean │ │ ├── lf_kitty_preview │ │ ├── lfrun │ │ ├── preview │ │ └── set_wall.sh ├── mpv │ ├── .gitignore │ ├── README.md │ ├── input.conf │ ├── lua-settings │ │ └── mpv_thumbnail_script.conf │ ├── mpv.conf │ └── scripts │ │ ├── auto-save-state.lua │ │ ├── mpv_thumbnail_script_client_osc.lua │ │ └── mpv_thumbnail_script_server.lua ├── neofetch │ ├── .gitignore │ ├── README.md │ └── config.conf ├── nvim │ ├── .gitignore │ ├── README.md │ ├── init.lua │ ├── lua │ │ ├── core │ │ │ ├── autocmd.lua │ │ │ ├── keybindings.lua │ │ │ ├── kittymargin.lua │ │ │ ├── lazy.lua │ │ │ ├── neovide.lua │ │ │ └── settings.lua │ │ ├── plugins │ │ │ ├── configs │ │ │ │ ├── alpha.lua │ │ │ │ ├── catppuccin.lua │ │ │ │ ├── conform.lua │ │ │ │ ├── lsp.lua │ │ │ │ ├── luasnip.lua │ │ │ │ ├── mason.lua │ │ │ │ ├── neo-tree.lua │ │ │ │ ├── noice-nvim.lua │ │ │ │ ├── nvim-cmp.lua │ │ │ │ ├── others.lua │ │ │ │ ├── statusline.lua │ │ │ │ └── treesitter.lua │ │ │ └── init.lua │ │ └── utils │ │ │ ├── ensure_installed.lua │ │ │ └── init.lua │ └── snips │ │ ├── package.json │ │ └── snippets │ │ └── bash.json ├── rofi │ ├── README.md │ ├── colorschemes │ │ ├── catppuccin-mocha.rasi │ │ └── everforest.rasi │ ├── config.rasi │ └── powermenu │ │ ├── config.rasi │ │ └── launch.sh ├── starship.toml ├── swaync │ ├── README.md │ ├── colorschemes │ │ ├── catppuccin-mocha.css │ │ └── everforest.css │ ├── config.json │ ├── scripts │ │ ├── hotreload.sh │ │ └── open-tray.sh │ └── style.css ├── waybar │ ├── README.md │ ├── colorschemes │ │ ├── catppuccin-mocha.css │ │ ├── everforest.css │ │ └── nightowl.css │ ├── config.jsonc │ ├── launch.sh │ ├── scripts │ │ ├── rofi-wifi-menu.sh │ │ └── waybar.sh │ └── style.css ├── wezterm │ ├── README.md │ └── wezterm.lua ├── yazi │ ├── keymap.toml │ ├── plugins │ │ └── set-wall.yazi │ │ │ └── init.lua │ ├── taplo.toml │ ├── theme.toml │ └── yazi.toml └── zsh │ ├── .gitignore │ ├── .zshrc │ ├── zsh_functions │ └── zsh_plugins └── README.md /.config/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | function run { 3 | if ! pgrep $1 ; 4 | then 5 | 6 | $@& 7 | fi 8 | } 9 | #LAUNCHERS 10 | ~/.config/bspwm/scripts/autostart.sh 11 | 12 | 13 | #nitrogen --restore & 14 | #bash $HOME/.config/polybar/launch.sh & 15 | #picom --experimental-backend --config $HOME/.config/bspwm/picom/picom.conf & 16 | #run numlockx on & 17 | #/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & 18 | #/usr/lib/xfce4/notifyd/xfce4-notifyd & 19 | #xrandr -s 1920x1080 -r 75.00 20 | # run megasync & 21 | 22 | keybLayout=$(setxkbmap -v | awk -F "+" '/symbols/ {print $2}') 23 | run sxhkd -c ~/.config/bspwm/sxhkd/sxhkdrc & 24 | 25 | 26 | #fix for moving spotify to specific workspace 27 | #bspc config external_rules_command ~/.config/bspwm/scripts/external_rules_command 28 | 29 | #BSPWM configuration 30 | #bspc config border_radius 8 31 | bspc config border_width 2 32 | bspc config window_gap 10 33 | bspc config top_padding 10 34 | bspc config bottom_padding 4.5 35 | bspc config left_padding 4.5 36 | bspc config right_padding 4.5 37 | bspc config single_monocle false 38 | #bspc config click_to_focus true 39 | bspc config split_ratio 0.50 40 | bspc config borderless_monocle true 41 | bspc config gapless_monocle true 42 | #bspc config focus_by_distance true 43 | bspc config focus_follows_pointer true 44 | #bspc config history_aware_focus true 45 | bspc config pointer_modifier mod4 46 | bspc config pointer_action1 move 47 | bspc config pointer_action2 resize_side 48 | bspc config pointer_action3 resize_corner 49 | bspc config remove_disabled_monitors true 50 | bspc config merge_overlapping_monitors true 51 | 52 | 53 | 54 | #BSPWM coloring 55 | bspc config normal_border_color "#4c566a" 56 | bspc config active_border_color "#1e1e1e" 57 | bspc config focused_border_color "#5e81ac" 58 | bspc config presel_feedback_color "#5e81ac" 59 | #bspc config urgent_border_color "#dd2727" 60 | 61 | 62 | #Single monitor 63 | bspc monitor -d 1 2 3 4 5 64 | 65 | #Dual monitor 66 | #find out names with arandr or xrandr 67 | #bspc monitor DP-2 -d 1 2 3 4 5 6 7 8 9 68 | #bspc monitor LVDS1 -d 1 2 3 4 69 | #bspc monitor DP3 -d 5 6 7 8 9 70 | #bspc monitor HDMI-0 -d 1 2 3 4 5 6 7 8 9 10 71 | #bspc monitor HDMI-1 -d 1 2 3 4 5 6 7 8 9 10 72 | #bspc monitor HDMI1 -d 1 2 3 4 5 73 | #bspc monitor HDMI2 -d 6 7 8 9 10 74 | 75 | #Fullscreen applications 76 | #bspc rule -a inkscape state=fullscreen 77 | bspc rule -a Spotify state=floating 78 | bspc rule -a Vlc state=fullscreen 79 | bapc rule -a xdman state=floating 80 | bapc rule -a virt-manager state=fullscreen 81 | #bspc rule -a VirtualBox Manager state=fullscreen 82 | #bspc rule -a VirtualBox Machine state=fullscreen 83 | bspc rule -a Gimp state=fullscreen 84 | bspc rule -a pamac-manager state=fullscreen 85 | bspc rule -a mpv state=fullscreen 86 | 87 | #Floating applications 88 | #bspc rule -a Arandr state=floating 89 | #bspc rule -a Arcolinux-tweak-tool.py state=floating 90 | #bspc rule -a Arcolinux-welcome-app.py state=floating 91 | #bspc rule -a Arcolinux-calamares-tool.py state=floating 92 | #bspc rule -a feh state=floating 93 | #bspc rule -a mpv state=floating sticky=on 94 | #bspc rule -a Font-manager state=floating 95 | #bspc rule -a Galculator state=floating 96 | #bspc rule -a Gpick state=floating sticky=on 97 | bspc rule -a Nitrogen state=floating sticky=on 98 | #bspc rule -a Oblogout state=floating 99 | #bspc rule -a Pavucontrol state=floating sticky=on 100 | #bspc rule -a Peek state=floating 101 | #bspc rule -a rofi state=floating sticky=on 102 | #bspc rule -a Skype state=floating 103 | #bspc rule -a Stacer state=floating 104 | bspc rule -a Xfce4-appfinder state=floating sticky=on 105 | #bspc rule -a Xfce4-terminal state=floating 106 | bspc config pointer_motion_interval 7 #makes mouse drag smooth 107 | 108 | #Tiled applications 109 | #bspc rule -a Gnome-disks state=tiled 110 | #bspc rule -a Xfce4-settings-manager state=tiled 111 | 112 | #open applications on specific workspaces 113 | #bspc rule -a Firefox desktop='^1' follow=on 114 | #bspc rule -a Google-chrome desktop='^1' follow=on 115 | #bspc rule -a Chromium desktop='^1' follow=on 116 | #bspc rule -a Subl desktop='^2' follow=on 117 | #bspc rule -a Atom desktop='^2' follow=on 118 | #bspc rule -a Steam desktop='^5' 119 | #bspc rule -a vlc desktop='^6' follow=on 120 | #bspc rule -a mpv desktop='^6' follow=on 121 | #bspc rule -a Vivaldi-stable desktop='^6' follow=on 122 | #bspc rule -a Vivaldi-snapshot desktop='^6' follow=on 123 | #bspc rule -a Transmission-gtk desktop='^7' follow=on 124 | #bspc rule -a Thunar desktop='^8' follow=on 125 | #bspc rule -a discord desktop='^9' follow=on 126 | #bspc rule -a Spotify desktop='^10' follow=on 127 | 128 | #Spotify fix --move desktop 10 129 | #sleep 1 130 | #wmctrl -r Spotify -t 10 131 | #exit 132 | 133 | #polybar hidden when fullscreen for vlc, youtube, mpv ... 134 | #find out the name of your monitor with xrandr 135 | #xdo below -t $(xdo id -n root) $(xdo id -a polybar-main_DP-1) 136 | #xdo below -t $(xdo id -n root) $(xdo id -a polybar-main_HDMI1) 137 | #xdo below -t $(xdo id -n root) $(xdo id -a polybar-main_HDMI2) 138 | 139 | ###External rules 140 | ##Pseudo automatic mode: always splits focused window when opening new window 141 | #bspc config external_rules_command ~/.config/bspwm/scripts/pseudo_automatic_mode 142 | ##Adjust new window: splits biggest windows to keep windows about the same size 143 | #bspc config external_rules_command ~/.config/bspwm/scripts/adjust-new-window 144 | -------------------------------------------------------------------------------- /.config/bspwm/picom/picom.conf: -------------------------------------------------------------------------------- 1 | ################################# 2 | # Shadows # 3 | ################################# 4 | 5 | 6 | shadow = false; 7 | 8 | shadow-radius = 12; 9 | 10 | shadow-opacity = .75; 11 | 12 | shadow-offset-x = -4; 13 | 14 | shadow-offset-y = -4; 15 | 16 | 17 | shadow-exclude = [ 18 | "class_g = 'Polybar'", 19 | ]; 20 | 21 | 22 | ################################# 23 | # Fading # 24 | ################################# 25 | 26 | fading = true 27 | 28 | fade-in-step = 0.050; 29 | 30 | fade-out-step = 0.100; 31 | 32 | 33 | ################################# 34 | # Transparency / Opacity # 35 | ################################# 36 | 37 | frame-opacity = 1.0; 38 | 39 | inactive-opacity-override = false; 40 | 41 | focus-exclude = [ "class_g = 'Cairo-clock'", 42 | "class_g = 'GLava'" ]; 43 | 44 | opacity-rule = [ 45 | "100:name *= 'Alacritty'", 46 | ]; 47 | 48 | ################################# 49 | # Background-Blurring # 50 | ################################# 51 | 52 | # blur: 53 | # { 54 | # method = "gaussian"; 55 | # size = 5; 56 | # deviation = 5.0; 57 | # }; 58 | 59 | # blur-background = true 60 | 61 | # blur-kern = "3x3box"; 62 | 63 | blur-background-exclude = [ 64 | "class_g = 'GLava'", 65 | "class_g = 'slop'", 66 | ]; 67 | 68 | blur: { 69 | method = "dual_kawase"; 70 | strength = 4; 71 | background = true; 72 | background-frame = false; 73 | background-fixed = true; 74 | } 75 | 76 | ################################# 77 | # Rounded Corners # 78 | ################################# 79 | corner-radius = 8; 80 | rounded-corners-exclude = [ 81 | "class_g = 'Rofi'", 82 | "class_g = 'Polybar'", 83 | "class_g = 'dunst'", 84 | ]; 85 | 86 | round-borders = 1; 87 | round-borders-exclude = [ 88 | #"class_g = 'TelegramDesktop'", 89 | ]; 90 | 91 | ################################# 92 | # General Settings # 93 | ################################# 94 | 95 | 96 | backend = "glx"; 97 | 98 | 99 | vsync = true 100 | 101 | mark-wmwin-focused = true; 102 | 103 | 104 | mark-ovredir-focused = true; 105 | 106 | detect-rounded-corners = true; 107 | 108 | 109 | detect-client-opacity = true; 110 | 111 | 112 | refresh-rate = 60 113 | 114 | 115 | detect-transient = true 116 | 117 | 118 | detect-client-leader = true 119 | 120 | 121 | use-damage = true 122 | 123 | 124 | log-level = "warn"; 125 | 126 | 127 | wintypes: 128 | { 129 | tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; full-shadow = false; }; 130 | dock = { shadow = true; } 131 | dnd = { shadow = false; } 132 | popup_menu = { opacity = 0.8; } 133 | dropdown_menu = { opacity = 0.8; } 134 | }; 135 | -------------------------------------------------------------------------------- /.config/bspwm/scripts/autostart.sh: -------------------------------------------------------------------------------- 1 | !/bin/bash 2 | 3 | function run { 4 | if ! pgrep $1 ; 5 | then 6 | $@& 7 | fi 8 | } 9 | 10 | # display setting 11 | #xrandr -s 1920x1080 -r 75.00 12 | 13 | 14 | # polybar 15 | ~/.config/polybar/launch.sh --forest & 16 | 17 | 18 | # sxhkd 19 | 20 | #change your keyboard if you need it 21 | #setxkbmap -layout be 22 | #keybLayout=$(setxkbmap -v | awk -F "+" '/symbols/ {print $2}') 23 | #if [ $keybLayout = "be" ]; then 24 | # run sxhkd -c ~/.config/bspwm/sxhkd/sxhkdrc-azerty & 25 | #else 26 | # run sxhkd -c ~/.config/bspwm/sxhkd/sxhkdrc & 27 | #fi 28 | run sxhkd -c ~/.config/bspwm/sxhkd/sxhkdrc & 29 | 30 | 31 | # wallpaper 32 | #nitrogen --restore & 33 | #run variety & 34 | run feh --bg-fill ~/.config/wall.png & 35 | 36 | xsetroot -cursor_name left_ptr & 37 | 38 | # other programms 39 | 40 | numlockx on & # enables numlock on system boot 41 | #run xfce4-clipman & # clipboard manager 42 | #run nm-applet & # network manager icon 43 | #run imwheel & # for faster mouse scroll 44 | # run greenclip daemon & # CLI clipboard manager 45 | run ~/.config/conky/launch.sh 46 | 47 | # picom 48 | picom --experimental-backend --config ~/.config/bspwm/picom/picom.conf & 49 | 50 | 51 | 52 | # polkit agent 53 | #run lxsession & 54 | # /usr/lib/polkit-kde-authentication-agent-1 & 55 | #/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & 56 | 57 | 58 | 59 | # notification daemon 60 | run dunst & 61 | #/usr/lib/xfce4/notifyd/xfce4-notifyd & 62 | 63 | 64 | #Input Method 65 | 66 | # export GTK_IM_MODULE=ibus 67 | # export XMODIFIERS=@im=ibus 68 | # export QT_IM_MODULE=ibus 69 | # ibus-daemon -drxR 70 | -------------------------------------------------------------------------------- /.config/bspwm/scripts/media: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if ! pgrep spotify; then 4 | playerctl $1 5 | else 6 | playerctl --player=spotify $1 7 | fi 8 | -------------------------------------------------------------------------------- /.config/bspwm/scripts/redshift_toggle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -z $(pgrep redshift) ]; then redshift ; else pkill -USR1 redshift ; fi 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.config/bspwm/sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | ################################################################# 2 | # KEYBOARD BINDINGS FOR ANY TWM 3 | ################################################################# 4 | #Navigation 5 | 6 | super + {h,j,k,l} 7 | bspc node -f {west,south,north,east} 8 | 9 | 10 | 11 | ################################################################# 12 | # SUPER + FUNCTION KEYS 13 | ################################################################# 14 | 15 | # quit/restart bspwm 16 | super + shift + {q,r} 17 | bspc {quit,wm -r} 18 | 19 | 20 | # redshift 21 | super + F1 22 | bash ~/.config/bspwm/scripts/redshift_toggle.sh 23 | # bash -c 'if [ -z $(pgrep redshift) ]; then redshift ; else pkill -USR1 redshift ; fi' 24 | 25 | 26 | # Toggle redshift 27 | super + F2 28 | # if ps aux | grep some_proces[s] > /tmp/test.txt; then echo 1; else echo 0; fi 29 | flameshot gui 30 | 31 | # Flameshot 32 | super + F3 33 | nm-applet 34 | 35 | #Gimp 36 | super + F4 37 | gimp 38 | 39 | #Meld 40 | super + F5 41 | meld 42 | 43 | #Vlc 44 | super + F6 45 | vlc --video-on-top 46 | 47 | #Virtualbox 48 | super + F7 49 | virtualbox 50 | 51 | #Thunar 52 | super + F8 53 | pcmanfm 54 | 55 | #Evolution 56 | super + F9 57 | evolution 58 | 59 | #Spotify 60 | super + F10 61 | spotify 62 | 63 | #Rofi Fullscreen 64 | super + F11 65 | rofi -theme-str 'window \{width: 100%;height: 100%;\}' -show drun 66 | 67 | #Rofi 68 | super + F12 69 | rofi -show drun 70 | 71 | ################################################################# 72 | # SUPER + ... KEYS 73 | ################################################################# 74 | 75 | # Clipboard (greenclip) 76 | super + c 77 | rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' -theme ~/.config/rofi/rofi-collection/murz/murz.rasi 78 | 79 | # Screenshot 80 | super + s 81 | ~/.config/rofi/applets/bin/screenshot.sh 82 | 83 | 84 | # Apps 85 | super + a 86 | ~/.config/rofi/launchers/type-5/launcher.sh 87 | 88 | #VS-Code 89 | super + e 90 | kitty --hold -e ~/.config/lf/scripts/lfrun 91 | # kitty --hold -e ranger 92 | 93 | #Browser 94 | super + w 95 | brave 96 | 97 | #Htop 98 | super + h 99 | alacritty -e gotop 100 | 101 | #arcolinux-logout 102 | super + x 103 | ~/.config/rofi/powermenu/type-4/powermenu.sh 104 | 105 | #Rofi theme selector 106 | super + r 107 | rofi-theme-selector 108 | 109 | #Urxvt 110 | super + t 111 | urxvt 112 | 113 | #Pavucontrol 114 | super + v 115 | pavucontrol 116 | 117 | #Ncmpcpp 118 | super + m 119 | kitty --hold -e ncmpcpp 120 | 121 | #urxvt 122 | super + Return 123 | kitty 124 | 125 | #Xkill 126 | super + Escape 127 | xkill 128 | 129 | #Keyboard dependent 130 | #urxvt 131 | super + KP_Enter 132 | alacritty 133 | 134 | ################################################################# 135 | # SUPER + SHIFT KEYS 136 | ################################################################# 137 | 138 | 139 | #File-Manager 140 | super + shift + Return 141 | pcmanfm-qt 142 | 143 | #Keyboard dependent 144 | #File-Manager 145 | #super + shift + KP_Enter 146 | # thunar 147 | 148 | #dmenu 149 | super + shift + d 150 | dmenu_run -i -nb '#191919' -nf '#fea63c' -sb '#fea63c' -sf '#191919' -fn 'NotoMonoRegular:bold:pixelsize=14' 151 | 152 | #reload sxhkd: 153 | super + shift + s 154 | pkill -USR1 -x sxhkd 155 | 156 | #Keyboard dependent 157 | #super + shift + KP_Enter 158 | # thunar 159 | 160 | 161 | ################################################################# 162 | # CONTROL + ALT KEYS 163 | ################################################################# 164 | 165 | #arcolinux-welcome-app 166 | ctrl + alt + w 167 | arcolinux-welcome-app 168 | 169 | #arcolinux-tweak-tool 170 | ctrl + alt + e 171 | arcolinux-tweak-tool 172 | 173 | #conky-rotate 174 | ctrl + alt + Next 175 | conky-rotate -n 176 | 177 | #conky-rotate 178 | ctrl + alt + Prior 179 | conky-rotate -p 180 | 181 | #File-Manager 182 | ctrl + alt + b 183 | pcmanfm 184 | 185 | #Catfish 186 | ctrl + alt + c 187 | catfish 188 | 189 | #Chromium 190 | ctrl + alt + g 191 | chromium -no-default-browser-check 192 | 193 | #Firefox 194 | ctrl + alt + f 195 | firefox 196 | 197 | #Nitrogen 198 | ctrl + alt + i 199 | nitrogen 200 | 201 | #arcolinux-logout 202 | ctrl + alt + k 203 | arcolinux-logout 204 | 205 | #arcolinux-logout 206 | ctrl + alt + l 207 | arcolinux-logout 208 | 209 | #Pamac-manager 210 | ctrl + alt + p 211 | pamac-manager 212 | 213 | #Xfce4-settings-manager 214 | ctrl + alt + m 215 | xfce4-settings-manager 216 | 217 | #Pulse Audio Control 218 | ctrl + alt + u 219 | pavucontrol 220 | 221 | #Rofi theme selector 222 | ctrl + alt + r 223 | rofi-theme-selector 224 | 225 | #Spotify 226 | ctrl + alt + s 227 | spotify 228 | 229 | #konsole 230 | ctrl + alt + Return 231 | konsole 232 | 233 | #konsole 234 | ctrl + alt + t 235 | konsole 236 | 237 | #Vivaldi 238 | ctrl + alt + v 239 | vivaldi-stable 240 | 241 | #Xfce4-appfinder 242 | ctrl + alt + a 243 | xfce4-appfinder 244 | 245 | 246 | #Keyboard dependent 247 | #urxvt 248 | #ctrl + alt + KP_Enter 249 | # urxvt 250 | 251 | 252 | ################################################################# 253 | # ALT + ... KEYS 254 | ################################################################# 255 | 256 | #Wallpaper trash 257 | alt + t 258 | variety -t 259 | 260 | #Wallpaper next 261 | alt + n 262 | variety -n 263 | 264 | #Wallpaper previous 265 | alt + p 266 | variety -p 267 | 268 | #Wallpaper favorite 269 | alt + f 270 | variety -f 271 | 272 | #Wallpaper previous 273 | alt + Left 274 | variety -p 275 | 276 | #Wallpaper next 277 | alt + Right 278 | variety -n 279 | 280 | #Wallpaper toggle-pause 281 | alt + Up 282 | variety --toggle-pause 283 | 284 | #Wallpaper resume 285 | alt + Down 286 | variety --resume 287 | 288 | #Xfce appfinder 289 | alt + F2 290 | xfce4-appfinder --collapsed 291 | 292 | #Xfce4-appfinder 293 | alt + F3 294 | xfce4-appfinder 295 | 296 | #Xlunch app launcher 297 | #alt + F5 298 | # xlunch --config ~/.config/xlunch/default.conf --input ~/.config/xlunch/entries.dsv 299 | 300 | 301 | ################################################################# 302 | #VARIETY KEYS WITH PYWAL 303 | ################################################################# 304 | 305 | #Wallpaper trash 306 | alt + shift + t 307 | variety -t && wal -i $(cat $HOME/.config/variety/wallpaper/wallpaper.jpg.txt)& 308 | 309 | #Wallpaper next 310 | alt + shift + n 311 | variety -n && wal -i $(cat $HOME/.config/variety/wallpaper/wallpaper.jpg.txt)& 312 | 313 | #Wallpaper previous 314 | alt + shift + p 315 | variety -p && wal -i $(cat $HOME/.config/variety/wallpaper/wallpaper.jpg.txt)& 316 | 317 | #Wallpaper favorite 318 | alt + shift + f 319 | variety -f && wal -i $(cat $HOME/.config/variety/wallpaper/wallpaper.jpg.txt)& 320 | 321 | #Wallpaper update 322 | alt + shift + u 323 | wal -i $(cat $HOME/.config/variety/wallpaper/wallpaper.jpg.txt)& 324 | 325 | ################################################################# 326 | # CONTROL + SHIFT KEYS 327 | ################################################################# 328 | 329 | #Xcfe4-TaskManager 330 | ctrl + shift + Escape 331 | xfce4-taskmanager 332 | 333 | 334 | ################################################################# 335 | # SCREENSHOTS 336 | ################################################################# 337 | 338 | #Scrot 339 | Print 340 | scrot 'ArcoLinux-%Y-%m-%d-%s_screenshot_$wx$h.jpg' -e 'mv $f $$(xdg-user-dir PICTURES)' 341 | 342 | #screeenshooter 343 | ctrl + Print 344 | xfce4-screenshooter 345 | 346 | #Gnome-Screenshot 347 | ctrl + shift + Print 348 | gnome-screenshot -i 349 | 350 | 351 | ################################################################# 352 | # FUNCTION KEYS 353 | ################################################################# 354 | 355 | #xfce4-terminal dropdown 356 | F12 357 | xfce4-terminal --drop-down 358 | 359 | 360 | ################################################################# 361 | # MULTIMEDIA KEYS 362 | ################################################################# 363 | 364 | #Raises volume 365 | XF86AudioRaiseVolume 366 | amixer set Master 10%+ 367 | 368 | #Lowers volume 369 | XF86AudioLowerVolume 370 | amixer set Master 10%- 371 | 372 | #Mute 373 | XF86AudioMute 374 | amixer -D pulse set Master 1+ toggle 375 | 376 | #Playerctl works for Pragha, Spotify and others 377 | #Delete the line for playerctl if you want to use mpc 378 | #and replace it with the corresponding code 379 | #mpc works for e.g.ncmpcpp 380 | #mpc toggle 381 | #mpc next 382 | #mpc prev 383 | #mpc stop 384 | 385 | #PLAY 386 | XF86AudioPlay 387 | playerctl play-pause 388 | 389 | #Next 390 | XF86AudioNext 391 | playerctl next 392 | 393 | #previous 394 | XF86AudioPrev 395 | playerctl previous 396 | 397 | #Stop 398 | XF86AudioStop 399 | playerctl stop 400 | 401 | #Brightness up 402 | XF86MonBrightnessUp 403 | xbacklight -inc 10 404 | 405 | #Brightness down 406 | XF86MonBrightnessDown 407 | xbacklight -dec 10 408 | 409 | ######################### 410 | # POLYBAR # 411 | ######################### 412 | 413 | #Hide polybar 414 | super + y 415 | polybar-msg cmd toggle 416 | 417 | ################################################################# 418 | ################################################################# 419 | ################## DESKTOP SPECIFIC ######################## 420 | ################################################################# 421 | ################################################################# 422 | 423 | ################################################################# 424 | # CTRL + ALT KEYS 425 | ################################################################# 426 | 427 | #Picom Toggle 428 | ctrl + alt + o 429 | ~/.config/bspwm/scripts/picom-toggle.sh 430 | 431 | ################################################################# 432 | # SUPER + KEYS 433 | ################################################################# 434 | 435 | #Toggle fullscreen of window 436 | super + f 437 | bspc node --state \~fullscreen 438 | 439 | # Toggle pseudo tiling of window 440 | super + p 441 | bspc node --state \~pseudo_tiled 442 | 443 | #kill 444 | super + q 445 | bspc node -c 446 | 447 | ################################################################# 448 | # SUPER KEYS 449 | ################################################################# 450 | 451 | #Focus selected desktop 452 | super + Tab 453 | bspc desktop -f '^{1-9,10}' 454 | 455 | # Increase/decrease window gap on focused desktop 456 | super + bracket{left,right} 457 | bspc config -d focused window_gap $((`bspc config -d focused window_gap` {-,+} 5 )) 458 | 459 | # set the window state 460 | super + space 461 | bspc node -t {tiled,pseudo_tiled,floating,fullscreen} 462 | 463 | # Move focus to other monitor 464 | super + BackSpace 465 | bspc monitor -f next 466 | 467 | ################################################################# 468 | # SUPER + ALT KEYS 469 | ################################################################# 470 | 471 | # Move floating window 472 | super + alt + {_,shift + }{Left,Down,Up,Right} 473 | ~/.config/bspwm/scripts/move-window {_,edge-}{west,south,north,east} 474 | 475 | ################################################################# 476 | # SUPER + CONTROL KEYS 477 | ################################################################# 478 | 479 | # Cancel preselection 480 | super + ctrl + space 481 | bspc node --presel-dir cancel 482 | 483 | ################################################################# 484 | # SUPER + SHIFT KEYS 485 | ################################################################# 486 | 487 | #Lock screen (betterlockscreen) 488 | super + shift + l 489 | betterlockscreen -l dimblur 490 | #Reload bspwm 491 | super + shift + r 492 | ~/.config/bspwm/bspwmrc 493 | 494 | #kill 495 | super + shift + q 496 | bspc node -c 497 | 498 | #Logout 499 | #super + shift + x 500 | # bspc quit 501 | 502 | # Focus/swap windows by direction 503 | super + {_,shift + }{h,j,k,l} 504 | bspc node --{focus,swap} {west,south,north,east} 505 | 506 | # Flip layout vertically/horizontally 507 | super + {_,shift + }a 508 | bspc node @/ --flip {vertical,horizontal} 509 | 510 | # Move focused window to other monitor 511 | super + shift + Left 512 | bspc node -m next --follow 513 | 514 | # Move focused window to other monitor 515 | super + shift + Right 516 | bspc node -m next --follow 517 | 518 | # Move focused window to other monitor 519 | super + shift + Up 520 | bspc node -m next --follow 521 | 522 | # Move focused window to other monitor 523 | super + shift + Down 524 | bspc node -m next --follow 525 | 526 | ################################################################# 527 | # SUPER + CONTROL KEYS 528 | ################################################################# 529 | 530 | # Focus/swap windows by direction 531 | super + ctrl + {Left,Down,Up,Right} 532 | bspc node --{focus} {west,south,north,east} 533 | 534 | # Contract tiled space 535 | super + ctrl + {h,j,k,l} 536 | bspc node {@east -r -10,@north -r +10,@south -r -10,@west -r +10} 537 | 538 | # Focus parent/brother/first/second for preselection 539 | super + ctrl + {e,r,t,y} 540 | bspc node --focus @{parent,brother,first,second} 541 | 542 | # Preselect the splitting area for next window on leaf/parent 543 | super + ctrl + {u,i,o,p} 544 | bspc node --presel-dir \~{west,south,north,east} 545 | 546 | # Define splitting ratio for next window on leaf/parent 547 | super + ctrl + {_,shift +}{1-9} 548 | bspc node {_,@/} --presel-ratio 0.{1-9} 549 | 550 | 551 | ################################################################# 552 | # ALT KEYS 553 | ################################################################# 554 | # scrachpad 555 | alt + 1 556 | tdrop -am -w 40% -y 30% -x 30% konsole 557 | 558 | #Focus selected desktop 559 | alt + Tab 560 | bspc desktop -f '^{1-9,10}' 561 | 562 | #Focus selected desktop 563 | alt + shift + Tab 564 | bspc desktop -f '^{1-9,10}' 565 | 566 | #Rotate desktop 567 | alt + space 568 | bspc node @/ --rotate {90,-90} 569 | 570 | ################################################################# 571 | # ALT + SHIFT KEYS 572 | ################################################################# 573 | 574 | # Expand tiled space 575 | alt + shift + {h,j,k,l} 576 | bspc node {@west -r -10,@south -r +10,@north -r -10,@east -r +10} 577 | 578 | 579 | ################################################################# 580 | # CTRL + ALT KEYS 581 | ################################################################# 582 | 583 | 584 | # Focus next/previous window 585 | ctrl + alt + Left 586 | bspc node --focus west 587 | 588 | # Focus next/previous window 589 | ctrl + alt + Right 590 | bspc node --focus east 591 | 592 | # Focus Up window 593 | ctrl +alt + Up 594 | bspc node --focus north 595 | 596 | # Focus Down window 597 | ctrl + alt + Down 598 | bspc node --focus south 599 | 600 | ################################################################# 601 | ################################################################# 602 | ################## AZERTY/QWERTY/ ... KEYBOARD################# 603 | ################################################################# 604 | ################################################################# 605 | 606 | #Switch here between qwerty and azerty or make new one 607 | #Focus selected desktop FOR QWERTY KEYBOARDS 608 | super + {1-9,0} 609 | bspc desktop -f '^{1-9,10}' 610 | 611 | #Focus selected desktop FOR BELIGIAN AZERTY KEYBOARDS 612 | #super + {ampersand,eacute,quotedbl,apostrophe,parenleft,section,egrave,exclam,ccedilla,agrave} 613 | # bspc desktop -f '^{1-9,10}' 614 | 615 | #Focus selected desktop FOR FRNECH AZERTY KEYBOARDS 616 | #super + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} 617 | # bspc desktop -f '^{1-9,10}' 618 | 619 | ################################################################# 620 | 621 | #Switch here between qwerty and azerty or make new one 622 | #Move window to selected desktop FOR QWERTY KEYBOARDS 623 | super + shift + {1-9,0} 624 | id=$(bspc query -N -n); bspc node -d ^{1-9,10}; bspc node -f ${id}} 625 | 626 | #Move window to selected desktop FOR AZERTY KEYBOARDS 627 | #super + shift + {ampersand,eacute,quotedbl,apostrophe,parenleft,section,egrave,exclam,ccedilla,agrave} 628 | # id=$(bspc query -N -n); bspc node -d ^{1-9,10}; bspc node -f ${id}} 629 | 630 | ################################################################# 631 | 632 | 633 | ## super & mouse scroll 634 | 635 | # Focused desktop window gap 636 | super + button{4,5} 637 | bspc config -d focused window_gap $((`bspc config -d focused window_gap` {-,+} 2 )) 638 | -------------------------------------------------------------------------------- /.config/dunst/README.md: -------------------------------------------------------------------------------- 1 | #### Screenshots 2 | ___ 3 | 4 | ![dunst2](https://i.postimg.cc/VsxgSg5w/dunst2.png) 5 | ![dunst](https://i.postimg.cc/mDZY3FRb/dunst.png) 6 | 7 | ___ 8 | 9 | **Credits** 10 | 11 | https://github.com/FrenzyExists/dotfiles/tree/master/config/dunst 12 | 13 | https://gitlab.com/Nmoleo/i3-volume-brightness-indicator 14 | 15 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | # Frenzy's Dunst 2 | 3 | #[colors] 4 | #foreground = "#8791a3" 5 | 6 | [global] 7 | ### Display ### 8 | 9 | # Which monitor should the notifications be displayed on. 10 | monitor = 0 11 | follow = keyboard 12 | 13 | # The geometry of the window: 14 | # [{width}]x{height}[+/-{x}+/-{y}] 15 | # The geometry of the message window. 16 | geometry = "342x3-34+34" 17 | 18 | indicate_hidden = false 19 | 20 | # Show how many messages are currently hidden (because of geometry). 21 | shrink = false 22 | 23 | # Transparency of notifications [0-100] 24 | transparency = 0 25 | 26 | # Notification stack 27 | notification_height = 3 28 | 29 | # You want a Gap? 30 | separator_height = 1 31 | 32 | # Notification box padding 33 | padding = 24 34 | horizontal_padding = 24 35 | 36 | # The Thing that Barbose implemented in his fork 37 | frame_width = 3 38 | outer_frame_width = 14 39 | 40 | # Round corners, that's it 41 | corner_radius = 8 42 | 43 | # From what Barbose implemented, the other frame 44 | # outer_frame_color = "#1b1b23" 45 | 46 | separator_color = auto 47 | sort = yes 48 | idle_threshold = 120 49 | 50 | # Text 51 | font = Cartograph CF 13 52 | line_height = 1 53 | 54 | markup = full 55 | 56 | # The format of the message. Possible variables are: 57 | # %a appname 58 | # %s summary 59 | # %b body 60 | # %i iconname (including its path) 61 | # %I iconname (without its path) 62 | # %p progress value if set ([ 0%] to [100%]) or nothing 63 | # %n progress value if set without any extra characters 64 | # %% Literal % 65 | # Markup is allowed 66 | format = "%s\n%b" 67 | #format = " %s\n%b" 68 | alignment = center 69 | show_age_threshold = -1 70 | word_wrap = true 71 | ellipsize = middle 72 | ignore_newline = false 73 | stack_duplicates = true 74 | hide_duplicate_count = true 75 | show_indicators = true 76 | 77 | ### Icons ### 78 | icon_position = left 79 | max_icon_size = 64 80 | 81 | ### History ### 82 | sticky_history = yes 83 | history_length = 20 84 | 85 | ### Misc/Advanced ### 86 | dmenu = /usr/bin/alacritty -e fzf: 87 | browser = linkhandler 88 | always_run_script = false 89 | title = Dunst 90 | class = Dunst 91 | startup_notification = false 92 | force_xinerama = false 93 | 94 | [experimental] 95 | per_monitor_dpi = false 96 | 97 | 98 | [shortcuts] 99 | close = ctrl+space 100 | close_all = ctrl+shift+space 101 | history = ctrl+grave 102 | 103 | [urgency_low] 104 | background = "#1b1b23" 105 | frame_color = "#caf6bb" 106 | icon = "~/.config/dunst/icons/low.svg" 107 | foreground="#8791a3" 108 | timeout = 3 109 | 110 | [urgency_normal] 111 | background = "#1b1b23" 112 | frame_color = "#2c2e3e" 113 | timeout = 5 114 | foreground="#8791a3" 115 | 116 | [urgency_critical] 117 | background = "#1b1b23" 118 | frame_color = "#ebb9b9" 119 | icon = "~/.config/dunst/icons/critical.svg" 120 | timeout = 0 121 | foreground="#8791a3" 122 | 123 | 124 | # vim: ft=conf 125 | -------------------------------------------------------------------------------- /.config/dunst/scripts/reload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG_FILES="$HOME/.config/dunst/dunstrc" 4 | 5 | trap "killall dunst" EXIT 6 | 7 | while true; do 8 | dunst & 9 | inotifywait -e create,modify $CONFIG_FILES 10 | killall dunst 11 | done 12 | -------------------------------------------------------------------------------- /.config/dunst/scripts/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | volume_step=2 4 | max_volume=100 5 | notification_timeout=1000 6 | 7 | # Uses regex to get volume from pactl 8 | function get_volume { 9 | pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1 10 | } 11 | 12 | # Uses regex to get mute status from pactl 13 | function get_mute { 14 | pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)' 15 | } 16 | 17 | # Returns a mute icon, a volume-low icon, or a volume-high icon, depending on the volume 18 | function get_volume_icon { 19 | volume=$(get_volume) 20 | mute=$(get_mute) 21 | if [ "$volume" -eq 0 ] || [ "$mute" == "yes" ]; then 22 | volume_icon="" 23 | elif [ "$volume" -lt 50 ]; then 24 | volume_icon="" 25 | else 26 | volume_icon="" 27 | fi 28 | } 29 | 30 | function show_volume_notif { 31 | volume=$(get_mute) 32 | get_volume_icon 33 | notify-send -t $notification_timeout -h string:x-dunst-stack-tag:volume_notif -h int:value:$volume "$volume_icon $volume%" 34 | } 35 | 36 | case $1 in 37 | volume_up) 38 | pactl set-sink-mute @DEFAULT_SINK@ 0 39 | volume=$(get_volume) 40 | if [ $(("$volume" + "$volume_step")) -gt $max_volume ]; then 41 | pactl set-sink-volume @DEFAULT_SINK@ $max_volume% 42 | else 43 | pactl set-sink-volume @DEFAULT_SINK@ +$volume_step% 44 | fi 45 | show_volume_notif 46 | ;; 47 | 48 | volume_down) 49 | pactl set-sink-volume @DEFAULT_SINK@ -$volume_step% 50 | show_volume_notif 51 | ;; 52 | 53 | volume_mute) 54 | pactl set-sink-mute @DEFAULT_SINK@ toggle 55 | show_volume_notif 56 | ;; 57 | esac 58 | -------------------------------------------------------------------------------- /.config/eww/applets/eww.scss: -------------------------------------------------------------------------------- 1 | @import "./src/scss/_variables.scss" 2 | @import "./src/scss/powermenu.scss"; 3 | -------------------------------------------------------------------------------- /.config/eww/applets/eww.yuck: -------------------------------------------------------------------------------- 1 | (include "./src/yuck/widgets.yuck") 2 | (include "./src/yuck/windows.yuck") 3 | -------------------------------------------------------------------------------- /.config/eww/applets/src/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | $primary: #18181b; 2 | $secondary: #212127; 3 | $text-active: #a6adc8; 4 | $text-inactive: #535764; 5 | $hover: #27272a; 6 | -------------------------------------------------------------------------------- /.config/eww/applets/src/scss/powermenu.scss: -------------------------------------------------------------------------------- 1 | * { 2 | border-radius: 10px; 3 | } 4 | 5 | .power-menu { 6 | background: $primary; 7 | padding: 1rem; 8 | padding-right: 0; 9 | } 10 | 11 | .powermenu-button { 12 | background: $secondary; 13 | margin-right: 1rem; 14 | color: $text-active; 15 | font-size: 18px; 16 | } 17 | 18 | .powermenu-button:hover { 19 | background: $hover; 20 | } 21 | 22 | .poweroff-button:hover { 23 | color: #e05f65; 24 | } 25 | 26 | .reboot-button:hover { 27 | color: #70a5eb; 28 | } 29 | 30 | .logout-button:hover { 31 | color: #e5c76b; 32 | } 33 | 34 | .lock-button:hover { 35 | color: #78dba9; 36 | } 37 | -------------------------------------------------------------------------------- /.config/eww/applets/src/yuck/widgets.yuck: -------------------------------------------------------------------------------- 1 | ;; POWERMENU 2 | (defwidget powermenu-button [onclick label ?class] 3 | (button :class "powermenu-button ${class}" 4 | :onclick onclick 5 | label 6 | ) 7 | ) 8 | 9 | (defwidget poweroff-button [] 10 | (powermenu-button :class "poweroff-button" 11 | :onclick "systemctl poweroff" 12 | :label "" 13 | ) 14 | ) 15 | 16 | (defwidget reboot-button [] 17 | (powermenu-button :class "reboot-button" 18 | :onclick "systemctl reboot" 19 | :label "" 20 | ) 21 | ) 22 | 23 | (defwidget lock-button [] 24 | (powermenu-button :class "lock-button" 25 | :onclick "~/.config/swaylock/lock.sh" 26 | :label "" 27 | ) 28 | ) 29 | 30 | (defwidget logout-button [] 31 | (powermenu-button :class "logout-button" 32 | :onclick "hyprctl dispatch exit 0" 33 | :label "󰍃" 34 | ) 35 | ) 36 | 37 | (defwidget powermenu-window [] 38 | (box 39 | :orientation "v" 40 | :space-evenly true 41 | (box :class "power-menu" 42 | :space-evenly true 43 | :orientation 'h' 44 | (lock-button) 45 | (poweroff-button) 46 | (reboot-button) 47 | (logout-button) 48 | ) 49 | )) 50 | 51 | -------------------------------------------------------------------------------- /.config/eww/applets/src/yuck/windows.yuck: -------------------------------------------------------------------------------- 1 | ;; POWERMENU 2 | (defwindow powermenu 3 | :monitor 0 4 | :geometry (geometry :x "10px" 5 | :y "10px" 6 | :width "20%" 7 | :height "10%" 8 | :anchor "top center") 9 | :stacking "fg" 10 | :reserve (struts :distance "40px" :side "top") 11 | :windowtype "dock" 12 | (powermenu-window)) 13 | -------------------------------------------------------------------------------- /.config/fish/.gitignore: -------------------------------------------------------------------------------- 1 | themes/ 2 | conf.d/ 3 | -------------------------------------------------------------------------------- /.config/fish/completions/aliases.fish: -------------------------------------------------------------------------------- 1 | # General 2 | alias c=clear 3 | alias e=exit 4 | alias ka=killall 5 | alias reloadfishconf='source ~/.config/fish/config.fish' 6 | alias cat=bat 7 | alias py=python3 8 | 9 | # Navigation 10 | alias cd1='cd ..' 11 | alias cd2="cd ../.." 12 | alias cd3='cd ../../..' 13 | alias cd4='cd ../../../..' 14 | alias cd5='cd ../../../../..' 15 | 16 | # File managerment 17 | alias ls='lsd --group-dirs first' 18 | alias lf='~/.config/lf/scripts/lfrun' 19 | alias r=ranger 20 | alias pbcopy='xclip -selection clipboard' 21 | alias pbpaste='xclip -selection clipboard' 22 | alias copydir='pwd | tr -d "\r\n" | pbcopy' 23 | alias cv='rsync -poghb --backup-dir=/tmp/rsync -e -r /dev/null --progress --' 24 | alias rcp='rsync -r -avz --progress' 25 | alias rmv='rsync -r -avz --progress --remove-source-files' 26 | 27 | # Pacman 28 | alias pacq='pacman -Q | grep' 29 | alias pacorph='pacman -Qdt' 30 | alias pacin='sudo pacman -S' 31 | alias pacrem='sudo pacman -Rns' 32 | alias pacrem='sudo pacman -Runs' 33 | alias pacreps='pacman -Ss' 34 | alias pacupd='sudo pacman -Sy' 35 | alias pacupg='sudo pacman -Syu' 36 | alias pacremorph='sudo pacman -Rns (pacman -Qdtq)' 37 | alias paccache='sudo pacman -Sc' 38 | alias allpaccache='sudo pacman -Scc' 39 | alias list-aur='pacman -Qm' 40 | 41 | # Yay 42 | alias yain='yay -S' 43 | alias yarem='yay -Rns' 44 | alias yaorph='yay -Qtd' 45 | alias yaupd='yay -Sy' 46 | alias yaupg='yay -Sua' 47 | alias yayupd='yay -Sy' 48 | alias yayreps='yay -Ss' 49 | alias yaycache='yay -Sc' 50 | alias yayremdep='yay -Yc' 51 | 52 | # Paru 53 | alias pain='paru -S' 54 | alias parem='paru -Rns' 55 | alias paupd='paru -Sy' 56 | alias paupg='paru -Sua' 57 | alias parem='paru -Rns' 58 | alias paorph='paru -Qtd' 59 | 60 | # Note Editor 61 | alias nvide='neovide' 62 | 63 | # GitHub 64 | alias lz='lazygit' 65 | 66 | # grub 67 | alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg' 68 | 69 | # YouTube Downloader: youtube-dlp 70 | alias ytaudio='yt-dlp -x --audio-format mp3' 71 | 72 | # Clean-Up 73 | alias checkcache='du -sh .cache/' 74 | alias clearcache='rm -rf .cache/*' 75 | alias checkjournal='du -sh /var/log/journal' 76 | alias clearjournal='sudo journalctl --vacuum-time=2weeks' 77 | 78 | # Trash: trash-cli 79 | alias trp='trash-put' 80 | alias trl='trash-list' 81 | alias trr='trash-restore' 82 | alias tre='trash-empty' 83 | 84 | # Exif cleaner (Arch Linux: perl-image-exiftool) 85 | alias rmmetad='exiftool -all= -overwrite_original' 86 | alias rmametad='exiftool -all= -overwrite_original -ext' 87 | 88 | # Dotfiles 89 | alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' 90 | 91 | # NPM 92 | alias nrd='npm run dev' 93 | alias nrb='npm run build' 94 | alias nrs='npm run start' 95 | alias ni='npm install --save' 96 | alias nun='npm uninstall' 97 | alias nisd='npm install --save-dev' 98 | 99 | # GTK 100 | alias gtkdark='gsettings set org.gnome.desktop.interface color-scheme prefer-dark' 101 | alias gtklight='gsettings set org.gnome.desktop.interface color-scheme prefer-light' 102 | 103 | # Tmux 104 | alias tls='tmux ls' 105 | alias ta='tmux attach' 106 | alias tat='tmux attach -t' 107 | alias tns='tmux new -s' 108 | alias tks='tmux kill-session -t' 109 | alias tkas='tmux list-sessions | grep -v attached | awk "BEGIN{FS=\":\"}{print $1}" | xargs -n 1 tmux kill-session -t || echo "No sessions to kill"' 110 | 111 | # GPG 112 | alias encrypt='gpg --encrypt --armor --sign -r' 113 | alias decrypt='gpg --decrypt' 114 | alias public-keys='gpg --list-public-keys' 115 | alias secret-keys='gpg --list-secret-keys' 116 | alias all-keys='gpg --list-keys' 117 | 118 | # Other programs 119 | alias colorpick='grim -g "$(slurp -p)" -t ppm - | convert - -format "%[pixel:p{0,0}]" txt:-' 120 | alias hyp=hyprpicker 121 | alias scrcpylbr='scrcpy --bit-rate 2M' 122 | alias drivers='glxinfo | grep OpenGL' 123 | 124 | # Custom scripts 125 | alias printc='/usr/bin/python3 ~/Github/mini-projects/Scripts/easy_print/evenodd_typer.py' 126 | alias wallrename='/usr/bin/bash ~/Github/mini-projects/Scripts/rename.sh' 127 | alias ani-cli='~/Applications/ani-cli/ani-cli' 128 | 129 | # Applications 130 | alias audiorelay='~/Applications/audiorelay/bin/AudioRelay' 131 | alias ngrok='~/Applications/ngrok/ngrok' 132 | alias nitch='~/Applications/git/nitchNerd' 133 | -------------------------------------------------------------------------------- /.config/fish/completions/fisher.fish: -------------------------------------------------------------------------------- 1 | complete --command fisher --exclusive --long help --description "Print help" 2 | complete --command fisher --exclusive --long version --description "Print version" 3 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" 4 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" 5 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" 6 | complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" 7 | complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" 8 | -------------------------------------------------------------------------------- /.config/fish/config.fish: -------------------------------------------------------------------------------- 1 | # _____ __ 2 | # / __(_)____/ /_ 3 | # / /_/ / ___/ __ \ 4 | # / __/ (__ ) / / / 5 | #/_/ /_/____/_/ /_/ 6 | 7 | ### ADDING TO THE PATH 8 | # First line removes the path; second line sets it. Without the first line, 9 | # your path gets massive and fish becomes very slow. 10 | set -e fish_user_paths 11 | set -U fish_user_paths $HOME/.local/bin $HOME/Applications $fish_user_paths 12 | set fish_vi_key_bindings # Enables vim keyhbinding 13 | 14 | ### EXPORT 15 | set fish_greeting # Supresses fish's intro message 16 | set TERM "xterm-256color" # Sets the terminal type 17 | 18 | 19 | ### SET MANPAGER 20 | 21 | ### "bat" as manpager 22 | set -x MANPAGER "sh -c 'col -bx | bat -l man -p'" 23 | 24 | 25 | ### AUTOCOMPLETE AND HIGHLIGHT COLORS ### 26 | # set fish_color_normal '#32CD32' 27 | # set fish_color_autosuggestion '#7d7d7d' 28 | # set fish_color_command '#32CD32' 29 | # set fish_color_error '#dc1a1a' 30 | # set fish_color_param brcyan 31 | 32 | function __history_previous_command 33 | switch (commandline -t) 34 | case "!" 35 | commandline -t $history[1]; commandline -f repaint 36 | case "*" 37 | commandline -i ! 38 | end 39 | end 40 | 41 | function __history_previous_command_arguments 42 | switch (commandline -t) 43 | case "!" 44 | commandline -t "" 45 | commandline -f history-token-search-backward 46 | case "*" 47 | commandline -i '$' 48 | end 49 | end 50 | # The bindings for !! and !$ 51 | if [ $fish_key_bindings = "fish_vi_key_bindings" ]; 52 | bind -Minsert ! __history_previous_command 53 | bind -Minsert '$' __history_previous_command_arguments 54 | else 55 | bind ! __history_previous_command 56 | bind '$' __history_previous_command_arguments 57 | end 58 | 59 | # Function for creating a backup file 60 | # ex: backup file.txt 61 | # result: copies file as file.txt.bak 62 | function backup --argument filename 63 | cp $filename $filename.bak 64 | end 65 | 66 | # Function for printing a column (splits input on whitespace) 67 | # ex: echo 1 2 3 | coln 3 68 | # output: 3 69 | function coln 70 | while read -l input 71 | echo $input | awk '{print $'$argv[1]'}' 72 | end 73 | end 74 | 75 | # Function for printing a row 76 | # ex: seq 3 | rown 3 77 | # output: 3 78 | function rown --argument index 79 | sed -n "$index p" 80 | end 81 | 82 | # Function for ignoring the first 'n' lines 83 | # ex: seq 10 | skip 5 84 | # results: prints everything but the first 5 lines 85 | function skip --argument n 86 | tail +(math 1 + $n) 87 | end 88 | 89 | # Function for taking the first 'n' lines 90 | # ex: seq 10 | take 5 91 | # results: prints only the first 5 lines 92 | function take --argument number 93 | head -$number 94 | end 95 | 96 | ### Setting up zoxide, z alternative 97 | if type -q zoxide 98 | zoxide init fish | source 99 | else 100 | end 101 | 102 | ### Setting the starship prompt 103 | if type -q starship 104 | starship init fish | source 105 | else 106 | end 107 | 108 | ### Environment Variables 109 | set -gx VOLTA_HOME "$HOME/.volta" 110 | set -gx PATH "$VOLTA_HOME/bin" $PATH 111 | 112 | if type -q kitty 113 | set -gx TERM 'xterm-kitty' 114 | else 115 | end 116 | 117 | #### Calling exernal scripts #### 118 | source ~/.secret.fish 119 | source ~/.config/fish/completions/alias.fish 120 | source ~/.config/lf/icons/icons 121 | 122 | -------------------------------------------------------------------------------- /.config/fish/fish_plugins: -------------------------------------------------------------------------------- 1 | jorgebucaran/fisher 2 | catppuccin/fish 3 | -------------------------------------------------------------------------------- /.config/fish/functions/fisher.fish: -------------------------------------------------------------------------------- 1 | function fisher --argument-names cmd --description "A plugin manager for Fish" 2 | set --query fisher_path || set --local fisher_path $__fish_config_dir 3 | set --local fisher_version 4.4.3 4 | set --local fish_plugins $__fish_config_dir/fish_plugins 5 | 6 | switch "$cmd" 7 | case -v --version 8 | echo "fisher, version $fisher_version" 9 | case "" -h --help 10 | echo "Usage: fisher install Install plugins" 11 | echo " fisher remove Remove installed plugins" 12 | echo " fisher update Update installed plugins" 13 | echo " fisher update Update all installed plugins" 14 | echo " fisher list [] List installed plugins matching regex" 15 | echo "Options:" 16 | echo " -v or --version Print version" 17 | echo " -h or --help Print this help message" 18 | echo "Variables:" 19 | echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~ 20 | case ls list 21 | string match --entire --regex -- "$argv[2]" $_fisher_plugins 22 | case install update remove 23 | isatty || read --local --null --array stdin && set --append argv $stdin 24 | 25 | set --local install_plugins 26 | set --local update_plugins 27 | set --local remove_plugins 28 | set --local arg_plugins $argv[2..-1] 29 | set --local old_plugins $_fisher_plugins 30 | set --local new_plugins 31 | 32 | test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) 33 | 34 | if ! set --query argv[2] 35 | if test "$cmd" != update 36 | echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1 37 | else if ! set --query file_plugins 38 | echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1 39 | end 40 | set arg_plugins $file_plugins 41 | end 42 | 43 | for plugin in $arg_plugins 44 | set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin) 45 | contains -- "$plugin" $new_plugins || set --append new_plugins $plugin 46 | end 47 | 48 | if set --query argv[2] 49 | for plugin in $new_plugins 50 | if contains -- "$plugin" $old_plugins 51 | test "$cmd" = remove && 52 | set --append remove_plugins $plugin || 53 | set --append update_plugins $plugin 54 | else if test "$cmd" = install 55 | set --append install_plugins $plugin 56 | else 57 | echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1 58 | end 59 | end 60 | else 61 | for plugin in $new_plugins 62 | contains -- "$plugin" $old_plugins && 63 | set --append update_plugins $plugin || 64 | set --append install_plugins $plugin 65 | end 66 | 67 | for plugin in $old_plugins 68 | contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin 69 | end 70 | end 71 | 72 | set --local pid_list 73 | set --local source_plugins 74 | set --local fetch_plugins $update_plugins $install_plugins 75 | set --local fish_path (status fish-path) 76 | 77 | echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal) 78 | 79 | for plugin in $fetch_plugins 80 | set --local source (command mktemp -d) 81 | set --append source_plugins $source 82 | 83 | command mkdir -p $source/{completions,conf.d,themes,functions} 84 | 85 | $fish_path --command " 86 | if test -e $plugin 87 | command cp -Rf $plugin/* $source 88 | else 89 | set temp (command mktemp -d) 90 | set repo (string split -- \@ $plugin) || set repo[2] HEAD 91 | 92 | if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1]) 93 | set name (string split -- / \$path)[-1] 94 | set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz 95 | else 96 | set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2] 97 | end 98 | 99 | echo Fetching (set_color --underline)\$url(set_color normal) 100 | 101 | if curl --silent -L \$url | tar -xzC \$temp -f - 2>/dev/null 102 | command cp -Rf \$temp/*/* $source 103 | else 104 | echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 105 | command rm -rf $source 106 | end 107 | 108 | command rm -rf \$temp 109 | end 110 | 111 | set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files 112 | " & 113 | 114 | set --append pid_list (jobs --last --pid) 115 | end 116 | 117 | wait $pid_list 2>/dev/null 118 | 119 | for plugin in $fetch_plugins 120 | if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source 121 | if set --local index (contains --index -- "$plugin" $install_plugins) 122 | set --erase install_plugins[$index] 123 | else 124 | set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)] 125 | end 126 | end 127 | end 128 | 129 | for plugin in $update_plugins $remove_plugins 130 | if set --local index (contains --index -- "$plugin" $_fisher_plugins) 131 | set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files 132 | 133 | if contains -- "$plugin" $remove_plugins 134 | for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var) 135 | emit {$name}_uninstall 136 | end 137 | printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ 138 | set --erase _fisher_plugins[$index] 139 | end 140 | 141 | command rm -rf (string replace -- \~ ~ $$plugin_files_var) 142 | 143 | functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var) 144 | 145 | for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var) 146 | complete --erase --command $name 147 | end 148 | 149 | set --erase $plugin_files_var 150 | end 151 | end 152 | 153 | if set --query update_plugins[1] || set --query install_plugins[1] 154 | command mkdir -p $fisher_path/{functions,themes,conf.d,completions} 155 | end 156 | 157 | for plugin in $update_plugins $install_plugins 158 | set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] 159 | set --local files $source/{functions,themes,conf.d,completions}/* 160 | 161 | if set --local index (contains --index -- $plugin $install_plugins) 162 | set --local user_files $fisher_path/{functions,themes,conf.d,completions}/* 163 | set --local conflict_files 164 | 165 | for file in (string replace -- $source/ $fisher_path/ $files) 166 | contains -- $file $user_files && set --append conflict_files $file 167 | end 168 | 169 | if set --query conflict_files[1] && set --erase install_plugins[$index] 170 | echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2 171 | continue 172 | end 173 | end 174 | 175 | for file in (string replace -- $source/ "" $files) 176 | command cp -RLf $source/$file $fisher_path/$file 177 | end 178 | 179 | set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files 180 | 181 | set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~) 182 | 183 | contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin 184 | contains -- $plugin $install_plugins && set --local event install || set --local event update 185 | 186 | printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ 187 | 188 | for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~) 189 | source $file 190 | if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file) 191 | emit {$name}_$event 192 | end 193 | end 194 | end 195 | 196 | command rm -rf $source_plugins 197 | 198 | if set --query _fisher_plugins[1] 199 | set --local commit_plugins 200 | 201 | for plugin in $file_plugins 202 | contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin 203 | end 204 | 205 | for plugin in $_fisher_plugins 206 | contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin 207 | end 208 | 209 | printf "%s\n" $commit_plugins >$fish_plugins 210 | else 211 | set --erase _fisher_plugins 212 | command rm -f $fish_plugins 213 | end 214 | 215 | set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins) 216 | 217 | test "$total" != "0 0 0" && echo (string join ", " ( 218 | test $total[1] = 0 || echo "Installed $total[1]") ( 219 | test $total[2] = 0 || echo "Updated $total[2]") ( 220 | test $total[3] = 0 || echo "Removed $total[3]") 221 | ) plugin/s 222 | case \* 223 | echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1 224 | end 225 | end 226 | 227 | if ! set --query _fisher_upgraded_to_4_4 228 | set --universal _fisher_upgraded_to_4_4 229 | if functions --query _fisher_list 230 | set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share 231 | command rm -rf $XDG_DATA_HOME/fisher 232 | functions --erase _fisher_{list,plugin_parse} 233 | fisher update >/dev/null 2>/dev/null 234 | else 235 | for var in (set --names | string match --entire --regex '^_fisher_.+_files$') 236 | set $var (string replace -- ~ \~ $$var) 237 | end 238 | functions --erase _fisher_fish_postexec 239 | end 240 | end 241 | -------------------------------------------------------------------------------- /.config/hypr/hyprland.conf: -------------------------------------------------------------------------------- 1 | # Hyprland Config 2 | $HYPR_PATH = ~/.config/hypr/ 3 | 4 | $active_border = rgb(b4befe) 5 | $inactive_border = rgb(45475a) 6 | 7 | 8 | source = $HYPR_PATH/startup.conf 9 | source = $HYPR_PATH/keybindings.conf 10 | source = $HYPR_PATH/windowrules.conf 11 | 12 | monitor=,preferred,auto,1 13 | 14 | input { 15 | kb_layout = us 16 | kb_variant = 17 | kb_model = kb_options = 18 | kb_rules = 19 | 20 | follow_mouse = 1 21 | 22 | touchpad { 23 | natural_scroll = no 24 | } 25 | 26 | sensitivity = 0 27 | } 28 | 29 | general { 30 | gaps_in = 4 31 | gaps_out = 8 32 | border_size = 3 33 | col.active_border = $active_border 34 | col.inactive_border = $inactive_border 35 | 36 | layout = dwindle 37 | } 38 | 39 | decoration { 40 | blur { 41 | enabled = true 42 | size = 6 43 | passes = 2 44 | new_optimizations = true 45 | xray = true 46 | ignore_opacity = true 47 | } 48 | rounding = 0 49 | drop_shadow = no 50 | shadow_range = 10 51 | shadow_render_power = 4 52 | col.shadow = rgb(000000) 53 | } 54 | 55 | animations { 56 | enabled = yes 57 | bezier = wind, 0.05, 0.9, 0.1, 1.05 58 | bezier = winIn, 0.1, 1.1, 0.1, 1.1 59 | bezier = winOut, 0.3, -0.3, 0, 1 60 | bezier = liner, 1, 1, 1, 1 61 | bezier = quart, 0.25, 1, 0.5, 1 62 | 63 | animation = windowsIn, 1, 6, winIn, slide 64 | animation = windowsOut, 1, 5, winOut, slide 65 | animation = windowsMove, 1, 5, wind, slide 66 | animation = border, 1, 6, default 67 | animation = borderangle, 1, 6, quart 68 | animation = fade, 1, 6, quart 69 | animation = workspaces, 1, 6, quart 70 | animation = layers, 1, 6, quart, slide 71 | } 72 | 73 | dwindle { 74 | no_gaps_when_only = false 75 | pseudotile = yes 76 | preserve_split = yes 77 | } 78 | 79 | 80 | env = WLR_NO_HARDWARE_CURSORS,1 81 | env = LIBVA_DRIVER_NAME,nvidia 82 | env = XDG_SESSION_TYPE,wayland 83 | env = GBM_BACKEND,nvidia-drm 84 | env = __GLX_VENDOR_LIBRARY_NAME,nvidia 85 | env = MOZ_DISABLE_RDD_SANDBOX,1 86 | env = MOZ_ENABLE_WAYLAND,1 87 | env = OZONE_PLATFORM,wayland 88 | -------------------------------------------------------------------------------- /.config/hypr/keybindings.conf: -------------------------------------------------------------------------------- 1 | # General 2 | bind = SUPER,SPACE , togglefloating, 3 | bind = SUPER, F, fullscreen, 4 | bind = SUPER, Q, killactive, 5 | bind = SUPER SHIFT, Q, exit, 6 | bind = SUPER, C, exec, hyprctl dispatch centerwindow 7 | bind = SUPER, T, exec, hyprctl dispatch togglesplit 8 | bind = SUPER, P, pin, active 9 | 10 | # Focus Window 11 | bind = SUPER, H, movefocus, l 12 | bind = SUPER, L, movefocus, r 13 | bind = SUPER, K, movefocus, u 14 | bind = SUPER, J, movefocus, d 15 | 16 | # Move Window 17 | bind = SUPER SHIFT, H, movewindow, l 18 | bind = SUPER SHIFT, L, movewindow, r 19 | bind = SUPER SHIFT, K, movewindow, u 20 | bind = SUPER SHIFT, J, movewindow, d 21 | 22 | # Special Window/Scrachpad 23 | bind = SUPER, S, togglespecialworkspace 24 | bind = SUPER SHIFT, S, movetoworkspace, special 25 | 26 | # Workspaces 27 | bind = SUPER, 1, workspace, 1 28 | bind = SUPER, 2, workspace, 2 29 | bind = SUPER, 3, workspace, 3 30 | bind = SUPER, 4, workspace, 4 31 | bind = SUPER, 5, workspace, 5 32 | 33 | # Move active window to a workspace with mainMod + SHIFT + [0-5] 34 | bind = SUPER SHIFT, 1, movetoworkspace, 1 35 | bind = SUPER SHIFT, 2, movetoworkspace, 2 36 | bind = SUPER SHIFT, 3, movetoworkspace, 3 37 | bind = SUPER SHIFT, 4, movetoworkspace, 4 38 | bind = SUPER SHIFT, 5, movetoworkspace, 5 39 | 40 | # Scroll through existing workspaces with mainMod + scroll 41 | bind = SUPER, mouse_down, workspace, e+1 42 | bind = SUPER, mouse_up, workspace, e-1 43 | 44 | # Move/resize windows with mainMod + LMB/RMB and dragging 45 | bindm = SUPER, mouse:272, movewindow 46 | bindm = SUPER, mouse:273, resizewindow 47 | 48 | # Volumme Control (pipewire) 49 | # binde=, XF86AudioRaiseVolume, exec, ~/.config/dunst/scripts/volume.sh volume_up 50 | # binde=, XF86AudioLowerVolume, exec, ~/.config/dunst/scripts/volume.sh volume_down 51 | binde=,XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise 52 | binde=,XF86AudioLowerVolume, exec, swayosd-client --output-volume lower 53 | 54 | 55 | # Screenshot/Screen Recording 56 | bind = ALT, S, exec, bash -c ~/.config/hypr/scripts/screenshot.sh 57 | bind = ALT, R, exec, wf-recorder -f $(xdg-user-dir VIDEOS)/$(date +'%H:%M:%S_%d-%m-%Y.mp4') | notify-send "Recording Started" 58 | bind = ALT SHIFT, R, exec, killall -s SIGINT wf-recorder && notify-send "Recording Saved" 59 | 60 | # Apps 61 | bind = SUPER, RETURN, exec, kitty 62 | bind = SUPER SHIFT, RETURN, exec, nemo 63 | 64 | # Launchers/Scripts 65 | bind = SUPER, D, exec, ~/.config/hypr/dmenu.sh 66 | bind = SUPER, A , exec, rofi -show drun -show-icons 67 | bind = SUPER, V, exec, cliphist list | rofi -dmenu -theme-str 'configuration{dmenu{display-name:"󰅌 ";}} listview{scrollbar:true;}' | cliphist decode | wl-copy 68 | bind = SUPER, E, exec, rofi -modi emoji -show emoji -config ~/.config/rofi/launchers/type-1/style-6.rasi 69 | bind = SUPER, N, exec, swaync-client -t -sw 70 | bind = SUPER ALT , L , exec, ~/.config/swaylock/lock.sh 71 | bind = SUPER, X , exec, ~/.config/rofi/powermenu/launch.sh 72 | 73 | # Eww widgets 74 | # bind = SUPER, X , exec, eww open powermenu --toggle --config ~/.config/eww/applets 75 | -------------------------------------------------------------------------------- /.config/hypr/scripts/dmenu.sh: -------------------------------------------------------------------------------- 1 | !#/bin/bash 2 | 3 | dmenu_run -i -nb '#191919' -nf '#fea63c' -sb '#fea63c' -sf '#191919' -fn 'NotoMonoRegular:bold:pixelsize=14' 4 | 5 | -------------------------------------------------------------------------------- /.config/hypr/scripts/screenshot.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SCREENSHOT_DIR="${HOME}/Pictures/Screenshots" 4 | 5 | if ! command -v grim &>/dev/null || ! command -v slurp &>/dev/null; then 6 | notify-send "ERROR" "Make sure grim & slurp both installed" 7 | else 8 | if [[ -d $SCREENSHOT_DIR ]]; then 9 | grim -g "$(slurp)" $SCREENSHOT_DIR/"$(date +%Y%m%d-%H%M%S)".png 10 | else 11 | mkdir -p ${SCREENSHOT_DIR} && 12 | grim -g "$(slurp)" $SCREENSHOT_DIR/"$(date +%Y%m%d-%H%M%S)".png 13 | fi 14 | fi 15 | -------------------------------------------------------------------------------- /.config/hypr/startup.conf: -------------------------------------------------------------------------------- 1 | exec-once = ~/.config/lf/scripts/set_wall.sh 2 | exec-once = hyprctl setcursor Bibata-Modern-Ice 24 3 | exec-once = ~/.config/waybar/launch.sh 4 | exec-once = eww daemon --config ~/.config/eww/applets/ 5 | exec-once = swaync 6 | exec-once = swayosd-server 7 | exec-once = wl-paste --watch cliphist store 8 | exec-once = nm-applet --indicator 9 | exec-once = run xhost +SI:localuser:root 10 | exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 11 | -------------------------------------------------------------------------------- /.config/hypr/windowrules.conf: -------------------------------------------------------------------------------- 1 | # Example windowrule v1 2 | windowrule = float, org.keepassxc.KeePassXC 3 | windowrule = size 800 600, org.keepassxc.KeePassXC 4 | windowrule = center, org.keepassxc.KeePassXC 5 | windowrule = float, com.github.hluk.copyq 6 | # windowrule = float, MEGAsync 7 | windowrule = float, org.wezfurlong.wezterm 8 | 9 | # Example windowrule v2 10 | windowrulev2 = opacity 0.9 0.9,class:^(obsidian)$ 11 | -------------------------------------------------------------------------------- /.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | # Fonts 2 | font_family CommitMono Nerd Font 3 | bold_font auto 4 | italic_font Cartograph CF Italic 5 | bold_italic_font Cartograph CF Bold Italic 6 | font_size 12.5 7 | adjust_line_height 0 8 | adjust_column_width 0 9 | 10 | # Cursor customization 11 | cursor_shape beam 12 | 13 | # Scrollback 14 | scrollback_lines 2000 15 | 16 | # Mouse 17 | url_color #0087bd 18 | url_style single 19 | 20 | # Terminal bell 21 | enable_audio_bell yes 22 | 23 | # Window layout 24 | remember_window_size no 25 | initial_window_width 1000 26 | initial_window_height 650 27 | window_margin_width 8.0 28 | window_padding_width 8.0 29 | hide_window_decorations no 30 | 31 | # Tab bar 32 | tab_bar_edge bottom 33 | 34 | # Color scheme 35 | background_opacity 0.8 36 | dynamic_background_opacity yes 37 | # include themes/catppuccin-mocha.conf 38 | include themes/catppuccin-mocha.conf 39 | 40 | # Advanced 41 | shell . 42 | allow_remote_control yes 43 | listen_on unix:/tmp/mykitty 44 | 45 | # Tab management 46 | map kitty_mod+h previous_tab 47 | map kitty_mod+l next_tab 48 | map kitty_mod+t new_tab 49 | map kitty_mod+q close_tab 50 | map kitty_mod+. move_tab_forward 51 | map kitty_mod+, move_tab_backward 52 | map kitty_mod+alt+t set_tab_title 53 | map ctrl+1 goto_tab 1 54 | map ctrl+2 goto_tab 2 55 | map ctrl+3 goto_tab 3 56 | map ctrl+4 goto_tab 4 57 | map ctrl+5 goto_tab 5 58 | 59 | # Font sizes 60 | map ctrl+equal change_font_size +1 61 | map ctrl+minus change_font_size -1 62 | map kitty_mod+backspace change_font_size 10 63 | 64 | # Misc 65 | map ctrl+backspace send_text all \x17 66 | map super+backspace send_text all \x15 67 | map super+left send_text all \x01 68 | map super+right send_text all \x05 69 | -------------------------------------------------------------------------------- /.config/kitty/themes/catppuccin-mocha.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin Kitty Mocha 4 | ## author: Catppuccin Org 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #CDD6F4 13 | background #1E1E2E 14 | selection_foreground #1E1E2E 15 | selection_background #F5E0DC 16 | 17 | # Cursor colors 18 | cursor #F5E0DC 19 | cursor_text_color #1E1E2E 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #F5E0DC 23 | 24 | # Kitty window border colors 25 | active_border_color #B4BEFE 26 | inactive_border_color #6C7086 27 | bell_border_color #F9E2AF 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #11111B 35 | active_tab_background #CBA6F7 36 | inactive_tab_foreground #CDD6F4 37 | inactive_tab_background #181825 38 | tab_bar_background #11111B 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #1E1E2E 42 | mark1_background #B4BEFE 43 | mark2_foreground #1E1E2E 44 | mark2_background #CBA6F7 45 | mark3_foreground #1E1E2E 46 | mark3_background #74C7EC 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #45475A 52 | color8 #585B70 53 | 54 | # red 55 | color1 #F38BA8 56 | color9 #F38BA8 57 | 58 | # green 59 | color2 #A6E3A1 60 | color10 #A6E3A1 61 | 62 | # yellow 63 | color3 #F9E2AF 64 | color11 #F9E2AF 65 | 66 | # blue 67 | color4 #89B4FA 68 | color12 #89B4FA 69 | 70 | # magenta 71 | color5 #F5C2E7 72 | color13 #F5C2E7 73 | 74 | # cyan 75 | color6 #94E2D5 76 | color14 #94E2D5 77 | 78 | # white 79 | color7 #BAC2DE 80 | color15 #A6ADC8 81 | -------------------------------------------------------------------------------- /.config/kitty/themes/everforest.conf: -------------------------------------------------------------------------------- 1 | # The basic colors 2 | foreground #d3c6aa 3 | background #2D353B 4 | selection_foreground #d3c6aa 5 | selection_background #495156 6 | 7 | # Cursor colors 8 | cursor #d8caac 9 | 10 | # The 16 terminal colors 11 | 12 | # black 13 | color0 #3c474d 14 | color8 #868d80 15 | 16 | # red 17 | color1 #e67e80 18 | color9 #e67e80 19 | 20 | # green 21 | color2 #a7c080 22 | color10 #a7c080 23 | 24 | # yellow 25 | color3 #dbbc7f 26 | color11 #dbbc7f 27 | 28 | # blue 29 | color4 #7fbbb3 30 | color12 #7fbbb3 31 | 32 | # magenta 33 | color5 #d699b6 34 | color13 #d699b6 35 | 36 | # cyan 37 | color6 #83c092 38 | color14 #83c092 39 | 40 | # white 41 | color7 #859289 42 | color15 #859289 43 | -------------------------------------------------------------------------------- /.config/lf/README.md: -------------------------------------------------------------------------------- 1 | ## Screenshots 2 | 3 | ![ss-1](https://ik.imagekit.io/rayshold/dotfiles/_config/lf/lf-01.webp?updatedAt=1688455979366)|![ss-2](https://ik.imagekit.io/rayshold/dotfiles/_config/lf/lf-02.webp?updatedAt=1688455978299) 4 | |---|---| 5 | 6 | ## Requirements 7 | 8 | 1. golang 9 | 2. imagemagick (for .svg previews) 10 | 3. gs (for pdf previews) 11 | 4. ffmpeg (for video file thumbnails) 12 | 13 | ## Image Preview 14 | 15 | On X-ORG either use [ueberzug](https://github.com/seebye/ueberzug) or [ctpv](https://github.com/NikitaIvanovV/ctpv) 16 | 17 | On Wayland only option I know is [kitty](https://github.com/kovidgoyal/kitty) 18 | 19 | **Add following line to _.bashrc | .zshrc | config.fish_ to make image preview work** 20 | ``` 21 | alias lf='~/.config/lf/scripts/lfrun' 22 | ``` 23 | 24 | Checkout their [wiki](https://github.com/gokcehan/lf/wiki/Previews#image-previews) for more information 25 | 26 | ## Icons 27 | 28 | **To set icons shown in screenshot add following line to _.bashrc | .zshrc | config.fish_** 29 | ``` 30 | source ~/.config/lf/icons/icons 31 | ``` 32 | 33 | -------------------------------------------------------------------------------- /.config/lf/icons/icons: -------------------------------------------------------------------------------- 1 | export LF_ICONS="\ 2 | tw=:\ 3 | st=:\ 4 | ow=:\ 5 | dt=:\ 6 | di=:\ 7 | fi=󰈙:\ 8 | ln=:\ 9 | or=:\ 10 | ex=󱓞:\ 11 | *.c=:\ 12 | *.cc=:\ 13 | *.clj=:\ 14 | *.coffee=:\ 15 | *.cpp=:\ 16 | *.css=:\ 17 | *.d=:\ 18 | *.dart=:\ 19 | *.erl=:\ 20 | *.exs=:\ 21 | *.fs=:\ 22 | *.go=:\ 23 | *.h=:\ 24 | *.hh=:\ 25 | *.hpp=:\ 26 | *.hs=:\ 27 | *.html=:\ 28 | *.java=:\ 29 | *.jl=:\ 30 | *.js=:\ 31 | *.json=:\ 32 | *.lua=:\ 33 | *.md=:\ 34 | *.php=:\ 35 | *.pl=:\ 36 | *.pro=:\ 37 | *.py=:\ 38 | *.rb=:\ 39 | *.rs=:\ 40 | *.scala=:\ 41 | *.ts=:\ 42 | *.vim=:\ 43 | *.cmd=:\ 44 | *.ps1=:\ 45 | *.sh=:\ 46 | *.bash=:\ 47 | *.zsh=:\ 48 | *.fish=:\ 49 | *.tar=󰗄:\ 50 | *.tgz=󰗄:\ 51 | *.arc=󰗄:\ 52 | *.arj=󰗄:\ 53 | *.taz=󰗄:\ 54 | *.lha=󰗄:\ 55 | *.lz4=󰗄:\ 56 | *.lzh=󰗄:\ 57 | *.lzma=󰗄:\ 58 | *.tlz=󰗄:\ 59 | *.txz=󰗄:\ 60 | *.tzo=󰗄:\ 61 | *.t7z=󰗄:\ 62 | *.zip=󰗄:\ 63 | *.z=󰗄:\ 64 | *.dz=󰗄:\ 65 | *.gz=󰗄:\ 66 | *.lrz=󰗄:\ 67 | *.lz=󰗄:\ 68 | *.lzo=󰗄:\ 69 | *.xz=󰗄:\ 70 | *.zst=󰗄:\ 71 | *.tzst=󰗄:\ 72 | *.bz2=󰗄:\ 73 | *.bz=󰗄:\ 74 | *.tbz=󰗄:\ 75 | *.tbz2=󰗄:\ 76 | *.tz=󰗄:\ 77 | *.deb=󰗄:\ 78 | *.rpm=󰗄:\ 79 | *.jar=󰗄:\ 80 | *.war=󰗄:\ 81 | *.ear=󰗄:\ 82 | *.sar=󰗄:\ 83 | *.rar=󰗄:\ 84 | *.alz=󰗄:\ 85 | *.ace=󰗄:\ 86 | *.zoo=󰗄:\ 87 | *.cpio=󰗄:\ 88 | *.7z=󰗄:\ 89 | *.rz=󰗄:\ 90 | *.cab=󰗄:\ 91 | *.wim=󰗄:\ 92 | *.swm=󰗄:\ 93 | *.dwm=󰗄:\ 94 | *.esd=󰗄:\ 95 | *.jpg=󰋩:\ 96 | *.jpeg=󰋩:\ 97 | *.mjpg=󰋩:\ 98 | *.mjpeg=󰋩:\ 99 | *.gif=󰋩:\ 100 | *.bmp=󰋩:\ 101 | *.pbm=󰋩:\ 102 | *.pgm=󰋩:\ 103 | *.ppm=󰋩:\ 104 | *.tga=󰋩:\ 105 | *.xbm=󰋩:\ 106 | *.xpm=󰋩:\ 107 | *.tif=󰋩:\ 108 | *.tiff=󰋩:\ 109 | *.png=󰋩:\ 110 | *.svg=󰋩:\ 111 | *.svgz=󰋩:\ 112 | *.mng=󰋩:\ 113 | *.pcx=󰋩:\ 114 | *.mov=󰋩:\ 115 | *.mpg=󰋩:\ 116 | *.mpeg=󰋩:\ 117 | *.m2v=󰋩:\ 118 | *.mkv=󰋩:\ 119 | *.webm=󰋩:\ 120 | *.ogm=󰋩:\ 121 | *.mp4=󰋩:\ 122 | *.m4v=󰋩:\ 123 | *.mp4v=󰋩:\ 124 | *.vob=󰋩:\ 125 | *.qt=󰋩:\ 126 | *.nuv=󰋩:\ 127 | *.wmv=󰋩:\ 128 | *.asf=󰋩:\ 129 | *.rm=󰋩:\ 130 | *.rmvb=󰋩:\ 131 | *.flc=󰋩:\ 132 | *.avi=󰋩:\ 133 | *.fli=󰋩:\ 134 | *.flv=󰋩:\ 135 | *.gl=󰋩:\ 136 | *.dl=󰋩:\ 137 | *.xcf=󰋩:\ 138 | *.xwd=󰋩:\ 139 | *.yuv=󰋩:\ 140 | *.cgm=󰋩:\ 141 | *.emf=󰋩:\ 142 | *.ogv=󰋩:\ 143 | *.ogx=󰋩:\ 144 | *.aac=󰋩:\ 145 | *.au=󰋩:\ 146 | *.flac=󰋩:\ 147 | *.m4a=󰋩:\ 148 | *.mid=󰋩:\ 149 | *.midi=󰋩:\ 150 | *.mka=󰋩:\ 151 | *.mp3=󰋩:\ 152 | *.mpc=󰋩:\ 153 | *.ogg=󰋩:\ 154 | *.ra=󰋩:\ 155 | *.wav=󰋩:\ 156 | *.oga=󰋩:\ 157 | *.opus=󰋩:\ 158 | *.spx=󰋩:\ 159 | *.xspf=󰋩:\ 160 | *.pdf=󰈦:\ 161 | *.nix=:\ 162 | " 163 | -------------------------------------------------------------------------------- /.config/lf/lfrc: -------------------------------------------------------------------------------- 1 | # ---------------- 2 | # GENERAL SETTINGS 3 | # ---------------- 4 | 5 | set preview 6 | # set drawbox 7 | set icons 8 | set ignorecase 9 | set info size 10 | set ifs "\n" 11 | set filesep "\n" 12 | set dircounts 13 | set period 1 14 | 15 | # CTPV IMAGE PREVIEW 16 | # set previewer ctpv 17 | # set cleaner ctpvclear 18 | # &ctpv -s $id 19 | # &ctpvquit $id 20 | 21 | # CUSTOM SCRIPT FOR IMAGE PREVIEW 22 | # set previewer ~/.config/lf/scripts/preview 23 | # set cleaner ~/.config/lf/scripts/cleaner 24 | 25 | # KITTY IMAGE PREVIEW 26 | set previewer ~/.config/lf/scripts/lf_kitty_preview 27 | set cleaner ~/.config/lf/scripts/lf_kitty_clean 28 | 29 | # ---------------- 30 | # CUSTOM FUNCTIONS 31 | # ---------------- 32 | 33 | cmd open ${{ 34 | case $(file --mime-type "$f" -bL) in 35 | text/*|application/json) $EDITOR "$f";; 36 | *) xdg-open "$f" ;; 37 | esac 38 | }} 39 | 40 | cmd edit-config ${{ 41 | $EDITOR ~/.config/lf/lfrc 42 | lf -remote "send $id source ~/.config/lf/lfrc" 43 | }} 44 | 45 | cmd mkdir ${{ 46 | printf "Directory Name: " 47 | read ans 48 | mkdir $ans 49 | }} 50 | 51 | cmd mkfile ${{ 52 | printf "File Name: " 53 | read ans 54 | $EDITOR $ans 55 | }} 56 | 57 | cmd chmod ${{ 58 | printf "Mode Bits: " 59 | read ans 60 | 61 | for file in "$fx" 62 | do 63 | chmod $ans $file 64 | done 65 | 66 | lf -remote 'send reload' 67 | }} 68 | 69 | cmd sudomkfile ${{ 70 | printf "File Name: " 71 | read ans 72 | sudo $EDITOR $ans 73 | }} 74 | 75 | # WALLPAPER 76 | cmd setwallpaper ${{ 77 | img_extensions=("jpg" "jpeg" "png" "gif") 78 | extension="${f##*.}" 79 | if [[ " ${img_extensions[@]} " == *" $extension "* ]]; then 80 | if [ $DESKTOP_SESSION == gnome-xorg ];then 81 | gsettings set org.gnome.desktop.background picture-uri "$f" 82 | elif [ $DESKTOP_SESSION == hyprland ];then 83 | echo "$f" >> ~/.config/wall.txt && ~/.config/lf/scripts/set_wall.sh 84 | else 85 | cp "$f" ~/.config/ && feh --bg-fill ~/.config/wall.png 86 | fi 87 | else 88 | echo "Selected file isn't a image file!" 89 | fi 90 | 91 | }} 92 | 93 | # SET WALLPAPER ON GNOME DARK MODE 94 | cmd setwallpaper-dark ${{ 95 | if [ $DESKTOP_SESSION == gnome-xorg ];then 96 | gsettings set org.gnome.desktop.background picture-uri-dark "$f" 97 | fi 98 | }} 99 | 100 | # FZF JUMP 101 | cmd fzf_jump ${{ 102 | res="$(find . -maxdepth 3 | fzf --reverse --header='Jump to location')" 103 | if [ -f "$res" ]; then 104 | cmd="select" 105 | elif [ -d "$res" ]; then 106 | cmd="cd" 107 | fi 108 | lf -remote "send $id $cmd \"$res\"" 109 | }} 110 | 111 | # DYNAMIC COLUMNS 112 | # ${{ 113 | # w=$(tput cols) 114 | # if [ $w -le 80 ]; then 115 | # lf -remote "send $id set ratios 1:2" 116 | # elif [ $w -le 160 ]; then 117 | # lf -remote "send $id set ratios 1:2:3" 118 | # else 119 | # lf -remote "send $id set ratios 1:2:3:5" 120 | # fi 121 | # }} 122 | 123 | # ARCHIVE 124 | cmd unarchive ${{ 125 | case "$f" in 126 | *.zip) 7z x "$f" ;; 127 | *.tar.gz) tar -xzvf "$f" ;; 128 | *.tar.bz2) tar -xjvf "$f" ;; 129 | *.tar) tar -xvf "$f" ;; 130 | *) echo "Unsupported format" ;; 131 | esac 132 | }} 133 | 134 | cmd zip %zip -r "$f" "$f" 135 | cmd tar %tar cvf "$f.tar" "$f" 136 | cmd targz %tar cvzf "$f.tar.gz" "$f" 137 | cmd tarbz2 %tar cjvf "$f.tar.bz2" "$f" 138 | 139 | 140 | # TRASH CLI 141 | cmd trash ${{ 142 | files=$(printf "$fx" | tr '\n' ';') 143 | while [ "$files" ]; do 144 | file=${files%%;*} 145 | trash-put "$(basename "$file")" 146 | if [ "$files" = "$file" ]; then 147 | files='' 148 | else 149 | files="${files#*;}" 150 | fi 151 | done 152 | }} 153 | 154 | cmd clear_trash %trash-empty 155 | 156 | cmd restore_trash ${{ 157 | trash-restore 158 | }} 159 | 160 | cmd stripspace %stripspace "$f" 161 | 162 | cmd open-with-gui &$@ $fx ## opens with a gui application outside lf client 163 | cmd open-with-cli $$@ $fx ## opens with a cli application inside lf client 164 | 165 | # SELECT FILES & DIRS 166 | 167 | cmd select-files &{{ 168 | get_files() { 169 | if [ "$lf_hidden" = 'false' ]; then 170 | find "$PWD" -mindepth 1 -maxdepth 1 -type f -not -name '.*' -print0 171 | else 172 | find "$PWD" -mindepth 1 -maxdepth 1 -type f -print0 173 | fi | 174 | xargs -0 printf ' %q' 175 | } 176 | 177 | lf -remote "send $id :unselect; toggle $(get_files)" 178 | }} 179 | 180 | cmd select-dirs &{{ 181 | get_dirs() { 182 | if [ "$lf_hidden" = 'false' ]; then 183 | find "$PWD" -mindepth 1 -maxdepth 1 -type d -not -name '.*' -print0 184 | else 185 | find "$PWD" -mindepth 1 -maxdepth 1 -type d -print0 186 | fi | 187 | xargs -0 printf ' %q' 188 | } 189 | 190 | lf -remote "send $id :unselect; toggle $(get_dirs)" 191 | }} 192 | 193 | cmd bookmark_jump ${{ 194 | res="$(cat $LF_BOOKMARK_PATH/$(ls $LF_BOOKMARK_PATH | fzf))" 195 | lf -remote "send $id cd \"$res\"" 196 | }} 197 | 198 | cmd bookmark_create ${{ 199 | read ans 200 | echo $PWD > $LF_BOOKMARK_PATH/$ans 201 | }} 202 | 203 | # ------------- 204 | # KEY BINDINGS 205 | # ------------- 206 | 207 | map cmd-escape 208 | map e $$EDITOR $fx 209 | map D delete 210 | map up 211 | map down 212 | map open 213 | map gh cd ~ 214 | map gr cd / 215 | map up 216 | map down 217 | map R bulk-rename 218 | map zp set preview! 219 | map t $tig -C $PWD 220 | map M push $mkdir 221 | map m 222 | map n 223 | map "'" 224 | map '"' 225 | map d 226 | map c 227 | map e 228 | map f 229 | 230 | # BOOKMARK 231 | map bc bookmark_create 232 | map bj bookmark_jump 233 | 234 | # ARCHIVE MAPPING 235 | map az zip 236 | map at tar 237 | map ag targz 238 | map ab targz 239 | map au unarchive 240 | 241 | 242 | # TRASH MAPPINGS 243 | map dd trash 244 | map tc clear_trash 245 | map tr restore_trash 246 | 247 | # BASIC FUNCTIONS 248 | map . set hidden! 249 | map DD delete 250 | map p paste 251 | map x cut 252 | map y copy 253 | map open 254 | map mf mkfile 255 | map md mkdir 256 | map ch chmod 257 | map r rename 258 | map br $vimv $fx 259 | map R reload 260 | map C clear 261 | map U unselect 262 | map O push :open-with-gui 263 | map o push :open-with-cli 264 | 265 | # WALLPAPER 266 | map ; setwallpaper 267 | map w setwallpaper-dark 268 | 269 | # NAVIGATION 270 | map gd cd ~/Documents 271 | map gc cd ~/.config 272 | map git cd ~/Downloads/GIT 273 | map gn cd /media/Documents/Notes 274 | map gmd cd /media/MEGAsync/Notes/Obsidian 275 | map gw cd /media/Entertainment/Wallpapers 276 | map gs cd ~/Pictures/Screenshots 277 | map gp cd ~/Pictures 278 | map gmu cd /media/MyWaifu/Music/ 279 | map gmo cd /media/MyWaifu/Movies/ 280 | map gmw cd /media/MyWaifu/ 281 | map ga cd /media/MyWaifu/anime 282 | -------------------------------------------------------------------------------- /.config/lf/scripts/cleaner: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -n "$FIFO_UEBERZUG" ]; then 3 | printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" 4 | fi 5 | -------------------------------------------------------------------------------- /.config/lf/scripts/lf_kitty_clean: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | 4 | kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty 5 | -------------------------------------------------------------------------------- /.config/lf/scripts/lf_kitty_preview: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | file=$1 3 | w=$2 4 | h=$3 5 | x=$4 6 | y=$5 7 | 8 | filetype="$( file -Lb --mime-type "$file")" 9 | 10 | if [[ "$filetype" =~ ^image ]]; then 11 | kitty +kitten icat --silent --stdin no --transfer-mode file --place "${w}x${h}@${x}x${y}" "$file" < /dev/null > /dev/tty 12 | exit 1 13 | fi 14 | 15 | if [[ "$filetype" =~ ^video ]]; then 16 | # vidthumb is from here: 17 | # https://raw.githubusercontent.com/duganchen/kitty-pistol-previewer/main/vidthumb 18 | kitty +kitten icat --silent --stdin no --transfer-mode file --place "${w}x${h}@${x}x${y}" "$(vidthumb "$file")" < /dev/null > /dev/tty 19 | exit 1 20 | fi 21 | 22 | /home/ray/Applications/pistol/pistol "$file" 23 | -------------------------------------------------------------------------------- /.config/lf/scripts/lfrun: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | cleanup() { 5 | exec 3>&- 6 | rm "$FIFO_UEBERZUG" 7 | } 8 | 9 | if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then 10 | lf "$@" 11 | else 12 | [ ! -d "$HOME/.cache/lf" ] && mkdir --parents "$HOME/.cache/lf" 13 | export FIFO_UEBERZUG="$HOME/.cache/lf/ueberzug-$$" 14 | mkfifo "$FIFO_UEBERZUG" 15 | ueberzug layer -s <"$FIFO_UEBERZUG" -p json & 16 | exec 3>"$FIFO_UEBERZUG" 17 | trap cleanup EXIT 18 | lf "$@" 3>&- 19 | fi 20 | -------------------------------------------------------------------------------- /.config/lf/scripts/preview: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | image() { 4 | if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then 5 | printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" 6 | exit 1 7 | else 8 | chafa "$1" -s "$4x" 9 | fi 10 | } 11 | 12 | batorcat() { 13 | file="$1" 14 | shift 15 | if command -v bat > /dev/null 2>&1 16 | then 17 | bat --color=always --style=plain --pager=never "$file" "$@" 18 | else 19 | cat "$file" 20 | fi 21 | } 22 | 23 | CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))" 24 | 25 | case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in 26 | *.tgz|*.tar.gz) tar tzf "$1" ;; 27 | *.tar.bz2|*.tbz2) tar tjf "$1" ;; 28 | *.tar.txz|*.txz) xz --list "$1" ;; 29 | *.tar) tar tf "$1" ;; 30 | *.zip|*.jar|*.war|*.ear|*.oxt) unzip -l "$1" ;; 31 | *.rar) unrar l "$1" ;; 32 | *.7z) 7z l "$1" ;; 33 | *.[1-8]) man "$1" | col -b ;; 34 | *.o) nm "$1";; 35 | *.torrent) transmission-show "$1" ;; 36 | *.iso) iso-info --no-header -l "$1" ;; 37 | *.odt|*.ods|*.odp|*.sxw) odt2txt "$1" ;; 38 | *.doc) catdoc "$1" ;; 39 | *.docx) docx2txt "$1" - ;; 40 | *.xls|*.xlsx) 41 | ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv 42 | ;; 43 | *.wav|*.mp3|*.flac|*.m4a|*.wma|*.ape|*.ac3|*.og[agx]|*.spx|*.opus|*.as[fx]|*.mka) 44 | exiftool "$1" 45 | ;; 46 | *.pdf) 47 | [ ! -f "${CACHE}.jpg" ] && \ 48 | pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" 49 | image "${CACHE}.jpg" "$2" "$3" "$4" "$5" 50 | ;; 51 | *.epub) 52 | [ ! -f "$CACHE" ] && \ 53 | epub-thumbnailer "$1" "$CACHE" 1024 54 | image "$CACHE" "$2" "$3" "$4" "$5" 55 | ;; 56 | *.cbz|*.cbr|*.cbt) 57 | [ ! -f "$CACHE" ] && \ 58 | comicthumb "$1" "$CACHE" 1024 59 | image "$CACHE" "$2" "$3" "$4" "$5" 60 | ;; 61 | *.html) 62 | [ ! -f "$CACHE" ] && \ 63 | wkhtmltopdf "$1" - | pdftoppm -jpeg -f 1 -singlefile - "$CACHE" 64 | image "${CACHE}.jpg" "$2" "$3" "$4" "$5" 65 | ;; 66 | *.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx) 67 | [ ! -f "${CACHE}.jpg" ] && \ 68 | ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5 69 | image "${CACHE}.jpg" "$2" "$3" "$4" "$5" 70 | ;; 71 | *.bmp|*.jpg|*.jpeg|*.png|*.xpm|*.webp|*.gif|*.jfif) 72 | image "$1" "$2" "$3" "$4" "$5" 73 | ;; 74 | *.ino) 75 | batorcat --language=cpp "$1" 76 | ;; 77 | *) 78 | batorcat "$1" 79 | ;; 80 | esac 81 | exit 0 82 | -------------------------------------------------------------------------------- /.config/lf/scripts/set_wall.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | log_path="/home/${USER}/.config/wall.txt" 3 | 4 | wallpaper_path() { 5 | while read -r line; do 6 | echo "$line" && down="$line" 7 | done <"$log_path" | tail -n1 8 | } 9 | 10 | set_wall() { 11 | swww img "$(wallpaper_path)" \ 12 | --transition-fps 60 \ 13 | --transition-duration 2 \ 14 | --transition-type left \ 15 | --transition-bezier .42,0,.58,0.6 16 | } 17 | 18 | if ! pgrep -x swww-daemon > /dev/null; then 19 | swww init && set_wall 20 | else 21 | set_wall 22 | fi 23 | -------------------------------------------------------------------------------- /.config/mpv/.gitignore: -------------------------------------------------------------------------------- 1 | watch_later 2 | -------------------------------------------------------------------------------- /.config/mpv/README.md: -------------------------------------------------------------------------------- 1 | ### Scripts used in mpv.conf 2 | --- 3 | 4 | - [mpv-thumbnail-script](https://github.com/marzzzello/mpv_thumbnail_script) 5 | - [auto-save-state](https://github.com/AN3223/dotfiles/blob/master/.config/mpv/scripts/auto-save-state.lua) 6 | 7 | 8 | ### Keybindings 9 | --- 10 | 11 | ##### General 12 | 13 | | Function | Key | 14 | |----------|-----| 15 | | pause playback | p | 16 | | take screenshot | s | 17 | | take screenshot [no subtitle] | S | 18 | | show progress | o | 19 | | show progress toggle | O | 20 | ##### Subtitle 21 | 22 | | function | key | 23 | |----------|-----| 24 | | show/hide | v | 25 | | subtitle delay | z / x | 26 | | move subtitle up/down | r / t | 27 | | subtitle scale | alt + { j / k } | 28 | 29 | ##### Color Control 30 | 31 | | function | key | 32 | |----------|-----| 33 | | increase/decrease contrast | 1 / 2 | 34 | | increase/decrease brightness | 3 / 4 | 35 | | increase/decrease gamma | 5 / 6 | 36 | | increase/decrease saturation | 7 / 8 | 37 | 38 | 39 | ##### Playback Control 40 | 41 | | function | key | 42 | |----------|-----| 43 | | increase/decrease speed | '[' / ']' | 44 | | aspect ratio | A | 45 | | zoom in/out | w / e | 46 | | mute/unmute audio | m | 47 | | increase/decrease audio volume | 9 / 0 | 48 | 49 | ##### Custom Scripts 50 | 51 | | function | key | 52 | |----------|-----| 53 | | mpv video thubmnail | T | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /.config/mpv/input.conf: -------------------------------------------------------------------------------- 1 | # increase subtitle font size 2 | ALT+k add sub-scale +0.1 3 | 4 | # decrease subtitle font size 5 | ALT+j add sub-scale -0.1 6 | 7 | -------------------------------------------------------------------------------- /.config/mpv/lua-settings/mpv_thumbnail_script.conf: -------------------------------------------------------------------------------- 1 | # The thumbnail cache directory. 2 | # On Windows this defaults to %TEMP%\mpv_thumbs_cache, 3 | # and on other platforms to /tmp/mpv_thumbs_cache. 4 | # The directory will be created automatically, but must be writeable! 5 | # Use absolute paths, and take note that environment variables like %TEMP% are unsupported (despite the default)! 6 | cache_directory=/tmp/my_mpv_thumbnails 7 | # THIS IS NOT A WINDOWS PATH. COMMENT IT OUT OR ADJUST IT YOURSELF. 8 | 9 | # Whether to generate thumbnails automatically on video load, without a keypress 10 | # Defaults to yes 11 | autogenerate=no 12 | 13 | # Only automatically thumbnail videos shorter than this (in seconds) 14 | # You will have to press T (or your own keybind) to enable the thumbnail previews 15 | # Set to 0 to disable the check, ie. thumbnail videos no matter how long they are 16 | # Defaults to 3600 (one hour) 17 | autogenerate_max_duration=3600 18 | 19 | # Use mpv to generate thumbnail even if ffmpeg is found in PATH 20 | # ffmpeg is slightly faster than mpv but lacks support for ordered chapters in MKVs, 21 | # which can break the resulting thumbnails. You have been warned. 22 | # Defaults to yes (don't use ffmpeg) 23 | prefer_mpv=[yes/no] 24 | 25 | # Explicitly disable subtitles on the mpv sub-calls 26 | # mpv can and will by default render subtitles into the thumbnails. 27 | # If this is not what you wish, set mpv_no_sub to yes 28 | # Defaults to no 29 | mpv_no_sub=[yes/no] 30 | 31 | # Enable to disable the built-in keybind ("T") to add your own, see after the block 32 | disable_keybinds=[yes/no] 33 | 34 | # The maximum dimensions of the thumbnails, in pixels 35 | # Defaults to 200 and 200 36 | thumbnail_width=400 37 | thumbnail_height=400 38 | 39 | # The thumbnail count target 40 | # (This will result in a thumbnail every ~10 seconds for a 25 minute video) 41 | thumbnail_count=150 42 | 43 | # The above target count will be adjusted by the minimum and 44 | # maximum time difference between thumbnails. 45 | # The thumbnail_count will be used to calculate a target separation, 46 | # and min/max_delta will be used to constrict it. 47 | 48 | # In other words, thumbnails will be: 49 | # - at least min_delta seconds apart (limiting the amount) 50 | # - at most max_delta seconds apart (raising the amount if needed) 51 | # Defaults to 5 and 90, values are seconds 52 | min_delta=5 53 | max_delta=90 54 | # 120 seconds aka 2 minutes will add more thumbnails only when the video is over 5 hours long! 55 | 56 | # Below are overrides for remote urls (you generally want less thumbnails, because it's slow!) 57 | # Thumbnailing network paths will be done with mpv (leveraging youtube-dl) 58 | 59 | # Allow thumbnailing network paths (naive check for "://") 60 | # Defaults to no 61 | thumbnail_network=[yes/no] 62 | # Override thumbnail count, min/max delta, as above 63 | remote_thumbnail_count=60 64 | remote_min_delta=15 65 | remote_max_delta=120 66 | 67 | # Try to grab the raw stream and disable ytdl for the mpv subcalls 68 | # Much faster than passing the url to ytdl again, but may cause problems with some sites 69 | # Defaults to yes 70 | remote_direct_stream=[yes/no] 71 | -------------------------------------------------------------------------------- /.config/mpv/mpv.conf: -------------------------------------------------------------------------------- 1 | # On-Screen Controller 2 | osc=no 3 | 4 | # Audio 5 | alang=eng,en,enUS,en-US,English,jpn,jp,jap,Japanese 6 | audio-file-auto=fuzzy 7 | 8 | # Subtitle 9 | slang=eng,en,enUS,en-US,English 10 | sub-auto=fuzzy 11 | 12 | gpu-api=vulkan 13 | -------------------------------------------------------------------------------- /.config/mpv/scripts/auto-save-state.lua: -------------------------------------------------------------------------------- 1 | -- Runs write-watch-later-config periodically 2 | 3 | local options = require 'mp.options' 4 | local o = { save_interval = 60 } 5 | options.read_options(o) 6 | 7 | local function save() 8 | if mp.get_property_bool("save-position-on-quit") then 9 | mp.command("write-watch-later-config") 10 | end 11 | end 12 | 13 | local function save_if_pause(_, pause) 14 | if pause then save() end 15 | end 16 | 17 | local function pause_timer_while_paused(_, pause) 18 | if pause then timer:stop() else timer:resume() end 19 | end 20 | 21 | -- This function runs on file-loaded, registers two callback functions, and 22 | -- then they run delete-watch-later-config when appropriate. 23 | local function delete_watch_later(event) 24 | local path = mp.get_property("path") 25 | 26 | -- Temporarily disables save-position-on-quit while eof-reached is true, so 27 | -- state isn't saved at EOF when keep-open=yes 28 | local function eof_reached(_, eof) 29 | if not can_delete then 30 | return 31 | elseif eof then 32 | print("Deleting state (eof-reached)") 33 | mp.commandv("delete-watch-later-config", path) 34 | mp.set_property("save-position-on-quit", "no") 35 | else 36 | mp.set_property("save-position-on-quit", "yes") 37 | end 38 | end 39 | 40 | local function end_file(event) 41 | mp.unregister_event(end_file) 42 | mp.unobserve_property(eof_reached) 43 | 44 | if not can_delete then 45 | can_delete = true 46 | elseif event["reason"] == "eof" or event["reason"] == "stop" then 47 | print("Deleting state (end-file "..event["reason"]..")") 48 | mp.commandv("delete-watch-later-config", path) 49 | end 50 | end 51 | 52 | mp.observe_property("eof-reached", "bool", eof_reached) 53 | mp.register_event("end-file", end_file) 54 | end 55 | 56 | mp.set_property("save-position-on-quit", "yes") 57 | 58 | can_delete = true 59 | mp.register_script_message("skip-delete-state", function() can_delete = false end) 60 | 61 | timer = mp.add_periodic_timer(o.save_interval, save) 62 | mp.observe_property("pause", "bool", pause_timer_while_paused) 63 | 64 | mp.observe_property("pause", "bool", save_if_pause) 65 | mp.register_event("file-loaded", delete_watch_later) 66 | 67 | 68 | -------------------------------------------------------------------------------- /.config/neofetch/.gitignore: -------------------------------------------------------------------------------- 1 | images 2 | -------------------------------------------------------------------------------- /.config/neofetch/README.md: -------------------------------------------------------------------------------- 1 | ![neofetch](https://ik.imagekit.io/rayshold/dotfiles/_config/neofetch/nf.png?updatedAt=1680768682746) 2 | --- 3 | 4 | **Customized version of [Linuxmobile's](https://github.com/linuxmobile/hyprland-dots) neofetch** 5 | 6 | Download [images](https://www.mediafire.com/folder/ue70r5fnbyxp6/dotfiles#s1wf7yekz7az0) from here and place it in '~/.config/neofetch/' 7 | -------------------------------------------------------------------------------- /.config/neofetch/config.conf: -------------------------------------------------------------------------------- 1 | # See this wiki page for more info: 2 | # https://github.com/dylanaraps/neofetch/wiki/Customizing-Info 3 | print_info() { 4 | # info title 5 | # info underline 6 | 7 | prin "$(color 1)A N I M E | L I N U X" 8 | prin "──────────────────────" 9 | prin "" 10 | info "$(color 1) " users 11 | info "$(color 2) " distro 12 | info "$(color 3)󰍹 " de 13 | # info "  " wm 14 | info "$(color 4) " shell 15 | info " " term 16 | info "$(color 6)󱑀 " uptime 17 | info "$(color 5) " packages 18 | info "$(color 7) " memory 19 | info "$(color 10) " cpu 20 | info "$(color 9)󰊖 " gpu 21 | # info "GPU Driver" gpu_driver # Linux/macOS only 22 | # info "CPU Usage" cpu_usage 23 | # info "Disk" disk 24 | # info "Battery" battery 25 | # info "Font" font 26 | # info "Song" song 27 | # [[ "$player" ]] && prin "Music Player" "$player" 28 | # info "Local IP" local_ip 29 | # info "Public IP" public_ip 30 | # info "Locale" locale # This only works on glibc systems. 31 | 32 | # info cols 33 | prin "" 34 | prin "$(color 1) $(color 2)  $(color 3)  $(color 4)  $(color 5)  $(color 6)  $(color 7)  $(color 8)  $(color 9)" 35 | prin ────────────────────── 36 | } 37 | 38 | # Title 39 | 40 | 41 | # Hide/Show Fully qualified domain name. 42 | # 43 | # Default: 'off' 44 | # Values: 'on', 'off' 45 | # Flag: --title_fqdn 46 | title_fqdn="off" 47 | 48 | 49 | # Kernel 50 | 51 | 52 | # Shorten the output of the kernel function. 53 | # 54 | # Default: 'on' 55 | # Values: 'on', 'off' 56 | # Flag: --kernel_shorthand 57 | # Supports: Everything except *BSDs (except PacBSD and PC-BSD) 58 | # 59 | # Example: 60 | # on: '4.8.9-1-ARCH' 61 | # off: 'Linux 4.8.9-1-ARCH' 62 | kernel_shorthand="on" 63 | 64 | 65 | # Distro 66 | 67 | 68 | # Shorten the output of the distro function 69 | # 70 | # Default: 'off' 71 | # Values: 'on', 'tiny', 'off' 72 | # Flag: --distro_shorthand 73 | # Supports: Everything except Windows and Haiku 74 | distro_shorthand="tiny" 75 | 76 | # Show/Hide OS Architecture. 77 | # Show 'x86_64', 'x86' and etc in 'Distro:' output. 78 | # 79 | # Default: 'on' 80 | # Values: 'on', 'off' 81 | # Flag: --os_arch 82 | # 83 | # Example: 84 | # on: 'Arch Linux x86_64' 85 | # off: 'Arch Linux' 86 | os_arch="on" 87 | 88 | # Uptime 89 | 90 | 91 | # Shorten the output of the uptime function 92 | # 93 | # Default: 'on' 94 | # Values: 'on', 'tiny', 'off' 95 | # Flag: --uptime_shorthand 96 | # 97 | # Example: 98 | # on: '2 days, 10 hours, 3 mins' 99 | # tiny: '2d 10h 3m' 100 | # off: '2 days, 10 hours, 3 minutes' 101 | uptime_shorthand="on" 102 | 103 | 104 | # Memory 105 | 106 | 107 | # Show memory pecentage in output. 108 | # 109 | # Default: 'off' 110 | # Values: 'on', 'off' 111 | # Flag: --memory_percent 112 | # 113 | # Example: 114 | # on: '1801MiB / 7881MiB (22%)' 115 | # off: '1801MiB / 7881MiB' 116 | memory_percent="off" 117 | 118 | # Change memory output unit. 119 | # 120 | # Default: 'mib' 121 | # Values: 'kib', 'mib', 'gib' 122 | # Flag: --memory_unit 123 | # 124 | # Example: 125 | # kib '1020928KiB / 7117824KiB' 126 | # mib '1042MiB / 6951MiB' 127 | # gib: ' 0.98GiB / 6.79GiB' 128 | memory_unit="mib" 129 | 130 | 131 | # Packages 132 | 133 | 134 | # Show/Hide Package Manager names. 135 | # 136 | # Default: 'tiny' 137 | # Values: 'on', 'tiny' 'off' 138 | # Flag: --package_managers 139 | # 140 | # Example: 141 | # on: '998 (pacman), 8 (flatpak), 4 (snap)' 142 | # tiny: '908 (pacman, flatpak, snap)' 143 | # off: '908' 144 | package_managers="off" 145 | 146 | 147 | # Shell 148 | 149 | 150 | # Show the path to $SHELL 151 | # 152 | # Default: 'off' 153 | # Values: 'on', 'off' 154 | # Flag: --shell_path 155 | # 156 | # Example: 157 | # on: '/bin/bash' 158 | # off: 'bash' 159 | shell_path="off" 160 | 161 | # Show $SHELL version 162 | # 163 | # Default: 'on' 164 | # Values: 'on', 'off' 165 | # Flag: --shell_version 166 | # 167 | # Example: 168 | # on: 'bash 4.4.5' 169 | # off: 'bash' 170 | shell_version="on" 171 | 172 | 173 | # CPU 174 | 175 | 176 | # CPU speed type 177 | # 178 | # Default: 'bios_limit' 179 | # Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. 180 | # Flag: --speed_type 181 | # Supports: Linux with 'cpufreq' 182 | # NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. 183 | speed_type="bios_limit" 184 | 185 | # CPU speed shorthand 186 | # 187 | # Default: 'off' 188 | # Values: 'on', 'off'. 189 | # Flag: --speed_shorthand 190 | # NOTE: This flag is not supported in systems with CPU speed less than 1 GHz 191 | # 192 | # Example: 193 | # on: 'i7-6500U (4) @ 3.1GHz' 194 | # off: 'i7-6500U (4) @ 3.100GHz' 195 | speed_shorthand="on" 196 | 197 | # Enable/Disable CPU brand in output. 198 | # 199 | # Default: 'on' 200 | # Values: 'on', 'off' 201 | # Flag: --cpu_brand 202 | # 203 | # Example: 204 | # on: 'Intel i7-6500U' 205 | # off: 'i7-6500U (4)' 206 | cpu_brand="off" 207 | 208 | # CPU Speed 209 | # Hide/Show CPU speed. 210 | # 211 | # Default: 'on' 212 | # Values: 'on', 'off' 213 | # Flag: --cpu_speed 214 | # 215 | # Example: 216 | # on: 'Intel i7-6500U (4) @ 3.1GHz' 217 | # off: 'Intel i7-6500U (4)' 218 | cpu_speed="on" 219 | 220 | # CPU Cores 221 | # Display CPU cores in output 222 | # 223 | # Default: 'logical' 224 | # Values: 'logical', 'physical', 'off' 225 | # Flag: --cpu_cores 226 | # Support: 'physical' doesn't work on BSD. 227 | # 228 | # Example: 229 | # logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) 230 | # physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) 231 | # off: 'Intel i7-6500U @ 3.1GHz' 232 | cpu_cores="logical" 233 | 234 | # CPU Temperature 235 | # Hide/Show CPU temperature. 236 | # Note the temperature is added to the regular CPU function. 237 | # 238 | # Default: 'off' 239 | # Values: 'C', 'F', 'off' 240 | # Flag: --cpu_temp 241 | # Supports: Linux, BSD 242 | # NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable 243 | # coretemp kernel module. This only supports newer Intel processors. 244 | # 245 | # Example: 246 | # C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' 247 | # F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' 248 | # off: 'Intel i7-6500U (4) @ 3.1GHz' 249 | cpu_temp="off" 250 | 251 | 252 | # GPU 253 | 254 | 255 | # Enable/Disable GPU Brand 256 | # 257 | # Default: 'on' 258 | # Values: 'on', 'off' 259 | # Flag: --gpu_brand 260 | # 261 | # Example: 262 | # on: 'AMD HD 7950' 263 | # off: 'HD 7950' 264 | gpu_brand="off" 265 | 266 | # Which GPU to display 267 | # 268 | # Default: 'all' 269 | # Values: 'all', 'dedicated', 'integrated' 270 | # Flag: --gpu_type 271 | # Supports: Linux 272 | # 273 | # Example: 274 | # all: 275 | # GPU1: AMD HD 7950 276 | # GPU2: Intel Integrated Graphics 277 | # 278 | # dedicated: 279 | # GPU1: AMD HD 7950 280 | # 281 | # integrated: 282 | # GPU1: Intel Integrated Graphics 283 | gpu_type="all" 284 | 285 | 286 | # Resolution 287 | 288 | 289 | # Display refresh rate next to each monitor 290 | # Default: 'off' 291 | # Values: 'on', 'off' 292 | # Flag: --refresh_rate 293 | # Supports: Doesn't work on Windows. 294 | # 295 | # Example: 296 | # on: '1920x1080 @ 60Hz' 297 | # off: '1920x1080' 298 | refresh_rate="off" 299 | 300 | 301 | # Gtk Theme / Icons / Font 302 | 303 | 304 | # Shorten output of GTK Theme / Icons / Font 305 | # 306 | # Default: 'off' 307 | # Values: 'on', 'off' 308 | # Flag: --gtk_shorthand 309 | # 310 | # Example: 311 | # on: 'Numix, Adwaita' 312 | # off: 'Numix [GTK2], Adwaita [GTK3]' 313 | gtk_shorthand="off" 314 | 315 | 316 | # Enable/Disable gtk2 Theme / Icons / Font 317 | # 318 | # Default: 'on' 319 | # Values: 'on', 'off' 320 | # Flag: --gtk2 321 | # 322 | # Example: 323 | # on: 'Numix [GTK2], Adwaita [GTK3]' 324 | # off: 'Adwaita [GTK3]' 325 | gtk2="on" 326 | 327 | # Enable/Disable gtk3 Theme / Icons / Font 328 | # 329 | # Default: 'on' 330 | # Values: 'on', 'off' 331 | # Flag: --gtk3 332 | # 333 | # Example: 334 | # on: 'Numix [GTK2], Adwaita [GTK3]' 335 | # off: 'Numix [GTK2]' 336 | gtk3="on" 337 | 338 | 339 | # IP Address 340 | 341 | 342 | # Website to ping for the public IP 343 | # 344 | # Default: 'http://ident.me' 345 | # Values: 'url' 346 | # Flag: --ip_host 347 | #public_ip_host="http://ident.me" 348 | 349 | 350 | # Public IP timeout. 351 | # 352 | # Default: '2' 353 | # Values: 'int' 354 | # Flag: --ip_timeout 355 | public_ip_timeout=2 356 | 357 | 358 | # Desktop Environment 359 | 360 | 361 | # Show Desktop Environment version 362 | # 363 | # Default: 'on' 364 | # Values: 'on', 'off' 365 | # Flag: --de_version 366 | de_version="on" 367 | 368 | 369 | # Disk 370 | 371 | 372 | # Which disks to display. 373 | # The values can be any /dev/sdXX, mount point or directory. 374 | # NOTE: By default we only show the disk info for '/'. 375 | # 376 | # Default: '/' 377 | # Values: '/', '/dev/sdXX', '/path/to/drive'. 378 | # Flag: --disk_show 379 | # 380 | # Example: 381 | # disk_show=('/' '/dev/sdb1'): 382 | # 'Disk (/): 74G / 118G (66%)' 383 | # 'Disk (/mnt/Videos): 823G / 893G (93%)' 384 | # 385 | # disk_show=('/'): 386 | # 'Disk (/): 74G / 118G (66%)' 387 | # 388 | disk_show=('/') 389 | 390 | # Disk subtitle. 391 | # What to append to the Disk subtitle. 392 | # 393 | # Default: 'mount' 394 | # Values: 'mount', 'name', 'dir', 'none' 395 | # Flag: --disk_subtitle 396 | # 397 | # Example: 398 | # name: 'Disk (/dev/sda1): 74G / 118G (66%)' 399 | # 'Disk (/dev/sdb2): 74G / 118G (66%)' 400 | # 401 | # mount: 'Disk (/): 74G / 118G (66%)' 402 | # 'Disk (/mnt/Local Disk): 74G / 118G (66%)' 403 | # 'Disk (/mnt/Videos): 74G / 118G (66%)' 404 | # 405 | # dir: 'Disk (/): 74G / 118G (66%)' 406 | # 'Disk (Local Disk): 74G / 118G (66%)' 407 | # 'Disk (Videos): 74G / 118G (66%)' 408 | # 409 | # none: 'Disk: 74G / 118G (66%)' 410 | # 'Disk: 74G / 118G (66%)' 411 | # 'Disk: 74G / 118G (66%)' 412 | disk_subtitle="mount" 413 | 414 | # Disk percent. 415 | # Show/Hide disk percent. 416 | # 417 | # Default: 'on' 418 | # Values: 'on', 'off' 419 | # Flag: --disk_percent 420 | # 421 | # Example: 422 | # on: 'Disk (/): 74G / 118G (66%)' 423 | # off: 'Disk (/): 74G / 118G' 424 | disk_percent="on" 425 | 426 | 427 | # Song 428 | 429 | 430 | # Manually specify a music player. 431 | # 432 | # Default: 'auto' 433 | # Values: 'auto', 'player-name' 434 | # Flag: --music_player 435 | # 436 | # Available values for 'player-name': 437 | # 438 | # amarok 439 | # audacious 440 | # banshee 441 | # bluemindo 442 | # clementine 443 | # cmus 444 | # deadbeef 445 | # deepin-music 446 | # dragon 447 | # elisa 448 | # exaile 449 | # gnome-music 450 | # gmusicbrowser 451 | # gogglesmm 452 | # guayadeque 453 | # io.elementary.music 454 | # iTunes 455 | # juk 456 | # lollypop 457 | # mocp 458 | # mopidy 459 | # mpd 460 | # muine 461 | # netease-cloud-music 462 | # olivia 463 | # playerctl 464 | # pogo 465 | # pragha 466 | # qmmp 467 | # quodlibet 468 | # rhythmbox 469 | # sayonara 470 | # smplayer 471 | # spotify 472 | # strawberry 473 | # tauonmb 474 | # tomahawk 475 | # vlc 476 | # xmms2d 477 | # xnoise 478 | # yarock 479 | music_player="auto" 480 | 481 | # Format to display song information. 482 | # 483 | # Default: '%artist% - %album% - %title%' 484 | # Values: '%artist%', '%album%', '%title%' 485 | # Flag: --song_format 486 | # 487 | # Example: 488 | # default: 'Song: Jet - Get Born - Sgt Major' 489 | song_format="%artist% - %album% - %title%" 490 | 491 | # Print the Artist, Album and Title on separate lines 492 | # 493 | # Default: 'off' 494 | # Values: 'on', 'off' 495 | # Flag: --song_shorthand 496 | # 497 | # Example: 498 | # on: 'Artist: The Fratellis' 499 | # 'Album: Costello Music' 500 | # 'Song: Chelsea Dagger' 501 | # 502 | # off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' 503 | song_shorthand="off" 504 | 505 | # 'mpc' arguments (specify a host, password etc). 506 | # 507 | # Default: '' 508 | # Example: mpc_args=(-h HOST -P PASSWORD) 509 | mpc_args=() 510 | 511 | 512 | # Text Colors 513 | 514 | 515 | # Text Colors 516 | # 517 | # Default: 'distro' 518 | # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' 519 | # Flag: --colors 520 | # 521 | # Each number represents a different part of the text in 522 | # this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' 523 | # 524 | # Example: 525 | # colors=(distro) - Text is colored based on Distro colors. 526 | # colors=(4 6 1 8 8 6) - Text is colored in the order above. 527 | colors=(distro) 528 | 529 | 530 | # Text Options 531 | 532 | 533 | # Toggle bold text 534 | # 535 | # Default: 'on' 536 | # Values: 'on', 'off' 537 | # Flag: --bold 538 | bold="on" 539 | 540 | # Enable/Disable Underline 541 | # 542 | # Default: 'on' 543 | # Values: 'on', 'off' 544 | # Flag: --underline 545 | underline_enabled="on" 546 | 547 | # Underline character 548 | # 549 | # Default: '-' 550 | # Values: 'string' 551 | # Flag: --underline_char 552 | underline_char="-" 553 | 554 | 555 | # Info Separator 556 | # Replace the default separator with the specified string. 557 | # 558 | # Default: ':' 559 | # Flag: --separator 560 | # 561 | # Example: 562 | # separator="->": 'Shell-> bash' 563 | # separator=" =": 'WM = dwm' 564 | separator="" 565 | 566 | 567 | # Color Blocks 568 | 569 | 570 | # Color block range 571 | # The range of colors to print. 572 | # 573 | # Default: '0', '15' 574 | # Values: 'num' 575 | # Flag: --block_range 576 | # 577 | # Example: 578 | # 579 | # Display colors 0-7 in the blocks. (8 colors) 580 | # neofetch --block_range 0 7 581 | # 582 | # Display colors 0-15 in the blocks. (16 colors) 583 | # neofetch --block_range 0 15 584 | block_range=(0 15) 585 | 586 | # Toggle color blocks 587 | # 588 | # Default: 'on' 589 | # Values: 'on', 'off' 590 | # Flag: --color_blocks 591 | color_blocks="on" 592 | 593 | # Color block width in spaces 594 | # 595 | # Default: '3' 596 | # Values: 'num' 597 | # Flag: --block_width 598 | block_width=3 599 | 600 | # Color block height in lines 601 | # 602 | # Default: '1' 603 | # Values: 'num' 604 | # Flag: --block_height 605 | block_height=1 606 | 607 | # Color Alignment 608 | # 609 | # Default: 'auto' 610 | # Values: 'auto', 'num' 611 | # Flag: --col_offset 612 | # 613 | # Number specifies how far from the left side of the terminal (in spaces) to 614 | # begin printing the columns, in case you want to e.g. center them under your 615 | # text. 616 | # Example: 617 | # col_offset="auto" - Default behavior of neofetch 618 | # col_offset=7 - Leave 7 spaces then print the colors 619 | col_offset="auto" 620 | 621 | # Progress Bars 622 | 623 | 624 | # Bar characters 625 | # 626 | # Default: '-', '=' 627 | # Values: 'string', 'string' 628 | # Flag: --bar_char 629 | # 630 | # Example: 631 | # neofetch --bar_char 'elapsed' 'total' 632 | # neofetch --bar_char '-' '=' 633 | bar_char_elapsed="-" 634 | bar_char_total="=" 635 | 636 | # Toggle Bar border 637 | # 638 | # Default: 'on' 639 | # Values: 'on', 'off' 640 | # Flag: --bar_border 641 | bar_border="on" 642 | 643 | # Progress bar length in spaces 644 | # Number of chars long to make the progress bars. 645 | # 646 | # Default: '15' 647 | # Values: 'num' 648 | # Flag: --bar_length 649 | bar_length=15 650 | 651 | # Progress bar colors 652 | # When set to distro, uses your distro's logo colors. 653 | # 654 | # Default: 'distro', 'distro' 655 | # Values: 'distro', 'num' 656 | # Flag: --bar_colors 657 | # 658 | # Example: 659 | # neofetch --bar_colors 3 4 660 | # neofetch --bar_colors distro 5 661 | bar_color_elapsed="distro" 662 | bar_color_total="distro" 663 | 664 | 665 | # Info display 666 | # Display a bar with the info. 667 | # 668 | # Default: 'off' 669 | # Values: 'bar', 'infobar', 'barinfo', 'off' 670 | # Flags: --cpu_display 671 | # --memory_display 672 | # --battery_display 673 | # --disk_display 674 | # 675 | # Example: 676 | # bar: '[---=======]' 677 | # infobar: 'info [---=======]' 678 | # barinfo: '[---=======] info' 679 | # off: 'info' 680 | cpu_display="off" 681 | memory_display="off" 682 | battery_display="off" 683 | disk_display="off" 684 | 685 | 686 | # Backend Settings 687 | 688 | 689 | # Image backend. 690 | # 691 | # Default: 'ascii' 692 | # Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', 693 | # 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' 694 | # Flag: --backend 695 | image_backend="kitty" 696 | 697 | # Image Source 698 | # 699 | # Which image or ascii file to display. 700 | # 701 | # Default: 'auto' 702 | # Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' 703 | # 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' 704 | # Flag: --source 705 | # 706 | # NOTE: 'auto' will pick the best image source for whatever image backend is used. 707 | # In ascii mode, distro ascii art will be used and in an image mode, your 708 | # wallpaper will be used. 709 | #image_source="auto" 710 | image_source="${HOME}/.config/neofetch/images/2B.png" 711 | 712 | # Ascii Options 713 | 714 | 715 | # Ascii distro 716 | # Which distro's ascii art to display. 717 | # 718 | # Default: 'auto' 719 | # Values: 'auto', 'distro_name' 720 | # Flag: --ascii_distro 721 | # NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", 722 | # "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, 723 | # ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, 724 | # Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, 725 | # BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, 726 | # Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, 727 | # Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, 728 | # DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, 729 | # EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, 730 | # FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, 731 | # gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, 732 | # Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, 733 | # Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, 734 | # LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, 735 | # Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, 736 | # Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, 737 | # NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, 738 | # OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, 739 | # Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, 740 | # popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, 741 | # Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, 742 | # Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, 743 | # Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, 744 | # SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, 745 | # openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, 746 | # Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, 747 | # Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, 748 | # and IRIX have ascii logos 749 | # NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. 750 | # Use '{distro name}_old' to use the old logos. 751 | # NOTE: Ubuntu has flavor variants. 752 | # Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, 753 | # Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. 754 | # NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, 755 | # CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, 756 | # Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, 757 | # Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, 758 | # Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, 759 | # postmarketOS, and Void have a smaller logo variant. 760 | # Use '{distro name}_small' to use the small variants. 761 | ascii_distro="auto" 762 | 763 | # Ascii Colors 764 | # 765 | # Default: 'distro' 766 | # Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' 767 | # Flag: --ascii_colors 768 | # 769 | # Example: 770 | # ascii_colors=(distro) - Ascii is colored based on Distro colors. 771 | # ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. 772 | ascii_colors=(distro) 773 | 774 | # Bold ascii logo 775 | # Whether or not to bold the ascii logo. 776 | # 777 | # Default: 'on' 778 | # Values: 'on', 'off' 779 | # Flag: --ascii_bold 780 | ascii_bold="on" 781 | 782 | 783 | # Image Options 784 | 785 | 786 | # Image loop 787 | # Setting this to on will make neofetch redraw the image constantly until 788 | # Ctrl+C is pressed. This fixes display issues in some terminal emulators. 789 | # 790 | # Default: 'off' 791 | # Values: 'on', 'off' 792 | # Flag: --loop 793 | image_loop="on" 794 | 795 | # Thumbnail directory 796 | # 797 | # Default: '~/.cache/thumbnails/neofetch' 798 | # Values: 'dir' 799 | thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" 800 | 801 | # Crop mode 802 | # 803 | # Default: 'normal' 804 | # Values: 'normal', 'fit', 'fill' 805 | # Flag: --crop_mode 806 | # 807 | # See this wiki page to learn about the fit and fill options. 808 | # https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F 809 | crop_mode="normal" 810 | 811 | # Crop offset 812 | # Note: Only affects 'normal' crop mode. 813 | # 814 | # Default: 'center' 815 | # Values: 'northwest', 'north', 'northeast', 'west', 'center' 816 | # 'east', 'southwest', 'south', 'southeast' 817 | # Flag: --crop_offset 818 | crop_offset="center" 819 | 820 | # Image size 821 | # The image is half the terminal width by default. 822 | # 823 | # Default: 'auto' 824 | # Values: 'auto', '00px', '00%', 'none' 825 | # Flags: --image_size 826 | # --size 827 | image_size="300px" 828 | 829 | # Gap between image and text 830 | # 831 | # Default: '3' 832 | # Values: 'num', '-num' 833 | # Flag: --gap 834 | gap=4 835 | 836 | # Image offsets 837 | # Only works with the w3m backend. 838 | # 839 | # Default: '0' 840 | # Values: 'px' 841 | # Flags: --xoffset 842 | # --yoffset 843 | yoffset=0 844 | xoffset=0 845 | 846 | # Image background color 847 | # Only works with the w3m backend. 848 | # 849 | # Default: '' 850 | # Values: 'color', 'blue' 851 | # Flag: --bg_color 852 | background_color= 853 | 854 | 855 | # Misc Options 856 | 857 | # Stdout mode 858 | # Turn off all colors and disables image backend (ASCII/Image). 859 | # Useful for piping into another command. 860 | # Default: 'off' 861 | # Values: 'on', 'off' 862 | stdout="off" 863 | -------------------------------------------------------------------------------- /.config/nvim/.gitignore: -------------------------------------------------------------------------------- 1 | plugin/ 2 | spell/ 3 | sessions/ 4 | lazy-lock.json 5 | -------------------------------------------------------------------------------- /.config/nvim/README.md: -------------------------------------------------------------------------------- 1 | ## 🖼️ Screenshots 2 | 3 | | ![image-06](https://ik.imagekit.io/rayshold/dotfiles/_config/nvim/neovim-06.webp?updatedAt=1704005666751) | 4 | | ----- | 5 | 6 | | ![image-07](https://ik.imagekit.io/rayshold/dotfiles/_config/nvim/neovim-07.webp?updatedAt=1704004269358) | ![image-08](https://ik.imagekit.io/rayshold/dotfiles/_config/nvim/neovim-08.webp?updatedAt=1704005633616) | ![image-05](https://ik.imagekit.io/rayshold/dotfiles/_config/nvim/neovim-05.webp?updatedAt=1704005650274) | 7 | | ----- | ----- | ----- | 8 | 9 | ## 🧩 Plugins 10 | 11 | - 📦️ [lazy.nvim](https://github.com/folke/lazy.nvim) as package manager 12 | - ⚡️ Startup screen [alpha-nvim](https://github.com/goolord/alpha-nvim) 13 | - 🚨 For linting [null-ls.nvim](https://github.com/jose-elias-alvarez/null-ls.nvim) 14 | - 🔭 Fuzzy finder [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) 15 | - 🦄 [nvim-notify](https://github.com/rcarriga/nvim-notify) for notifications & [noice.nvim](https://github.com/folke/noice.nvim) for other UI related stuff 16 | - 🗃️ File system browser [neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim) 17 | - 📈 Buffer manager [barbar.nvim](https://github.com/romgrk/barbar.nvim) & Status bar [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) 18 | - 💡 Neovim LSP configuration with [mason.nvim](https://github.com/williamboman/mason.nvim), [mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) & [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) 19 | - 📄 Code formatting with [conform.nvim](https://github.com/stevearc/conform.nvim) 20 | - 🦆 Snippets with [LuaSnip](https://github.com/L3MON4D3/LuaSnip) & [friendly snippets](https://github.com/rafamadriz/friendly-snippets) 21 | - 📏 Indent blanklines with [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) 22 | - 📝 Notes management [telekasten.nvim](https://github.com/renerocksai/telekasten.nvim) 23 | 24 | ## ⌨️ Keybindings 25 | 26 | **General** 27 | | Function | Keys | 28 | | -------------------- | ----------- | 29 | | Move line/lines down | Ctrl + j | 30 | | Move line/lines up | Ctrl + k | 31 | | Find files | Leader + ff | 32 | | Toggle neotree | Ctrl + n | 33 | | Manually Format Code | Space + f | 34 | | Markdown preview | Ctrl + m | 35 | | Spell check | Leader + s | 36 | | Projcet jump window | Ctrl + s | 37 | 38 | **Buffer** 39 | | Function | Keys | 40 | | ----------------------- | ---------- | 41 | | Buffer previous | Alt + h | 42 | | Buffer move to previous | Alt + H | 43 | | Buffer next | Alt + l | 44 | | Buffer move to next | Alt + L | 45 | | Buffer close | Alt + c | 46 | | Buffer pin | Alt + p | 47 | | Order buffer by lang | Space + bl | 48 | 49 | ## 🧑‍💻 Few useful Cmds 50 | 51 | | Function | Cmd | 52 | | ----------------------- | ------------- | 53 | | Enable auto formatting | FormatEnable | 54 | | Disable auto formatting | FormatDisable | 55 | | Save session | SessionSave | 56 | | Delete session | SessionDelete | 57 | 58 | ## ✨ Credits 59 | 60 | - [numToStr's dotfile](https://github.com/numToStr/dotfiles/tree/master/neovim/.config/nvim) - initial reference 61 | - [NvChad](https://github.com/NvChad/NvChad) - file structure 62 | - [CosmicNvim](https://github.com/CosmicNvim/CosmicNvim) - keybindings 63 | - [sadiksaifi's dotfiles](https://github.com/sadiksaifi/nvim) - LSP reference 64 | - [LazyVim](https://github.com/LazyVim/LazyVim) - lazy.nvim related reference 65 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("core.settings") 2 | require("core.lazy") 3 | require("core.keybindings") 4 | require("core.autocmd") 5 | -- require("core.kittymargin") -- won't work with any terminal other than kitty 6 | 7 | vim.cmd.colorscheme("catppuccin") 8 | 9 | -- neovide configuration 10 | if vim.g.neovide then 11 | require("core.neovide") 12 | end 13 | 14 | -- Pretty print lua table 15 | function _G.dump(...) 16 | local objects = vim.tbl_map(vim.inspect, { ... }) 17 | print(unpack(objects)) 18 | end 19 | 20 | vim.g.neoformat_js_prettier_single_quote = 0 21 | -- This fixes annoying notification of transparent background reminder 22 | require("notify").setup({ 23 | background_colour = "#1a1b26", 24 | }) 25 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/autocmd.lua: -------------------------------------------------------------------------------- 1 | local A = vim.api 2 | local B = vim.b 3 | local G = vim.g 4 | 5 | -- Format cmds of conform.nvim 6 | A.nvim_create_user_command("FormatOnSaveDisable", function(args) 7 | if args.bang then 8 | B.disable_autoformat = true 9 | else 10 | G.disable_autoformat = true 11 | end 12 | end, { 13 | desc = "Disable autoformat-on-save", 14 | bang = true, 15 | }) 16 | 17 | A.nvim_create_user_command("FormatOnSaveEnable", function() 18 | B.disable_autoformat = false 19 | G.disable_autoformat = false 20 | end, { 21 | desc = "Re-enable autoformat-on-save", 22 | }) 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/keybindings.lua: -------------------------------------------------------------------------------- 1 | local map = require("utils").map 2 | 3 | -- General Settings 4 | map("n", "*", "*N", { desc = "Fix * (Keep the cursor position, don't move to next match)" }) 5 | map("n", "", ":q!", { desc = "Quit neovim" }) 6 | map("i", "", "", { noremap = true, desc = "Delete a word" }) 7 | 8 | -- Line Movement 9 | -- Reference: https://vim.fandom.com/wiki/Moving_lines_up_or_down 10 | map("n", "", ":move .+1", { desc = "Move line down" }) 11 | map("n", "", ":move .-2", { desc = "Move line up" }) 12 | map("x", "", ":move '>+1gv=gv", { desc = "Move multiple selected line down" }) 13 | map("x", "", ":move '<-2gv=gv", { desc = "Move multiple selected lines up" }) 14 | 15 | -- Telescope 16 | map("n", "ff", ":Telescope find_files", { desc = "Find files" }) 17 | map("n", "bf", ":Telescope live_grep", { desc = "Live grep" }) 18 | map("n", "fb", ":Telescope current_buffer_fuzzy_find", { desc = "Fuzzy files" }) 19 | map("n", "fh", ":Telescope help_tags", { desc = "Help tags" }) 20 | 21 | -- NeoTree 22 | map("n", "", ":Neotree toggle reveal_force_cwd", { desc = "Neotree toggle" }) 23 | 24 | -- Buffer Navigation 25 | map("n", "", "BufferMoveNext", { desc = "Move buffer to next" }) 26 | map("n", "", "BufferMovePrevious", { desc = "Move buffer to previous" }) 27 | map("n", "", "BufferNext", { desc = "Next buffer" }) 28 | map("n", "", "BufferPrevious", { desc = "Previous buffer" }) 29 | map("n", "", "BufferPin", { desc = "Pin buffer" }) 30 | map("n", "", "BufferClose", { desc = "Close buffer" }) 31 | map("n", "", "BufferPick", { desc = "Pick buffer" }) 32 | map("n", "bl", "BufferOrderByLanguage", { desc = "Order buffer by language" }) 33 | 34 | -- Markdown 35 | map("n", "", ":MarkdownPreview", { desc = "Markdown preview" }) 36 | 37 | -- Comments 38 | local opt = { expr = true, remap = true, replace_keycodes = false } 39 | 40 | -- Toggle in VISUAL mode 41 | map("x", "", "(comment_toggle_linewise_visual)") 42 | map("x", "", ":w !wl-copy") 43 | map("i", "", "caw", { noremap = true }) 44 | 45 | -- Spell check 46 | map("n", "s", ":setlocal spell spelllang=en_us", { desc = "Turn on spell check" }) 47 | 48 | -- Session Manager 49 | map("n", "", require("auto-session.session-lens").search_session, { desc = "Project hop" }) 50 | 51 | -- Formatter 52 | map("n", "f", function() 53 | local status_ok, format = pcall(require, "conform") 54 | if not status_ok then 55 | return 56 | end 57 | format.format({ async = true, lsp_fallback = true }) 58 | end, { desc = "Format code" }) 59 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/kittymargin.lua: -------------------------------------------------------------------------------- 1 | -- set kitty margin and padding to 0 while using neovim 2 | -- nomore kitty and neovim colorscheme conflict 3 | 4 | vim.cmd ([[ 5 | augroup kitty_mp 6 | autocmd! 7 | au VimLeave * :silent !kitty @ set-spacing padding=10 margin=10 8 | au VimEnter * :silent !kitty @ set-spacing padding=0 margin=0 9 | augroup END 10 | ]]) 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/lazy.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | if not vim.loop.fs_stat(lazypath) then 3 | print("Installing lazy.nvim") 4 | vim.fn.system({ 5 | "git", 6 | "clone", 7 | "--filter=blob:none", 8 | "https://github.com/folke/lazy.nvim.git", 9 | "--branch=stable", -- latest stable release 10 | lazypath, 11 | }) 12 | end 13 | vim.opt.rtp:prepend(vim.env.LAZY or lazypath) 14 | 15 | require("lazy").setup({ 16 | spec = { 17 | { import = "plugins" }, 18 | }, 19 | }) 20 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/neovide.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | 3 | -- General 4 | hide_mouse_when_typing = true, 5 | remember_window_size = false, 6 | 7 | -- Visuals/animations 8 | cursor_vfx_mode = "wireframe", 9 | padding_top = 20, 10 | padding_bottom = 20, 11 | padding_right = 20, 12 | padding_left = 20, 13 | 14 | -- Theme 15 | transparency = 0.8, 16 | } 17 | 18 | for x, y in pairs(options) do 19 | vim.g["neovide_" .. x] = y 20 | end 21 | -------------------------------------------------------------------------------- /.config/nvim/lua/core/settings.lua: -------------------------------------------------------------------------------- 1 | function set_vim_options(options, use_opt) 2 | local vim_cmd = use_opt and vim.opt or vim.g 3 | for x, y in pairs(options) do 4 | vim_cmd[x] = y 5 | end 6 | end 7 | 8 | local options = { 9 | termguicolors = true, -- set term gui colors (most terminals support this) 10 | timeoutlen = 500, -- time to wait for a mapped sequence to complete (in milliseconds) 11 | updatetime = 200, -- faster completion (4000ms default) 12 | scrolloff = 8, 13 | number = true, -- set numbered lines 14 | numberwidth = 6, -- set number column width 15 | cursorline = true, -- highlight the current line 16 | expandtab = true, -- convert tabs to spaces 17 | cindent = true, 18 | wrap = true, -- display lines as one long line 19 | textwidth = 300, 20 | tabstop = 4, -- insert 2 spaces for a tab 21 | shiftwidth = 0, -- the number of spaces inserted for each indentation 22 | softtabstop = -1, -- If negative, shiftwidth value is used 23 | list = true, 24 | clipboard = "unnamedplus", -- Makes neovim and host OS clipboard play nicely with each other 25 | ignorecase = true, -- Case insensitive searching UNLESS /C or capital in search 26 | smartcase = true, -- smart case 27 | backup = false, -- Undo and backup options 28 | writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited 29 | undofile = true, -- enable persistent undo 30 | swapfile = false, -- creates a swapfile 31 | history = 50, -- Remember 50 items in commandline history 32 | splitright = true, -- Better buffer splitting 33 | splitbelow = true, 34 | guifont = "CommitMono Nerd Font:h15", 35 | mouse = "a", 36 | listchars = "trail:·,nbsp:◇,tab:→ ,extends:▸,precedes:◂", 37 | } 38 | set_vim_options(options, true) 39 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/alpha.lua: -------------------------------------------------------------------------------- 1 | local function button(sc, txt, keybind, keybind_opts) 2 | local sc_ = sc:gsub("%s", ""):gsub("SPC", "") 3 | 4 | local opts = { 5 | position = "center", 6 | shortcut = sc, 7 | cursor = 3, 8 | width = 45, 9 | align_shortcut = "right", 10 | hl = "AlphaButtons", 11 | hl_shortcut = "Keyword", 12 | } 13 | if keybind then 14 | keybind_opts = vim.F.if_nil(keybind_opts, { noremap = true, silent = true, nowait = true }) 15 | opts.keymap = { "n", sc_, keybind, keybind_opts } 16 | end 17 | 18 | return { 19 | type = "button", 20 | val = txt, 21 | on_press = function() 22 | local key = vim.api.nvim_replace_termcodes(keybind or sc_ .. "", true, false, true) 23 | vim.api.nvim_feedkeys(key, "t", false) 24 | end, 25 | opts = opts, 26 | } 27 | end 28 | 29 | local logo = { 30 | [[███ ██ ███████ ██████ ██ ██ ██ ███ ███]], 31 | [[████ ██ ██ ██ ██ ██ ██ ██ ████ ████]], 32 | [[██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ████ ██]], 33 | [[██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██]], 34 | [[██ ████ ███████ ██████ ████ ██ ██ ██]], 35 | } 36 | 37 | -- Buttons 38 | local buttons = { 39 | type = "group", 40 | val = { 41 | button("u", "󰐱 Update plugins", "Lazy update"), 42 | button("f", " Find files", "Telescope find_files"), 43 | button("n", "󰷈 Find Notes", "Telekasten find_notes"), 44 | button("t", " Change theme", "Telescope colorscheme"), 45 | button("q", "󰅚 Quit", ":qa"), 46 | }, 47 | opts = { 48 | spacing = 1, 49 | }, 50 | } 51 | 52 | -- Header 53 | -- Dynamic header padding 54 | local fn = vim.fn 55 | local headerPadding = fn.max({ 2, fn.floor(fn.winheight(0) * 0.3) }) 56 | 57 | local header = { 58 | type = "text", 59 | val = logo, 60 | opts = { 61 | position = "center", 62 | hl = "AlphaHeader", 63 | }, 64 | } 65 | 66 | -- Footer 67 | local footer = { 68 | type = "text", 69 | val = "", 70 | opts = { 71 | position = "center", 72 | hl = "Number", 73 | }, 74 | } 75 | 76 | local section = { 77 | header = header, 78 | buttons = buttons, 79 | footer = footer, 80 | } 81 | 82 | local config = { 83 | layout = { 84 | { type = "padding", val = headerPadding }, 85 | section.header, 86 | { type = "padding", val = 2 }, 87 | section.buttons, 88 | section.footer, 89 | }, 90 | } 91 | 92 | return { 93 | section = section, 94 | opts = config, 95 | } 96 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/catppuccin.lua: -------------------------------------------------------------------------------- 1 | local status_ok, catppuccin = pcall(require, "catppuccin") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | catppuccin.setup({ 7 | 8 | flavour = "mocha", -- latte, frappe, macchiato, mocha 9 | background = { -- :h background 10 | light = "mocha", 11 | dark = "mocha", 12 | }, 13 | transparent_background = true, 14 | show_end_of_buffer = false, -- show the '~' characters after the end of buffers 15 | term_colors = false, 16 | dim_inactive = { 17 | enabled = false, 18 | shade = "dark", 19 | percentage = 0.15, 20 | }, 21 | no_italic = false, -- Force no italic 22 | no_bold = false, -- Force no bold 23 | styles = { 24 | comments = { "italic" }, 25 | conditionals = { "italic" }, 26 | }, 27 | integrations = { 28 | cmp = true, 29 | gitsigns = true, 30 | nvimtree = true, 31 | telescope = true, 32 | notify = true, 33 | mini = false, 34 | }, 35 | }) 36 | 37 | -- vim.cmd.colorscheme("catppuccin") 38 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/conform.lua: -------------------------------------------------------------------------------- 1 | local function is_format_enabled(bufnr) 2 | if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then 3 | return 4 | end 5 | end 6 | 7 | local slow_format_filetypes = { "typescript", "typescriptreact", "javascriptreact" } 8 | 9 | options = { 10 | formatters_by_ft = { 11 | astro = { "prettier" }, 12 | css = { "prettier" }, 13 | html = { "prettier" }, 14 | json = { "prettier" }, 15 | lua = { "stylua" }, 16 | markdown = { "prettier" }, 17 | python = { "black", "yapf" }, 18 | svelete = { "prettier" }, 19 | javascript = { { "prettier", "prettierd" } }, 20 | javascriptreact = { "prettier" }, 21 | typescript = { { "prettier", "prettierd" } }, 22 | typescriptreact = { "prettier" }, 23 | yaml = { "prettier" }, 24 | sh = { "shfmt" }, 25 | }, 26 | 27 | format_on_save = function(bufnr) 28 | if is_format_enabled(bufnr) then 29 | return 30 | end 31 | 32 | if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then 33 | return 34 | end 35 | if slow_format_filetypes[vim.bo[bufnr].filetype] then 36 | return 37 | end 38 | local function on_format(err) 39 | if err and err:match("timeout$") then 40 | slow_format_filetypes[vim.bo[bufnr].filetype] = true 41 | end 42 | end 43 | 44 | return { timeout_ms = 200, lsp_fallback = true }, on_format 45 | end, 46 | 47 | format_after_save = function(bufnr) 48 | if is_format_enabled(bufnr) then 49 | return 50 | end 51 | 52 | if not slow_format_filetypes[vim.bo[bufnr].filetype] then 53 | return 54 | end 55 | return { lsp_fallback = true } 56 | end, 57 | } 58 | 59 | return options 60 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/lsp.lua: -------------------------------------------------------------------------------- 1 | local status_ok, lspconfig = pcall(require, "lspconfig") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local capabilities = require("cmp_nvim_lsp").default_capabilities() 7 | 8 | for _, server in pairs(require("utils.ensure_installed").servers) do 9 | Opts = { 10 | on_attach = on_attach, 11 | capabilities = capabilities, 12 | } 13 | server = vim.split(server, "@")[1] 14 | lspconfig[server].setup(Opts) 15 | end 16 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/luasnip.lua: -------------------------------------------------------------------------------- 1 | local types = require("luasnip.util.types") 2 | 3 | -- For friendly snippets 4 | require("luasnip.loaders.from_vscode").lazy_load() 5 | -- For custom snippets 6 | require("luasnip.loaders.from_vscode").lazy_load({ paths = { "./snips" } }) 7 | 8 | -- Allow jsx and tsx to use js snippets 9 | require("luasnip").filetype_extend("javascript", { "javascriptreact", "typescriptreact" }) 10 | 11 | -- Mappins to move around inside snippets 12 | vim.keymap.set({ "i", "s" }, "", 'lua require("luasnip").jump(1)') 13 | vim.keymap.set({ "i", "s" }, "", 'lua require("luasnip").jump(-1)') 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/mason.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | 3 | ui = { 4 | icons = { 5 | package_pending = " ", 6 | package_installed = "󰄳 ", 7 | package_uninstalled = " 󰚌", 8 | }, 9 | 10 | keymaps = { 11 | toggle_server_expand = "", 12 | install_server = "i", 13 | update_server = "u", 14 | check_server_version = "c", 15 | update_all_servers = "U", 16 | check_outdated_servers = "C", 17 | uninstall_server = "X", 18 | cancel_installation = "", 19 | }, 20 | }, 21 | 22 | max_concurrent_installers = 10, 23 | } 24 | return options 25 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/neo-tree.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | 3 | close_if_last_window = true, 4 | popup_border_style = "rounded", 5 | enable_diagnostics = false, 6 | default_component_configs = { 7 | indent = { 8 | padding = 0, 9 | with_expanders = false, 10 | }, 11 | icon = { 12 | folder_closed = "", 13 | folder_open = "", 14 | folder_empty = "", 15 | default = "", 16 | }, 17 | git_status = { 18 | symbols = { 19 | added = "", 20 | deleted = "", 21 | modified = "", 22 | renamed = "➜", 23 | untracked = "★", 24 | ignored = "◌", 25 | unstaged = "✗", 26 | staged = "✓", 27 | conflict = "", 28 | }, 29 | }, 30 | }, 31 | window = { 32 | width = 25, 33 | mappings = { 34 | ["o"] = "open", 35 | }, 36 | }, 37 | filesystem = { 38 | filtered_items = { 39 | visible = false, 40 | hide_dotfiles = true, 41 | hide_gitignored = false, 42 | hide_by_name = { 43 | ".DS_Store", 44 | "thumbs.db", 45 | "node_modules", 46 | "__pycache__", 47 | }, 48 | }, 49 | -- follow_current_file = true, 50 | hijack_netrw_behavior = "open_current", 51 | use_libuv_file_watcher = true, 52 | }, 53 | git_status = { 54 | window = { 55 | position = "float", 56 | }, 57 | }, 58 | event_handlers = { 59 | { 60 | event = "neo_tree_buffer_enter", 61 | handler = function(_) 62 | vim.opt_local.signcolumn = "auto" 63 | end, 64 | }, 65 | }, 66 | } 67 | return options 68 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/noice-nvim.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | views = { 3 | cmdline_popup = { 4 | position = { 5 | row = 5, 6 | col = "50%", 7 | }, 8 | size = { 9 | width = 60, 10 | height = "auto", 11 | }, 12 | }, 13 | popupmenu = { 14 | relative = "editor", 15 | position = { 16 | row = 8, 17 | col = "50%", 18 | }, 19 | size = { 20 | width = 60, 21 | height = 10, 22 | }, 23 | border = { 24 | style = "rounded", 25 | padding = { 0, 1 }, 26 | }, 27 | win_options = { 28 | winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" }, 29 | }, 30 | }, 31 | }, 32 | } 33 | 34 | return options 35 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/nvim-cmp.lua: -------------------------------------------------------------------------------- 1 | local status_ok, cmp = pcall(require, "cmp") 2 | 3 | if not status_ok then 4 | return 5 | end 6 | 7 | local icons = { 8 | Text = "󰉿", 9 | Method = "󰆧", 10 | Function = "󰊕", 11 | Constructor = "", 12 | Field = "󰜢", 13 | Variable = "", 14 | Class = "󰠱", 15 | Interface = "", 16 | Module = "", 17 | Property = "󰜢", 18 | Unit = "󰑭", 19 | Value = "󰎠", 20 | Enum = "", 21 | Keyword = "󰌋", 22 | Snippet = "", 23 | Color = "", 24 | File = "", 25 | Reference = "󰿅", 26 | Folder = "󰉋", 27 | EnumMember = "", 28 | Constant = "", 29 | Struct = "󰙅", 30 | Event = "", 31 | Operator = "󰆕", 32 | TypeParameter = "", 33 | } 34 | 35 | local aliases = { 36 | nvim_lsp = "lsp", 37 | luasnip = "snippet", 38 | } 39 | 40 | cmp.setup({ 41 | mapping = cmp.mapping.preset.insert({ 42 | [""] = cmp.config.disable, 43 | [""] = cmp.mapping.scroll_docs(-4), 44 | [""] = cmp.mapping.scroll_docs(4), 45 | [""] = cmp.mapping.confirm({ select = true }), 46 | [""] = cmp.mapping.complete(), 47 | }), 48 | window = { 49 | -- completion = cmp.config.window.bordered(), 50 | documentation = cmp.config.window.bordered(), 51 | }, 52 | sources = cmp.config.sources({ 53 | { name = "nvim_lsp", max_item_count = 10 }, 54 | { name = "luasnip", max_item_count = 10 }, 55 | { name = "path", max_item_count = 10 }, 56 | { name = "buffer", max_item_count = 10 }, 57 | }), 58 | snippet = { 59 | expand = function(args) 60 | require("luasnip").lsp_expand(args.body) 61 | end, 62 | }, 63 | formatting = { 64 | format = function(entry, item) 65 | -- Kind icons 66 | item.kind = string.format("%s %s", icons[item.kind], item.kind) 67 | -- Source 68 | item.menu = string.format("[%s]", aliases[entry.source.name] or entry.source.name) 69 | return item 70 | end, 71 | }, 72 | }) 73 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/others.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | M.null_ls = function() 4 | local status_ok, null_ls = pcall(require, "null-ls") 5 | 6 | if not status_ok then 7 | return 8 | end 9 | 10 | local formatting = null_ls.builtins.formatting 11 | local diagnostics = null_ls.builtins.diagnostics 12 | local completion = null_ls.builtins.completion 13 | 14 | null_ls.setup({ 15 | debug = false, 16 | sources = { 17 | formatting.prettier, 18 | formatting.stylua, 19 | formatting.black.with({ extra_args = { "--fast" } }), 20 | completion.spell, 21 | diagnostics.selene, 22 | require("none-ls.diagnostics.eslint"), 23 | require("none-ls.diagnostics.flake8"), 24 | }, 25 | }) 26 | end 27 | 28 | M.notify = function() 29 | local status_ok, notify = pcall(require, "notify") 30 | if not status_ok then 31 | return 32 | end 33 | notify.setup({ 34 | fps = 60, 35 | timeout = 1000, 36 | level = 2, 37 | minimum_width = 50, 38 | render = "minimal", 39 | stages = "fade_in_slide_out", 40 | }) 41 | end 42 | 43 | M.tabnine = function() 44 | local status_ok, tabnine = pcall(require, "tabnine") 45 | if not status_ok then 46 | return 47 | end 48 | 49 | tabnine.setup({ 50 | disable_auto_comment = true, 51 | accept_keymap = "", 52 | dismiss_keymap = "", 53 | debounce_ms = 800, 54 | suggestion_color = { gui = "#808080", cterm = 244 }, 55 | exclude_filetypes = { "TelescopePrompt" }, 56 | }) 57 | end 58 | 59 | M.blankline = { 60 | enabled = true, 61 | exclude = { 62 | filetypes = { "dashboard" }, 63 | buftypes = { "terminal" }, 64 | }, 65 | indent = { 66 | tab_char = { "." }, 67 | }, 68 | } 69 | 70 | M.autosession = { 71 | auto_session_root_dir = os.getenv("HOME") .. "/" .. ".neovim_sessions/", 72 | auto_session_enable_last_session = false, 73 | auto_session_create_enabled = false, 74 | auto_session_suppress_dirs = { "~/", "~/Downloads/", "/" }, 75 | session_lens = { 76 | buftypes_to_ignore = {}, 77 | load_on_setup = true, 78 | theme_conf = { border = true }, 79 | prompt_title = "Projects", 80 | }, 81 | } 82 | 83 | return M 84 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/statusline.lua: -------------------------------------------------------------------------------- 1 | local status_ok, lualine = pcall(require, "lualine") 2 | 3 | if not status_ok then 4 | return 5 | end 6 | 7 | require("lualine").setup({ 8 | options = { 9 | theme = "auto", 10 | component_separators = "", 11 | section_separators = "", 12 | icons_enabled = true, 13 | globalstatus = true, 14 | }, 15 | sections = { 16 | lualine_a = { 17 | { "mode", color = { gui = "bold" } }, 18 | }, 19 | lualine_b = { 20 | { "branch" }, 21 | { "diff", colored = false }, 22 | }, 23 | lualine_c = { 24 | { "filename", file_status = true }, 25 | { "diagnostics" }, 26 | }, 27 | lualine_x = { 28 | "filetype", 29 | "encoding", 30 | "fileformat", 31 | { 32 | require("noice").api.statusline.mode.get, 33 | cond = require("noice").api.statusline.mode.has, 34 | color = { fg = "#f38ba8" }, 35 | }, 36 | }, 37 | lualine_y = { "progress" }, 38 | lualine_z = { 39 | { "location", color = { gui = "bold" } }, 40 | }, 41 | }, 42 | tabline = {}, 43 | extensions = { "quickfix", "nvim-tree" }, 44 | }) 45 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/configs/treesitter.lua: -------------------------------------------------------------------------------- 1 | local status_ok, treesitter = pcall(require, "nvim-treesitter.config") 2 | if status_ok then 3 | return 4 | end 5 | 6 | require("nvim-treesitter.configs").setup({ 7 | auto_install = true, 8 | highlight = { 9 | enable = true, 10 | -- Setting this to true will run `:h syntax` and tree-sitter at the same time. 11 | -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). 12 | -- Using this option may slow down your editor, and you may see some duplicate highlights. 13 | -- Instead of true it can also be a list of languages 14 | additional_vim_regex_highlighting = false, 15 | }, 16 | indent = { 17 | enable = true, 18 | }, 19 | autotag = { 20 | enable = true, 21 | }, 22 | }) 23 | -------------------------------------------------------------------------------- /.config/nvim/lua/plugins/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | 3 | -- Colorscheme 4 | { 5 | "catppuccin/nvim", 6 | name = "catppuccin", 7 | priority = 1000, 8 | config = function() 9 | require("plugins.configs.catppuccin") 10 | end, 11 | }, 12 | 13 | -- Dashboard 14 | { 15 | "goolord/alpha-nvim", 16 | event = "VimEnter", 17 | opts = function() 18 | return require("plugins.configs.alpha") 19 | end, 20 | config = function(_, dashboard) 21 | require("alpha").setup(dashboard.opts) 22 | vim.api.nvim_create_autocmd("User", { 23 | callback = function() 24 | local stats = require("lazy").stats() 25 | local ms = math.floor(stats.startuptime * 100) / 100 26 | dashboard.section.footer.val = "󱐌 Lazy-loaded " 27 | .. stats.loaded 28 | .. " out of " 29 | .. stats.count 30 | .. " plugins in " 31 | .. ms 32 | .. "ms" 33 | pcall(vim.cmd.AlphaRedraw) 34 | end, 35 | }) 36 | end, 37 | }, 38 | 39 | -- Indent blankline 40 | { 41 | "lukas-reineke/indent-blankline.nvim", 42 | main = "ibl", 43 | opts = function() 44 | return require("plugins.configs.others").blankline 45 | end, 46 | }, 47 | 48 | -- Treesitter 49 | { 50 | "nvim-treesitter/nvim-treesitter", 51 | module = "nvim-treesitter", 52 | run = ":TSUpdate", 53 | opts = function() 54 | return require("plugins.configs.treesitter") 55 | end, 56 | dependencies = { 57 | "JoosepAlviste/nvim-ts-context-commentstring", 58 | }, 59 | }, 60 | 61 | -- Autohighlight word under cursor 62 | { 63 | "echasnovski/mini.cursorword", 64 | branch = "stable", 65 | opts = {}, 66 | }, 67 | 68 | -- nvim.notify 69 | { 70 | "rcarriga/nvim-notify", 71 | config = function() 72 | require("plugins.configs.others").notify() 73 | end, 74 | }, 75 | 76 | -- Noice: Command UI 77 | { 78 | "folke/noice.nvim", 79 | event = "VeryLazy", 80 | dependencies = { 81 | "MunifTanjim/nui.nvim", 82 | }, 83 | opts = function() 84 | return require("plugins.configs.noice-nvim") 85 | end, 86 | }, 87 | 88 | -- WhichKey : Shows keybindings 89 | { 90 | 91 | "folke/which-key.nvim", 92 | opts = {}, 93 | }, 94 | 95 | -- Smooth Scrolling 96 | { "psliwka/vim-smoothie" }, 97 | 98 | -- Status Bar 99 | { 100 | "nvim-lualine/lualine.nvim", 101 | event = "BufEnter", 102 | opts = function() 103 | return require("plugins.configs.statusline") 104 | end, 105 | }, 106 | 107 | -- Buffer 108 | { 109 | "romgrk/barbar.nvim", 110 | dependencies = { 111 | "lewis6991/gitsigns.nvim", 112 | "nvim-tree/nvim-web-devicons", 113 | }, 114 | init = function() 115 | vim.g.barbar_auto_setup = false 116 | end, 117 | opts = { 118 | sidebar_filetypes = { 119 | ["neo-tree"] = { event = "BufWipeout" }, 120 | }, 121 | }, 122 | }, 123 | 124 | { 125 | "j-hui/fidget.nvim", 126 | tag = "legacy", 127 | after = "lualine.nvim", 128 | opts = {}, 129 | }, 130 | 131 | -- Neo-tree 132 | { 133 | "nvim-neo-tree/neo-tree.nvim", 134 | branch = "v3.x", 135 | opts = function() 136 | return require("plugins.configs.neo-tree") 137 | end, 138 | dependencies = { 139 | "nvim-lua/plenary.nvim", 140 | "MunifTanjim/nui.nvim", 141 | }, 142 | }, 143 | 144 | -- Telescope 145 | { 146 | "nvim-telescope/telescope.nvim", 147 | dependencies = { 148 | "nvim-lua/plenary.nvim", 149 | }, 150 | }, 151 | 152 | -- Telekasten: Note organization 153 | { 154 | "renerocksai/telekasten.nvim", 155 | dependencies = { "nvim-telescope/telescope.nvim" }, 156 | opts = { 157 | home = vim.fn.expand("$HOME/Documents/Notes/Obsidian"), 158 | }, 159 | }, 160 | 161 | -- Markdown Preview 162 | { 163 | "iamcco/markdown-preview.nvim", 164 | cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, 165 | build = "cd app && yarn install", 166 | setup = function() 167 | vim.g.mkdp_filetypes = { "markdown" } 168 | end, 169 | ft = { "markdown" }, 170 | }, 171 | 172 | -- Autocompletion stuff 173 | { 174 | "williamboman/mason-lspconfig", 175 | event = { "BufReadPre", "BufNewFile" }, 176 | opts = { 177 | ensure_installed = require("utils.ensure_installed").servers, 178 | automatic_installation = true, 179 | }, 180 | dependencies = { 181 | { 182 | "williamboman/mason.nvim", 183 | event = { "BufReadPre", "BufNewFile" }, 184 | cmd = { "Mason" }, 185 | opts = function() 186 | return require("plugins.configs.mason") 187 | end, 188 | }, 189 | }, 190 | }, 191 | 192 | { 193 | "neovim/nvim-lspconfig", 194 | dependencies = { 195 | "hrsh7th/cmp-nvim-lsp", 196 | }, 197 | event = "BufReadPre", 198 | config = function() 199 | require("plugins.configs.lsp") 200 | end, 201 | }, 202 | 203 | -- Nvim cmp 204 | { 205 | "hrsh7th/nvim-cmp", 206 | event = "InsertEnter", 207 | config = function() 208 | require("plugins.configs.nvim-cmp") 209 | end, 210 | dependencies = { 211 | { 212 | "L3MON4D3/LuaSnip", 213 | event = "InsertEnter", 214 | opts = function() 215 | return require("plugins.configs.luasnip") 216 | end, 217 | dependencies = { 218 | { 219 | "rafamadriz/friendly-snippets", 220 | event = "CursorHold", 221 | }, 222 | }, 223 | }, 224 | }, 225 | }, 226 | 227 | { "saadparwaiz1/cmp_luasnip", after = "nvim-cmp" }, 228 | { "hrsh7th/cmp-path", after = "nvim-cmp" }, 229 | { "hrsh7th/cmp-buffer", after = "nvim-cmp" }, 230 | 231 | -- None-ls 232 | { 233 | "nvimtools/none-ls.nvim", 234 | dependencies = { 235 | "nvimtools/none-ls-extras.nvim", 236 | "nvim-lua/plenary.nvim", 237 | }, 238 | config = function() 239 | require("plugins.configs.others").null_ls() 240 | end, 241 | }, 242 | 243 | -- Trouble 244 | { 245 | "folke/trouble.nvim", 246 | branch = "dev", 247 | dependencies = { "nvim-tree/nvim-web-devicons" }, 248 | opts = {}, 249 | }, 250 | 251 | -- Code Format 252 | { 253 | "stevearc/conform.nvim", 254 | event = { "BufWritePre" }, 255 | cmd = { "ConfirmInfo" }, 256 | opts = function() 257 | return require("plugins.configs.conform") 258 | end, 259 | }, 260 | 261 | -- Session Manager 262 | { 263 | "rmagatti/auto-session", 264 | opts = function() 265 | return require("plugins.configs.others").autosession 266 | end, 267 | }, 268 | 269 | -- AI Helper 270 | { 271 | "Exafunction/codeium.vim", 272 | event = "BufEnter", 273 | config = function() 274 | vim.keymap.set("i", "", function() 275 | return vim.fn["codeium#Accept"]() 276 | end, { expr = true, silent = true }) 277 | end, 278 | }, 279 | 280 | -- Makes Commenting Easy 281 | { 282 | "numToStr/Comment.nvim", 283 | opts = {}, 284 | }, 285 | 286 | -- Autopairs 287 | { 288 | "windwp/nvim-autopairs", 289 | event = "InsertEnter", 290 | opts = {}, 291 | }, 292 | 293 | -- Nvim-colorizer 294 | { 295 | "NvChad/nvim-colorizer.lua", 296 | opts = {}, 297 | }, 298 | } 299 | -------------------------------------------------------------------------------- /.config/nvim/lua/utils/ensure_installed.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | -- LSP linters 4 | M.linters = { 5 | "black", 6 | "prettier", 7 | } 8 | 9 | -- LSP servers 10 | M.servers = { 11 | "astro", 12 | "bashls", 13 | "cssls", 14 | "eslint", 15 | "html", 16 | "jsonls", 17 | "lua_ls", 18 | "marksman", 19 | "mdx_analyzer", 20 | "pyright", 21 | "tailwindcss", 22 | "taplo", 23 | "tsserver", 24 | } 25 | 26 | return M 27 | -------------------------------------------------------------------------------- /.config/nvim/lua/utils/init.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | -- Key-mapping handler 4 | function M.map(m, k, v, opts) 5 | vim.keymap.set(m, k, v, vim.tbl_deep_extend("force", { silent = true, noremap = true }, opts or {})) 6 | end 7 | 8 | -- Send notification 9 | function M.send_notify(message) 10 | local notify = require("notify") 11 | vim.cmd("SessionSave") 12 | notify(message, "INFO", { 13 | title = "Greeting", 14 | timeout = 3000, 15 | }) 16 | end 17 | 18 | return M 19 | -------------------------------------------------------------------------------- /.config/nvim/snips/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Bash header", 3 | "engines": { 4 | "vscode": "^1.11.0" 5 | }, 6 | "contributes": { 7 | "snippets": [ 8 | { 9 | "language": "sh", 10 | "path": "./snippets/bash.json" 11 | } 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.config/nvim/snips/snippets/bash.json: -------------------------------------------------------------------------------- 1 | { 2 | "basic bash header": { 3 | "prefix": "#!", 4 | "body": ["#!/usr/bin/env bash"], 5 | "description": "basic bash header" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.config/rofi/README.md: -------------------------------------------------------------------------------- 1 | ### Catppuccin Mocha 2 | 3 | ![rofi-01](https://ik.imagekit.io/rayshold/dotfiles/_config/rofi/1.png?updatedAt=1705763839947) 4 | 5 | ### Everforest 6 | 7 | ![rofi-02](https://ik.imagekit.io/rayshold/dotfiles/_config/rofi/2.png?updatedAt=1705763840001) 8 | -------------------------------------------------------------------------------- /.config/rofi/colorschemes/catppuccin-mocha.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | background: #181825; 3 | background-alt: #1e1e2e; 4 | foreground: #7f849c; 5 | active: #b4befe; 6 | selected: #313244; 7 | selected-text: #b4befe ; 8 | } 9 | 10 | /* vim:ft=css 11 | -------------------------------------------------------------------------------- /.config/rofi/colorschemes/everforest.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | background: #1e2326; 3 | background-alt: #232a2e; 4 | foreground: #555f66; 5 | active: #a7c080; 6 | selected: #272e33; 7 | selected-text: #a7c080; 8 | } 9 | 10 | /* vim:ft=css 11 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "Cantarell Bold 11"; 3 | drun { 4 | display-name: " "; 5 | } 6 | run { 7 | display-name: " "; 8 | } 9 | timeout { 10 | delay: 30; 11 | action: "kb-cancel"; 12 | } 13 | } 14 | 15 | @import "colorschemes/catppuccin-mocha.rasi" 16 | 17 | 18 | window { 19 | background-color: @background; 20 | border: 3; 21 | border-radius: 0; 22 | border-color: @active; 23 | padding: 8; 24 | width: 500px; 25 | height: 376px; 26 | } 27 | mainbox { 28 | border: 0; 29 | padding: 4px; 30 | } 31 | message { 32 | border: 0px; 33 | border-color: @active; 34 | padding: 1px; 35 | } 36 | textbox { 37 | text-color: @foreground; 38 | } 39 | listview { 40 | fixed-height: 0; 41 | border: 0px; 42 | border-color: @active; 43 | spacing: 4px ; 44 | scrollbar: false; 45 | padding: 10px 5px 5px; 46 | } 47 | element { 48 | border: 0; 49 | padding: 6px ; 50 | border-radius: 2px; 51 | } 52 | element.normal.normal { 53 | background-color: @background; 54 | text-color: @foreground; 55 | } 56 | element.normal.active { 57 | background-color: @active; 58 | text-color: @foreground; 59 | } 60 | element.selected.normal { 61 | background-color: @selected; 62 | text-color: @selected-text; 63 | } 64 | element.alternate.normal { 65 | background-color: @background; 66 | text-color: @foreground; 67 | } 68 | scrollbar { 69 | background-color: @foreground; 70 | handle-color: @selected; 71 | border-radius: 2px; 72 | width: 2px ; 73 | border: 0; 74 | handle-width: 8px ; 75 | padding: 0; 76 | } 77 | sidebar { 78 | border: 2px dash 0px 0px ; 79 | border-color: @active; 80 | } 81 | button.selected { 82 | background-color: inherit; 83 | text-color: @foreground; 84 | } 85 | inputbar { 86 | spacing: 0; 87 | text-color: @selected; 88 | padding: 10px; 89 | margin: 0 4px; 90 | background-color: @background-alt; 91 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 92 | } 93 | case-indicator { 94 | spacing: 0; 95 | text-color: @selected; 96 | } 97 | entry { 98 | placeholder: "Search for apps.."; 99 | placeholder-color: @foreground; 100 | background-color: transparent; 101 | text-color: @selected-text; 102 | } 103 | prompt { 104 | spacing: 0; 105 | text-color: @selected-text; 106 | background-color: transparent; 107 | } 108 | element { 109 | spacing: 0.5em; 110 | } 111 | element-text { 112 | background-color: inherit; 113 | text-color: inherit; 114 | vertical-align: 0.5; 115 | } 116 | element-icon { 117 | size: 1.4em; 118 | background-color: transparent; 119 | } 120 | textbox-prompt-colon { 121 | expand: false; 122 | str: "│"; 123 | margin: 0px 0.3em 0em 0em ; 124 | text-color: @active; 125 | background-color: transparent; 126 | } 127 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | font: "CommitMono Nerd Font Semibold 11"; 3 | show-icons: false; 4 | } 5 | 6 | /*****----- Global Properties -----*****/ 7 | 8 | @import "colorschemes/catppuccin-mocha.rasi" 9 | 10 | /*****----- Main Window -----*****/ 11 | window { 12 | /* properties for window widget */ 13 | transparency: "real"; 14 | location: center; 15 | anchor: center; 16 | fullscreen: false; 17 | width: 360px; 18 | x-offset: 0px; 19 | y-offset: 0px; 20 | 21 | /* properties for all widgets */ 22 | enabled: true; 23 | margin: 0px; 24 | padding: 0px; 25 | border: 3px solid; 26 | border-radius: 0; 27 | border-color: @active; 28 | cursor: "default"; 29 | background-color: @background; 30 | } 31 | 32 | /*****----- Main Box -----*****/ 33 | mainbox { 34 | enabled: true; 35 | spacing: 10px; 36 | margin: 0px; 37 | padding: 12px; 38 | border: 0px solid; 39 | border-radius: 0px; 40 | border-color: @selected; 41 | background-color: transparent; 42 | children: [ "inputbar", "message", "listview" ]; 43 | } 44 | 45 | /*****----- Inputbar -----*****/ 46 | inputbar { 47 | enabled: false; 48 | } 49 | 50 | textbox-prompt-colon { 51 | enabled: false; 52 | } 53 | 54 | prompt { 55 | enabled: true; 56 | padding: 10px; 57 | border-radius: 0; 58 | background-color: @active; 59 | text-color: @background; 60 | } 61 | 62 | /*****----- Message -----*****/ 63 | message { 64 | enabled: true; 65 | margin: 0px; 66 | padding: 10px; 67 | border: 0px solid; 68 | border-radius: 2px; 69 | border-color: @foreground; 70 | background-color: @background-alt; 71 | text-color: @selected-text; 72 | } 73 | textbox { 74 | background-color: inherit; 75 | text-color: inherit; 76 | vertical-align: 0.5; 77 | horizontal-align: 0.0; 78 | placeholder-color: @foreground; 79 | blink: true; 80 | markup: true; 81 | } 82 | error-message { 83 | padding: 10px; 84 | border: 0px solid; 85 | border-radius: 0px; 86 | border-color: @selected; 87 | background-color: @background; 88 | text-color: @selected-text; 89 | } 90 | 91 | /*****----- Listview -----*****/ 92 | listview { 93 | enabled: true; 94 | columns: 1; 95 | lines: 5; 96 | cycle: true; 97 | dynamic: true; 98 | scrollbar: false; 99 | layout: vertical; 100 | reverse: false; 101 | fixed-height: false; 102 | fixed-columns: true; 103 | spacing: 5px; 104 | margin: 0px; 105 | padding: 0px; 106 | border: 0px solid; 107 | border-radius: 0px; 108 | border-color: @selected; 109 | background-color: transparent; 110 | text-color: @foreground; 111 | cursor: "default"; 112 | } 113 | 114 | /*****----- Elements -----*****/ 115 | element { 116 | enabled: true; 117 | spacing: 0px; 118 | margin: 0px; 119 | padding: 10px; 120 | border-radius: 2px; 121 | border: 0px solid; 122 | border-color: @selected; 123 | background-color: transparent; 124 | text-color: @foreground; 125 | cursor: pointer; 126 | } 127 | element-text { 128 | background-color: transparent; 129 | text-color: inherit; 130 | cursor: inherit; 131 | vertical-align: 0.5; 132 | horizontal-align: 0.0; 133 | } 134 | element selected.normal { 135 | background-color: @selected-text; 136 | text-color: @selected; 137 | } 138 | -------------------------------------------------------------------------------- /.config/rofi/powermenu/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Current Theme 4 | dir="$HOME/.config/rofi/powermenu" 5 | theme='config' 6 | 7 | # Options 8 | shutdown=' Shutdown' 9 | reboot=' Reboot' 10 | lock=' Lock' 11 | logout=' Logout' 12 | yes=' Yes' 13 | no=' No' 14 | 15 | # CMDs 16 | user=$(whoami) 17 | hostname=$(uname -a | awk '{print $2}') 18 | 19 | # Rofi CMD 20 | rofi_cmd() { 21 | rofi -dmenu \ 22 | -mesg " ${user} on ${hostname}" \ 23 | -theme ${dir}/${theme}.rasi 24 | } 25 | 26 | # Confirmation CMD 27 | confirm_cmd() { 28 | rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 250px;}' \ 29 | -theme-str 'mainbox {children: [ "message", "listview" ];}' \ 30 | -theme-str 'listview {columns: 2; lines: 1;}' \ 31 | -theme-str 'element-text {horizontal-align: 0.5;}' \ 32 | -theme-str 'textbox {horizontal-align: 0.5;}' \ 33 | -dmenu \ 34 | -p 'Confirmation' \ 35 | -mesg 'Are you Sure?' \ 36 | -theme ${dir}/${theme}.rasi 37 | } 38 | 39 | # Ask for confirmation 40 | confirm_exit() { 41 | echo -e "$yes\n$no" | confirm_cmd 42 | } 43 | 44 | # Pass variables to rofi dmenu 45 | run_rofi() { 46 | echo -e "$lock\n$logout\n$reboot\n$shutdown" | rofi_cmd 47 | } 48 | 49 | # Execute Command 50 | run_cmd() { 51 | selected="$(confirm_exit)" 52 | if [[ "$selected" == "$yes" ]]; then 53 | if [[ $1 == '--shutdown' ]]; then 54 | systemctl poweroff 55 | elif [[ $1 == '--reboot' ]]; then 56 | systemctl reboot 57 | elif [[ $1 == '--suspend' ]]; then 58 | mpc -q pause 59 | amixer set Master mute 60 | systemctl suspend 61 | elif [[ $1 == '--logout' ]]; then 62 | if [[ "$DESKTOP_SESSION" == 'hyprland' ]]; then 63 | # why pkill? killall Hyprland dosen't work on nixos. 64 | # why killall or pkill? cause 'hyprctl disatch exit 0' 65 | # causes system shutdown for some reason. 66 | pkill -9 Hyprland 67 | elif [[ "$DESKTOP_SESSION" == 'none+qtile' ]]; then 68 | qtile cmd-obj -o cmd -f shutdown 69 | fi 70 | fi 71 | else 72 | exit 0 73 | fi 74 | } 75 | 76 | # Actions 77 | chosen="$(run_rofi)" 78 | case ${chosen} in 79 | $shutdown) 80 | run_cmd --shutdown 81 | ;; 82 | $reboot) 83 | run_cmd --reboot 84 | ;; 85 | $lock) 86 | if [[ "$XDG_SESSION_TYPE" == 'wayland' ]]; then 87 | swaylock 88 | else 89 | betterlockscreen -l 90 | fi 91 | ;; 92 | $logout) 93 | run_cmd --logout 94 | ;; 95 | esac 96 | -------------------------------------------------------------------------------- /.config/starship.toml: -------------------------------------------------------------------------------- 1 | add_newline = false 2 | 3 | [line_break] 4 | disabled = true 5 | 6 | [username] 7 | style_root = "red bold" 8 | format = "🦊 [$user](bold green) " 9 | disabled = false 10 | show_always = true 11 | 12 | [hostname] 13 | ssh_only = false 14 | format = 'on [$hostname](bold yellow) ' 15 | trim_at = "." 16 | disabled = false 17 | 18 | [character] 19 | success_symbol = " [>](bold green)" 20 | error_symbol = " [x](bold red)" 21 | vimcmd_symbol = " [<](bold green)" 22 | 23 | 24 | #cmd duration 25 | [cmd_duration] 26 | min_time = 10_000 # Show command duration over 10,000 milliseconds (=10 sec) 27 | format = " took [$duration]($style)" 28 | 29 | [directory] 30 | truncation_length = 5 31 | truncation_symbol = " " 32 | format = "[$path]($style)[$read_only]($read_only_style)" 33 | read_only = "🔒" 34 | style = "bold cyan" 35 | 36 | [directory.substitutions] 37 | Applications = " " 38 | Documents = "󰈔 " 39 | Downloads = " " 40 | Music = "󰎈 " 41 | Pictures = "󰋩 " 42 | Videos = " " 43 | 44 | #git 45 | [git_branch] 46 | format = " [$symbol$branch]($style) " 47 | symbol = "🍣 " 48 | style = "bold green" 49 | always_show_remote = false 50 | only_attached = false 51 | disabled = false 52 | 53 | [git_state] 54 | format = '[\($state( $progress_current of $progress_total)\)]($style) ' 55 | style = "bold yellow" 56 | 57 | 58 | [git_commit] 59 | commit_hash_length = 4 60 | style = "bold white" 61 | tag_symbol = " 🏷 " 62 | 63 | 64 | 65 | [git_metrics] 66 | added_style = "bold green" 67 | deleted_style = "bold red" 68 | only_nonzero_diffs = true 69 | format = '([+$added]($added_style) )([-$deleted]($deleted_style) )' 70 | disabled = true 71 | 72 | [git_status] 73 | conflicted = "⚔️ " 74 | ahead = "⇡" 75 | behind = "[⇣${count}](bold dimmed blue)" 76 | diverged = "⇕${ahead_count}⇣${behind_count}" 77 | untracked = "[?${count}](bold blue)" 78 | modified ="[!${count}](bold yellow)" 79 | staged = "[+${count}](bold yellow)" 80 | renamed = "» ×${count}" 81 | deleted = "[✘ ×${count}](bold red)" 82 | format = "$all_status$ahead_behind" 83 | 84 | [memory_usage] 85 | format = "$symbol[${ram}( | ${swap})]($style) " 86 | threshold = 70 87 | style = "bold dimmed white" 88 | disabled = false 89 | 90 | [package] 91 | disabled = true 92 | 93 | [python] 94 | format = "[$symbol$version](bold ) " 95 | symbol = "  " 96 | 97 | 98 | [lua] 99 | format = "[$symbol($version )]($style)" 100 | detect_extensions = ["lua"] 101 | symbol = "  " 102 | style = "bold red" 103 | 104 | 105 | [java] 106 | format = "[$symbol($version )]($style)" 107 | detect_extensions = ["java", "class", "gradle", "jar", "cljc"] 108 | symbol ="  " 109 | style = "white bold" 110 | 111 | [nodejs] 112 | format = "[$symbol($version )]($style)" 113 | detect_extensions = ["js", "mjs", "cjs", "ts", "mts", "cts"] 114 | symbol ="  " 115 | style = "bold green" 116 | 117 | [rust] 118 | format = "[$symbol$version]($style) " 119 | style = "bold green" 120 | 121 | #[time] 122 | #time_format = "%T" 123 | #format = "$time($style) " 124 | #style = "bright-white" 125 | #disabled = false 126 | -------------------------------------------------------------------------------- /.config/swaync/README.md: -------------------------------------------------------------------------------- 1 | ![swaync](https://ik.imagekit.io/rayshold/dotfiles/_config/swaync/swaync.webp?updatedAt=1695677172526) 2 | 3 | ### Requirements 4 | 5 | 1. [adw-gtk3](https://github.com/lassekongo83/adw-gtk3) 6 | -------------------------------------------------------------------------------- /.config/swaync/colorschemes/catppuccin-mocha.css: -------------------------------------------------------------------------------- 1 | @define-color cc-bg #1e1e2e; 2 | @define-color cc-fg #cdd6f4; 3 | 4 | @define-color text-color #cdd6f4; 5 | @define-color text-color-disabled #7f849c; 6 | 7 | @define-color bg-selected #b4befe; 8 | 9 | @define-color floating-noti-bg @cc-bg; 10 | @define-color floating-noti-border-color #b4befe; 11 | @define-color floating-noti-bg-darker #181825; 12 | @define-color floating-noti-bg-hover #313244; 13 | @define-color floating-noti-close-bg #45475a; 14 | @define-color floating-noti-close-bg-hover #585b70; 15 | 16 | @define-color noti-bg @floating-noti-bg-hover; 17 | @define-color noti-border-color @floating-noti-bg-hover; 18 | @define-color noti-bg-darker #262626; 19 | @define-color noti-bg-hover #45475a; 20 | @define-color noti-close-bg #3f3f46; 21 | @define-color noti-close-bg-hover #52525b; 22 | 23 | @define-color dnd-slider-button @cc-fg; 24 | @define-color dnd-slider-button-checked @cc-bg; 25 | -------------------------------------------------------------------------------- /.config/swaync/colorschemes/everforest.css: -------------------------------------------------------------------------------- 1 | @define-color cc-bg #1e2326; 2 | @define-color cc-fg #d3c6aa; 3 | 4 | @define-color text-color #a7c080; 5 | @define-color text-color-disabled #969696; 6 | 7 | @define-color bg-selected @text-color; 8 | 9 | @define-color floating-noti-bg #1e2326; 10 | @define-color floating-noti-border-color @text-color; 11 | @define-color floating-noti-bg-darker #262626; 12 | @define-color floating-noti-bg-hover #272e33; 13 | @define-color floating-noti-close-bg #374145; 14 | @define-color floating-noti-close-bg-hover #4f5b58; 15 | 16 | @define-color noti-bg @cc-bg; 17 | @define-color noti-border-color #4f5b58; 18 | @define-color noti-bg-darker #232a2e; 19 | @define-color noti-bg-hover #232a2e; 20 | @define-color noti-close-bg @floating-noti-close-bg; 21 | @define-color noti-close-bg-hover @floating-noti-close-bg-hover; 22 | 23 | @define-color dnd-slider-button @cc-fg; 24 | @define-color dnd-slider-button-checked @cc-bg; 25 | -------------------------------------------------------------------------------- /.config/swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "right", 4 | "positionY": "top", 5 | "layer": "overlay", 6 | "control-center-layer": "top", 7 | "layer-shell": true, 8 | "cssPriority": "application", 9 | "control-center-margin-top": 0, 10 | "control-center-margin-bottom": 0, 11 | "control-center-margin-right": 0, 12 | "control-center-margin-left": 0, 13 | "notification-2fa-action": false, 14 | "notification-inline-replies": false, 15 | "notification-icon-size": 64, 16 | "notification-body-image-height": 100, 17 | "notification-body-image-width": 200, 18 | "timeout": 10, 19 | "timeout-low": 5, 20 | "timeout-critical": 0, 21 | "fit-to-screen": true, 22 | "control-center-width": 390, 23 | "control-center-height": 800, 24 | "notification-windw-width": 400, 25 | "keyboard-shortcuts": true, 26 | "image-visibility": "when-available", 27 | "transition-time": 300, 28 | "hide-on-clear": false, 29 | "hide-on-action": true, 30 | "script-fail-notify": true, 31 | "scripts": { 32 | "example-script": { 33 | "exec": "echo 'Do something...'", 34 | "urgency": "Normal" 35 | }, 36 | "example-action-script": { 37 | "exec": "echo 'Do something actionable!'", 38 | "urgency": "Normal", 39 | "run-on": "action" 40 | } 41 | }, 42 | "notification-visibility": { 43 | "example-name": { 44 | "state": "muted", 45 | "urgency": "Low", 46 | "app-name": "Spotify" 47 | } 48 | }, 49 | "widgets": ["title", "notifications", "dnd", "inhibitors"], 50 | "widget-config": { 51 | "inhibitors": { 52 | "text": "Inhibitors", 53 | "button-text": "Clear All", 54 | "clear-all-button": true 55 | }, 56 | "title": { 57 | "text": "󰂚 Notifications", 58 | "clear-all-button": true, 59 | "button-text": " Clear All" 60 | }, 61 | "volume": { 62 | "label": "" 63 | }, 64 | "dnd": { 65 | "text": " No Distructions" 66 | }, 67 | "label": { 68 | "max-lines": 5, 69 | "text": "Label Text" 70 | }, 71 | "mpris": { 72 | "image-size": 96, 73 | "image-radius": 6 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /.config/swaync/scripts/hotreload.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DIR="$HOME/.config/swaync" 4 | CONFIG_FILES="$DIR/config.json $DIR/colorschemes/ $DIR/style.css" 5 | 6 | trap "pkill swaync" EXIT 7 | 8 | while true; do 9 | swaync & 10 | inotifywait -e create,modify $CONFIG_FILES 11 | pkill swaync 12 | done 13 | -------------------------------------------------------------------------------- /.config/swaync/scripts/open-tray.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | sleep 0.1 4 | swaync-client -t & 5 | -------------------------------------------------------------------------------- /.config/swaync/style.css: -------------------------------------------------------------------------------- 1 | @import "./colorschemes/catppuccin-mocha.css"; 2 | /* @import "./colorschemes/everforest.css"; */ 3 | 4 | * { 5 | font-family: Cantarell; 6 | } 7 | 8 | .control-center .notification-row:focus, 9 | .control-center .notification-row:hover { 10 | opacity: 1; 11 | border-radius: 6px; 12 | background: transparent; 13 | } 14 | 15 | .control-center .notification-default-action, 16 | .control-center .notification-action { 17 | background: @noti-bg; 18 | border: 1px solid @noti-border-color; 19 | } 20 | 21 | .control-center .notification-default-action, 22 | .control-center .notification-action { 23 | background: @noti-bg; 24 | border: 2px solid @noti-border-color; 25 | } 26 | 27 | .control-center .notification-default-action:hover, 28 | .control-center .notification-action:hover { 29 | background: @noti-bg-hover; 30 | } 31 | 32 | .notification-row { 33 | outline: green; 34 | } 35 | 36 | .notification { 37 | border-radius: 6px; 38 | margin: 4px 4px; 39 | box-shadow: none; 40 | padding: 0; 41 | } 42 | 43 | .notification-content { 44 | border: transparent; 45 | padding: 1.4rem; 46 | border-radius: 6px; 47 | } 48 | 49 | .close-button { 50 | background: @floating-noti-close-bg; 51 | color: @text-color; 52 | text-shadow: none; 53 | padding: 0; 54 | border-radius: 100%; 55 | margin-top: 10px; 56 | margin-right: 16px; 57 | box-shadow: none; 58 | border: none; 59 | min-width: 24px; 60 | min-height: 24px; 61 | } 62 | 63 | .close-button:hover { 64 | box-shadow: none; 65 | background: @floating-noti-close-bg-hover; 66 | transition: all 0.15s ease-in-out; 67 | border: none; 68 | } 69 | 70 | .notification-default-action, 71 | .notification-action { 72 | padding: 4px; 73 | margin: 0; 74 | box-shadow: none; 75 | background: @floating-noti-bg; 76 | border: 2px solid @floating-noti-border-color; 77 | color: @text-color; 78 | transition: all 0.15s ease-in-out; 79 | } 80 | 81 | .notification-default-action:hover, 82 | .notification-action:hover { 83 | -gtk-icon-effect: none; 84 | background: @floating-noti-bg-hover; 85 | } 86 | 87 | .notification-default-action { 88 | border-radius: 6px; 89 | } 90 | 91 | /* When alternative actions are visible */ 92 | .notification-default-action:not(:only-child) { 93 | border-bottom-left-radius: 0px; 94 | border-bottom-right-radius: 0px; 95 | } 96 | 97 | .notification-action { 98 | border-radius: 0px; 99 | border-top: none; 100 | border-right: none; 101 | } 102 | 103 | /* add bottom border radius to eliminate clipping */ 104 | .notification-action:first-child { 105 | border-bottom-left-radius: 6px; 106 | } 107 | 108 | .notification-action:last-child { 109 | border-bottom-right-radius: 6px; 110 | border-right: 1px solid @floating-noti-border-color; 111 | } 112 | 113 | .inline-reply { 114 | margin-top: 8px; 115 | } 116 | 117 | .inline-reply-entry { 118 | background: @noti-bg-darker; 119 | color: @text-color; 120 | caret-color: @text-color; 121 | border: 1px solid @noti-border-color; 122 | border-radius: 6px; 123 | } 124 | 125 | .inline-reply-button { 126 | margin-left: 4px; 127 | background: @noti-bg; 128 | border: 1px solid @noti-border-color; 129 | border-radius: 6px; 130 | color: @text-color; 131 | } 132 | 133 | .inline-reply-button:disabled { 134 | background: initial; 135 | color: @text-color-disabled; 136 | border: 1px solid transparent; 137 | } 138 | 139 | .inline-reply-button:hover { 140 | background: @noti-bg-hover; 141 | } 142 | 143 | .image { 144 | } 145 | 146 | .body-image { 147 | margin-top: 6px; 148 | background-color: white; 149 | border-radius: 6px; 150 | } 151 | 152 | .summary { 153 | font-size: 16px; 154 | font-weight: bold; 155 | background: transparent; 156 | color: @text-color; 157 | text-shadow: none; 158 | } 159 | 160 | .time { 161 | font-size: 16px; 162 | font-weight: bold; 163 | background: transparent; 164 | color: @text-color; 165 | text-shadow: none; 166 | margin-right: 18px; 167 | } 168 | 169 | .body { 170 | font-size: 15px; 171 | font-weight: normal; 172 | background: transparent; 173 | color: @text-color; 174 | text-shadow: none; 175 | } 176 | 177 | .control-center { 178 | background: @cc-bg; 179 | margin: 10px; 180 | /* margin-top: 10px; */ 181 | /* margin-right: 10px; */ 182 | 183 | border-radius: 6px; 184 | padding: 1rem; 185 | } 186 | 187 | .control-center-list { 188 | background: transparent; 189 | } 190 | 191 | .control-center-list-placeholder { 192 | color: @cc-fg; 193 | opacity: 1; 194 | } 195 | 196 | .floating-notifications { 197 | background: transparent; 198 | } 199 | 200 | /* Window behind control center and on all other monitors */ 201 | .blank-window { 202 | background: alpha(black, 0.2); 203 | } 204 | 205 | /*** Widgets ***/ 206 | 207 | /* Title widget */ 208 | .widget-title { 209 | margin: 0.6rem; 210 | margin-bottom: 1rem; 211 | font-size: 18px; 212 | font-weight: bold; 213 | color: @text-color; 214 | } 215 | .widget-title > button { 216 | font-size: initial; 217 | font-weight: bold; 218 | color: @text-color; 219 | text-shadow: none; 220 | background: @noti-bg; 221 | border: 1px solid @noti-border-color; 222 | border-radius: 10rem; 223 | padding: 5px 15px 5px 15px; 224 | } 225 | .widget-title > button:hover { 226 | background: @noti-bg-hover; 227 | } 228 | 229 | /* DND widget */ 230 | .widget-dnd { 231 | margin: 0.4rem; 232 | font-size: 1.1rem; 233 | color: @text-color; 234 | font-weight: bold; 235 | } 236 | 237 | .widget-dnd > switch { 238 | font-size: initial; 239 | border-radius: 10rem; 240 | background: @noti-bg; 241 | border: 1px solid @noti-border-color; 242 | box-shadow: none; 243 | } 244 | 245 | .widget-dnd > switch:checked { 246 | background: @bg-selected; 247 | } 248 | 249 | .widget-dnd > switch slider { 250 | background: @dnd-slider-button; 251 | border-radius: 10rem; 252 | } 253 | 254 | .widget-dnd > switch slider:checked { 255 | background: @dnd-slider-button-checked; 256 | border-radius: 10rem; 257 | } 258 | 259 | /* Mpris widget */ 260 | .widget-mpris { 261 | margin: 0.4rem 0.4rem 0.4rem; 262 | margin-top: 0.4rem; 263 | background: @noti-bg; 264 | color: @text-color; 265 | border-radius: 6px; 266 | border: 2px solid @noti-border-color; 267 | } 268 | .widget-mpris-player { 269 | padding: 1rem 1rem 0 1rem; 270 | margin: 0; 271 | } 272 | .widget-mpris-title { 273 | font-weight: bold; 274 | font-size: 16px; 275 | } 276 | .widget-mpris-subtitle { 277 | font-size: 12px; 278 | margin-bottom: 1.4rem; 279 | } 280 | 281 | .widget-mpris > box > button { 282 | padding: 0; 283 | margin: 0; 284 | } 285 | 286 | .topbar-buttons > button { 287 | border: none; 288 | background: transparent; 289 | } 290 | 291 | /* Volume widget */ 292 | 293 | .widget-volume { 294 | background-color: @noti-bg; 295 | color: @text-color; 296 | margin: 0.4rem; 297 | margin-bottom: 1rem; 298 | padding: 0.8rem 1.4rem 0.8rem 1.4rem; 299 | border-radius: 6px; 300 | border: 2px solid @noti-border-color; 301 | font-size: 22px; 302 | } 303 | 304 | .widget-volume > box > button { 305 | background: transparent; 306 | border: none; 307 | } 308 | 309 | .per-app-volume { 310 | background-color: @noti-bg; 311 | padding: 4px 8px 8px 8px; 312 | margin: 0px 8px 8px 8px; 313 | border-radius: 6px; 314 | } 315 | -------------------------------------------------------------------------------- /.config/waybar/README.md: -------------------------------------------------------------------------------- 1 | **Catpuccin Mocha** 2 | ![catppuccin-mocha](https://ik.imagekit.io/rayshold/dotfiles/_config/waybar/catppuccin-mocha.webp?updatedAt=1706288787762) 3 | 4 | **Nightowl** 5 | ![nightowl](https://ik.imagekit.io/rayshold/dotfiles/_config/waybar/nightowl.webp?updatedAt=1706288787143) 6 | 7 | **Everforest** 8 | ![everforest](https://ik.imagekit.io/rayshold/dotfiles/_config/waybar/everforest.webp?updatedAt=1706288787718) 9 | 10 | --- 11 | 12 | **Old** 13 | ![waybar](https://ik.imagekit.io/rayshold/dotfiles/_config/hypr/wayabr.webp?updatedAt=1680639074588) 14 | 15 | > check [older commit](https://github.com/ImRayy/dotfiles/tree/3ca17a6e987bdb2d1c8c67c432e2d6e1bdaf98ed) for this 16 | 17 | --- 18 | 19 | **Note** 20 | 21 | scripts/waybar.sh : Hot reload waybar during configuration 22 | -------------------------------------------------------------------------------- /.config/waybar/colorschemes/catppuccin-mocha.css: -------------------------------------------------------------------------------- 1 | @define-color base #1e1e2e; 2 | @define-color crust #2B2B3A; 3 | 4 | @define-color color0 #cdd6f4; 5 | @define-color color1 @color0; 6 | @define-color color2 #b4befe; 7 | @define-color color3 @color0; 8 | @define-color color4 #f38ba8; 9 | @define-color color5 @color0; 10 | @define-color color6 @color0; 11 | @define-color color7 @color0; 12 | @define-color color8 #181825; 13 | @define-color color9 @color0; 14 | 15 | @import "../style.css"; 16 | -------------------------------------------------------------------------------- /.config/waybar/colorschemes/everforest.css: -------------------------------------------------------------------------------- 1 | @define-color base #1e2326; 2 | @define-color crust #272e33; 3 | 4 | @define-color color0 #dbbc7f; 5 | @define-color color1 #e69875; 6 | @define-color color2 #a7c080; 7 | @define-color color3 @color0; 8 | @define-color color4 #e67e80; 9 | @define-color color5 #83c092; 10 | @define-color color6 @color4; 11 | @define-color color7 @color2; 12 | @define-color color8 @crust; 13 | @define-color color9 #495156; 14 | 15 | @import "../style.css"; 16 | -------------------------------------------------------------------------------- /.config/waybar/colorschemes/nightowl.css: -------------------------------------------------------------------------------- 1 | @define-color base #111827; 2 | @define-color crust #1f2937; 3 | 4 | @define-color color0 #fab387; 5 | @define-color color1 #fdba74; 6 | @define-color color2 #d8b4fe; 7 | @define-color color3 #fda4af; 8 | @define-color color4 #f87171; 9 | @define-color color5 #67e8f9; 10 | @define-color color6 #f9a8d4; 11 | @define-color color7 #ffffff; 12 | @define-color color8 @crust; 13 | @define-color color9 #535764; 14 | 15 | @import "../style.css"; 16 | -------------------------------------------------------------------------------- /.config/waybar/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | "position": "top", 4 | "mod": "dock", 5 | "exclusive": true, 6 | "passtrough": false, 7 | "gtk-layer-shell": true, 8 | "height": 0, 9 | "modules-left": [ 10 | "hyprland/workspaces", 11 | "cpu", 12 | "memory", 13 | "mpris" 14 | ], 15 | "modules-center": [ 16 | ], 17 | "modules-right": [ 18 | "tray", 19 | "network", 20 | "pulseaudio", 21 | "clock", 22 | "custom/swaync" 23 | ], 24 | "hyprland/window": { 25 | "format": "{}", 26 | "max-length": 50 27 | }, 28 | "hyprland/workspaces": { 29 | "on-click": "activate", 30 | "format": "{icon}", 31 | "format-icons": { 32 | "default": "", 33 | "active": "󰮯", 34 | "urgent": "󰊠" 35 | }, 36 | "persistent_workspaces": { 37 | "*": 5 38 | } 39 | }, 40 | "cpu": { 41 | "interval": 5, 42 | "format": " {usage}%", 43 | "max-length": 10 44 | }, 45 | "memory": { 46 | "interval": 30, 47 | "format": " {used:0.1f}G/{total:0.1f}G" 48 | }, 49 | "mpris": { 50 | "format": "{player_icon} {title} | {artist} - {length}", 51 | "format-paused": "{status_icon} {title} | {artist} - {length}", 52 | "player-icons": { 53 | "default": "▶" 54 | }, 55 | "status-icons": { 56 | "paused": "󰏤" 57 | }, 58 | "ignored-players": ["firefox", "chromium", "brave"] 59 | }, 60 | "tray": { 61 | "icon-size": 15, 62 | "tooltip": false, 63 | "spacing": 10 64 | }, 65 | "clock": { 66 | "format": "{:󰥔 %R 󰃭 %A %d}", 67 | "on-click": "eww open Calendar --toggle --config ~/.config/eww/applets/", 68 | "tooltip-format": "{:%A %d %B %Y}" 69 | }, 70 | "custom/swaync": { 71 | "tooltip": false, 72 | "format": "{icon}", 73 | "format-icons": { 74 | "notification": "󱅫", 75 | "none": "󰂚", 76 | "dnd-notification": "󱏧", 77 | "dnd-none": "󱏧", 78 | "inhibited-notification": "󰂚", 79 | "inhibited-none": "󰂚", 80 | "dnd-inhibited-notification": "", 81 | "dnd-inhibited-none": "󱏧" 82 | }, 83 | "return-type": "json", 84 | "exec-if": "which swaync-client", 85 | "exec": "swaync-client -swb", 86 | "on-click": "~/.config/swaync/scripts/open-tray.sh", 87 | "on-click-right": "swaync-client -d -sw", 88 | "escape": true 89 | }, 90 | "network": { 91 | "format": "{ifname}", 92 | "format-wifi": "󰤨 {essid} {bandwidthTotalBytes}", 93 | "format-ethernet": "󱓞 Ethernet {bandwidthTotalBytes}", 94 | "format-disconnected": "󰤭 ", 95 | "tooltip-format": "{ifname} via {gwaddr} 󰊗", 96 | "tooltip-format-wifi": "󰤢 Signal Strength: {signalStrength}%", 97 | "tooltip-format-ethernet": "󰊗 Signal Strength: {signalStrength}%", 98 | "on-click": "~/.config/waybar/scripts/rofi-wifi-menu.sh", 99 | "tooltip-format-disconnected": "Disconnected", 100 | "max-length": 50, 101 | "interval": 5 102 | }, 103 | "pulseaudio": { 104 | "format": "{icon} {volume}%", 105 | "tooltip": false, 106 | "format-muted": " Muted", 107 | "on-click": "pamixer -t", 108 | "on-scroll-up": "pamixer -i 5", 109 | "on-scroll-down": "pamixer -d 5", 110 | "scroll-step": 5, 111 | "format-icons": { 112 | "default": [ 113 | "", 114 | "", 115 | " ", 116 | " " 117 | ] 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /.config/waybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | THEME_DIR="$HOME/.config/waybar/colorschemes" 4 | 5 | case $1 in 6 | --nightowl) 7 | waybar -s "$THEME_DIR/nightowl.css" 8 | ;; 9 | --everforest) 10 | waybar -s "$THEME_DIR/everforest.css" 11 | ;; 12 | *) 13 | waybar -s "$THEME_DIR/catppuccin-mocha.css" 14 | ;; 15 | esac 16 | -------------------------------------------------------------------------------- /.config/waybar/scripts/rofi-wifi-menu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | notify-send "Getting list of available Wi-Fi networks..." 4 | # Get a list of available wifi connections and morph it into a nice-looking list 5 | wifi_list=$(nmcli --fields "SECURITY,SSID" device wifi list | sed 1d | sed 's/ */ /g' | sed -E "s/WPA*.?\S/ /g" | sed "s/^--/ /g" | sed "s/ //g" | sed "/--/d") 6 | 7 | connected=$(nmcli -fields WIFI g) 8 | if [[ "$connected" =~ "enabled" ]]; then 9 | toggle="睊 Disable Wi-Fi" 10 | elif [[ "$connected" =~ "disabled" ]]; then 11 | toggle="直 Enable Wi-Fi" 12 | fi 13 | 14 | # Use rofi to select wifi network 15 | chosen_network=$(echo -e "$toggle\n$wifi_list" | uniq -u | rofi -dmenu -i -selected-row 1 -p "Wi-Fi SSID: ") 16 | # Get name of connection 17 | chosen_id=$(echo "${chosen_network:3}" | xargs) 18 | 19 | if [ "$chosen_network" = "" ]; then 20 | exit 21 | elif [ "$chosen_network" = "直 Enable Wi-Fi" ]; then 22 | nmcli radio wifi on 23 | elif [ "$chosen_network" = "睊 Disable Wi-Fi" ]; then 24 | nmcli radio wifi off 25 | else 26 | # Message to show when connection is activated successfully 27 | success_message="You are now connected to the Wi-Fi network \"$chosen_id\"." 28 | # Get saved connections 29 | saved_connections=$(nmcli -g NAME connection) 30 | if [[ $(echo "$saved_connections" | grep -w "$chosen_id") = "$chosen_id" ]]; then 31 | nmcli connection up id "$chosen_id" | grep "successfully" && notify-send "Connection Established" "$success_message" 32 | else 33 | if [[ "$chosen_network" =~ "" ]]; then 34 | wifi_password=$(rofi -dmenu -p "Password: " ) 35 | fi 36 | nmcli device wifi connect "$chosen_id" password "$wifi_password" | grep "successfully" && notify-send "Connection Established" "$success_message" 37 | fi 38 | fi 39 | -------------------------------------------------------------------------------- /.config/waybar/scripts/waybar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR="$HOME/.config/waybar/" 4 | CONFIG_FILES="$DIR/config.jsonc $DIR/colorschemes/ $DIR/style.css" 5 | 6 | trap "killall waybar" EXIT 7 | 8 | while true; do 9 | ~/.config/waybar/launch.sh --everforest & 10 | inotifywait -e create,modify $CONFIG_FILES 11 | killall waybar 12 | done 13 | -------------------------------------------------------------------------------- /.config/waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | border: none; 3 | font-family: CommitMono Nerd Font; 4 | font-size: 14px; 5 | min-height: 0; 6 | } 7 | 8 | window#waybar { 9 | background: @base; 10 | color: @color8; 11 | } 12 | 13 | tooltip { 14 | background: @base; 15 | border-color: @crust; 16 | border-radius: 10px; 17 | border-style: solid; 18 | border-width: 2px; 19 | } 20 | 21 | #backlight, 22 | #cpu, 23 | #custom-swaync, 24 | #memory, 25 | #network, 26 | #pulseaudio, 27 | #tray, 28 | #clock, 29 | #window, 30 | #mpris, 31 | #workspaces { 32 | background: @crust; 33 | border-radius: 8px; 34 | border: 1px solid @crust; 35 | font-weight: 600; 36 | margin: 6px 0 6px 0; 37 | padding: 3.5px 16px; 38 | } 39 | 40 | #tray { 41 | margin-right: 10px; 42 | padding-left: 10px; 43 | padding-right: 10px; 44 | } 45 | 46 | #workspaces { 47 | font-weight: Bold; 48 | margin-left: 10px; 49 | margin-right: 10px; 50 | padding-left: 3.5px; 51 | padding-right: 3.5px; 52 | } 53 | 54 | #workspaces :nth-child(5) { 55 | margin-right: 0px; 56 | } 57 | 58 | #workspaces button { 59 | border-radius: 6px; 60 | color: @color9; 61 | padding: 6px; 62 | margin-right: 5px; 63 | } 64 | 65 | #workspaces button.active { 66 | background: @color2; 67 | color: @color8; 68 | } 69 | 70 | #workspaces button.focused { 71 | background: @color7; 72 | color: @color8; 73 | } 74 | 75 | #workspaces button.urgent { 76 | background: @color4; 77 | color: @color8; 78 | } 79 | 80 | #workspaces button:hover { 81 | background: @crust; 82 | color: @color7; 83 | } 84 | 85 | #window { 86 | background: transparent; 87 | border-radius: 10px; 88 | margin-left: 60px; 89 | margin-right: 60px; 90 | } 91 | 92 | #cpu, 93 | #memory { 94 | color: @color1; 95 | } 96 | 97 | #cpu { 98 | border-top-right-radius: 0; 99 | border-bottom-right-radius: 0; 100 | padding-right: 0; 101 | } 102 | 103 | #memory { 104 | border-top-left-radius: 0; 105 | border-bottom-left-radius: 0; 106 | } 107 | 108 | #mpris { 109 | color: @color7; 110 | margin-left: 10px; 111 | } 112 | 113 | #clock { 114 | border-right: 0px; 115 | color: @color6; 116 | font-weight: 600; 117 | margin-right: 10px; 118 | } 119 | 120 | #custom-swaync { 121 | color: @color1; 122 | margin-right: 10px; 123 | margin-right: 10px; 124 | padding-right: 18px; 125 | } 126 | 127 | #network { 128 | color: @color3; 129 | margin-right: 10px; 130 | } 131 | 132 | #pulseaudio { 133 | border-left: 0px; 134 | border-right: 0px; 135 | color: @color5; 136 | margin-right: 10px; 137 | } 138 | -------------------------------------------------------------------------------- /.config/wezterm/README.md: -------------------------------------------------------------------------------- 1 | ![WezTerm](https://ik.imagekit.io/rayshold/dotfiles/_config/wezterm/WezTerm.webp?ik-sdk-version=javascript-1.4.3&updatedAt=1677172313351) 2 | -------------------------------------------------------------------------------- /.config/wezterm/wezterm.lua: -------------------------------------------------------------------------------- 1 | local wezterm = require("wezterm") 2 | 3 | -- FONT FAMILY 4 | local function fallback_font(font, params) 5 | local fonts = { font, "Fira Code", "Cartograph CF" } 6 | return wezterm.font_with_fallback(fonts, params) 7 | end 8 | local font_family = "CaskaydiaCove Nerd Font" 9 | 10 | return { 11 | 12 | -- GENERAL 13 | window_background_opacity = 1, 14 | default_cursor_style = "BlinkingUnderline", 15 | front_end = "OpenGL", 16 | 17 | -- TAB BAR 18 | enable_tab_bar = true, 19 | tab_bar_at_bottom = false, 20 | show_tab_index_in_tab_bar = false, 21 | hide_tab_bar_if_only_one_tab = true, 22 | use_fancy_tab_bar = true, 23 | 24 | -- FONT 25 | font = fallback_font(font_family), 26 | font_rules = { 27 | { 28 | intensity = "Bold", 29 | font = fallback_font(font_family, { weight = "Regular" }), 30 | }, 31 | { 32 | italic = true, 33 | font = fallback_font("Cartograph CF", { style = "Italic" }), 34 | }, 35 | { 36 | italic = false, 37 | font = fallback_font(font_family, { weight = "Regular" }), 38 | }, 39 | { 40 | intensity = "Half", 41 | italic = false, 42 | font = fallback_font(font_family, { weight = "Light" }), 43 | }, 44 | }, 45 | font_size = 12, 46 | line_height = 1.1, 47 | font_shaper = "Harfbuzz", 48 | 49 | -- COLORSCHEME 50 | -- color_scheme = "Colorful Colors (terminal.sexy)", 51 | color_scheme = "Dracula", 52 | colors = { 53 | background = "#1F2329", 54 | }, 55 | 56 | -- WINDOW PADDING 57 | window_padding = { 58 | top = 20, 59 | right = 20, 60 | bottom = 20, 61 | left = 20, 62 | }, 63 | } 64 | -------------------------------------------------------------------------------- /.config/yazi/keymap.toml: -------------------------------------------------------------------------------- 1 | # GENERAL 2 | [[input.prepend_keymap]] 3 | on = [""] 4 | run = "close" 5 | desc = "Cancel input" 6 | 7 | # NAVIGATION 8 | [[manager.prepend_keymap]] 9 | on = [""] 10 | run = "cd ~/Pictures" 11 | 12 | [[manager.prepend_keymap]] 13 | on = [""] 14 | run = "ce ~/.config" 15 | 16 | [[manager.prepend_keymap]] 17 | on = [""] 18 | run = "cd ~/Documents/Notes" 19 | 20 | [[manager.prepend_keymap]] 21 | on = [""] 22 | run = "cd /media/Storage/Music" 23 | 24 | # PLUGINS 25 | [[manager.prepend_keymap]] 26 | on = [""] 27 | run = "plugin set-wall" 28 | desc = "My own wallpaper plugin, which utilizes swww & hyprpaper" 29 | -------------------------------------------------------------------------------- /.config/yazi/plugins/set-wall.yazi/init.lua: -------------------------------------------------------------------------------- 1 | --- @sync entry 2 | 3 | return { 4 | entry = function() 5 | local h = cx.active.current.hovered 6 | local img_extensions = { "jpg", "jpeg", "png", "gif" } 7 | local file_extension = h.name:match("([^.]+)$") 8 | local done = false 9 | 10 | local function swww_cmd(img_path) 11 | os.execute( 12 | string.format( 13 | "swww img %s --transition-fps 60 --transition-duration 2 --transition-type left --transition-bezier 0.25,1,0.5,1", 14 | img_path 15 | ) 16 | ) 17 | end 18 | 19 | -- Cheks whether swww-daemon is running, if not starts 20 | local function sww_daemon_handler() 21 | local handle = io.popen("pgrep -x swww-daemon") 22 | 23 | if not handle then 24 | error("Error checking running process") 25 | end 26 | 27 | local result = handle:read("*a") 28 | handle:close() 29 | 30 | if result ~= "" then 31 | return 32 | end 33 | 34 | os.execute("notify-send 'swww-daemon not running, starting swww daemon'") 35 | os.execute("nohup swww-daemon > /dev/null 2>&1 & disown %1") 36 | os.execute("sleep 1") 37 | os.execute("notify-send 'swww-daemon started'") 38 | end 39 | 40 | -- Checks whether the given file's extension matches the img_extensions list 41 | for _, v in ipairs(img_extensions) do 42 | if v == file_extension then 43 | sww_daemon_handler() 44 | swww_cmd(h.url) 45 | done = true 46 | break 47 | end 48 | end 49 | 50 | if not done then 51 | os.execute("notify-send -u critical -t 5000 'Selected file is not a image file!'") 52 | else 53 | os.execute("sleep 1") 54 | os.execute("notify-send -t 2000 'Successfully set wallpaper!'") 55 | end 56 | end, 57 | } 58 | -------------------------------------------------------------------------------- /.config/yazi/taplo.toml: -------------------------------------------------------------------------------- 1 | [formatting] 2 | align_entries = false 3 | column_width = 120 4 | -------------------------------------------------------------------------------- /.config/yazi/theme.toml: -------------------------------------------------------------------------------- 1 | [status] 2 | separator_style = { fg = "#393939", bg = "#393939" } 3 | 4 | # Mode 5 | mode_normal = { fg = "#161616", bg = "#82cfff", bold = true } 6 | mode_select = { fg = "#161616", bg = "#3ddbd9", bold = true } 7 | mode_unset = { fg = "#161616", bg = "#ffab91", bold = true } 8 | -------------------------------------------------------------------------------- /.config/yazi/yazi.toml: -------------------------------------------------------------------------------- 1 | [manager] 2 | sort_dir_first = true 3 | linemode = "size" 4 | show_symlink = true 5 | 6 | [preview] 7 | max_width = 1000 8 | -------------------------------------------------------------------------------- /.config/zsh/.gitignore: -------------------------------------------------------------------------------- 1 | plugins/ 2 | .zcompdump 3 | -------------------------------------------------------------------------------- /.config/zsh/.zshrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function source_files() { 4 | for file in "${@}"; do 5 | [[ -f $file ]] && source $file 6 | done 7 | } 8 | 9 | # History 10 | HISTFILE=~/.zsh_history 11 | HISTSIZE=50000 12 | SAVEHIST=10000 13 | 14 | setopt HIST_IGNORE_DUPS # Ignore duplicate commands in history 15 | setopt HIST_IGNORE_ALL_DUPS # Remove older duplicate entries from the history 16 | setopt HIST_FIND_NO_DUPS # Do not display duplicates during history search 17 | setopt INC_APPEND_HISTORY # Append history instead of overwriting 18 | setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicates first when trimming history 19 | setopt EXTENDED_HISTORY # Record timestamp of command in history 20 | setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry 21 | 22 | bindkey -e 23 | 24 | # The following lines were added by compinstall 25 | zstyle :compinstall filename '~/.zshrc' 26 | autoload -Uz compinit 27 | compinit 28 | 29 | # This will prevent the typed characters from being displayed on the terminal before loading zsh, followed by the % prompt. 30 | unsetopt PROMPT_SP 31 | 32 | # Set case sensitive to false like Fish shell 33 | zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' 34 | 35 | # Customization Files 36 | local zsh_scripts=( 37 | 38 | ~/.config/zsh/zsh_functions 39 | ~/.config/zsh/zsh_plugins 40 | 41 | # Using aliases same as fish 42 | ~/.config/fish/completions/aliases.fish 43 | 44 | # Icons for lf file manager 45 | ~/.config/lf/icons/icons 46 | 47 | # Environmental variables 48 | ~/.zsh_secrets 49 | ) 50 | 51 | source_files "${zsh_scripts[@]}" 52 | 53 | # Extra paths 54 | export PATH="/home/${USER}/.local/bin:$PATH" 55 | 56 | # zoxide 57 | command -v zoxide &>/dev/null && eval "$(zoxide init zsh)" 58 | 59 | # fzf 60 | source <(fzf --zsh) 61 | 62 | # Starship prompt 63 | command -v starship &>/dev/null && eval "$(starship init zsh)" 64 | 65 | # Volta.sh 66 | if [[ ! -d $HOME/.volta ]];then 67 | curl https://get.volta.sh | bash 68 | else 69 | export VOLTA_HOME="$HOME/.volta" 70 | fi 71 | 72 | # Path 73 | export PATH="$VOLTA_HOME/bin:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share:$HOME/go/bin:$PATH" 74 | -------------------------------------------------------------------------------- /.config/zsh/zsh_functions: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PLUGIN_DIR="$HOME/.local/state/zsh/plugins" 4 | 5 | # COPY FILE CONTENT 6 | function copyfile { 7 | emulate -L zsh 8 | xclip -sel clip $1 9 | } 10 | 11 | function filter_file_name() { 12 | awk -F '/' '{print $NF}' <<<$1 13 | } 14 | 15 | function source_file() { 16 | [ -f "$PLUGIN_DIR/$1" ] && source "$PLUGIN_DIR/$1" 17 | } 18 | 19 | # TO CHECK WEATHER PLUGIN FILE OR DIR EXISTS, IF NOT IT WILL AUTOMATICALLY DOWNLOAD AND ENABLE THEM. IN SHORT IT'S A MINIMAL PLUGIN MANAGER 20 | function add_plugin() { 21 | 22 | if [ $1 = "--singlefile" ]; then 23 | local PLUGIN_NAME="$(filter_file_name $2)" 24 | 25 | if [[ -f "$PLUGIN_DIR/$(filter_file_name $2)" ]]; then 26 | source_file "$PLUGIN_NAME" 27 | else 28 | wget -P $PLUGIN_DIR "https://raw.githubusercontent.com/${2}" 29 | fi 30 | else 31 | local PLUGIN_NAME="$(filter_file_name $1)/$(filter_file_name $1)" 32 | 33 | if [[ -d "${PLUGIN_DIR}/$(filter_file_name $1)" ]]; then 34 | source_file "$PLUGIN_NAME.zsh" || 35 | source_file "$PLUGIN_NAME.plugin.zsh" 36 | else 37 | git clone "https://github.com/${1}" "${PLUGIN_DIR}/$(filter_file_name $1)" 38 | fi 39 | fi 40 | } 41 | 42 | # SAME AS PLUGIN MANAGER BUT YOU CAN PASS A PLUGINS ARRAY TO THIS FUNCTION 43 | function add_plugins() { 44 | local singlefile_enabled=false 45 | if [ $1 = "--singlefile" ]; then 46 | singlefile_enabled=true 47 | shift 48 | fi 49 | for file in "${@}"; do 50 | if [ $singlefile_enabled = true ]; then 51 | add_plugin --singlefile $file 52 | else 53 | add_plugin $file 54 | fi 55 | done 56 | } 57 | 58 | function beautify-files() { 59 | vared -p "enter range -> " -c range 60 | vared -p "enter prefix -> " -c prefix 61 | for file in $1/*; do 62 | local extension=$(filter_file_name $file | cut -d '.' -f 2) 63 | mv $file $1/${prefix}-${range}.${extension} 64 | ((range = range + 1)) 65 | done 66 | } 67 | -------------------------------------------------------------------------------- /.config/zsh/zsh_plugins: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | plugins=( 4 | zsh-users/zsh-syntax-highlighting 5 | zsh-users/zsh-autosuggestions 6 | zsh-users/zsh-history-substring-search 7 | MichaelAquilina/zsh-you-should-use 8 | Aloxaf/fzf-tab 9 | jeffreytse/zsh-vi-mode 10 | hlissner/zsh-autopair 11 | ) 12 | 13 | single_file_plugins=( 14 | catppuccin/zsh-syntax-highlighting/main/themes/catppuccin_mocha-zsh-syntax-highlighting.zsh 15 | ohmyzsh/ohmyzsh/master/plugins/jsontools/jsontools.plugin.zsh 16 | ) 17 | 18 | if ! command -v wget &>/dev/null || ! command -v git &>/dev/null; then 19 | echo "Make sure wget & git properly installed" 20 | else 21 | add_plugins "${plugins[@]}" 22 | add_plugins --singlefile "${single_file_plugins[@]}" 23 | fi 24 | 25 | 26 | # Following function only specific to "hlissner/zsh-autopair" 27 | # https://github.com/jeffreytse/zsh-vi-mode#execute-extra-commands 28 | function zvm_after_init() { 29 | bindkey "^[[A" fzf-history-widget 30 | } 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![repo-size](https://img.shields.io/github/repo-size/ImRayy/dotfiles?style=for-the-badge&logo=github&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41) 2 | ![size](https://img.shields.io/github/languages/code-size/ImRayy/dotfiles?style=for-the-badge&logo=gnu-bash&color=ee999f&logoColor=D9E0EE&labelColor=302D41) 3 | ![last-commit](https://img.shields.io/github/last-commit/ImRayy/dotfiles?style=for-the-badge&logo=git&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41) 4 | 5 | ## Hyprland 6 | 7 | | ![hyprland-catppuccin-mocha](https://ik.imagekit.io/rayshold/dotfiles/_config/hypr/hyprland-catppuccin-mocha.webp?updatedAt=1706289641661) | 8 | | --- | 9 | 10 | | ![hyprland-everforest](https://ik.imagekit.io/rayshold/dotfiles/_config/hypr/hyprland-everforest.webp?updatedAt=1698346799068) | ![hyprland-catppuccin ](https://ik.imagekit.io/rayshold/dotfiles/hyprland.webp?updatedAt=1680764325650) | 11 | | --- | --- | 12 | 13 | ## Contents 14 | 15 | - [hyprland](https://github.com/ImRayy/dotfiles/tree/master/.config/hypr) 16 | - [bspwm](https://github.com/ImRayy/dotfiles/tree/master/.config/bspwm) 17 | - [waybar](https://github.com/ImRayy/dotfiles/tree/master/.config/waybar) 18 | - [polybar](https://github.com/adi1090x/polybar-themes) 19 | - [rofi](https://github.com/ImRayy/dotfiles/tree/master/.config/rofi) 20 | - [eww](https://github.com/ImRayy/dotfiles/tree/master/.config/eww/applets) 21 | - [kitty](https://github.com/ImRayy/dotfiles/tree/master/.config/kitty) 22 | - [wezterm](https://github.com/ImRayy/dotfiles/tree/master/.config/wezterm) 23 | - [zsh](https://github.com/ImRayy/dotfiles/tree/master/.config/zsh) 24 | - [fish](https://github.com/ImRayy/dotfiles/tree/master/.config/fish) 25 | - [starship](https://github.com/ImRayy/dotfiles/blob/master/.config/starship.toml) 26 | - [neofetch](https://github.com/ImRayy/dotfiles/blob/master/.config/neofetch) 27 | - [lf](https://github.com/ImRayy/dotfiles/blob/master/.config/lf) 28 | - [dunst](https://github.com/ImRayy/dotfiles/blob/master/.config/dunst) 29 | - [swaync](https://github.com/ImRayy/dotfiles/tree/master/.config/swaync) 30 | - [neovim](https://github.com/ImRayy/dotfiles/blob/master/.config/nvim) 31 | - [mpv](https://github.com/ImRayy/dotfiles/tree/master/.config/mpv) 32 | 33 | ## Fonts, Icons, Colorschemes & More 34 | 35 |
36 | Hyprland Stuff 37 |
    38 |
  • sww
  • 39 |
  • grim
  • 40 |
  • slurp
  • 41 |
  • swaylock
  • 42 |
  • wf-recorder
  • 43 |
  • cliphist
  • 44 |
  • hyprpicker
  • 45 |
  • polkit-gnome
  • 46 |
47 |
48 |
49 | Fonts 50 |
    51 |
  • Cartograph CF
  • 52 |
  • CaskaydiaCove Nerd Font
  • 53 |
  • Open Sans
  • 54 |
  • Font Awesome
  • 55 |
56 |
57 |
58 | Color schemes 59 |
    60 |
  • Catppuccin Mocha
  • 61 |
  • Everforest
  • 62 |
  • Nightowl
  • 63 |
64 |
65 |
66 | Icons 67 |
    68 |
  • Mouse Cursor: Bibata Modern Ice
  • 69 |
  • Apps: Papirus
  • 70 |
71 |
72 |
73 | Apps 74 |
    75 |
  • 📁 File Manager: lf (tui) & nemo (gui)
  • 76 |
  • 🧑‍💻 Code Editor: Neovim & Vscode like most
  • 77 |
  • 📽 Video Player: MPV
  • 78 |
  • 🎵 Music Player: Tauon Music Box
  • 79 |
  • 🗿 Emoji Picker: rofi-emoji
  • 80 |
  • 📔 Note Taking: Obsidian, Neovim (with telekasten.nvim plugin)
  • 81 |
82 |
83 |
84 | 85 | ## Tips 86 | 87 |
88 | Change Colorscheme 89 |
90 | There isn't an easy script to change the colorscheme yet, but in the future, if the list of colorschemes grows, I'll make sure to include one. For now, you can manually change the colorscheme of each component. Follow along... 91 |

Waybar

92 | Edit ~/.config/hypr/startup.conf and replace ~/.config/waybar/launch.sh [--everforest/--nightowl], Why Nightowl? Well, it's my own colorscheme inspired by Catppuccin Mocha and the color palette of Tailwind CSS. Maybe in the future, I'll change it. For now, I couldn't think of any other names. 93 | 94 |

Neovim

95 | Just change vim.cmd.colorscheme("everforest") this line in ~/.config/nvim/init.lua to whatever colorscheme you prefer or use Telescope colorscheme to check or switch between available colorschemes. 96 | 97 |

Swaync

98 | Uncomment either of lines in ~/.config/swaync/style.css 99 | 100 |
101 | 
102 | /* @import "./colorschemes/nightowl.css"; */
103 | @import "./colorschemes/everforest.css";
104 | 
105 | 
106 | 107 |

Kitty

108 | With kitty I'm using unmodified Catppuccin Mocha theme, not nightowl 109 | 110 | Change include themes/everforest.conf in ~/.config/kitty/kitty.conf 111 | 112 |

Hyprland

113 | I haven't made major color changes in Hyprland, but there are two variables you can modify in ~/.config/hypr/hyprland.conf. $active_border & $inactive_border 114 | 115 |

zsh

116 | Even though it's not necessary to change the zsh colorscheme if you're using the same colorscheme as your terminal, if you still want to, add any of the following to ~/.config/zsh/zsh_plugins > single_file_plugins=() 117 |
    118 |
  • catppuccin/zsh-syntax-highlighting/main/themes/catppuccin_mocha-zsh-syntax-highlighting.zsh
  • 119 |
  • sainnhe/dotfiles/master/.zsh-theme/everforest-dark.zsh
  • 120 |
121 |
122 | 123 | ## Misc 124 | 125 | You can download all the missing files from the following drives, such as `~/.config/neofetch/images`, wallpapers etc. 126 | 127 | [![MEGA](https://img.shields.io/badge/MEGA-D9272E?logo=mega&style=for-the-badge)](https://mega.nz/folder/b4xzlJaA#7ThCdDHl5FgxrBs00MmcSQ) 128 | --------------------------------------------------------------------------------