├── .gitignore ├── .config ├── touchegg │ ├── .touchegg:0.lock │ └── touchegg.conf ├── ranger │ ├── colorschemes │ │ ├── __init__.py │ │ └── solarized_alt.py │ ├── commands.py │ ├── rifle.conf │ └── scope.sh ├── postswitch ├── autorandr │ ├── postswitch │ ├── mobile │ │ ├── config │ │ └── setup │ └── docked │ │ ├── config │ │ └── setup ├── polybar │ ├── rofi │ │ ├── colors.rasi │ │ ├── confirm.rasi │ │ ├── message.rasi │ │ ├── launcher.rasi │ │ ├── styles.rasi │ │ ├── networkmenu.rasi │ │ └── powermenu.rasi │ ├── launch_rofi.sh │ ├── launch_rofi_emoji.sh │ ├── active.ini │ ├── glyphs.ini │ ├── powermenu.sh │ └── config.ini ├── nvim │ ├── lua │ │ └── user │ │ │ ├── impatient.lua │ │ │ ├── lsp │ │ │ ├── init.lua │ │ │ ├── settings │ │ │ │ ├── sumneko_lua.lua │ │ │ │ └── jsonls.lua │ │ │ ├── null-ls.lua │ │ │ ├── lsp-installer.lua │ │ │ └── handlers.lua │ │ │ ├── colorscheme.lua │ │ │ ├── comment.lua │ │ │ ├── treesitter.lua │ │ │ ├── autopairs.lua │ │ │ ├── autocommands.lua │ │ │ ├── alpha.lua │ │ │ ├── gitsigns.lua │ │ │ ├── toggleterm.lua │ │ │ ├── project.lua │ │ │ ├── indentline.lua │ │ │ ├── keymaps.lua │ │ │ ├── lualine.lua │ │ │ ├── nvim-tree.lua │ │ │ ├── options.lua │ │ │ ├── telescope.lua │ │ │ ├── plugins.lua │ │ │ ├── cmp.lua │ │ │ ├── bufferline.lua │ │ │ └── whichkey.lua │ ├── init.lua │ └── plugin │ │ └── packer_compiled.lua ├── mobile │ ├── config │ └── setup ├── docked │ ├── config │ └── setup ├── rofi │ └── config.rasi ├── thefuck │ ├── rules │ │ └── yay.py │ └── settings.py ├── kitty │ ├── default_colors.conf │ ├── cyber_colors.conf │ ├── nvim_colors.conf │ ├── orange_colors.conf │ └── dracula.conf ├── mpd │ └── mpd.conf ├── organize │ └── config.yaml ├── bspwm │ └── bspwmrc ├── sxhkd │ └── sxhkdrc └── picom.conf ├── bin ├── updatescount ├── gmtz ├── startup │ ├── w_pac │ ├── w_r1 │ ├── w_l1 │ ├── w_b1 │ ├── w_r2 │ ├── l_ncmpcpp │ ├── w_ncmpcpp │ ├── w_popup │ ├── start │ └── start.anim ├── update_pypi.sh ├── push_aur.sh ├── kbltoggle ├── backlight ├── changecolor ├── mass-rename ├── rtag ├── pyrtag ├── album-dl └── booksplit ├── .Xauthority ├── .colors ├── active │ ├── active.rasi │ ├── active.xres │ ├── active.sh │ ├── active.ini │ └── active.kitty ├── cyber3 │ ├── active.rasi │ ├── active.kitty │ ├── active.sh │ ├── active.xres │ └── active.ini └── dracula │ ├── active.ini │ └── active.kitty ├── README.md ├── .xinitrc ├── .Xresources ├── updatecfg.sh ├── .xbindkeysrc ├── .zshrc └── .zshrc.simple /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | -------------------------------------------------------------------------------- /.config/touchegg/.touchegg:0.lock: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/ranger/colorschemes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/postswitch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | bspc wm -r 4 | wal -R -------------------------------------------------------------------------------- /bin/updatescount: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | checkupdates | wc -l 4 | -------------------------------------------------------------------------------- /bin/gmtz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gbox4/dotfiles/HEAD/bin/gmtz -------------------------------------------------------------------------------- /.Xauthority: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gbox4/dotfiles/HEAD/.Xauthority -------------------------------------------------------------------------------- /.config/autorandr/postswitch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | bspc wm -r 4 | wal -R -------------------------------------------------------------------------------- /.config/polybar/rofi/colors.rasi: -------------------------------------------------------------------------------- 1 | @import "~/.colors/active/active.rasi" 2 | -------------------------------------------------------------------------------- /bin/startup/w_pac: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | yay -Syu 3 | #tstock gme -w -y 34 4 | $SHELL 5 | -------------------------------------------------------------------------------- /bin/startup/w_r1: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | bspc node -v 850 0 4 | bspc node -d I 5 | cmatrix 6 | 7 | $SHELL 8 | -------------------------------------------------------------------------------- /bin/startup/w_l1: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | bspc node -v -550 -100 4 | bspc node -d I 5 | neofetch 6 | 7 | $SHELL 8 | -------------------------------------------------------------------------------- /bin/update_pypi.sh: -------------------------------------------------------------------------------- 1 | python setup.py sdist bdist_wheel 2 | twine upload dist/* 3 | rm -rf build dist *.egg-info 4 | -------------------------------------------------------------------------------- /bin/startup/w_b1: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | bspc node -v 0 350 4 | bspc node -d I 5 | ncmpcpp -s visualizer 6 | 7 | $SHELL 8 | -------------------------------------------------------------------------------- /.config/polybar/launch_rofi.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | rofi -no-config -no-lazy-grab -show drun -modi drun -theme ~/.config/polybar/rofi/launcher.rasi 4 | -------------------------------------------------------------------------------- /.config/polybar/launch_rofi_emoji.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | rofi -no-config -no-lazy-grab -show emoji -modi emoji -theme ~/.config/polybar/rofi/launcher.rasi 4 | -------------------------------------------------------------------------------- /bin/startup/w_r2: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | bspc node -v 500 -200 4 | bspc node -d I 5 | #cbonsai -l -i 6 | curl "wttr.in/Honolulu?0" 7 | 8 | echo 9 | echo 10 | $SHELL 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/impatient.lua: -------------------------------------------------------------------------------- 1 | local status_ok, impatient = pcall(require, "impatient") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | impatient.enable_profile() 7 | -------------------------------------------------------------------------------- /bin/startup/l_ncmpcpp: -------------------------------------------------------------------------------- 1 | #/bin/zsh 2 | 3 | bspc rule -a kitty state=floating center=true rectangle=100x100+0+0 4 | kitty /home/gabe/bin/startup/w_ncmpcpp & disown 5 | sleep 0.5 6 | bspc rule -r kitty 7 | -------------------------------------------------------------------------------- /.config/mobile/config: -------------------------------------------------------------------------------- 1 | output DP1 2 | off 3 | output DP2 4 | off 5 | output HDMI1 6 | off 7 | output VIRTUAL1 8 | off 9 | output eDP1 10 | crtc 0 11 | mode 1920x1080 12 | pos 0x0 13 | primary 14 | rate 60.02 15 | -------------------------------------------------------------------------------- /.colors/active/active.rasi: -------------------------------------------------------------------------------- 1 | /* colors */ 2 | 3 | * { 4 | al: #00000000; 5 | bg: #09011dFF; 6 | ac: #a422c1FF; 7 | se: #a422c126; 8 | fg: #FFFFFFFF; 9 | } 10 | -------------------------------------------------------------------------------- /.colors/cyber3/active.rasi: -------------------------------------------------------------------------------- 1 | /* colors */ 2 | 3 | * { 4 | al: #00000000; 5 | bg: #09011dFF; 6 | ac: #a422c1FF; 7 | se: #a422c126; 8 | fg: #FFFFFFFF; 9 | } 10 | -------------------------------------------------------------------------------- /.config/autorandr/mobile/config: -------------------------------------------------------------------------------- 1 | output DP1 2 | off 3 | output DP2 4 | off 5 | output HDMI1 6 | off 7 | output VIRTUAL1 8 | off 9 | output eDP1 10 | crtc 0 11 | mode 1920x1080 12 | pos 0x0 13 | primary 14 | rate 60.02 15 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/init.lua: -------------------------------------------------------------------------------- 1 | local status_ok, _ = pcall(require, "lspconfig") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | require "user.lsp.lsp-installer" 7 | require("user.lsp.handlers").setup() 8 | require "user.lsp.null-ls" 9 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/colorscheme.lua: -------------------------------------------------------------------------------- 1 | local colorscheme = "dracula" 2 | 3 | local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) 4 | if not status_ok then 5 | vim.notify("colorscheme " .. colorscheme .. " not found!") 6 | return 7 | end 8 | -------------------------------------------------------------------------------- /bin/push_aur.sh: -------------------------------------------------------------------------------- 1 | makepkg --printsrcinfo > .SRCINFO 2 | VERSION=$(cat PKGBUILD | grep pkgver | cut -d'=' -f 2) 3 | echo -n "Confirm version [$VERSION]" 4 | read RESPONSE 5 | if [ -z "$RESPONSE" ] 6 | then 7 | git commit -am "$VERSION" 8 | git push 9 | fi -------------------------------------------------------------------------------- /bin/kbltoggle: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ $(cat /sys/class/leds/tpacpi::kbd_backlight/brightness) -eq 2 ] 3 | then 4 | echo 0 | sudo tee /sys/class/leds/tpacpi::kbd_backlight/brightness 5 | else 6 | echo 2 | sudo tee /sys/class/leds/tpacpi::kbd_backlight/brightness 7 | fi 8 | -------------------------------------------------------------------------------- /.config/docked/config: -------------------------------------------------------------------------------- 1 | output DP2 2 | off 3 | output HDMI1 4 | off 5 | output VIRTUAL1 6 | off 7 | output eDP1 8 | crtc 0 9 | mode 1920x1080 10 | pos 0x0 11 | primary 12 | rate 60.02 13 | output DP1 14 | crtc 1 15 | mode 2560x1440 16 | pos 1920x0 17 | rate 59.95 18 | -------------------------------------------------------------------------------- /.config/autorandr/docked/config: -------------------------------------------------------------------------------- 1 | output DP2 2 | off 3 | output HDMI1 4 | off 5 | output VIRTUAL1 6 | off 7 | output eDP1 8 | crtc 0 9 | mode 1920x1080 10 | pos 0x0 11 | primary 12 | rate 60.02 13 | output DP1 14 | crtc 1 15 | mode 2560x1440 16 | pos 1920x0 17 | rate 59.95 18 | -------------------------------------------------------------------------------- /.config/mobile/setup: -------------------------------------------------------------------------------- 1 | eDP1 00ffffffffffff0030e4080600000000001c0104a51f117802e085a3544e9b260e5054000000010101010101010101010101010101012e3680a070381f403020350035ae1000001a542b80a070381f403020350035ae1000001a000000fe004c4720446973706c61790a2020000000fe004c503134305746392d5350463100d5 2 | -------------------------------------------------------------------------------- /.config/autorandr/mobile/setup: -------------------------------------------------------------------------------- 1 | eDP1 00ffffffffffff0030e4080600000000001c0104a51f117802e085a3544e9b260e5054000000010101010101010101010101010101012e3680a070381f403020350035ae1000001a542b80a070381f403020350035ae1000001a000000fe004c4720446973706c61790a2020000000fe004c503134305746392d5350463100d5 2 | -------------------------------------------------------------------------------- /bin/backlight: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" = "set" ] 4 | then 5 | echo $2 > /sys/class/backlight/intel_backlight/brightness 6 | elif [ "$1" = "change" ] 7 | then 8 | echo $(($(cat /sys/class/backlight/intel_backlight/brightness) + $2)) > /sys/class/backlight/intel_backlight/brightness 9 | fi -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # dotfiles 2 | These are my dotfiles for my archlinux conifg 3 | 4 | These are a few of the most basic dependencies, there's tons more but I'm not gonna list them all here: 5 | - polybar 6 | - mpd 7 | - pulseaudio 8 | - bspwm 9 | - sxhkd 10 | - kitty 11 | - pywal 12 | - rofi 13 | - ranger 14 | - nvim 15 | -------------------------------------------------------------------------------- /.config/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | // modi: "window,drun,ssh,combi"; 3 | modi: "drun,ssh,window"; 4 | font: "FiraCode Nerd Font 12"; 5 | //combi-modi: "window,drun,ssh"; 6 | width: 50; 7 | lines: 15; 8 | icon-theme: "Papirus"; 9 | show-icons: true; 10 | } 11 | @import "~/.cache/wal/colors-rofi-dark" 12 | -------------------------------------------------------------------------------- /bin/startup/w_ncmpcpp: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | for i in {1..30} 4 | do 5 | bspc node -z top 0 -10 6 | bspc node -z bottom 0 10 7 | sleep 0.01 8 | done 9 | 10 | for i in {1..60} 11 | do 12 | bspc node -z left -10 0 13 | bspc node -z right 10 0 14 | sleep 0.01 15 | done 16 | 17 | sleep 0.5 18 | ncmpcpp 19 | $SHELL 20 | -------------------------------------------------------------------------------- /bin/changecolor: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -z $1 ]; then 4 | echo "No arguments supplied" 5 | exit 0 6 | fi 7 | 8 | feh --bg-fill /home/gabe/documents/pics/wallpapers/$1.png 9 | 10 | rm /home/gabe/.colors/active/* 11 | cp /home/gabe/.colors/$1/* /home/gabe/.colors/active 12 | 13 | xrdb ~/.Xresources 14 | 15 | bspc wm -r 16 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/settings/sumneko_lua.lua: -------------------------------------------------------------------------------- 1 | return { 2 | settings = { 3 | 4 | Lua = { 5 | diagnostics = { 6 | globals = { "vim" }, 7 | }, 8 | workspace = { 9 | library = { 10 | [vim.fn.expand("$VIMRUNTIME/lua")] = true, 11 | [vim.fn.stdpath("config") .. "/lua"] = true, 12 | }, 13 | }, 14 | }, 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /bin/mass-rename: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import os 4 | 5 | files = sorted(os.listdir()) 6 | 7 | for file in files: 8 | guess = " ".join([ fn[0].upper() + fn[1:] for fn in file.split("-") ]) 9 | correct = input(f"\n\n{file}\nEnter the correct name ({guess}): ") 10 | new = correct if correct else guess 11 | 12 | cmd= f'mv {file} "{new}"' 13 | os.system(cmd) 14 | -------------------------------------------------------------------------------- /.config/thefuck/rules/yay.py: -------------------------------------------------------------------------------- 1 | def match(command): 2 | return ("sudo pacman -S" in command.script and 'error: target not found: ' in command.output.lower()) 3 | 4 | 5 | def get_new_command(command): 6 | return f'yay -S {" ".join(command.script.split(" ")[3:])}' 7 | 8 | # Optional: 9 | enabled_by_default = True 10 | 11 | priority = 1000 # Lower first, default is 1000 12 | 13 | requires_output = True -------------------------------------------------------------------------------- /.colors/cyber3/active.kitty: -------------------------------------------------------------------------------- 1 | background #09011d 2 | foreground #9b9cc7 3 | cursor #9b9cc7 4 | color0 #09011d 5 | color1 #571968 6 | color2 #00ffff 7 | color3 #573086 8 | color4 #454697 9 | color5 #79238C 10 | color6 #3F408B 11 | color7 #9b9cc7 12 | color8 #23014e 13 | color9 #75188f 14 | color10 #4242b9 15 | color11 #6f32ba 16 | color12 #4b4dd2 17 | color13 #a422c1 18 | color14 #00ffff 19 | color15 #cfd0ff 20 | -------------------------------------------------------------------------------- /.config/kitty/default_colors.conf: -------------------------------------------------------------------------------- 1 | foreground #dddddd 2 | background #000000 3 | cursor #cccccc 4 | 5 | color0 #000000 6 | color8 #767676 7 | color1 #cc0403 8 | color9 #f2201f 9 | color2 #19cb00 10 | color10 #23fd00 11 | color3 #cecb00 12 | color11 #fffd00 13 | color4 #0d73cc 14 | color12 #1a8fff 15 | color5 #cb1ed1 16 | color13 #fd28ff 17 | color6 #0dcdcd 18 | color14 #14ffff 19 | color7 #dddddd 20 | color15 #ffffff 21 | -------------------------------------------------------------------------------- /.colors/cyber3/active.sh: -------------------------------------------------------------------------------- 1 | background='#09011d' 2 | foreground='#9b9cc7' 3 | cursor='#9b9cc7' 4 | 5 | color0='#09011d' 6 | color1='#571968' 7 | color2='#00ffff' 8 | color3='#573086' 9 | color4='#454697' 10 | color5='#79238C' 11 | color6='#3F408B' 12 | color7='#9b9cc7' 13 | color8='#23014e' 14 | color9='#75188f' 15 | color10='#4242b9' 16 | color11='#6f32ba' 17 | color12='#4b4dd2' 18 | color13='#a422c1' 19 | color14='#00ffff' 20 | color15='#cfd0ff' 21 | -------------------------------------------------------------------------------- /.xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | autorandr --change 4 | #wal -R 5 | ~/.fehbg & 6 | xrdb ~/.Xresources 7 | xbindkeys 8 | xset r rate 200 30 9 | #mopidy & 10 | pkill mpd 11 | mpd /home/gabe/.config/mpd/mpd.conf 12 | picom & 13 | sxhkd & 14 | #exec /home/gabe/bin/bspwm-rounded 15 | touchegg & 16 | nm-applet & 17 | 18 | eval $(gnome-keyring-daemon --start) 19 | export SSH_AUTH_SOCK 20 | 21 | #xautolock -time 10 -locker slock -detectsleep & 22 | xss-lock slock & 23 | #touch ~/startup.lock 24 | exec bspwm 25 | -------------------------------------------------------------------------------- /.config/kitty/cyber_colors.conf: -------------------------------------------------------------------------------- 1 | foreground #d59fd5 2 | background #110a18 3 | cursor #d59fd5 4 | 5 | color0 #110a18 6 | color8 #956f95 7 | color1 #A14E61 8 | color9 #A14E61 9 | color2 #A98D7C 10 | color10 #A98D7C 11 | color3 #7f6fa5 12 | color11 #7f6fa5 13 | color4 #61539A 14 | color12 #61539A 15 | color5 #484BC2 16 | color13 #484BC2 17 | color6 #d59fd5 18 | color14 #d59fd5 19 | color7 #985E9E 20 | color15 #985E9E 21 | -------------------------------------------------------------------------------- /.config/kitty/nvim_colors.conf: -------------------------------------------------------------------------------- 1 | foreground #d59fd5 2 | background #282A36 3 | cursor #d59fd5 4 | 5 | color0 #282A36 6 | color8 #956f95 7 | color1 #A14E61 8 | color9 #A14E61 9 | color2 #A98D7C 10 | color10 #A98D7C 11 | color3 #7f6fa5 12 | color11 #7f6fa5 13 | color4 #61539A 14 | color12 #61539A 15 | color5 #484BC2 16 | color13 #484BC2 17 | color6 #d59fd5 18 | color14 #d59fd5 19 | color7 #985E9E 20 | color15 #985E9E 21 | -------------------------------------------------------------------------------- /.config/kitty/orange_colors.conf: -------------------------------------------------------------------------------- 1 | foreground #321718 2 | background #fcfcfd 3 | cursor #321718 4 | 5 | color0 #fcfcfd 6 | color8 #8e9094 7 | color1 #628C9E 8 | color9 #628C9E 9 | color2 #B4A593 10 | color10 #B4A593 11 | color3 #D6AF98 12 | color11 #D6AF98 13 | color4 #beb08e 14 | color12 #beb08e 15 | color5 #EAD1B8 16 | color13 #EAD1B8 17 | color6 #7cb9de 18 | color14 #7cb9de 19 | color7 #321718 20 | color15 #321718 21 | -------------------------------------------------------------------------------- /.Xresources: -------------------------------------------------------------------------------- 1 | #include "/home/gabe/.colors/active/active.xres" 2 | 3 | *.foreground: FOREGROUND 4 | *.background: BACKGROUND 5 | *.cursorColor: FOREGROUND 6 | 7 | *.color0: COLOR0 8 | *.color1: COLOR1 9 | *.color2: COLOR2 10 | *.color3: COLOR3 11 | *.color4: COLOR4 12 | *.color5: COLOR5 13 | *.color6: COLOR6 14 | *.color7: COLOR7 15 | *.color8: COLOR8 16 | *.color9: COLOR9 17 | *.color10: COLOR10 18 | *.color11: COLOR11 19 | *.color12: COLOR12 20 | *.color13: COLOR13 21 | *.color14: COLOR14 22 | *.color15: COLOR15 23 | -------------------------------------------------------------------------------- /.colors/active/active.xres: -------------------------------------------------------------------------------- 1 | #define FOREGROUND #9b9cc7 2 | #define BACKGROUND #09011d 3 | 4 | #define COLOR0 #09011d 5 | #define COLOR1 #571968 6 | #define COLOR2 #00ffff 7 | #define COLOR3 #573086 8 | #define COLOR4 #454697 9 | #define COLOR5 #79238C 10 | #define COLOR6 #3F408B 11 | #define COLOR7 #9b9cc7 12 | #define COLOR8 #23014e 13 | #define COLOR9 #75188f 14 | #define COLOR10 #4242b9 15 | #define COLOR11 #6f32ba 16 | #define COLOR12 #4b4dd2 17 | #define COLOR13 #a422c1 18 | #define COLOR14 #00ffff 19 | #define COLOR15 #cfd0ff 20 | -------------------------------------------------------------------------------- /.colors/cyber3/active.xres: -------------------------------------------------------------------------------- 1 | #define FOREGROUND #9b9cc7 2 | #define BACKGROUND #09011d 3 | 4 | #define COLOR0 #09011d 5 | #define COLOR1 #571968 6 | #define COLOR2 #00ffff 7 | #define COLOR3 #573086 8 | #define COLOR4 #454697 9 | #define COLOR5 #79238C 10 | #define COLOR6 #3F408B 11 | #define COLOR7 #9b9cc7 12 | #define COLOR8 #23014e 13 | #define COLOR9 #75188f 14 | #define COLOR10 #4242b9 15 | #define COLOR11 #6f32ba 16 | #define COLOR12 #4b4dd2 17 | #define COLOR13 #a422c1 18 | #define COLOR14 #00ffff 19 | #define COLOR15 #cfd0ff 20 | -------------------------------------------------------------------------------- /.config/polybar/rofi/confirm.rasi: -------------------------------------------------------------------------------- 1 | /* Confirm Dialog */ 2 | 3 | @import "colors.rasi" 4 | 5 | * { 6 | background-color: @bg; 7 | text-color: @fg; 8 | font: "Iosevka Nerd Font 10"; 9 | } 10 | 11 | window { 12 | width: 225px; 13 | padding: 25px; 14 | border: 1px; 15 | border-radius: 0px; 16 | border-color: @ac; 17 | location: center; 18 | y-offset: -2em; 19 | } 20 | 21 | entry { 22 | expand: true; 23 | text-color: @ac; 24 | } 25 | -------------------------------------------------------------------------------- /.config/polybar/rofi/message.rasi: -------------------------------------------------------------------------------- 1 | /* Confirm Dialog */ 2 | 3 | @import "colors.rasi" 4 | 5 | * { 6 | background-color: @bg; 7 | text-color: @fg; 8 | font: "Iosevka Nerd Font 10"; 9 | } 10 | 11 | window { 12 | width: 320px; 13 | padding: 25px; 14 | border: 1px; 15 | border-radius: 0px; 16 | border-color: @ac; 17 | location: center; 18 | y-offset: -2em; 19 | } 20 | 21 | entry { 22 | expand: true; 23 | text-color: @ac; 24 | } 25 | -------------------------------------------------------------------------------- /.colors/active/active.sh: -------------------------------------------------------------------------------- 1 | export background='#09011d' 2 | export foreground='#9b9cc7' 3 | export cursor='#9b9cc7' 4 | 5 | export color0='#09011d' 6 | export color1='#571968' 7 | export color2='#00ffff' 8 | export color3='#573086' 9 | export color4='#454697' 10 | export color5='#79238C' 11 | export color6='#3F408B' 12 | export color7='#9b9cc7' 13 | export color8='#23014e' 14 | export color9='#75188f' 15 | export color10='#4242b9' 16 | export color11='#6f32ba' 17 | export color12='#4b4dd2' 18 | export color13='#a422c1' 19 | export color14='#00ffff' 20 | export color15='#cfd0ff' 21 | -------------------------------------------------------------------------------- /.colors/active/active.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = ${xrdb:color0} 3 | foreground = ${xrdb:color15} 4 | primary = #9f64ee 5 | secondary = #51a4b6 6 | disabled = #707070 7 | enabled = #97b1bf 8 | alert = #ff7024 9 | 10 | # shade1 = #8758c6 11 | # shade2 = #7149a5 12 | # shade3 = #593a82 13 | # shade4 = #422b60 14 | # shade5 = #2e1e44 15 | # shade6 = #241735 16 | # shade7 = #1b1127 17 | # shade8 = ${xrdb:color0} 18 | 19 | shade1 = #311B92 20 | shade2 = #4527A0 21 | shade3 = #512DA8 22 | shade4 = #5E35B1 23 | shade5 = #673AB7 24 | shade6 = #7E57C2 25 | shade7 = #9575CD 26 | shade8 = ${xrdb:color0} -------------------------------------------------------------------------------- /.colors/cyber3/active.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = ${xrdb:color0} 3 | foreground = ${xrdb:color15} 4 | primary = #9f64ee 5 | secondary = #51a4b6 6 | disabled = #707070 7 | enabled = #97b1bf 8 | alert = #ff7024 9 | 10 | # shade1 = #8758c6 11 | # shade2 = #7149a5 12 | # shade3 = #593a82 13 | # shade4 = #422b60 14 | # shade5 = #2e1e44 15 | # shade6 = #241735 16 | # shade7 = #1b1127 17 | # shade8 = ${xrdb:color0} 18 | 19 | shade1 = #311B92 20 | shade2 = #4527A0 21 | shade3 = #512DA8 22 | shade4 = #5E35B1 23 | shade5 = #673AB7 24 | shade6 = #7E57C2 25 | shade7 = #9575CD 26 | shade8 = ${xrdb:color0} -------------------------------------------------------------------------------- /.colors/dracula/active.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = ${xrdb:color0} 3 | foreground = ${xrdb:color15} 4 | primary = #9f64ee 5 | secondary = #51a4b6 6 | disabled = #707070 7 | enabled = #97b1bf 8 | alert = #ff7024 9 | 10 | # shade1 = #8758c6 11 | # shade2 = #7149a5 12 | # shade3 = #593a82 13 | # shade4 = #422b60 14 | # shade5 = #2e1e44 15 | # shade6 = #241735 16 | # shade7 = #1b1127 17 | # shade8 = ${xrdb:color0} 18 | 19 | shade1 = #311B92 20 | shade2 = #4527A0 21 | shade3 = #512DA8 22 | shade4 = #5E35B1 23 | shade5 = #673AB7 24 | shade6 = #7E57C2 25 | shade7 = #9575CD 26 | shade8 = ${xrdb:color0} -------------------------------------------------------------------------------- /.config/polybar/active.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = ${xrdb:color0} 3 | foreground = ${xrdb:color15} 4 | primary = #9f64ee 5 | secondary = #51a4b6 6 | disabled = #707070 7 | enabled = #97b1bf 8 | alert = #ff7024 9 | 10 | # shade1 = #8758c6 11 | # shade2 = #7149a5 12 | # shade3 = #593a82 13 | # shade4 = #422b60 14 | # shade5 = #2e1e44 15 | # shade6 = #241735 16 | # shade7 = #1b1127 17 | # shade8 = ${xrdb:color0} 18 | 19 | shade1 = #311B92 20 | shade2 = #4527A0 21 | shade3 = #512DA8 22 | shade4 = #5E35B1 23 | shade5 = #673AB7 24 | shade6 = #7E57C2 25 | shade7 = #9575CD 26 | shade8 = ${xrdb:color0} -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require "user.options" 2 | require "user.keymaps" 3 | require "user.plugins" 4 | require "user.colorscheme" 5 | require "user.cmp" 6 | require "user.lsp" 7 | require "user.telescope" 8 | require "user.treesitter" 9 | require "user.autopairs" 10 | require "user.comment" 11 | require "user.gitsigns" 12 | require "user.nvim-tree" 13 | require "user.bufferline" 14 | require "user.lualine" 15 | require "user.toggleterm" 16 | require "user.project" 17 | require "user.impatient" 18 | require "user.indentline" 19 | require "user.alpha" 20 | require "user.whichkey" 21 | require "user.autocommands" 22 | -------------------------------------------------------------------------------- /bin/rtag: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | [ -z "$1" ] && printf "Please supply a directory.\\n" && exit 4 | 5 | echo "Enter the album title:"; read -r album 6 | 7 | echo "Enter the artist:"; read -r artist 8 | 9 | echo "Enter the publication year:"; read -r year 10 | 11 | albumdir="$1" 12 | total=$(ls $1 | wc -l) 13 | 14 | for file in $albumdir/*; do 15 | title=$(echo $file | rev | cut -d"/" -f1 | rev | cut -d"." -f1 | cut -d" " -f2-) 16 | track=$(echo $file | rev | cut -d"/" -f1 | rev | cut -d"." -f1 | cut -d" " -f1) 17 | id3tag -a "$artist" -A "$album" -y "$year" -t $track -s "$title" -T "$total" "$file" 18 | #echo "$track $title $artist $album $year" 19 | done 20 | -------------------------------------------------------------------------------- /bin/startup/w_popup: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | bspc node -d I --follow 4 | 5 | for i in {1..30} 6 | do 7 | bspc node -z top 0 -10 8 | bspc node -z bottom 0 10 9 | sleep 0.01 10 | done 11 | 12 | for i in {1..60} 13 | do 14 | bspc node -z left -10 0 15 | bspc node -z right 10 0 16 | sleep 0.01 17 | done 18 | 19 | sleep 0.5 20 | echo "\n\n\n\n\n\n" 21 | echo "WELCOME\nBACK\nGABE" | figlet -f 3d -c -t | lolcat -a -d 2 22 | 23 | sleep 2 24 | 25 | bspc node -d II --follow 26 | sleep 0.4 27 | clear 28 | 29 | for i in {1..30} 30 | do 31 | bspc node -z top_left -10 -5 32 | bspc node -z bottom_right 10 5 33 | sleep 0.01 34 | done 35 | 36 | bspc node -t tiled 37 | sleep 4 38 | 39 | #cbonsai -l -i 40 | cbonsai -l -i -t 1 -w 60 41 | $SHELL 42 | 43 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/null-ls.lua: -------------------------------------------------------------------------------- 1 | local null_ls_status_ok, null_ls = pcall(require, "null-ls") 2 | if not null_ls_status_ok then 3 | return 4 | end 5 | 6 | -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting 7 | local formatting = null_ls.builtins.formatting 8 | -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics 9 | local diagnostics = null_ls.builtins.diagnostics 10 | 11 | null_ls.setup({ 12 | debug = false, 13 | sources = { 14 | formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), 15 | formatting.black.with({ extra_args = { "--fast" } }), 16 | formatting.stylua, 17 | -- diagnostics.flake8 18 | }, 19 | }) 20 | -------------------------------------------------------------------------------- /.config/docked/setup: -------------------------------------------------------------------------------- 1 | DP1 00ffffffffffff0030aef9655a544634211e0103804627782e7cb6a65550a0270a5154bdcf0081809500b300d1c0d100714f818a0101565e00a0a0a0295030203500ba892100001acc7400a0a0a01e5030203500ba892100001a000000fd00304b1e721e000a202020202020000000fc004c454e20433332712d32300a200176020327c14b01020304040413901f1f1f230907078301000065030c001000681a00000101004b00011d007251d01e206e285500ba892100001e011d007251d01e206e285500ba892100001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f3 2 | eDP1 00ffffffffffff0030e4080600000000001c0104a51f117802e085a3544e9b260e5054000000010101010101010101010101010101012e3680a070381f403020350035ae1000001a542b80a070381f403020350035ae1000001a000000fe004c4720446973706c61790a2020000000fe004c503134305746392d5350463100d5 3 | -------------------------------------------------------------------------------- /.config/autorandr/docked/setup: -------------------------------------------------------------------------------- 1 | DP1 00ffffffffffff0030aef9655a544634211e0103804627782e7cb6a65550a0270a5154bdcf0081809500b300d1c0d100714f818a0101565e00a0a0a0295030203500ba892100001acc7400a0a0a01e5030203500ba892100001a000000fd00304b1e721e000a202020202020000000fc004c454e20433332712d32300a200176020327c14b01020304040413901f1f1f230907078301000065030c001000681a00000101004b00011d007251d01e206e285500ba892100001e011d007251d01e206e285500ba892100001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f3 2 | eDP1 00ffffffffffff0030e4080600000000001c0104a51f117802e085a3544e9b260e5054000000010101010101010101010101010101012e3680a070381f403020350035ae1000001a542b80a070381f403020350035ae1000001a000000fe004c4720446973706c61790a2020000000fe004c503134305746392d5350463100d5 3 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/comment.lua: -------------------------------------------------------------------------------- 1 | local status_ok, comment = pcall(require, "Comment") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | comment.setup { 7 | pre_hook = function(ctx) 8 | local U = require "Comment.utils" 9 | 10 | local location = nil 11 | if ctx.ctype == U.ctype.block then 12 | location = require("ts_context_commentstring.utils").get_cursor_location() 13 | elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then 14 | location = require("ts_context_commentstring.utils").get_visual_start_location() 15 | end 16 | 17 | return require("ts_context_commentstring.internal").calculate_commentstring { 18 | key = ctx.ctype == U.ctype.line and "__default" or "__multiline", 19 | location = location, 20 | } 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /.config/thefuck/settings.py: -------------------------------------------------------------------------------- 1 | # The Fuck settings file 2 | # 3 | # The rules are defined as in the example bellow: 4 | # 5 | # rules = ['cd_parent', 'git_push', 'python_command', 'sudo'] 6 | # 7 | # The default values are as follows. Uncomment and change to fit your needs. 8 | # See https://github.com/nvbn/thefuck#settings for more information. 9 | # 10 | 11 | # rules = [] 12 | # exclude_rules = [] 13 | # wait_command = 3 14 | # require_confirmation = True 15 | # no_colors = False 16 | # debug = False 17 | # priority = {} 18 | # history_limit = None 19 | # alter_history = True 20 | # wait_slow_command = 15 21 | # slow_commands = ['lein', 'react-native', 'gradle', './gradlew', 'vagrant'] 22 | # repeat = False 23 | # instant_mode = False 24 | # num_close_matches = 3 25 | # env = {'LC_ALL': 'C', 'LANG': 'C', 'GIT_TRACE': '1'} 26 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/treesitter.lua: -------------------------------------------------------------------------------- 1 | local status_ok, configs = pcall(require, "nvim-treesitter.configs") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | configs.setup { 7 | ensure_installed = "maintained", -- one of "all", "maintained" (parsers with maintainers), or a list of languages 8 | sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) 9 | ignore_install = { "" }, -- List of parsers to ignore installing 10 | autopairs = { 11 | enable = true, 12 | }, 13 | highlight = { 14 | enable = true, -- false will disable the whole extension 15 | disable = { "" }, -- list of language that will be disabled 16 | additional_vim_regex_highlighting = true, 17 | }, 18 | indent = { enable = true, disable = { "yaml" } }, 19 | context_commentstring = { 20 | enable = true, 21 | enable_autocmd = false, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /.config/mpd/mpd.conf: -------------------------------------------------------------------------------- 1 | # Recommended location for database 2 | db_file "~/.mpd/database" 3 | 4 | # Logs to systemd journal 5 | log_file "syslog" 6 | 7 | # The music directory is by default the XDG directory, uncomment to amend and choose a different directory 8 | music_directory "/srv/music" 9 | 10 | # Uncomment to refresh the database whenever files in the music_directory are changed 11 | #auto_update "yes" 12 | 13 | # Uncomment to enable the functionalities 14 | playlist_directory "~/.mpd/playlists" 15 | pid_file "~/.mpd/pid" 16 | state_file "~/.mpd/state" 17 | sticker_file "~/.mpd/sticker.sql" 18 | 19 | audio_output { 20 | type "alsa" 21 | name "ALSA sound card" 22 | } 23 | 24 | audio_output { 25 | type "fifo" 26 | name "my_fifo" 27 | path "/tmp/mpd.fifo" 28 | format "44100:16:2" 29 | } 30 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/autopairs.lua: -------------------------------------------------------------------------------- 1 | -- Setup nvim-cmp. 2 | local status_ok, npairs = pcall(require, "nvim-autopairs") 3 | if not status_ok then 4 | return 5 | end 6 | 7 | npairs.setup { 8 | check_ts = true, 9 | ts_config = { 10 | lua = { "string", "source" }, 11 | javascript = { "string", "template_string" }, 12 | java = false, 13 | }, 14 | disable_filetype = { "TelescopePrompt", "spectre_panel" }, 15 | fast_wrap = { 16 | map = "", 17 | chars = { "{", "[", "(", '"', "'" }, 18 | pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), 19 | offset = 0, -- Offset from pattern match 20 | end_key = "$", 21 | keys = "qwertyuiopzxcvbnmasdfghjkl", 22 | check_comma = true, 23 | highlight = "PmenuSel", 24 | highlight_grey = "LineNr", 25 | }, 26 | } 27 | 28 | local cmp_autopairs = require "nvim-autopairs.completion.cmp" 29 | local cmp_status_ok, cmp = pcall(require, "cmp") 30 | if not cmp_status_ok then 31 | return 32 | end 33 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) 34 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/lsp-installer.lua: -------------------------------------------------------------------------------- 1 | local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | -- Register a handler that will be called for all installed servers. 7 | -- Alternatively, you may also register handlers on specific server instances instead (see example below). 8 | lsp_installer.on_server_ready(function(server) 9 | local opts = { 10 | on_attach = require("user.lsp.handlers").on_attach, 11 | capabilities = require("user.lsp.handlers").capabilities, 12 | } 13 | 14 | if server.name == "jsonls" then 15 | local jsonls_opts = require("user.lsp.settings.jsonls") 16 | opts = vim.tbl_deep_extend("force", jsonls_opts, opts) 17 | end 18 | 19 | if server.name == "sumneko_lua" then 20 | local sumneko_opts = require("user.lsp.settings.sumneko_lua") 21 | opts = vim.tbl_deep_extend("force", sumneko_opts, opts) 22 | end 23 | 24 | -- This setup() function is exactly the same as lspconfig's setup function. 25 | -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md 26 | server:setup(opts) 27 | end) 28 | 29 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/autocommands.lua: -------------------------------------------------------------------------------- 1 | vim.cmd [[ 2 | augroup _general_settings 3 | autocmd! 4 | autocmd FileType qf,help,man,lspinfo nnoremap q :close 5 | autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200}) 6 | autocmd BufWinEnter * :set formatoptions-=cro 7 | autocmd FileType qf set nobuflisted 8 | augroup end 9 | 10 | augroup _git 11 | autocmd! 12 | autocmd FileType gitcommit setlocal wrap 13 | autocmd FileType gitcommit setlocal spell 14 | augroup end 15 | 16 | augroup _markdown 17 | autocmd! 18 | autocmd FileType markdown setlocal wrap 19 | autocmd FileType markdown setlocal spell 20 | augroup end 21 | 22 | augroup _auto_resize 23 | autocmd! 24 | autocmd VimResized * tabdo wincmd = 25 | augroup end 26 | 27 | augroup _alpha 28 | autocmd! 29 | autocmd User AlphaReady set showtabline=0 | autocmd BufUnload set showtabline=2 30 | augroup end 31 | ]] 32 | 33 | -- Autoformat 34 | -- augroup _lsp 35 | -- autocmd! 36 | -- autocmd BufWritePre * lua vim.lsp.buf.formatting() 37 | -- augroup end 38 | -------------------------------------------------------------------------------- /.colors/active/active.kitty: -------------------------------------------------------------------------------- 1 | # https://draculatheme.com/kitty 2 | # 3 | # Installation instructions: 4 | # 5 | # cp dracula.conf ~/.config/kitty/ 6 | # echo "include dracula.conf" >> ~/.config/kitty/kitty.conf 7 | # 8 | # Then reload kitty for the config to take affect. 9 | # Alternatively copy paste below directly into kitty.conf 10 | 11 | foreground #f8f8f2 12 | background #282a36 13 | selection_foreground #ffffff 14 | selection_background #44475a 15 | 16 | url_color #8be9fd 17 | 18 | # black 19 | color0 #21222c 20 | color8 #6272a4 21 | 22 | # red 23 | color1 #ff5555 24 | color9 #ff6e6e 25 | 26 | # green 27 | color2 #50fa7b 28 | color10 #69ff94 29 | 30 | # yellow 31 | color3 #f1fa8c 32 | color11 #ffffa5 33 | 34 | # blue 35 | color4 #bd93f9 36 | color12 #d6acff 37 | 38 | # magenta 39 | color5 #ff79c6 40 | color13 #ff92df 41 | 42 | # cyan 43 | color6 #8be9fd 44 | color14 #a4ffff 45 | 46 | # white 47 | color7 #f8f8f2 48 | color15 #ffffff 49 | 50 | # Cursor colors 51 | cursor #f8f8f2 52 | cursor_text_color background 53 | 54 | # Tab bar colors 55 | active_tab_foreground #282a36 56 | active_tab_background #f8f8f2 57 | inactive_tab_foreground #282a36 58 | inactive_tab_background #6272a4 59 | 60 | # Marks 61 | mark1_foreground #282a36 62 | mark1_background #ff5555 63 | -------------------------------------------------------------------------------- /.colors/dracula/active.kitty: -------------------------------------------------------------------------------- 1 | # https://draculatheme.com/kitty 2 | # 3 | # Installation instructions: 4 | # 5 | # cp dracula.conf ~/.config/kitty/ 6 | # echo "include dracula.conf" >> ~/.config/kitty/kitty.conf 7 | # 8 | # Then reload kitty for the config to take affect. 9 | # Alternatively copy paste below directly into kitty.conf 10 | 11 | foreground #f8f8f2 12 | background #282a36 13 | selection_foreground #ffffff 14 | selection_background #44475a 15 | 16 | url_color #8be9fd 17 | 18 | # black 19 | color0 #21222c 20 | color8 #6272a4 21 | 22 | # red 23 | color1 #ff5555 24 | color9 #ff6e6e 25 | 26 | # green 27 | color2 #50fa7b 28 | color10 #69ff94 29 | 30 | # yellow 31 | color3 #f1fa8c 32 | color11 #ffffa5 33 | 34 | # blue 35 | color4 #bd93f9 36 | color12 #d6acff 37 | 38 | # magenta 39 | color5 #ff79c6 40 | color13 #ff92df 41 | 42 | # cyan 43 | color6 #8be9fd 44 | color14 #a4ffff 45 | 46 | # white 47 | color7 #f8f8f2 48 | color15 #ffffff 49 | 50 | # Cursor colors 51 | cursor #f8f8f2 52 | cursor_text_color background 53 | 54 | # Tab bar colors 55 | active_tab_foreground #282a36 56 | active_tab_background #f8f8f2 57 | inactive_tab_foreground #282a36 58 | inactive_tab_background #6272a4 59 | 60 | # Marks 61 | mark1_foreground #282a36 62 | mark1_background #ff5555 63 | -------------------------------------------------------------------------------- /.config/kitty/dracula.conf: -------------------------------------------------------------------------------- 1 | # https://draculatheme.com/kitty 2 | # 3 | # Installation instructions: 4 | # 5 | # cp dracula.conf ~/.config/kitty/ 6 | # echo "include dracula.conf" >> ~/.config/kitty/kitty.conf 7 | # 8 | # Then reload kitty for the config to take affect. 9 | # Alternatively copy paste below directly into kitty.conf 10 | 11 | foreground #f8f8f2 12 | background #282a36 13 | selection_foreground #ffffff 14 | selection_background #44475a 15 | 16 | url_color #8be9fd 17 | 18 | # black 19 | color0 #21222c 20 | color8 #6272a4 21 | 22 | # red 23 | color1 #ff5555 24 | color9 #ff6e6e 25 | 26 | # green 27 | color2 #50fa7b 28 | color10 #69ff94 29 | 30 | # yellow 31 | color3 #f1fa8c 32 | color11 #ffffa5 33 | 34 | # blue 35 | color4 #bd93f9 36 | color12 #d6acff 37 | 38 | # magenta 39 | color5 #ff79c6 40 | color13 #ff92df 41 | 42 | # cyan 43 | color6 #8be9fd 44 | color14 #a4ffff 45 | 46 | # white 47 | color7 #f8f8f2 48 | color15 #ffffff 49 | 50 | # Cursor colors 51 | cursor #f8f8f2 52 | cursor_text_color background 53 | 54 | # Tab bar colors 55 | active_tab_foreground #282a36 56 | active_tab_background #f8f8f2 57 | inactive_tab_foreground #282a36 58 | inactive_tab_background #6272a4 59 | 60 | # Marks 61 | mark1_foreground #282a36 62 | mark1_background #ff5555 63 | -------------------------------------------------------------------------------- /bin/pyrtag: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # Imports 3 | from optparse import OptionParser 4 | import os 5 | 6 | # Parsing options and arguments 7 | usage = "Usage: pyrtag [DIRECTORY]" 8 | parser = OptionParser(usage=usage) 9 | 10 | 11 | parser.add_option("--album", action="store", type="string", dest="album", help="the album title") 12 | parser.add_option("--artist", action="store", type="string", dest="artist", help="the album artist") 13 | parser.add_option("--year", action="store", type="string", dest="year", help="the album's publication year") 14 | 15 | (options, args) = parser.parse_args() 16 | if len(args) != 1: 17 | parser.error("incorrect number of arguments, please supply a directory") 18 | 19 | album = options.album if options.album else str(input("Enter the album title:\n")) 20 | artist = options.artist if options.artist else str(input("Enter the artist:\n")) 21 | year = options.year if options.year else str(input("Enter the publication year:\n")) 22 | 23 | os.chdir(args[0]) 24 | files = sorted(os.listdir()) 25 | total = len(files) 26 | 27 | for file in files: 28 | #print(repr(file)) 29 | title = " ".join(file.split(" ")[1:]).replace(".mp3", "").replace("'", "\'") 30 | track = int(file.split(" ")[0]) 31 | cmd= f"id3tag -a \"{artist}\" -A \"{album}\" -y \"{year}\" -t {track} -s \"{title}\" -T \"{total}\" \"{file}\"" 32 | #print(cmd) 33 | os.system(cmd) -------------------------------------------------------------------------------- /bin/startup/start: -------------------------------------------------------------------------------- 1 | #/bin/zsh 2 | 3 | export SCRIPTCALL='true' 4 | 5 | bspc rule -a kitty state=floating center=true rectangle=200x800+0+0 6 | kitty /home/gabe/bin/startup/w_r1 & disown 7 | 8 | sleep 0.2 9 | bspc rule -a kitty state=floating center=true rectangle=1800x260+0+0 10 | kitty /home/gabe/bin/startup/w_b1 & disown 11 | 12 | sleep 0.2 13 | bspc rule -a kitty state=floating center=true rectangle=750x450+0+0 14 | kitty /home/gabe/bin/startup/w_l1 & disown 15 | 16 | sleep 0.2 17 | #bspc rule -a kitty state=floating center=true rectangle=600x500+0+0 18 | bspc rule -a kitty state=floating center=true rectangle=450x250+0+0 19 | kitty /home/gabe/bin/startup/w_r2 & disown 20 | 21 | sleep 1 22 | bspc rule -a kitty state=floating center=true rectangle=100x100+0+0 23 | kitty /home/gabe/bin/startup/w_popup & disown 24 | 25 | 26 | sleep 0.2 27 | bspc rule -r kitty 28 | sleep 8 29 | 30 | # Now on screen II 31 | 32 | bspc node -p east -o 0.25 33 | sleep 0.2 34 | kitty /home/gabe/bin/startup/w_pac & disown 35 | sleep 0.2 36 | 37 | bspc node -p south -o 0.8 38 | sleep 0.2 39 | kitty htop & disown 40 | sleep 0.2 41 | 42 | bspc node -p east -o 0.7 43 | sleep 0.2 44 | kitty tty-clock -C 5 & disown 45 | sleep 0.2 46 | 47 | bspc node -f next.local.!hidden.window 48 | 49 | sleep 0.2 50 | bspc node -p south -o 0.5 51 | sleep 0.2 52 | kitty speedometer -r wlp0s20f3 -t wlp0s20f3 & disown 53 | sleep 0.5 54 | 55 | bspc node -f next.local.!hidden.window 56 | -------------------------------------------------------------------------------- /updatecfg.sh: -------------------------------------------------------------------------------- 1 | cd ~/.config 2 | 3 | cp -r autorandr ~/repos/dotfiles/.config 4 | cp -r bspwm ~/repos/dotfiles/.config 5 | cp -r kitty ~/repos/dotfiles/.config 6 | cp -r mpd ~/repos/dotfiles/.config 7 | cp -r nvim ~/repos/dotfiles/.config 8 | cp -r organize ~/repos/dotfiles/.config 9 | cp -r picom.conf ~/repos/dotfiles/.config 10 | cp -r polybar ~/repos/dotfiles/.config 11 | cp -r ranger ~/repos/dotfiles/.config 12 | cp -r rofi ~/repos/dotfiles/.config 13 | cp -r sxhkd ~/repos/dotfiles/.config 14 | cp -r thefuck ~/repos/dotfiles/.config 15 | cp -r touchegg ~/repos/dotfiles/.config 16 | 17 | cd ~ 18 | cp -r .colors ~/repos/dotfiles 19 | cp -r .Xauthority ~/repos/dotfiles 20 | cp -r .xbindkeysrc ~/repos/dotfiles 21 | cp -r .xinitrc ~/repos/dotfiles 22 | cp -r .Xresources ~/repos/dotfiles 23 | cp -r .zshrc ~/repos/dotfiles 24 | cp -r .zshrc.simple ~/repos/dotfiles 25 | 26 | cd ~/bin 27 | 28 | cp -r album-dl ~/repos/dotfiles/bin 29 | cp -r backlight ~/repos/dotfiles/bin 30 | cp -r booksplit ~/repos/dotfiles/bin 31 | cp -r changecolor ~/repos/dotfiles/bin 32 | cp -r gmtz ~/repos/dotfiles/bin 33 | cp -r kbltoggle ~/repos/dotfiles/bin 34 | cp -r mass-rename ~/repos/dotfiles/bin 35 | cp -r push_aur.sh ~/repos/dotfiles/bin 36 | cp -r pyrtag ~/repos/dotfiles/bin 37 | cp -r rtag ~/repos/dotfiles/bin 38 | cp -r startup ~/repos/dotfiles/bin 39 | cp -r update_pypi.sh ~/repos/dotfiles/bin 40 | cp -r updatescount ~/repos/dotfiles/bin 41 | 42 | cd ~/repos/dotfiles 43 | git add -A 44 | git commit -m "script dotfiles update" 45 | -------------------------------------------------------------------------------- /bin/album-dl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | from optparse import OptionParser 3 | import os 4 | 5 | # Parsing options and arguments 6 | usage = "Usage: album-dl [YOUTUBE URL]" 7 | parser = OptionParser(usage=usage) 8 | 9 | parser.add_option("--album", action="store", type="string", dest="album", help="the album title") 10 | parser.add_option("--artist", action="store", type="string", dest="artist", help="the album artist") 11 | parser.add_option("--year", action="store", type="string", dest="year", help="the album's publication year") 12 | parser.add_option("-f", action="store_true", dest="force") 13 | 14 | (options, args) = parser.parse_args() 15 | if len(args) != 1: 16 | parser.error("incorrect number of arguments, please supply a URL") 17 | 18 | url = args[0] 19 | 20 | album = options.album if options.album else str(input("Enter the album title:\n")) 21 | artist = options.artist if options.artist else str(input("Enter the artist:\n")) 22 | year = options.year if options.year else str(input("Enter the publication year:\n")) 23 | 24 | #os.system(f"mkdir '{album}'") 25 | os.mkdir(album) 26 | os.chdir(album) 27 | os.system(f'youtube-dl -x --audio-format mp3 --audio-quality 0 -o "%(autonumber)s %(title)s.%(ext)s" {url}') 28 | 29 | if not options.force: 30 | input("\n\n Download complete.\nNow is the last chance to rename any files, makes sure they are the correct name as they will be tagged after.\nPress ENTER when all files are named correctly.") 31 | 32 | os.system(f"~/bin/pyrtag --album \"{album}\" --artist \"{artist}\" --year \"{year}\" .") 33 | 34 | print("Done!") -------------------------------------------------------------------------------- /.config/nvim/lua/user/alpha.lua: -------------------------------------------------------------------------------- 1 | local status_ok, alpha = pcall(require, "alpha") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local dashboard = require("alpha.themes.dashboard") 7 | dashboard.section.header.val = { 8 | [[ __ ]], 9 | [[ ___ ___ ___ __ __ /\_\ ___ ___ ]], 10 | [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]], 11 | [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]], 12 | [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]], 13 | [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]], 14 | } 15 | dashboard.section.buttons.val = { 16 | dashboard.button("f", " Find file", ":Telescope find_files "), 17 | dashboard.button("F", " Find text", ":Telescope live_grep "), 18 | dashboard.button("n", " New file", ":ene startinsert "), 19 | dashboard.button("p", " Find project", ":Telescope projects "), 20 | dashboard.button("r", " Recently used files", ":Telescope oldfiles "), 21 | dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua "), 22 | dashboard.button("q", " Quit Neovim", ":qa"), 23 | } 24 | 25 | local function footer() 26 | -- NOTE: requires the fortune-mod package to work 27 | -- local handle = io.popen("fortune") 28 | -- local fortune = handle:read("*a") 29 | -- handle:close() 30 | -- return fortune 31 | return "chrisatmachine.com" 32 | end 33 | 34 | dashboard.section.footer.val = footer() 35 | 36 | dashboard.section.footer.opts.hl = "Type" 37 | dashboard.section.header.opts.hl = "Include" 38 | dashboard.section.buttons.opts.hl = "Keyword" 39 | 40 | dashboard.opts.opts.noautocmd = true 41 | -- vim.cmd([[autocmd User AlphaReady echo 'ready']]) 42 | alpha.setup(dashboard.opts) 43 | -------------------------------------------------------------------------------- /.config/organize/config.yaml: -------------------------------------------------------------------------------- 1 | rules: 2 | - name: "clean downloads" 3 | locations: "~/downloads" 4 | filters: 5 | - lastmodified: 6 | days: 30 7 | actions: 8 | - move: "~/trash/" 9 | 10 | - name: "iolani reports" 11 | locations: "~/downloads/" 12 | subfolders: true 13 | filters: 14 | - extension: pdf 15 | - filecontent: '.*Iolani.*(?P\d{4}-\d{4}(\s\D+){1,2}\d)' 16 | actions: 17 | - shell: filename=$(echo '{filecontent.date}') && mv '{path}' "/home/gabe/gbanks/02_SCHOOL/$filename\ iolani-report.pdf" 18 | 19 | - name: "chase deposits" 20 | locations: "~/downloads/" 21 | subfolders: true 22 | filters: 23 | - extension: pdf 24 | - filecontent: 'Deposit cash or checks.*(?P\d\d\/\d\d\/\d\d\d\d$)' 25 | actions: 26 | - shell: filename=$(echo '{filecontent.date}' | sed 's/\//-/g') && mv '{path}' "/home/gabe/gbanks/03_FINANCE/$filename\ chase-deposit.pdf" 27 | 28 | - name: "chase statements" 29 | locations: "~/downloads/" 30 | subfolders: true 31 | filters: 32 | - extension: pdf 33 | - filecontent: 'JPMorgan Chase Bank.*(?P[A-Z]\w+ \d\d, \d\d\d\d through \w+ \d\d, \d\d\d\d)' 34 | actions: 35 | - shell: filename=$(echo '{filecontent.date}') && mv '{path}' "/home/gabe/gbanks/03_FINANCE/$filename\ chase-statement.pdf" 36 | 37 | - name: "jpmorgan statements" 38 | locations: "~/downloads/" 39 | subfolders: true 40 | filters: 41 | - extension: pdf 42 | - filecontent: '(?P[A-Z]\w+ \d\d - \w+ \d\d, \d\d\d\d).*Investment Statement' 43 | actions: 44 | - shell: filename=$(echo '{filecontent.date}') && mv '{path}' "/home/gabe/gbanks/03_FINANCE/$filename\ jpmorgan-statement.pdf" 45 | -------------------------------------------------------------------------------- /bin/startup/start.anim: -------------------------------------------------------------------------------- 1 | #/bin/zsh 2 | 3 | export SCRIPTCALL='true' 4 | 5 | bspc rule -a kitty state=floating center=true rectangle=200x800+0+0 6 | kitty /home/gabe/bin/startup/w_r1 & disown 7 | 8 | sleep 0.5 9 | bspc rule -a kitty state=floating center=true rectangle=1800x260+0+0 10 | kitty /home/gabe/bin/startup/w_b1 & disown 11 | 12 | sleep 0.5 13 | bspc rule -a kitty state=floating center=true rectangle=750x450+0+0 14 | kitty /home/gabe/bin/startup/w_l1 & disown 15 | 16 | sleep 0.5 17 | #bspc rule -a kitty state=floating center=true rectangle=600x500+0+0 18 | bspc rule -a kitty state=floating center=true rectangle=450x250+0+0 19 | kitty /home/gabe/bin/startup/w_r2 & disown 20 | 21 | sleep 1 22 | bspc rule -a kitty state=floating center=true rectangle=100x100+0+0 23 | kitty /home/gabe/bin/startup/w_popup & disown 24 | 25 | 26 | sleep 0.2 27 | bspc rule -r kitty 28 | sleep 8 29 | 30 | # Now on screen II 31 | 32 | bspc node -p east -o 0.95 33 | sleep 0.2 34 | kitty /home/gabe/bin/startup/w_pac & disown 35 | sleep 0.2 36 | 37 | for i in {1..135} 38 | do 39 | bspc node -z left -10 0 40 | sleep 0.01 41 | done 42 | 43 | bspc node -p south -o 0.9 44 | sleep 0.2 45 | kitty htop & disown 46 | sleep 0.2 47 | 48 | for i in {1..30} 49 | do 50 | bspc node -z top 0 -4 51 | sleep 0.01 52 | done 53 | 54 | 55 | bspc node -p east -o 0.9 56 | sleep 0.2 57 | kitty tty-clock -C 5 & disown 58 | sleep 0.2 59 | 60 | for i in {1..30} 61 | do 62 | bspc node -z left -8 0 63 | sleep 0.01 64 | done 65 | 66 | 67 | bspc node -f next.local.!hidden.window 68 | sleep 0.2 69 | bspc node -p south -o 0.9 70 | sleep 0.2 71 | kitty speedometer -r wlp0s20f3 -t wlp0s20f3 & disown 72 | for i in {1..60} 73 | do 74 | bspc node -z top 0 -8 75 | sleep 0.01 76 | done 77 | 78 | bspc node -f next.local.!hidden.window 79 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/gitsigns.lua: -------------------------------------------------------------------------------- 1 | local status_ok, gitsigns = pcall(require, "gitsigns") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | gitsigns.setup { 7 | signs = { 8 | add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, 9 | change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, 10 | delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, 11 | topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, 12 | changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, 13 | }, 14 | signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` 15 | numhl = false, -- Toggle with `:Gitsigns toggle_numhl` 16 | linehl = false, -- Toggle with `:Gitsigns toggle_linehl` 17 | word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` 18 | watch_gitdir = { 19 | interval = 1000, 20 | follow_files = true, 21 | }, 22 | attach_to_untracked = true, 23 | current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` 24 | current_line_blame_opts = { 25 | virt_text = true, 26 | virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' 27 | delay = 1000, 28 | ignore_whitespace = false, 29 | }, 30 | current_line_blame_formatter_opts = { 31 | relative_time = false, 32 | }, 33 | sign_priority = 6, 34 | update_debounce = 100, 35 | status_formatter = nil, -- Use default 36 | max_file_length = 40000, 37 | preview_config = { 38 | -- Options passed to nvim_open_win 39 | border = "single", 40 | style = "minimal", 41 | relative = "cursor", 42 | row = 0, 43 | col = 1, 44 | }, 45 | yadm = { 46 | enable = false, 47 | }, 48 | } 49 | -------------------------------------------------------------------------------- /.config/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | pgrep -x sxhkd > /dev/null || sxhkd & 4 | 5 | pkill polybar 6 | pkill stretchly 7 | 8 | polybar top -c ~/.config/polybar/config.ini & 9 | polybar bottom -c ~/.config/polybar/config.ini & 10 | stretchly & 11 | 12 | if [ -z "$(xrandr -q | grep -w connected | grep HDMI1)" ] 13 | then 14 | if [ $(xrandr -q | grep -w connected | grep DP1 | wc -l) -eq 2 ] 15 | then 16 | bspc monitor DP1 -d VI VII VIII IX X 17 | bspc monitor eDP1 -d I II III IV V 18 | 19 | polybar top3 -c ~/.config/polybar/config.ini& 20 | polybar bottom3 -c ~/.config/polybar/config.ini& 21 | 22 | bspc config bottom_padding 20 23 | 24 | else 25 | bspc monitor eDP1 -d I II III IV V VI VII VIII IX X 26 | fi 27 | else 28 | bspc monitor eDP1 -d I II III IV V 29 | bspc monitor HDMI1 -d VI VII VIII IX X 30 | 31 | polybar top2 & 32 | polybar bottom2 & 33 | 34 | bspc config bottom_padding 20 35 | fi 36 | 37 | bspc config border_width 1 38 | bspc config window_gap 16 39 | bspc config border_radius 6 40 | 41 | # Configure colors 42 | . "${HOME}/.colors/active/active.sh" 43 | bspc config normal_border_color $color1 44 | bspc config focused_border_color $color2 45 | bspc config presel_feedback_color $color3 46 | 47 | 48 | bspc config split_ratio 0.50 49 | bspc config borderless_monocle true 50 | bspc config gapless_monocle true 51 | 52 | #bspc rule -a Gimp desktop='^8' state=floating follow=on 53 | #bspc rule -a Chromium desktop='^2' 54 | #bspc rule -a mplayer2 state=floating 55 | #bspc rule -a Kupfer.py focus=on 56 | #bspc rule -a Screenkey manage=off 57 | bspc rule -a feh state=floating center=true rectangle=1600x900+0+0 58 | 59 | #obs & 60 | if [[ -f ~/startup.lock ]]; then 61 | /home/gabe/bin/startup/start 62 | fi 63 | 64 | rm -f ~/startup.lock 65 | 66 | bspc rule -a kitty state=tiled center=true rectangle=1000x800+0+0 67 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/toggleterm.lua: -------------------------------------------------------------------------------- 1 | local status_ok, toggleterm = pcall(require, "toggleterm") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | toggleterm.setup({ 7 | size = 20, 8 | open_mapping = [[]], 9 | hide_numbers = true, 10 | shade_filetypes = {}, 11 | shade_terminals = true, 12 | shading_factor = 2, 13 | start_in_insert = true, 14 | insert_mappings = true, 15 | persist_size = true, 16 | direction = "float", 17 | close_on_exit = true, 18 | shell = vim.o.shell, 19 | float_opts = { 20 | border = "curved", 21 | winblend = 0, 22 | highlights = { 23 | border = "Normal", 24 | background = "Normal", 25 | }, 26 | }, 27 | }) 28 | 29 | function _G.set_terminal_keymaps() 30 | local opts = {noremap = true} 31 | vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) 32 | vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[]], opts) 33 | vim.api.nvim_buf_set_keymap(0, 't', '', [[h]], opts) 34 | vim.api.nvim_buf_set_keymap(0, 't', '', [[j]], opts) 35 | vim.api.nvim_buf_set_keymap(0, 't', '', [[k]], opts) 36 | vim.api.nvim_buf_set_keymap(0, 't', '', [[l]], opts) 37 | end 38 | 39 | vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') 40 | 41 | local Terminal = require("toggleterm.terminal").Terminal 42 | local lazygit = Terminal:new({ cmd = "lazygit", hidden = true }) 43 | 44 | function _LAZYGIT_TOGGLE() 45 | lazygit:toggle() 46 | end 47 | 48 | local node = Terminal:new({ cmd = "node", hidden = true }) 49 | 50 | function _NODE_TOGGLE() 51 | node:toggle() 52 | end 53 | 54 | local ncdu = Terminal:new({ cmd = "ncdu", hidden = true }) 55 | 56 | function _NCDU_TOGGLE() 57 | ncdu:toggle() 58 | end 59 | 60 | local htop = Terminal:new({ cmd = "htop", hidden = true }) 61 | 62 | function _HTOP_TOGGLE() 63 | htop:toggle() 64 | end 65 | 66 | local python = Terminal:new({ cmd = "python", hidden = true }) 67 | 68 | function _PYTHON_TOGGLE() 69 | python:toggle() 70 | end 71 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/project.lua: -------------------------------------------------------------------------------- 1 | local status_ok, project = pcall(require, "project_nvim") 2 | if not status_ok then 3 | return 4 | end 5 | project.setup({ 6 | ---@usage set to false to disable project.nvim. 7 | --- This is on by default since it's currently the expected behavior. 8 | active = true, 9 | 10 | on_config_done = nil, 11 | 12 | ---@usage set to true to disable setting the current-woriking directory 13 | --- Manual mode doesn't automatically change your root directory, so you have 14 | --- the option to manually do so using `:ProjectRoot` command. 15 | manual_mode = false, 16 | 17 | ---@usage Methods of detecting the root directory 18 | --- Allowed values: **"lsp"** uses the native neovim lsp 19 | --- **"pattern"** uses vim-rooter like glob pattern matching. Here 20 | --- order matters: if one is not detected, the other is used as fallback. You 21 | --- can also delete or rearangne the detection methods. 22 | -- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project 23 | detection_methods = { "pattern" }, 24 | 25 | ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods 26 | patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, 27 | 28 | ---@ Show hidden files in telescope when searching for files in a project 29 | show_hidden = false, 30 | 31 | ---@usage When set to false, you will get a message when project.nvim changes your directory. 32 | -- When set to false, you will get a message when project.nvim changes your directory. 33 | silent_chdir = true, 34 | 35 | ---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... } 36 | ignore_lsp = {}, 37 | 38 | ---@type string 39 | ---@usage path to store the project history for use in telescope 40 | datapath = vim.fn.stdpath("data"), 41 | }) 42 | 43 | local tele_status_ok, telescope = pcall(require, "telescope") 44 | if not tele_status_ok then 45 | return 46 | end 47 | 48 | telescope.load_extension('projects') 49 | -------------------------------------------------------------------------------- /bin/booksplit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Requires ffmpeg (audio splitting) and my `tag` wrapper script. 4 | 5 | [ ! -f "$2" ] && printf "The first file should be the audio, the second should be the timecodes.\\n" && exit 6 | 7 | echo "Enter the album/book title:"; read -r booktitle 8 | 9 | echo "Enter the artist/author:"; read -r author 10 | 11 | echo "Enter the publication year:"; read -r year 12 | 13 | inputaudio="$1" 14 | 15 | # Get a safe file name from the book. 16 | escbook="$(echo "$booktitle" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")" 17 | 18 | ! mkdir -p "$escbook" && echo "Do you have write access in this directory?" && exit 1 19 | 20 | # As long as the extension is in the tag script, it'll work. 21 | ext="mp3" 22 | #ext="${1#*.}" 23 | 24 | # Get the total number of tracks from the number of lines. 25 | total="$(wc -l < "$2")" 26 | 27 | while read -r x; 28 | do 29 | end="$(echo "$x" | cut -d' ' -f1)" 30 | 31 | [ -n "$start" ] && 32 | echo "From $start to $end; $track $title" 33 | file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext" 34 | [ -n "$start" ] && echo "Splitting \"$title\"..." && 35 | ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -to "$end" -vn -c copy "$file" && 36 | echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file" 37 | title="$(echo "$x" | cut -d' ' -f 2-)" 38 | esctitle="$(echo "$title" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")" 39 | echo "$title $esctitle" 40 | track="$((track+1))" 41 | start="$end" 42 | done < "$2" 43 | # The last track must be done outside the loop. 44 | echo "From $start to the end: $title" 45 | file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext" 46 | echo "Splitting \"$title\"..." && ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -vn -c copy "$file" && 47 | echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file" 48 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/indentline.lua: -------------------------------------------------------------------------------- 1 | local status_ok, indent_blankline = pcall(require, "indent_blankline") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | vim.g.indent_blankline_buftype_exclude = { "terminal", "nofile" } 7 | vim.g.indent_blankline_filetype_exclude = { 8 | "help", 9 | "startify", 10 | "dashboard", 11 | "packer", 12 | "neogitstatus", 13 | "NvimTree", 14 | "Trouble", 15 | } 16 | vim.g.indentLine_enabled = 1 17 | -- vim.g.indent_blankline_char = "│" 18 | vim.g.indent_blankline_char = "▏" 19 | -- vim.g.indent_blankline_char = "▎" 20 | vim.g.indent_blankline_show_trailing_blankline_indent = false 21 | vim.g.indent_blankline_show_first_indent_level = true 22 | vim.g.indent_blankline_use_treesitter = true 23 | vim.g.indent_blankline_show_current_context = true 24 | vim.g.indent_blankline_context_patterns = { 25 | "class", 26 | "return", 27 | "function", 28 | "method", 29 | "^if", 30 | "^while", 31 | "jsx_element", 32 | "^for", 33 | "^object", 34 | "^table", 35 | "block", 36 | "arguments", 37 | "if_statement", 38 | "else_clause", 39 | "jsx_element", 40 | "jsx_self_closing_element", 41 | "try_statement", 42 | "catch_clause", 43 | "import_statement", 44 | "operation_type", 45 | } 46 | -- HACK: work-around for https://github.com/lukas-reineke/indent-blankline.nvim/issues/59 47 | vim.wo.colorcolumn = "99999" 48 | 49 | -- vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] 50 | -- vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] 51 | -- vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] 52 | -- vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] 53 | -- vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] 54 | -- vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] 55 | -- vim.opt.list = true 56 | -- vim.opt.listchars:append "space:⋅" 57 | -- vim.opt.listchars:append "space:" 58 | -- vim.opt.listchars:append "eol:↴" 59 | 60 | indent_blankline.setup({ 61 | -- show_end_of_line = true, 62 | -- space_char_blankline = " ", 63 | show_current_context = true, 64 | -- show_current_context_start = true, 65 | -- char_highlight_list = { 66 | -- "IndentBlanklineIndent1", 67 | -- "IndentBlanklineIndent2", 68 | -- "IndentBlanklineIndent3", 69 | -- }, 70 | }) 71 | -------------------------------------------------------------------------------- /.config/polybar/glyphs.ini: -------------------------------------------------------------------------------- 1 | ;; ┌────────────────────────────────────────────────────────────┐ 2 | ;; │░█▀█░█▀█░█░░░█░█░█▀▄░█▀█░█▀▄░░░░░░░░░█▀▀░█░░░█░█░█▀█░█░█░█▀▀│ 3 | ;; │░█▀▀░█░█░█░░░░█░░█▀▄░█▀█░█▀▄░░░░▀░░░░█░█░█░░░░█░░█▀▀░█▀█░▀▀█│ 4 | ;; │░▀░░░▀▀▀░▀▀▀░░▀░░▀▀░░▀░▀░▀░▀░░░░▀░░░░▀▀▀░▀▀▀░░▀░░▀░░░▀░▀░▀▀▀│ 5 | ;; │░Created░By░Aditya░Shakya░@adi1090x░░░░░░░░░░░░░░░░░░░░░░░░░│ 6 | ;; └────────────────────────────────────────────────────────────┘ 7 | 8 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 9 | 10 | [glyph] 11 | gleft =  12 | gright =  13 | 14 | [module/left1] 15 | type = custom/text 16 | content-background = ${colors.shade2} 17 | content-foreground = ${colors.shade1} 18 | content = ${glyph.gleft} 19 | content-font = 2 20 | 21 | [module/left2] 22 | type = custom/text 23 | content-background = ${colors.background} 24 | content-foreground = ${colors.shade8} 25 | content = ${glyph.gleft} 26 | content-font = 2 27 | 28 | # ================================== 29 | 30 | [module/right1] 31 | type = custom/text 32 | content-background = ${colors.shade2} 33 | content-foreground = ${colors.shade1} 34 | content = ${glyph.gright} 35 | content-font = 2 36 | 37 | [module/right2] 38 | type = custom/text 39 | content-background = ${colors.shade3} 40 | content-foreground = ${colors.shade2} 41 | content = ${glyph.gright} 42 | content-font = 2 43 | 44 | [module/right3] 45 | type = custom/text 46 | content-background = ${colors.shade4} 47 | content-foreground = ${colors.shade3} 48 | content = ${glyph.gright} 49 | content-font = 2 50 | 51 | [module/right4] 52 | type = custom/text 53 | content-background = ${colors.shade5} 54 | content-foreground = ${colors.shade4} 55 | content = ${glyph.gright} 56 | content-font = 2 57 | 58 | [module/right5] 59 | type = custom/text 60 | content-background = ${colors.shade6} 61 | content-foreground = ${colors.shade5} 62 | content = ${glyph.gright} 63 | content-font = 2 64 | 65 | [module/right6] 66 | type = custom/text 67 | content-background = ${colors.shade7} 68 | content-foreground = ${colors.shade6} 69 | content = ${glyph.gright} 70 | content-font = 2 71 | 72 | [module/right7] 73 | type = custom/text 74 | content-background = ${colors.background} 75 | content-foreground = ${colors.shade7} 76 | content = ${glyph.gright} 77 | content-font = 2 78 | 79 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 80 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/keymaps.lua: -------------------------------------------------------------------------------- 1 | local opts = { noremap = true, silent = true } 2 | 3 | local term_opts = { silent = true } 4 | 5 | -- Shorten function name 6 | local keymap = vim.api.nvim_set_keymap 7 | 8 | --Remap space as leader key 9 | keymap("", "", "", opts) 10 | vim.g.mapleader = " " 11 | vim.g.maplocalleader = " " 12 | 13 | -- Modes 14 | -- normal_mode = "n", 15 | -- insert_mode = "i", 16 | -- visual_mode = "v", 17 | -- visual_block_mode = "x", 18 | -- term_mode = "t", 19 | -- command_mode = "c", 20 | 21 | -- Normal -- 22 | -- Better window navigation 23 | keymap("n", "", "h", opts) 24 | keymap("n", "", "j", opts) 25 | keymap("n", "", "k", opts) 26 | keymap("n", "", "l", opts) 27 | 28 | -- Resize with arrows 29 | keymap("n", "", ":resize -2", opts) 30 | keymap("n", "", ":resize +2", opts) 31 | keymap("n", "", ":vertical resize -2", opts) 32 | keymap("n", "", ":vertical resize +2", opts) 33 | 34 | -- Navigate buffers 35 | keymap("n", "", ":bnext", opts) 36 | keymap("n", "", ":bprevious", opts) 37 | 38 | -- Move text up and down 39 | keymap("n", "", ":m .+1==gi", opts) 40 | keymap("n", "", ":m .-2==gi", opts) 41 | 42 | -- Insert -- 43 | -- Press jk fast to enter 44 | keymap("i", "jk", "", opts) 45 | keymap("i", "kj", "", opts) 46 | 47 | -- Visual -- 48 | -- Stay in indent mode 49 | keymap("v", "<", "", ">gv", opts) 51 | 52 | -- Move text up and down 53 | keymap("v", "", ":m .+1==", opts) 54 | keymap("v", "", ":m .-2==", opts) 55 | keymap("n", "", ":m .+1==", opts) 56 | keymap("n", "", ":m .-2==", opts) 57 | keymap("v", "p", '"_dP', opts) 58 | 59 | -- Visual Block -- 60 | -- Move text up and down 61 | keymap("x", "J", ":move '>+1gv-gv", opts) 62 | keymap("x", "K", ":move '<-2gv-gv", opts) 63 | keymap("x", "", ":move '>+1gv-gv", opts) 64 | keymap("x", "", ":move '<-2gv-gv", opts) 65 | 66 | -- Terminal -- 67 | -- Better terminal navigation 68 | -- keymap("t", "", "h", term_opts) 69 | -- keymap("t", "", "j", term_opts) 70 | -- keymap("t", "", "k", term_opts) 71 | -- keymap("t", "", "l", term_opts) 72 | 73 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lualine.lua: -------------------------------------------------------------------------------- 1 | local status_ok, lualine = pcall(require, "lualine") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local hide_in_width = function() 7 | return vim.fn.winwidth(0) > 80 8 | end 9 | 10 | local diagnostics = { 11 | "diagnostics", 12 | sources = { "nvim_diagnostic" }, 13 | sections = { "error", "warn" }, 14 | symbols = { error = " ", warn = " " }, 15 | colored = false, 16 | update_in_insert = false, 17 | always_visible = true, 18 | } 19 | 20 | local diff = { 21 | "diff", 22 | colored = false, 23 | symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols 24 | cond = hide_in_width 25 | } 26 | 27 | local mode = { 28 | "mode", 29 | fmt = function(str) 30 | return "-- " .. str .. " --" 31 | end, 32 | } 33 | 34 | local filetype = { 35 | "filetype", 36 | icons_enabled = false, 37 | icon = nil, 38 | } 39 | 40 | local branch = { 41 | "branch", 42 | icons_enabled = true, 43 | icon = "", 44 | } 45 | 46 | local location = { 47 | "location", 48 | padding = 0, 49 | } 50 | 51 | -- cool function for progress 52 | local progress = function() 53 | local current_line = vim.fn.line(".") 54 | local total_lines = vim.fn.line("$") 55 | local chars = { "__", "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" } 56 | local line_ratio = current_line / total_lines 57 | local index = math.ceil(line_ratio * #chars) 58 | return chars[index] 59 | end 60 | 61 | local spaces = function() 62 | return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth") 63 | end 64 | 65 | lualine.setup({ 66 | options = { 67 | icons_enabled = true, 68 | theme = "auto", 69 | component_separators = { left = "", right = "" }, 70 | section_separators = { left = "", right = "" }, 71 | disabled_filetypes = { "alpha", "dashboard", "NvimTree", "Outline" }, 72 | always_divide_middle = true, 73 | }, 74 | sections = { 75 | lualine_a = { branch, diagnostics }, 76 | lualine_b = { mode }, 77 | lualine_c = {}, 78 | -- lualine_x = { "encoding", "fileformat", "filetype" }, 79 | lualine_x = { diff, spaces, "encoding", filetype }, 80 | lualine_y = { location }, 81 | lualine_z = { progress }, 82 | }, 83 | inactive_sections = { 84 | lualine_a = {}, 85 | lualine_b = {}, 86 | lualine_c = { "filename" }, 87 | lualine_x = { "location" }, 88 | lualine_y = {}, 89 | lualine_z = {}, 90 | }, 91 | tabline = {}, 92 | extensions = {}, 93 | }) 94 | -------------------------------------------------------------------------------- /.config/polybar/powermenu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ## Author : Aditya Shakya 4 | ## Mail : adi1090x@gmail.com 5 | ## Github : @adi1090x 6 | ## Twitter : @adi1090x 7 | 8 | dir="~/.config/polybar/rofi" 9 | uptime=$(uptime -p | sed -e 's/up //g') 10 | 11 | rofi_command="rofi -theme $dir/powermenu.rasi" 12 | 13 | # Options 14 | shutdown=" Shutdown" 15 | reboot=" Restart" 16 | lock=" Lock" 17 | suspend=" Sleep" 18 | logout=" Logout" 19 | 20 | # Confirmation 21 | # confirm_exit() { 22 | # rofi -dmenu\ 23 | # -i\ 24 | # -no-fixed-num-lines\ 25 | # -p "Are You Sure? : "\ 26 | # -theme $dir/confirm.rasi 27 | # } 28 | 29 | confirm_exit() { 30 | echo "yes" 31 | } 32 | 33 | # Message 34 | msg() { 35 | rofi -theme "$dir/message.rasi" -e "Available Options - yes / y / no / n" 36 | } 37 | 38 | # Variable passed to rofi 39 | options="$lock\n$suspend\n$logout\n$reboot\n$shutdown" 40 | 41 | chosen="$(echo -e "$options" | $rofi_command -p "Uptime: $uptime" -dmenu -selected-row 0)" 42 | case $chosen in 43 | $shutdown) 44 | ans=$(confirm_exit &) 45 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 46 | systemctl poweroff 47 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 48 | exit 0 49 | else 50 | msg 51 | fi 52 | ;; 53 | $reboot) 54 | ans=$(confirm_exit &) 55 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 56 | systemctl reboot 57 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 58 | exit 0 59 | else 60 | msg 61 | fi 62 | ;; 63 | $lock) 64 | if [[ -f /usr/bin/i3lock ]]; then 65 | slock 66 | elif [[ -f /usr/bin/betterlockscreen ]]; then 67 | betterlockscreen -l 68 | fi 69 | ;; 70 | $suspend) 71 | ans=$(confirm_exit &) 72 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 73 | mpc -q pause 74 | amixer set Master mute 75 | systemctl suspend 76 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 77 | exit 0 78 | else 79 | msg 80 | fi 81 | ;; 82 | $logout) 83 | ans=$(confirm_exit &) 84 | if [[ $ans == "yes" || $ans == "YES" || $ans == "y" || $ans == "Y" ]]; then 85 | if [[ "$DESKTOP_SESSION" == "Openbox" ]]; then 86 | openbox --exit 87 | elif [[ "$DESKTOP_SESSION" == "bspwm" ]]; then 88 | bspc quit 89 | elif [[ "$DESKTOP_SESSION" == "i3" ]]; then 90 | i3-msg exit 91 | fi 92 | elif [[ $ans == "no" || $ans == "NO" || $ans == "n" || $ans == "N" ]]; then 93 | exit 0 94 | else 95 | msg 96 | fi 97 | ;; 98 | esac 99 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/nvim-tree.lua: -------------------------------------------------------------------------------- 1 | -- following options are the default 2 | -- each of these are documented in `:help nvim-tree.OPTION_NAME` 3 | vim.g.nvim_tree_icons = { 4 | default = "", 5 | symlink = "", 6 | git = { 7 | unstaged = "", 8 | staged = "S", 9 | unmerged = "", 10 | renamed = "➜", 11 | deleted = "", 12 | untracked = "U", 13 | ignored = "◌", 14 | }, 15 | folder = { 16 | default = "", 17 | open = "", 18 | empty = "", 19 | empty_open = "", 20 | symlink = "", 21 | }, 22 | } 23 | 24 | local status_ok, nvim_tree = pcall(require, "nvim-tree") 25 | if not status_ok then 26 | return 27 | end 28 | 29 | local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") 30 | if not config_status_ok then 31 | return 32 | end 33 | 34 | local tree_cb = nvim_tree_config.nvim_tree_callback 35 | 36 | nvim_tree.setup { 37 | disable_netrw = true, 38 | hijack_netrw = true, 39 | open_on_setup = false, 40 | ignore_ft_on_setup = { 41 | "startify", 42 | "dashboard", 43 | "alpha", 44 | }, 45 | auto_close = true, 46 | open_on_tab = false, 47 | hijack_cursor = false, 48 | update_cwd = true, 49 | update_to_buf_dir = { 50 | enable = true, 51 | auto_open = true, 52 | }, 53 | diagnostics = { 54 | enable = true, 55 | icons = { 56 | hint = "", 57 | info = "", 58 | warning = "", 59 | error = "", 60 | }, 61 | }, 62 | update_focused_file = { 63 | enable = true, 64 | update_cwd = true, 65 | ignore_list = {}, 66 | }, 67 | system_open = { 68 | cmd = nil, 69 | args = {}, 70 | }, 71 | filters = { 72 | dotfiles = false, 73 | custom = {}, 74 | }, 75 | git = { 76 | enable = true, 77 | ignore = true, 78 | timeout = 500, 79 | }, 80 | view = { 81 | width = 30, 82 | height = 30, 83 | hide_root_folder = false, 84 | side = "left", 85 | auto_resize = true, 86 | mappings = { 87 | custom_only = false, 88 | list = { 89 | { key = { "l", "", "o" }, cb = tree_cb "edit" }, 90 | { key = "h", cb = tree_cb "close_node" }, 91 | { key = "v", cb = tree_cb "vsplit" }, 92 | { key = "s", cb = tree_cb "split" } 93 | }, 94 | }, 95 | number = false, 96 | relativenumber = false, 97 | }, 98 | trash = { 99 | cmd = "trash", 100 | require_confirm = true, 101 | }, 102 | quit_on_open = 0, 103 | git_hl = 1, 104 | disable_window_picker = 0, 105 | root_folder_modifier = ":t", 106 | show_icons = { 107 | git = 1, 108 | folders = 1, 109 | files = 1, 110 | folder_arrows = 1, 111 | tree_width = 30, 112 | }, 113 | } 114 | -------------------------------------------------------------------------------- /.xbindkeysrc: -------------------------------------------------------------------------------- 1 | # For the benefit of emacs users: -*- shell-script -*- 2 | ########################### 3 | # xbindkeys configuration # 4 | ########################### 5 | 6 | "mpc prev" 7 | Mod4 + F10 8 | 9 | "mpc next" 10 | Mod4 + F11 11 | #XF86Favorites 12 | 13 | "mpc toggle" 14 | Mod4 + F9 15 | #XF86AudioMicMute 16 | 17 | "/home/gabe/bin/kbltoggle" 18 | Mod4 + F7 19 | #XF86Display 20 | 21 | "xbacklight -inc 10" 22 | Mod4 + F6 23 | #XF86MonBrightnessUp 24 | 25 | "xbacklight -dec 10" 26 | Mod4 + F5 27 | #XF86MonBrightnessDown 28 | 29 | # Increase volume 30 | "amixer set Master 2%+" 31 | Mod4 + F3 32 | #XF86AudioRaiseVolume 33 | # Decrease volume 34 | "amixer set Master 2%-" 35 | Mod4 + F2 36 | #XF86AudioLowerVolume 37 | # Mute volume 38 | "pactl set-sink-mute @DEFAULT_SINK@ toggle" 39 | Mod4 + F1 40 | #XF86AudioMute 41 | 42 | # 43 | # Version: 1.8.7 44 | # 45 | # If you edit this file, do not forget to uncomment any lines 46 | # that you change. 47 | # The pound(#) symbol may be used anywhere for comments. 48 | # 49 | # To specify a key, you can use 'xbindkeys --key' or 50 | # 'xbindkeys --multikey' and put one of the two lines in this file. 51 | # 52 | # The format of a command line is: 53 | # "command to start" 54 | # associated key 55 | # 56 | # 57 | # A list of keys is in /usr/include/X11/keysym.h and in 58 | # /usr/include/X11/keysymdef.h 59 | # The XK_ is not needed. 60 | # 61 | # List of modifier: 62 | # Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock), 63 | # Mod3 (CapsLock), Mod4, Mod5 (Scroll). 64 | # 65 | 66 | # The release modifier is not a standard X modifier, but you can 67 | # use it if you want to catch release events instead of press events 68 | 69 | # By defaults, xbindkeys does not pay attention with the modifiers 70 | # NumLock, CapsLock and ScrollLock. 71 | # Uncomment the lines above if you want to pay attention to them. 72 | 73 | #keystate_numlock = enable 74 | #keystate_capslock = enable 75 | #keystate_scrolllock= enable 76 | 77 | # Examples of commands: 78 | 79 | #"xbindkeys_show" 80 | # control+shift + q 81 | 82 | # set directly keycode (here control + f with my keyboard) 83 | #"xterm" 84 | # c:41 + m:0x4 85 | 86 | # specify a mouse button 87 | #"xterm" 88 | # control + b:2 89 | 90 | #"xterm -geom 50x20+20+20" 91 | # Shift+Mod2+alt + s 92 | # 93 | ## set directly keycode (here control+alt+mod2 + f with my keyboard) 94 | #"xterm" 95 | # alt + c:0x29 + m:4 + mod2 96 | # 97 | ## Control+Shift+a release event starts rxvt 98 | #"rxvt" 99 | # release+control+shift + a 100 | # 101 | ## Control + mouse button 2 release event starts rxvt 102 | #"rxvt" 103 | # Control + b:2 + Release 104 | 105 | ################################## 106 | # End of xbindkeys configuration # 107 | ################################## 108 | -------------------------------------------------------------------------------- /.config/ranger/commands.py: -------------------------------------------------------------------------------- 1 | # This is a sample commands.py. You can add your own commands here. 2 | # 3 | # Please refer to commands_full.py for all the default commands and a complete 4 | # documentation. Do NOT add them all here, or you may end up with defunct 5 | # commands when upgrading ranger. 6 | 7 | # A simple command for demonstration purposes follows. 8 | # ----------------------------------------------------------------------------- 9 | 10 | from __future__ import (absolute_import, division, print_function) 11 | 12 | # You can import any python module as needed. 13 | import os 14 | 15 | # You always need to import ranger.api.commands here to get the Command class: 16 | from ranger.api.commands import Command 17 | 18 | 19 | # Any class that is a subclass of "Command" will be integrated into ranger as a 20 | # command. Try typing ":my_edit" in ranger! 21 | class my_edit(Command): 22 | # The so-called doc-string of the class will be visible in the built-in 23 | # help that is accessible by typing "?c" inside ranger. 24 | """:my_edit 25 | 26 | A sample command for demonstration purposes that opens a file in an editor. 27 | """ 28 | 29 | # The execute method is called when you run this command in ranger. 30 | def execute(self): 31 | # self.arg(1) is the first (space-separated) argument to the function. 32 | # This way you can write ":my_edit somefilename". 33 | if self.arg(1): 34 | # self.rest(1) contains self.arg(1) and everything that follows 35 | target_filename = self.rest(1) 36 | else: 37 | # self.fm is a ranger.core.filemanager.FileManager object and gives 38 | # you access to internals of ranger. 39 | # self.fm.thisfile is a ranger.container.file.File object and is a 40 | # reference to the currently selected file. 41 | target_filename = self.fm.thisfile.path 42 | 43 | # This is a generic function to print text in ranger. 44 | self.fm.notify("Let's edit the file " + target_filename + "!") 45 | 46 | # Using bad=True in fm.notify allows you to print error messages: 47 | if not os.path.exists(target_filename): 48 | self.fm.notify("The given file does not exist!", bad=True) 49 | return 50 | 51 | # This executes a function from ranger.core.acitons, a module with a 52 | # variety of subroutines that can help you construct commands. 53 | # Check out the source, or run "pydoc ranger.core.actions" for a list. 54 | self.fm.edit_file(target_filename) 55 | 56 | # The tab method is called when you press tab, and should return a list of 57 | # suggestions that the user will tab through. 58 | # tabnum is 1 for and -1 for by default 59 | def tab(self, tabnum): 60 | # This is a generic tab-completion function that iterates through the 61 | # content of the current directory. 62 | return self._tab_directory_content() 63 | -------------------------------------------------------------------------------- /.config/touchegg/touchegg.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 150 11 | 12 | 20 | 20 21 | 22 | 35 | auto 36 | auto 37 | 38 | 39 | 42 | 43 | 44 | 45 | false 46 | Super_L 47 | Tab 48 | begin 49 | 50 | 51 | 52 | 53 | 54 | false 55 | Super_L 56 | Shift_L+Tab 57 | begin 58 | 59 | 60 | 61 | 62 | 63 | false 64 | Super_L 65 | space 66 | begin 67 | 68 | 69 | 70 | 71 | 72 | 75 | 76 | 77 | 78 | 79 | true 80 | Control_L 81 | KP_Subtract 82 | KP_Add 83 | 84 | 85 | 86 | 87 | 88 | true 89 | Control_L 90 | KP_Add 91 | KP_Subtract 92 | 93 | 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/options.lua: -------------------------------------------------------------------------------- 1 | local options = { 2 | backup = false, -- creates a backup file 3 | clipboard = "unnamedplus", -- allows neovim to access the system clipboard 4 | cmdheight = 2, -- more space in the neovim command line for displaying messages 5 | completeopt = { "menuone", "noselect" }, -- mostly just for cmp 6 | conceallevel = 0, -- so that `` is visible in markdown files 7 | fileencoding = "utf-8", -- the encoding written to a file 8 | hlsearch = true, -- highlight all matches on previous search pattern 9 | ignorecase = true, -- ignore case in search patterns 10 | mouse = "a", -- allow the mouse to be used in neovim 11 | pumheight = 10, -- pop up menu height 12 | showmode = false, -- we don't need to see things like -- INSERT -- anymore 13 | showtabline = 2, -- always show tabs 14 | smartcase = true, -- smart case 15 | smartindent = true, -- make indenting smarter again 16 | splitbelow = true, -- force all horizontal splits to go below current window 17 | splitright = true, -- force all vertical splits to go to the right of current window 18 | swapfile = false, -- creates a swapfile 19 | termguicolors = true, -- set term gui colors (most terminals support this) 20 | timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds) 21 | undofile = true, -- enable persistent undo 22 | updatetime = 300, -- faster completion (4000ms default) 23 | 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 24 | expandtab = true, -- convert tabs to spaces 25 | shiftwidth = 2, -- the number of spaces inserted for each indentation 26 | tabstop = 2, -- insert 4 spaces for a tab 27 | cursorline = true, -- highlight the current line 28 | number = true, -- set numbered lines 29 | relativenumber = false, -- set relative numbered lines 30 | numberwidth = 2, -- set number column width to 2 {default 4} 31 | signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time 32 | wrap = false, -- display lines as one long line 33 | scrolloff = 8, -- is one of my fav 34 | sidescrolloff = 8, 35 | guifont = "monospace:h17", -- the font used in graphical neovim applications 36 | } 37 | 38 | vim.opt.shortmess:append "c" 39 | 40 | for k, v in pairs(options) do 41 | vim.opt[k] = v 42 | end 43 | 44 | --vim.cmd "set whichwrap+=<,>,[,],h,l" 45 | vim.cmd [[set iskeyword+=-]] 46 | --vim.cmd [[set formatoptions-=cro]] -- TODO: this doesn't seem to work 47 | 48 | -- Vim jump to the last position when reopening a file 49 | vim.cmd [[if has("autocmd") 50 | au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif 51 | endif]] 52 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/telescope.lua: -------------------------------------------------------------------------------- 1 | local status_ok, telescope = pcall(require, "telescope") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local actions = require "telescope.actions" 7 | 8 | telescope.setup { 9 | defaults = { 10 | 11 | prompt_prefix = " ", 12 | selection_caret = " ", 13 | path_display = { "smart" }, 14 | 15 | mappings = { 16 | i = { 17 | [""] = actions.cycle_history_next, 18 | [""] = actions.cycle_history_prev, 19 | 20 | [""] = actions.move_selection_next, 21 | [""] = actions.move_selection_previous, 22 | 23 | [""] = actions.close, 24 | 25 | [""] = actions.move_selection_next, 26 | [""] = actions.move_selection_previous, 27 | 28 | [""] = actions.select_default, 29 | [""] = actions.select_horizontal, 30 | [""] = actions.select_vertical, 31 | [""] = actions.select_tab, 32 | 33 | [""] = actions.preview_scrolling_up, 34 | [""] = actions.preview_scrolling_down, 35 | 36 | [""] = actions.results_scrolling_up, 37 | [""] = actions.results_scrolling_down, 38 | 39 | [""] = actions.toggle_selection + actions.move_selection_worse, 40 | [""] = actions.toggle_selection + actions.move_selection_better, 41 | [""] = actions.send_to_qflist + actions.open_qflist, 42 | [""] = actions.send_selected_to_qflist + actions.open_qflist, 43 | [""] = actions.complete_tag, 44 | [""] = actions.which_key, -- keys from pressing 45 | }, 46 | 47 | n = { 48 | [""] = actions.close, 49 | [""] = actions.select_default, 50 | [""] = actions.select_horizontal, 51 | [""] = actions.select_vertical, 52 | [""] = actions.select_tab, 53 | 54 | [""] = actions.toggle_selection + actions.move_selection_worse, 55 | [""] = actions.toggle_selection + actions.move_selection_better, 56 | [""] = actions.send_to_qflist + actions.open_qflist, 57 | [""] = actions.send_selected_to_qflist + actions.open_qflist, 58 | 59 | ["j"] = actions.move_selection_next, 60 | ["k"] = actions.move_selection_previous, 61 | ["H"] = actions.move_to_top, 62 | ["M"] = actions.move_to_middle, 63 | ["L"] = actions.move_to_bottom, 64 | 65 | [""] = actions.move_selection_next, 66 | [""] = actions.move_selection_previous, 67 | ["gg"] = actions.move_to_top, 68 | ["G"] = actions.move_to_bottom, 69 | 70 | [""] = actions.preview_scrolling_up, 71 | [""] = actions.preview_scrolling_down, 72 | 73 | [""] = actions.results_scrolling_up, 74 | [""] = actions.results_scrolling_down, 75 | 76 | ["?"] = actions.which_key, 77 | }, 78 | }, 79 | }, 80 | pickers = { 81 | -- Default configuration for builtin pickers goes here: 82 | -- picker_name = { 83 | -- picker_config_key = value, 84 | -- ... 85 | -- } 86 | -- Now the picker_config_key will be applied every time you call this 87 | -- builtin picker 88 | }, 89 | extensions = { 90 | -- Your extension configuration goes here: 91 | -- extension_name = { 92 | -- extension_config_key = value, 93 | -- } 94 | -- please take a look at the readme of the extension you want to configure 95 | }, 96 | } 97 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/plugins.lua: -------------------------------------------------------------------------------- 1 | local fn = vim.fn 2 | 3 | -- Automatically install packer 4 | local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim" 5 | if fn.empty(fn.glob(install_path)) > 0 then 6 | PACKER_BOOTSTRAP = fn.system { 7 | "git", 8 | "clone", 9 | "--depth", 10 | "1", 11 | "https://github.com/wbthomason/packer.nvim", 12 | install_path, 13 | } 14 | print "Installing packer close and reopen Neovim..." 15 | vim.cmd [[packadd packer.nvim]] 16 | end 17 | 18 | -- Autocommand that reloads neovim whenever you save the plugins.lua file 19 | vim.cmd [[ 20 | augroup packer_user_config 21 | autocmd! 22 | autocmd BufWritePost plugins.lua source | PackerSync 23 | augroup end 24 | ]] 25 | 26 | -- Use a protected call so we don't error out on first use 27 | local status_ok, packer = pcall(require, "packer") 28 | if not status_ok then 29 | return 30 | end 31 | 32 | -- Have packer use a popup window 33 | packer.init { 34 | display = { 35 | open_fn = function() 36 | return require("packer.util").float { border = "rounded" } 37 | end, 38 | }, 39 | } 40 | 41 | -- Install your plugins here 42 | return packer.startup(function(use) 43 | -- My plugins here 44 | 45 | 46 | 47 | 48 | 49 | 50 | use "wbthomason/packer.nvim" -- Have packer manage itself 51 | 52 | use "nvim-lua/popup.nvim" -- An implementation of the Popup API from vim in Neovim 53 | use "nvim-lua/plenary.nvim" -- Useful lua functions used ny lots of plugins 54 | use "windwp/nvim-autopairs" -- Autopairs, integrates with both cmp and treesitter 55 | use "numToStr/Comment.nvim" -- Easily comment stuff 56 | use "kyazdani42/nvim-web-devicons" 57 | use "kyazdani42/nvim-tree.lua" 58 | use "akinsho/bufferline.nvim" 59 | use "moll/vim-bbye" 60 | use "nvim-lualine/lualine.nvim" 61 | use "akinsho/toggleterm.nvim" 62 | use "ahmedkhalf/project.nvim" 63 | use "lewis6991/impatient.nvim" 64 | use "lukas-reineke/indent-blankline.nvim" 65 | use "goolord/alpha-nvim" 66 | use "antoinemadec/FixCursorHold.nvim" -- This is needed to fix lsp doc highlight 67 | use "folke/which-key.nvim" 68 | 69 | -- Colorschemes 70 | use "lunarvim/colorschemes" -- A bunch of colorschemes you can try out 71 | use "folke/tokyonight.nvim" 72 | use "Mofiqul/dracula.nvim" 73 | -- use "lunarvim/darkplus.nvim" 74 | 75 | -- cmp plugins 76 | use "hrsh7th/nvim-cmp" -- The completion plugin 77 | use "hrsh7th/cmp-buffer" -- buffer completions 78 | use "hrsh7th/cmp-path" -- path completions 79 | use "hrsh7th/cmp-cmdline" -- cmdline completions 80 | use "saadparwaiz1/cmp_luasnip" -- snippet completions 81 | use "hrsh7th/cmp-nvim-lsp" 82 | 83 | -- snippets 84 | use "L3MON4D3/LuaSnip" --snippet engine 85 | use "rafamadriz/friendly-snippets" -- a bunch of snippets to use 86 | 87 | -- LSP 88 | use "neovim/nvim-lspconfig" -- enable LSP 89 | use "williamboman/nvim-lsp-installer" -- simple to use language server installer 90 | use "tamago324/nlsp-settings.nvim" -- language server settings defined in json for 91 | use "jose-elias-alvarez/null-ls.nvim" -- for formatters and linters 92 | 93 | -- Telescope 94 | use "nvim-telescope/telescope.nvim" 95 | 96 | -- Treesitter 97 | use { 98 | "nvim-treesitter/nvim-treesitter", 99 | run = ":TSUpdate", 100 | } 101 | use "JoosepAlviste/nvim-ts-context-commentstring" 102 | 103 | -- Git 104 | use "lewis6991/gitsigns.nvim" 105 | 106 | -- Automatically set up your configuration after cloning packer.nvim 107 | -- Put this at the end after all plugins 108 | if PACKER_BOOTSTRAP then 109 | require("packer").sync() 110 | end 111 | end) 112 | -------------------------------------------------------------------------------- /.config/polybar/rofi/launcher.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Author : Aditya Shakya 4 | * Mail : adi1090x@gmail.com 5 | * Github : @adi1090x 6 | * Twitter : @adi1090x 7 | * 8 | */ 9 | 10 | configuration { 11 | font: "Iosevka Nerd Font 10"; 12 | show-icons: true; 13 | icon-theme: "Papirus"; 14 | display-drun: ""; 15 | drun-display-format: "{name}"; 16 | disable-history: false; 17 | fullscreen: false; 18 | hide-scrollbar: true; 19 | sidebar-mode: false; 20 | } 21 | 22 | @import "colors.rasi" 23 | 24 | window { 25 | transparency: "real"; 26 | background-color: @bg; 27 | text-color: @fg; 28 | border: 2px; 29 | border-color: @ac; 30 | border-radius: 0px; 31 | width: 450px; 32 | location: center; 33 | x-offset: 0; 34 | y-offset: 0; 35 | } 36 | 37 | prompt { 38 | enabled: true; 39 | padding: 10px; 40 | background-color: @al; 41 | text-color: @ac; 42 | font: "Iosevka Nerd Font 10"; 43 | } 44 | 45 | entry { 46 | background-color: @al; 47 | text-color: @ac; 48 | placeholder-color: @ac; 49 | expand: true; 50 | horizontal-align: 0; 51 | placeholder: "Search..."; 52 | padding: 10px 10px 10px 0px; 53 | border-radius: 0px; 54 | blink: true; 55 | } 56 | 57 | inputbar { 58 | children: [ prompt, entry ]; 59 | background-color: @al; 60 | text-color: @fg; 61 | expand: false; 62 | border: 0px 0px 1px 0px; 63 | border-radius: 0px; 64 | border-color: @ac; 65 | spacing: 0px; 66 | } 67 | 68 | listview { 69 | background-color: @al; 70 | padding: 0px; 71 | columns: 1; 72 | lines: 5; 73 | spacing: 5px; 74 | cycle: true; 75 | dynamic: true; 76 | layout: vertical; 77 | } 78 | 79 | mainbox { 80 | background-color: @al; 81 | border: 0px; 82 | border-radius: 0px; 83 | border-color: @ac; 84 | children: [ inputbar, listview ]; 85 | spacing: 10px; 86 | padding: 2px 10px 10px 10px; 87 | } 88 | 89 | element { 90 | background-color: @al; 91 | text-color: @fg; 92 | orientation: horizontal; 93 | border-radius: 0px; 94 | padding: 8px; 95 | } 96 | 97 | element-icon { 98 | size: 24px; 99 | border: 0px; 100 | text-color: @fg; 101 | background-color: rgba(0,0,0,0); 102 | } 103 | 104 | element-text { 105 | expand: true; 106 | horizontal-align: 0; 107 | vertical-align: 0.5; 108 | margin: 0px 2.5px 0px 2.5px; 109 | text-color: @fg; 110 | background-color: rgba(0,0,0,0); 111 | } 112 | 113 | element selected { 114 | background-color: @se; 115 | text-color: @fg; 116 | border: 0px 0px 0px 0px; 117 | border-radius: 0px; 118 | border-color: @ac; 119 | } 120 | -------------------------------------------------------------------------------- /.config/sxhkd/sxhkdrc: -------------------------------------------------------------------------------- 1 | # 2 | # wm independent hotkeys 3 | # 4 | 5 | # focus the last node/desktop 6 | super + grave 7 | bspc desktop -f last 8 | 9 | super + q 10 | bspc monitor -f prev 11 | 12 | super + shift + Tab 13 | bspc desktop -f prev.local 14 | 15 | super + Tab 16 | bspc desktop -f next.local 17 | 18 | super + ctrl + Delete 19 | ~/.config/polybar/powermenu.sh 20 | 21 | super + x 22 | code 23 | 24 | super + alt + s 25 | /home/gabe/bin/startup/start 26 | 27 | super + n 28 | kitty -e ncmpcpp 29 | 30 | #restart polybar 31 | super + p 32 | pkill polybar; polybar top &; polybar bottom & 33 | #bash ~/.config/polybar/launch.sh --hack 34 | #autorandr --change 35 | 36 | # take scrot 37 | Print 38 | deepin-screenshot 39 | 40 | # open brave browser 41 | super + b 42 | brave 43 | 44 | # terminal emulator 45 | super + Return 46 | kitty 47 | 48 | super + shift + Return 49 | kitty -o font_size=12 50 | 51 | # program launcher 52 | super + @space 53 | ~/.config/polybar/launch_rofi.sh 54 | 55 | super + e 56 | ~/.config/polybar/launch_rofi_emoji.sh 57 | 58 | # make sxhkd reload its configuration files: 59 | super + Escape 60 | pkill -USR1 -x sxhkd 61 | 62 | # 63 | # bspwm hotkeys 64 | # 65 | 66 | # quit/restart bspwm 67 | super + alt + {q,r} 68 | bspc {quit,wm -r} 69 | 70 | # close and kill 71 | super + {_,shift + }w 72 | bspc node -{c,k} 73 | 74 | # alternate between the tiled and monocle layout 75 | super + m 76 | bspc desktop -l next 77 | 78 | # send the newest marked node to the newest preselected node 79 | super + y 80 | bspc node newest.marked.local -n newest.!automatic.local 81 | 82 | # swap the current node and the biggest window 83 | super + g 84 | bspc node -s biggest.window 85 | 86 | # 87 | # state/flags 88 | # 89 | 90 | # set the window state 91 | super + {t,shift + t,s,f} 92 | bspc node -t {tiled,pseudo_tiled,floating,fullscreen} 93 | 94 | # set the node flags 95 | super + ctrl + {m,x,y,z} 96 | bspc node -g {marked,locked,sticky,private} 97 | 98 | # 99 | # focus/swap 100 | # 101 | 102 | # focus the node in the given direction 103 | super + {_,shift + }{h,j,k,l} 104 | bspc node -{f,s} {west,south,north,east} 105 | 106 | # focus the node for the given path jump 107 | #super + {p,b,comma,period} 108 | # bspc node -f @{parent,brother,first,second} 109 | 110 | # focus the next/previous window in the current desktop 111 | super + {_,shift + }c 112 | bspc node -f {next,prev}.local.!hidden.window 113 | 114 | # focus the next/previous desktop in the current monitor 115 | super + bracket{left,right} 116 | bspc desktop -f {prev,next}.local 117 | 118 | 119 | 120 | # focus the older or newer node in the focus history 121 | super + {o,i} 122 | bspc wm -h off; \ 123 | bspc node {older,newer} -f; \ 124 | bspc wm -h on 125 | 126 | # focus or send to the given desktop 127 | super + {_,shift + }{1-9,0} 128 | bspc {desktop -f,node -d} '^{1-9,10}' 129 | 130 | # 131 | # preselect 132 | # 133 | 134 | # preselect the direction 135 | super + ctrl + {h,j,k,l} 136 | bspc node -p {west,south,north,east} 137 | 138 | # preselect the ratio 139 | super + ctrl + {1-9} 140 | bspc node -o 0.{1-9} 141 | 142 | # cancel the preselection for the focused node 143 | super + ctrl + space 144 | bspc node -p cancel 145 | 146 | # cancel the preselection for the focused desktop 147 | super + ctrl + shift + space 148 | bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel 149 | 150 | # 151 | # move/resize 152 | # 153 | 154 | # expand a window by moving one of its side outward 155 | super + alt + {h,j,k,l} 156 | bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} 157 | 158 | # contract a window by moving one of its side inward 159 | super + alt + shift + {h,j,k,l} 160 | bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} 161 | 162 | # # move a floating window 163 | # super + {Left,Down,Up,Right} 164 | # bspc node -v {-20 0,0 20,0 -20,20 0} 165 | -------------------------------------------------------------------------------- /.config/polybar/rofi/styles.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Author : Aditya Shakya 4 | * Mail : adi1090x@gmail.com 5 | * Github : @adi1090x 6 | * Twitter : @adi1090x 7 | * 8 | */ 9 | 10 | configuration { 11 | font: "Iosevka Nerd Font 10"; 12 | show-icons: true; 13 | icon-theme: "Papirus"; 14 | display-drun: ""; 15 | drun-display-format: "{name}"; 16 | disable-history: false; 17 | fullscreen: false; 18 | hide-scrollbar: true; 19 | sidebar-mode: false; 20 | } 21 | 22 | @import "colors.rasi" 23 | 24 | window { 25 | transparency: "real"; 26 | background-color: @bg; 27 | text-color: @fg; 28 | border: 2px; 29 | border-color: @ac; 30 | border-radius: 0px; 31 | width: 300px; 32 | location: center; 33 | x-offset: 0; 34 | y-offset: 0; 35 | } 36 | 37 | prompt { 38 | enabled: true; 39 | padding: 10px 10px 10px 0px; 40 | background-color: @al; 41 | text-color: @ac; 42 | font: "Iosevka Nerd Font 10"; 43 | } 44 | 45 | textbox-prompt-colon { 46 | padding: 10px 15px 10px 15px; 47 | font: "Iosevka Nerd Font 10"; 48 | background-color: @al; 49 | text-color: @ac; 50 | expand: false; 51 | str: ""; 52 | } 53 | 54 | entry { 55 | background-color: @al; 56 | text-color: @ac; 57 | placeholder-color: @ac; 58 | expand: true; 59 | horizontal-align: 0; 60 | placeholder: "Search..."; 61 | padding: 10px 10px 10px 0px; 62 | border-radius: 0px; 63 | blink: true; 64 | } 65 | 66 | inputbar { 67 | children: [ textbox-prompt-colon, entry ]; 68 | background-color: @al; 69 | text-color: @fg; 70 | expand: false; 71 | border: 0px 0px 1px 0px; 72 | border-radius: 0px; 73 | border-color: @ac; 74 | spacing: 0px; 75 | } 76 | 77 | listview { 78 | background-color: @al; 79 | padding: 0px; 80 | columns: 1; 81 | lines: 5; 82 | spacing: 5px; 83 | cycle: true; 84 | dynamic: true; 85 | layout: vertical; 86 | } 87 | 88 | mainbox { 89 | background-color: @al; 90 | border: 0px; 91 | border-radius: 0px; 92 | border-color: @ac; 93 | children: [ inputbar, listview ]; 94 | spacing: 10px; 95 | padding: 2px 10px 10px 10px; 96 | } 97 | 98 | element { 99 | background-color: @al; 100 | text-color: @fg; 101 | orientation: horizontal; 102 | border-radius: 0px; 103 | padding: 8px 8px 8px -16px; 104 | } 105 | 106 | element-icon { 107 | size: 24px; 108 | border: 0px; 109 | } 110 | 111 | element-text { 112 | expand: true; 113 | horizontal-align: 0; 114 | vertical-align: 0.5; 115 | margin: 0px 2.5px 0px 2.5px; 116 | } 117 | 118 | element selected { 119 | background-color: @se; 120 | text-color: @fg; 121 | border: 0px 0px 0px 0px; 122 | border-radius: 0px; 123 | border-color: @ac; 124 | } 125 | -------------------------------------------------------------------------------- /.config/polybar/rofi/networkmenu.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Author : Aditya Shakya 4 | * Mail : adi1090x@gmail.com 5 | * Github : @adi1090x 6 | * Twitter : @adi1090x 7 | * 8 | */ 9 | 10 | configuration { 11 | font: "Iosevka Nerd Font 10"; 12 | show-icons: true; 13 | icon-theme: "Papirus"; 14 | display-drun: ""; 15 | drun-display-format: "{name}"; 16 | disable-history: false; 17 | fullscreen: false; 18 | hide-scrollbar: true; 19 | sidebar-mode: false; 20 | } 21 | 22 | @import "colors.rasi" 23 | 24 | window { 25 | transparency: "real"; 26 | background-color: @bg; 27 | text-color: @fg; 28 | border: 2px; 29 | border-color: @ac; 30 | border-radius: 0px; 31 | width: 400px; 32 | location: center; 33 | x-offset: 0; 34 | y-offset: 0; 35 | } 36 | 37 | prompt { 38 | enabled: true; 39 | padding: 10px 10px 10px 0px; 40 | background-color: @al; 41 | text-color: @ac; 42 | font: "Iosevka Nerd Font 10"; 43 | } 44 | 45 | textbox-prompt-colon { 46 | padding: 10px 15px 10px 15px; 47 | font: "Iosevka Nerd Font 10"; 48 | background-color: @al; 49 | text-color: @ac; 50 | expand: false; 51 | str: "直"; 52 | } 53 | 54 | entry { 55 | background-color: @al; 56 | text-color: @ac; 57 | placeholder-color: @ac; 58 | expand: true; 59 | horizontal-align: 0; 60 | placeholder: "Search..."; 61 | padding: 10px 10px 10px 0px; 62 | border-radius: 0px; 63 | blink: true; 64 | } 65 | 66 | inputbar { 67 | children: [ textbox-prompt-colon, prompt ]; 68 | background-color: @al; 69 | text-color: @fg; 70 | expand: false; 71 | border: 0px 0px 1px 0px; 72 | border-radius: 0px; 73 | border-color: @ac; 74 | spacing: 0px; 75 | } 76 | 77 | listview { 78 | background-color: @al; 79 | padding: 0px; 80 | columns: 1; 81 | lines: 8; 82 | spacing: 5px; 83 | cycle: true; 84 | dynamic: true; 85 | layout: vertical; 86 | } 87 | 88 | mainbox { 89 | background-color: @al; 90 | border: 0px; 91 | border-radius: 0px; 92 | border-color: @ac; 93 | children: [ inputbar, listview ]; 94 | spacing: 10px; 95 | padding: 2px 10px 10px 10px; 96 | } 97 | 98 | element { 99 | background-color: @al; 100 | text-color: @fg; 101 | orientation: horizontal; 102 | border-radius: 0px; 103 | padding: 8px 8px 8px -10px; 104 | } 105 | 106 | element-icon { 107 | size: 24px; 108 | border: 0px; 109 | } 110 | 111 | element-text { 112 | expand: true; 113 | horizontal-align: 0; 114 | vertical-align: 0.5; 115 | margin: 0px 2.5px 0px 2.5px; 116 | } 117 | 118 | element selected { 119 | background-color: @se; 120 | text-color: @fg; 121 | border: 0px 0px 0px 0px; 122 | border-radius: 0px; 123 | border-color: @ac; 124 | } 125 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/cmp.lua: -------------------------------------------------------------------------------- 1 | local cmp_status_ok, cmp = pcall(require, "cmp") 2 | if not cmp_status_ok then 3 | return 4 | end 5 | 6 | local snip_status_ok, luasnip = pcall(require, "luasnip") 7 | if not snip_status_ok then 8 | return 9 | end 10 | 11 | require("luasnip/loaders/from_vscode").lazy_load() 12 | 13 | local check_backspace = function() 14 | local col = vim.fn.col "." - 1 15 | return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" 16 | end 17 | 18 | --   פּ ﯟ   some other good icons 19 | local kind_icons = { 20 | Text = "", 21 | Method = "m", 22 | Function = "", 23 | Constructor = "", 24 | Field = "", 25 | Variable = "", 26 | Class = "", 27 | Interface = "", 28 | Module = "", 29 | Property = "", 30 | Unit = "", 31 | Value = "", 32 | Enum = "", 33 | Keyword = "", 34 | Snippet = "", 35 | Color = "", 36 | File = "", 37 | Reference = "", 38 | Folder = "", 39 | EnumMember = "", 40 | Constant = "", 41 | Struct = "", 42 | Event = "", 43 | Operator = "", 44 | TypeParameter = "", 45 | } 46 | -- find more here: https://www.nerdfonts.com/cheat-sheet 47 | 48 | cmp.setup { 49 | snippet = { 50 | expand = function(args) 51 | luasnip.lsp_expand(args.body) -- For `luasnip` users. 52 | end, 53 | }, 54 | mapping = { 55 | [""] = cmp.mapping.select_prev_item(), 56 | [""] = cmp.mapping.select_next_item(), 57 | [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), 58 | [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), 59 | [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), 60 | [""] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. 61 | [""] = cmp.mapping { 62 | i = cmp.mapping.abort(), 63 | c = cmp.mapping.close(), 64 | }, 65 | -- Accept currently selected item. If none selected, `select` first item. 66 | -- Set `select` to `false` to only confirm explicitly selected items. 67 | [""] = cmp.mapping.confirm { select = true }, 68 | [""] = cmp.mapping(function(fallback) 69 | if cmp.visible() then 70 | cmp.select_next_item() 71 | elseif luasnip.expandable() then 72 | luasnip.expand() 73 | elseif luasnip.expand_or_jumpable() then 74 | luasnip.expand_or_jump() 75 | elseif check_backspace() then 76 | fallback() 77 | else 78 | fallback() 79 | end 80 | end, { 81 | "i", 82 | "s", 83 | }), 84 | [""] = cmp.mapping(function(fallback) 85 | if cmp.visible() then 86 | cmp.select_prev_item() 87 | elseif luasnip.jumpable(-1) then 88 | luasnip.jump(-1) 89 | else 90 | fallback() 91 | end 92 | end, { 93 | "i", 94 | "s", 95 | }), 96 | }, 97 | formatting = { 98 | fields = { "kind", "abbr", "menu" }, 99 | format = function(entry, vim_item) 100 | -- Kind icons 101 | vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) 102 | -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind 103 | vim_item.menu = ({ 104 | nvim_lsp = "[LSP]", 105 | luasnip = "[Snippet]", 106 | buffer = "[Buffer]", 107 | path = "[Path]", 108 | })[entry.source.name] 109 | return vim_item 110 | end, 111 | }, 112 | sources = { 113 | { name = "nvim_lsp" }, 114 | { name = "luasnip" }, 115 | { name = "buffer" }, 116 | { name = "path" }, 117 | }, 118 | confirm_opts = { 119 | behavior = cmp.ConfirmBehavior.Replace, 120 | select = false, 121 | }, 122 | documentation = { 123 | border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, 124 | }, 125 | experimental = { 126 | ghost_text = false, 127 | native_menu = false, 128 | }, 129 | } 130 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # Sick programs: 2 | # Zeal - offline docs 3 | # ncdu - ncurses du 4 | # radarr - run 'sudo systemctl start radarr' then access http://localhost:7878 5 | # bazarr - run 'sudo systemctl start bazarr' then access http://redbook:6767/ 6 | # spotdl - spotdl --path-template '{album}/{title}.{ext}' 7 | # access to encrypted files: run ecryptfs-mount-private and ecryptfs-umount-private 8 | # jellyfin - use systemctl to start jellyfin for the media server 9 | 10 | 11 | if [ -z $SCRIPTCALL ]; then 12 | fortune -a | cowsay | lolcat 13 | echo 14 | fi 15 | 16 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. 17 | # Initialization code that may require console input (password prompts, [y/n] 18 | # confirmations, etc.) must go above this block; everything else may go below. 19 | if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 20 | source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 21 | fi 22 | 23 | # Path to your oh-my-zsh installation. 24 | export ZSH="$HOME/.oh-my-zsh" 25 | 26 | if [ $TERM = linux ] 27 | then 28 | ZSH_THEME="robbyrussell" 29 | else 30 | ZSH_THEME="powerlevel10k/powerlevel10k" 31 | fi 32 | 33 | plugins=(git colored-man-pages colorize heroku zsh-syntax-highlighting zsh-autosuggestions) 34 | 35 | source $ZSH/oh-my-zsh.sh 36 | source ~/.envvars 37 | 38 | export EDITOR="/usr/bin/nvim" 39 | export PATH=$PATH:~/.local/bin:~/bin 40 | eval $(thefuck --alias) 41 | 42 | bindkey -s '^O' 'ranger^M' 43 | 44 | # unalias l 45 | # alias ls='exa' 46 | # alias ll='exa --long --header --icons --git' 47 | # alias la='exa --long --header --icons --git --all' 48 | # alias lr='exa --reverse --sort=time' 49 | # alias lar='exa -la --sort=modified' 50 | 51 | alias windows='sudo grub-reboot Windows && sudo reboot' 52 | 53 | alias wifi='nmcli device wifi' 54 | alias conn='nmcli connection' 55 | alias vpnon='nmcli connection up vpnhome' 56 | alias vpnoff='nmcli connection down vpnhome' 57 | 58 | alias t='tree' 59 | alias c='clear' 60 | 61 | alias ep='nvim ~/.zshrc' 62 | alias epx='nvim ~/.xinitrc' 63 | alias epv='nvim ~/.config/nvim/init.vim' 64 | 65 | alias sshi='ssh -i ~/documents/gabe.pem' 66 | alias scpi='scp -i ~/documents/gabe.pem' 67 | 68 | alias pacs='sudo pacman -S' 69 | alias pacq='pacman -Qe | grep -i' 70 | 71 | alias seba='source env/bin/activate' 72 | alias key='xbindkeys --key' 73 | alias wttr='curl wttr.in' 74 | alias wttrs='curl "wttr.in/?0"' 75 | 76 | alias mu='sudo mount /dev/sda1 /mnt' 77 | alias umu='sudo umount /mnt' 78 | 79 | alias hs='history | grep -i' 80 | alias ytdl='youtube-dl -x --audio-format mp3 --audio-quality 0 -o "%(autonumber)s %(title)s.%(ext)s"' 81 | alias please='sudo $(fc -ln -1)' 82 | #alias update-front="ssh hooks@chordhosting.com './buildhook'" 83 | 84 | alias en='sudo systemctl enable --now' 85 | alias dis='sudo systemctl disable' 86 | alias start='sudo systemctl start' 87 | alias stop='sudo systemctl stop' 88 | 89 | #alias radarr='sudo systemctl start radarr' 90 | #alias lidarr='sudo systemctl start lidarr' 91 | #alias ccolor='kitty @ set-colors ~/.config/kitty/default_colors.conf' 92 | alias gtree='git log --oneline --decorate --all --graph' 93 | 94 | alias wallpaper='feh --bg-fill /home/gabe/documents/pics/wallpapers/mountains.jpg' 95 | 96 | alias pics='cd ~/pics' 97 | alias scrot='cd ~/pics/screenshots' 98 | alias down='cd ~/downloads' 99 | alias doc='cd ~/documents' 100 | alias gbanks='cd ~/Private/gbanks' 101 | rp() {cd ~/repos/$1} 102 | cfg() {cd ~/.config/$1} 103 | op() {nvim ~/repos/$1} 104 | 105 | myip() {ip addr | grep "inet " | grep -v " 127." | awk '{print $2}'} 106 | 107 | see() {feh $1 & disown} 108 | 109 | spdl() {spotify_dl -l $1 -o ~/music} 110 | 111 | out() {"$@" & disown} 112 | 113 | banner() {echo $1 | figlet -f 3d -c -t | lolcat -a -d 2} 114 | alias stfu="banner 'Shut\nthe\nfuck\nup'" 115 | 116 | 117 | 118 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 119 | [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh 120 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/handlers.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | -- TODO: backfill this to template 4 | M.setup = function() 5 | local signs = { 6 | { name = "DiagnosticSignError", text = "" }, 7 | { name = "DiagnosticSignWarn", text = "" }, 8 | { name = "DiagnosticSignHint", text = "" }, 9 | { name = "DiagnosticSignInfo", text = "" }, 10 | } 11 | 12 | for _, sign in ipairs(signs) do 13 | vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) 14 | end 15 | 16 | local config = { 17 | -- disable virtual text 18 | virtual_text = false, 19 | -- show signs 20 | signs = { 21 | active = signs, 22 | }, 23 | update_in_insert = true, 24 | underline = true, 25 | severity_sort = true, 26 | float = { 27 | focusable = false, 28 | style = "minimal", 29 | border = "rounded", 30 | source = "always", 31 | header = "", 32 | prefix = "", 33 | }, 34 | } 35 | 36 | vim.diagnostic.config(config) 37 | 38 | vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { 39 | border = "rounded", 40 | }) 41 | 42 | vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { 43 | border = "rounded", 44 | }) 45 | end 46 | 47 | local function lsp_highlight_document(client) 48 | -- Set autocommands conditional on server_capabilities 49 | if client.resolved_capabilities.document_highlight then 50 | vim.api.nvim_exec( 51 | [[ 52 | augroup lsp_document_highlight 53 | autocmd! * 54 | autocmd CursorHold lua vim.lsp.buf.document_highlight() 55 | autocmd CursorMoved lua vim.lsp.buf.clear_references() 56 | augroup END 57 | ]], 58 | false 59 | ) 60 | end 61 | end 62 | 63 | local function lsp_keymaps(bufnr) 64 | local opts = { noremap = true, silent = true } 65 | -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) 66 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) 67 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gk", "lua vim.lsp.buf.hover()", opts) 68 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) 69 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gt", "lua vim.lsp.buf.type_definition()", opts) 70 | -- vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) 71 | -- vim.api.nvim_buf_set_keymap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opts) 72 | vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) 73 | -- vim.api.nvim_buf_set_keymap(bufnr, "n", "ca", "lua vim.lsp.buf.code_action()", opts) 74 | -- vim.api.nvim_buf_set_keymap(bufnr, "n", "f", "lua vim.diagnostic.open_float()", opts) 75 | vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", 'lua vim.diagnostic.goto_prev({ border = "rounded" })', opts) 76 | vim.api.nvim_buf_set_keymap( 77 | bufnr, 78 | "n", 79 | "gl", 80 | 'lua vim.lsp.diagnostic.show_line_diagnostics({ border = "rounded" })', 81 | opts 82 | ) 83 | vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", 'lua vim.diagnostic.goto_next({ border = "rounded" })', opts) 84 | vim.api.nvim_buf_set_keymap(bufnr, "n", "q", "lua vim.diagnostic.setloclist()", opts) 85 | vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]] 86 | end 87 | 88 | M.on_attach = function(client, bufnr) 89 | if client.name == "tsserver" then 90 | client.resolved_capabilities.document_formatting = false 91 | end 92 | lsp_keymaps(bufnr) 93 | lsp_highlight_document(client) 94 | end 95 | 96 | local capabilities = vim.lsp.protocol.make_client_capabilities() 97 | 98 | local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") 99 | if not status_ok then 100 | return 101 | end 102 | 103 | M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) 104 | 105 | return M 106 | -------------------------------------------------------------------------------- /.config/polybar/rofi/powermenu.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Author : Aditya Shakya 4 | * Mail : adi1090x@gmail.com 5 | * Github : @adi1090x 6 | * Twitter : @adi1090x 7 | * 8 | */ 9 | 10 | configuration { 11 | font: "Iosevka Nerd Font 10"; 12 | show-icons: true; 13 | icon-theme: "Papirus"; 14 | display-drun: ""; 15 | drun-display-format: "{name}"; 16 | disable-history: false; 17 | fullscreen: false; 18 | hide-scrollbar: true; 19 | sidebar-mode: false; 20 | } 21 | 22 | @import "colors.rasi" 23 | 24 | window { 25 | transparency: "real"; 26 | background-color: @bg; 27 | text-color: @fg; 28 | border: 2px; 29 | border-color: @ac; 30 | border-radius: 0px; 31 | width: 300px; 32 | location: center; 33 | x-offset: 0; 34 | y-offset: 0; 35 | } 36 | 37 | prompt { 38 | enabled: true; 39 | padding: 10px 10px 10px 0px; 40 | background-color: @al; 41 | text-color: @ac; 42 | font: "Iosevka Nerd Font 10"; 43 | } 44 | 45 | textbox-prompt-colon { 46 | padding: 10px 15px 10px 15px; 47 | font: "Iosevka Nerd Font 10"; 48 | background-color: @al; 49 | text-color: @ac; 50 | expand: false; 51 | str: ""; 52 | } 53 | 54 | entry { 55 | background-color: @al; 56 | text-color: @ac; 57 | placeholder-color: @ac; 58 | expand: true; 59 | horizontal-align: 0; 60 | placeholder: "Search..."; 61 | padding: 10px 10px 10px 0px; 62 | border-radius: 0px; 63 | blink: true; 64 | } 65 | 66 | inputbar { 67 | children: [ textbox-prompt-colon, prompt ]; 68 | background-color: @al; 69 | text-color: @fg; 70 | expand: false; 71 | border: 0px 0px 1px 0px; 72 | border-radius: 0px; 73 | border-color: @ac; 74 | spacing: 0px; 75 | } 76 | 77 | listview { 78 | background-color: @al; 79 | padding: 0px; 80 | columns: 1; 81 | lines: 5; 82 | spacing: 5px; 83 | cycle: true; 84 | dynamic: true; 85 | layout: vertical; 86 | } 87 | 88 | mainbox { 89 | background-color: @al; 90 | border: 0px; 91 | border-radius: 0px; 92 | border-color: @ac; 93 | children: [ inputbar, listview ]; 94 | spacing: 10px; 95 | padding: 2px 10px 10px 10px; 96 | } 97 | 98 | element { 99 | background-color: @al; 100 | text-color: @fg; 101 | orientation: horizontal; 102 | border-radius: 0px; 103 | padding: 8px 8px 8px -16px; 104 | } 105 | 106 | element-icon { 107 | size: 24px; 108 | border: 0px; 109 | text-color: @fg; 110 | background-color: rgba(0,0,0,0); 111 | } 112 | 113 | element-text { 114 | expand: true; 115 | horizontal-align: 0; 116 | vertical-align: 0.5; 117 | margin: 0px 2.5px 0px 2.5px; 118 | text-color: @fg; 119 | background-color: rgba(0,0,0,0); 120 | } 121 | 122 | element selected { 123 | background-color: @se; 124 | text-color: @fg; 125 | border: 0px 0px 0px 0px; 126 | border-radius: 0px; 127 | border-color: @ac; 128 | } 129 | -------------------------------------------------------------------------------- /.config/ranger/colorschemes/solarized_alt.py: -------------------------------------------------------------------------------- 1 | # This file is part of ranger, the console file manager. 2 | # License: GNU GPL version 3, see the file "AUTHORS" for details. 3 | # Author: Joseph Tannhuber , 2013 4 | # Solarized like colorscheme, similar to solarized-dircolors 5 | # from https://github.com/seebi/dircolors-solarized. 6 | # This is a modification of Roman Zimbelmann's default colorscheme. 7 | 8 | from __future__ import (absolute_import, division, print_function) 9 | 10 | from ranger.gui.colorscheme import ColorScheme 11 | from ranger.gui.color import ( 12 | cyan, magenta, red, white, default, 13 | normal, bold, reverse, 14 | default_colors, 15 | ) 16 | 17 | 18 | class Solarized(ColorScheme): 19 | progress_bar_color = 33 20 | 21 | def use(self, context): # pylint: disable=too-many-branches,too-many-statements 22 | fg, bg, attr = default_colors 23 | fg = 165 24 | if context.reset: 25 | return default_colors 26 | 27 | elif context.in_browser: 28 | fg = 244 29 | if context.selected: 30 | attr = reverse 31 | else: 32 | attr = normal 33 | if context.empty or context.error: 34 | fg = 235 35 | bg = 160 36 | if context.border: 37 | fg = 165 38 | if context.media: 39 | if context.image: 40 | fg = 165 41 | else: 42 | fg = 166 43 | if context.container: 44 | fg = 51 45 | if context.directory: 46 | fg = 51 47 | elif context.executable and not \ 48 | any((context.media, context.container, 49 | context.fifo, context.socket)): 50 | fg = 64 51 | attr |= bold 52 | if context.socket: 53 | fg = 136 54 | bg = 230 55 | attr |= bold 56 | if context.fifo: 57 | fg = 136 58 | bg = 230 59 | attr |= bold 60 | if context.device: 61 | fg = 244 62 | bg = 230 63 | attr |= bold 64 | if context.link: 65 | fg = 37 if context.good else 160 66 | attr |= bold 67 | if context.bad: 68 | bg = 235 69 | if context.tag_marker and not context.selected: 70 | attr |= bold 71 | if fg in (red, magenta): 72 | fg = white 73 | else: 74 | fg = red 75 | if not context.selected and (context.cut or context.copied): 76 | fg = 234 77 | attr |= bold 78 | if context.main_column: 79 | if context.selected: 80 | attr |= bold 81 | if context.marked: 82 | attr |= bold 83 | bg = 237 84 | if context.badinfo: 85 | if attr & reverse: 86 | bg = magenta 87 | else: 88 | fg = magenta 89 | 90 | if context.inactive_pane: 91 | fg = 241 92 | 93 | elif context.in_titlebar: 94 | attr |= bold 95 | if context.hostname: 96 | fg = 16 if context.bad else 255 97 | if context.bad: 98 | bg = 166 99 | elif context.directory: 100 | fg = 45 101 | elif context.tab: 102 | fg = 47 if context.good else 33 103 | bg = 239 104 | elif context.link: 105 | fg = cyan 106 | 107 | elif context.in_statusbar: 108 | if context.permissions: 109 | if context.good: 110 | fg = 93 111 | elif context.bad: 112 | fg = 160 113 | bg = 235 114 | if context.marked: 115 | attr |= bold | reverse 116 | fg = 237 117 | bg = 47 118 | if context.message: 119 | if context.bad: 120 | attr |= bold 121 | fg = 160 122 | bg = 235 123 | if context.loaded: 124 | bg = self.progress_bar_color 125 | 126 | if context.text: 127 | if context.highlight: 128 | attr |= reverse 129 | 130 | if context.in_taskview: 131 | if context.title: 132 | fg = 93 133 | 134 | if context.selected: 135 | attr |= reverse 136 | 137 | if context.loaded: 138 | if context.selected: 139 | fg = self.progress_bar_color 140 | else: 141 | bg = self.progress_bar_color 142 | 143 | return fg, bg, attr 144 | -------------------------------------------------------------------------------- /.zshrc.simple: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | # Path to your oh-my-zsh installation. 5 | export ZSH="$HOME/.oh-my-zsh" 6 | 7 | # Set name of the theme to load --- if set to "random", it will 8 | # load a random theme each time oh-my-zsh is loaded, in which case, 9 | # to know which specific one was loaded, run: echo $RANDOM_THEME 10 | # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 11 | ZSH_THEME="robbyrussell" 12 | #ZSH_THEME="powerlevel10k/powerlevel10k" 13 | 14 | # Set list of themes to pick from when loading at random 15 | # Setting this variable when ZSH_THEME=random will cause zsh to load 16 | # a theme from this variable instead of looking in $ZSH/themes/ 17 | # If set to an empty array, this variable will have no effect. 18 | # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) 19 | 20 | # Uncomment the following line to use case-sensitive completion. 21 | # CASE_SENSITIVE="true" 22 | 23 | # Uncomment the following line to use hyphen-insensitive completion. 24 | # Case-sensitive completion must be off. _ and - will be interchangeable. 25 | # HYPHEN_INSENSITIVE="true" 26 | 27 | # Uncomment one of the following lines to change the auto-update behavior 28 | # zstyle ':omz:update' mode disabled # disable automatic updates 29 | # zstyle ':omz:update' mode auto # update automatically without asking 30 | # zstyle ':omz:update' mode reminder # just remind me to update when it's time 31 | 32 | # Uncomment the following line to change how often to auto-update (in days). 33 | # zstyle ':omz:update' frequency 13 34 | 35 | # Uncomment the following line if pasting URLs and other text is messed up. 36 | # DISABLE_MAGIC_FUNCTIONS="true" 37 | 38 | # Uncomment the following line to disable colors in ls. 39 | # DISABLE_LS_COLORS="true" 40 | 41 | # Uncomment the following line to disable auto-setting terminal title. 42 | # DISABLE_AUTO_TITLE="true" 43 | 44 | # Uncomment the following line to enable command auto-correction. 45 | # ENABLE_CORRECTION="true" 46 | 47 | # Uncomment the following line to display red dots whilst waiting for completion. 48 | # You can also set it to another string to have that shown instead of the default red dots. 49 | # e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" 50 | # Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) 51 | # COMPLETION_WAITING_DOTS="true" 52 | 53 | # Uncomment the following line if you want to disable marking untracked files 54 | # under VCS as dirty. This makes repository status check for large repositories 55 | # much, much faster. 56 | # DISABLE_UNTRACKED_FILES_DIRTY="true" 57 | 58 | # Uncomment the following line if you want to change the command execution time 59 | # stamp shown in the history command output. 60 | # You can set one of the optional three formats: 61 | # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 62 | # or set a custom format using the strftime function format specifications, 63 | # see 'man strftime' for details. 64 | # HIST_STAMPS="mm/dd/yyyy" 65 | 66 | # Would you like to use another custom folder than $ZSH/custom? 67 | # ZSH_CUSTOM=/path/to/new-custom-folder 68 | 69 | # Which plugins would you like to load? 70 | # Standard plugins can be found in $ZSH/plugins/ 71 | # Custom plugins may be added to $ZSH_CUSTOM/plugins/ 72 | # Example format: plugins=(rails git textmate ruby lighthouse) 73 | # Add wisely, as too many plugins slow down shell startup. 74 | plugins=(git colored-man-pages colorize heroku zsh-syntax-highlighting zsh-autosuggestions) 75 | 76 | source $ZSH/oh-my-zsh.sh 77 | 78 | # User configuration 79 | 80 | # export MANPATH="/usr/local/man:$MANPATH" 81 | 82 | # You may need to manually set your language environment 83 | # export LANG=en_US.UTF-8 84 | 85 | # Preferred editor for local and remote sessions 86 | # if [[ -n $SSH_CONNECTION ]]; then 87 | # export EDITOR='vim' 88 | # else 89 | # export EDITOR='mvim' 90 | # fi 91 | 92 | # Compilation flags 93 | # export ARCHFLAGS="-arch x86_64" 94 | 95 | # Set personal aliases, overriding those provided by oh-my-zsh libs, 96 | # plugins, and themes. Aliases can be placed here, though oh-my-zsh 97 | # users are encouraged to define aliases within the ZSH_CUSTOM folder. 98 | # For a full list of active aliases, run `alias`. 99 | # 100 | # Example aliases 101 | # alias zshconfig="mate ~/.zshrc" 102 | # alias ohmyzsh="mate ~/.oh-my-zsh" 103 | source ~/.envvars 104 | 105 | export EDITOR="/usr/bin/nvim" 106 | export PATH=$PATH:~/.local/bin:~/bin 107 | eval $(thefuck --alias) 108 | 109 | bindkey -s '^O' 'ranger^M' 110 | 111 | alias ls='ls --color=auto' 112 | alias ll='ls -la' 113 | alias lr='ls -ltr' 114 | alias ep='nvim ~/.zshrc' 115 | alias epv='nvim ~/.config/nvim/init.vim' 116 | alias sp='source ~/.zshrc' 117 | alias pacs='pacman -Qe | grep -i' 118 | alias seba='source env/bin/activate' 119 | alias key='xbindkeys --key' 120 | alias ev='nvim ~/.config/nvim/init.vim' 121 | alias wttr='curl wttr.in' 122 | alias wttrs='curl "wttr.in/?0"' 123 | alias mu='sudo mount /dev/sda1 /mnt' 124 | alias umu='sudo umount /mnt' 125 | alias hs='history | grep -i' 126 | alias ytdl='youtube-dl -x --audio-format mp3 --audio-quality 0 -o "%(autonumber)s %(title)s.%(ext)s"' 127 | alias please='sudo $(fc -ln -1)' 128 | alias anaconda="export PATH=~/anaconda3/bin:$PATH" 129 | alias update-front="ssh hooks@chordhosting.com './buildhook'" 130 | alias rp='cd ~/documents/repos' 131 | alias repos='cd ~/documents/repos' 132 | alias en='sudo systemctl enable --now' 133 | alias pac='sudo pacman' 134 | alias radarr='sudo systemctl start radarr' 135 | alias lidarr='sudo systemctl start lidarr' 136 | alias ccolor='kitty @ set-colors ~/.config/kitty/default_colors.conf' 137 | 138 | myip() { 139 | ip addr | grep "inet " | grep -v " 127." | awk '{print $2}' 140 | } 141 | 142 | see() { 143 | feh $1 & disown 144 | } 145 | 146 | spdl() { 147 | spotify_dl -l $1 -o ~/music 148 | } 149 | 150 | out() { 151 | "$@" & disown 152 | } 153 | banner() { 154 | echo $1 | figlet -f 3d -c -t | lolcat -a -d 2 155 | } 156 | 157 | 158 | 159 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 160 | #[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh 161 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/lsp/settings/jsonls.lua: -------------------------------------------------------------------------------- 1 | local default_schemas = nil 2 | local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls") 3 | if status_ok then 4 | default_schemas = jsonls_settings.get_default_schemas() 5 | end 6 | 7 | local schemas = { 8 | { 9 | description = "TypeScript compiler configuration file", 10 | fileMatch = { 11 | "tsconfig.json", 12 | "tsconfig.*.json", 13 | }, 14 | url = "https://json.schemastore.org/tsconfig.json", 15 | }, 16 | { 17 | description = "Lerna config", 18 | fileMatch = { "lerna.json" }, 19 | url = "https://json.schemastore.org/lerna.json", 20 | }, 21 | { 22 | description = "Babel configuration", 23 | fileMatch = { 24 | ".babelrc.json", 25 | ".babelrc", 26 | "babel.config.json", 27 | }, 28 | url = "https://json.schemastore.org/babelrc.json", 29 | }, 30 | { 31 | description = "ESLint config", 32 | fileMatch = { 33 | ".eslintrc.json", 34 | ".eslintrc", 35 | }, 36 | url = "https://json.schemastore.org/eslintrc.json", 37 | }, 38 | { 39 | description = "Bucklescript config", 40 | fileMatch = { "bsconfig.json" }, 41 | url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json", 42 | }, 43 | { 44 | description = "Prettier config", 45 | fileMatch = { 46 | ".prettierrc", 47 | ".prettierrc.json", 48 | "prettier.config.json", 49 | }, 50 | url = "https://json.schemastore.org/prettierrc", 51 | }, 52 | { 53 | description = "Vercel Now config", 54 | fileMatch = { "now.json" }, 55 | url = "https://json.schemastore.org/now", 56 | }, 57 | { 58 | description = "Stylelint config", 59 | fileMatch = { 60 | ".stylelintrc", 61 | ".stylelintrc.json", 62 | "stylelint.config.json", 63 | }, 64 | url = "https://json.schemastore.org/stylelintrc", 65 | }, 66 | { 67 | description = "A JSON schema for the ASP.NET LaunchSettings.json files", 68 | fileMatch = { "launchsettings.json" }, 69 | url = "https://json.schemastore.org/launchsettings.json", 70 | }, 71 | { 72 | description = "Schema for CMake Presets", 73 | fileMatch = { 74 | "CMakePresets.json", 75 | "CMakeUserPresets.json", 76 | }, 77 | url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json", 78 | }, 79 | { 80 | description = "Configuration file as an alternative for configuring your repository in the settings page.", 81 | fileMatch = { 82 | ".codeclimate.json", 83 | }, 84 | url = "https://json.schemastore.org/codeclimate.json", 85 | }, 86 | { 87 | description = "LLVM compilation database", 88 | fileMatch = { 89 | "compile_commands.json", 90 | }, 91 | url = "https://json.schemastore.org/compile-commands.json", 92 | }, 93 | { 94 | description = "Config file for Command Task Runner", 95 | fileMatch = { 96 | "commands.json", 97 | }, 98 | url = "https://json.schemastore.org/commands.json", 99 | }, 100 | { 101 | description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.", 102 | fileMatch = { 103 | "*.cf.json", 104 | "cloudformation.json", 105 | }, 106 | url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json", 107 | }, 108 | { 109 | description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.", 110 | fileMatch = { 111 | "serverless.template", 112 | "*.sam.json", 113 | "sam.json", 114 | }, 115 | url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json", 116 | }, 117 | { 118 | description = "Json schema for properties json file for a GitHub Workflow template", 119 | fileMatch = { 120 | ".github/workflow-templates/**.properties.json", 121 | }, 122 | url = "https://json.schemastore.org/github-workflow-template-properties.json", 123 | }, 124 | { 125 | description = "golangci-lint configuration file", 126 | fileMatch = { 127 | ".golangci.toml", 128 | ".golangci.json", 129 | }, 130 | url = "https://json.schemastore.org/golangci-lint.json", 131 | }, 132 | { 133 | description = "JSON schema for the JSON Feed format", 134 | fileMatch = { 135 | "feed.json", 136 | }, 137 | url = "https://json.schemastore.org/feed.json", 138 | versions = { 139 | ["1"] = "https://json.schemastore.org/feed-1.json", 140 | ["1.1"] = "https://json.schemastore.org/feed.json", 141 | }, 142 | }, 143 | { 144 | description = "Packer template JSON configuration", 145 | fileMatch = { 146 | "packer.json", 147 | }, 148 | url = "https://json.schemastore.org/packer.json", 149 | }, 150 | { 151 | description = "NPM configuration file", 152 | fileMatch = { 153 | "package.json", 154 | }, 155 | url = "https://json.schemastore.org/package.json", 156 | }, 157 | { 158 | description = "JSON schema for Visual Studio component configuration files", 159 | fileMatch = { 160 | "*.vsconfig", 161 | }, 162 | url = "https://json.schemastore.org/vsconfig.json", 163 | }, 164 | { 165 | description = "Resume json", 166 | fileMatch = { "resume.json" }, 167 | url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json", 168 | }, 169 | } 170 | 171 | local function extend(tab1, tab2) 172 | for _, value in ipairs(tab2) do 173 | table.insert(tab1, value) 174 | end 175 | return tab1 176 | end 177 | 178 | local extended_schemas = extend(schemas, default_schemas) 179 | 180 | local opts = { 181 | settings = { 182 | json = { 183 | schemas = extended_schemas, 184 | }, 185 | }, 186 | setup = { 187 | commands = { 188 | Format = { 189 | function() 190 | vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 }) 191 | end, 192 | }, 193 | }, 194 | }, 195 | } 196 | 197 | return opts 198 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/bufferline.lua: -------------------------------------------------------------------------------- 1 | local status_ok, bufferline = pcall(require, "bufferline") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | bufferline.setup { 7 | options = { 8 | numbers = "none", -- | "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string, 9 | close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" 10 | right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" 11 | left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" 12 | middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" 13 | -- NOTE: this plugin is designed with this icon in mind, 14 | -- and so changing this is NOT recommended, this is intended 15 | -- as an escape hatch for people who cannot bear it for whatever reason 16 | indicator_icon = "▎", 17 | buffer_close_icon = "", 18 | -- buffer_close_icon = '', 19 | modified_icon = "●", 20 | close_icon = "", 21 | -- close_icon = '', 22 | left_trunc_marker = "", 23 | right_trunc_marker = "", 24 | --- name_formatter can be used to change the buffer's label in the bufferline. 25 | --- Please note some names can/will break the 26 | --- bufferline so use this at your discretion knowing that it has 27 | --- some limitations that will *NOT* be fixed. 28 | -- name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr" 29 | -- -- remove extension from markdown files for example 30 | -- if buf.name:match('%.md') then 31 | -- return vim.fn.fnamemodify(buf.name, ':t:r') 32 | -- end 33 | -- end, 34 | max_name_length = 30, 35 | max_prefix_length = 30, -- prefix used when a buffer is de-duplicated 36 | tab_size = 21, 37 | diagnostics = false, -- | "nvim_lsp" | "coc", 38 | diagnostics_update_in_insert = false, 39 | -- diagnostics_indicator = function(count, level, diagnostics_dict, context) 40 | -- return "("..count..")" 41 | -- end, 42 | -- NOTE: this will be called a lot so don't do any heavy processing here 43 | -- custom_filter = function(buf_number) 44 | -- -- filter out filetypes you don't want to see 45 | -- if vim.bo[buf_number].filetype ~= "" then 46 | -- return true 47 | -- end 48 | -- -- filter out by buffer name 49 | -- if vim.fn.bufname(buf_number) ~= "" then 50 | -- return true 51 | -- end 52 | -- -- filter out based on arbitrary rules 53 | -- -- e.g. filter out vim wiki buffer from tabline in your work repo 54 | -- if vim.fn.getcwd() == "" and vim.bo[buf_number].filetype ~= "wiki" then 55 | -- return true 56 | -- end 57 | -- end, 58 | offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, 59 | show_buffer_icons = true, 60 | show_buffer_close_icons = true, 61 | show_close_icon = true, 62 | show_tab_indicators = true, 63 | persist_buffer_sort = true, -- whether or not custom sorted buffers should persist 64 | -- can also be a table containing 2 custom separators 65 | -- [focused and unfocused]. eg: { '|', '|' } 66 | separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, 67 | enforce_regular_tabs = true, 68 | always_show_bufferline = true, 69 | -- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b) 70 | -- -- add custom logic 71 | -- return buffer_a.modified > buffer_b.modified 72 | -- end 73 | }, 74 | highlights = { 75 | fill = { 76 | guifg = { attribute = "fg", highlight = "#ff0000" }, 77 | guibg = { attribute = "bg", highlight = "TabLine" }, 78 | }, 79 | background = { 80 | guifg = { attribute = "fg", highlight = "TabLine" }, 81 | guibg = { attribute = "bg", highlight = "TabLine" }, 82 | }, 83 | 84 | -- buffer_selected = { 85 | -- guifg = {attribute='fg',highlight='#ff0000'}, 86 | -- guibg = {attribute='bg',highlight='#0000ff'}, 87 | -- gui = 'none' 88 | -- }, 89 | buffer_visible = { 90 | guifg = { attribute = "fg", highlight = "TabLine" }, 91 | guibg = { attribute = "bg", highlight = "TabLine" }, 92 | }, 93 | 94 | close_button = { 95 | guifg = { attribute = "fg", highlight = "TabLine" }, 96 | guibg = { attribute = "bg", highlight = "TabLine" }, 97 | }, 98 | close_button_visible = { 99 | guifg = { attribute = "fg", highlight = "TabLine" }, 100 | guibg = { attribute = "bg", highlight = "TabLine" }, 101 | }, 102 | -- close_button_selected = { 103 | -- guifg = {attribute='fg',highlight='TabLineSel'}, 104 | -- guibg ={attribute='bg',highlight='TabLineSel'} 105 | -- }, 106 | 107 | tab_selected = { 108 | guifg = { attribute = "fg", highlight = "Normal" }, 109 | guibg = { attribute = "bg", highlight = "Normal" }, 110 | }, 111 | tab = { 112 | guifg = { attribute = "fg", highlight = "TabLine" }, 113 | guibg = { attribute = "bg", highlight = "TabLine" }, 114 | }, 115 | tab_close = { 116 | -- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'}, 117 | guifg = { attribute = "fg", highlight = "TabLineSel" }, 118 | guibg = { attribute = "bg", highlight = "Normal" }, 119 | }, 120 | 121 | duplicate_selected = { 122 | guifg = { attribute = "fg", highlight = "TabLineSel" }, 123 | guibg = { attribute = "bg", highlight = "TabLineSel" }, 124 | gui = "italic", 125 | }, 126 | duplicate_visible = { 127 | guifg = { attribute = "fg", highlight = "TabLine" }, 128 | guibg = { attribute = "bg", highlight = "TabLine" }, 129 | gui = "italic", 130 | }, 131 | duplicate = { 132 | guifg = { attribute = "fg", highlight = "TabLine" }, 133 | guibg = { attribute = "bg", highlight = "TabLine" }, 134 | gui = "italic", 135 | }, 136 | 137 | modified = { 138 | guifg = { attribute = "fg", highlight = "TabLine" }, 139 | guibg = { attribute = "bg", highlight = "TabLine" }, 140 | }, 141 | modified_selected = { 142 | guifg = { attribute = "fg", highlight = "Normal" }, 143 | guibg = { attribute = "bg", highlight = "Normal" }, 144 | }, 145 | modified_visible = { 146 | guifg = { attribute = "fg", highlight = "TabLine" }, 147 | guibg = { attribute = "bg", highlight = "TabLine" }, 148 | }, 149 | 150 | separator = { 151 | guifg = { attribute = "bg", highlight = "TabLine" }, 152 | guibg = { attribute = "bg", highlight = "TabLine" }, 153 | }, 154 | separator_selected = { 155 | guifg = { attribute = "bg", highlight = "Normal" }, 156 | guibg = { attribute = "bg", highlight = "Normal" }, 157 | }, 158 | -- separator_visible = { 159 | -- guifg = {attribute='bg',highlight='TabLine'}, 160 | -- guibg = {attribute='bg',highlight='TabLine'} 161 | -- }, 162 | indicator_selected = { 163 | guifg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" }, 164 | guibg = { attribute = "bg", highlight = "Normal" }, 165 | }, 166 | }, 167 | } 168 | -------------------------------------------------------------------------------- /.config/nvim/lua/user/whichkey.lua: -------------------------------------------------------------------------------- 1 | local status_ok, which_key = pcall(require, "which-key") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local setup = { 7 | plugins = { 8 | marks = true, -- shows a list of your marks on ' and ` 9 | registers = true, -- shows your registers on " in NORMAL or in INSERT mode 10 | spelling = { 11 | enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions 12 | suggestions = 20, -- how many suggestions should be shown in the list? 13 | }, 14 | -- the presets plugin, adds help for a bunch of default keybindings in Neovim 15 | -- No actual key bindings are created 16 | presets = { 17 | operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion 18 | motions = true, -- adds help for motions 19 | text_objects = true, -- help for text objects triggered after entering an operator 20 | windows = true, -- default bindings on 21 | nav = true, -- misc bindings to work with windows 22 | z = true, -- bindings for folds, spelling and others prefixed with z 23 | g = true, -- bindings for prefixed with g 24 | }, 25 | }, 26 | -- add operators that will trigger motion and text object completion 27 | -- to enable all native operators, set the preset / operators plugin above 28 | -- operators = { gc = "Comments" }, 29 | key_labels = { 30 | -- override the label used to display some keys. It doesn't effect WK in any other way. 31 | -- For example: 32 | -- [""] = "SPC", 33 | -- [""] = "RET", 34 | -- [""] = "TAB", 35 | }, 36 | icons = { 37 | breadcrumb = "»", -- symbol used in the command line area that shows your active key combo 38 | separator = "➜", -- symbol used between a key and it's label 39 | group = "+", -- symbol prepended to a group 40 | }, 41 | popup_mappings = { 42 | scroll_down = "", -- binding to scroll down inside the popup 43 | scroll_up = "", -- binding to scroll up inside the popup 44 | }, 45 | window = { 46 | border = "rounded", -- none, single, double, shadow 47 | position = "bottom", -- bottom, top 48 | margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] 49 | padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] 50 | winblend = 0, 51 | }, 52 | layout = { 53 | height = { min = 4, max = 25 }, -- min and max height of the columns 54 | width = { min = 20, max = 50 }, -- min and max width of the columns 55 | spacing = 3, -- spacing between columns 56 | align = "left", -- align columns left, center or right 57 | }, 58 | ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label 59 | hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate 60 | show_help = true, -- show help message on the command line when the popup is visible 61 | triggers = "auto", -- automatically setup triggers 62 | -- triggers = {""} -- or specify a list manually 63 | triggers_blacklist = { 64 | -- list of mode / prefixes that should never be hooked by WhichKey 65 | -- this is mostly relevant for key maps that start with a native binding 66 | -- most people should not need to change this 67 | i = { "j", "k" }, 68 | v = { "j", "k" }, 69 | }, 70 | } 71 | 72 | local opts = { 73 | mode = "n", -- NORMAL mode 74 | prefix = "", 75 | buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings 76 | silent = true, -- use `silent` when creating keymaps 77 | noremap = true, -- use `noremap` when creating keymaps 78 | nowait = true, -- use `nowait` when creating keymaps 79 | } 80 | 81 | local mappings = { 82 | ["a"] = { "Alpha", "Alpha" }, 83 | ["b"] = { 84 | "lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})", 85 | "Buffers", 86 | }, 87 | ["e"] = { "NvimTreeToggle", "Explorer" }, 88 | ["E"] = { "NvimTreeRefresh", "Refresh explorer" }, 89 | ["w"] = { "w!", "Save" }, 90 | ["q"] = { "q!", "Quit" }, 91 | ["c"] = { "Bdelete!", "Close Buffer" }, 92 | ["h"] = { "nohlsearch", "No Highlight" }, 93 | ["f"] = { 94 | "lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})", 95 | "Find files", 96 | }, 97 | ["F"] = { "Telescope live_grep theme=ivy", "Find Text" }, 98 | ["P"] = { "lua require('telescope').extensions.projects.projects()", "Projects" }, 99 | 100 | p = { 101 | name = "Packer", 102 | c = { "PackerCompile", "Compile" }, 103 | i = { "PackerInstall", "Install" }, 104 | s = { "PackerSync", "Sync" }, 105 | S = { "PackerStatus", "Status" }, 106 | u = { "PackerUpdate", "Update" }, 107 | }, 108 | 109 | g = { 110 | name = "Git", 111 | g = { "lua _LAZYGIT_TOGGLE()", "Lazygit" }, 112 | j = { "lua require 'gitsigns'.next_hunk()", "Next Hunk" }, 113 | k = { "lua require 'gitsigns'.prev_hunk()", "Prev Hunk" }, 114 | l = { "lua require 'gitsigns'.blame_line()", "Blame" }, 115 | p = { "lua require 'gitsigns'.preview_hunk()", "Preview Hunk" }, 116 | r = { "lua require 'gitsigns'.reset_hunk()", "Reset Hunk" }, 117 | R = { "lua require 'gitsigns'.reset_buffer()", "Reset Buffer" }, 118 | s = { "lua require 'gitsigns'.stage_hunk()", "Stage Hunk" }, 119 | u = { 120 | "lua require 'gitsigns'.undo_stage_hunk()", 121 | "Undo Stage Hunk", 122 | }, 123 | o = { "Telescope git_status", "Open changed file" }, 124 | b = { "Telescope git_branches", "Checkout branch" }, 125 | c = { "Telescope git_commits", "Checkout commit" }, 126 | d = { 127 | "Gitsigns diffthis HEAD", 128 | "Diff", 129 | }, 130 | }, 131 | 132 | l = { 133 | name = "LSP", 134 | a = { "lua vim.lsp.buf.code_action()", "Code Action" }, 135 | d = { 136 | "Telescope lsp_document_diagnostics", 137 | "Document Diagnostics", 138 | }, 139 | w = { 140 | "Telescope lsp_workspace_diagnostics", 141 | "Workspace Diagnostics", 142 | }, 143 | f = { "lua vim.lsp.buf.formatting()", "Format" }, 144 | i = { "LspInfo", "Info" }, 145 | I = { "LspInstallInfo", "Installer Info" }, 146 | j = { 147 | "lua vim.lsp.diagnostic.goto_next()", 148 | "Next Diagnostic", 149 | }, 150 | k = { 151 | "lua vim.lsp.diagnostic.goto_prev()", 152 | "Prev Diagnostic", 153 | }, 154 | l = { "lua vim.lsp.codelens.run()", "CodeLens Action" }, 155 | q = { "lua vim.lsp.diagnostic.set_loclist()", "Quickfix" }, 156 | r = { "lua vim.lsp.buf.rename()", "Rename" }, 157 | s = { "Telescope lsp_document_symbols", "Document Symbols" }, 158 | S = { 159 | "Telescope lsp_dynamic_workspace_symbols", 160 | "Workspace Symbols", 161 | }, 162 | }, 163 | s = { 164 | name = "Search", 165 | b = { "Telescope git_branches", "Checkout branch" }, 166 | c = { "Telescope colorscheme", "Colorscheme" }, 167 | h = { "Telescope help_tags", "Find Help" }, 168 | M = { "Telescope man_pages", "Man Pages" }, 169 | r = { "Telescope oldfiles", "Open Recent File" }, 170 | R = { "Telescope registers", "Registers" }, 171 | k = { "Telescope keymaps", "Keymaps" }, 172 | C = { "Telescope commands", "Commands" }, 173 | }, 174 | 175 | t = { 176 | name = "Terminal", 177 | n = { "lua _NODE_TOGGLE()", "Node" }, 178 | u = { "lua _NCDU_TOGGLE()", "NCDU" }, 179 | t = { "lua _HTOP_TOGGLE()", "Htop" }, 180 | p = { "lua _PYTHON_TOGGLE()", "Python" }, 181 | f = { "ToggleTerm direction=float", "Float" }, 182 | h = { "ToggleTerm size=10 direction=horizontal", "Horizontal" }, 183 | v = { "ToggleTerm size=80 direction=vertical", "Vertical" }, 184 | }, 185 | } 186 | 187 | which_key.setup(setup) 188 | which_key.register(mappings, opts) 189 | -------------------------------------------------------------------------------- /.config/polybar/config.ini: -------------------------------------------------------------------------------- 1 | [global/wm] 2 | margin-top = 0 3 | margin-bottom = 0 4 | 5 | include-file = ~/.config/polybar/glyphs.ini 6 | include-file = ~/.colors/active/active.ini 7 | 8 | [bar/main] 9 | width = 100% 10 | height = 20 11 | ;fixed-center = true 12 | 13 | background = ${colors.background} 14 | foreground = ${colors.foreground} 15 | 16 | module-margin-left = 1 17 | module-margin-right = 1 18 | 19 | font-0 = FiraCode Nerd Font:size=10;2 20 | font-1 = FiraCode Nerd Font:size=16;3 21 | 22 | ; font-0 = "Iosevka Nerd Font:pixelsize=10;3" 23 | ; font-1 = "Iosevka Nerd Font:style=Medium:size=22;5" 24 | 25 | cursor-click = pointer 26 | cursor-scroll = ns-resize 27 | 28 | wm-restack = bspwm 29 | 30 | 31 | 32 | [bar/top] 33 | monitor = eDP1 34 | inherit = bar/main 35 | fixed-center = false 36 | module-margin-left = 0 37 | module-margin-right = 0 38 | 39 | padding-right = 0 40 | padding-left = 0 41 | 42 | modules-left = pad-shade8 bspwm left2 43 | ;modules-center = xwindow 44 | modules-right = right7 eth wlan right6 filesystem right5 memory right4 cpu right3 temperature right2 battery right1 date 45 | 46 | ; tray-position = middle 47 | ; tray-padding = 2 48 | 49 | [bar/bottom] 50 | monitor = eDP1 51 | inherit = bar/main 52 | 53 | bottom = true 54 | padding-left = 1 55 | module-margin-left = 0 56 | module-margin-right = 0 57 | 58 | modules-left = mpd 59 | modules-center = xwindow 60 | modules-right = right7 pkgupdates right6 btc right5 xbacklight right4 pulseaudio right3 xkeyboard 61 | tray-position = right 62 | tray-padding = 2 63 | 64 | 65 | [bar/top2] 66 | inherit = bar/top 67 | monitor = HDMI1 68 | 69 | modules-left = pad-shade8 bspwm left2 70 | ;modules-center = xwindow 71 | modules-right = right7 eth wlan right6 filesystem right5 memory right4 cpu right3 temperature right2 battery right1 date 72 | 73 | 74 | [bar/bottom2] 75 | inherit = bar/bottom 76 | monitor = HDMI1 77 | 78 | modules-left = mpd 79 | modules-center = xwindow 80 | modules-right = right7 pkgupdates right6 hdmitext right5 pulseaudio right4 xkeyboard 81 | 82 | 83 | [bar/top3] 84 | inherit = bar/top 85 | monitor = DP1 86 | 87 | modules-left = pad-shade8 bspwm left2 88 | ;modules-center = xwindow 89 | modules-right = right7 eth wlan right6 filesystem right5 memory right4 cpu right3 temperature right2 battery right1 date 90 | 91 | 92 | [bar/bottom3] 93 | inherit = bar/bottom 94 | monitor = DP1 95 | 96 | modules-left = mpd 97 | modules-center = xwindow 98 | modules-right = right7 pkgupdates right6 hdmitext right5 pulseaudio right4 xkeyboard 99 | 100 | 101 | 102 | [module/hdmitext] 103 | type=custom/text 104 | content = "﴿ HDMI" 105 | content-background = ${colors.shade6} 106 | 107 | [module/xwindow] 108 | type = internal/xwindow 109 | format =