commit 45e5fe53d2c41c44359a177f5293e9a466df4e3f Author: srtk Date: Sat Apr 25 16:39:11 2026 +0530 initial dotfiles diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc new file mode 100755 index 0000000..cf547b7 --- /dev/null +++ b/.config/bspwm/bspwmrc @@ -0,0 +1,90 @@ +#! /bin/bash + +# Start sxhkd if it's not already running +pgrep -x sxhkd >/dev/null || sxhkd -c ~/.config/bspwm/sxhkdrc & + +# Start picom +picom --config $HOME/.config/bspwm/picom.conf & + +# Set window manager name to LG3D to fix some Java applications display issues +wmname LG3D + +# Vars +export XDG_CURRENT_DESKTOP="bspwm" +sh -c 'function shenv() { export "$1=$2"; }; source ~/.env;' + +# Workspaces Configuration +bspc monitor DisplayPort-1 -d 1 2 3 4 5 6 7 8 + +# Enable window focus follow mouse pointer +bspc config focus_follows_pointer true + +# Auto set monitor +monitor=$(xrandr --query | grep " connected" | awk '{ print $1 }' | head -n 1) +resolution=$(xrandr --query | grep -A1 "^$monitor" | grep -Eo '[0-9]+x[0-9]+' | sort -V | tail -n 1) +refresh_rate=$(xrandr --query | grep -A1 "^$monitor" | grep -Eo '[0-9]+\.[0-9]+' | sort -V | tail -n 1) + +if [[ -n $monitor && -n $resolution && -n $refresh_rate ]]; then + xrandr --output "$monitor" --mode "$resolution" --rate "$refresh_rate" +fi + +# Set the border colors for focused and normal windows +bspc config focused_border_color "#727d53" +bspc config border_width 2 +bspc config borderless_monocle true + +# Set mouse cursor to left pointer +xsetroot -cursor_name left_ptr + +# Configure gaps and window gap size +bspc config gapless_monocle false +bspc config window_gap 10 + +# Configure actions for moving and resizing floating windows with the mouse (mod4 = Super/Windows key) +bspc config pointer_modifier mod4 +bspc config pointer_action1 move +bspc config pointer_action2 resize_side +bspc config pointer_action3 resize_corner + +# Rules +bspc rule -a feh state=floating +bspc rule -a '*:sun-awt-X11-XWindowPeer' manage=off +bspc rule -a 'vlc' state=floating center=true +bspc rule -a 'Blueman-manager' state=floating center=true +bspc rule -a 'qt5ct' state=floating rectangle=900x600+0+0 center=true +bspc rule -a 'qt6ct' state=floating rectangle=900x600+0+0 center=true +bspc rule -a 'ark' state=floating center=true +bspc rule -a 'Xarchiver' state=floating center=true +bspc rule -a 'pavucontrol' state=floating center=true +bspc rule -a 'Yad' state=floating center=true +bspc rule -a 'Blueman-manager' state=floating center=true +bspc rule -a 'Gnome-calculator' state=floating rectangle=360x500+0+0 center=true +bspc rule -a 'loupe' state=floating rectangle=1200x800+0+0 center=true +bspc rule -a 'pavucontrol' state=floating rectangle=920x450+0+0 center=true +bspc rule -a 'gamescope' desktop=11 +bspc rule -a 'legcord' desktop=10 + +# Resources and Utilities +dbus-update-activation-environment --systemd XDG_CURRENT_DESKTOP +xrdb merge $HOME/.Xresources +xsettingsd & +dunst & +flameshot & +sh $HOME/.config/polybar/launch.sh +sh $HOME/.config/scripts/polkitkdeauth.sh +sh $HOME/.config/scripts/set-wallpaper.sh + +# Clipboard sync +if command -v clipnotify >/dev/null 2>&1 && command -v xclip >/dev/null 2>&1 && command -v cliphist >/dev/null 2>&1; then + ( + while clipnotify; do + xclip -o -selection c | cliphist store + done + ) & +fi + +# Apps to open on startup +legcord & +xset s off & +xset s noblank & +xset dpms 0 0 0 & diff --git a/.config/bspwm/current_wallpaper b/.config/bspwm/current_wallpaper new file mode 100644 index 0000000..b139ca4 --- /dev/null +++ b/.config/bspwm/current_wallpaper @@ -0,0 +1 @@ +/home/sarthak/.config/bspwm/wallpaper/wallpaper.jpg diff --git a/.config/bspwm/picom.conf b/.config/bspwm/picom.conf new file mode 100644 index 0000000..ddf6268 --- /dev/null +++ b/.config/bspwm/picom.conf @@ -0,0 +1,48 @@ +################################# +# Backend +################################# +backend = "glx"; +vsync = true; + +################################# +# Animations (smooth but light) +################################# +animations = true; +animation-stiffness = 200; +animation-dampening = 20; +animation-clamping = true; + +animation-for-open-window = "zoom"; +animation-for-unmap-window = "fade"; +animation-for-transient-window = "zoom"; + +################################# +# Fading (subtle smoothness) +################################# +fading = true; +fade-in-step = 0.04; +fade-out-step = 0.04; +fade-delta = 5; + +################################# +# Transparency (ONLY terminal) +################################# +inactive-opacity = 1.0; +active-opacity = 1.0; + +opacity-rule = [ + "85:class_g = 'kitty'" +]; + +################################# +# Shadows (optional but light) +################################# +shadow = false; + +################################# +# Performance / sanity +################################# + unredir-if-possible = true; + detect-client-opacity = true; + use-damage = true; + log-level = "warn"; diff --git a/.config/bspwm/picom.conf.bak b/.config/bspwm/picom.conf.bak new file mode 100755 index 0000000..cac2c9b --- /dev/null +++ b/.config/bspwm/picom.conf.bak @@ -0,0 +1,144 @@ +# Animations +animations = true; +animation-stiffness-in-tag = 200; +animation-stiffness-tag-change = 120.0; +animation-window-mass = 0.5; +animation-dampening = 20; +animation-clamping = true; +animation-for-open-window = "slide-up"; +animation-for-unmap-window = "slide-down"; +animation-for-menu-window = "slide-up"; +animation-for-transient-window = "slide-up"; +animation-for-prev-tag = "slide-up"; +enable-fading-prev-tag = true; +animation-for-next-tag = "slide-down"; +enable-fading-next-tag = true; + +# Shadow +shadow = false; + +# Fading +fading = true; +fade-in-step = 0.02; +fade-out-step = 0.03; +fade-delta = 8; +no-fading-openclose = false; + +# Transparency +inactive-opacity-override = true; +active-opacity-override = true; + +focus-exclude = [ + "class_g = 'Cairo-clock'", +]; + +opacity-rule = [ + # Fullscreen is not transparent + "100:fullscreen", + "100:_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_FULLSCREEN'", + + # Rest of the apps + "75:class_g *?= 'firefox'", + "75:class_g *?= 'Signal'", + "75:class_g *?= 'Code'", + "75:class_g *?= 'nemo'", + "75:class_g *?= 'pavucontrol'", + "75:class_g *?= 'qt5ct'", + "75:class_g *?= 'qt6ct'", + "75:class_g *?= 'Ark'", + "75:class_g *?= 'Xarchiver'", + "75:class_g *?= 'obs'", + "75:class_g *?= 'kitty'", + "75:class_g *?= 'Spotify'", + "75:class_g *?= 'blueman-manager'", + "75:class_g *?= 'Steam'", + "75:class_g *?= 'steamwebhelper'", + "75:class_g *?= 'Discord'", + "75:class_g *?= 'Webcord'", + "75:class_g *?= 'legcord'", + "75:class_g *?= 'yad'", + "75:class_g *?= 'org.kde.polkit-kde-authentication-agent-1'", + "75:class_g *?= 'polkit-gnome-authentication-agent-1'", + "75:class_g *?= 'org.freedesktop.impl.portal.desktop.gtk'", + "75:class_g *?= 'Loupe'", + "75:class_g *?= 'gnome-calculator'", + "75:class_g *?= 'Evince'", + "75:class_g *?= 'Polybar'", + "75:class_g *?= 'Rofi'", + ]; + + +# Borders +border-color = "#8b9151"; +corner-radius = 0; +unredir-if-possible = true; +no-ewmh-fullscreen = true; + +rounded-corners-exclude = [ + "name = 'Polybar tray window'", + "window_type = 'desktop'", + "window_type = 'dropdown_menu'", + "window_type = 'popup_menu'", + "window_type = 'utility'", + "window_type = 'tooltip'", + "window_type = 'splash'", + "class_g *?= 'dunst'", + "class_g *?= 'Rofi'", + "BSPWM_TILED@:c = 1", + "_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_FULLSCREEN'", +]; + + +# Blur +blur: { + method = "dual_kawase"; + strength = 3; + background = true; + background-frame = false; + background-fixed = false; +} + +blur-background-exclude = [ + "class_g = 'Dunst'", + "window_type = 'desktop'", + "window_type *= 'menu'", + "window_type = 'utility'", + "window_type = 'tooltip'", + "window_type = 'splash'", + "class_g *?= 'polybar'", + "class_g *?= 'Rofi'", + "class_g *?= 'screenkey'", + "class_g *?= 'GLava'", + "class_g *?= 'kdeconnectd'", + "class_g *?= 'kdeconnect.daemon'", + "class_g *?= 'activate-linux'", + "_GTK_FRAME_EXTENTS@:c", +]; + +# General settings +backend = "glx" +dithered-present = false; +mark-wmwin-focused = true; +mark-ovredir-focused = true; +detect-rounded-corners = false; +detect-client-opacity = false; +use-ewmh-active-win = true; +unredir-if-possible = false; +detect-transient = true; +#glx-no-stencil = true; +use-damage = true; +xrender-sync-fence = true; +#window-shader-fg = ""; +transparent-clipping = false; +log-level = "warn"; + +# Window types +wintypes: +{ + tooltip = { fade = true; shadow = false; opacity = 0.85; focus = true; full-shadow = false; }; + dock = { shadow = false; clip-shadow-above = true; } + dnd = { shadow = false; } + popup_menu = { opacity = 0.9; } + dropdown_menu = { opacity = 0.9; } + normal = { animation = "slide-down"; animation-unmap = "slide-up"; } +}; diff --git a/.config/bspwm/sxhkdrc b/.config/bspwm/sxhkdrc new file mode 100755 index 0000000..ca9a8b3 --- /dev/null +++ b/.config/bspwm/sxhkdrc @@ -0,0 +1,96 @@ +# System binding +super + {Return,v,w,x,b,period} + {st, \ + sh ~/.config/scripts/rofi-menus/clipboard-manager.sh, \ + rofi -show drun, \ + sh ~/.config/scripts/rofi-menus/powermenu.sh, \ + sh ~/.config/scripts/toggle-bar.sh, \ + sh ~/.config/scripts/rofi-menus/rofimoji.sh} + +# Screenshots +super + alt + p + flameshot gui + +# DC-multivpn +alt + shift + v + ~/.config/scripts/dc-multivpn/dc-multivpn.sh + +# Media control (volume) +XF86Audio{RaiseVolume,LowerVolume,Mute} + sh ~/.config/scripts/volume.sh --device output --action {increase,decrease,toggle} + +XF86AudioMicMute + sh ~/.config/scripts/volume.sh --device input --action toggle + +# Media control (player) +XF86Audio{Play,Pause,Next,Prev,Stop} + {playerctl play-pause, \ + playerctl play-pause, \ + playerctl next, \ + playerctl previous, \ + playerctl stop} + +ctrl + alt + {c,x,z} + {playerctl play-pause, \ + playerctl next, \ + playerctl previous} + +# Quit bspwm +super + Delete + bspc quit + +# Reload bspwm +super + alt + r + bspc wm -r + +# Reload sxhkd +super + Escape + pkill -USR1 -x sxhkd; notify-send 'sxhkd' 'Reloaded config' -t 1500 + +# Kill node +super + q + bspc node -c + +# Floating/tiled node +super + space + bspc node -t "~"{floating,tiled} + +# Fullscreen +super + f + bspc node -t \~fullscreen + +# Move node +super + {_,shift + }{Right,Left,Up,Down} + bspc node -{f,s} { + east, \ + west, \ + north, \ + south} + +# Alt tab +alt + Tab + bspc node -f last + +# Change desktop +super + {1-9,0} + bspc desktop -f {1-9,10} + +# Move to next desktop +super + ctrl + Right + bspc desktop -f next + +# Move to previous desktop +super + ctrl + Left + bspc desktop -f prev + +# Move node to another desktop +super + shift + {1-9,0} + bspc node -d '^{1-9,10}' + +# Switch node +super + shift + ctrl + {Left,Right,Up,Down} + {bspc node -s west, \ + bspc node -s east, \ + bspc node -s north, \ + bspc node -s south} + diff --git a/.config/bspwm/wallpaper/wallpaper.jpg b/.config/bspwm/wallpaper/wallpaper.jpg new file mode 100644 index 0000000..2e940f5 Binary files /dev/null and b/.config/bspwm/wallpaper/wallpaper.jpg differ diff --git a/.config/bspwm/wallpaper/wallpaper1.jpg b/.config/bspwm/wallpaper/wallpaper1.jpg new file mode 100644 index 0000000..e7c5059 Binary files /dev/null and b/.config/bspwm/wallpaper/wallpaper1.jpg differ diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100755 index 0000000..445049e --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,63 @@ +[global] +monitor = 0 +follow = mouse +shrink = no +padding = 12 +horizontal_padding = 12 + +width = 350 +height = (0, 150) +offset = 12x45 +origin = top-right + +frame_width = 2 +separator_height = 1 +frame_color = "#8b9151" +separator_color = frame + +sort = no +font = JetBrainsMono Nerd Font 10 +markup = full +format = "[%a]\n%s\n%b" +alignment = left +show_age_threshold = 60 +word_wrap = yes +ignore_newline = no +stack_duplicates = true +hide_duplicate_count = no +show_indicators = yes + +icon_position = off +max_icon_size = 0 +sticky_history = no +history_length = 6 +title = Dunst +class = Dunst +corner_radius = 0 + +mouse_left_click = close_current +mouse_middle_click = do_action +mouse_right_click = close_all + +[ignore_flameshot_warning] +body = "grim's screenshot component is implemented based on wlroots, it may not be used in GNOME or similar desktop environments" +format = "" + +[urgency_low] +background = "#141414" +foreground = "#8b9151" +frame_color = "#8b9151" +timeout = 5 + +[urgency_normal] +default_icon = dialog-information +background = "#141414" +foreground = "#feffd3" +frame_color = "#8b9151" +timeout = 5 + +[urgency_critical] +background = "#141414" +foreground = "#dd7c4c" +frame_color = "#dd7c4c" +timeout = 0 diff --git a/.config/fastfetch/config.jsonc b/.config/fastfetch/config.jsonc new file mode 100755 index 0000000..e97c4e5 --- /dev/null +++ b/.config/fastfetch/config.jsonc @@ -0,0 +1,42 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": null, + "display": { + "separator": " β€Ί " + }, + "modules": [ + "break", + { + "type": "os", + "key": "OS ", + "keyColor": "31", // = color1 + }, + { + "type": "kernel", + "key": "KER ", + "keyColor": "32", + }, + { + "type": "packages", + "format": "{} (pacman)", + "key": "PKG ", + "keyColor": "33", + }, + { + "type": "shell", + "key": "SH ", + "keyColor": "34", + }, + { + "type": "terminal", + "key": "TER ", + "keyColor": "35", + }, + { + "type": "wm", + "key": "WM ", + "keyColor": "36", + }, + "break", + ] +} diff --git a/.config/fastfetch/linuximaginary.txt b/.config/fastfetch/linuximaginary.txt new file mode 100644 index 0000000..8e1e8d3 --- /dev/null +++ b/.config/fastfetch/linuximaginary.txt @@ -0,0 +1,16 @@ + .d8 .8uI + 88R m888 + 88R %d88" + 88R 88R + 88R 88R + 88R 88R + 88R 88R + 88R 88R + 88R 88R + 88B 88B + 888 88* + .88u + %88* + 8I* + J"* + diff --git a/.config/fastfetch/linuximaginary_small.txt b/.config/fastfetch/linuximaginary_small.txt new file mode 100644 index 0000000..99c3cde --- /dev/null +++ b/.config/fastfetch/linuximaginary_small.txt @@ -0,0 +1,7 @@ + .d8 .8u + 88R 888 + 88R d8" + 88R 88R + 88B 88* +.88u 8I* + 88R *IL diff --git a/.config/fish/completions/fisher.fish b/.config/fish/completions/fisher.fish new file mode 100755 index 0000000..6d23ce4 --- /dev/null +++ b/.config/fish/completions/fisher.fish @@ -0,0 +1,7 @@ +complete --command fisher --exclusive --long help --description "Print help" +complete --command fisher --exclusive --long version --description "Print version" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" +complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" diff --git a/.config/fish/conf.d/fish_frozen_key_bindings.fish b/.config/fish/conf.d/fish_frozen_key_bindings.fish new file mode 100644 index 0000000..dfed4d6 --- /dev/null +++ b/.config/fish/conf.d/fish_frozen_key_bindings.fish @@ -0,0 +1,14 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# the 'fish_key_bindings' variable from its old default scope (universal) +# to its new default scope (global). We recommend you delete this file +# and configure key bindings in ~/.config/fish/config.fish if needed. + +set --global fish_key_bindings fish_vi_key_bindings + +# Prior to version 4.3, fish shipped an event handler that runs +# `set --universal fish_key_bindings fish_default_key_bindings` +# whenever the fish_key_bindings variable is erased. +# This means that as long as any fish < 4.3 is still running on this system, +# we cannot complete the migration. +# As a workaround, erase the universal variable at every shell startup. +set --erase --universal fish_key_bindings diff --git a/.config/fish/conf.d/fish_frozen_theme.fish b/.config/fish/conf.d/fish_frozen_theme.fish new file mode 100644 index 0000000..f75c13b --- /dev/null +++ b/.config/fish/conf.d/fish_frozen_theme.fish @@ -0,0 +1,48 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# theme variables from universal to global scope. +# Don't edit this file, as it will be written by the web-config tool (`fish_config`). +# To customize your theme, delete this file and see +# help interactive#syntax-highlighting +# or +# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING +# for appropriate commands to add to ~/.config/fish/config.fish instead. +# See also the release notes for fish 4.3.0 (run `help relnotes`). + +set --global fish_color_autosuggestion 6c7086 +set --global fish_color_cancel f38ba8 +set --global fish_color_command f38ba8 +set --global fish_color_comment 7f849c +set --global fish_color_cwd f38ba8 +set --global fish_color_cwd_root red +set --global fish_color_end fab387 +set --global fish_color_error f38ba8 +set --global fish_color_escape eba0ac +set --global fish_color_gray 6c7086 +set --global fish_color_history_current --bold +set --global fish_color_host f38ba8 +set --global fish_color_host_remote a6e3a1 +set --global fish_color_keyword f38ba8 +set --global fish_color_normal f38ba8 +set --global fish_color_operator f5c2e7 +set --global fish_color_option a6e3a1 +set --global fish_color_param f2cdcd +set --global fish_color_quote a6e3a1 +set --global fish_color_redirection f5c2e7 +set --global fish_color_search_match --background=313244 +set --global fish_color_selection --background=313244 +set --global fish_color_status f38ba8 +set --global fish_color_user f38ba8 +set --global fish_color_valid_path --underline +set --global fish_pager_color_background +set --global fish_pager_color_completion cdd6f4 +set --global fish_pager_color_description 6c7086 +set --global fish_pager_color_prefix f5c2e7 +set --global fish_pager_color_progress 6c7086 +set --global fish_pager_color_secondary_background +set --global fish_pager_color_secondary_completion +set --global fish_pager_color_secondary_description +set --global fish_pager_color_secondary_prefix +set --global fish_pager_color_selected_background +set --global fish_pager_color_selected_completion +set --global fish_pager_color_selected_description +set --global fish_pager_color_selected_prefix diff --git a/.config/fish/config.fish b/.config/fish/config.fish new file mode 100755 index 0000000..acbc8c3 --- /dev/null +++ b/.config/fish/config.fish @@ -0,0 +1,53 @@ +# Disable fish greeting +set -g fish_greeting + +# Disable vi mode (removes [I]) +fish_default_key_bindings + +# Enable truecolor +set -g fish_term24bit 1 + +## Left prompt: current dir + >> +function fish_prompt + # Directory (shows ~ or current folder) + set_color cyan + echo -n (prompt_pwd) " " + + # Orange >> + set_color ff8700 + echo -n ">> " + + # Reset + set_color normal +end + +# Right prompt: time +function fish_right_prompt + set_color 666666 + date "+%H:%M:%S" + set_color normal +end + +# Aliases +alias todo="java /home/carrie/Documents/code/java/todo-cli/src/Main.java" +alias lancer="/home/carrie/Documents/lancer/lancer.sh" +alias cls="clear" +alias g="git" +alias n="nvim" +alias m="micro" +alias react-create="npx create-react-app@5.1.0" +alias hyfetch="hyfetch --ascii-file ~/.config/fastfetch/linuximaginary_small.txt" +alias ls="eza --icons -x" +alias wallupdate="python /home/carrie/.config/meowrch/update_wallpapers.py" +alias update="sudo pacman -Syu & yay -Syu" +alias vpn="/home/carrie/Documents/code/bash/vpn/vpn.sh" + +# Startup +if status is-interactive + fastfetch +end +set -x QT_QPA_PLATFORMTHEME qt5ct +set -x QT_QPA_PLATFORMTHEME qt6ct + +gsettings set org.gnome.desktop.interface gtk-theme dc +gsettings set org.gnome.desktop.interface gtk-theme dc diff --git a/.config/fish/fish_plugins b/.config/fish/fish_plugins new file mode 100755 index 0000000..594dfc0 --- /dev/null +++ b/.config/fish/fish_plugins @@ -0,0 +1 @@ +jorgebucaran/fisher diff --git a/.config/fish/fish_prompt.fish b/.config/fish/fish_prompt.fish new file mode 100644 index 0000000..f6551c2 --- /dev/null +++ b/.config/fish/fish_prompt.fish @@ -0,0 +1,9 @@ +function fish_prompt + set_color cyan + echo -n "~ " + + set_color ff8700 + echo -n ">> " + + set_color normal +end diff --git a/.config/fish/fish_right_prompt.fish b/.config/fish/fish_right_prompt.fish new file mode 100644 index 0000000..6b7169a --- /dev/null +++ b/.config/fish/fish_right_prompt.fish @@ -0,0 +1,5 @@ +function fish_right_prompt + set_color 666666 + date "+%H:%M:%S" + set_color normal +end diff --git a/.config/fish/fish_variables b/.config/fish/fish_variables new file mode 100644 index 0000000..4ac9a0d --- /dev/null +++ b/.config/fish/fish_variables @@ -0,0 +1,35 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:4300 +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR dangerous_colors:000000\x1e083743\x1e445659\x1efdf6e3\x1eb58900\x1ecb4b16\x1edc121f\x1eaf005f\x1e6c71c4\x1e268bd2\x1e2aa198\x1e859900 +SETUVAR dangerous_cursors:\x5c033\x5d12\x3b\x23268bd2\x5c007\x1e\x5c033\x5d12\x3b\x23b58900\x5c007\x1e\x5c033\x5d12\x3b\x23af005f\x5c007\x1e\x5c033\x5d12\x3b\x236c71c4\x5c007 +SETUVAR dangerous_day:000000\x1e333333\x1e666666\x1effffff\x1effff00\x1eff6600\x1eff0000\x1eff0033\x1e3300ff\x1e00aaff\x1e00ffff\x1e00ff00 +SETUVAR dangerous_night:000000\x1e083743\x1e445659\x1efdf6e3\x1eb58900\x1ecb4b16\x1edc121f\x1eaf005f\x1e6c71c4\x1e268bd2\x1e2aa198\x1e859900 +SETUVAR fish_color_autosuggestion:6c7086 +SETUVAR fish_color_cancel:f38ba8 +SETUVAR fish_color_command:f38ba8 +SETUVAR fish_color_comment:7f849c +SETUVAR fish_color_cwd:f38ba8 +SETUVAR fish_color_end:fab387 +SETUVAR fish_color_error:f38ba8 +SETUVAR fish_color_escape:eba0ac +SETUVAR fish_color_gray:6c7086 +SETUVAR fish_color_host:f38ba8 +SETUVAR fish_color_host_remote:a6e3a1 +SETUVAR fish_color_keyword:f38ba8 +SETUVAR fish_color_normal:f38ba8 +SETUVAR fish_color_operator:f5c2e7 +SETUVAR fish_color_option:a6e3a1 +SETUVAR fish_color_param:f2cdcd +SETUVAR fish_color_quote:a6e3a1 +SETUVAR fish_color_redirection:f5c2e7 +SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244 +SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244 +SETUVAR fish_color_status:f38ba8 +SETUVAR fish_color_user:f38ba8 +SETUVAR fish_greeting:\x1d +SETUVAR fish_pager_color_completion:cdd6f4 +SETUVAR fish_pager_color_description:6c7086 +SETUVAR fish_pager_color_prefix:f5c2e7 +SETUVAR fish_pager_color_progress:6c7086 diff --git a/.config/fish/functions/develop.fish b/.config/fish/functions/develop.fish new file mode 100755 index 0000000..74e2b7d --- /dev/null +++ b/.config/fish/functions/develop.fish @@ -0,0 +1,4 @@ +#fish shell configuration +function develop + tmux -neww session_name: -n window_name -d +end diff --git a/.config/fish/functions/fish_prompt.fish b/.config/fish/functions/fish_prompt.fish new file mode 120000 index 0000000..443d64d --- /dev/null +++ b/.config/fish/functions/fish_prompt.fish @@ -0,0 +1 @@ +/home/carrie/.local/share/omf/themes/dangerous/fish_prompt.fish \ No newline at end of file diff --git a/.config/fish/functions/fisher.fish b/.config/fish/functions/fisher.fish new file mode 100755 index 0000000..b1513d3 --- /dev/null +++ b/.config/fish/functions/fisher.fish @@ -0,0 +1,240 @@ +function fisher --argument-names cmd --description "A plugin manager for Fish" + set --query fisher_path || set --local fisher_path $__fish_config_dir + set --local fisher_version 4.4.4 + set --local fish_plugins $__fish_config_dir/fish_plugins + + switch "$cmd" + case -v --version + echo "fisher, version $fisher_version" + case "" -h --help + echo "Usage: fisher install Install plugins" + echo " fisher remove Remove installed plugins" + echo " fisher update Update installed plugins" + echo " fisher update Update all installed plugins" + echo " fisher list [] List installed plugins matching regex" + echo "Options:" + echo " -v, --version Print version" + echo " -h, --help Print this help message" + echo "Variables:" + echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~ + case ls list + string match --entire --regex -- "$argv[2]" $_fisher_plugins + case install update remove + isatty || read --local --null --array stdin && set --append argv $stdin + + set --local install_plugins + set --local update_plugins + set --local remove_plugins + set --local arg_plugins $argv[2..-1] + set --local old_plugins $_fisher_plugins + set --local new_plugins + + test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) + + if ! set --query argv[2] + if test "$cmd" != update + echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1 + else if ! set --query file_plugins + echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1 + end + set arg_plugins $file_plugins + end + + for plugin in $arg_plugins + set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin) + contains -- "$plugin" $new_plugins || set --append new_plugins $plugin + end + + if set --query argv[2] + for plugin in $new_plugins + if contains -- "$plugin" $old_plugins + test "$cmd" = remove && + set --append remove_plugins $plugin || + set --append update_plugins $plugin + else if test "$cmd" = install + set --append install_plugins $plugin + else + echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1 + end + end + else + for plugin in $new_plugins + contains -- "$plugin" $old_plugins && + set --append update_plugins $plugin || + set --append install_plugins $plugin + end + + for plugin in $old_plugins + contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin + end + end + + set --local pid_list + set --local source_plugins + set --local fetch_plugins $update_plugins $install_plugins + set --local fish_path (status fish-path) + + echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal) + + for plugin in $fetch_plugins + set --local source (command mktemp -d) + set --append source_plugins $source + + command mkdir -p $source/{completions,conf.d,themes,functions} + + $fish_path --command " + if test -e $plugin + command cp -Rf $plugin/* $source + else + set temp (command mktemp -d) + set repo (string split -- \@ $plugin) || set repo[2] HEAD + + if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1]) + set name (string split -- / \$path)[-1] + set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz + else + set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2] + end + + echo Fetching (set_color --underline)\$url(set_color normal) + + if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null + command cp -Rf \$temp/*/* $source + else + echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 + command rm -rf $source + end + + command rm -rf \$temp + end + + set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files + " & + + set --append pid_list (jobs --last --pid) + end + + wait $pid_list 2>/dev/null + + for plugin in $fetch_plugins + if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source + if set --local index (contains --index -- "$plugin" $install_plugins) + set --erase install_plugins[$index] + else + set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)] + end + end + end + + for plugin in $update_plugins $remove_plugins + if set --local index (contains --index -- "$plugin" $_fisher_plugins) + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + if contains -- "$plugin" $remove_plugins + for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var) + emit {$name}_uninstall + end + printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + set --erase _fisher_plugins[$index] + end + + command rm -rf (string replace -- \~ ~ $$plugin_files_var) + + functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var) + + for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var) + complete --erase --command $name + end + + set --erase $plugin_files_var + end + end + + if set --query update_plugins[1] || set --query install_plugins[1] + command mkdir -p $fisher_path/{functions,themes,conf.d,completions} + end + + for plugin in $update_plugins $install_plugins + set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] + set --local files $source/{functions,themes,conf.d,completions}/* + + if set --local index (contains --index -- $plugin $install_plugins) + set --local user_files $fisher_path/{functions,themes,conf.d,completions}/* + set --local conflict_files + + for file in (string replace -- $source/ $fisher_path/ $files) + contains -- $file $user_files && set --append conflict_files $file + end + + if set --query conflict_files[1] && set --erase install_plugins[$index] + echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2 + continue + end + end + + for file in (string replace -- $source/ "" $files) + command cp -RLf $source/$file $fisher_path/$file + end + + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~) + + contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin + contains -- $plugin $install_plugins && set --local event install || set --local event update + + printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + + for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~) + source $file + if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file) + emit {$name}_$event + end + end + end + + command rm -rf $source_plugins + + if set --query _fisher_plugins[1] + set --local commit_plugins + + for plugin in $file_plugins + contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin + end + + for plugin in $_fisher_plugins + contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin + end + + printf "%s\n" $commit_plugins >$fish_plugins + else + set --erase _fisher_plugins + command rm -f $fish_plugins + end + + set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins) + + test "$total" != "0 0 0" && echo (string join ", " ( + test $total[1] = 0 || echo "Installed $total[1]") ( + test $total[2] = 0 || echo "Updated $total[2]") ( + test $total[3] = 0 || echo "Removed $total[3]") + ) plugin/s + case \* + echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1 + end +end + +if ! set --query _fisher_upgraded_to_4_4 + set --universal _fisher_upgraded_to_4_4 + if functions --query _fisher_list + set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share + command rm -rf $XDG_DATA_HOME/fisher + functions --erase _fisher_{list,plugin_parse} + fisher update >/dev/null 2>/dev/null + else + for var in (set --names | string match --entire --regex '^_fisher_.+_files$') + set $var (string replace -- ~ \~ $$var) + end + functions --erase _fisher_fish_postexec + end +end diff --git a/.config/fish/functions/nvidia-settings.fish b/.config/fish/functions/nvidia-settings.fish new file mode 100755 index 0000000..b10cc4d --- /dev/null +++ b/.config/fish/functions/nvidia-settings.fish @@ -0,0 +1,4 @@ +function nvidia-settings + mkdir -p $XDG_CONFIG_HOME/nvidia/ + command nvidia-settings --config="$XDG_CONFIG_HOME/nvidia/settings" $argv +end diff --git a/.config/gtk-2.0/gtkfilechooser.ini b/.config/gtk-2.0/gtkfilechooser.ini new file mode 100755 index 0000000..c4eddb8 --- /dev/null +++ b/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,11 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=false +ShowSizeColumn=true +GeometryX=505 +GeometryY=335 +GeometryWidth=780 +GeometryHeight=585 +SortColumn=name +SortOrder=ascending +StartupMode=recent diff --git a/.config/gtk-2.0/gtkrc b/.config/gtk-2.0/gtkrc new file mode 100755 index 0000000..a87b771 --- /dev/null +++ b/.config/gtk-2.0/gtkrc @@ -0,0 +1,15 @@ +gtk-theme-name=dc +gtk-icon-theme-name="Gruvbox-Plus-Dark" +gtk-font-name="JetBrainsMono Nerd Font 12" +gtk-cursor-theme-name="Bibata-Modern-Classic" +gtk-cursor-theme-size=20 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintslight" +gtk-xft-rgba="rgb" diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks new file mode 100755 index 0000000..4a00da9 --- /dev/null +++ b/.config/gtk-3.0/bookmarks @@ -0,0 +1,10 @@ +file:///drives drives +file:///home/carrie/Documents Documents +file:///home/carrie/Music Music +file:///drives/rei/Library Library +file:///home/carrie/Downloads Downloads +file:///home/carrie/Pictures Pictures +file:///home/carrie/iphone iphone +file:///home/carrie/Videos Videos +file:///run/media/carrie/disk/vnds/novels novels +file:///drives/rei/Library/Toby%20Fox/DELTARUNE%20Chapter%203+4%20OST DELTARUNE Chapter 3+4 OST diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100755 index 0000000..9c20ed5 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,17 @@ +[Settings] +gtk-theme-name=Adwaita +gtk-icon-theme-name=Gruvbox-Plus-Dark +gtk-font-name=Noto Sans Light 10 +gtk-cursor-theme-name=Bibata-Modern-Classic +gtk-cursor-theme-size=20 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintmedium +gtk-xft-rgba=rgb +gtk-application-prefer-dark-theme=1 diff --git a/.config/gtk-3.0/settings.ini.backup b/.config/gtk-3.0/settings.ini.backup new file mode 100755 index 0000000..e69de29 diff --git a/.config/gtk-4.0/settings.ini b/.config/gtk-4.0/settings.ini new file mode 100755 index 0000000..60fae30 --- /dev/null +++ b/.config/gtk-4.0/settings.ini @@ -0,0 +1,6 @@ +gtk-theme-name=dc +gtk-icon-theme-name=Gruvbox-Plus-Dark +gtk-font-name=JetBrainsMono Nerd Font 12 +gtk-cursor-theme-name=Bibata-Modern-Classic +gtk-cursor-theme-size=20 +gtk-application-prefer-dark-theme=1 diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/.config/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/.config/nvim/.neoconf.json b/.config/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/.config/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/.config/nvim/LICENSE b/.config/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/.config/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.config/nvim/README.md b/.config/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/.config/nvim/README.md @@ -0,0 +1,4 @@ +# πŸ’€ LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/.config/nvim/colors/dc.lua b/.config/nvim/colors/dc.lua new file mode 100644 index 0000000..b45b677 --- /dev/null +++ b/.config/nvim/colors/dc.lua @@ -0,0 +1,91 @@ +local colors = { + bg = "#141414", + fg = "#feffd3", + cursor = "#ffffff", + selection_bg = "#303030", + selection_fg = "#141414", + + black = "#141414", + black_bright = "#262626", + + red = "#c06c43", + red_bright = "#dd7c4c", + + green = "#afb979", + green_bright = "#cbd88c", + + yellow = "#c2a86c", + yellow_bright = "#e1c47d", + + blue = "#444649", + blue_bright = "#5a5d61", + + magenta = "#b4be7b", + magenta_bright = "#d0db8e", + + cyan = "#778284", + cyan_bright = "#8a989a", + + white = "#feffd3", +} + +vim.cmd("highlight clear") +vim.o.termguicolors = true +vim.g.colors_name = "dc" + +local function hi(group, opts) + vim.api.nvim_set_hl(0, group, opts) +end + +-- Core UI +hi("Normal", { fg = colors.fg, bg = colors.bg }) +hi("Cursor", { fg = colors.bg, bg = colors.cursor }) +hi("Visual", { fg = colors.selection_fg, bg = colors.selection_bg }) +hi("LineNr", { fg = colors.blue }) +hi("CursorLineNr", { fg = colors.yellow_bright, bold = true }) +hi("CursorLine", { bg = colors.black_bright }) + +hi("StatusLine", { fg = colors.fg, bg = colors.black_bright }) +hi("StatusLineNC", { fg = colors.blue, bg = colors.black }) + +hi("Pmenu", { fg = colors.fg, bg = colors.black_bright }) +hi("PmenuSel", { fg = colors.selection_fg, bg = colors.green }) + +hi("Search", { fg = colors.selection_fg, bg = colors.yellow }) +hi("IncSearch", { fg = colors.selection_fg, bg = colors.yellow_bright }) + +hi("VertSplit", { fg = colors.black_bright }) + +-- Syntax +hi("Comment", { fg = colors.blue_bright, italic = true }) +hi("String", { fg = colors.green }) +hi("Number", { fg = colors.yellow }) +hi("Boolean", { fg = colors.yellow_bright }) +hi("Identifier", { fg = colors.fg }) +hi("Function", { fg = colors.green_bright }) +hi("Keyword", { fg = colors.red_bright, bold = true }) +hi("Operator", { fg = colors.red }) +hi("Type", { fg = colors.cyan_bright }) + +-- Diagnostics (LSP) +hi("DiagnosticError", { fg = colors.red }) +hi("DiagnosticWarn", { fg = colors.yellow }) +hi("DiagnosticInfo", { fg = colors.blue_bright }) +hi("DiagnosticHint", { fg = colors.cyan }) + +-- Git +hi("DiffAdd", { fg = colors.green }) +hi("DiffChange", { fg = colors.yellow }) +hi("DiffDelete", { fg = colors.red }) + +-- Match & Brackets +hi("MatchParen", { fg = colors.bg, bg = colors.magenta_bright, bold = true }) + +-- Floating Windows +hi("NormalFloat", { fg = colors.fg, bg = colors.black_bright }) +hi("FloatBorder", { fg = colors.blue_bright }) + +-- Telescope +hi("TelescopeBorder", { fg = colors.blue }) +hi("TelescopeNormal", { fg = colors.fg, bg = colors.black }) +hi("TelescopeSelection", { bg = colors.selection_bg }) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..b55006e --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,5 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") +vim.cmd.colorscheme("dc") +require("config.highlights") +require("config.quit") diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..6e3314d --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,53 @@ +{ + "LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" }, + "LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" }, + "SchemaStore.nvim": { "branch": "main", "commit": "0c303573345e710a233f5ba75f9aadc05852771b" }, + "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" }, + "clangd_extensions.nvim": { "branch": "main", "commit": "78c2ecd659d54972be17aa6ba2deac3c53223b80" }, + "cmake-tools.nvim": { "branch": "master", "commit": "bac6ba2354a52c61f731c751cdb0f4e24669bf0d" }, + "conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" }, + "cord.nvim": { "branch": "master", "commit": "7483e9ce335d22a9e52f83804134d621094b5fe7" }, + "crates.nvim": { "branch": "main", "commit": "694357861ec9ebf12475ddcdd04ea45a0923c32d" }, + "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" }, + "grug-far.nvim": { "branch": "main", "commit": "21604255d0e8f9968322f61f2b6c09e5efe1285a" }, + "haskell-snippets.nvim": { "branch": "main", "commit": "11868addce601fdeed56097d48ff42abeec3dfe8" }, + "haskell-tools.nvim": { "branch": "main", "commit": "9ea030aa67f3875753e70e1eb59701f7020479a0" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" }, + "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "0c2823e0418f3d9230ff8b201c976e84de1cb401" }, + "mason.nvim": { "branch": "main", "commit": "12ddd182d9efbdc848b540f16484a583d52da0fb" }, + "mini.ai": { "branch": "main", "commit": "43eb2074843950a3a25aae56a5f41362ec043bfa" }, + "mini.icons": { "branch": "main", "commit": "bac6317300e205335df425296570d84322730067" }, + "mini.pairs": { "branch": "main", "commit": "42387c7fe68fc0b6e95eaf37f1bb76e7bffaa0d9" }, + "neo-tree.nvim": { "branch": "main", "commit": "5142f021e11f940b1af279a314bab4e14de948a6" }, + "neocodeium": { "branch": "main", "commit": "bfe790d78e66adaa95cb50a8c75c64a752336e9c" }, + "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-jdtls": { "branch": "master", "commit": "77ccaeb422f8c81b647605da5ddb4a7f725cda90" }, + "nvim-lint": { "branch": "master", "commit": "eab58b48eb11d7745c11c505e0f3057165902461" }, + "nvim-lspconfig": { "branch": "master", "commit": "81878de76c0de4ce289513734ad80c31ec7871b8" }, + "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" }, + "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" }, + "omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "a47388e5417e7f1cfa6962cc441a23c4c5fb2151" }, + "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, + "render-markdown.nvim": { "branch": "main", "commit": "d67113f11384c0dad96fced2f7b91f1fc811e97f" }, + "rustaceanvim": { "branch": "main", "commit": "07f0900627f1bb2fc9ee8b5e39bb96fe40c2e0a1" }, + "snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" }, + "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, + "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, + "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, + "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" }, + "venv-selector.nvim": { "branch": "main", "commit": "bcb2f58533c59b01565285eba49693f00bc460f5" }, + "vim-dadbod": { "branch": "master", "commit": "6d1d41da4873a445c5605f2005ad2c68c99d8770" }, + "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, + "vim-dadbod-ui": { "branch": "master", "commit": "07e92e22114cc5b1ba4938d99897d85b58e20475" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} diff --git a/.config/nvim/lazyvim.json b/.config/nvim/lazyvim.json new file mode 100644 index 0000000..2070b5c --- /dev/null +++ b/.config/nvim/lazyvim.json @@ -0,0 +1,32 @@ +{ + "extras": [ + "lazyvim.plugins.extras.lang.angular", + "lazyvim.plugins.extras.lang.astro", + "lazyvim.plugins.extras.lang.clangd", + "lazyvim.plugins.extras.lang.cmake", + "lazyvim.plugins.extras.lang.dart", + "lazyvim.plugins.extras.lang.docker", + "lazyvim.plugins.extras.lang.dotnet", + "lazyvim.plugins.extras.lang.git", + "lazyvim.plugins.extras.lang.gleam", + "lazyvim.plugins.extras.lang.go", + "lazyvim.plugins.extras.lang.haskell", + "lazyvim.plugins.extras.lang.java", + "lazyvim.plugins.extras.lang.json", + "lazyvim.plugins.extras.lang.kotlin", + "lazyvim.plugins.extras.lang.markdown", + "lazyvim.plugins.extras.lang.python", + "lazyvim.plugins.extras.lang.rust", + "lazyvim.plugins.extras.lang.sql", + "lazyvim.plugins.extras.lang.svelte", + "lazyvim.plugins.extras.lang.tailwind", + "lazyvim.plugins.extras.lang.toml", + "lazyvim.plugins.extras.lang.typescript", + "lazyvim.plugins.extras.lang.yaml" + ], + "install_version": 8, + "news": { + "NEWS.md": "11866" + }, + "version": 8 +} \ No newline at end of file diff --git a/.config/nvim/lua/config/autocmds.lua b/.config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..6eefb06 --- /dev/null +++ b/.config/nvim/lua/config/autocmds.lua @@ -0,0 +1,5 @@ +vim.api.nvim_create_autocmd("VimEnter", { + callback = function() + vim.cmd("Neotree show right") + end, +}) diff --git a/.config/nvim/lua/config/highlights.lua b/.config/nvim/lua/config/highlights.lua new file mode 100644 index 0000000..81b6088 --- /dev/null +++ b/.config/nvim/lua/config/highlights.lua @@ -0,0 +1,36 @@ +-- Force LazyVim UI elements to use Carrie's green 🐾🌿 + +local green = "#afb979" +local green_bright = "#cbd88c" +local bg = "#141414" + +local function hi(group, opts) + vim.api.nvim_set_hl(0, group, opts) +end + +-- βœ… WhichKey menu (the big popup cheat sheet) +hi("WhichKey", { fg = green_bright }) +hi("WhichKeyGroup", { fg = green }) +hi("WhichKeyDesc", { fg = green_bright }) +hi("WhichKeyBorder", { fg = green }) + +-- βœ… Lazy.nvim plugin manager UI +hi("LazyNormal", { bg = bg }) +hi("LazyButton", { fg = green }) +hi("LazyButtonActive", { fg = bg, bg = green_bright, bold = true }) +hi("LazyH1", { fg = green_bright, bold = true }) + +-- βœ… Completion menu (nvim-cmp) +hi("CmpItemAbbr", { fg = green_bright }) +hi("CmpItemAbbrMatch", { fg = green, bold = true }) +hi("CmpBorder", { fg = green }) +hi("CmpNormal", { bg = bg }) + +-- βœ… Telescope menus (if you use it) +hi("TelescopeBorder", { fg = green }) +hi("TelescopePromptBorder", { fg = green }) +hi("TelescopeSelection", { bg = "#303030" }) +hi("TelescopePromptPrefix", { fg = green_bright }) + +-- βœ… Floating menus in general +hi("FloatBorder", { fg = green }) diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..9876ac8 --- /dev/null +++ b/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,8 @@ +-- Neo-tree toggle with ` +vim.keymap.set("n", "`", function() + vim.cmd("Neotree toggle right") +end, { desc = "Toggle Neo-tree" }) + +-- Buffer (tab/page) navigation +vim.keymap.set("n", "[", vim.cmd.bprevious, { desc = "Previous buffer" }) +vim.keymap.set("n", "]", vim.cmd.bnext, { desc = "Next buffer" }) diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..3ea1454 --- /dev/null +++ b/.config/nvim/lua/config/options.lua @@ -0,0 +1,3 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here diff --git a/.config/nvim/lua/config/quit.lua b/.config/nvim/lua/config/quit.lua new file mode 100644 index 0000000..e692b73 --- /dev/null +++ b/.config/nvim/lua/config/quit.lua @@ -0,0 +1,26 @@ +local function close_neotree_if_open() + for _, win in ipairs(vim.api.nvim_list_wins()) do + local buf = vim.api.nvim_win_get_buf(win) + local ft = vim.api.nvim_buf_get_option(buf, "filetype") + if ft == "neo-tree" then + vim.cmd("Neotree close") + return + end + end +end + +-- Override :q +vim.api.nvim_create_user_command("Q", function() + close_neotree_if_open() + vim.cmd("q") +end, {}) + +vim.cmd("cnoreabbrev q Q") + +-- Override :wq +vim.api.nvim_create_user_command("WQ", function() + close_neotree_if_open() + vim.cmd("wq") +end, {}) + +vim.cmd("cnoreabbrev wq WQ") diff --git a/.config/nvim/lua/plugins/arrpc-presence.lua b/.config/nvim/lua/plugins/arrpc-presence.lua new file mode 100644 index 0000000..d7fa347 --- /dev/null +++ b/.config/nvim/lua/plugins/arrpc-presence.lua @@ -0,0 +1,15 @@ +return { + "vyfor/cord.nvim", + build = "./build || .\\build", + event = "VeryLazy", + opts = { + editor = { + client = "neovim", + tooltip = "The only real IDE", + }, + display = { + theme = "default", + flavor = "accent", + }, + }, +} diff --git a/.config/nvim/lua/plugins/example.lua b/.config/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/.config/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "πŸ˜„" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/mini.lua b/.config/nvim/lua/plugins/mini.lua new file mode 100644 index 0000000..670b5a8 --- /dev/null +++ b/.config/nvim/lua/plugins/mini.lua @@ -0,0 +1,3 @@ +return { + 'nvim-mini/mini.nvim', version = false +}, diff --git a/.config/nvim/lua/plugins/neocodeium.lua b/.config/nvim/lua/plugins/neocodeium.lua new file mode 100644 index 0000000..c1a02cd --- /dev/null +++ b/.config/nvim/lua/plugins/neocodeium.lua @@ -0,0 +1,9 @@ +return { + "monkoose/neocodeium", + event = "VeryLazy", + config = function() + local neocodeium = require("neocodeium") + neocodeium.setup() + vim.keymap.set("i", "", neocodeium.accept) + end, +} diff --git a/.config/nvim/lua/plugins/neotree.lua b/.config/nvim/lua/plugins/neotree.lua new file mode 100644 index 0000000..dca7da2 --- /dev/null +++ b/.config/nvim/lua/plugins/neotree.lua @@ -0,0 +1,34 @@ +return { + { + "nvim-neo-tree/neo-tree.nvim", + opts = { + window = { + position = "right", + width = 25, + mappings = { + ["`"] = "close_window", -- leave neotree + + ["."] = "navigate_up", -- go to parent dir + ["d"] = "delete", + ["c"] = "copy_to_clipboard", + ["v"] = "paste_from_clipboard", + + ["n"] = "add", -- new file + ["f"] = "add_directory", -- new folder + }, + }, + + filesystem = { + follow_current_file = { + enabled = true, + }, + hijack_netrw_behavior = "open_default", + use_libuv_file_watcher = true, + + filtered_items = { + visible = true, -- show hidden files + }, + }, + }, + }, +} diff --git a/.config/nvim/stylua.toml b/.config/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/.config/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/.config/polybar/config.ini b/.config/polybar/config.ini new file mode 100755 index 0000000..0e56a97 --- /dev/null +++ b/.config/polybar/config.ini @@ -0,0 +1,161 @@ +[colors] +bg = #141414 +border = #444649 +text = #feffd3 +dim = #778284 +accent = #afb979 +red = #c06c43 +green = #afb979 +yellow = #c2a86c +blue = #444649 +magenta = #b4be7b +cyan = #778284 + +[bar/top] +wm-restack = bspwm +monitor = ${env:MONITOR:} +width = 99% +height = 28 +bottom = false +offset-x = 0.5% +offset-y = 0.5% +fixed-center = true + +background = ${colors.bg} +foreground = ${colors.text} + +border-size = 2 +border-color = ${colors.border} + +padding = 1 +module-margin = 0 + +modules-left = bspwm +# modules-center = media-window-toggle +modules-center = xwindow +modules-right = cpu sep ram sep gpu sep volume sep time + +font-0 = JetBrainsMono Nerd Font:style=Bold:pixelsize=10;2 +font-1 = JetBrainsMono Nerd Font:style=Bold:pixelsize=12;2 + +; Separators +[module/sep] +type = custom/text +content = "|" +content-foreground = ${colors.dim} + +; Workspaces +[module/bspwm] +type = internal/bspwm + +pin-workspaces = true +inline-mode = true +enable-click = true +enable-scroll = true +reverse-scroll = false + +format = + +ws-icon-0 = 1;1 +ws-icon-1 = 2;2 +ws-icon-2 = 3;3 +ws-icon-3 = 4;4 +ws-icon-4 = 5;5 +ws-icon-5 = 6;6 +ws-icon-6 = 7;7 +ws-icon-7 = 8;8 + +label-focused = "[%icon%]" +label-focused-foreground = ${colors.accent} +label-focused-padding = 1 + +label-occupied = "%icon%" +label-occupied-foregrounk = ${colors.text} +label-occupied-padding = 1 + +label-empty = "%icon%" +label-empty-foreground = ${colors.dim} +label-empty-padding = 1 + +label-urgent = "!%icon%!" +label-urgent-foreground = ${colors.red} +label-urgent-padding = 1 + +; Titles +[module/xwindow] +type = internal/xwindow +label = %title% +label-maxlen = 50 +label-foreground = ${colors.text} +label-empty = Desktop +label-empty-foreground = ${colors.dim} + +; Time +[module/time] +type = internal/date +interval = 1 + +format =