├── config ├── bspwm │ ├── apps │ │ ├── eww_overhaul │ │ │ ├── eww.scss │ │ │ ├── eww.yuck │ │ │ ├── scripts │ │ │ │ ├── watch_theme │ │ │ │ └── switch_theme │ │ │ └── colors │ │ │ │ ├── latte.scss │ │ │ │ └── mocha.scss │ │ ├── rofi │ │ │ ├── fonts.rasi │ │ │ ├── launch │ │ │ ├── powermenu │ │ │ ├── colors │ │ │ │ ├── latte.rasi │ │ │ │ ├── mocha.rasi │ │ │ │ ├── catppuccin.rasi │ │ │ │ └── tokyonight.rasi │ │ │ └── config.rasi │ │ ├── eww │ │ │ ├── assets │ │ │ │ └── pfp.png │ │ │ ├── theme_switcher │ │ │ │ ├── scripts │ │ │ │ │ ├── getRam │ │ │ │ │ ├── getCpu │ │ │ │ │ ├── playerStatus │ │ │ │ │ ├── watch_theme │ │ │ │ │ ├── echoSongArt │ │ │ │ │ ├── getSongArt │ │ │ │ │ ├── volume.sh │ │ │ │ │ ├── player.sh │ │ │ │ │ └── switch_theme │ │ │ │ ├── colors │ │ │ │ │ ├── latte.scss │ │ │ │ │ └── mocha.scss │ │ │ │ ├── eww.scss │ │ │ │ └── eww.yuck │ │ │ ├── bar │ │ │ │ ├── scripts │ │ │ │ │ ├── icons │ │ │ │ │ │ ├── mute.png │ │ │ │ │ │ └── volume.png │ │ │ │ │ ├── player.sh │ │ │ │ │ ├── volume.sh │ │ │ │ │ └── workspaces │ │ │ │ ├── colors │ │ │ │ │ ├── latte.scss │ │ │ │ │ └── mocha.scss │ │ │ │ ├── eww.scss │ │ │ │ └── eww.yuck │ │ │ ├── scripts │ │ │ │ ├── watch_theme │ │ │ │ └── switch_theme │ │ │ ├── openThemeSwitcher │ │ │ ├── colors │ │ │ │ ├── latte.scss │ │ │ │ └── mocha.scss │ │ │ ├── eww.scss │ │ │ └── eww.yuck │ │ ├── polybar │ │ │ ├── launch.sh │ │ │ ├── scripts │ │ │ │ ├── openThemeSwitcher │ │ │ │ └── player.sh │ │ │ ├── colors │ │ │ │ ├── decay.ini │ │ │ │ ├── dark-decay.ini │ │ │ │ ├── decayce.ini │ │ │ │ ├── light-decay.ini │ │ │ │ ├── frappe.ini │ │ │ │ ├── latte.ini │ │ │ │ ├── macchiato.ini │ │ │ │ ├── colors.ini │ │ │ │ └── mocha.ini │ │ │ ├── config.ini │ │ │ ├── .config.ini │ │ │ └── modules │ │ │ │ └── modules.ini │ │ ├── kitty │ │ │ ├── kitty.conf │ │ │ └── colors │ │ │ │ ├── rose-pine.conf │ │ │ │ ├── latte.conf │ │ │ │ └── mocha.conf │ │ ├── jgmenu │ │ │ ├── run │ │ │ ├── menu.txt │ │ │ ├── latte-jgmenurc │ │ │ └── mocha-jgmenurc │ │ ├── fetch │ │ │ └── conf │ │ ├── dunst │ │ │ ├── latte-dunstrc │ │ │ ├── dunstrc │ │ │ └── mocha-dunstrc │ │ └── picom │ │ │ └── picom.conf │ ├── wallpapers │ │ ├── flowers.png │ │ ├── pink_sky.png │ │ ├── street-tn.png │ │ ├── pink_minimal.png │ │ └── neon-shacks-tn.png │ ├── bspwmrc │ ├── autostart.sh │ ├── pkglist │ └── sxhkdrc ├── nvim │ ├── .github │ │ └── FUNDING.yml │ ├── lua │ │ └── user │ │ │ ├── impatient.lua │ │ │ ├── lsp │ │ │ ├── settings │ │ │ │ ├── pyright.lua │ │ │ │ └── sumneko_lua.lua │ │ │ ├── init.lua │ │ │ ├── null-ls.lua │ │ │ ├── mason.lua │ │ │ └── handlers.lua │ │ │ ├── colorscheme.lua │ │ │ ├── indentline.lua │ │ │ ├── project.lua │ │ │ ├── telescope.lua │ │ │ ├── autopairs.lua │ │ │ ├── treesitter.lua │ │ │ ├── comment.lua │ │ │ ├── illuminate.lua │ │ │ ├── toggleterm.lua │ │ │ ├── dap.lua │ │ │ ├── lualine.lua │ │ │ ├── alpha.lua │ │ │ ├── nvim-tree.lua │ │ │ ├── gitsigns.lua │ │ │ ├── autocommands.lua │ │ │ ├── keymaps.lua │ │ │ ├── cmp.lua │ │ │ ├── bufferline.lua │ │ │ ├── options.lua │ │ │ └── plugins.lua │ ├── .gitignore │ ├── init.lua │ └── README.md ├── fish │ └── config.fish └── starship.toml ├── home └── .xsettingsd ├── LICENSE ├── README.md └── bin └── fetch /config/bspwm/apps/eww_overhaul/eww.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww_overhaul/eww.yuck: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /home/.xsettingsd: -------------------------------------------------------------------------------- 1 | Net/ThemeName "Catppuccin-Mocha-Standard-Blue-Dark" 2 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/fonts.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | font: "Iosevka Nerd Font Semibold 11"; 3 | } 4 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/launch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rofi -show drun -theme ~/.config/bspwm/apps/rofi/config.rasi 4 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/assets/pfp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/apps/eww/assets/pfp.png -------------------------------------------------------------------------------- /config/bspwm/wallpapers/flowers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/wallpapers/flowers.png -------------------------------------------------------------------------------- /config/bspwm/wallpapers/pink_sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/wallpapers/pink_sky.png -------------------------------------------------------------------------------- /config/bspwm/wallpapers/street-tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/wallpapers/street-tn.png -------------------------------------------------------------------------------- /config/bspwm/wallpapers/pink_minimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/wallpapers/pink_minimal.png -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/launch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | killall polybar 4 | polybar -c $HOME/.config/bspwm/apps/polybar/config.ini & 5 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/powermenu: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | rofi -show p -modi p:rofi-power-menu -theme ~/.config/bspwm/apps/rofi/config.rasi 4 | -------------------------------------------------------------------------------- /config/bspwm/wallpapers/neon-shacks-tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/wallpapers/neon-shacks-tn.png -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/getRam: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | printf "%.0f\n" $(free -m | grep Mem | awk '{print ($3/$2)*100}') 4 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/scripts/icons/mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/apps/eww/bar/scripts/icons/mute.png -------------------------------------------------------------------------------- /config/nvim/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: christianchiarulli 4 | patreon: chrisatmachine 5 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/scripts/icons/volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ohxxm/dotfiles/HEAD/config/bspwm/apps/eww/bar/scripts/icons/volume.png -------------------------------------------------------------------------------- /config/fish/config.fish: -------------------------------------------------------------------------------- 1 | set -U fish_greeting 2 | starship init fish | source 3 | fetch -c ~/.config/bspwm/apps/fetch/conf 4 | 5 | alias ls="exa --icons -l" 6 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/getCpu: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}' | tr '.' ' ' | awk '{print $1}' 4 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/playerStatus: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | s=$(playerctl status) 4 | 5 | if [[ $s == "Playing" ]]; then 6 | echo " " 7 | else 8 | echo " " 9 | fi 10 | -------------------------------------------------------------------------------- /config/nvim/lua/user/lsp/settings/pyright.lua: -------------------------------------------------------------------------------- 1 | return { 2 | settings = { 3 | python = { 4 | analysis = { 5 | typeCheckingMode = "off", 6 | }, 7 | }, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/scripts/watch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=~/.cache/cached_theme 4 | 5 | if grep -q "Dark" "$FILE" 6 | then 7 | echo "Latte" 8 | else 9 | echo "Mocha" 10 | fi 11 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww_overhaul/scripts/watch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=~/.cache/cached_theme 4 | 5 | if grep -q "Dark" "$FILE" 6 | then 7 | echo "Latte" 8 | else 9 | echo "Mocha" 10 | fi 11 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/watch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=~/.cache/cached_theme 4 | 5 | if grep -q "Dark" "$FILE" 6 | then 7 | echo "Latte" 8 | else 9 | echo "Mocha" 10 | fi 11 | -------------------------------------------------------------------------------- /config/bspwm/apps/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | include ~/.config/bspwm/apps/kitty/colors/mocha.conf 2 | 3 | font_family Iosevka Term Nerd Font Complete Medium Italic 4 | font_size 15 5 | 6 | confirm_os_window_close 0 7 | 8 | window_margin_width 20 9 | -------------------------------------------------------------------------------- /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.mason" 7 | require("user.lsp.handlers").setup() 8 | require "user.lsp.null-ls" 9 | -------------------------------------------------------------------------------- /config/bspwm/apps/jgmenu/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | base=~/.config/bspwm/apps/jgmenu 4 | 5 | menu_file=$base/menu.txt 6 | conf_file=$base/mocha-jgmenurc 7 | 8 | killall jgmenu 9 | rm ~/.jgmenu-lockfile 10 | jgmenu --csv-file=$menu_file --config-file=$conf_file 11 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/echoSongArt: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | s=$(playerctl status) 4 | 5 | if [[ $s == "Playing" ]]; then 6 | echo "$HOME/.cache/eww/spotify/temp.png" 7 | elif [[ $s == "Paused" ]]; then 8 | echo "$HOME/.cache/eww/spotify/temp.png" 9 | else 10 | echo "" 11 | fi 12 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/scripts/openThemeSwitcher: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | FILE="$HOME/.cache/eww_launch.theme_switcher" 4 | EWW=`which eww` 5 | 6 | if [[ ! -f "$FILE" ]]; then 7 | touch "$FILE" 8 | eww -c ~/.config/bspwm/apps/eww/theme_switcher/ open theme_switcher 9 | else 10 | ${EWW} -c ~/.config/bspwm/apps/eww/theme_switcher/ close theme_switcher 11 | rm "$FILE" 12 | fi 13 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/colors/latte.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Author : Aditya Shakya (adi1090x) 4 | * Github : @adi1090x 5 | * 6 | * Colors 7 | **/ 8 | 9 | * { 10 | background: #EFF1F5FF; 11 | background-alt: #CCD0DAFF; 12 | foreground: #4C4F69FF; 13 | selected: #1E66F5FF; 14 | active: #40A02BFF; 15 | urgent: #D20F39FF; 16 | } 17 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/colors/mocha.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Author : Aditya Shakya (adi1090x) 4 | * Github : @adi1090x 5 | * 6 | * Colors 7 | **/ 8 | 9 | * { 10 | background: #1E1D2FFF; 11 | background-alt: #282839FF; 12 | foreground: #D9E0EEFF; 13 | selected: #7AA2F7FF; 14 | active: #ABE9B3FF; 15 | urgent: #F28FADFF; 16 | } 17 | -------------------------------------------------------------------------------- /config/bspwm/apps/fetch/conf: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | conf() { 4 | printf " 5 | (\ /) $(c 0 31) kr$(c 0 37) $(Kernel) 6 | ( · ·) $(c 0 34) os$(c 0 37) $(Os) 7 | c($(c 0 31)\"$(c 0 37))($(c 0 31)\"$(c 0 37)) $(c 0 33) wm$(c 0 37) $(Desktop) 8 | $(c 0 32) sh$(c 0 37) $(Shell) 9 | $(c 0 37) $(c 0 34) $(c 0 35) $(c 0 33) $(c 0 32) $(c 0 31) 10 | " 11 | } 12 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/colors/catppuccin.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Author : Aditya Shakya (adi1090x) 4 | * Github : @adi1090x 5 | * 6 | * Colors 7 | **/ 8 | 9 | * { 10 | background: #1E1D2FFF; 11 | background-alt: #282839FF; 12 | foreground: #D9E0EEFF; 13 | selected: #7AA2F7FF; 14 | active: #ABE9B3FF; 15 | urgent: #F28FADFF; 16 | } 17 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/colors/tokyonight.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Author : Levi Lacoss (fishyfishfish55) 4 | * Github : @fishyfishfish55 5 | * 6 | * Colors 7 | **/ 8 | 9 | * { 10 | background: #15161EFF; 11 | background-alt: #1A1B26FF; 12 | foreground: #C0CAF5FF; 13 | selected: #33467CFF; 14 | active: #414868FF; 15 | urgent: #F7768EFF; 16 | } 17 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/scripts/player.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | player_status=$(playerctl status 2> /dev/null) 4 | 5 | if [ "$player_status" = "Playing" ]; then 6 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 7 | elif [ "$player_status" = "Paused" ]; then 8 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 9 | else 10 | echo "Not Playing" 11 | fi 12 | 13 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/scripts/player.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | player_status=$(playerctl status 2> /dev/null) 4 | 5 | if [ "$player_status" = "Playing" ]; then 6 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 7 | elif [ "$player_status" = "Paused" ]; then 8 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 9 | else 10 | echo "Not Playing" 11 | fi 12 | 13 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/decay.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | base = #171B20 3 | mantle = #1a1e24 4 | crust = #1f2329 5 | 6 | text = #b6beca 7 | subtext0 = #e3e6eb 8 | subtext1 = #e3e6eb 9 | 10 | surface0 = #1f2329 11 | 12 | blue = #70a5eb 13 | green = #78dba9 14 | yellow = #f1cf8a 15 | mauve = #c68aee 16 | red = #e05f65 17 | peach = #e9a180 18 | pink = #cb8ff3 19 | sky = #74bee9 20 | 21 | transparent = #FF00000 22 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/dark-decay.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | base = #101419 3 | mantle = #15191e 4 | crust = #1a1e23 5 | 6 | text = #b6beca 7 | subtext0 = #dee1e6 8 | subtext1 = #dee1e6 9 | 10 | surface0 = #1a1e23 11 | 12 | blue = #70a5eb 13 | green = #78dba9 14 | yellow = #f1cf8a 15 | mauve = #c68aee 16 | red = #e05f65 17 | peach = #e9a180 18 | pink = #cb8ff3 19 | sky = #74bee9 20 | 21 | transparent = #FF00000 22 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/decayce.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | base = #0d0f18 3 | mantle = #151720 4 | crust = #1c1e27 5 | 6 | text = #a5b6c4 7 | subtext0 = #d0d3d8 8 | subtext1 = #d0d3d8 9 | 10 | surface0 = #1a1c25 11 | 12 | blue = #86aaec 13 | green = #95d3af 14 | yellow = #f1d8a5 15 | mauve = #c79bf0 16 | red = #e26c7c 17 | peach = #fab387 18 | pink = #c79bf0 19 | sky = #86aaec 20 | 21 | transparent = #FF00000 22 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/light-decay.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | base = #dee1e6 3 | mantle = #d9dce1 4 | crust = #d4d7dc 5 | 6 | text = #101419 7 | subtext0 = #1f2328 8 | subtext1 = #1f2328 9 | 10 | surface0 = #d4d7dc 11 | 12 | blue = #4d82c8 13 | green = #69b373 14 | yellow = #ceac67 15 | mauve = #a367cb 16 | red = #bd3c42 17 | peach = #e9a180 18 | pink = #a86cd0 19 | sky = #519bc6 20 | 21 | transparent = #FF00000 22 | -------------------------------------------------------------------------------- /config/nvim/lua/user/colorscheme.lua: -------------------------------------------------------------------------------- 1 | local colorscheme = "catppuccin" 2 | 3 | -- require('decay').setup({ 4 | -- style = 'decayce', 5 | -- transparent_background = true, 6 | -- }) 7 | 8 | require("catppuccin").setup({ 9 | transparent_background = true, 10 | flavour = "mocha", 11 | }) 12 | 13 | local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) 14 | if not status_ok then 15 | return 16 | end 17 | -------------------------------------------------------------------------------- /config/bspwm/bspwmrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | pgrep -x sxhkd > /dev/null || sxhkd -c ~/.config/bspwm/sxhkdrc & 4 | 5 | ~/.config/bspwm/autostart.sh 6 | 7 | bspc monitor -d 1 2 3 4 5 8 | 9 | bspc config border_width 0 10 | bspc config border_radius 0 11 | bspc config window_gap 12 12 | 13 | # bspc config focused_border_color "#89b4fa" 14 | # bspc config focused_border_color "#a6e3a1" 15 | # bspc config focused_border_color "#1d1d2d" 16 | -------------------------------------------------------------------------------- /config/nvim/lua/user/lsp/settings/sumneko_lua.lua: -------------------------------------------------------------------------------- 1 | return { 2 | settings = { 3 | Lua = { 4 | diagnostics = { 5 | globals = { "vim" }, 6 | }, 7 | workspace = { 8 | library = { 9 | [vim.fn.expand "$VIMRUNTIME/lua"] = true, 10 | [vim.fn.stdpath "config" .. "/lua"] = true, 11 | }, 12 | }, 13 | telemetry = { 14 | enable = false, 15 | }, 16 | }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /config/bspwm/autostart.sh: -------------------------------------------------------------------------------- 1 | xsetroot -cursor_name left_ptr & 2 | 3 | xinput --set-prop 'Glorious Model O' 'libinput Accel Profile Enabled' 0, 1 & 4 | 5 | picom --config ~/.config/bspwm/apps/picom/picom.conf & 6 | 7 | /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & 8 | 9 | dunst -config ~/.config/bspwm/apps/dunst/mocha-dunstrc & 10 | 11 | ~/.config/bspwm/apps/polybar/launch.sh & 12 | 13 | eww daemon & 14 | 15 | nitrogen --restore & 16 | 17 | xsettingsd & 18 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/openThemeSwitcher: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | FILE="$HOME/.cache/eww_launch.theme_switcher" 4 | EWW=`which eww` 5 | 6 | if [[ ! -f "$FILE" ]]; then 7 | touch "$FILE" 8 | eww -c ~/.config/bspwm/apps/eww/theme_switcher/ open-many theme_switcher music resourceUsage 9 | bspc config left_padding 400 10 | else 11 | ${EWW} -c ~/.config/bspwm/apps/eww/theme_switcher/ close theme_switcher music resourceUsage 12 | bspc config left_padding 0 13 | rm "$FILE" 14 | fi 15 | -------------------------------------------------------------------------------- /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 | indent_blankline.setup { 7 | char = "▏", 8 | show_trailing_blankline_indent = false, 9 | show_first_indent_level = true, 10 | use_treesitter = true, 11 | show_current_context = true, 12 | buftype_exclude = { "terminal", "nofile" }, 13 | filetype_exclude = { 14 | "help", 15 | "packer", 16 | "NvimTree", 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /config/nvim/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Lua sources 2 | luac.out 3 | 4 | # luarocks build files 5 | *.src.rock 6 | *.zip 7 | *.tar.gz 8 | 9 | # Object files 10 | *.o 11 | *.os 12 | *.ko 13 | *.obj 14 | *.elf 15 | 16 | # Precompiled Headers 17 | *.gch 18 | *.pch 19 | 20 | # Libraries 21 | *.lib 22 | *.a 23 | *.la 24 | *.lo 25 | *.def 26 | *.exp 27 | 28 | # Shared objects (inc. Windows DLLs) 29 | *.dll 30 | *.so 31 | *.so.* 32 | *.dylib 33 | 34 | # Executables 35 | *.exe 36 | *.out 37 | *.app 38 | *.i*86 39 | *.x86_64 40 | *.hex 41 | 42 | 43 | plugin/packer_compiled.lua 44 | java-debug/ 45 | vscode-java-test/ -------------------------------------------------------------------------------- /config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require "user.options" 2 | require "user.keymaps" 3 | require "user.plugins" 4 | require "user.autocommands" 5 | require "user.colorscheme" 6 | require "user.cmp" 7 | require "user.telescope" 8 | require "user.gitsigns" 9 | require "user.treesitter" 10 | require "user.autopairs" 11 | require "user.comment" 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.illuminate" 19 | require "user.indentline" 20 | require "user.alpha" 21 | require "user.lsp" 22 | require "user.dap" 23 | -------------------------------------------------------------------------------- /config/bspwm/apps/jgmenu/menu.txt: -------------------------------------------------------------------------------- 1 | Change Wallpaper,nitrogen,nitrogen 2 | Randomize Wallpaper,nitrogen --set-zoom-fill --save --random ~/walls_upscaled/,photo 3 | ^sep() 4 | 5 | Terminal,kitty --config ~/.config/bspwm/apps/kitty/kitty.conf,kitty 6 | Neovim,kitty --config ~/.config/bspwm/apps/kitty/kitty.conf -e nvim,nvim 7 | File Manager,nemo,nemo 8 | ^sep() 9 | 10 | Restart BSPWM,bspc wm -r,input-keyboard 11 | Restart SXHKD,killall sxhkd && bspc wm -r,input-keyboard 12 | 13 | Exit,^checkout(exit) 14 | 15 | ^tag(exit) 16 | Suspend,systemctl suspend,system-suspend 17 | Reboot,reboot,system-reboot 18 | Poweroff,poweroff,system-shutdown 19 | -------------------------------------------------------------------------------- /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 | 7 | -- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project 8 | detection_methods = { "pattern" }, 9 | 10 | -- patterns used to detect root dir, when **"pattern"** is in detection_methods 11 | patterns = { ".git", "Makefile", "package.json" }, 12 | }) 13 | 14 | local tele_status_ok, telescope = pcall(require, "telescope") 15 | if not tele_status_ok then 16 | return 17 | end 18 | 19 | telescope.load_extension('projects') 20 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/colors/latte.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #eff1f5; 3 | $mantle: #e6e9ef; 4 | $crust: #dce0e8; 5 | 6 | $text: #4c4f69; 7 | $subtext0: #6c6f85; 8 | $subtext1: #5c5f77; 9 | 10 | $surface0: #ccd0da; 11 | $surface1: #bcc0cc; 12 | $surface2: #acb0be; 13 | 14 | $overlay0: #9ca0b0; 15 | $overlay1: #8c8fa1; 16 | $overlay2: #7c7f93; 17 | 18 | $blue: #1e66f5; 19 | $lavender: #7287fd; 20 | $sapphire: #209fb5; 21 | $sky: #04a5e5; 22 | $teal: #179299; 23 | $green: #40a02b; 24 | $yellow: #df8e1d; 25 | $peach: #fe640b; 26 | $maroon: #e64553; 27 | $red: #d20f39; 28 | $mauve: #8839ef; 29 | $pink: #ea76cb; 30 | $flamingo: #dd7878; 31 | $rosewater: #dc8a78; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/colors/mocha.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #1e1e2e; 3 | $mantle: #181825; 4 | $crust: #11111b; 5 | 6 | $text: #cdd6f4; 7 | $subtext0: #a6adc8; 8 | $subtext1: #bac2de; 9 | 10 | $surface0: #313244; 11 | $surface1: #45475a; 12 | $surface2: #585b70; 13 | 14 | $overlay0: #6c7086; 15 | $overlay1: #7f849c; 16 | $overlay2: #9399b2; 17 | 18 | $blue: #89b4fa; 19 | $lavender: #b4befe; 20 | $sapphire: #74c7ec; 21 | $sky: #89dceb; 22 | $teal: #94e2d5; 23 | $green: #a6e3a1; 24 | $yellow: #f9e2af; 25 | $peach: #fab387; 26 | $maroon: #eba0ac; 27 | $red: #f38ba8; 28 | $mauve: #cba6f7; 29 | $pink: #f5c2e7; 30 | $flamingo: #f2cdcd; 31 | $rosewater: #f5e0dc; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/colors/latte.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #eff1f5; 3 | $mantle: #e6e9ef; 4 | $crust: #dce0e8; 5 | 6 | $text: #4c4f69; 7 | $subtext0: #6c6f85; 8 | $subtext1: #5c5f77; 9 | 10 | $surface0: #ccd0da; 11 | $surface1: #bcc0cc; 12 | $surface2: #acb0be; 13 | 14 | $overlay0: #9ca0b0; 15 | $overlay1: #8c8fa1; 16 | $overlay2: #7c7f93; 17 | 18 | $blue: #1e66f5; 19 | $lavender: #7287fd; 20 | $sapphire: #209fb5; 21 | $sky: #04a5e5; 22 | $teal: #179299; 23 | $green: #40a02b; 24 | $yellow: #df8e1d; 25 | $peach: #fe640b; 26 | $maroon: #e64553; 27 | $red: #d20f39; 28 | $mauve: #8839ef; 29 | $pink: #ea76cb; 30 | $flamingo: #dd7878; 31 | $rosewater: #dc8a78; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/colors/mocha.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #1e1e2e; 3 | $mantle: #181825; 4 | $crust: #11111b; 5 | 6 | $text: #cdd6f4; 7 | $subtext0: #a6adc8; 8 | $subtext1: #bac2de; 9 | 10 | $surface0: #313244; 11 | $surface1: #45475a; 12 | $surface2: #585b70; 13 | 14 | $overlay0: #6c7086; 15 | $overlay1: #7f849c; 16 | $overlay2: #9399b2; 17 | 18 | $blue: #89b4fa; 19 | $lavender: #b4befe; 20 | $sapphire: #74c7ec; 21 | $sky: #89dceb; 22 | $teal: #94e2d5; 23 | $green: #a6e3a1; 24 | $yellow: #f9e2af; 25 | $peach: #fab387; 26 | $maroon: #eba0ac; 27 | $red: #f38ba8; 28 | $mauve: #cba6f7; 29 | $pink: #f5c2e7; 30 | $flamingo: #f2cdcd; 31 | $rosewater: #f5e0dc; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /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 | file_ignore_patterns = { ".git/", "node_modules" }, 15 | 16 | mappings = { 17 | i = { 18 | [""] = actions.cycle_history_next, 19 | [""] = actions.cycle_history_prev, 20 | [""] = actions.move_selection_next, 21 | [""] = actions.move_selection_previous, 22 | }, 23 | }, 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww_overhaul/colors/latte.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #eff1f5; 3 | $mantle: #e6e9ef; 4 | $crust: #dce0e8; 5 | 6 | $text: #4c4f69; 7 | $subtext0: #6c6f85; 8 | $subtext1: #5c5f77; 9 | 10 | $surface0: #ccd0da; 11 | $surface1: #bcc0cc; 12 | $surface2: #acb0be; 13 | 14 | $overlay0: #9ca0b0; 15 | $overlay1: #8c8fa1; 16 | $overlay2: #7c7f93; 17 | 18 | $blue: #1e66f5; 19 | $lavender: #7287fd; 20 | $sapphire: #209fb5; 21 | $sky: #04a5e5; 22 | $teal: #179299; 23 | $green: #40a02b; 24 | $yellow: #df8e1d; 25 | $peach: #fe640b; 26 | $maroon: #e64553; 27 | $red: #d20f39; 28 | $mauve: #8839ef; 29 | $pink: #ea76cb; 30 | $flamingo: #dd7878; 31 | $rosewater: #dc8a78; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww_overhaul/colors/mocha.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #1e1e2e; 3 | $mantle: #181825; 4 | $crust: #11111b; 5 | 6 | $text: #cdd6f4; 7 | $subtext0: #a6adc8; 8 | $subtext1: #bac2de; 9 | 10 | $surface0: #313244; 11 | $surface1: #45475a; 12 | $surface2: #585b70; 13 | 14 | $overlay0: #6c7086; 15 | $overlay1: #7f849c; 16 | $overlay2: #9399b2; 17 | 18 | $blue: #89b4fa; 19 | $lavender: #b4befe; 20 | $sapphire: #74c7ec; 21 | $sky: #89dceb; 22 | $teal: #94e2d5; 23 | $green: #a6e3a1; 24 | $yellow: #f9e2af; 25 | $peach: #fab387; 26 | $maroon: #eba0ac; 27 | $red: #f38ba8; 28 | $mauve: #cba6f7; 29 | $pink: #f5c2e7; 30 | $flamingo: #f2cdcd; 31 | $rosewater: #f5e0dc; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/colors/latte.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #eff1f5; 3 | $mantle: #e6e9ef; 4 | $crust: #dce0e8; 5 | 6 | $text: #4c4f69; 7 | $subtext0: #6c6f85; 8 | $subtext1: #5c5f77; 9 | 10 | $surface0: #ccd0da; 11 | $surface1: #bcc0cc; 12 | $surface2: #acb0be; 13 | 14 | $overlay0: #9ca0b0; 15 | $overlay1: #8c8fa1; 16 | $overlay2: #7c7f93; 17 | 18 | $blue: #1e66f5; 19 | $lavender: #7287fd; 20 | $sapphire: #209fb5; 21 | $sky: #04a5e5; 22 | $teal: #179299; 23 | $green: #40a02b; 24 | $yellow: #df8e1d; 25 | $peach: #fe640b; 26 | $maroon: #e64553; 27 | $red: #d20f39; 28 | $mauve: #8839ef; 29 | $pink: #ea76cb; 30 | $flamingo: #dd7878; 31 | $rosewater: #dc8a78; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/colors/mocha.scss: -------------------------------------------------------------------------------- 1 | // Variable Color's 2 | $base: #1e1e2e; 3 | $mantle: #181825; 4 | $crust: #11111b; 5 | 6 | $text: #cdd6f4; 7 | $subtext0: #a6adc8; 8 | $subtext1: #bac2de; 9 | 10 | $surface0: #313244; 11 | $surface1: #45475a; 12 | $surface2: #585b70; 13 | 14 | $overlay0: #6c7086; 15 | $overlay1: #7f849c; 16 | $overlay2: #9399b2; 17 | 18 | $blue: #89b4fa; 19 | $lavender: #b4befe; 20 | $sapphire: #74c7ec; 21 | $sky: #89dceb; 22 | $teal: #94e2d5; 23 | $green: #a6e3a1; 24 | $yellow: #f9e2af; 25 | $peach: #fab387; 26 | $maroon: #eba0ac; 27 | $red: #f38ba8; 28 | $mauve: #cba6f7; 29 | $pink: #f5c2e7; 30 | $flamingo: #f2cdcd; 31 | $rosewater: #f5e0dc; 32 | $transparent: #FF0000; 33 | -------------------------------------------------------------------------------- /config/bspwm/pkglist: -------------------------------------------------------------------------------- 1 | bspwm 2 | sxhkd 3 | polybar 4 | eww 5 | fish 6 | starship 7 | nemo 8 | nitrogen 9 | exa 10 | duf 11 | dunst 12 | git 13 | firefox 14 | neovim 15 | rofi 16 | rofi-power-menu 17 | kitty 18 | lxappearance 19 | catppuccin-gtk-theme-mocha 20 | catppuccin-gtk-theme-latte 21 | volantes-cursors 22 | zafiro-icon-theme 23 | noto-fonts 24 | noto-fonts-emoji 25 | picom-pijulius-git 26 | flameshot 27 | pavucontrol 28 | polkit-gnome 29 | ttf-iosevka-nerd 30 | ttf-sourcecodepro-nerd 31 | ttf-jetbrains-mono-nerd 32 | ttf-material-design-icons-git 33 | xdotool 34 | xsettingsd 35 | xqp 36 | xdo 37 | sddm 38 | xorg-xinput 39 | ttf-material-icons-git 40 | xorg-xsetroot 41 | pulseaudio-equalizer-ladspa 42 | playerctl 43 | pamixer 44 | jgmenu 45 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/getSongArt: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | tmp_dir="$HOME/.cache/eww/spotify" 4 | tmp_cover_path=$tmp_dir/cover.png 5 | tmp_temp_path=$tmp_dir/temp.png 6 | 7 | if [ ! -d $tmp_dir ]; then 8 | mkdir -p $tmp_dir 9 | fi 10 | 11 | artlink="$(playerctl metadata mpris:artUrl)" 12 | 13 | if [ $(playerctl metadata mpris:artUrl) ]; then 14 | curl -s "$artlink" --output $tmp_temp_path 15 | else 16 | cp $HOME/.config/eww/assets/fallback.png $tmp_temp_path 17 | fi 18 | 19 | # an epic effekt 20 | # convert $tmp_temp_path -alpha set -channel A -evaluate multiply 0.3 $tmp_cover_path 21 | # convert $tmp_temp_path -gravity center +repage -alpha set -channel A \ 22 | # -sparse-color Barycentric '%[fx:w*2/32],0 opaque %[fx:w+0.5],0 transparent' \ 23 | # -evaluate multiply 0.5 \ 24 | # $tmp_cover_path 25 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/frappe.ini: -------------------------------------------------------------------------------- 1 | ;------------------------- 2 | ; Catppuccin Frappé Palette 3 | ; Maintainer: justTOBBI 4 | ;-------------------------- 5 | 6 | [colors] 7 | base = #303446 8 | mantle = #292c3c 9 | crust = #232634 10 | 11 | text = #c6d0f5 12 | subtext0 = #a5adce 13 | subtext1 = #b5bfe2 14 | 15 | surface0 = #414559 16 | surface1 = #51576d 17 | surface2 = #626880 18 | 19 | overlay0 = #737994 20 | overlay1 = #838ba7 21 | overlay2 = #949cbb 22 | 23 | 24 | blue = #8caaee 25 | lavender = #babbf1 26 | sapphire = #85c1dc 27 | sky = #99d1db 28 | teal = #81c8be 29 | green = #a6d189 30 | yellow = #e5c890 31 | peach = #ef9f76 32 | maroon = #ea999c 33 | red = #e78284 34 | mauve = #ca9ee6 35 | pink = #f4b8e4 36 | flamingo = #eebebe 37 | rosewater = #f2d5cf 38 | 39 | transparent = #FF00000 40 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/latte.ini: -------------------------------------------------------------------------------- 1 | ;------------------------- 2 | ; Catppuccin Latte Palette 3 | ; Maintainer: justTOBBI 4 | ;-------------------------- 5 | 6 | [colors] 7 | base = #eff1f5 8 | mantle = #e6e9ef 9 | crust = #dce0e8 10 | 11 | text = #4c4f69 12 | subtext0 = #6c6f85 13 | subtext1 = #5c5f77 14 | 15 | surface0 = #ccd0da 16 | surface1 = #bcc0cc 17 | surface2 = #acb0be 18 | 19 | overlay0 = #9ca0b0 20 | overlay1 = #8c8fa1 21 | overlay2 = #7c7f93 22 | 23 | 24 | blue = #1e66f5 25 | lavender = #7287fd 26 | sapphire = #209fb5 27 | sky = #04a5e5 28 | teal = #179299 29 | green = #40a02b 30 | yellow = #df8e1d 31 | peach = #fe640b 32 | maroon = #e64553 33 | red = #d20f39 34 | mauve = #8839ef 35 | pink = #ea76cb 36 | flamingo = #dd7878 37 | rosewater = #dc8a78 38 | 39 | transparent = #FF00000 40 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/macchiato.ini: -------------------------------------------------------------------------------- 1 | ;------------------------- 2 | ; Catppuccin Macchiato Palette 3 | ; Maintainer: justTOBBI 4 | ;-------------------------- 5 | 6 | [colors] 7 | base = #24273a 8 | mantle = #1e2030 9 | crust = #181926 10 | 11 | text = #cad3f5 12 | subtext0 = #a5adcb 13 | subtext1 = #b8c0e0 14 | 15 | surface0 = #363a4f 16 | surface1 = #494d64 17 | surface2 = #5b6078 18 | 19 | overlay0 = #6e738d 20 | overlay1 = #8087a2 21 | overlay2 = #939ab7 22 | 23 | 24 | blue = #8aadf4 25 | lavender = #b7bdf8 26 | sapphire = #7dc4e4 27 | sky = #91d7e3 28 | teal = #8bd5ca 29 | green = #a6da95 30 | yellow = #eed49f 31 | peach = #f5a97f 32 | maroon = #ee99a0 33 | red = #ed8796 34 | mauve = #c6a0f6 35 | pink = #f5bde6 36 | flamingo = #f0c6c6 37 | rosewater = #f4dbd6 38 | 39 | transparent = #FF00000 40 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/eww.scss: -------------------------------------------------------------------------------- 1 | @import 'colors/mocha'; 2 | 3 | * { 4 | all: unset; //Unsets everything so you can style everything from scratch 5 | } 6 | 7 | //Global Styles 8 | .dashboard { 9 | background-color: $base; 10 | color: $text; 11 | padding: 10px; 12 | } 13 | 14 | .title { 15 | font-size: 2.5em; 16 | font-family: JetBrainsMono Nerd Font; 17 | font-weight: Bold; 18 | } 19 | 20 | .name { 21 | font-family: Iosevka Nerd Font; 22 | font-weight: Bold; 23 | font-size: 2em; 24 | padding-left: 5.5em; 25 | padding-bottom: 6em; 26 | } 27 | 28 | .pfp { 29 | background-image: url("assets/pfp.png"); 30 | background-repeat: no-repeat; 31 | background-size:10rem; 32 | min-height: 240px; 33 | min-width: 240px; 34 | } 35 | 36 | .switch_theme_btn { 37 | background-color: $surface0; 38 | color: $text; 39 | border-radius: 20px; 40 | font-size: 1.2em; 41 | padding: 10px; 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 | -- https://github.com/prettier-solidity/prettier-plugin-solidity 12 | null_ls.setup { 13 | debug = false, 14 | sources = { 15 | formatting.prettier.with { 16 | extra_filetypes = { "toml" }, 17 | extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" }, 18 | }, 19 | formatting.black.with { extra_args = { "--fast" } }, 20 | formatting.stylua, 21 | formatting.google_java_format, 22 | diagnostics.flake8, 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /config/bspwm/apps/jgmenu/latte-jgmenurc: -------------------------------------------------------------------------------- 1 | stay_alive = 1 2 | tint2_look = 0 3 | position_mode = pointer 4 | terminal_exec = kitty 5 | terminal_args = -e 6 | sub_spacing = 5 7 | menu_width = 200 8 | menu_padding_top = 5 9 | menu_padding_right = 2 10 | menu_padding_bottom = 5 11 | menu_padding_left = 2 12 | menu_radius = 0 13 | menu_border = 0 14 | menu_halign = left 15 | sub_hover_action = 1 16 | item_margin_y = 5 17 | item_height = 30 18 | item_padding_x = 8 19 | item_radius = 6 20 | item_border = 0 21 | sep_height = 5 22 | font = Iosevka Nerd Font 15px 23 | icon_theme = zafiro 24 | icon_size = 24 25 | color_menu_bg = #eff1f5 100 26 | color_norm_fg = #4c4f69 100 27 | color_sel_bg = #ccd0da 100 28 | color_sel_fg = #1e66f5 100 29 | color_sep_fg = #4c4f69 40 30 | -------------------------------------------------------------------------------- /config/bspwm/apps/jgmenu/mocha-jgmenurc: -------------------------------------------------------------------------------- 1 | stay_alive = 1 2 | tint2_look = 0 3 | position_mode = pointer 4 | terminal_exec = kitty 5 | terminal_args = -e 6 | sub_spacing = 5 7 | menu_width = 200 8 | menu_padding_top = 5 9 | menu_padding_right = 2 10 | menu_padding_bottom = 5 11 | menu_padding_left = 2 12 | menu_radius = 0 13 | menu_border = 0 14 | menu_halign = left 15 | sub_hover_action = 1 16 | item_margin_y = 5 17 | item_height = 30 18 | item_padding_x = 8 19 | item_radius = 6 20 | item_border = 0 21 | sep_height = 5 22 | font = Iosevka Nerd Font 15px 23 | icon_theme = zafiro 24 | icon_size = 24 25 | color_menu_bg = #1e1e2e 100 26 | color_norm_fg = #cdd6f4 100 27 | color_sel_bg = #313244 100 28 | color_sel_fg = #89dceb 100 29 | color_sep_fg = #cdd6f4 40 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, -- treesitter integration 9 | disable_filetype = { "TelescopePrompt" }, 10 | ts_config = { 11 | lua = { "string", "source" }, 12 | javascript = { "string", "template_string" }, 13 | java = false, 14 | }, 15 | 16 | fast_wrap = { 17 | map = "", 18 | chars = { "{", "[", "(", '"', "'" }, 19 | pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), 20 | offset = 0, -- Offset from pattern match 21 | end_key = "$", 22 | keys = "qwertyuiopzxcvbnmasdfghjkl", 23 | check_comma = true, 24 | highlight = "PmenuSel", 25 | highlight_grey = "LineNr", 26 | }, 27 | } 28 | 29 | local cmp_autopairs = require "nvim-autopairs.completion.cmp" 30 | local cmp_status_ok, cmp = pcall(require, "cmp") 31 | if not cmp_status_ok then 32 | return 33 | end 34 | cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done {}) 35 | -------------------------------------------------------------------------------- /config/nvim/lua/user/treesitter.lua: -------------------------------------------------------------------------------- 1 | local status_ok, treesitter = pcall(require, "nvim-treesitter") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local status_ok, configs = pcall(require, "nvim-treesitter.configs") 7 | if not status_ok then 8 | return 9 | end 10 | 11 | configs.setup({ 12 | ensure_installed = { "lua", "markdown", "markdown_inline", "bash", "python" }, -- put the language you want in this array 13 | -- ensure_installed = "all", -- one of "all" or a list of languages 14 | ignore_install = { "" }, -- List of parsers to ignore installing 15 | sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) 16 | 17 | highlight = { 18 | enable = true, -- false will disable the whole extension 19 | disable = { "css" }, -- list of language that will be disabled 20 | }, 21 | autopairs = { 22 | enable = true, 23 | }, 24 | indent = { enable = true, disable = { "python", "css" } }, 25 | 26 | context_commentstring = { 27 | enable = true, 28 | enable_autocmd = false, 29 | }, 30 | 31 | }) 32 | -------------------------------------------------------------------------------- /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 | -- Only calculate commentstring for tsx filetypes 9 | if vim.bo.filetype == "typescriptreact" then 10 | local U = require("Comment.utils") 11 | 12 | -- Determine whether to use linewise or blockwise commentstring 13 | local type = ctx.ctype == U.ctype.linewise and "__default" or "__multiline" 14 | 15 | -- Determine the location where to calculate commentstring from 16 | local location = nil 17 | if ctx.ctype == U.ctype.blockwise then 18 | location = require("ts_context_commentstring.utils").get_cursor_location() 19 | elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then 20 | location = require("ts_context_commentstring.utils").get_visual_start_location() 21 | end 22 | 23 | return require("ts_context_commentstring.internal").calculate_commentstring({ 24 | key = type, 25 | location = location, 26 | }) 27 | end 28 | end, 29 | }) 30 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwidget dashboard [] 2 | (box :orientation "v" 3 | :class "dashboard" 4 | :space-evenly "false" 5 | (box :orientation "v" 6 | :space-evenly "false" 7 | (title) 8 | (theme_switch) 9 | ))) 10 | 11 | (defpoll SWITCH_THEME "~/.config/bspwm/apps/eww/scripts/watch_theme") 12 | 13 | (defwidget title [] 14 | (box 15 | :class "title" 16 | (label 17 | :text "Theme Switcher" 18 | ) 19 | ) 20 | ) 21 | 22 | (defwidget theme_switch [] 23 | (box 24 | :orientation "v" 25 | :space-evenly "false" 26 | :class "theme_switcher" 27 | (button 28 | :class "switch_theme_btn" 29 | :onclick "~/.config/bspwm/apps/eww/scripts/switch_theme" 30 | "Catppuccin ${SWITCH_THEME}" 31 | ) 32 | ) 33 | ) 34 | 35 | (defwindow dashboard 36 | :monitor 0 37 | :geometry (geometry :x "20" 38 | :y "80" 39 | :height "30%" 40 | :width "15%" 41 | :anchor "top left") 42 | :windowtype "dock" 43 | :wm-ignore true 44 | (dashboard)) 45 | -------------------------------------------------------------------------------- /config/nvim/lua/user/illuminate.lua: -------------------------------------------------------------------------------- 1 | local status_ok, illuminate = pcall(require, "illuminate") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | vim.g.Illuminate_ftblacklist = {'alpha', 'NvimTree'} 7 | vim.api.nvim_set_keymap('n', '', 'lua require"illuminate".next_reference{wrap=true}', {noremap=true}) 8 | vim.api.nvim_set_keymap('n', '', 'lua require"illuminate".next_reference{reverse=true,wrap=true}', {noremap=true}) 9 | 10 | illuminate.configure { 11 | providers = { 12 | "lsp", 13 | "treesitter", 14 | "regex", 15 | }, 16 | delay = 200, 17 | filetypes_denylist = { 18 | "dirvish", 19 | "fugitive", 20 | "alpha", 21 | "NvimTree", 22 | "packer", 23 | "neogitstatus", 24 | "Trouble", 25 | "lir", 26 | "Outline", 27 | "spectre_panel", 28 | "toggleterm", 29 | "DressingSelect", 30 | "TelescopePrompt", 31 | }, 32 | filetypes_allowlist = {}, 33 | modes_denylist = {}, 34 | modes_allowlist = {}, 35 | providers_regex_syntax_denylist = {}, 36 | providers_regex_syntax_allowlist = {}, 37 | under_cursor = true, 38 | } 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License Copyright (c) 2023 Spaxly 2 | 3 | Permission is hereby granted, free of charge, 4 | to any person obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, distribute, 7 | sublicense, and/or sell copies of the Software, and to permit persons to whom the 8 | Software is furnished to do so, subject to the following conditions: 9 | 10 | The above 11 | copyright notice and this permission notice (including the next paragraph) shall 12 | be included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE 15 | IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 16 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 17 | PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 18 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/colors.ini: -------------------------------------------------------------------------------- 1 | ; [colors] 2 | ; background = #1d1d2d 3 | ; background-alt = #11111b 4 | ; foreground = #cdd6f4 5 | ; primary = #89dceb 6 | ; secondary = #74c7ec 7 | ; alert = #f38ba8 8 | ; black = #24283b 9 | ; cyan = #89dceb 10 | ; green = #a6e3a1 11 | ; orange = #fab387 12 | ; yellow = #f9e2af 13 | ; red = #f38ba8 14 | ; pink = #f5c2e7 15 | ; blue = #89b4fa 16 | 17 | ;------------------------- 18 | ; Catppuccin Mocha Palette 19 | ; Maintainer: justTOBBI 20 | ;-------------------------- 21 | 22 | [colors] 23 | base = #1e1e2e 24 | mantle = #181825 25 | crust = #11111b 26 | 27 | text = #cdd6f4 28 | subtext0 = #a6adc8 29 | subtext1 = #bac2de 30 | 31 | surface0 = #313244 32 | surface1 = #45475a 33 | surface2 = #585b70 34 | 35 | overlay0 = #6c7086 36 | overlay1 = #7f849c 37 | overlay2 = #9399b2 38 | 39 | 40 | blue = #89b4fa 41 | lavender = #b4befe 42 | sapphire = #74c7ec 43 | sky = #89dceb 44 | teal = #94e2d5 45 | green = #a6e3a1 46 | yellow = #f9e2af 47 | peach = #fab387 48 | maroon = #eba0ac 49 | red = #f38ba8 50 | mauve = #cba6f7 51 | pink = #f5c2e7 52 | flamingo = #f2cdcd 53 | rosewater = #f5e0dc 54 | 55 | transparent = #FF00000 56 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/colors/mocha.ini: -------------------------------------------------------------------------------- 1 | ; [colors] 2 | ; background = #1d1d2d 3 | ; background-alt = #11111b 4 | ; foreground = #cdd6f4 5 | ; primary = #89dceb 6 | ; secondary = #74c7ec 7 | ; alert = #f38ba8 8 | ; black = #24283b 9 | ; cyan = #89dceb 10 | ; green = #a6e3a1 11 | ; orange = #fab387 12 | ; yellow = #f9e2af 13 | ; red = #f38ba8 14 | ; pink = #f5c2e7 15 | ; blue = #89b4fa 16 | 17 | ;------------------------- 18 | ; Catppuccin Mocha Palette 19 | ; Maintainer: justTOBBI 20 | ;-------------------------- 21 | 22 | [colors] 23 | base = #1e1e2e 24 | mantle = #181825 25 | crust = #11111b 26 | 27 | text = #cdd6f4 28 | subtext0 = #a6adc8 29 | subtext1 = #bac2de 30 | 31 | surface0 = #313244 32 | surface1 = #45475a 33 | surface2 = #585b70 34 | 35 | overlay0 = #6c7086 36 | overlay1 = #7f849c 37 | overlay2 = #9399b2 38 | 39 | 40 | blue = #89b4fa 41 | lavender = #b4befe 42 | sapphire = #74c7ec 43 | sky = #89dceb 44 | teal = #94e2d5 45 | green = #a6e3a1 46 | yellow = #f9e2af 47 | peach = #fab387 48 | maroon = #eba0ac 49 | red = #f38ba8 50 | mauve = #cba6f7 51 | pink = #f5c2e7 52 | flamingo = #f2cdcd 53 | rosewater = #f5e0dc 54 | 55 | transparent = #FF00000 56 | -------------------------------------------------------------------------------- /config/bspwm/apps/kitty/colors/rose-pine.conf: -------------------------------------------------------------------------------- 1 | ## name: Rosé Pine 2 | ## author: mvllow 3 | ## license: MIT 4 | ## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf 5 | ## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist 6 | 7 | foreground #e0def4 8 | background #191724 9 | selection_foreground #e0def4 10 | selection_background #403d52 11 | 12 | cursor #524f67 13 | cursor_text_color #e0def4 14 | 15 | url_color #c4a7e7 16 | 17 | active_tab_foreground #e0def4 18 | active_tab_background #26233a 19 | inactive_tab_foreground #6e6a86 20 | inactive_tab_background #191724 21 | 22 | # black 23 | color0 #26233a 24 | color8 #6e6a86 25 | 26 | # red 27 | color1 #eb6f92 28 | color9 #eb6f92 29 | 30 | # green 31 | color2 #31748f 32 | color10 #31748f 33 | 34 | # yellow 35 | color3 #f6c177 36 | color11 #f6c177 37 | 38 | # blue 39 | color4 #9ccfd8 40 | color12 #9ccfd8 41 | 42 | # magenta 43 | color5 #c4a7e7 44 | color13 #c4a7e7 45 | 46 | # cyan 47 | color6 #ebbcba 48 | color14 #ebbcba 49 | 50 | # white 51 | color7 #e0def4 52 | color15 #e0def4 53 | -------------------------------------------------------------------------------- /config/nvim/lua/user/lsp/mason.lua: -------------------------------------------------------------------------------- 1 | local servers = { 2 | "sumneko_lua", 3 | "cssls", 4 | "html", 5 | "tsserver", 6 | "pyright", 7 | "bashls", 8 | "jsonls", 9 | "yamlls", 10 | } 11 | 12 | local settings = { 13 | ui = { 14 | border = "none", 15 | icons = { 16 | package_installed = "◍", 17 | package_pending = "◍", 18 | package_uninstalled = "◍", 19 | }, 20 | }, 21 | log_level = vim.log.levels.INFO, 22 | max_concurrent_installers = 4, 23 | } 24 | 25 | require("mason").setup(settings) 26 | require("mason-lspconfig").setup({ 27 | ensure_installed = servers, 28 | automatic_installation = true, 29 | }) 30 | 31 | local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") 32 | if not lspconfig_status_ok then 33 | return 34 | end 35 | 36 | local opts = {} 37 | 38 | for _, server in pairs(servers) do 39 | opts = { 40 | on_attach = require("user.lsp.handlers").on_attach, 41 | capabilities = require("user.lsp.handlers").capabilities, 42 | } 43 | 44 | server = vim.split(server, "@")[1] 45 | 46 | local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) 47 | if require_ok then 48 | opts = vim.tbl_deep_extend("force", conf_opts, opts) 49 | end 50 | 51 | lspconfig[server].setup(opts) 52 | end 53 | -------------------------------------------------------------------------------- /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 = 10, 8 | open_mapping = [[]], 9 | hide_numbers = true, 10 | shade_terminals = true, 11 | shading_factor = 2, 12 | start_in_insert = true, 13 | insert_mappings = true, 14 | persist_size = true, 15 | direction = "float", 16 | close_on_exit = true, 17 | shell = vim.o.shell, 18 | float_opts = { 19 | border = "curved", 20 | }, 21 | }) 22 | 23 | function _G.set_terminal_keymaps() 24 | local opts = {noremap = true} 25 | -- vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) 26 | vim.api.nvim_buf_set_keymap(0, 't', '', [[h]], opts) 27 | vim.api.nvim_buf_set_keymap(0, 't', '', [[j]], opts) 28 | vim.api.nvim_buf_set_keymap(0, 't', '', [[k]], opts) 29 | vim.api.nvim_buf_set_keymap(0, 't', '', [[l]], opts) 30 | end 31 | 32 | vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') 33 | 34 | local Terminal = require("toggleterm.terminal").Terminal 35 | local lazygit = Terminal:new({ cmd = "lazygit", hidden = true }) 36 | 37 | function _LAZYGIT_TOGGLE() 38 | lazygit:toggle() 39 | end 40 | 41 | -------------------------------------------------------------------------------- /config/nvim/lua/user/dap.lua: -------------------------------------------------------------------------------- 1 | local dap_status_ok, dap = pcall(require, "dap") 2 | if not dap_status_ok then 3 | return 4 | end 5 | 6 | local dap_ui_status_ok, dapui = pcall(require, "dapui") 7 | if not dap_ui_status_ok then 8 | return 9 | end 10 | 11 | local dap_install_status_ok, dap_install = pcall(require, "dap-install") 12 | if not dap_install_status_ok then 13 | return 14 | end 15 | 16 | dap_install.setup {} 17 | 18 | dap_install.config("python", {}) 19 | -- add other configs here 20 | 21 | dapui.setup { 22 | sidebar = { 23 | elements = { 24 | { 25 | id = "scopes", 26 | size = 0.25, -- Can be float or integer > 1 27 | }, 28 | { id = "breakpoints", size = 0.25 }, 29 | }, 30 | size = 40, 31 | position = "right", -- Can be "left", "right", "top", "bottom" 32 | }, 33 | tray = { 34 | elements = {}, 35 | }, 36 | } 37 | 38 | vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DiagnosticSignError", linehl = "", numhl = "" }) 39 | 40 | dap.listeners.after.event_initialized["dapui_config"] = function() 41 | dapui.open() 42 | end 43 | 44 | dap.listeners.before.event_terminated["dapui_config"] = function() 45 | dapui.close() 46 | end 47 | 48 | dap.listeners.before.event_exited["dapui_config"] = function() 49 | dapui.close() 50 | end 51 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/scripts/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # @requires: pactl 4 | 5 | SINK=$(pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,' | head -n 1) 6 | 7 | percentage () { 8 | local val=$(echo $1 | tr '%' ' ' | awk '{print $1}') 9 | } 10 | 11 | get_percentage () { 12 | local muted=$(pamixer --get-volume-human) 13 | if [[ $muted == 'muted' ]]; then 14 | echo 0% 15 | else 16 | per=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,') 17 | echo "${per}%" 18 | fi 19 | } 20 | 21 | get_icon () { 22 | local vol=$(get_percentage) 23 | if [[ $vol == "0%" ]]; then 24 | echo "icons/mute.png" 25 | else 26 | echo "icons/volume.png" 27 | fi 28 | } 29 | 30 | get_vol () { 31 | local percent=$(get_percentage) 32 | echo $percent | tr -d '%' 33 | } 34 | 35 | if [[ $1 == "--icon" ]]; then 36 | get_icon 37 | fi 38 | 39 | if [[ $1 == "--percentage" ]]; then 40 | get_percentage 41 | fi 42 | 43 | if [[ $1 == "--vol" ]]; then 44 | get_vol 45 | fi 46 | 47 | if [[ $1 == "--toggle-muted" ]]; then 48 | pamixer -t 49 | fi 50 | 51 | if [[ $1 == "set" ]]; then 52 | val=$(echo $2 | tr '.' ' ' | awk '{print $1}') 53 | if test $val -gt 100; then 54 | val=100 55 | fi 56 | pactl set-sink-volume $SINK $val% 57 | fi 58 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # @requires: pactl 4 | 5 | SINK=$(pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,' | head -n 1) 6 | 7 | percentage () { 8 | local val=$(echo $1 | tr '%' ' ' | awk '{print $1}') 9 | } 10 | 11 | get_percentage () { 12 | local muted=$(pamixer --get-volume-human) 13 | if [[ $muted == 'muted' ]]; then 14 | echo 0% 15 | else 16 | per=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,') 17 | echo "${per}%" 18 | fi 19 | } 20 | 21 | get_icon () { 22 | local vol=$(get_percentage) 23 | if [[ $vol == "0%" ]]; then 24 | echo "~/.config/bspwm/apps/eww/theme_switcher/assets/mute.jpg" 25 | else 26 | echo "~/.config/bspwm/apps/eww/theme_switcher/assets/volume.jpg" 27 | fi 28 | } 29 | 30 | get_vol () { 31 | local percent=$(get_percentage) 32 | echo $percent | tr -d '%' 33 | } 34 | 35 | if [[ $1 == "--icon" ]]; then 36 | get_icon 37 | fi 38 | 39 | if [[ $1 == "--percentage" ]]; then 40 | get_percentage 41 | fi 42 | 43 | if [[ $1 == "--vol" ]]; then 44 | get_vol 45 | fi 46 | 47 | if [[ $1 == "--toggle-muted" ]]; then 48 | pamixer -t 49 | fi 50 | 51 | if [[ $1 == "set" ]]; then 52 | val=$(echo $2 | tr '.' ' ' | awk '{print $1}') 53 | if test $val -gt 100; then 54 | val=100 55 | fi 56 | pactl set-sink-volume $SINK $val% 57 | fi 58 | -------------------------------------------------------------------------------- /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 = true, 16 | always_visible = true, 17 | } 18 | 19 | local diff = { 20 | "diff", 21 | colored = true, 22 | symbols = { added = "", modified = "", removed = "" }, -- changes diff symbols 23 | cond = hide_in_width, 24 | } 25 | 26 | local filetype = { 27 | "filetype", 28 | icons_enabled = true, 29 | } 30 | 31 | local location = { 32 | "location", 33 | padding = 0, 34 | } 35 | 36 | local spaces = function() 37 | return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth") 38 | end 39 | 40 | lualine.setup { 41 | options = { 42 | globalstatus = true, 43 | icons_enabled = true, 44 | theme = "auto", 45 | component_separators = { left = "", right = "" }, 46 | section_separators = { left = "", right = "" }, 47 | disabled_filetypes = { "alpha", "dashboard" }, 48 | always_divide_middle = true, 49 | }, 50 | sections = { 51 | lualine_a = { "mode" }, 52 | lualine_b = {"branch"}, 53 | lualine_c = { diagnostics }, 54 | lualine_x = { diff, spaces, "encoding", filetype }, 55 | lualine_z = { "progress" }, 56 | }, 57 | } 58 | -------------------------------------------------------------------------------- /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("e", " " .. " New file", ":ene startinsert "), 18 | dashboard.button("p", " " .. " Find project", ":lua require('telescope').extensions.projects.projects()"), 19 | dashboard.button("r", " " .. " Recent files", ":Telescope oldfiles "), 20 | dashboard.button("t", " " .. " Find text", ":Telescope live_grep "), 21 | dashboard.button("c", " " .. " Config", ":e ~/.config/nvim/init.lua "), 22 | dashboard.button("q", " " .. " Quit", ":qa"), 23 | } 24 | local function footer() 25 | return "built from lunarvim/nvim-basic-ide" 26 | end 27 | 28 | dashboard.section.footer.val = footer() 29 | 30 | dashboard.section.footer.opts.hl = "Type" 31 | dashboard.section.header.opts.hl = "Include" 32 | dashboard.section.buttons.opts.hl = "Keyword" 33 | 34 | dashboard.opts.opts.noautocmd = true 35 | alpha.setup(dashboard.opts) 36 | -------------------------------------------------------------------------------- /config/starship.toml: -------------------------------------------------------------------------------- 1 | format = """ 2 | [](#a3aed2)\ 3 | [  ](bg:#a3aed2 fg:#090c0c)\ 4 | [](bg:#769ff0 fg:#a3aed2)\ 5 | $directory\ 6 | [](fg:#769ff0 bg:#394260)\ 7 | $git_branch\ 8 | $git_status\ 9 | [](fg:#394260 bg:#212736)\ 10 | $nodejs\ 11 | $rust\ 12 | $golang\ 13 | $php\ 14 | [](fg:#212736 bg:#1d2230)\ 15 | $time\ 16 | [ ](fg:#1d2230)\ 17 | \n$character""" 18 | 19 | [directory] 20 | style = "fg:#e3e5e5 bg:#769ff0" 21 | format = "[ $path ]($style)" 22 | truncation_length = 3 23 | truncation_symbol = "…/" 24 | 25 | [directory.substitutions] 26 | "Documents" = " " 27 | "Downloads" = " " 28 | "Music" = " " 29 | "Pictures" = " " 30 | 31 | [git_branch] 32 | symbol = "" 33 | style = "bg:#394260" 34 | format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)' 35 | 36 | [git_status] 37 | style = "bg:#394260" 38 | format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)' 39 | 40 | [nodejs] 41 | symbol = "" 42 | style = "bg:#212736" 43 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 44 | 45 | [rust] 46 | symbol = "" 47 | style = "bg:#212736" 48 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 49 | 50 | [golang] 51 | symbol = "ﳑ" 52 | style = "bg:#212736" 53 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 54 | 55 | [php] 56 | symbol = "" 57 | style = "bg:#212736" 58 | format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' 59 | 60 | [time] 61 | disabled = false 62 | time_format = "%R" # Hour:Minute Format 63 | style = "bg:#1d2230" 64 | format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)' 65 | -------------------------------------------------------------------------------- /config/nvim/lua/user/nvim-tree.lua: -------------------------------------------------------------------------------- 1 | local status_ok, nvim_tree = pcall(require, "nvim-tree") 2 | if not status_ok then 3 | return 4 | end 5 | 6 | local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") 7 | if not config_status_ok then 8 | return 9 | end 10 | 11 | local tree_cb = nvim_tree_config.nvim_tree_callback 12 | 13 | nvim_tree.setup { 14 | update_focused_file = { 15 | enable = true, 16 | update_cwd = true, 17 | }, 18 | renderer = { 19 | root_folder_modifier = ":t", 20 | icons = { 21 | glyphs = { 22 | default = "", 23 | symlink = "", 24 | folder = { 25 | arrow_open = "", 26 | arrow_closed = "", 27 | default = "", 28 | open = "", 29 | empty = "", 30 | empty_open = "", 31 | symlink = "", 32 | symlink_open = "", 33 | }, 34 | git = { 35 | unstaged = "", 36 | staged = "S", 37 | unmerged = "", 38 | renamed = "➜", 39 | untracked = "U", 40 | deleted = "", 41 | ignored = "◌", 42 | }, 43 | }, 44 | }, 45 | }, 46 | diagnostics = { 47 | enable = true, 48 | show_on_dirs = true, 49 | icons = { 50 | hint = "", 51 | info = "", 52 | warning = "", 53 | error = "", 54 | }, 55 | }, 56 | view = { 57 | width = 30, 58 | side = "left", 59 | mappings = { 60 | list = { 61 | { key = { "l", "", "o" }, cb = tree_cb "edit" }, 62 | { key = "h", cb = tree_cb "close_node" }, 63 | { key = "v", cb = tree_cb "vsplit" }, 64 | }, 65 | }, 66 | }, 67 | } 68 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/scripts/workspaces: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | workspaces() { 4 | 5 | ws1=1 6 | ws2=2 7 | ws3=3 8 | ws4=4 9 | ws5=5 10 | 11 | # Unoccupied 12 | un="0" 13 | 14 | # check if Occupied 15 | o1=$(bspc query -D -d .occupied --names | grep "$ws1" ) 16 | o2=$(bspc query -D -d .occupied --names | grep "$ws2" ) 17 | o3=$(bspc query -D -d .occupied --names | grep "$ws3" ) 18 | o4=$(bspc query -D -d .occupied --names | grep "$ws4" ) 19 | o5=$(bspc query -D -d .occupied --names | grep "$ws5" ) 20 | 21 | # check if Focused 22 | f1=$(bspc query -D -d focused --names | grep "$ws1" ) 23 | f2=$(bspc query -D -d focused --names | grep "$ws2" ) 24 | f3=$(bspc query -D -d focused --names | grep "$ws3" ) 25 | f4=$(bspc query -D -d focused --names | grep "$ws4" ) 26 | f5=$(bspc query -D -d focused --names | grep "$ws5" ) 27 | 28 | # check if Urgent 29 | # u1=$(bspc query -D -d .urgent --names | grep 1) 30 | # u2=$(bspc query -D -d .urgent --names | grep 2) 31 | # u3=$(bspc query -D -d .urgent --names | grep 3) 32 | # u4=$(bspc query -D -d .urgent --names | grep 4) 33 | # u5=$(bspc query -D -d .urgent --names | grep 5) 34 | 35 | echo "(box :class \"works\" :orientation \"h\" :halign \"center\" :valign \"start\" :space-evenly \"false\" :spacing \"20\" (button :onclick \"bspc desktop -f $ws1\" :class \"$un$o1$f1\" \" \") (button :onclick \"bspc desktop -f $ws2\" :class \"$un$o2$f2\" \" \") (button :onclick \"bspc desktop -f $ws3\" :class \"$un$o3$f3\" \" \") (button :onclick \"bspc desktop -f $ws4\" :class \"$un$o4$f4\" \" \") (button :onclick \"bspc desktop -f $ws5\" :class \"$un$o5$f5\" \" \" ))" 36 | 37 | } 38 | 39 | workspaces 40 | bspc subscribe desktop node_transfer | while read -r _ ; do 41 | workspaces 42 | done 43 | -------------------------------------------------------------------------------- /config/bspwm/apps/kitty/colors/latte.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin Kitty Latte 4 | ## author: Catppuccin Org 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/latte.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #4C4F69 13 | background #EFF1F5 14 | selection_foreground #EFF1F5 15 | selection_background #DC8A78 16 | 17 | # Cursor colors 18 | cursor #DC8A78 19 | cursor_text_color #EFF1F5 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #DC8A78 23 | 24 | # Kitty window border colors 25 | active_border_color #7287FD 26 | inactive_border_color #9CA0B0 27 | bell_border_color #DF8E1D 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #EFF1F5 35 | active_tab_background #8839EF 36 | inactive_tab_foreground #4C4F69 37 | inactive_tab_background #9CA0B0 38 | tab_bar_background #BCC0CC 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #EFF1F5 42 | mark1_background #7287fD 43 | mark2_foreground #EFF1F5 44 | mark2_background #8839EF 45 | mark3_foreground #EFF1F5 46 | mark3_background #209FB5 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #5C5F77 52 | color8 #6C6F85 53 | 54 | # red 55 | color1 #D20F39 56 | color9 #D20F39 57 | 58 | # green 59 | color2 #40A02B 60 | color10 #40A02B 61 | 62 | # yellow 63 | color3 #DF8E1D 64 | color11 #DF8E1D 65 | 66 | # blue 67 | color4 #1E66F5 68 | color12 #1E66F5 69 | 70 | # magenta 71 | color5 #EA76CB 72 | color13 #EA76CB 73 | 74 | # cyan 75 | color6 #179299 76 | color14 #179299 77 | 78 | # white 79 | color7 #ACB0BE 80 | color15 #BCC0CC 81 | -------------------------------------------------------------------------------- /config/bspwm/apps/kitty/colors/mocha.conf: -------------------------------------------------------------------------------- 1 | # vim:ft=kitty 2 | 3 | ## name: Catppuccin Kitty Mocha 4 | ## author: Catppuccin Org 5 | ## license: MIT 6 | ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf 7 | ## blurb: Soothing pastel theme for the high-spirited! 8 | 9 | 10 | 11 | # The basic colors 12 | foreground #CDD6F4 13 | background #1E1E2E 14 | selection_foreground #1E1E2E 15 | selection_background #F5E0DC 16 | 17 | # Cursor colors 18 | cursor #F5E0DC 19 | cursor_text_color #1E1E2E 20 | 21 | # URL underline color when hovering with mouse 22 | url_color #F5E0DC 23 | 24 | # Kitty window border colors 25 | active_border_color #B4BEFE 26 | inactive_border_color #6C7086 27 | bell_border_color #F9E2AF 28 | 29 | # OS Window titlebar colors 30 | wayland_titlebar_color system 31 | macos_titlebar_color system 32 | 33 | # Tab bar colors 34 | active_tab_foreground #11111B 35 | active_tab_background #CBA6F7 36 | inactive_tab_foreground #CDD6F4 37 | inactive_tab_background #181825 38 | tab_bar_background #11111B 39 | 40 | # Colors for marks (marked text in the terminal) 41 | mark1_foreground #1E1E2E 42 | mark1_background #B4BEFE 43 | mark2_foreground #1E1E2E 44 | mark2_background #CBA6F7 45 | mark3_foreground #1E1E2E 46 | mark3_background #74C7EC 47 | 48 | # The 16 terminal colors 49 | 50 | # black 51 | color0 #45475A 52 | color8 #585B70 53 | 54 | # red 55 | color1 #F38BA8 56 | color9 #F38BA8 57 | 58 | # green 59 | color2 #A6E3A1 60 | color10 #A6E3A1 61 | 62 | # yellow 63 | color3 #F9E2AF 64 | color11 #F9E2AF 65 | 66 | # blue 67 | color4 #89B4FA 68 | color12 #89B4FA 69 | 70 | # magenta 71 | color5 #F5C2E7 72 | color13 #F5C2E7 73 | 74 | # cyan 75 | color6 #94E2D5 76 | color14 #94E2D5 77 | 78 | # white 79 | color7 #BAC2DE 80 | color15 #A6ADC8 81 | -------------------------------------------------------------------------------- /config/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/nvim/lua/user/autocommands.lua: -------------------------------------------------------------------------------- 1 | vim.api.nvim_create_autocmd({ "FileType" }, { 2 | pattern = { "qf", "help", "man", "lspinfo", "spectre_panel" }, 3 | callback = function() 4 | vim.cmd([[ 5 | nnoremap q :close 6 | set nobuflisted 7 | ]]) 8 | end, 9 | }) 10 | 11 | vim.api.nvim_create_autocmd({ "FileType" }, { 12 | pattern = { "gitcommit"}, 13 | callback = function() 14 | vim.opt_local.wrap = true 15 | vim.opt_local.spell = true 16 | end, 17 | }) 18 | 19 | vim.api.nvim_create_autocmd({ "FileType" }, { 20 | pattern = { "markdown" }, 21 | callback = function() 22 | vim.opt_local.wrap = true 23 | vim.opt_local.spell = true 24 | end, 25 | }) 26 | 27 | 28 | vim.cmd("autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif") 29 | -- vim.api.nvim_create_autocmd({ "BufEnter" }, { 30 | -- callback = function() 31 | -- vim.cmd [[ 32 | -- if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif 33 | -- ]] 34 | -- end, 35 | -- }) 36 | 37 | vim.api.nvim_create_autocmd({ "VimResized" }, { 38 | callback = function() 39 | vim.cmd("tabdo wincmd =") 40 | end, 41 | }) 42 | 43 | vim.api.nvim_create_autocmd({ "CmdWinEnter" }, { 44 | callback = function() 45 | vim.cmd("quit") 46 | end, 47 | }) 48 | vim.api.nvim_create_autocmd({ "BufWinEnter" }, { 49 | callback = function() 50 | vim.cmd("set formatoptions-=cro") 51 | end, 52 | }) 53 | 54 | vim.api.nvim_create_autocmd({ "TextYankPost" }, { 55 | callback = function() 56 | vim.highlight.on_yank({ higroup = "Visual", timeout = 200 }) 57 | end, 58 | }) 59 | 60 | vim.api.nvim_create_autocmd({ "BufWritePost" }, { 61 | pattern = { "*.java" }, 62 | callback = function() 63 | vim.lsp.codelens.refresh() 64 | end, 65 | }) 66 | 67 | vim.api.nvim_create_autocmd({ "VimEnter" }, { 68 | callback = function() 69 | vim.cmd("hi link illuminatedWord LspReferenceText") 70 | end, 71 | }) 72 | -------------------------------------------------------------------------------- /config/bspwm/apps/dunst/latte-dunstrc: -------------------------------------------------------------------------------- 1 | # Documentation: https://dunst-project.org/documentation/ 2 | # Config created by Keyitdev https://www.github.com/keyitdev/dotfiles 3 | # Copyright (C) 2022 Keyitdev 4 | 5 | [global] 6 | monitor = 0 7 | follow = mouse 8 | width = (300,200) 9 | height = 250 10 | origin = top-right 11 | offset = 8x47 12 | indicate_hidden = yes 13 | shrink = no 14 | transparency = 1 15 | notification_height = 0 16 | separator_height = 2 17 | padding = 20 18 | horizontal_padding = 12 19 | frame_width = 2 20 | frame_color = "#1e66f5" 21 | separator_color = frame 22 | sort = yes 23 | idle_threshold = 120 24 | font = JetBrainsMono Nerd Font 12 25 | line_height = 0 26 | markup = full 27 | format = "%s\n%b" 28 | alignment = left 29 | vertical_alignment = center 30 | show_age_threshold = 60 31 | word_wrap = yes 32 | ellipsize = middle 33 | ignore_newline = no 34 | stack_duplicates = true 35 | hide_duplicate_count = false 36 | show_indicators = no 37 | icon_position = left 38 | min_icon_size = 50 39 | max_icon_size = 50 40 | icon_path = /usr/share/icons/Papirus/16x16/ 41 | sticky_history = no 42 | history_length = 50 43 | dmenu = /usr/bin/dmenu -p dunst: 44 | browser = /usr/bin/sensible-browser 45 | always_run_script = true 46 | title = Dunst 47 | class = Dunst 48 | startup_notification = false 49 | verbosity = mesg 50 | corner_radius = 20 51 | ignore_dbusclose = false 52 | force_xinerama = false 53 | mouse_middle_click = do_action, close_current 54 | mouse_right_click = close_all 55 | [experimental] 56 | per_monitor_dpi = false 57 | [shortcuts] 58 | close = ctrl+space 59 | close_all = ctrl+shift+space 60 | history = ctrl+grave 61 | context = ctrl+shift+period 62 | timeout = 0 63 | [urgency_low] 64 | background = "#EFF1F5" 65 | foreground = "#4C4F69" 66 | 67 | [urgency_normal] 68 | background = "#EFF1F5" 69 | foreground = "#4C4F69" 70 | 71 | [urgency_critical] 72 | background = "#EFF1F5" 73 | foreground = "#4C4F69" 74 | frame_color = "#d20f39" 75 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/eww.scss: -------------------------------------------------------------------------------- 1 | @import 'colors/mocha'; 2 | 3 | * { 4 | all: unset; //Unsets everything so you can style everything from scratch 5 | } 6 | 7 | //Global Styles 8 | .bar { 9 | background-color: $base; 10 | color: $text; 11 | padding: 5px; 12 | } 13 | 14 | .left { 15 | padding-left: 5px; 16 | } 17 | 18 | .center { 19 | padding-top: 5px; 20 | padding-bottom: 5px; 21 | } 22 | 23 | .right { 24 | padding-right: 5px; 25 | } 26 | 27 | scale trough { 28 | all: unset; 29 | background-color: $surface0; 30 | border-radius: 20px; 31 | min-height: 20px; 32 | min-width: 100px; 33 | margin: 0.3rem 0 0.3rem 0.1rem; 34 | } 35 | 36 | .volbar trough highlight { 37 | background: linear-gradient($red, $mauve, $blue, $sky); 38 | border-radius: 20px; 39 | } 40 | 41 | .dots { 42 | color: $overlay2; 43 | font-size: 1.3em; 44 | padding-left: 10px; 45 | padding-right: 10px; 46 | } 47 | 48 | .launcher { 49 | font-family: "Iosevka Nerd Font"; 50 | color: #1793d1; 51 | font-size: 1.8em; 52 | } 53 | 54 | .music { 55 | font-family: "SauceCodePro Nerd Font"; 56 | font-size: 1.1em; 57 | padding: 10px; 58 | font-weight: Bold; 59 | border-radius: 15px; 60 | color: $green; 61 | background-color: $surface0; 62 | } 63 | 64 | .time { 65 | font-family: "JetBrainsMono Nerd Font"; 66 | font-size: 1.3em; 67 | color: $blue; 68 | background-color: $surface0; 69 | padding: 8px; 70 | border-radius: 15px; 71 | } 72 | 73 | // Workspaces 74 | .works { 75 | font-family: "Iosevka Nerd Font"; 76 | // padding: .2rem .7rem .2rem .7rem; 77 | background-color: $surface0; 78 | padding: 10px; 79 | border-radius: 15px; 80 | } 81 | 82 | .0 , .01, .02, .03, .04, .05, .06, 83 | .011, .022, .033, .044, .055, .066{ 84 | } 85 | 86 | /* Unoccupied */ 87 | .0 { 88 | color: $text; 89 | font-size: 0.6em; 90 | } 91 | 92 | /* Occupied */ 93 | .01, .02, .03, .04, .05, .06 { 94 | color: $blue; 95 | font-size: 0.8em; 96 | } 97 | 98 | /* Focused */ 99 | .011, 100 | .022, 101 | .033, 102 | .044, 103 | .055, 104 | .066 { 105 | color: $yellow; 106 | font-size: 1.2em; 107 | } 108 | -------------------------------------------------------------------------------- /config/bspwm/apps/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | # Documentation: https://dunst-project.org/documentation/ 2 | # Config created by Keyitdev https://www.github.com/keyitdev/dotfiles 3 | # Copyright (C) 2022 Keyitdev 4 | 5 | [global] 6 | monitor = 0 7 | follow = mouse 8 | width = (300,200) 9 | height = 250 10 | origin = top-right 11 | offset = 8x47 12 | indicate_hidden = yes 13 | shrink = no 14 | transparency = 1 15 | notification_height = 0 16 | separator_height = 2 17 | padding = 20 18 | horizontal_padding = 12 19 | frame_width = 2 20 | frame_color = "#89dceb" 21 | separator_color = frame 22 | sort = yes 23 | idle_threshold = 120 24 | font = Roboto mono 12 25 | line_height = 0 26 | markup = full 27 | format = "%s\n%b" 28 | alignment = left 29 | vertical_alignment = center 30 | show_age_threshold = 60 31 | word_wrap = yes 32 | ellipsize = middle 33 | ignore_newline = no 34 | stack_duplicates = true 35 | hide_duplicate_count = false 36 | show_indicators = no 37 | icon_position = left 38 | min_icon_size = 50 39 | max_icon_size = 50 40 | icon_path = /usr/share/icons/Papirus/16x16/ 41 | sticky_history = no 42 | history_length = 50 43 | dmenu = /usr/bin/dmenu -p dunst: 44 | browser = /usr/bin/sensible-browser 45 | always_run_script = true 46 | title = Dunst 47 | class = Dunst 48 | startup_notification = false 49 | verbosity = mesg 50 | corner_radius = 20 51 | ignore_dbusclose = false 52 | force_xinerama = false 53 | mouse_middle_click = do_action, close_current 54 | mouse_right_click = close_all 55 | [experimental] 56 | per_monitor_dpi = false 57 | [shortcuts] 58 | close = ctrl+space 59 | close_all = ctrl+shift+space 60 | history = ctrl+grave 61 | context = ctrl+shift+period 62 | [urgency_low] 63 | background = "#1d1d2d" 64 | foreground = "#cdd6f4" 65 | timeout = 5 66 | [urgency_normal] 67 | background = "#1d1d2d" 68 | foreground = "#cdd6f4" 69 | timeout = 5 70 | [urgency_critical] 71 | background = "#1d1d2d" 72 | foreground = "#cdd6f4" 73 | frame_color = "#f38ba8" 74 | timeout = 0 75 | 76 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/player.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | default() { 4 | player_status=$(playerctl status 2> /dev/null) 5 | 6 | if [ "$player_status" = "Playing" ]; then 7 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 8 | elif [ "$player_status" = "Paused" ]; then 9 | echo "$(playerctl metadata artist) - $(playerctl metadata title)" 10 | else 11 | echo "" 12 | fi 13 | } 14 | 15 | echoStatusIcon() { 16 | s=$(playerctl status) 17 | if [[ $s == "Playing" ]]; then 18 | echo " " 19 | else 20 | echo " " 21 | fi 22 | } 23 | 24 | getSongArt() { 25 | tmp_dir="$HOME/.cache/eww/spotify" 26 | tmp_cover_path=$tmp_dir/cover.png 27 | tmp_temp_path=$tmp_dir/temp.png 28 | 29 | if [ ! -d $tmp_dir ]; then 30 | mkdir -p $tmp_dir 31 | fi 32 | 33 | artlink="$(playerctl metadata mpris:artUrl)" 34 | 35 | if [ $(playerctl metadata mpris:artUrl) ]; then 36 | curl -s "$artlink" --output $tmp_temp_path 37 | else 38 | cp $HOME/.config/eww/assets/fallback.png $tmp_temp_path 39 | fi 40 | } 41 | 42 | echoSongArt() { 43 | s=$(playerctl status) 44 | if [[ $s == "Playing" ]]; then 45 | echo "$HOME/.cache/eww/spotify/temp.png" 46 | elif [[ $s == "Paused" ]]; then 47 | echo "$HOME/.cache/eww/spotify/temp.png" 48 | else 49 | echo "" 50 | fi 51 | } 52 | 53 | songTime() { 54 | s=$(playerctl status) 55 | if [[ $s == "Playing" ]]; then 56 | songTime=$(playerctl metadata --format "{{ duration(mpris:length) }}") 57 | echo "$songTime" 58 | else 59 | echo "" 60 | fi 61 | } 62 | 63 | songTimeRemaining() { 64 | s=$(playerctl status) 65 | if [[ $s == "Playing" ]]; then 66 | songTimeRemaining=$(playerctl metadata --format "{{ duration(position) }}") 67 | echo "$songTimeRemaining" 68 | else 69 | echo "" 70 | fi 71 | } 72 | 73 | 74 | if [[ "$1" == "--song_art" ]]; then 75 | echoSongArt 76 | elif [[ "$1" == "--get_song_art" ]]; then 77 | getSongArt 78 | elif [[ "$1" == "--status_icon" ]]; then 79 | echoStatusIcon 80 | elif [[ "$1" == "--song_name" ]]; then 81 | default 82 | elif [[ "$1" == "--song_time" ]]; then 83 | songTime 84 | elif [[ "$1" == "--song_time_remaining" ]]; then 85 | songTimeRemaining 86 | fi 87 | -------------------------------------------------------------------------------- /config/bspwm/apps/dunst/mocha-dunstrc: -------------------------------------------------------------------------------- 1 | # Documentation: https://dunst-project.org/documentation/ 2 | # Config created by Keyitdev https://www.github.com/keyitdev/dotfiles 3 | # Copyright (C) 2022 Keyitdev 4 | 5 | [global] 6 | monitor = 0 7 | follow = mouse 8 | width = (300,200) 9 | height = 250 10 | origin = top-right 11 | offset = 8x47 12 | indicate_hidden = yes 13 | shrink = no 14 | transparency = 1 15 | notification_height = 0 16 | separator_height = 2 17 | padding = 20 18 | horizontal_padding = 12 19 | frame_width = 2 20 | frame_color = "#89dceb" 21 | separator_color = frame 22 | sort = yes 23 | idle_threshold = 120 24 | font = JetBrainsMono Nerd Font 12 25 | line_height = 0 26 | markup = full 27 | format = "%s\n%b" 28 | alignment = left 29 | vertical_alignment = center 30 | show_age_threshold = 60 31 | word_wrap = yes 32 | ellipsize = middle 33 | ignore_newline = no 34 | stack_duplicates = true 35 | hide_duplicate_count = false 36 | show_indicators = no 37 | icon_position = left 38 | min_icon_size = 50 39 | max_icon_size = 50 40 | icon_path = /usr/share/icons/Papirus/16x16/ 41 | sticky_history = no 42 | history_length = 50 43 | dmenu = /usr/bin/dmenu -p dunst: 44 | browser = /usr/bin/sensible-browser 45 | always_run_script = true 46 | title = Dunst 47 | class = Dunst 48 | startup_notification = false 49 | verbosity = mesg 50 | corner_radius = 20 51 | ignore_dbusclose = false 52 | force_xinerama = false 53 | mouse_middle_click = do_action, close_current 54 | mouse_right_click = close_all 55 | [experimental] 56 | per_monitor_dpi = false 57 | [shortcuts] 58 | close = ctrl+space 59 | close_all = ctrl+shift+space 60 | history = ctrl+grave 61 | context = ctrl+shift+period 62 | [urgency_low] 63 | background = "#1d1d2d" 64 | foreground = "#cdd6f4" 65 | timeout = 5 66 | [urgency_normal] 67 | background = "#1d1d2d" 68 | foreground = "#cdd6f4" 69 | timeout = 5 70 | [urgency_critical] 71 | background = "#1d1d2d" 72 | foreground = "#cdd6f4" 73 | frame_color = "#f38ba8" 74 | timeout = 0 75 | 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | ```ocaml 5 | ohxxm's Dotfiles 6 | ``` 7 |
8 | 9 | ```ocaml 10 | FUNCTIONAL / COMFY / AESTHETIC 11 | ``` 12 |
13 | 14 |

If you decide to use my config, please do give me credit in the README of your fork/repo. 15 |
16 | 17 | https://user-images.githubusercontent.com/68564017/212144838-20e760b7-c5c6-427d-8828-660568d47a20.mp4 18 | 19 | | Feature | Package | 20 | | -------------------- | ------------------------------------------------------- | 21 | | Window Manager | [`bspwm`](https://github.com/baskerville/bspwm) | 22 | | Compositor | [`pijulius/picom`](https://github.com/pijulius/picom) | 23 | | Terminal | [`kitty`](https://github.com/kovidgoyal/kitty) | 24 | | Shell | [`fish`](https://www.fishshell.com/) | 25 | | Editor | [`neovim`](https://github.com/neovim/neovim) | 26 | | Bar | [`polybar`](https://github.com/polybar/polybar) | 27 | | Dashboard | [`eww`](https://github.com/elkowar/eww) | 28 | | Notification Manager | [`dunst`](https://github.com/dunst-project/dunst) | 29 | | Application Launcher | [`rofi`](https://github.com/davatorium/rofi) | 30 | | Application Menu | [`jgmenu`](https://github.com/johanmalm/jgmenu) | 31 | 32 | # Install 33 | ```git clone https://github.com/ohxxm/dotfiles``` 34 |
35 | ```yay -Syu $(cat config/bspwm/pkglist)``` 36 |
37 |
38 | **This command may overwrite your config files** 39 |
40 |
41 | ```cp -rf config/* ~/.config/``` 42 |
43 | ```cp home/* ~/``` 44 |
45 | ```cp bin/* /usr/local/bin/``` 46 |
47 |
48 | **The last command may require superuser permissions** 49 | 50 | # Features 51 | * Hyprland-like animations in BSPWM using picom 52 | * Aesthetic bar config 53 | * Switch between Light & Dark mode in a click of a button! 54 | 55 | # WIP 56 | * EWW Dashboard 57 | 58 | # Credits 59 | 60 | Manas140 - Used his fetch script 61 | AlphaTechnolog - Used his eww config as reference for music players & used his script to fetch the music art 62 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/scripts/switch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE="$HOME/.cache/cached_theme" 4 | KITTY="$HOME/.config/bspwm/apps/kitty/kitty.conf" 5 | BAR="$HOME/.config/bspwm/apps/polybar/config.ini" 6 | GTK="$HOME/.xsettingsd" 7 | ROFI="$HOME/.config/bspwm/apps/rofi/config.rasi" 8 | NEOVIM="$HOME/.config/nvim/lua/user/colorscheme.lua" 9 | EWW="$HOME/.config/bspwm/apps/eww/eww.scss" 10 | DUNST="$HOME/.config/bspwm/autostart.sh" 11 | JGMENU="$HOME/.config/bspwm/apps/jgmenu/run" 12 | 13 | if [[ ! -f "$FILE" ]]; then 14 | touch "$FILE" 15 | fi 16 | 17 | if grep -q "Dark" "$FILE"; then 18 | # DO LIGHT THEME HERE 19 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/latte.conf' $KITTY 20 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/latte.ini' $BAR 21 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Latte-Standard-Blue-Light"' $GTK 22 | sed -i '/@import "colors/c\@import "colors\/latte.rasi"' $ROFI 23 | sed -i '/flavour = "/c\flavour = "latte"' $NEOVIM 24 | sed -i "/@import 'colors\//c\@import 'colors\/latte';" $EWW 25 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/latte-dunstrc &" $DUNST 26 | sed -i "/conf_file=/c\conf_file=\$base/latte-jgmenurc" $JGMENU 27 | killall jgmenu 28 | killall dunst 29 | killall xsettingsd 30 | xdotool key ctrl+shift+F5 31 | bspc wm -r 32 | notify-send "Switched to Catppuccin Latte!" 33 | echo "Light" > $FILE 34 | else 35 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/mocha.conf' $KITTY 36 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/mocha.ini' $BAR 37 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Mocha-Standard-Blue-Dark"' $GTK 38 | sed -i '/@import "colors/c\@import "colors\/mocha.rasi"' $ROFI 39 | sed -i '/flavour = "/c\flavour = "mocha"' $NEOVIM 40 | sed -i "/@import 'colors\//c\@import 'colors\/mocha';" $EWW 41 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/mocha-dunstrc &" $DUNST 42 | sed -i "/conf_file=/c\conf_file=\$base/mocha-jgmenurc" $JGMENU 43 | killall jgmenu 44 | killall dunst 45 | killall xsettingsd 46 | xdotool key ctrl+shift+F5 47 | bspc wm -r 48 | notify-send "Switched to Catppuccin Mocha!" 49 | echo "Dark" > $FILE 50 | fi 51 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww_overhaul/scripts/switch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE="$HOME/.cache/cached_theme" 4 | KITTY="$HOME/.config/bspwm/apps/kitty/kitty.conf" 5 | BAR="$HOME/.config/bspwm/apps/polybar/config.ini" 6 | GTK="$HOME/.xsettingsd" 7 | ROFI="$HOME/.config/bspwm/apps/rofi/config.rasi" 8 | NEOVIM="$HOME/.config/nvim/lua/user/colorscheme.lua" 9 | EWW="$HOME/.config/bspwm/apps/eww/eww.scss" 10 | DUNST="$HOME/.config/bspwm/autostart.sh" 11 | JGMENU="$HOME/.config/bspwm/apps/jgmenu/run" 12 | 13 | if [[ ! -f "$FILE" ]]; then 14 | touch "$FILE" 15 | fi 16 | 17 | if grep -q "Dark" "$FILE"; then 18 | # DO LIGHT THEME HERE 19 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/latte.conf' $KITTY 20 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/latte.ini' $BAR 21 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Latte-Standard-Blue-Light"' $GTK 22 | sed -i '/@import "colors/c\@import "colors\/latte.rasi"' $ROFI 23 | sed -i '/flavour = "/c\flavour = "latte"' $NEOVIM 24 | sed -i "/@import 'colors\//c\@import 'colors\/latte';" $EWW 25 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/latte-dunstrc &" $DUNST 26 | sed -i "/conf_file=/c\conf_file=\$base/latte-jgmenurc" $JGMENU 27 | killall jgmenu 28 | killall dunst 29 | killall xsettingsd 30 | xdotool key ctrl+shift+F5 31 | bspc wm -r 32 | notify-send "Switched to Catppuccin Latte!" 33 | echo "Light" > $FILE 34 | else 35 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/mocha.conf' $KITTY 36 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/mocha.ini' $BAR 37 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Mocha-Standard-Blue-Dark"' $GTK 38 | sed -i '/@import "colors/c\@import "colors\/mocha.rasi"' $ROFI 39 | sed -i '/flavour = "/c\flavour = "mocha"' $NEOVIM 40 | sed -i "/@import 'colors\//c\@import 'colors\/mocha';" $EWW 41 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/mocha-dunstrc &" $DUNST 42 | sed -i "/conf_file=/c\conf_file=\$base/mocha-jgmenurc" $JGMENU 43 | killall jgmenu 44 | killall dunst 45 | killall xsettingsd 46 | xdotool key ctrl+shift+F5 47 | bspc wm -r 48 | notify-send "Switched to Catppuccin Mocha!" 49 | echo "Dark" > $FILE 50 | fi 51 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/scripts/switch_theme: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE="$HOME/.cache/cached_theme" 4 | KITTY="$HOME/.config/bspwm/apps/kitty/kitty.conf" 5 | BAR="$HOME/.config/bspwm/apps/polybar/config.ini" 6 | GTK="$HOME/.xsettingsd" 7 | ROFI="$HOME/.config/bspwm/apps/rofi/config.rasi" 8 | NEOVIM="$HOME/.config/nvim/lua/user/colorscheme.lua" 9 | EWW="$HOME/.config/bspwm/apps/eww/theme_switcher/eww.scss" 10 | DUNST="$HOME/.config/bspwm/autostart.sh" 11 | JGMENU="$HOME/.config/bspwm/apps/jgmenu/run" 12 | 13 | if [[ ! -f "$FILE" ]]; then 14 | touch "$FILE" 15 | fi 16 | 17 | if grep -q "Dark" "$FILE"; then 18 | # DO LIGHT THEME HERE 19 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/latte.conf' $KITTY 20 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/latte.ini' $BAR 21 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Latte-Standard-Blue-Light"' $GTK 22 | sed -i '/@import "colors/c\@import "colors\/latte.rasi"' $ROFI 23 | sed -i '/flavour = "/c\flavour = "latte"' $NEOVIM 24 | sed -i "/@import 'colors\//c\@import 'colors\/latte';" $EWW 25 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/latte-dunstrc &" $DUNST 26 | sed -i "/conf_file=/c\conf_file=\$base/latte-jgmenurc" $JGMENU 27 | killall jgmenu 28 | killall dunst 29 | killall xsettingsd 30 | xdotool key ctrl+shift+F5 31 | bspc wm -r 32 | notify-send "Switched to Catppuccin Latte!" 33 | echo "Light" > $FILE 34 | else 35 | sed -i '/include/c\include ~\/.config\/bspwm\/apps\/kitty\/colors\/mocha.conf' $KITTY 36 | sed -i '/include-file=~\/.config\/bspwm\/apps\/polybar\/colors/c\include-file=~\/.config\/bspwm\/apps\/polybar\/colors\/mocha.ini' $BAR 37 | sed -i '/Net\/ThemeName/c\Net\/ThemeName "Catppuccin-Mocha-Standard-Blue-Dark"' $GTK 38 | sed -i '/@import "colors/c\@import "colors\/mocha.rasi"' $ROFI 39 | sed -i '/flavour = "/c\flavour = "mocha"' $NEOVIM 40 | sed -i "/@import 'colors\//c\@import 'colors\/mocha';" $EWW 41 | sed -i "/dunst -config/c\dunst -config ~\/.config\/bspwm\/apps\/dunst\/mocha-dunstrc &" $DUNST 42 | sed -i "/conf_file=/c\conf_file=\$base/mocha-jgmenurc" $JGMENU 43 | killall jgmenu 44 | killall dunst 45 | killall xsettingsd 46 | xdotool key ctrl+shift+F5 47 | bspc wm -r 48 | notify-send "Switched to Catppuccin Mocha!" 49 | echo "Dark" > $FILE 50 | fi 51 | -------------------------------------------------------------------------------- /bin/fetch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Color variables 4 | cr="\033[1;31m" 5 | ce="\033[1;37m" 6 | cb="\033[1;34m" 7 | 8 | # Colors 9 | c() { printf "\033[%s;%sm" "$1" "$2"; } 10 | 11 | # Import info 12 | . /etc/os-release 13 | 14 | # Get info functions 15 | Name() { 16 | read -r host < /etc/hostname; 17 | printf "%s@%s" "$USER" "$host"; 18 | } 19 | 20 | Os() { printf "%s" "$NAME"; } 21 | 22 | Kernel() { 23 | read -r _ _ kern _ < /proc/version; 24 | printf "%s" "$kern"; 25 | } 26 | 27 | Uptime() { 28 | IFS=. read -r up _ < /proc/uptime; 29 | printf "%dD %dH %dM" "$((up / 60 / 60 / 24))" "$((up / 60 / 60 % 24))" "$((up / 60 % 60))"; 30 | } 31 | 32 | Shell() { printf "%s" "${SHELL##*/}"; } 33 | 34 | Desktop() { 35 | if [ "$DESKTOP_SESSION" != "" ]; then 36 | printf "%s\n" "$DESKTOP_SESSION" 37 | elif [ "$XDG_CURRENT_DESKTOP" != "" ]; then 38 | printf "%s\n" "$XDG_CURRENT_DESKTOP" 39 | else 40 | for i in /proc/*/comm; do 41 | [ -f "$i" ] || continue 42 | read -r p < "$i" 43 | case "$p" in 44 | awesome|xmonad*|qtile|sway|i3|[bfo]*box|*wm*) printf "%s" "${p%%-*}"; break;; 45 | esac 46 | done 47 | fi 48 | } 49 | 50 | Memory() { 51 | while IFS=':k ' read -r mem1 mem2 _; do 52 | case "$mem1" in 53 | MemTotal) 54 | memt="$(( mem2 / 1024 ))";; 55 | MemAvailable) 56 | memu="$(( memt - mem2 / 1024))";; 57 | esac; 58 | done < /proc/meminfo; 59 | printf "%dMib / %dMib" "$memu" "$memt"; 60 | } 61 | 62 | help() { printf "${ce}Usage: fetch [ ${cb}-c${ce} config_file${ce} | ${cb}-d${ce} | ${cb}-h${ce} ] 63 | ${cb}-c:${ce} provide a config 64 | ${cb}-d:${ce} use default config 65 | ${cb}-h:${ce} show help 66 | ${cr}Report issue at:${ce} https://github.com/manas140/fetch\n\n" && exit; } 67 | 68 | def_conf() { 69 | printf " 70 | $(c 1 34)$(Name) 71 | $(c 1 37)Os: $(Os) 72 | Kernel: $(Kernel) 73 | Uptime: $(Uptime) 74 | Shell: $(Shell) 75 | DE/WM: $(Desktop) 76 | Memory: $(Memory) 77 | 78 | $(c 1 90)  $(c 1 31)  $(c 1 32)  $(c 1 33)  $(c 1 34)  $(c 1 35)  $(c 1 36)  $(c 1 37)  $(c 0 0) 79 | \n" 80 | } 81 | 82 | #Import config 83 | if [ -f "$HOME"/.config/fetch/conf ]; then 84 | . "$HOME"/.config/fetch/conf 85 | else 86 | # Default Config 87 | conf() { def_conf; } 88 | fi 89 | 90 | case "$1" in 91 | *-d*) conf() { def_conf; };; 92 | *-c*) [ -f "$2" ] && . "$2" ;; 93 | *-h*) help;; 94 | esac 95 | 96 | conf 97 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/config.ini: -------------------------------------------------------------------------------- 1 | ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ 2 | ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ 3 | ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ 4 | ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ 5 | ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ 6 | ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ 7 | 8 | 9 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 10 | 11 | [bar/mainbar] 12 | width = 99% 13 | ; width = 100% 14 | height = 40 15 | radius = 0 16 | fixed-center = true 17 | 18 | border-size = 10 19 | border-color = ${colors.base} 20 | 21 | background = ${colors.base} 22 | foreground = ${colors.text} 23 | 24 | padding-left = 1 25 | padding-right = 1 26 | 27 | module-margin-left = 0 28 | module-margin-right = 0 29 | 30 | font-0 = "JetBrainsMono Nerd Font:size=15;5" 31 | font-1 = "SauceCodePro Nerd Font Mono:size=28;7" 32 | font-2 = "Material Design Icons:pixelsize=15;5" 33 | font-3 = "Sinji:pixelsize=15;5" 34 | font-4 = "Togalite medium:pixelsize=11;2" 35 | font-5 = "SauceCodePro Nerd Font Mono:size=16;5" 36 | font-6 = "JetBrainsMono Nerd Font Mono:size=12;4" 37 | font-7 = "JetBrainsMono Nerd Font:pixelsize=12;4" 38 | font-8 = "JetBrainsMono Nerd Font:pixelsize=20;5" 39 | font-9 = "Iosevka Nerd Font:style=Bold:pixelsize=30;7" 40 | 41 | ; MODULES SETUP 42 | modules-left = appmenu sep vertical-dots sep left1 windowtitle left2 43 | ; modules-center = left1 spotify-artist spotify-track 44 | modules-center = left1 bspwm left2 45 | modules-right = right1 sep1 memory sep1 dot1 sep1 pacman-updates sep1 dot1 sep1 cpu sep1 right2 sep dot sep right1 date right2 46 | 47 | cursor-click = pointer 48 | cursor-scroll = pointer 49 | 50 | line-size = 2 51 | 52 | wm-name = bspwm 53 | override-redirect = false 54 | wm-restack = bspwm 55 | enable-ipc = true 56 | 57 | ; offset-y = 1% 58 | offset-y = 0.5% 59 | offset-x = 0.5% 60 | 61 | ;separator = %{F#4C566A}|%{F-} 62 | ; label-separator = | 63 | 64 | [settings] 65 | include-file = ~/.config/bspwm/apps/polybar/modules/modules.ini 66 | include-file=~/.config/bspwm/apps/polybar/colors/mocha.ini 67 | screenchange-reload = true 68 | ;compositing-background = xor 69 | ;compositing-background = screen 70 | ;compositing-foreground = source 71 | ;compositing-border = over 72 | pseudo-transparency = false 73 | 74 | [global/wm] 75 | margin-bottom = 0 76 | margin-top = 0 77 | -------------------------------------------------------------------------------- /config/nvim/lua/user/keymaps.lua: -------------------------------------------------------------------------------- 1 | -- Shorten function name 2 | local keymap = vim.keymap.set 3 | -- Silent keymap option 4 | local opts = { silent = true } 5 | 6 | --Remap space as leader key 7 | keymap("", "", "", opts) 8 | vim.g.mapleader = " " 9 | 10 | -- Modes 11 | -- normal_mode = "n", 12 | -- insert_mode = "i", 13 | -- visual_mode = "v", 14 | -- visual_block_mode = "x", 15 | -- term_mode = "t", 16 | -- command_mode = "c", 17 | 18 | -- Normal -- 19 | -- Better window navigation 20 | keymap("n", "", "h", opts) 21 | keymap("n", "", "j", opts) 22 | keymap("n", "", "k", opts) 23 | keymap("n", "", "l", opts) 24 | 25 | -- Resize with arrows 26 | keymap("n", "", ":resize -2", opts) 27 | keymap("n", "", ":resize +2", opts) 28 | keymap("n", "", ":vertical resize -2", opts) 29 | keymap("n", "", ":vertical resize +2", opts) 30 | 31 | -- Navigate buffers 32 | keymap("n", "", ":bnext", opts) 33 | keymap("n", "", ":bprevious", opts) 34 | 35 | -- Clear highlights 36 | keymap("n", "h", "nohlsearch", opts) 37 | 38 | -- Close buffers 39 | keymap("n", "", "Bdelete!", opts) 40 | 41 | -- Better paste 42 | keymap("v", "p", '"_dP', opts) 43 | 44 | -- Insert -- 45 | -- Press jk fast to enter 46 | keymap("i", "jk", "", opts) 47 | 48 | -- Visual -- 49 | -- Stay in indent mode 50 | keymap("v", "<", "", ">gv", opts) 52 | 53 | -- Plugins -- 54 | 55 | -- NvimTree 56 | keymap("n", "e", ":NvimTreeToggle", opts) 57 | 58 | -- Telescope 59 | keymap("n", "ff", ":Telescope find_files", opts) 60 | keymap("n", "ft", ":Telescope live_grep", opts) 61 | keymap("n", "fp", ":Telescope projects", opts) 62 | keymap("n", "fb", ":Telescope buffers", opts) 63 | 64 | -- Git 65 | keymap("n", "gg", "lua _LAZYGIT_TOGGLE()", opts) 66 | 67 | -- Comment 68 | keymap("n", "/", "lua require('Comment.api').toggle.linewise.current()", opts) 69 | 70 | -- DAP 71 | keymap("n", "db", "lua require'dap'.toggle_breakpoint()", opts) 72 | keymap("n", "dc", "lua require'dap'.continue()", opts) 73 | keymap("n", "di", "lua require'dap'.step_into()", opts) 74 | keymap("n", "do", "lua require'dap'.step_over()", opts) 75 | keymap("n", "dO", "lua require'dap'.step_out()", opts) 76 | keymap("n", "dr", "lua require'dap'.repl.toggle()", opts) 77 | keymap("n", "dl", "lua require'dap'.run_last()", opts) 78 | keymap("n", "du", "lua require'dapui'.toggle()", opts) 79 | keymap("n", "dt", "lua require'dap'.terminate()", opts) 80 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/bar/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwidget bar [] 2 | (box 3 | :class "bar" 4 | :orientation "h" 5 | (left) 6 | (center) 7 | (right))) 8 | 9 | (defwidget left [] 10 | (box 11 | :orientation "h" 12 | :halign "start" 13 | :valign "center" 14 | :space-evenly "false" 15 | :class "left" 16 | (launch_theme_switcher) 17 | (dots) 18 | (music) 19 | (volum) 20 | )) 21 | 22 | (defwidget center [] 23 | (box 24 | :orientation "v" 25 | :halign "center" 26 | :valign "center" 27 | :space-evenly "false" 28 | :class "center" 29 | (workspaces) 30 | )) 31 | 32 | (defwidget right [] 33 | (box 34 | :orientation "v" 35 | :halign "end" 36 | :valign "center" 37 | :space-evenly "false" 38 | :class "right" 39 | (time))) 40 | 41 | (defwidget workspaces [] 42 | (literal :content workspace)) 43 | (deflisten workspace "scripts/workspaces") 44 | 45 | (defwidget dots [] 46 | (label 47 | :class "dots" 48 | :text "" 49 | ) 50 | ) 51 | 52 | (defwidget launch_theme_switcher [] 53 | (button 54 | :class "launcher" 55 | :onclick "~/.config/bspwm/apps/eww/ewwDashboard" 56 | " " 57 | ) 58 | ) 59 | 60 | (defpoll time :interval "1s" `date "+%I:%M %p"`) 61 | 62 | (defwidget time [] 63 | (label 64 | :class "time" 65 | :text " ${time}" 66 | ) 67 | ) 68 | 69 | (defpoll playerctl :interval "1s" "scripts/player.sh") 70 | 71 | (defwidget music [] 72 | (box 73 | (label 74 | :class "music" 75 | :text " ${playerctl}" 76 | :limit-width 20 77 | ) 78 | ) 79 | ) 80 | 81 | (defpoll volumen :interval "1s" "scripts/volume.sh --percentage") 82 | (defpoll volume_value :interval "1s" "scripts/volume.sh --vol") 83 | (defpoll volume_icon :interval "1s" "scripts/volume.sh --icon") 84 | 85 | ;; Volume Widgets ;; 86 | (defwidget volum [] 87 | (eventbox :onhover "eww -c ~/.config/bspwm/apps/eww/bar/ update volum=true" 88 | :onhoverlost "eww -c ~/.config/bspwm/apps/eww/bar/ update volum=false" 89 | (box :orientation "h" 90 | :space-evenly "false" 91 | :spacing "10" 92 | (label :text "Vol: ") 93 | (scale :class "volbar" 94 | :value volume_value 95 | :onchange "scripts/volume.sh set {}" 96 | :orientation "h" 97 | :flipped false 98 | :tooltip "Volume: ${volumen}" 99 | :max 101 100 | :min 0)) 101 | )) 102 | (defvar volum false) 103 | 104 | (defwindow bar 105 | :monitor 0 106 | :windowtype "dock" 107 | :geometry (geometry :x "0%" 108 | :y "5px" 109 | :width "99%" 110 | :height "60px" 111 | :anchor "top center") 112 | :reserve (struts :side "top" :distance "4%") 113 | (bar)) 114 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/.config.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | background = #302D41 3 | foreground = #D9E0EE 4 | back = #1E1E2E 5 | 6 | [bar/top] 7 | width = 100% 8 | height = 28 9 | radius = 0.0 10 | fixed-center = true 11 | 12 | border-size = 8 13 | border-color = ${colors.back} 14 | 15 | bottom = true 16 | 17 | foreground = #D9E0EE 18 | background = #1E1E2E 19 | 20 | padding-left = 1 21 | padding-right = 1 22 | module-margin-left = 0 23 | module-margin-right = 0 24 | 25 | modules-left = left i3 right 26 | modules-center = left xwindow right 27 | modules-right = left date right 28 | 29 | override-redirect = true 30 | wm-restack = i3 31 | enable-ipc = true 32 | 33 | cursor-click = pointer 34 | cursor-scroll = ns-resize 35 | 36 | font-0 = "JetBrainsMono Nerd Font:size=10;3" 37 | font-1 = "SauceCodePro Nerd Font Mono:size=20;5" 38 | font-2 = "Material Icons:pixelsize=15;5" 39 | font-3 = "Sinji:pixelsize=15;5" 40 | font-4 = "Togalite medium:pixelsize=11;2" 41 | font-5 = "SauceCodePro Nerd Font Mono:size=16;5" 42 | font-6 = "JetBrainsMono Nerd Font Mono:size=12;4" 43 | font-7 = "JetBrainsMono Nerd Font:pixelsize=12;4" 44 | 45 | pseudo-transparency = true 46 | 47 | wm-name = i3 48 | 49 | #tray 50 | tray-position = right 51 | 52 | ; If true, the bar will not shift its 53 | ; contents when the tray changes 54 | tray-detached = false 55 | 56 | ; Tray icon max size 57 | tray-maxsize = 16 58 | 59 | tray-scale = 1.0 60 | 61 | 62 | [module/left] 63 | type = custom/text 64 | content-foreground = ${colors.background} 65 | content = "" 66 | content-font = 2 67 | 68 | [module/right] 69 | type = custom/text 70 | content-foreground = ${colors.background} 71 | content = "" 72 | content-font = 2 73 | 74 | [module/xwindow] 75 | type = internal/xwindow 76 | label = %title:0:30:..% 77 | label-background = ${colors.background} 78 | 79 | 80 | [module/date] 81 | type = internal/date 82 | interval = 5 83 | 84 | date = 85 | date-alt = "%A %m/%d/%y" 86 | 87 | time = "%OI:%M %p" 88 | time-alt = "| %OI:%M %p" 89 | 90 | label = %date% %time% 91 | label-background = ${colors.background} 92 | 93 | 94 | [module/i3] 95 | type = internal/i3 96 | pin-workspaces = true 97 | strip-wsnumbers = true 98 | index-sort = true 99 | enable-click = true 100 | enable-scroll = true 101 | wrapping-scroll = true 102 | reverse-scroll = true 103 | fuzzy-match = true 104 | 105 | ws-icon-0 = "0;0 " 106 | ws-icon-1 = "1;1 " 107 | ws-icon-2 = "2;2 " 108 | ws-icon-3 = "3;3 " 109 | ws-icon-4 = "4;4 " 110 | ws-icon-5 = "5;5 " 111 | ws-icon-6 = "6;6 " 112 | ws-icon-7 = "7;7 " 113 | ws-icon-8 = "8;8 " 114 | ws-icon-9 = "9;9 " 115 | 116 | format = 117 | 118 | label-focused = %index% 119 | label-focused-foreground = #131020 120 | label-focused-background = #96cdfb 121 | label-focused-padding = 2 122 | 123 | label-unfocused = ${self.label-focused} 124 | label-unfocused-background = ${colors.background} 125 | label-unfocused-foreground = #ffffff 126 | label-unfocused-padding = 2 127 | 128 | label-urgent = ${self.label-focused} 129 | label-urgent-foreground = ${colors.background} 130 | label-urgent-background = #F28FAD 131 | label-urgent-padding = 2 132 | 133 | 134 | [settings] 135 | screenchange-reload = true 136 | 137 | [global/wm] 138 | margin-bottom = 0 139 | margin-top = 0 140 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/eww.scss: -------------------------------------------------------------------------------- 1 | @import 'colors/mocha'; 2 | 3 | * { 4 | all: unset; //Unsets everything so you can style everything from scratch 5 | } 6 | 7 | //Global Styles 8 | .theme_switcher { 9 | background-color: $base; 10 | padding: 1rem; 11 | } 12 | 13 | .music { 14 | background-color: $base; 15 | padding: 1rem; 16 | } 17 | 18 | .stats { 19 | padding: 1rem; 20 | background-color: $base; 21 | } 22 | 23 | .statsTitle { 24 | font-size: 2.5em; 25 | font-family: JetBrainsMono Nerd Font; 26 | font-weight: Bold; 27 | background-color: $base; 28 | color: $text; 29 | padding: 10px; 30 | } 31 | 32 | .title { 33 | font-size: 2.5em; 34 | font-family: JetBrainsMono Nerd Font; 35 | font-weight: Bold; 36 | background-color: $base; 37 | color: $text; 38 | padding: 10px; 39 | } 40 | 41 | 42 | .switch_theme_btn { 43 | background-color: $surface0; 44 | color: $text; 45 | border-radius: 20px; 46 | font-size: 1.2em; 47 | padding: 10px; 48 | margin: 10px; 49 | } 50 | 51 | .music_title { 52 | font-size: 2.5em; 53 | font-family: JetBrainsMono Nerd Font; 54 | font-weight: Bold; 55 | color: $text; 56 | // padding: 10px; 57 | } 58 | 59 | .music_label { 60 | font-family: JetBrainsMono Nerd Font; 61 | font-weight: Bold; 62 | font-size: 1.2em; 63 | padding: 10px; 64 | color: $text; 65 | // margin: 10px; 66 | } 67 | 68 | .music_art { 69 | background-size: 100% 100%; 70 | background-repeat: no-repeat; 71 | border-radius: 10px; 72 | min-width: 360px; 73 | // min-height: 100px; 74 | } 75 | 76 | .music_controls { 77 | font-size: 2em; 78 | color: $blue; 79 | font-family: JetBrainsMono Nerd Font; 80 | margin: 10px; 81 | } 82 | 83 | .toggle_play { 84 | font-size: 1.2em; 85 | } 86 | 87 | .previous_btn { 88 | font-size: 0.8em; 89 | } 90 | 91 | .next_btn { 92 | margin-right: 50px; 93 | font-size: 0.8em; 94 | } 95 | 96 | .volume-slider trough { 97 | padding: 0.5em; 98 | background-color: $surface0; 99 | border-radius: 15px; 100 | } 101 | 102 | .volume-slider highlight { 103 | padding: 0.5em; 104 | background-color: $blue; 105 | border-radius: 15px; 106 | } 107 | 108 | .vol_btn { 109 | background-repeat: no-repeat; 110 | background-size: 25px; 111 | min-height: 25px; 112 | min-width: 10px; 113 | } 114 | 115 | .vol_percentage { 116 | font-family: Iosevka Nerd Font; 117 | color: $text; 118 | font-size: 1.3em; 119 | } 120 | 121 | .ram-label { 122 | padding: 1em; 123 | font-family: Iosevka Nerd Font; 124 | color: $red; 125 | font-size: 2em; 126 | } 127 | 128 | .ram { 129 | background-color: $surface0; 130 | border-radius: 10px; 131 | padding: 10px; 132 | } 133 | 134 | .ram-circle { 135 | color: $red; 136 | background-color: $surface2; 137 | } 138 | 139 | .cpu-label { 140 | padding: 1em; 141 | font-family: Iosevka Nerd Font; 142 | color: $green; 143 | font-size: 2em; 144 | } 145 | 146 | .cpu { 147 | background-color: $surface0; 148 | border-radius: 10px; 149 | padding: 10px; 150 | } 151 | 152 | .cpu-circle { 153 | color: $green; 154 | background-color: $surface2; 155 | } 156 | 157 | .pulseaudio_eq { 158 | background-color: $surface0; 159 | padding: 10px; 160 | margin-top: 10px; 161 | font-size: 1.3em; 162 | border-radius: 20px; 163 | color: $green; 164 | font-family: Iosevka Nerd Font; 165 | font-weight: Bold; 166 | } 167 | -------------------------------------------------------------------------------- /config/nvim/lua/user/cmp.lua: -------------------------------------------------------------------------------- 1 | local cmp_status_ok, cmp = pcall(require, "cmp") 2 | if not cmp_status_ok then 3 | return 4 | end 5 | 6 | local snip_status_ok, luasnip = pcall(require, "luasnip") 7 | if not snip_status_ok then 8 | return 9 | end 10 | 11 | require("luasnip/loaders/from_vscode").lazy_load() 12 | 13 | local check_backspace = function() 14 | local col = vim.fn.col(".") - 1 15 | return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") 16 | end 17 | 18 | local kind_icons = { 19 | Text = "", 20 | Method = "", 21 | Function = "", 22 | Constructor = "", 23 | Field = "", 24 | Variable = "", 25 | Class = "", 26 | Interface = "", 27 | Module = "", 28 | Property = "", 29 | Unit = "", 30 | Value = "", 31 | Enum = "", 32 | Keyword = "", 33 | Snippet = "", 34 | Color = "", 35 | File = "", 36 | Reference = "", 37 | Folder = "", 38 | EnumMember = "", 39 | Constant = "", 40 | Struct = "", 41 | Event = "", 42 | Operator = "", 43 | TypeParameter = "", 44 | } 45 | 46 | cmp.setup({ 47 | snippet = { 48 | expand = function(args) 49 | luasnip.lsp_expand(args.body) -- For `luasnip` users. 50 | end, 51 | }, 52 | 53 | mapping = cmp.mapping.preset.insert({ 54 | [""] = cmp.mapping.select_prev_item(), 55 | [""] = cmp.mapping.select_next_item(), 56 | [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), 57 | [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), 58 | [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), 59 | [""] = cmp.mapping({ 60 | i = cmp.mapping.abort(), 61 | c = cmp.mapping.close(), 62 | }), 63 | -- Accept currently selected item. If none selected, `select` first item. 64 | -- Set `select` to `false` to only confirm explicitly selected items. 65 | [""] = cmp.mapping.confirm({ select = true }), 66 | [""] = cmp.mapping(function(fallback) 67 | if cmp.visible() then 68 | cmp.select_next_item() 69 | elseif luasnip.expandable() then 70 | luasnip.expand() 71 | elseif luasnip.expand_or_jumpable() then 72 | luasnip.expand_or_jump() 73 | elseif check_backspace() then 74 | fallback() 75 | else 76 | fallback() 77 | end 78 | end, { 79 | "i", 80 | "s", 81 | }), 82 | [""] = cmp.mapping(function(fallback) 83 | if cmp.visible() then 84 | cmp.select_prev_item() 85 | elseif luasnip.jumpable(-1) then 86 | luasnip.jump(-1) 87 | else 88 | fallback() 89 | end 90 | end, { 91 | "i", 92 | "s", 93 | }), 94 | }), 95 | formatting = { 96 | fields = { "kind", "abbr", "menu" }, 97 | format = function(entry, vim_item) 98 | vim_item.kind = kind_icons[vim_item.kind] 99 | vim_item.menu = ({ 100 | nvim_lsp = "", 101 | nvim_lua = "", 102 | luasnip = "", 103 | buffer = "", 104 | path = "", 105 | emoji = "", 106 | })[entry.source.name] 107 | return vim_item 108 | end, 109 | }, 110 | sources = { 111 | { name = "nvim_lsp" }, 112 | { name = "nvim_lua" }, 113 | { name = "luasnip" }, 114 | { name = "buffer" }, 115 | { name = "path" }, 116 | }, 117 | confirm_opts = { 118 | behavior = cmp.ConfirmBehavior.Replace, 119 | select = false, 120 | }, 121 | window = { 122 | completion = cmp.config.window.bordered(), 123 | documentation = cmp.config.window.bordered(), 124 | }, 125 | experimental = { 126 | ghost_text = true, 127 | }, 128 | }) 129 | -------------------------------------------------------------------------------- /config/nvim/lua/user/lsp/handlers.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | M.setup = function() 4 | local signs = { 5 | 6 | { name = "DiagnosticSignError", text = "" }, 7 | { name = "DiagnosticSignWarn", text = "" }, 8 | { name = "DiagnosticSignHint", text = "" }, 9 | { name = "DiagnosticSignInfo", text = "" }, 10 | } 11 | 12 | for _, sign in ipairs(signs) do 13 | vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) 14 | end 15 | 16 | local config = { 17 | virtual_text = false, -- disable virtual text 18 | signs = { 19 | active = signs, -- show signs 20 | }, 21 | update_in_insert = true, 22 | underline = true, 23 | severity_sort = true, 24 | float = { 25 | focusable = true, 26 | style = "minimal", 27 | border = "rounded", 28 | source = "always", 29 | header = "", 30 | prefix = "", 31 | }, 32 | } 33 | 34 | vim.diagnostic.config(config) 35 | 36 | vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { 37 | border = "rounded", 38 | }) 39 | 40 | vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { 41 | border = "rounded", 42 | }) 43 | end 44 | 45 | local function lsp_keymaps(bufnr) 46 | local opts = { noremap = true, silent = true } 47 | local keymap = vim.api.nvim_buf_set_keymap 48 | keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) 49 | keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) 50 | keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) 51 | keymap(bufnr, "n", "gI", "lua vim.lsp.buf.implementation()", opts) 52 | keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) 53 | keymap(bufnr, "n", "gl", "lua vim.diagnostic.open_float()", opts) 54 | keymap(bufnr, "n", "lf", "lua vim.lsp.buf.formatting()", opts) 55 | keymap(bufnr, "n", "li", "LspInfo", opts) 56 | keymap(bufnr, "n", "lI", "LspInstallInfo", opts) 57 | keymap(bufnr, "n", "la", "lua vim.lsp.buf.code_action()", opts) 58 | keymap(bufnr, "n", "lj", "lua vim.diagnostic.goto_next({buffer=0})", opts) 59 | keymap(bufnr, "n", "lk", "lua vim.diagnostic.goto_prev({buffer=0})", opts) 60 | keymap(bufnr, "n", "lr", "lua vim.lsp.buf.rename()", opts) 61 | keymap(bufnr, "n", "ls", "lua vim.lsp.buf.signature_help()", opts) 62 | keymap(bufnr, "n", "lq", "lua vim.diagnostic.setloclist()", opts) 63 | end 64 | 65 | M.on_attach = function(client, bufnr) 66 | local status_cmp_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") 67 | if not status_cmp_ok then 68 | return 69 | end 70 | 71 | if client.name == "tsserver" then 72 | client.server_capabilities.documentFormattingProvider = false 73 | end 74 | 75 | if client.name == "sumneko_lua" then 76 | client.server_capabilities.documentFormattingProvider = false 77 | end 78 | 79 | M.capabilities = vim.lsp.protocol.make_client_capabilities() 80 | M.capabilities.textDocument.completion.completionItem.snippetSupport = true 81 | M.capabilities = cmp_nvim_lsp.update_capabilities(M.capabilities) 82 | 83 | lsp_keymaps(bufnr) 84 | local status_ok, illuminate = pcall(require, "illuminate") 85 | if not status_ok then 86 | return 87 | end 88 | illuminate.on_attach(client) 89 | end 90 | 91 | return M 92 | 93 | -------------------------------------------------------------------------------- /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 | close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" 9 | right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" 10 | offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, 11 | separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, 12 | }, 13 | 14 | highlights = { 15 | fill = { 16 | fg = { attribute = "fg", highlight = "#ff0000" }, 17 | bg = { attribute = "bg", highlight = "TabLine" }, 18 | }, 19 | 20 | background = { 21 | fg = { attribute = "fg", highlight = "TabLine" }, 22 | bg = { attribute = "bg", highlight = "TabLine" }, 23 | }, 24 | 25 | buffer_visible = { 26 | fg = { attribute = "fg", highlight = "TabLine" }, 27 | bg = { attribute = "bg", highlight = "TabLine" }, 28 | }, 29 | 30 | close_button = { 31 | fg = { attribute = "fg", highlight = "TabLine" }, 32 | bg = { attribute = "bg", highlight = "TabLine" }, 33 | }, 34 | close_button_visible = { 35 | fg = { attribute = "fg", highlight = "TabLine" }, 36 | bg = { attribute = "bg", highlight = "TabLine" }, 37 | }, 38 | 39 | tab_selected = { 40 | fg = { attribute = "fg", highlight = "Normal" }, 41 | bg = { attribute = "bg", highlight = "Normal" }, 42 | }, 43 | 44 | tab = { 45 | fg = { attribute = "fg", highlight = "TabLine" }, 46 | bg = { attribute = "bg", highlight = "TabLine" }, 47 | }, 48 | 49 | tab_close = { 50 | -- fg = {attribute='fg',highlight='LspDiagnosticsDefaultError'}, 51 | fg = { attribute = "fg", highlight = "TabLineSel" }, 52 | bg = { attribute = "bg", highlight = "Normal" }, 53 | }, 54 | 55 | duplicate_selected = { 56 | fg = { attribute = "fg", highlight = "TabLineSel" }, 57 | bg = { attribute = "bg", highlight = "TabLineSel" }, 58 | italic = true, 59 | }, 60 | 61 | duplicate_visible = { 62 | fg = { attribute = "fg", highlight = "TabLine" }, 63 | bg = { attribute = "bg", highlight = "TabLine" }, 64 | italic = true, 65 | }, 66 | 67 | duplicate = { 68 | fg = { attribute = "fg", highlight = "TabLine" }, 69 | bg = { attribute = "bg", highlight = "TabLine" }, 70 | italic = true, 71 | }, 72 | 73 | modified = { 74 | fg = { attribute = "fg", highlight = "TabLine" }, 75 | bg = { attribute = "bg", highlight = "TabLine" }, 76 | }, 77 | 78 | modified_selected = { 79 | fg = { attribute = "fg", highlight = "Normal" }, 80 | bg = { attribute = "bg", highlight = "Normal" }, 81 | }, 82 | 83 | modified_visible = { 84 | fg = { attribute = "fg", highlight = "TabLine" }, 85 | bg = { attribute = "bg", highlight = "TabLine" }, 86 | }, 87 | 88 | separator = { 89 | fg = { attribute = "bg", highlight = "TabLine" }, 90 | bg = { attribute = "bg", highlight = "TabLine" }, 91 | }, 92 | 93 | separator_selected = { 94 | fg = { attribute = "bg", highlight = "Normal" }, 95 | bg = { attribute = "bg", highlight = "Normal" }, 96 | }, 97 | 98 | indicator_selected = { 99 | fg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" }, 100 | bg = { attribute = "bg", highlight = "Normal" }, 101 | }, 102 | }, 103 | } 104 | -------------------------------------------------------------------------------- /config/bspwm/sxhkdrc: -------------------------------------------------------------------------------- 1 | # 2 | # wm independent hotkeys 3 | # 4 | 5 | # terminal emulator 6 | super + shift + Return 7 | kitty --config ~/.config/bspwm/apps/kitty/kitty.conf 8 | 9 | super + d 10 | ~/.config/bspwm/apps/rofi/launch 11 | 12 | super + shift + p 13 | ~/.config/bspwm/apps/rofi/powermenu 14 | 15 | super + shift + s 16 | flameshot gui 17 | # sh ~/.config/bspwm/rofi/bin/screenshot 18 | 19 | #~button3 20 | # jgmenu_run 21 | 22 | ~button3 23 | xqp 0 $(xdo id -N Bspwm -n root) && ~/.config/bspwm/apps/jgmenu/run 24 | 25 | # make sxhkd reload its configuration files: 26 | super + Escape 27 | pkill -USR1 -x sxhkd 28 | 29 | # super + shift + s 30 | # flameshot gui 31 | 32 | super + shift + f 33 | firefox 34 | 35 | super + shift + d 36 | nemo 37 | 38 | # 39 | # bspwm hotkeys 40 | # 41 | 42 | # quit/restart bspwm 43 | super + shift + {q,r} 44 | bspc {quit,wm -r} 45 | 46 | # close and kill 47 | super + shift + c 48 | bspc node -c 49 | 50 | # alternate between the tiled and monocle layout 51 | super + m 52 | bspc desktop -l next 53 | 54 | # send the newest marked node to the newest preselected node 55 | super + y 56 | bspc node newest.marked.local -n newest.!automatic.local 57 | 58 | # swap the current node and the biggest window 59 | super + g 60 | bspc node -s biggest.window 61 | 62 | # 63 | # state/flags 64 | # 65 | 66 | # set the window state 67 | # super + {t,shift + t,s,f} 68 | # bspc node -t {pseudo_tiled,tiled,floating,fullscreen} 69 | 70 | super + shift + t 71 | bspc node -t floating 72 | 73 | super + t 74 | bspc node -t tiled 75 | 76 | # set the node flags 77 | super + ctrl + {m,x,y,z} 78 | bspc node -g {marked,locked,sticky,private} 79 | 80 | # 81 | # focus/swap 82 | # 83 | 84 | # focus the node in the given direction 85 | super + {_,shift + }{h,j,k,l} 86 | bspc node -{f,s} {west,south,north,east} 87 | 88 | # focus the node for the given path jump 89 | super + {p,b,comma,period} 90 | bspc node -f @{parent,brother,first,second} 91 | 92 | # focus the next/previous window in the current desktop 93 | super + {_,shift + }c 94 | bspc node -f {next,prev}.local.!hidden.window 95 | 96 | # focus the next/previous desktop in the current monitor 97 | super + bracket{left,right} 98 | bspc desktop -f {prev,next}.local 99 | 100 | # focus the last node/desktop 101 | super + {grave,Tab} 102 | bspc {node,desktop} -f last 103 | 104 | # focus the older or newer node in the focus history 105 | super + {o,i} 106 | bspc wm -h off; \ 107 | bspc node {older,newer} -f; \ 108 | bspc wm -h on 109 | 110 | # focus or send to the given desktop 111 | super + {_,shift + }{1-9,0} 112 | bspc {desktop -f,node -d} '^{1-9,10}' 113 | 114 | # 115 | # preselect 116 | # 117 | 118 | # preselect the direction 119 | super + ctrl + {h,j,k,l} 120 | bspc node -p {west,south,north,east} 121 | 122 | # preselect the ratio 123 | super + ctrl + {1-9} 124 | bspc node -o 0.{1-9} 125 | 126 | # cancel the preselection for the focused node 127 | super + ctrl + space 128 | bspc node -p cancel 129 | 130 | # cancel the preselection for the focused desktop 131 | super + ctrl + shift + space 132 | bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel 133 | 134 | # 135 | # move/resize 136 | # 137 | 138 | # expand a window by moving one of its side outward 139 | super + alt + {h,j,k,l} 140 | bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} 141 | 142 | # contract a window by moving one of its side inward 143 | super + alt + shift + {h,j,k,l} 144 | bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} 145 | 146 | # move a floating window 147 | super + {Left,Down,Up,Right} 148 | bspc node -v {-20 0,0 20,0 -20,20 0} 149 | -------------------------------------------------------------------------------- /config/nvim/lua/user/options.lua: -------------------------------------------------------------------------------- 1 | vim.opt.backup = false -- creates a backup file 2 | vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard 3 | vim.opt.cmdheight = 1 -- more space in the neovim command line for displaying messages 4 | vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp 5 | vim.opt.conceallevel = 0 -- so that `` is visible in markdown files 6 | vim.opt.fileencoding = "utf-8" -- the encoding written to a file 7 | vim.opt.hlsearch = true -- highlight all matches on previous search pattern 8 | vim.opt.ignorecase = true -- ignore case in search patterns 9 | vim.opt.mouse = "a" -- allow the mouse to be used in neovim 10 | vim.opt.pumheight = 10 -- pop up menu height 11 | vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore 12 | vim.opt.showtabline = 0 -- always show tabs 13 | vim.opt.smartcase = true -- smart case 14 | vim.opt.smartindent = true -- make indenting smarter again 15 | vim.opt.splitbelow = true -- force all horizontal splits to go below current window 16 | vim.opt.splitright = true -- force all vertical splits to go to the right of current window 17 | vim.opt.swapfile = false -- creates a swapfile 18 | vim.opt.termguicolors = true -- set term gui colors (most terminals support this) 19 | vim.opt.timeoutlen = 1000 -- time to wait for a mapped sequence to complete (in milliseconds) 20 | vim.opt.undofile = true -- enable persistent undo 21 | vim.opt.updatetime = 300 -- faster completion (4000ms default) 22 | vim.opt.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 23 | vim.opt.expandtab = true -- convert tabs to spaces 24 | vim.opt.shiftwidth = 2 -- the number of spaces inserted for each indentation 25 | vim.opt.tabstop = 2 -- insert 2 spaces for a tab 26 | vim.opt.cursorline = true -- highlight the current line 27 | vim.opt.number = true -- set numbered lines 28 | vim.opt.laststatus = 3 -- only the last window will always have a status line 29 | vim.opt.showcmd = false -- hide (partial) command in the last line of the screen (for performance) 30 | vim.opt.ruler = false -- hide the line and column number of the cursor position 31 | vim.opt.numberwidth = 4 -- minimal number of columns to use for the line number {default 4} 32 | vim.opt.signcolumn = "yes" -- always show the sign column, otherwise it would shift the text each time 33 | vim.opt.wrap = false -- display lines as one long line 34 | vim.opt.scrolloff = 8 -- minimal number of screen lines to keep above and below the cursor 35 | vim.opt.sidescrolloff = 8 -- minimal number of screen columns to keep to the left and right of the cursor if wrap is `false` 36 | vim.opt.guifont = "FantasqueSansMono Nerd Font:h17" -- the font used in graphical neovim applications 37 | vim.opt.fillchars.eob=" " -- show empty lines at the end of a buffer as ` ` {default `~`} 38 | vim.opt.shortmess:append "c" -- hide all the completion messages, e.g. "-- XXX completion (YYY)", "match 1 of 2", "The only match", "Pattern not found" 39 | vim.opt.whichwrap:append("<,>,[,],h,l") -- keys allowed to move to the previous/next line when the beginning/end of line is reached 40 | vim.opt.iskeyword:append("-") -- treats words with `-` as single words 41 | vim.cmd("set guicursor=") 42 | -------------------------------------------------------------------------------- /config/bspwm/apps/picom/picom.conf: -------------------------------------------------------------------------------- 1 | # _ 2 | # ____ (_)________ ____ ___ 3 | # / __ \/ / ___/ __ \/ __ `__ \ 4 | # / /_/ / / /__/ /_/ / / / / / / 5 | # / .___/_/\___/\____/_/ /_/ /_/ 6 | # /_/ 7 | # 8 | 9 | ################################# 10 | # Shadows # 11 | ################################# 12 | 13 | shadow = true; 14 | 15 | shadow-radius = 20; 16 | shadow-offset-x = -20; 17 | shadow-offset-y = -18; 18 | 19 | shadow-exclude = [ 20 | "name = 'Notification'", 21 | "class_g = 'Conky'", 22 | "class_g ?= 'Notify-osd'", 23 | "class_g = 'Cairo-clock'", 24 | "class_g = 'firefox'", 25 | "class_g = 'Plank'", 26 | "class_g = 'Peek'", 27 | "class_g = 'Blender'", 28 | "class_g = 'eww-taskbar'", 29 | "_GTK_FRAME_EXTENTS@:c" 30 | ]; 31 | 32 | ################################# 33 | # Fading # 34 | ################################# 35 | 36 | fading = true; 37 | 38 | fade-in-step = 0.03; 39 | fade-out-step = 0.03; 40 | 41 | fade-exclude = [ 42 | "class_g = 'slop'", 43 | "class_g = 'jgmenu'", 44 | ]; 45 | 46 | no-fading-openclose = false; 47 | 48 | no-fading-destroyed-argb = true; 49 | 50 | ################################# 51 | # Transparency / Opacity # 52 | ################################# 53 | 54 | inactive-opacity-override = false; 55 | 56 | active-opacity = 1.0; 57 | 58 | focus-exclude = [ 59 | "class_g = 'Cairo-clock'", 60 | "class_g = 'Bar'", 61 | "class_g = 'slop'", 62 | ]; 63 | 64 | opacity-rule = [ 65 | "80:class_g = 'Bar'", 66 | "90:class_g = 'slop'", 67 | "90:class_g = 'Alacritty'", 68 | "100:class_g = 'kitty'", 69 | "100:class_g = 'Polybar'", 70 | "100:class_g = 'firefox'", 71 | "100:class_g = 'dmenu'", 72 | ]; 73 | 74 | ################################# 75 | # Background-Blurring # 76 | ################################# 77 | # 78 | blur-background = false; 79 | 80 | blur-kern="3x3box"; 81 | 82 | blur-background-exclude = [ 83 | "window_type = 'dock'", 84 | "class_g = 'slop'", 85 | "_GTK_FRAME_EXTENTS@:c" 86 | ]; 87 | 88 | ################################# 89 | # General Settings # 90 | ################################# 91 | 92 | daemon = true; 93 | 94 | backend = "glx"; 95 | 96 | corner-radius = 12; 97 | round-borders = 1; 98 | rounded-corners-exclude = [ 99 | # "class_g = 'Polybar'", 100 | "class_g = 'i3lock'", 101 | "class_g = 'Screenkey'", 102 | "class_g = 'eww-taskbar'", 103 | "class_g = 'eww-calendar_win'", 104 | # "class_g = 'awesome'", 105 | ] 106 | 107 | vsync = true; 108 | 109 | mark-wmwin-focused = true; 110 | mark-ovredir-focused = true; 111 | 112 | detect-rounded-corners = true; 113 | detect-client-opacity = true; 114 | 115 | refresh-rate = 165; 116 | 117 | detect-transient = true; 118 | detect-client-leader = true; 119 | 120 | use-damage = false; 121 | 122 | force-win-blend = true; 123 | 124 | log-level = "warn"; 125 | 126 | # Set the log file. 127 | # If *--log-file* is never specified, logs will be written to stderr. 128 | # Otherwise, logs will to written to the given file, though some of the early 129 | # logs might still be written to the stderr. 130 | # When setting this option from the config file, it is recommended to use an absolute path. 131 | # 132 | # log-file = '/path/to/your/log/file' 133 | 134 | wintypes: 135 | { 136 | tooltip = { fade = true; shadow = false; opacity = 1.0; focus = true; full-shadow = false; }; 137 | dock = { shadow = false; opacity = 1.0; full-shadow = false; } 138 | dnd = { shadow = false; } 139 | popup_menu = { opacity = 1.0; } 140 | dropdown_menu = { opacity = 1.0; } 141 | }; 142 | 143 | ################################# 144 | # Animations # 145 | ################################# 146 | 147 | animations: true; 148 | 149 | animation-stiffness = 300; 150 | animation-window-mass = 1.3; 151 | animation-dampening = 40; 152 | animation-clamping = true; 153 | 154 | animation-for-open-window = "zoom"; #open window 155 | animation-for-unmap-window = "zoom"; #minimize window 156 | animation-for-menu-window = "zoom"; 157 | animation-for-transient-window = "zoom"; #popup windows 158 | 159 | animation-for-workspace-switch-in = "zoom"; #the windows in the workspace that is coming in 160 | animation-for-workspace-switch-out = "zoom"; #the windows in the workspace that are coming out 161 | -------------------------------------------------------------------------------- /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 | git = { 40 | clone_timeout = 300, -- Timeout, in seconds, for git clones 41 | }, 42 | } 43 | 44 | -- Install your plugins here 45 | return packer.startup(function(use) 46 | -- My plugins here 47 | use { "wbthomason/packer.nvim", commit = "6afb67460283f0e990d35d229fd38fdc04063e0a" } -- Have packer manage itself 48 | use { "nvim-lua/plenary.nvim", commit = "4b7e52044bbb84242158d977a50c4cbcd85070c7" } -- Useful lua functions used by lots of plugins 49 | use { "windwp/nvim-autopairs", commit = "4fc96c8f3df89b6d23e5092d31c866c53a346347" } -- Autopairs, integrates with both cmp and treesitter 50 | use { "numToStr/Comment.nvim", commit = "97a188a98b5a3a6f9b1b850799ac078faa17ab67" } 51 | use { "JoosepAlviste/nvim-ts-context-commentstring", commit = "4d3a68c41a53add8804f471fcc49bb398fe8de08" } 52 | use { "kyazdani42/nvim-web-devicons", commit = "563f3635c2d8a7be7933b9e547f7c178ba0d4352" } 53 | use { "kyazdani42/nvim-tree.lua", commit = "7282f7de8aedf861fe0162a559fc2b214383c51c" } 54 | use { "akinsho/bufferline.nvim", commit = "83bf4dc7bff642e145c8b4547aa596803a8b4dc4" } 55 | use { "moll/vim-bbye", commit = "25ef93ac5a87526111f43e5110675032dbcacf56" } 56 | use { "nvim-lualine/lualine.nvim", commit = "a52f078026b27694d2290e34efa61a6e4a690621" } 57 | use { "akinsho/toggleterm.nvim", commit = "2a787c426ef00cb3488c11b14f5dcf892bbd0bda" } 58 | use { "ahmedkhalf/project.nvim", commit = "628de7e433dd503e782831fe150bb750e56e55d6" } 59 | use { "lewis6991/impatient.nvim", commit = "b842e16ecc1a700f62adb9802f8355b99b52a5a6" } 60 | use { "lukas-reineke/indent-blankline.nvim", commit = "db7cbcb40cc00fc5d6074d7569fb37197705e7f6" } 61 | use { "goolord/alpha-nvim", commit = "0bb6fc0646bcd1cdb4639737a1cee8d6e08bcc31" } 62 | 63 | -- Colorschemes 64 | use {"catppuccin/nvim"} 65 | use {"rose-pine/neovim"} 66 | use {"decaycs/decay.nvim"} 67 | use { "folke/tokyonight.nvim", commit = "66bfc2e8f754869c7b651f3f47a2ee56ae557764" } 68 | use { "lunarvim/darkplus.nvim", commit = "13ef9daad28d3cf6c5e793acfc16ddbf456e1c83" } 69 | 70 | -- cmp plugins 71 | use { "hrsh7th/nvim-cmp", commit = "b0dff0ec4f2748626aae13f011d1a47071fe9abc" } -- The completion plugin 72 | use { "hrsh7th/cmp-buffer", commit = "3022dbc9166796b644a841a02de8dd1cc1d311fa" } -- buffer completions 73 | use { "hrsh7th/cmp-path", commit = "447c87cdd6e6d6a1d2488b1d43108bfa217f56e1" } -- path completions 74 | use { "saadparwaiz1/cmp_luasnip", commit = "a9de941bcbda508d0a45d28ae366bb3f08db2e36" } -- snippet completions 75 | use { "hrsh7th/cmp-nvim-lsp", commit = "affe808a5c56b71630f17aa7c38e15c59fd648a8" } 76 | use { "hrsh7th/cmp-nvim-lua", commit = "d276254e7198ab7d00f117e88e223b4bd8c02d21" } 77 | 78 | -- snippets 79 | use { "L3MON4D3/LuaSnip", commit = "8f8d493e7836f2697df878ef9c128337cbf2bb84" } --snippet engine 80 | use { "rafamadriz/friendly-snippets", commit = "2be79d8a9b03d4175ba6b3d14b082680de1b31b1" } -- a bunch of snippets to use 81 | 82 | -- LSP 83 | -- use { "williamboman/nvim-lsp-installer", commit = "e9f13d7acaa60aff91c58b923002228668c8c9e6" } -- simple to use language server installer 84 | use { "neovim/nvim-lspconfig", commit = "f11fdff7e8b5b415e5ef1837bdcdd37ea6764dda" } -- enable LSP 85 | use { "williamboman/mason.nvim", commit = "c2002d7a6b5a72ba02388548cfaf420b864fbc12"} 86 | use { "williamboman/mason-lspconfig.nvim", commit = "0051870dd728f4988110a1b2d47f4a4510213e31" } 87 | use { "jose-elias-alvarez/null-ls.nvim", commit = "c0c19f32b614b3921e17886c541c13a72748d450" } -- for formatters and linters 88 | use { "RRethy/vim-illuminate", commit = "a2e8476af3f3e993bb0d6477438aad3096512e42" } 89 | 90 | -- Telescope 91 | use { "nvim-telescope/telescope.nvim", commit = "76ea9a898d3307244dce3573392dcf2cc38f340f" } 92 | 93 | -- Treesitter 94 | use { 95 | "nvim-treesitter/nvim-treesitter", 96 | commit = "8e763332b7bf7b3a426fd8707b7f5aa85823a5ac", 97 | } 98 | 99 | -- Git 100 | use { "lewis6991/gitsigns.nvim", commit = "f98c85e7c3d65a51f45863a34feb4849c82f240f" } 101 | 102 | -- DAP 103 | use { "mfussenegger/nvim-dap", commit = "014ebd53612cfd42ac8c131e6cec7c194572f21d" } 104 | use { "rcarriga/nvim-dap-ui", commit = "d76d6594374fb54abf2d94d6a320f3fd6e9bb2f7" } 105 | use { "ravenxrz/DAPInstall.nvim", commit = "8798b4c36d33723e7bba6ed6e2c202f84bb300de" } 106 | 107 | -- Colorizer 108 | use { "norcalli/nvim-colorizer.lua"} 109 | 110 | -- YUCK Language 111 | use { "elkowar/yuck.vim" } 112 | 113 | -- HTML Live Server 114 | use { "turbio/bracey.vim", cmd = {"Bracey", "BracyStop", "BraceyReload", "BraceyEval"}, run = "npm install --prefix server",} 115 | 116 | -- Automatically set up your configuration after cloning packer.nvim 117 | -- Put this at the end after all plugins 118 | if PACKER_BOOTSTRAP then 119 | require("packer").sync() 120 | end 121 | end) 122 | -------------------------------------------------------------------------------- /config/nvim/README.md: -------------------------------------------------------------------------------- 1 | # A Basic Stable IDE config for Neovim 2 | 3 | > Why does this repo exist? 4 | 5 | This config attempts to provide a rock solid fully featured starting point for someone new to Neovim, or just tired of maintaining the basic IDE components of their config. 6 | 7 | > What makes it "rock solid"? 8 | 9 | All of the included plugins are pinned to a version that ensures they are compatible and will not update potentially introducing errors into your config. For every Neovim release I will update this repo along with the community to keep it up to date with the newest versions. 10 | 11 | As I mentioned, this config is meant as a starting point for people new to Neovim who want a familiar IDE experience. The config has a very simple structure that makes it easy to add new plugins. 12 | 13 | ## Install Neovim 0.8 14 | 15 | You can install Neovim with your package manager e.g. brew, apt, pacman etc.. but remember that when you update your packages Neovim may be upgraded to a newer version. 16 | 17 | If you would like to make sure Neovim only updates when you want it to than I recommend installing from source: 18 | 19 | **NOTE** Verify the required [build prerequisites](https://github.com/neovim/neovim/wiki/Building-Neovim#build-prerequisites) for your system. 20 | 21 | ```sh 22 | git clone https://github.com/neovim/neovim.git 23 | cd neovim 24 | git checkout release-0.8 25 | make CMAKE_BUILD_TYPE=Release 26 | sudo make install 27 | ``` 28 | 29 | ## Install the config 30 | 31 | Make sure to remove or move your current `nvim` directory 32 | 33 | ```sh 34 | git clone https://github.com/LunarVim/nvim-basic-ide.git ~/.config/nvim 35 | ``` 36 | 37 | Run `nvim` and wait for the plugins to be installed 38 | 39 | **NOTE** (You will notice treesitter pulling in a bunch of parsers the next time you open Neovim) 40 | 41 | **NOTE** Checkout this file for some predefined keymaps: [keymaps](https://github.com/LunarVim/nvim-basic-ide/blob/master/lua/user/keymaps.lua) 42 | 43 | ## Get healthy 44 | 45 | Open `nvim` and enter the following: 46 | 47 | ``` 48 | :checkhealth 49 | ``` 50 | 51 | You'll probably notice you don't have support for copy/paste also that python and node haven't been setup 52 | 53 | So let's fix that 54 | 55 | First we'll fix copy/paste 56 | 57 | - On mac `pbcopy` should be builtin 58 | 59 | - On Ubuntu 60 | 61 | ```sh 62 | sudo apt install xsel # for X11 63 | sudo apt install wl-clipboard # for wayland 64 | ``` 65 | 66 | Next we need to install python support (node is optional) 67 | 68 | - Neovim python support 69 | 70 | ```sh 71 | pip install pynvim 72 | ``` 73 | 74 | - Neovim node support 75 | 76 | ```sh 77 | npm i -g neovim 78 | ``` 79 | 80 | We will also need `ripgrep` for Telescope to work: 81 | 82 | - Ripgrep 83 | 84 | ```sh 85 | sudo apt install ripgrep 86 | ``` 87 | 88 | --- 89 | 90 | **NOTE** make sure you have [node](https://nodejs.org/en/) installed, I recommend a node manager like [fnm](https://github.com/Schniz/fnm). 91 | 92 | ## Fonts 93 | 94 | I recommend using the following repo to get a "Nerd Font" (Font that supports icons) 95 | 96 | [getnf](https://github.com/ronniedroid/getnf) 97 | 98 | ## Configuration 99 | 100 | ### LSP 101 | 102 | To add a new LSP 103 | 104 | First Enter: 105 | 106 | ``` 107 | :LspInstallInfo 108 | ``` 109 | 110 | and press `i` on the Language Server you wish to install 111 | 112 | Next you will need to add the server to this list: [servers](https://github.com/LunarVim/nvim-basic-ide/blob/8b9ec3bffe8c8577042baf07c75408532a733fea/lua/user/lsp/lsp-installer.lua#L6) 113 | 114 | ### Formatters and linters 115 | 116 | Make sure the formatter or linter is installed and add it to this setup function: [null-ls](https://github.com/LunarVim/nvim-basic-ide/blob/8b9ec3bffe8c8577042baf07c75408532a733fea/lua/user/lsp/null-ls.lua#L13) 117 | 118 | **NOTE** Some are already setup as examples, remove them if you want 119 | 120 | ### Plugins 121 | 122 | You can install new plugins here: [plugins](https://github.com/LunarVim/nvim-basic-ide/blob/8b9ec3bffe8c8577042baf07c75408532a733fea/lua/user/plugins.lua#L42) 123 | 124 | --- 125 | 126 | ## Plugins 127 | 128 | - [packer](https://github.com/wbthomason/packer.nvim) 129 | - [plenary](https://github.com/nvim-lua/plenary.nvim) 130 | - [nvim-autopairs](https://github.com/windwp/nvim-autopairs) 131 | - [Comment.nvim](https://github.com/numToStr/Comment.nvim) 132 | - [nvim-ts-context-commentstring](https://github.com/JoosepAlviste/nvim-ts-context-commentstring) 133 | - [nvim-web-devicons](https://github.com/kyazdani42/nvim-web-devicons) 134 | - [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua) 135 | - [bufferline.nvim](https://github.com/akinsho/bufferline.nvim) 136 | - [vim-bbye](https://github.com/moll/vim-bbye) 137 | - [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) 138 | - [toggleterm.nvim](https://github.com/akinsho/toggleterm.nvim) 139 | - [project.nvim](https://github.com/ahmedkhalf/project.nvim) 140 | - [impatient.nvim](https://github.com/lewis6991/impatient.nvim) 141 | - [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) 142 | - [alpha-nvim](https://github.com/goolord/alpha-nvim) 143 | - [tokyonight.nvim](https://github.com/folke/tokyonight.nvim) 144 | - [darkplus.nvim](https://github.com/LunarVim/darkplus.nvim) 145 | - [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) 146 | - [cmp-buffer](https://github.com/hrsh7th/cmp-buffer) 147 | - [cmp-path](https://github.com/hrsh7th/cmp-path) 148 | - [cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip) 149 | - [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) 150 | - [cmp-nvim-lua](https://github.com/hrsh7th/cmp-nvim-lua) 151 | - [LuaSnip](https://github.com/L3MON4D3/LuaSnip) 152 | - [friendly-snippets](https://github.com/rafamadriz/friendly-snippets) 153 | - [mason.nvim](https://github.com/williamboman/mason.nvim) 154 | - [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) 155 | - [mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) 156 | - [null-ls.nvim](https://github.com/jose-elias-alvarez/null-ls.nvim) 157 | - [vim-illuminate](https://github.com/RRethy/vim-illuminate) 158 | - [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) 159 | - [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) 160 | - [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) 161 | - [nvim-dap](https://github.com/mfussenegger/nvim-dap) 162 | - [nvim-dap-ui](https://github.com/rcarriga/nvim-dap-ui) 163 | - [DAPInstall.nvim](https://github.com/ravenxrz/DAPInstall.nvim) 164 | 165 | --- 166 | 167 | > The computing scientist's main challenge is not to get confused by the complexities of his own making. 168 | 169 | \- Edsger W. Dijkstra 170 | -------------------------------------------------------------------------------- /config/bspwm/apps/eww/theme_switcher/eww.yuck: -------------------------------------------------------------------------------- 1 | (defwidget theme_switcher [] 2 | (box :orientation "v" 3 | :space-evenly "false" 4 | :class "theme_switcher" 5 | (theme_switch) 6 | ) 7 | ) 8 | 9 | (defwidget playerctl [] 10 | (box :orientation "v" 11 | :space-evenly "false" 12 | :halign "center" 13 | :valign "center" 14 | :width 390 15 | :class "music" 16 | (music_title) 17 | (music) 18 | (music_art) 19 | (music_controls) 20 | (volume_slider) 21 | (pulseaudio_eq) 22 | ) 23 | ) 24 | 25 | (defwidget stats [] 26 | (box :orientation "v" 27 | :space-evenly false 28 | ; :halign "center" 29 | ; :valign "center" 30 | :width 390 31 | :class "stats" 32 | (stats_title) 33 | (box :orientation "h" 34 | :space-evenly false 35 | :halign "center" 36 | :spacing 20 37 | :class "stats" 38 | (ram-circular) 39 | (cpu-circular) 40 | ) 41 | ) 42 | ) 43 | 44 | (defwidget stats_title [] 45 | (box 46 | :orientation "h" 47 | :spacing 0 48 | (label 49 | :text "Resources" 50 | :class "statsTitle" 51 | ) 52 | ) 53 | ) 54 | 55 | (defwidget radialmeter [value text ?class ?labelclass] 56 | (circular-progress :value value 57 | :class "radial ${class}" 58 | :start-angle 0 59 | :thickness 12 60 | (label :text text 61 | :class "radial-label ${labelclass}" 62 | :limit-width 2 63 | :show_truncated false 64 | :wrap false 65 | :angle 0.0))) 66 | 67 | (defpoll ramUsage :interval "1s" "scripts/getRam") 68 | (defpoll cpuUsage :interval "1s" "scripts/getCpu") 69 | 70 | (defwidget ram-circular [] 71 | (box 72 | :spacing 0 73 | :orientation "h" 74 | :space-evenly false 75 | :halign "center" 76 | (box 77 | :spacing 0 78 | :orientation "h" 79 | :space-evenly false 80 | :class "ram" 81 | :halign "center" 82 | :tooltip "Usage: ${ramUsage}%" 83 | (radialmeter 84 | :value ramUsage 85 | :text " " 86 | :labelclass "ram-label" 87 | :class "ram-circle" 88 | ) 89 | ) 90 | ) 91 | ) 92 | 93 | (defwidget cpu-circular [] 94 | (box 95 | :spacing 0 96 | :orientation "h" 97 | :space-evenly false 98 | :halign "center" 99 | (box 100 | :spacing 0 101 | :orientation "h" 102 | :space-evenly false 103 | :halign "center" 104 | :class "cpu" 105 | :tooltip "Usage: ${cpuUsage}%" 106 | (radialmeter 107 | :value cpuUsage 108 | :text " " 109 | :labelclass "cpu-label" 110 | :class "cpu-circle" 111 | ) 112 | ) 113 | ) 114 | ) 115 | 116 | (deflisten vol "scripts/volume.sh --vol") 117 | (defpoll vol_percentage :interval "0.1s" "scripts/volume.sh --percentage") 118 | 119 | (defwidget volume_slider [] 120 | (box :orientation "h" 121 | :class "volume-main" 122 | :space-evenly "false" 123 | :halign "center" 124 | (label :class "vol_percentage" 125 | :text "${vol_percentage} ") 126 | (scale :class "volume-slider" 127 | :value {vol == "" ? 0 : vol} 128 | ; :value vol 129 | :orientation "h" 130 | :width 260 131 | :max 101 132 | :min 0 133 | :marks true 134 | :onchange "scripts/volume.sh set {}") 135 | )) 136 | 137 | (defpoll SWITCH_THEME :interval "1s" "~/.config/bspwm/apps/eww/theme_switcher/scripts/watch_theme") 138 | (defpoll music :interval "0.1s" "scripts/player.sh --song_name") 139 | (defpoll art :interval "1s" "scripts/player.sh --song_art") 140 | (defpoll song_art :interval "1s" "scripts/player.sh --get_song_art") 141 | (defpoll song_status :interval "0.5s" "scripts/player.sh --status_icon") 142 | 143 | (defwidget pulseaudio_eq [] 144 | (box 145 | :orientation "h" 146 | :class "pulseaudio_eq" 147 | :space-evenly "false" 148 | :halign "center" 149 | :valign "center" 150 | (button 151 | :onclick "pulseaudio-equalizer toggle" 152 | "Toggle EQ" 153 | ) 154 | ) 155 | ) 156 | 157 | (defwidget music_controls [] 158 | (box 159 | :orientation "h" 160 | :class "music_controls" 161 | :space-evenly "true" 162 | ; :spacing 30 163 | :halign "center" 164 | :valign "center" 165 | :hexpand "false" 166 | :vexpand "false" 167 | (button :class "previous_btn" :onclick "playerctl previous" "ﭢ") 168 | (button :class "toggle_play" :onclick "playerctl play-pause" song_status) 169 | (button :class "next_btn" :onclick "playerctl next" "ﭠ ") 170 | ) 171 | ) 172 | 173 | (defwidget music_art [] 174 | (box :orientation "v" 175 | :space-evenly "false" 176 | :valign "center" 177 | :halign "center" 178 | ; :vexpand "true" 179 | ; :hexpand "true" 180 | :class "music_art" 181 | :width 100 182 | :height 330 183 | :style "background-image: url('${art}')" 184 | song_art 185 | ) 186 | ) 187 | 188 | (defwidget music_title [] 189 | (box :orientation "v" 190 | :space-evenly "false" 191 | (label 192 | :text "Now Playing" 193 | :class "music_title" 194 | ) 195 | ) 196 | ) 197 | 198 | (defwidget music [] 199 | (label 200 | :text "${music}" 201 | :class "music_label" 202 | :limit-width 20 203 | ; :height 200 204 | ; :width 390 205 | ) 206 | ) 207 | 208 | (defwidget theme_switch [] 209 | (box 210 | :orientation "v" 211 | (label :text "Theme Switcher" :class "title") 212 | (box 213 | :orientation "v" 214 | :space-evenly "false" 215 | (button 216 | :class "switch_theme_btn" 217 | :onclick "~/.config/bspwm/apps/eww/theme_switcher/scripts/switch_theme" 218 | "Catppuccin ${SWITCH_THEME}" 219 | ) 220 | ) 221 | ) 222 | ) 223 | 224 | (defwindow resourceUsage 225 | :monitor 0 226 | :geometry (geometry :x "13" 227 | :y "900" 228 | ; :width "10%" 229 | ; :height "10%" 230 | :anchor "top left") 231 | :windowtype "dock" 232 | :wm-ignore true 233 | (stats)) 234 | 235 | (defwindow music 236 | :monitor 0 237 | :geometry (geometry :x "13" 238 | :y "280" 239 | ; :width "10%" 240 | ; :height "10%" 241 | :anchor "top left") 242 | :windowtype "dock" 243 | :wm-ignore true 244 | (playerctl)) 245 | 246 | (defwindow theme_switcher 247 | :monitor 0 248 | :geometry (geometry :x "13" 249 | :y "80" 250 | ; :height "30%" 251 | ; :width "15%" 252 | :anchor "top left") 253 | :windowtype "dock" 254 | :wm-ignore true 255 | (theme_switcher)) 256 | -------------------------------------------------------------------------------- /config/bspwm/apps/rofi/config.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Author : Aditya Shakya (adi1090x) 4 | * Github : @adi1090x 5 | * 6 | * Rofi Theme File 7 | * Rofi Version: 1.7.3 8 | **/ 9 | 10 | /*****----- Configuration -----*****/ 11 | configuration { 12 | modi: "drun,run,filebrowser,window"; 13 | show-icons: true; 14 | display-drun: " "; 15 | display-run: " "; 16 | display-filebrowser: " "; 17 | display-window: " "; 18 | drun-display-format: "{name}"; 19 | window-format: "{w} · {c} · {t}"; 20 | } 21 | 22 | /*****----- Global Properties -----*****/ 23 | @import "colors/mocha.rasi" 24 | @import "fonts.rasi" 25 | 26 | * { 27 | border-colour: var(selected); 28 | handle-colour: var(selected); 29 | background-colour: var(background); 30 | foreground-colour: var(foreground); 31 | alternate-background: var(background-alt); 32 | normal-background: var(background); 33 | normal-foreground: var(foreground); 34 | urgent-background: var(urgent); 35 | urgent-foreground: var(background); 36 | active-background: var(active); 37 | active-foreground: var(background); 38 | selected-normal-background: var(selected); 39 | selected-normal-foreground: var(background); 40 | selected-urgent-background: var(active); 41 | selected-urgent-foreground: var(background); 42 | selected-active-background: var(urgent); 43 | selected-active-foreground: var(background); 44 | alternate-normal-background: var(background); 45 | alternate-normal-foreground: var(foreground); 46 | alternate-urgent-background: var(urgent); 47 | alternate-urgent-foreground: var(background); 48 | alternate-active-background: var(active); 49 | alternate-active-foreground: var(background); 50 | } 51 | 52 | /*****----- Main Window -----*****/ 53 | window { 54 | /* properties for window widget */ 55 | transparency: "real"; 56 | location: center; 57 | anchor: center; 58 | fullscreen: false; 59 | width: 600px; 60 | x-offset: 0px; 61 | y-offset: 0px; 62 | 63 | /* properties for all widgets */ 64 | enabled: true; 65 | margin: 0px; 66 | padding: 0px; 67 | border: 0px solid; 68 | border-radius: 10px; 69 | border-color: @border-colour; 70 | cursor: "default"; 71 | /* Backgroud Colors */ 72 | background-color: @background-colour; 73 | /* Backgroud Image */ 74 | /* background-image: url("~/.config/bspwm/wallpapers/pink_minimal.png", width); */ 75 | /* Simple Linear Gradient */ 76 | /* background-image: linear-gradient(red, orange, pink, purple); */ 77 | /* Directional Linear Gradient */ 78 | //background-image: linear-gradient(to bottom, pink, yellow, magenta); 79 | /* Angle Linear Gradient */ 80 | //background-image: linear-gradient(45, cyan, purple, indigo); 81 | } 82 | 83 | /*****----- Main Box -----*****/ 84 | mainbox { 85 | enabled: true; 86 | spacing: 0px; 87 | margin: 0px; 88 | /* padding: 30px; */ 89 | border: 0px solid; 90 | border-radius: 0px 0px 0px 0px; 91 | border-color: @border-colour; 92 | background-color: transparent; 93 | children: [ "inputbar", "message", "listview" ]; 94 | } 95 | 96 | /*****----- Inputbar -----*****/ 97 | inputbar { 98 | enabled: true; 99 | spacing: 10px; 100 | margin: 0px; 101 | padding: 100px 60px; 102 | border: 0px solid; 103 | border-radius: 0px; 104 | border-color: @border-colour; 105 | background-color: transparent; 106 | text-color: @foreground-colour; 107 | children: [ "textbox-prompt-colon", "entry", "mode-switcher" ]; 108 | background-image: url("~/.config/bspwm/wallpapers/pink_sky.png", width); 109 | 110 | } 111 | 112 | prompt { 113 | enabled: true; 114 | background-color: inherit; 115 | text-color: inherit; 116 | } 117 | textbox-prompt-colon { 118 | enabled: true; 119 | padding: 5px 0px; 120 | expand: false; 121 | str: ""; 122 | background-color: inherit; 123 | text-color: @background-colour; 124 | } 125 | entry { 126 | enabled: true; 127 | padding: 5px 0px; 128 | background-color: inherit; 129 | text-color: @background-colour; 130 | cursor: text; 131 | placeholder: "Search..."; 132 | placeholder-color: inherit; 133 | } 134 | num-filtered-rows { 135 | enabled: true; 136 | expand: false; 137 | background-color: inherit; 138 | text-color: inherit; 139 | } 140 | textbox-num-sep { 141 | enabled: true; 142 | expand: false; 143 | str: "/"; 144 | background-color: inherit; 145 | text-color: inherit; 146 | } 147 | num-rows { 148 | enabled: true; 149 | expand: false; 150 | background-color: inherit; 151 | text-color: inherit; 152 | } 153 | case-indicator { 154 | enabled: true; 155 | background-color: inherit; 156 | text-color: inherit; 157 | } 158 | 159 | /*****----- Listview -----*****/ 160 | listview { 161 | enabled: true; 162 | columns: 1; 163 | lines: 8; 164 | cycle: true; 165 | dynamic: true; 166 | scrollbar: true; 167 | layout: vertical; 168 | reverse: false; 169 | fixed-height: true; 170 | fixed-columns: true; 171 | 172 | spacing: 5px; 173 | margin: 0px; 174 | padding: 10px; 175 | border: 0px solid; 176 | border-radius: 0px; 177 | border-color: @border-colour; 178 | background-color: transparent; 179 | text-color: @foreground-colour; 180 | cursor: "default"; 181 | } 182 | scrollbar { 183 | handle-width: 5px ; 184 | handle-color: @handle-colour; 185 | border-radius: 10px; 186 | background-color: @alternate-background; 187 | } 188 | 189 | /*****----- Elements -----*****/ 190 | element { 191 | enabled: true; 192 | spacing: 10px; 193 | margin: 0px; 194 | padding: 5px 10px; 195 | border: 0px solid; 196 | border-radius: 10px; 197 | border-color: @border-colour; 198 | background-color: transparent; 199 | text-color: @foreground-colour; 200 | cursor: pointer; 201 | } 202 | element normal.normal { 203 | background-color: var(normal-background); 204 | text-color: var(normal-foreground); 205 | } 206 | element normal.urgent { 207 | background-color: var(urgent-background); 208 | text-color: var(urgent-foreground); 209 | } 210 | element normal.active { 211 | background-color: var(active-background); 212 | text-color: var(active-foreground); 213 | } 214 | element selected.normal { 215 | background-color: var(selected-normal-background); 216 | text-color: var(selected-normal-foreground); 217 | } 218 | element selected.urgent { 219 | background-color: var(selected-urgent-background); 220 | text-color: var(selected-urgent-foreground); 221 | } 222 | element selected.active { 223 | background-color: var(selected-active-background); 224 | text-color: var(selected-active-foreground); 225 | } 226 | element alternate.normal { 227 | background-color: var(alternate-normal-background); 228 | text-color: var(alternate-normal-foreground); 229 | } 230 | element alternate.urgent { 231 | background-color: var(alternate-urgent-background); 232 | text-color: var(alternate-urgent-foreground); 233 | } 234 | element alternate.active { 235 | background-color: var(alternate-active-background); 236 | text-color: var(alternate-active-foreground); 237 | } 238 | element-icon { 239 | background-color: transparent; 240 | text-color: inherit; 241 | size: 24px; 242 | cursor: inherit; 243 | } 244 | element-text { 245 | background-color: transparent; 246 | text-color: inherit; 247 | highlight: inherit; 248 | cursor: inherit; 249 | vertical-align: 0.5; 250 | horizontal-align: 0.0; 251 | } 252 | 253 | /*****----- Mode Switcher -----*****/ 254 | mode-switcher{ 255 | enabled: true; 256 | spacing: 10px; 257 | margin: 0px; 258 | padding: 0px; 259 | border: 0px solid; 260 | border-radius: 0px; 261 | border-color: @border-colour; 262 | background-color: transparent; 263 | text-color: @foreground-colour; 264 | } 265 | button { 266 | padding: 5px 10px; 267 | border: 0px solid; 268 | border-radius: 20px; 269 | border-color: @border-colour; 270 | background-color: @alternate-background; 271 | text-color: inherit; 272 | cursor: pointer; 273 | } 274 | button selected { 275 | background-color: var(selected-normal-background); 276 | text-color: var(selected-normal-foreground); 277 | } 278 | 279 | /*****----- Message -----*****/ 280 | message { 281 | enabled: true; 282 | margin: 0px; 283 | padding: 0px; 284 | border: 0px solid; 285 | border-radius: 0px 0px 0px 0px; 286 | border-color: @border-colour; 287 | background-color: transparent; 288 | text-color: @foreground-colour; 289 | } 290 | textbox { 291 | padding: 8px 10px; 292 | border: 0px solid; 293 | border-radius: 10px; 294 | border-color: @border-colour; 295 | background-color: @alternate-background; 296 | text-color: @foreground-colour; 297 | vertical-align: 0.5; 298 | horizontal-align: 0.0; 299 | highlight: none; 300 | placeholder-color: @foreground-colour; 301 | blink: true; 302 | markup: true; 303 | } 304 | error-message { 305 | padding: 10px; 306 | border: 2px solid; 307 | border-radius: 10px; 308 | border-color: @border-colour; 309 | background-color: @background-colour; 310 | text-color: @foreground-colour; 311 | } 312 | 313 | -------------------------------------------------------------------------------- /config/bspwm/apps/polybar/modules/modules.ini: -------------------------------------------------------------------------------- 1 | [module/player] 2 | type = custom/script 3 | exec = ~/.config/bspwm/apps/polybar/scripts/player.sh 4 | interval = 0 5 | click-left = playerctl previous & 6 | click-right = playerctl next & 7 | click-middle = playerctl play-pause & 8 | 9 | label =  %output% 10 | label-maxlen = 35 11 | format =