diff --git a/config/.zshrc b/.zshrc
similarity index 57%
rename from config/.zshrc
rename to .zshrc
index cc2ec94..a9ba762 100755
--- a/config/.zshrc
+++ b/.zshrc
@@ -1,23 +1,18 @@
-export ZSH="$HOME/.oh-my-zsh"
-
+ZSH="/usr/share/oh-my-zsh/"
+export ZSH="/usr/share/oh-my-zsh/"
ZSH_THEME="keyitdev"
-
plugins=(git)
-source $ZSH/oh-my-zsh.sh
+ZSH_CACHE_DIR="$HOME/.cache/oh-my-zsh"
+if [[ ! -d "$ZSH_CACHE_DIR" ]]; then
+ mkdir "$ZSH_CACHE_DIR"
+fi
-# pacman
-alias pacrem="sudo pacman -Rn"
-alias pacrema="sudo pacman -Rns"
-alias pacupd="sudo pacman -Syyy"
-alias pacupg="sudo pacman -Syu"
-alias paccl="sudo pacman -Rns $(pacman -Qtdq)"
+source "$ZSH"/oh-my-zsh.sh
-alias yayrem="yay -Rn"
-alias yayrema="yay -Rns"
-alias yayupd="yay -Syyy"
-alias yayupg="yay -Syu"
-alias yaycl="yay -Rns $(yay -Qtdq)"
+alias yeet="yay -Rn"
+alias yeeet="yay -Rns"
+alias yeet_useless="yay -Rns $(yay -Qtdq)"
# git
alias g="git"
@@ -45,12 +40,13 @@ alias nv="nvim"
alias la="ls -alF"
alias h="history|grep"
alias c="clear" # I know about ctrl l etc.
-alias logout="killall -KILL -u key_user"
-alias files="nautilus"
-alias helpme="cat ~/.zshrc | less"
+alias logout="killall -KILL -u $USER"
+alias files="nemo"
+alias files.="nemo ."
+alias help="cat ~/.zshrc | less"
# cd
alias ..="cd .."
alias ....="cd ../.."
alias ......="cd ../../.."
-alias ........="cd ../../../.."
\ No newline at end of file
+alias ........="cd ../../../.."
diff --git a/README.md b/README.md
index 5498c5e..958ce3f 100755
--- a/README.md
+++ b/README.md
@@ -1,182 +1,182 @@
-
Keyitdev Dotfiles
+# Keyitdev Dotfiles
-My personal build of dotfiles using i3. Color palette is based on the Atom One Dark colorscheme. This configuration also works on dual monitors.
+The **Arch Linux** & **i3wm** dotfiles!
-
+[Showcase](#showcase) ·
+[Information](#information) ·
+[Installation](#installation) ·
+[Cheat sheet](#cheat-sheet) ·
+[Support and Thankies](#support-and-thankies)
-
+**i3wm** is very simple, old tiling window manager, but it is still powerful and highly configurable. Although it takes time and effort to configure it, but I'm very satisfied with the result.
-
-
-
-
-
-
-
+This is the third version of my dotfiles, as I gain more experience I am able to create more profesional dotfiles.
-
+**However, if you want to check older version see [v2 branch](https://github.com/Keyitdev/dotfiles/tree/v2).**
-**Check newer version here [v3 branch](https://github.com/Keyitdev/dotfiles/tree/v3).**
+![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)
-
+### [Watch viedo demo here]()
-## 🌟 Showcase
+[![](https://img.shields.io/github/stars/keyitdev/dotfiles?color=dd864a&labelColor=1b1b25&style=for-the-badge)](https://github.com/Keyitdev/dotfiles/stargazers)
+[![](https://img.shields.io/github/forks/keyitdev/dotfiles?color=bf616a&labelColor=1b1b25&style=for-the-badge)](https://github.com/Keyitdev/dotfiles/network/members)
+[![](https://img.shields.io/github/license/keyitdev/dotfiles?color=999f63&labelColor=1b1b25&style=for-the-badge)](https://www.gnu.org/licenses/gpl-3.0.html)
+## Information
-![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v2/screenshots/main.png?raw=true)
+- **OS:** [Arch Linux](https://archlinux.org)
+- **WM:** [i3-gaps](https://github.com/Airblader/i3)
+- **Terminal:** [alacritty](https://github.com/alacritty/alacritty)
+- **Bar:** [polybar](https://github.com/polybar/polybar)
+- **Shell:** [zsh](https://www.zsh.org/)
+- **Compositor:** [picom](https://github.com/yshui/picom)
+- **Application Launcher:** [rofi](https://github.com/davatorium/rofi)
+- **Notification Deamon:** [dunst](https://github.com/dunst-project/dunst)
-### [More screenshots here](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v2/README.md)
+
+
+Detailed information and dependencies
+
-### [Watch the demo video here](https://www.youtube.com/watch?v=_dMkmf2ugPE)
+### Info
-## 🗒️ Info
+**Music Player:** [mpd](https://github.com/MusicPlayerDaemon/MPD) & [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp)
+**Editor:** [neovim](https://github.com/neovim/neovim) / [vscode](https://github.com/microsoft/vscode)
+**Lockscreen:** [i3lock-color](https://github.com/Raymo111/i3lock-color)
+**Display Manager:** [sddm](https://github.com/sddm/sddm)
+**File manager:** [ranger](https://github.com/ranger/ranger) / [nemo](https://github.com/linuxmint/nemo)
+**Pdf reader:** [zathura](https://github.com/pwmt/zathura)
+**Monitor of Resources:** [btop](https://github.com/aristocratos/btop)
-|Program|Name|
+### Used themes
+
+**Shell Framework:** [Oh-My-Zsh](https://github.com/ohmyzsh/ohmyzsh)
+**Vscode Theme:** [One dark pro](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme)
+**Neovim Theme:** [AstroNvim](https://github.com/kabinspace/AstroVim)
+**Icons:** [Papirus dark](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
+**GTK Theme:** [Tokyo night](https://github.com/Fausto-Korpsvart/Tokyo-Night-GTK-Theme)
+**Display Manager Theme:** [Sddm-flower-theme](https://github.com/Keyitdev/sddm-flower-theme)
+
+### Fonts
+
+**Icons:** [Feather](https://github.com/AT-UI/feather-font/blob/master/src/fonts/feather.ttf)
+**Interface Font:** [Open sans](https://fonts.google.com/specimen/Open+Sans#standard-styles)
+**Monospace Font:** [Roboto mono](https://fonts.google.com/specimen/Roboto+Mono#standard-styles)
+**Polybar Font:** [Iosevka nerd font](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Iosevka)
+
+### Dependencies
+
+**Base:** acpi alsa-utils base-devel curl git pulseaudio pulseaudio-alsa xorg xorg-xinit
+
+**Required:** alacritty btop code dunst feh ffcast firefox i3-gaps i3lock-color i3-resurrect libnotify light mpc mpd ncmpcpp nemo neofetch neovim oh-my-zsh-git pacman-contrib papirus-icon-theme picom polybar ranger rofi scrot slop xclip zathura zathura-pdf-mupdf zsh
+
+**Sddm:** qt5-graphicaleffects qt5-quickcontrols2 qt5-svg sddm
+
+**Emoji:** fonts: noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
+
+
+
+## Showcase
+
+|vsc & ncmpcpp & cava|rofi & dunst|
|-|-|
-|**Window Manager**|[i3-gaps](https://github.com/Airblader/i3)|
-|**Terminal Emulator**|[Kitty](https://github.com/kovidgoyal/kitty)|
-|**Bar**|[Polybar](https://github.com/polybar/polybar)|
-|**Application Launcher**|[Rofi](https://github.com/davatorium/rofi)|
-|**Notification Daemon**|[Dunst](https://github.com/dunst-project/dunst)|
-|**Display Manager**|[SDDM](https://github.com/sddm/sddm)|
-|**Display Manager Theme**|[SDDM-Astronaut-Theme](https://github.com/Keyitdev/sddm-astronaut-theme)|
-|**Lockscreen**|[BetterLockscreen](https://github.com/betterlockscreen/betterlockscreen)|
-|**Compositor**|[Picom](https://github.com/yshui/picom)
-|**Shell**|[Zsh](https://www.zsh.org/)|
-|**Shell Framework**|[Oh-My-Zsh](https://github.com/ohmyzsh/ohmyzsh)|
-|**Music Player**|[mpd](https://github.com/MusicPlayerDaemon/MPD), [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp)
-|**Text Editor**|[Visual Studio Code](https://github.com/Microsoft/vscode), [Neovim](https://github.com/neovim/neovim)|
-|**VSC Colorscheme**|[One Dark Pro](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme)|
-|**Neovim Theme**|[AstroVim](https://github.com/kabinspace/AstroVim)
-|**GTK Theme**|[Ant (Dracula)](https://github.com/EliverLara/ant)|
-|**Icons**|[Papirus Dark](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)|
-|**Discord Theme**|[Custom](https://github.com/Keyitdev/BetterDiscord-themes)|
-
-## ⚡ Dependencies
-
-### Packages
-* **Base:** base-devel wget curl git gcc make acpi light pulseaudio pulseaudio-alsa alsa-utils pacman-contrib mpc
-* **WM/X11:** i3-gaps i3blocks i3lock-color xorg xorg-xinit xorg-server
-* **Lockscreen:** i3lock-color betterlockscreen feh imagemagick
-* **Programs:** kitty rofi dunst (with libnotify) ranger ncmpcpp mpd polybar papirus-icon-theme btop sddm (with qt5 qt5-quickcontrols2 qt5-svg) zsh (with oh-my-zsh) picom cava code neovim
-* **Screenshots:** xclip scrot ffcast slop
-* **Emoji Fonts:** noto-fonts noto-fonts-emoji noto-fonts-extra noto-fonts-cjk
-
-### Fonts
-* **Icons:** [Feather](https://github.com/AT-UI/feather-font/blob/master/src/fonts/feather.ttf)
-* **Interface Font:** [Open Sans](https://fonts.google.com/specimen/Open+Sans#standard-styles)
-* **Monospace Font:** [Roboto Mono](https://fonts.google.com/specimen/Roboto+Mono#standard-styles)
-* **Polybar Font:** [Iosevka Nerd Font](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Iosevka)
-
-## 🛠️ Installation
-
-It's recommended to install the dependencies manually, but if you have any issues with the manual installation, or just want to save time, use the installation script.
+|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v23/screenshots/1.png)|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)|
+|nemo & nvim & ranger|-|
+|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)|
+|-|i3lock-color|
+|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)|![](https://github.com/Keyitdev/screenshots/blob/master/dotfiles/v3/screenshots/1.png)|
+
+## Installation
+
+### Using install script
+
+Clone the repository
+```sh
+git clone -b v3 --depth 1 https://www.github.com/keyitdev/dotfiles.git
+cd dotfiles
+chmod +x install-on-arch.sh
+./install-on-arch.sh
+```
### Manual Installation
1. Clone this repository
```sh
- git clone -b v2 --depth 1 https://www.github.com/keyitdev/dotfiles.git
+ git clone -b v3 --depth 1 https://www.github.com/keyitdev/dotfiles.git
```
-2. Install an AUR helper (for example, yay in $HOME/.srcs)
+2. Install an AUR helper (for example, `yay` in `"$HOME"/.srcs`)
```sh
- mkdir -p $HOME/.srcs
- git clone https://aur.archlinux.org/yay.git $HOME/.srcs/yay
- (cd $HOME/.srcs/yay/ && makepkg -si )
+ git clone https://aur.archlinux.org/yay.git "$HOME"/.srcs/yay
+ cd "$HOME"/.srcs/yay/ && makepkg -si
```
-3. Install packages (see [Dependencies](https://github.com/keyitdev/dotfiles#-dependencies))
-
-4. Make Light executable
+3. Install dependencies.
```sh
- sudo chmod +s /usr/bin/light
+ yay -S --needed acpi alsa-utils base-devel curl git pulseaudio pulseaudio-alsa xorg xorg-xinit alacritty btop code dunst feh ffcast firefox i3-gaps i3lock-color i3-resurrect libnotify light mpc mpd ncmpcpp nemo neofetch neovim oh-my-zsh-git pacman-contrib papirus-icon-theme picom polybar ranger rofi scrot slop xclip zathura zathura-pdf-mupdf zsh
```
-5. Copy the files (Config folder to `$HOME/.config`, scripts folder to `/usr/local/bin` fonts to `/usr/share/fonts/`, wallpaper to `$HOME/Pictures/wallpapers` etc.)
-
-6. Install Oh-My-Zsh
+4. Create default directories.
```sh
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
+ mkdir -p "$HOME"/.config
+ mkdir -p /usr/local/bin
+ mkdir -p /usr/share/themes
+ mkdir -p "$HOME"/Pictures/wallpapers
```
-7. Set Zsh as the default shell
+5. Copy configs, scripts, fonts, gtk theme, wallpaper, vsc configs, zsh config.
```sh
- chsh -s /bin/zsh #user
- sudo chsh -s /bin/zsh #root
+ cp -r ./config/* "$HOME"/.config
+ sudo cp -r ./scripts/* /usr/local/bin
+ sudo cp -r ./fonts/* /usr/share/fonts
+ sudo cp -r ./tokyonight_gtk /usr/share/themes
+ cp -r ./wallpapers/* "$HOME"/Pictures/wallpapers
+ cp -r ./vsc/* "$HOME"/.vscode-oss/extensions
+ cp ./vsc/settings.json "$HOME"/.config/Code\ -\ OSS/User
+ sudo cp ./keyitdev.zsh-theme /usr/share/oh-my-zsh/custom/themes
+ cp ./.zshrc "$HOME"
```
-8. Install AstroVim
+6. Make Light executable, set zsh as default shell, update nvim extensions, refresh font cache.
```sh
- git clone --depth 10 https://github.com/kabinspace/AstroVim.git $HOME/.config/nvim
+ sudo chmod +s /usr/bin/light
+ chsh -s /bin/zsh
+ sudo chsh -s /bin/zsh
nvim +PackerSync
+ fc-cache -fv
```
-9. Install GTK Theme
- ```sh
- git clone https://github.com/EliverLara/ant.git
- sudo mv ./ant /usr/share/themes
- ```
-
-10. Install SDDM Astronaut Theme
+8. Install sddm flower theme.
```sh
- sudo git clone https://github.com/keyitdev/sddm-astronaut-theme.git
- sudo cp -fdr sddm-astronaut-theme /usr/share/sddm/themes/
- sudo cp /usr/share/sddm/themes/sddm-astronaut-theme/Fonts/* /usr/share/fonts/
- ```
-
-11. Edit `/etc/sddm.conf`
- ```
+ sudo git clone https://github.com/keyitdev/sddm-flower-theme.git /usr/share/sddm/themes/sddm-flower-theme
+ sudo cp /usr/share/sddm/themes/sddm-flower-theme/Fonts/* /usr/share/fonts/
echo "[Theme]
- Current=sddm-astronaut-theme" | sudo tee /etc/sddm.conf
- ```
-
-12. [Install the Firefox theme](https://color.firefox.com/?theme=XQAAAAKGAQAAAAAAAABBqYhm849SCia73laEGccwS-xMDPr5iE6kjVUHIsGRvs0-q94VqJzDmLds0B4GdTFd2KORmhozpED9fKKY97YpmeSVCJcSVB9rwzacQGHhaYG0HJIDBXLbAYUnjpkVXo5LFBoIgdJ4P7MSUoS9tEpFY9l-n8P03V91Kq7BmmKKrjKq9Hi2Jvfl7wBEWz3nWVxnwd4XKskPQ2G_JFlEZFH-xMtfBJ5OSQmfzox2bvycbCOGiDW99yOqfX2u-cPiqZwcshaSPxDSqShJ5_7OhZzPbP5x-BM)
-
-### Automated Install
-
-1. Clone the repository
+ Current=sddm-flower-theme" | sudo tee /etc/sddm.conf
```
- git clone -b v2 --depth 1 https://www.github.com/keyitdev/dotfiles.git
- cd dotfiles
- chmod +x install-on-arch.sh
- ./install-on-arch.sh
- ```
-
-2. [Install the Firefox theme](https://color.firefox.com/?theme=XQAAAAKGAQAAAAAAAABBqYhm849SCia73laEGccwS-xMDPr5iE6kjVUHIsGRvs0-q94VqJzDmLds0B4GdTFd2KORmhozpED9fKKY97YpmeSVCJcSVB9rwzacQGHhaYG0HJIDBXLbAYUnjpkVXo5LFBoIgdJ4P7MSUoS9tEpFY9l-n8P03V91Kq7BmmKKrjKq9Hi2Jvfl7wBEWz3nWVxnwd4XKskPQ2G_JFlEZFH-xMtfBJ5OSQmfzox2bvycbCOGiDW99yOqfX2u-cPiqZwcshaSPxDSqShJ5_7OhZzPbP5x-BM)
-## 🛠️ Uninstall
+## Cheat sheet
-1. Remove installed packages (see [Dependencies](https://github.com/keyitdev/dotfiles#-dependencies))
-2. Remove the AUR helper ( $HOME/.srcs)
-3. Uninstall Oh-My-Zsh ` uninstall_oh_my_zsh`
-4. Change the default shell back to bash
-```
-chsh -s /bin/bash
-sudo chsh -s /bin/bash
-```
-5. Remove installed fonts ($HOME/.local/share/fonts/ or /usr/share/fonts/)
-6. Remove installed scripts (/usr/local/bin)
-7. Remove this repository
-## 🔑 Keybinds
+
+Keybinds
-These are the basic keybinds. Read through the `i3` config for more keybinds.
+These are the basic keybinds. Read through the [i3](./config/i3/config) config for more keybinds.
| Keybind | Function |
| ---------------------- | ---------------------------------------- |
-| `Win + Enter` | Launch terminal (kitty) |
+| `Win + Enter` | Launch terminal (alacritty) |
| `Win + Shift + Q` | Close window |
| `Win + Q` | Stacking layout |
| `Win + W` | Tabbed layout |
| `Win + E` | Default layout |
-| `Win + A` | Rofi sidebar menu |
-| `Win + S` | Rofi compact menu |
-| `Win + D` | Rofi center menu |
+| `Win + R` | Resize mode |
+| `Win + T` | Restore layout |
+| `Win + Y` | Save layout |
+| `Win + A` | Rofi open windows menu |
+| `Win + S` | Rofi full menu |
+| `Win + D` | Rofi menu |
| `Win + Z` | Rofi bookmarks |
-| `Win + X` | Change theme |
-| `Win + C` | Use screenshot script |
+| `Win + X` | Rofi powermenu |
+| `Win + C` | Rofi screenshot script |
| `Win + G` | Gaps settings |
| `Win + V` | Set vertical orientation |
| `Win + H` | Set horizontal orientation |
@@ -192,43 +192,47 @@ These are the basic keybinds. Read through the `i3` config for more keybinds.
Note: `Win` refers to the `Super/Mod` key.
-## 🌈 Colors
+
+
+
+Colors
| Color | Hex code |
| ---------------------- | ---------------------------------------- |
-| background | #21222C |
+| background | #1b1b25 |
| background 2 | #282A36 |
-| background 3 | #343746 |
-| foreground | #F8F8F2 |
-| white | #FFFFFF |
-| black | #15121C |
-| red | #f07178 |
-| green | #c3e88d |
-| yellow | #ffcb6b |
-| blue | #82aaff |
-| purple | #c792ea |
-| cyan | #89ddff |
+| background 3 | #16161e |
+| border | #343746 |
+| foreground | #dedede |
+| white | #eeffff |
+| black | #15121c |
+| red | #cb5760 |
+| green | #999f63 |
+| yellow | #d4a067 |
+| blue | #6c90a8 |
+| purple | #776690 |
+| cyan | #528a9b |
| pink | #ffa8c5 |
-| orange | #dd864a |
+| orange | #c87c3e |
+
+
+
+## Support and Thankies
+
+You can support me simply by dropping a **star** on **[github]()** or giving a **subscription** on **[YouTube]()**.
-## ⚙️ Troubleshooting
+
-1. Polybar modules not working? : Try changing variables (For example in battery module from BAT1 to BAT0).
-3. Screen flashing black : Try changing picom config.
-4. Scripts not working : Maybe try to edit shebang.
-5. MPD not working : Check if any other program is using port 6600 (http://127.0.0.1:6600/).
+**Big thanks to:**
+[adi1090x](https://github.com/adi1090x),
+[Totoro](https://github.com/totoro-ghost).
-## ✨ Big thanks to
+Thanks to all contributors! :D
-These dotfiles includes some files from others rices. Original sources:
-* [Totoro](https://github.com/totoro-ghost) for [polybar frontend](https://github.com/totoro-ghost/dotfiles/tree/master/.config/polybar)
-* [Adi1090x](https://github.com/adi1090x) for [rofi backend](https://github.com/adi1090x/rofi)
-* [Alexander-Miller](https://github.com/Alexander-Miller) for [ncmpcpp config](https://github.com/Alexander-Miller/dotfiles/blob/master/.config/ncmpcpp/config)
-* [Axarva](https://github.com/Axarva/) for [arch install script](https://github.com/Axarva/dotfiles-2.0/blob/main/install-on-arch.sh)
-* [Ceuk](https://github.com/ceuk/) for [rofi screenshot script](https://github.com/ceuk/rofi-screenshot)
-* [Milosz](https://github.com/milosz) for [rofi-bookmarks](https://github.com/milosz/rofi-firefox-bookmarks)
-* [Unnat](https://github.com/UnnatShaneshwar) for [wallpaper](https://github.com/UnnatShaneshwar/OneDarkWallpapers/blob/main/11.png)
+## Contributions
-## 🪪 License
+Feel free to create issue or pull request.
+If you need any help, you can ask questions here on **[discussions](https://github.com/Keyitdev/dotfiles/discussions/categories/q-a)** or contact me on **[discord]()** / **[matrix]()**.
-Distributed under the [GPLv3+](https://www.gnu.org/licenses/gpl-3.0.html) License.
+Distributed under the **[GPLv3+](https://www.gnu.org/licenses/gpl-3.0.html) License**.
+Copyright (C) 2022 Keyitdev.
\ No newline at end of file
diff --git a/config/alacritty/alacritty.yml b/config/alacritty/alacritty.yml
new file mode 100644
index 0000000..a1ff425
--- /dev/null
+++ b/config/alacritty/alacritty.yml
@@ -0,0 +1,37 @@
+window:
+ padding:
+ x: 8
+ y: 8
+ opacity: 0.9
+
+font:
+ size: 7.5
+ normal:
+ family: Roboto mono
+ # style: medium
+
+colors:
+
+ primary:
+ background: '#1b1b25'
+ foreground: '#dedede'
+
+ normal:
+ black: '#15121c'
+ red: '#cb5760'
+ green: '#999f63'
+ yellow: '#d4a067'
+ blue: '#6c90a8'
+ magenta: '#776690'
+ cyan: '#528a9b'
+ white: '#eeffff'
+
+ bright:
+ black: '#727480'
+ red: '#cb5760'
+ green: '#999f63'
+ yellow: '#d4a067'
+ blue: '#6c90a8'
+ magenta: '#776690'
+ cyan: '#528a9b'
+ white: '#eeffff'
\ No newline at end of file
diff --git a/config/betterlockscreenrc b/config/betterlockscreenrc
deleted file mode 100755
index 5850a0e..0000000
--- a/config/betterlockscreenrc
+++ /dev/null
@@ -1,38 +0,0 @@
-# Config created by Keyitdev https://www.github.com/keyitdev/dotfiles
-# Copyright (C) 2022 Keyitdev
-# ~/.config/betterlockscreenrc
-
-# default options
-display_on=0
-span_image=false
-lock_timeout=300
-fx_list=(dim blur dimblur pixel dimpixel color)
-dim_level=40
-blur_level=1
-pixel_scale=10,1000
-solid_color=333333
-wallpaper_cmd="feh --bg-fill"
-# i3lockcolor_bin="i3lock-color" # Manually set command for i3lock-color
-
-# default theme
-loginbox=00000066
-loginshadow=00000000
-locktext="Type password to unlock"
-font="Roboto mono"
-ringcolor=ffffffff
-insidecolor=00000000
-separatorcolor=00000000
-ringvercolor=ffffffff
-insidevercolor=ffcb6bff
-ringwrongcolor=ffffffff
-insidewrongcolor=f07178ff
-timecolor=ffffffff
-time_format="%H:%M:%S"
-greetercolor=ffffffff
-layoutcolor=ffffffff
-keyhlcolor=f07178ff
-bshlcolor=f07178ff
-verifcolor=ffffffff
-wrongcolor=f07178ff
-modifcolor=f07178ff
-bgcolor=000000ff
\ No newline at end of file
diff --git a/config/cava/config b/config/cava/config
deleted file mode 100755
index 0b77d1a..0000000
--- a/config/cava/config
+++ /dev/null
@@ -1,164 +0,0 @@
-## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
-
-[general]
-
-# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
-; mode = normal
-
-# Accepts only non-negative values.
-framerate = 144
-
-# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
-# new as of 0.6.0 autosens of low values (dynamic range)
-# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
-; autosens = 1
-; overshoot = 20
-
-# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
-# 200 means double height. Accepts only non-negative values.
-; sensitivity = 100
-
-# The number of bars (0-200). 0 sets it to auto (fill up console).
-# Bars' width and space between bars in number of characters.
-; bars = 0
-bar_width = 1
-; bar_spacing = 1
-
-
-# Lower and higher cutoff frequencies for lowest and highest bars
-# the bandwidth of the visualizer.
-# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
-# Cava will automatically increase the higher cutoff if a too low band is specified.
-; lower_cutoff_freq = 50
-; higher_cutoff_freq = 10000
-
-
-# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
-# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
-; sleep_timer = 0
-
-
-[input]
-
-# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
-# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
-#
-# All input methods uses the same config variable 'source'
-# to define where it should get the audio.
-#
-# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
-# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
-#
-# For alsa 'source' will be the capture device.
-# For fifo 'source' will be the path to fifo-file.
-# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
-; method = pulse
-; source = auto
-
-; method = alsa
-; source = hw:Loopback,1
-
-; method = fifo
-; source = /tmp/mpd.fifo
-; sample_rate = 44100
-; sample_bits = 16
-
-; method = shmem
-; source = /squeezelite-AA:BB:CC:DD:EE:FF
-
-; method = portaudio
-; source = auto
-
-
-[output]
-
-# Output method. Can be 'ncurses', 'noncurses' or 'raw'.
-# 'noncurses' uses a custom framebuffer technique and draws only changes
-# from frame to frame. 'ncurses' is default if supported
-#
-# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
-# stream of the bar heights that can be used to send to other applications.
-# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
-; method = ncurses
-
-# Visual channels. Can be 'stereo' or 'mono'.
-# 'stereo' mirrors both channels with low frequencies in center.
-# 'mono' outputs left to right lowest to highest frequencies.
-# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
-; channels = stereo
-; mono_option = average
-
-# Raw output target. A fifo will be created if target does not exist.
-; raw_target = /dev/stdout
-
-# Raw data format. Can be 'binary' or 'ascii'.
-; data_format = binary
-
-# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
-; bit_format = 16bit
-
-# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
-; ascii_max_range = 1000
-
-# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
-# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
-; bar_delimiter = 59
-; frame_delimiter = 10
-
-
-
-[color]
-
-# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
-# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
-# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
-# if supported, ncurses mode will be forced on if user defined colors are used.
-# default is to keep current terminal color
-; background = default
-; foreground = default
-
-# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
-# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
-# You can define as many as 8 different colors. They range from bottom to top of screen
-; gradient = 1
-; gradient_count = 8
-; gradient_color_1 = '#59cc33'
-; gradient_color_2 = '#80cc33'
-; gradient_color_3 = '#a6cc33'
-; gradient_color_4 = '#cccc33'
-; gradient_color_5 = '#cca633'
-; gradient_color_6 = '#cc8033'
-; gradient_color_7 = '#cc5933'
-; gradient_color_8 = '#cc3333'
-
-
-
-[smoothing]
-
-# Percentage value for integral smoothing. Takes values from 0 - 100.
-# Higher values means smoother, but less precise. 0 to disable.
-; integral = 77
-
-# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
-; monstercat = 0
-; waves = 0
-
-# Set gravity percentage for "drop off". Higher values means bars will drop faster.
-# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
-; gravity = 100
-
-
-# In bar height, bars that would have been lower that this will not be drawn.
-; ignore = 0
-
-
-[eq]
-
-# This one is tricky. You can have as much keys as you want.
-# Remember to uncomment more then one key! More keys = more precision.
-# Look at readme.md on github for further explanations and examples.
-; 1 = 1 # bass
-; 2 = 1
-; 3 = 1 # midtone
-; 4 = 1
-; 5 = 1 # treble
diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc
index ef17b33..d3f2e12 100755
--- a/config/dunst/dunstrc
+++ b/config/dunst/dunstrc
@@ -3,433 +3,72 @@
# Copyright (C) 2022 Keyitdev
[global]
- ### Display ###
-
- # Which monitor should the notifications be displayed on.
monitor = 0
- # Display notification on focused monitor. Possible modes are:
- # mouse: follow mouse pointer
- # keyboard: follow window with keyboard focus
- # none: don't follow anything
- #
- # "keyboard" needs a window manager that exports the
- # _NET_ACTIVE_WINDOW property.
- # This should be the case for almost all modern window managers.
- #
- # If this option is set to mouse or keyboard, the monitor option
- # will be ignored.
follow = mouse
-
- ### Geometry ###
-
- # dynamic width from 0 to 300
- # width = (0, 300)
- # constant width of 300
width = (300,400)
-
- # The maximum height of a single notification, excluding the frame.
- height = 300
-
- # Position the notification in the top right corner
+ height = 250
origin = top-right
-
- # Offset from the origin
offset = 8x47
-
- # Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
-
- # Shrink window if it's smaller than the width. Will be ignored if
- # width is 0.
shrink = no
-
- # The transparency of the window. Range: [0; 100].
- # This option will only work if a compositing window manager is
- # present (e.g. xcompmgr, compiz, etc.).
transparency = 0
-
- # The height of the entire notification. If the height is smaller
- # than the font height and padding combined, it will be raised
- # to the font height and padding.
notification_height = 0
-
- # Draw a line of "separator_height" pixel height between two
- # notifications.
- # Set to 0 to disable.
separator_height = 2
-
- # Padding between text and separator.
padding = 12
-
- # Horizontal padding.
horizontal_padding = 12
-
- # Defines width in pixels of frame around the notification window.
- # Set to 0 to disable.
- frame_width = 4
-
- # Defines color of the frame around the notification window.
+ frame_width = 2
frame_color = "#343746"
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
separator_color = frame
-
- # Sort messages by urgency.
sort = yes
-
- # Don't remove messages, if the user is idle (no mouse or keyboard input)
- # for longer than idle_threshold seconds.
- # Set to 0 to disable.
- # A client can set the 'transient' hint to bypass this. See the rules
- # section for how to disable this if necessary
idle_threshold = 120
-
- ### Text ###
-
- font = Open sans 12
-
- # The spacing between lines. If the height is smaller than the
- # font height, it will get raised to the font height.
+ font = Roboto mono 12
line_height = 0
-
- # Possible values are:
- # full: Allow a small subset of html markup in notifications:
- # bold
- # italic
- # strikethrough
- # underline
- #
- # For a complete reference see
- # .
- #
- # strip: This setting is provided for compatibility with some broken
- # clients that send markup even though it's not enabled on the
- # server. Dunst will try to strip the markup but the parsing is
- # simplistic so using this option outside of matching rules for
- # specific applications *IS GREATLY DISCOURAGED*.
- #
- # no: Disable markup parsing, incoming notifications will be treated as
- # plain text. Dunst will not advertise that it has the body-markup
- # capability if this is set as a global setting.
- #
- # It's important to note that markup inside the format option will be parsed
- # regardless of what this is set to.
markup = full
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # %n progress value if set without any extra characters
- # %% Literal %
- # Markup is allowed
format = "%s\n%b"
-
- # Alignment of message text.
- # Possible values are "left", "center" and "right".
alignment = left
-
- # Vertical alignment of message text and icon.
- # Possible values are "top", "center" and "bottom".
vertical_alignment = center
-
- # Show age of message if message is older than show_age_threshold
- # seconds.
- # Set to -1 to disable.
show_age_threshold = 60
-
- # Split notifications into multiple lines if they don't fit into
- # geometry.
word_wrap = yes
-
- # When word_wrap is set to no, specify where to make an ellipsis in long lines.
- # Possible values are "start", "middle" and "end".
ellipsize = middle
-
- # Ignore newlines '\n' in notifications.
ignore_newline = no
-
- # Stack together notifications with the same content
- stack_duplicates = false
-
- # Hide the count of stacked notifications with the same content
+ stack_duplicates = true
hide_duplicate_count = false
-
- # Display indicators for URLs (U) and actions (A).
show_indicators = no
-
- ### Icons ###
-
- # Align icons left/right/off
icon_position = left
-
- # Scale small icons up to this size, set to 0 to disable. Helpful
- # for e.g. small files or high-dpi screens. In case of conflict,
- # max_icon_size takes precedence over this.
- min_icon_size = 0
-
- # Scale larger icons down to this size, set to 0 to disable
+ min_icon_size = 50
max_icon_size = 50
-
- # Paths to default icons.
icon_path = /usr/share/icons/Papirus/16x16/
-
- ### History ###
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
sticky_history = no
-
- # Maximum amount of notifications kept in history
history_length = 50
-
- ### Misc/Advanced ###
-
- # dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
-
- # Browser for opening urls in context menu.
browser = /usr/bin/sensible-browser
-
- # Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
-
- # Define the title of the windows spawned by dunst
title = Dunst
-
- # Define the class of the windows spawned by dunst
class = Dunst
-
- # Print a notification on startup.
- # This is mainly for error detection, since dbus (re-)starts dunst
- # automatically after a crash.
startup_notification = false
-
- # Manage dunst's desire for talking
- # Can be one of the following values:
- # crit: Critical features. Dunst aborts
- # warn: Only non-fatal warnings
- # mesg: Important Messages
- # info: all unimportant stuff
- # debug: all less than unimportant stuff
verbosity = mesg
-
- # Define the corner radius of the notification window
- # in pixel size. If the radius is 0, you have no rounded
- # corners.
- # The radius will be automatically lowered if it exceeds half of the
- # notification height to avoid clipping text and/or icons.
-
- # Ignore the dbus closeNotification message.
- # Useful to enforce the timeout set by dunst configuration. Without this
- # parameter, an application may close the notification sent before the
- # user defined timeout.
+ corner_radius = 20
ignore_dbusclose = false
-
- ### Legacy
-
- # Use the Xinerama extension instead of RandR for multi-monitor support.
- # This setting is provided for compatibility with older nVidia drivers that
- # do not support RandR and using it on systems that support RandR is highly
- # discouraged.
- #
- # By enabling this setting dunst will not be able to detect when a monitor
- # is connected or disconnected which might break follow mode if the screen
- # layout changes.
force_xinerama = false
-
- ### mouse
-
- # Defines list of actions for each mouse event
- # Possible values are:
- # * none: Don't do anything.
- # * do_action: If the notification has exactly one action, or one is marked as default,
- # invoke it. If there are multiple and no default, open the context menu.
- # * close_current: Close current notification.
- # * close_all: Close all notifications.
- # These values can be strung together for each mouse event, and
- # will be executed in sequence.
- mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
-
-# Experimental features that may or may not work correctly. Do not expect them
-# to have a consistent behaviour across releases.
[experimental]
- # Calculate the dpi to use on a per-monitor basis.
- # If this setting is enabled the Xft.dpi value will be ignored and instead
- # dunst will attempt to calculate an appropriate dpi value for each monitor
- # using the resolution and physical size. This might be useful in setups
- # where there are multiple screens with very different dpi values.
per_monitor_dpi = false
-
[shortcuts]
-
- # Shortcuts are specified as [modifier+][modifier+]...key
- # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
- # "mod3" and "mod4" (windows-key).
- # Xev might be helpful to find names for keys.
-
- # Close notification.
close = ctrl+space
-
- # Close all notifications.
close_all = ctrl+shift+space
-
- # Redisplay last message(s).
- # On the US keyboard layout "grave" is normally above TAB and left
- # of "1". Make sure this key actually exists on your keyboard layout,
- # e.g. check output of 'xmodmap -pke'
history = ctrl+grave
-
- # Context menu.
context = ctrl+shift+period
-
[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#21222C"
- foreground = "#F8F8F2"
+ background = "#1b1b25"
+ foreground = "#dedede"
timeout = 5
- # Icon for notifications with low urgency, uncomment to enable
- #icon = /path/to/icon
-
[urgency_normal]
- background = "#21222C"
- foreground = "#F8F8F2"
+ background = "#1b1b25"
+ foreground = "#dedede"
timeout = 5
- # Icon for notifications with normal urgency, uncomment to enable
- #icon = /path/to/icon
-
[urgency_critical]
- background = "#21222C"
- foreground = "#F8F8F2"
+ background = "#1b1b25"
+ foreground = "#dedede"
frame_color = "#f07178"
- timeout = 0
- # Icon for notifications with critical urgency, uncomment to enable
- #icon = /path/to/icon
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-#
-# Messages can be matched by
-# appname (discouraged, see desktop_entry)
-# body
-# category
-# desktop_entry
-# icon
-# match_transient
-# msg_urgency
-# stack_tag
-# summary
-#
-# and you can override the
-# background
-# foreground
-# format
-# frame_color
-# fullscreen
-# new_icon
-# set_stack_tag
-# set_transient
-# timeout
-# urgency
-#
-# Shell-like globbing will get expanded.
-#
-# Instead of the appname filter, it's recommended to use the desktop_entry filter.
-# GLib based applications export their desktop-entry name. In comparison to the appname,
-# the desktop-entry won't get localized.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: if you don't want a notification to be displayed, set the format
-# to "".
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-# Disable the transient hint so that idle_threshold cannot be bypassed from the
-# client
-#[transient_disable]
-# match_transient = yes
-# set_transient = no
-#
-# Make the handling of transient notifications more strict by making them not
-# be placed in history.
-#[transient_history_ignore]
-# match_transient = yes
-# history_ignore = yes
-
-# fullscreen values
-# show: show the notifications, regardless if there is a fullscreen window opened
-# delay: displays the new notification, if there is no fullscreen window active
-# If the notification is already drawn, it won't get undrawn.
-# pushback: same as delay, but when switching into fullscreen, the notification will get
-# withdrawn from screen again and will get delayed like a new notification
-#[fullscreen_delay_everything]
-# fullscreen = delay
-#[fullscreen_show_critical]
-# msg_urgency = critical
-# fullscreen = show
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# format = ""
-
-#[history-ignore]
-# # This notification will not be saved in history
-# summary = "foobar"
-# history_ignore = yes
-
-#[skip-display]
-# # This notification will not be displayed, but will be included in the history
-# summary = "foobar"
-# skip_display = yes
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-#[stack-volumes]
-# appname = "some_volume_notifiers"
-# set_stack_tag = "volume"
-#
-# vim: ft=cfg
\ No newline at end of file
+ timeout = 0
\ No newline at end of file
diff --git a/config/gtk-3.0/settings.ini b/config/gtk-3.0/settings.ini
index 3d6d188..de1dc26 100755
--- a/config/gtk-3.0/settings.ini
+++ b/config/gtk-3.0/settings.ini
@@ -1,5 +1,5 @@
[Settings]
gtk-icon-theme-name = Papirus
-gtk-theme-name = Dracula
+gtk-theme-name = tokyonight_gtk
gtk-font-name = Open sans 12
gtk-application-prefer-dark-theme = true
\ No newline at end of file
diff --git a/config/i3/config b/config/i3/config
index 7719640..a200081 100755
--- a/config/i3/config
+++ b/config/i3/config
@@ -13,9 +13,6 @@ font pango:Open sans 11
# run picom
exec_always --no-startup-id picom &
-# render wallpaper for lockscreen
-exec_always betterlockscreen -u ~/Pictures/wallpapers/lockscreen.png --display 1 --span &
-
# run mpd
exec_always --no-startup-id mpd &
@@ -23,7 +20,7 @@ exec_always --no-startup-id mpd &
exec_always --no-startup-id dunst &
# set wallpaper with fed
-exec_always feh --bg-scale $HOME/Pictures/wallpapers/current_blue.png
+exec_always feh --no-fehbg --bg-scale $HOME/Pictures/wallpapers/background.png
# launch polybar
exec_always --no-startup-id killall -q
@@ -41,7 +38,7 @@ exec --no-startup-id nm-applet
floating_modifier $mod
# start a terminal
-bindsym $mod+Return exec kitty
+bindsym $mod+Return exec alacritty
# kill focused window
bindsym $mod+Shift+q kill
@@ -84,6 +81,10 @@ bindsym $mod+q layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
+# save and restore layout with i3-resurrect
+bindsym $mod+t exec --no-startup-id i3-resurrect restore
+bindsym $mod+y exec --no-startup-id i3-resurrect save
+
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
@@ -91,7 +92,7 @@ bindsym $mod+Shift+space floating toggle
bindsym $mod+space focus mode_toggle
# run lockscreen
-bindsym $mod+i exec betterlockscreen -l
+bindsym $mod+i exec lock
# monitor settings
bindsym $mod+n exec xrandr --auto --output eDP-1 --mode 1920x1080 --right-of HDMI-1 && i3-msg restart &
@@ -111,38 +112,42 @@ bindsym $mod+b move workspace to output right
#bindsym $mod+d focus child
# run rofi programs
-bindsym $mod+a exec "rofi -show drun -no-default-config -config ~/.config/rofi/sidebar.rasi"
-bindsym $mod+d exec "rofi -show drun -no-default-config -config ~/.config/rofi/center.rasi"
-bindsym $mod+s exec "rofi -show drun -no-default-config -config ~/.config/rofi/compact.rasi"
-bindsym $mod+z exec "rofi -show -modi ':rofi-bookmarks' -no-default-config -config ~/.config/rofi/compact.rasi"
-bindsym $mod+x exec "theme"
+bindsym $mod+a exec "rofi -show window -no-default-config -config ~/.config/rofi/main.rasi"
+bindsym $mod+d exec "rofi -show drun -no-default-config -config ~/.config/rofi/main.rasi"
+bindsym $mod+s exec "rofi -show drun -no-default-config -config ~/.config/rofi/full_screen.rasi"
+bindsym $mod+z exec "rofi -show -modi ':rofi-bookmarks' -no-default-config -config ~/.config/rofi/main.rasi"
bindsym $mod+c exec "rofi-screenshot"
# take a screenshot
-bindsym Pause exec screenshot -crtf
-bindsym Print exec screenshot -cstf
+bindsym Pause exec screenshot -sa
+bindsym Print exec screenshot -sf
# brightness control
exec_always --no-startup-id light -I
-bindsym XF86MonBrightnessUp exec light -A 2 && light -O# increase screen brightness && brightness &
-bindsym XF86MonBrightnessDown exec light -U 2 && light -O# decrease screen brightness && brightness &
+bindsym XF86MonBrightnessUp exec light -A 2 && light -O && brightness &
+bindsym XF86MonBrightnessDown exec light -U 2 && light -O && brightness &
+
+# brightness control hdmi
+bindsym Ctrl+F7 exec brightness_hdmi down
+bindsym Ctrl+F8 exec brightness_hdmi up
# audio control
bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -D pulse sset Master 5%+ && volume &
bindsym XF86AudioLowerVolume exec --no-startup-id amixer -D pulse sset Master 5%- && volume &
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && mute &
-#bindsym XF86AudioMicMute exec --no-startup-id amixer -D pulse sset Master 5%+ && volume.sh &
+#bindsym XF86AudioMicMute exec --no-startup-id amixer -D pulse sset Master 5%+ && volume &
# turn off screen
-bindsym XF86ScreenSaver exec xset dpms force off
+bindsym XF86ScreenSaver exec xset dpms force off
# :)
-bindsym ctrl + F1 exec --no-startup-id kitty
+bindsym ctrl + F1 exec --no-startup-id alacritty
+bindsym ctrl + F5 exec --no-startup-id kitty
bindsym ctrl + F2 exec --no-startup-id dmenu_run
# toggle microphone
-bindsym ctrl + F3 exec amixer set Capture cap && dunstify -a "Microphone" "Microphone" "Microphone is now unmuted" -r 100 -i /usr/local/bin/icons/mic.svg
-bindsym ctrl + F4 exec amixer set Capture nocap && dunstify -a "Microphone" "Microphone" "Microphone is now muted" -r 100 -i /usr/local/bin/icons/mic-off.svg
+bindsym ctrl + F3 exec amixer set Capture nocap && dunstify -a "Microphone" "Microphone" "Microphone is muted" -r 100 -i /usr/local/bin/icons/mic-off.svg
+bindsym ctrl + F4 exec amixer set Capture cap && dunstify -a "Microphone" "Microphone" "Microphone is unmuted" -r 100 -i /usr/local/bin/icons/mic.svg
# toggle touchpad
bindsym ctrl + F9 exec xinput set-prop 15 "Device Enabled" 0 && dunstify -a "Touchpad" "Touchpad" "Touchpad is disabled" -r 100
@@ -186,8 +191,10 @@ bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
+
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
+
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
@@ -221,7 +228,7 @@ bindsym $mod+r mode "resize"
### BODERS ###
#border width
-default_border pixel 4
+default_border pixel 2
#border colors
client.focused #343746 #343746 #F8F8F2 #343746 #343746
diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf
deleted file mode 100755
index 5e01d54..0000000
--- a/config/kitty/kitty.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-# Documentation: https://sw.kovidgoyal.net/kitty/
-# Config created by Keyitdev https://www.github.com/keyitdev/dotfiles
-# Copyright (C) 2022 Keyitdev
-
-font_size 11.0
-font_family Roboto mono
-window_margin_width 5
-adjust_line_height 0
-
-background #21222C
-foreground #F8F8F2
-cursor #f07178
-
-#black
-color0 #15121C
-color8 #15121C
-#red
-color1 #f07178
-color9 #f07178
-#green
-color2 #c3e88d
-color10 #c3e88d
-#yellow
-color3 #ffcb6b
-color11 #ffcb6b
-#blue
-color4 #82aaff
-color12 #82aaff
-#purple
-color5 #c792ea
-color13 #c792ea
-#teal
-color6 #89ddff
-color14 #89ddff
-#gray
-color7 #eeffff
-color15 #eeffff
\ No newline at end of file
diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config
index e11e834..25f0d42 100755
--- a/config/ncmpcpp/config
+++ b/config/ncmpcpp/config
@@ -1,69 +1,67 @@
; Documentation: https://wiki.archlinux.org/title/ncmpcpp
-; Config created by Alexander-Miller https://github.com/Alexander-Miller
+; Config created by Aditya Shakya https://github.com/Alexander-Miller
; Config modified by Keyitdev https://www.github.com/keyitdev/dotfiles
-; Copyright (C) 2022 Keyitdev, Alexander-Miller
+; Copyright (C) 2022 Keyitdev, Aditya Shakya
-mpd_host = 127.0.0.1
-mpd_port = 6600
-mpd_music_dir = ~/Music
-mpd_connection_timeout = 5
-visualizer_data_source = /tmp/mpd.fifo
-visualizer_output_name = fifo output
-visualizer_in_stereo = yes
-visualizer_type = spectrum
-visualizer_color = blue, cyan, green, yellow, magenta, red
-visualizer_look = xs
-visualizer_fps = 60
-visualizer_autoscale = yes
-visualizer_spectrum_smooth_look = yes
-playlist_disable_highlight_delay = 3
-allow_for_physical_item_deletion = yes
-message_delay_time = 8
-song_list_format = $(red){%a}$(end) $(blue){%t}$(end) $R $(green){%b}$(end) $(magenta)({%l})$(end)
-song_status_format = {$2%a$2} {$3%b$3} {$5%t$5}
-song_library_format = %t
-song_window_title_format = {%a-%t}
-song_columns_list_format = (25)[red]{a} (44)[green]{t} (25)[blue]{b} $R(7)[magenta]{l}
-playlist_display_mode = columns
-browser_display_mode = columns
-titles_visibility = yes
-incremental_seeking = yes
-autocenter_mode = yes
-header_visibility = yes
-statusbar_visibility = yes
-cyclic_scrolling = yes
-display_bitrate = yes
-ignore_leading_the = no
-enable_window_title = yes
-progressbar_look = ▬▬▬
-user_interface = alternative
-alternative_header_first_line_format = {$b$2%a$9} {$5%t$9}
-alternative_header_second_line_format = {$3%b$9} {$4(%y)$9}
-alternative_ui_separator_color = blue
-playlist_separate_albums = no
-colors_enabled = yes
-empty_tag_color = blue
-header_window_color = white
-display_volume_level = yes
-state_line_color = cyan
-state_flags_color = magenta
-main_window_color = green
-color1 = white
-color2 = blue
-progressbar_color = black
-statusbar_color = cyan
-window_border_color = red
-active_window_border = red
-follow_now_playing_lyrics = yes
-clock_display_seconds = yes
-current_item_prefix = >
-current_item_suffix = $(end)
-current_item_inactive_column_prefix = >
-current_item_inactive_column_suffix = $(end)
-now_playing_prefix = $b
-now_playing_suffix = $/b
-selected_item_prefix = $(white)$b
-selected_item_suffix = $/b$(end)
-browser_playlist_prefix = "$2Playlist$9 "
-modified_item_prefix = ">> "
-execute_on_song_change = notify-send "Now Playing" "$(mpc current)"
\ No newline at end of file
+### Directories ###
+ncmpcpp_directory = ~/.config/ncmpcpp
+lyrics_directory = ~/.config/ncmpcpp/lyrics
+mpd_music_dir = ~/Music
+mpd_host = "localhost"
+mpd_port = "6600"
+mpd_crossfade_time = "2"
+
+### Behaviour ###
+message_delay_time = 1
+autocenter_mode = "yes"
+centered_cursor = "yes"
+ignore_leading_the = "yes"
+playlist_disable_highlight_delay = 2
+allow_for_physical_item_deletion = "no"
+
+### Visualizer ###
+visualizer_data_source = /tmp/mpd.fifo
+visualizer_output_name = "mpd_visualizer"
+visualizer_in_stereo = "yes"
+visualizer_look = ●●
+visualizer_type = "ellipse"
+
+### Appearance ###
+playlist_display_mode = "columns"
+browser_display_mode = "columns"
+colors_enabled = "yes"
+
+#user_interface = classic
+user_interface = alternative
+volume_color = "white"
+
+### Window ###
+song_window_title_format = "{%a - }{%t}|{%f}"
+statusbar_visibility = "no"
+header_visibility = "no"
+titles_visibility = "no"
+
+### Progress bar ###
+progressbar_look = "▂▂▂"
+progressbar_color = "black"
+progressbar_elapsed_color = "red"
+
+### Alternative UI ###
+alternative_ui_separator_color = "black"
+alternative_header_first_line_format = $b$5$/b $b$8{%t}|{%f}$/b $/b
+alternative_header_second_line_format = {$b{$2 %a$9}{ - $7 %b$9}}
+
+### Song list ###
+song_status_format = "$7%t"
+song_list_format = "$(blue){%a}$(end) $(red){%t}$(end)$(red)({%l})$(end)
+song_library_format = {{%a - %t} (%b)}|{%f}
+song_columns_list_format = "(49)[white]{tr}$C(5f)[red]{l}(50)[blue]{a}"
+
+### Colors ###
+main_window_color = "white"
+current_item_prefix = >>
+current_item_suffix = $(end)
+current_item_inactive_column_prefix = red
+current_item_inactive_column_suffix = red
+color1 = "white"
+color2 = "red"
\ No newline at end of file
diff --git a/config/neofetch/config.conf b/config/neofetch/config.conf
index b512286..e74bc7e 100755
--- a/config/neofetch/config.conf
+++ b/config/neofetch/config.conf
@@ -1,5 +1,6 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
+
print_info() {
info title
info underline
diff --git a/config/nvim/.luacheckrc b/config/nvim/.luacheckrc
new file mode 100644
index 0000000..00ce173
--- /dev/null
+++ b/config/nvim/.luacheckrc
@@ -0,0 +1,20 @@
+-- Global objects
+globals = {
+ "PACKER_BOOTSTRAP",
+ "astronvim",
+ "astronvim_installation",
+ "vim",
+ "C",
+ "packer_plugins",
+}
+
+-- Rerun tests only if their modification time changed
+cache = true
+
+-- Don't report unused self arguments of methods
+self = false
+
+ignore = {
+ "631", -- max_line_length
+ "212/_.*", -- unused argument, for vars with "_" prefix
+}
diff --git a/config/nvim/.stylua.toml b/config/nvim/.stylua.toml
new file mode 100644
index 0000000..df96b7b
--- /dev/null
+++ b/config/nvim/.stylua.toml
@@ -0,0 +1,6 @@
+column_width = 120
+line_endings = "Unix"
+indent_type = "Spaces"
+indent_width = 2
+quote_style = "AutoPreferDouble"
+no_call_parentheses = true
diff --git a/config/nvim/colors/default_theme.lua b/config/nvim/colors/default_theme.lua
new file mode 100644
index 0000000..c6fe0a2
--- /dev/null
+++ b/config/nvim/colors/default_theme.lua
@@ -0,0 +1,9 @@
+vim.g.colors_name = "default_theme"
+
+package.loaded["default_theme"] = nil
+package.loaded["default_theme.base"] = nil
+package.loaded["default_theme.treesitter"] = nil
+package.loaded["default_theme.lsp"] = nil
+package.loaded["default_theme.others"] = nil
+
+require "default_theme"
diff --git a/config/nvim/init.lua b/config/nvim/init.lua
new file mode 100644
index 0000000..3baa628
--- /dev/null
+++ b/config/nvim/init.lua
@@ -0,0 +1,21 @@
+local impatient_ok, impatient = pcall(require, "impatient")
+if impatient_ok then
+ impatient.enable_profile()
+end
+
+for _, source in ipairs {
+ "core.utils",
+ "core.options",
+ "core.plugins",
+ "core.autocmds",
+ "core.mappings",
+ "core.ui",
+ "configs.which-key-register",
+} do
+ local status_ok, fault = pcall(require, source)
+ if not status_ok then
+ vim.api.nvim_err_writeln("Failed to load " .. source .. "\n\n" .. fault)
+ end
+end
+
+astronvim.conditional_func(astronvim.user_plugin_opts("polish", nil, false))
diff --git a/config/nvim/lua/configs/Comment.lua b/config/nvim/lua/configs/Comment.lua
new file mode 100644
index 0000000..54f23e6
--- /dev/null
+++ b/config/nvim/lua/configs/Comment.lua
@@ -0,0 +1,19 @@
+local status_ok, Comment = pcall(require, "Comment")
+if status_ok then
+ local utils = require "Comment.utils"
+ Comment.setup(astronvim.user_plugin_opts("plugins.Comment", {
+ pre_hook = function(ctx)
+ local location = nil
+ if ctx.ctype == utils.ctype.block then
+ location = require("ts_context_commentstring.utils").get_cursor_location()
+ elseif ctx.cmotion == utils.cmotion.v or ctx.cmotion == utils.cmotion.V then
+ location = require("ts_context_commentstring.utils").get_visual_start_location()
+ end
+
+ return require("ts_context_commentstring.internal").calculate_commentstring {
+ key = ctx.ctype == utils.ctype.line and "__default" or "__multiline",
+ location = location,
+ }
+ end,
+ }))
+end
diff --git a/config/nvim/lua/configs/aerial.lua b/config/nvim/lua/configs/aerial.lua
new file mode 100644
index 0000000..9421661
--- /dev/null
+++ b/config/nvim/lua/configs/aerial.lua
@@ -0,0 +1,52 @@
+local status_ok, aerial = pcall(require, "aerial")
+if status_ok then
+ aerial.setup(astronvim.user_plugin_opts("plugins.aerial", {
+ close_behavior = "global",
+ backends = { "lsp", "treesitter", "markdown" },
+ min_width = 28,
+ show_guides = true,
+ filter_kind = false,
+ icons = {
+ Array = "",
+ Boolean = "⊨",
+ Class = "",
+ Constant = "",
+ Constructor = "",
+ Key = "",
+ Function = "",
+ Method = "ƒ",
+ Namespace = "",
+ Null = "NULL",
+ Number = "#",
+ Object = "⦿",
+ Property = "",
+ TypeParameter = "𝙏",
+ Variable = "",
+ Enum = "ℰ",
+ Package = "",
+ EnumMember = "",
+ File = "",
+ Module = "",
+ Field = "",
+ Interface = "ﰮ",
+ String = "𝓐",
+ Struct = "𝓢",
+ Event = "",
+ Operator = "+",
+ },
+ guides = {
+ mid_item = "├ ",
+ last_item = "└ ",
+ nested_top = "│ ",
+ whitespace = " ",
+ },
+ on_attach = function(bufnr)
+ -- Jump forwards/backwards with '{' and '}'
+ vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr, desc = "Jump backwards in Aerial" })
+ vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr, desc = "Jump forwards in Aerial" })
+ -- Jump up the tree with '[[' or ']]'
+ vim.keymap.set("n", "[[", "AerialPrevUp", { buffer = bufnr, desc = "Jump up and backwards in Aerial" })
+ vim.keymap.set("n", "]]", "AerialNextUp", { buffer = bufnr, desc = "Jump up and forwards in Aerial" })
+ end,
+ }))
+end
diff --git a/config/nvim/lua/configs/alpha.lua b/config/nvim/lua/configs/alpha.lua
new file mode 100644
index 0000000..0116550
--- /dev/null
+++ b/config/nvim/lua/configs/alpha.lua
@@ -0,0 +1,40 @@
+local status_ok, alpha = pcall(require, "alpha")
+if status_ok then
+ local alpha_button = astronvim.alpha_button
+ alpha.setup(astronvim.user_plugin_opts("plugins.alpha", {
+ layout = {
+ { type = "padding", val = vim.fn.max { 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) } },
+ {
+ type = "text",
+ val = astronvim.user_plugin_opts("header", {
+ " █████ ███████ ████████ ██████ ██████",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "███████ ███████ ██ ██████ ██ ██",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "██ ██ ███████ ██ ██ ██ ██████",
+ " ",
+ " ███ ██ ██ ██ ██ ███ ███",
+ " ████ ██ ██ ██ ██ ████ ████",
+ " ██ ██ ██ ██ ██ ██ ██ ████ ██",
+ " ██ ██ ██ ██ ██ ██ ██ ██ ██",
+ " ██ ████ ████ ██ ██ ██",
+ }, false),
+ opts = { position = "center", hl = "DashboardHeader" },
+ },
+ { type = "padding", val = 5 },
+ {
+ type = "group",
+ val = {
+ alpha_button("LDR f f", " Find File "),
+ alpha_button("LDR f o", " Recents "),
+ alpha_button("LDR f w", " Find Word "),
+ alpha_button("LDR f n", " New File "),
+ alpha_button("LDR f m", " Bookmarks "),
+ alpha_button("LDR S l", " Last Session "),
+ },
+ opts = { spacing = 1 },
+ },
+ },
+ opts = {},
+ }))
+end
diff --git a/config/nvim/lua/configs/autopairs.lua b/config/nvim/lua/configs/autopairs.lua
new file mode 100644
index 0000000..712b688
--- /dev/null
+++ b/config/nvim/lua/configs/autopairs.lua
@@ -0,0 +1,33 @@
+local status_ok, npairs = pcall(require, "nvim-autopairs")
+if status_ok then
+ npairs.setup(astronvim.user_plugin_opts("plugins.nvim-autopairs", {
+ check_ts = true,
+ ts_config = {
+ lua = { "string", "source" },
+ javascript = { "string", "template_string" },
+ java = false,
+ },
+ disable_filetype = { "TelescopePrompt", "spectre_panel" },
+ fast_wrap = {
+ map = "",
+ chars = { "{", "[", "(", '"', "'" },
+ pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
+ offset = 0,
+ end_key = "$",
+ keys = "qwertyuiopzxcvbnmasdfghjkl",
+ check_comma = true,
+ highlight = "PmenuSel",
+ highlight_grey = "LineNr",
+ },
+ }))
+
+ local rules = astronvim.user_plugin_opts("nvim-autopairs").add_rules
+ if vim.tbl_contains({ "function", "table" }, type(rules)) then
+ npairs.add_rules(type(rules) == "function" and rules(npairs) or rules)
+ end
+
+ local cmp_status_ok, cmp = pcall(require, "cmp")
+ if cmp_status_ok then
+ cmp.event:on("confirm_done", require("nvim-autopairs.completion.cmp").on_confirm_done { map_char = { tex = "" } })
+ end
+end
diff --git a/config/nvim/lua/configs/better_escape.lua b/config/nvim/lua/configs/better_escape.lua
new file mode 100644
index 0000000..72d9a0a
--- /dev/null
+++ b/config/nvim/lua/configs/better_escape.lua
@@ -0,0 +1,4 @@
+local status_ok, better_escape = pcall(require, "better_escape")
+if status_ok then
+ better_escape.setup(astronvim.user_plugin_opts "plugins.better_escape")
+end
diff --git a/config/nvim/lua/configs/bufferline.lua b/config/nvim/lua/configs/bufferline.lua
new file mode 100644
index 0000000..671e00b
--- /dev/null
+++ b/config/nvim/lua/configs/bufferline.lua
@@ -0,0 +1,19 @@
+local status_ok, bufferline = pcall(require, "bufferline")
+if status_ok then
+ bufferline.setup(astronvim.user_plugin_opts("plugins.bufferline", {
+ options = {
+ offsets = {
+ { filetype = "NvimTree", text = "", padding = 1 },
+ { filetype = "neo-tree", text = "", padding = 1 },
+ { filetype = "Outline", text = "", padding = 1 },
+ },
+ buffer_close_icon = "",
+ modified_icon = "",
+ close_icon = "",
+ max_name_length = 14,
+ max_prefix_length = 13,
+ tab_size = 20,
+ separator_style = "thin",
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/cinnamon.lua b/config/nvim/lua/configs/cinnamon.lua
new file mode 100644
index 0000000..c632d7d
--- /dev/null
+++ b/config/nvim/lua/configs/cinnamon.lua
@@ -0,0 +1,4 @@
+local status_ok, cinnamon = pcall(require, "cinnamon")
+if status_ok then
+ cinnamon.setup(astronvim.user_plugin_opts("plugins.cinnamon", {}))
+end
diff --git a/config/nvim/lua/configs/cmp.lua b/config/nvim/lua/configs/cmp.lua
new file mode 100644
index 0000000..e180325
--- /dev/null
+++ b/config/nvim/lua/configs/cmp.lua
@@ -0,0 +1,119 @@
+local cmp_status_ok, cmp = pcall(require, "cmp")
+local snip_status_ok, luasnip = pcall(require, "luasnip")
+if cmp_status_ok and snip_status_ok then
+ local setup = cmp.setup
+ local kind_icons = {
+ Text = "",
+ Method = "",
+ Function = "",
+ Constructor = "",
+ Field = "ﰠ",
+ Variable = "",
+ Class = "",
+ Interface = "",
+ Module = "",
+ Property = "",
+ Unit = "",
+ Value = "",
+ Enum = "",
+ Keyword = "",
+ Snippet = "",
+ Color = "",
+ File = "",
+ Reference = "",
+ Folder = "",
+ EnumMember = "",
+ Constant = "",
+ Struct = "פּ",
+ Event = "",
+ Operator = "",
+ TypeParameter = "",
+ }
+
+ local function has_words_before()
+ local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+ return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil
+ end
+
+ setup(astronvim.user_plugin_opts("plugins.cmp", {
+ preselect = cmp.PreselectMode.None,
+ formatting = {
+ fields = { "kind", "abbr", "menu" },
+ format = function(_, vim_item)
+ vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
+ return vim_item
+ end,
+ },
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ duplicates = {
+ nvim_lsp = 1,
+ luasnip = 1,
+ cmp_tabnine = 1,
+ buffer = 1,
+ path = 1,
+ },
+ confirm_opts = {
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = false,
+ },
+ window = {
+ documentation = {
+ border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
+ },
+ },
+ mapping = {
+ [""] = cmp.mapping.select_prev_item(),
+ [""] = cmp.mapping.select_next_item(),
+ [""] = cmp.mapping.select_prev_item(),
+ [""] = cmp.mapping.select_next_item(),
+ [""] = cmp.mapping.select_prev_item(),
+ [""] = cmp.mapping.select_next_item(),
+ [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
+ [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
+ [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
+ [""] = cmp.config.disable,
+ [""] = cmp.mapping {
+ i = cmp.mapping.abort(),
+ c = cmp.mapping.close(),
+ },
+ [""] = cmp.mapping.confirm { select = false },
+ [""] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expandable() then
+ luasnip.expand()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ elseif has_words_before() then
+ cmp.complete()
+ else
+ fallback()
+ end
+ end, {
+ "i",
+ "s",
+ }),
+ [""] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, {
+ "i",
+ "s",
+ }),
+ },
+ }))
+ for setup_opt, setup_table in pairs(astronvim.user_plugin_opts("cmp.setup", {})) do
+ for pattern, options in pairs(setup_table) do
+ setup[setup_opt](pattern, options)
+ end
+ end
+end
diff --git a/config/nvim/lua/configs/colorizer.lua b/config/nvim/lua/configs/colorizer.lua
new file mode 100644
index 0000000..00ef111
--- /dev/null
+++ b/config/nvim/lua/configs/colorizer.lua
@@ -0,0 +1,18 @@
+local status_ok, colorizer = pcall(require, "colorizer")
+if status_ok then
+ local colorizer_opts = astronvim.user_plugin_opts("plugins.colorizer", {
+ { "*" },
+ {
+ RGB = true, -- #RGB hex codes
+ RRGGBB = true, -- #RRGGBB hex codes
+ names = false, -- "Name" codes like Blue
+ RRGGBBAA = false, -- #RRGGBBAA hex codes
+ rgb_fn = false, -- CSS rgb() and rgba() functions
+ hsl_fn = false, -- CSS hsl() and hsla() functions
+ css = false, -- Enable all css features: rgb_fn, hsl_fn, names, RGB, RRGGBB
+ css_fn = false, -- Enable all CSS *functions*: rgb_fn, hsl_fn
+ mode = "background", -- Set the display mode
+ },
+ })
+ colorizer.setup(colorizer_opts[1], colorizer_opts[2])
+end
diff --git a/config/nvim/lua/configs/feline.lua b/config/nvim/lua/configs/feline.lua
new file mode 100644
index 0000000..13b6fb6
--- /dev/null
+++ b/config/nvim/lua/configs/feline.lua
@@ -0,0 +1,46 @@
+local status_ok, feline = pcall(require, "feline")
+if status_ok then
+ local C = require "default_theme.colors"
+ local hl = require("core.status").hl
+ local provider = require("core.status").provider
+ local conditional = require("core.status").conditional
+ -- stylua: ignore
+ feline.setup(astronvim.user_plugin_opts("plugins.feline", {
+ disable = { filetypes = { "^NvimTree$", "^neo%-tree$", "^dashboard$", "^Outline$", "^aerial$" } },
+ theme = hl.group("StatusLine", { fg = C.fg, bg = C.bg_1 }),
+ components = {
+ active = {
+ {
+ { provider = provider.spacer(), hl = hl.mode() },
+ { provider = provider.spacer(2) },
+ { provider = "git_branch", hl = hl.fg("Conditional", { fg = C.purple_1, style = "bold" }), icon = " " },
+ { provider = provider.spacer(3), enabled = conditional.git_available },
+ { provider = { name = "file_type", opts = { filetype_icon = true, case = "lowercase" } }, enabled = conditional.has_filetype },
+ { provider = provider.spacer(2), enabled = conditional.has_filetype },
+ { provider = "git_diff_added", hl = hl.fg("GitSignsAdd", { fg = C.green }), icon = " " },
+ { provider = "git_diff_changed", hl = hl.fg("GitSignsChange", { fg = C.orange_1 }), icon = " 柳" },
+ { provider = "git_diff_removed", hl = hl.fg("GitSignsDelete", { fg = C.red_1 }), icon = " " },
+ { provider = provider.spacer(2), enabled = conditional.git_changed },
+ { provider = "diagnostic_errors", hl = hl.fg("DiagnosticError", { fg = C.red_1 }), icon = " " },
+ { provider = "diagnostic_warnings", hl = hl.fg("DiagnosticWarn", { fg = C.orange_1 }), icon = " " },
+ { provider = "diagnostic_info", hl = hl.fg("DiagnosticInfo", { fg = C.white_2 }), icon = " " },
+ { provider = "diagnostic_hints", hl = hl.fg("DiagnosticHint", { fg = C.yellow_1 }), icon = " " },
+ },
+ {
+ { provider = provider.lsp_progress, enabled = conditional.bar_width() },
+ { provider = provider.lsp_client_names(true), short_provider = provider.lsp_client_names(), enabled = conditional.bar_width(), icon = " " },
+ { provider = provider.spacer(2), enabled = conditional.bar_width() },
+ { provider = provider.treesitter_status, enabled = conditional.bar_width(), hl = hl.fg("GitSignsAdd", { fg = C.green }) },
+ { provider = provider.spacer(2) },
+ { provider = "position" },
+ { provider = provider.spacer(2) },
+ { provider = "line_percentage" },
+ { provider = provider.spacer() },
+ { provider = "scroll_bar", hl = hl.fg("TypeDef", { fg = C.yellow }) },
+ { provider = provider.spacer(2) },
+ { provider = provider.spacer(), hl = hl.mode() },
+ },
+ },
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/gitsigns.lua b/config/nvim/lua/configs/gitsigns.lua
new file mode 100644
index 0000000..1b4a914
--- /dev/null
+++ b/config/nvim/lua/configs/gitsigns.lua
@@ -0,0 +1,12 @@
+local status_ok, gitsigns = pcall(require, "gitsigns")
+if status_ok then
+ gitsigns.setup(astronvim.user_plugin_opts("plugins.gitsigns", {
+ signs = {
+ add = { text = "▎" },
+ change = { text = "▎" },
+ delete = { text = "▎" },
+ topdelete = { text = "契" },
+ changedelete = { text = "▎" },
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/icons.lua b/config/nvim/lua/configs/icons.lua
new file mode 100644
index 0000000..75da15d
--- /dev/null
+++ b/config/nvim/lua/configs/icons.lua
@@ -0,0 +1,17 @@
+local status_ok, icons = pcall(require, "nvim-web-devicons")
+if status_ok then
+ icons.set_icon(astronvim.user_plugin_opts("plugins.nvim-web-devicons", {
+ deb = { icon = "", name = "Deb" },
+ lock = { icon = "", name = "Lock" },
+ mp3 = { icon = "", name = "Mp3" },
+ mp4 = { icon = "", name = "Mp4" },
+ out = { icon = "", name = "Out" },
+ ["robots.txt"] = { icon = "ﮧ", name = "Robots" },
+ ttf = { icon = "", name = "TrueTypeFont" },
+ rpm = { icon = "", name = "Rpm" },
+ woff = { icon = "", name = "WebOpenFontFormat" },
+ woff2 = { icon = "", name = "WebOpenFontFormat2" },
+ xz = { icon = "", name = "Xz" },
+ zip = { icon = "", name = "Zip" },
+ }))
+end
diff --git a/config/nvim/lua/configs/indent-line.lua b/config/nvim/lua/configs/indent-line.lua
new file mode 100644
index 0000000..b59e4a6
--- /dev/null
+++ b/config/nvim/lua/configs/indent-line.lua
@@ -0,0 +1,50 @@
+local status_ok, indent_blankline = pcall(require, "indent_blankline")
+if status_ok then
+ indent_blankline.setup(astronvim.user_plugin_opts("plugins.indent_blankline", {
+ buftype_exclude = {
+ "nofile",
+ "terminal",
+ "lsp-installer",
+ "lspinfo",
+ },
+ filetype_exclude = {
+ "help",
+ "startify",
+ "aerial",
+ "alpha",
+ "dashboard",
+ "packer",
+ "neogitstatus",
+ "NvimTree",
+ "neo-tree",
+ "Trouble",
+ },
+ context_patterns = {
+ "class",
+ "return",
+ "function",
+ "method",
+ "^if",
+ "^while",
+ "jsx_element",
+ "^for",
+ "^object",
+ "^table",
+ "block",
+ "arguments",
+ "if_statement",
+ "else_clause",
+ "jsx_element",
+ "jsx_self_closing_element",
+ "try_statement",
+ "catch_clause",
+ "import_statement",
+ "operation_type",
+ },
+ show_trailing_blankline_indent = false,
+ use_treesitter = true,
+ char = "▏",
+ context_char = "▏",
+ show_current_context = true,
+ }))
+end
diff --git a/config/nvim/lua/configs/indent-o-matic.lua b/config/nvim/lua/configs/indent-o-matic.lua
new file mode 100644
index 0000000..f779ff5
--- /dev/null
+++ b/config/nvim/lua/configs/indent-o-matic.lua
@@ -0,0 +1,4 @@
+local status_ok, indent_o_matic = pcall(require, "indent-o-matic")
+if status_ok then
+ indent_o_matic.setup(astronvim.user_plugin_opts "plugins.indent-o-matic")
+end
diff --git a/config/nvim/lua/configs/lsp/handlers.lua b/config/nvim/lua/configs/lsp/handlers.lua
new file mode 100644
index 0000000..8033e0e
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/handlers.lua
@@ -0,0 +1,167 @@
+astronvim.lsp = {}
+local user_plugin_opts = astronvim.user_plugin_opts
+local conditional_func = astronvim.conditional_func
+
+local function lsp_highlight_document(client)
+ if client.resolved_capabilities.document_highlight then
+ vim.api.nvim_create_augroup("lsp_document_highlight", { clear = true })
+ vim.api.nvim_create_autocmd("CursorHold", {
+ group = "lsp_document_highlight",
+ pattern = "",
+ callback = vim.lsp.buf.document_highlight,
+ })
+ vim.api.nvim_create_autocmd("CursorMoved", {
+ group = "lsp_document_highlight",
+ pattern = "",
+ callback = vim.lsp.buf.clear_references,
+ })
+ end
+end
+
+astronvim.lsp.on_attach = function(client, bufnr)
+ astronvim.set_mappings(
+ user_plugin_opts("lsp.mappings", {
+ n = {
+ ["K"] = {
+ function()
+ vim.lsp.buf.hover()
+ end,
+ desc = "Hover symbol details",
+ buffer = bufnr,
+ },
+ ["la"] = {
+ function()
+ vim.lsp.buf.code_action()
+ end,
+ desc = "LSP code action",
+ buffer = bufnr,
+ },
+ ["lf"] = {
+ function()
+ vim.lsp.buf.formatting_sync()
+ end,
+ desc = "Format code",
+ buffer = bufnr,
+ },
+ ["lh"] = {
+ function()
+ vim.lsp.buf.signature_help()
+ end,
+ desc = "Signature help",
+ buffer = bufnr,
+ },
+ ["lr"] = {
+ function()
+ vim.lsp.buf.rename()
+ end,
+ desc = "Rename current symbol",
+ buffer = bufnr,
+ },
+ ["gD"] = {
+ function()
+ vim.lsp.buf.declaration()
+ end,
+ desc = "Declaration of current symbol",
+ buffer = bufnr,
+ },
+ ["gI"] = {
+ function()
+ vim.lsp.buf.implementation()
+ end,
+ desc = "Implementation of current symbol",
+ buffer = bufnr,
+ },
+ ["gd"] = {
+ function()
+ vim.lsp.buf.definition()
+ end,
+ desc = "Show the definition of current symbol",
+ buffer = bufnr,
+ },
+ ["gr"] = {
+ function()
+ vim.lsp.buf.references()
+ end,
+ desc = "References of current symbol",
+ buffer = bufnr,
+ },
+ ["ld"] = {
+ function()
+ vim.diagnostic.open_float()
+ end,
+ desc = "Hover diagnostics",
+ buffer = bufnr,
+ },
+ ["[d"] = {
+ function()
+ vim.diagnostic.goto_prev()
+ end,
+ desc = "Previous diagnostic",
+ buffer = bufnr,
+ },
+ ["]d"] = {
+ function()
+ vim.diagnostic.goto_next()
+ end,
+ desc = "Next diagnostic",
+ buffer = bufnr,
+ },
+ ["gl"] = {
+ function()
+ vim.diagnostic.open_float()
+ end,
+ desc = "Hover diagnostics",
+ buffer = bufnr,
+ },
+ },
+ }),
+ { buffer = bufnr }
+ )
+
+ vim.api.nvim_buf_create_user_command(bufnr, "Format", function()
+ vim.lsp.buf.formatting()
+ end, { desc = "Format file with LSP" })
+
+ local on_attach_override = user_plugin_opts("lsp.on_attach", nil, false)
+ local aerial_avail, aerial = pcall(require, "aerial")
+ conditional_func(on_attach_override, true, client, bufnr)
+ conditional_func(aerial.on_attach, aerial_avail, client, bufnr)
+ lsp_highlight_document(client)
+end
+
+astronvim.lsp.capabilities = vim.lsp.protocol.make_client_capabilities()
+astronvim.lsp.capabilities.textDocument.completion.completionItem.documentationFormat = { "markdown", "plaintext" }
+astronvim.lsp.capabilities.textDocument.completion.completionItem.snippetSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.preselectSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.insertReplaceSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.labelDetailsSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.deprecatedSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.commitCharactersSupport = true
+astronvim.lsp.capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } }
+astronvim.lsp.capabilities.textDocument.completion.completionItem.resolveSupport = {
+ properties = { "documentation", "detail", "additionalTextEdits" },
+}
+
+function astronvim.lsp.server_settings(server_name)
+ local server = require("lspconfig")[server_name]
+ local opts = user_plugin_opts(
+ "lsp.server-settings." .. server_name,
+ user_plugin_opts("lsp.server-settings." .. server_name, {
+ capabilities = vim.tbl_deep_extend("force", astronvim.lsp.capabilities, server.capabilities or {}),
+ }, true, "configs")
+ )
+ local old_on_attach = server.on_attach
+ local user_on_attach = opts.on_attach
+ opts.on_attach = function(client, bufnr)
+ conditional_func(old_on_attach, true, client, bufnr)
+ astronvim.lsp.on_attach(client, bufnr)
+ conditional_func(user_on_attach, true, client, bufnr)
+ end
+ return opts
+end
+
+function astronvim.lsp.disable_formatting(client)
+ client.resolved_capabilities.document_formatting = false
+end
+
+return astronvim.lsp
diff --git a/config/nvim/lua/configs/lsp/init.lua b/config/nvim/lua/configs/lsp/init.lua
new file mode 100644
index 0000000..90075d3
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/init.lua
@@ -0,0 +1,55 @@
+local status_ok, lspconfig = pcall(require, "lspconfig")
+if status_ok then
+ require "configs.lsp.handlers"
+ local insert = table.insert
+ local tbl_contains = vim.tbl_contains
+ local sign_define = vim.fn.sign_define
+ local user_plugin_opts = astronvim.user_plugin_opts
+ local user_registration = user_plugin_opts("lsp.server_registration", nil, false)
+
+ local signs = {
+ { name = "DiagnosticSignError", text = "" },
+ { name = "DiagnosticSignWarn", text = "" },
+ { name = "DiagnosticSignHint", text = "" },
+ { name = "DiagnosticSignInfo", text = "" },
+ }
+ for _, sign in ipairs(signs) do
+ sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
+ end
+ vim.diagnostic.config(user_plugin_opts("diagnostics", {
+ virtual_text = true,
+ signs = { active = signs },
+ update_in_insert = true,
+ underline = true,
+ severity_sort = true,
+ float = {
+ focusable = false,
+ style = "minimal",
+ border = "rounded",
+ source = "always",
+ header = "",
+ prefix = "",
+ },
+ }))
+ vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" })
+ vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" })
+
+ local servers = user_plugin_opts "lsp.servers"
+ local skip_setup = user_plugin_opts "lsp.skip_setup"
+ local installer_avail, lsp_installer = pcall(require, "nvim-lsp-installer")
+ if installer_avail then
+ for _, server in ipairs(lsp_installer.get_installed_servers()) do
+ insert(servers, server.name)
+ end
+ end
+ for _, server in ipairs(servers) do
+ if not tbl_contains(skip_setup, server) then
+ local opts = astronvim.lsp.server_settings(server)
+ if type(user_registration) == "function" then
+ user_registration(server, opts)
+ else
+ lspconfig[server].setup(opts)
+ end
+ end
+ end
+end
diff --git a/config/nvim/lua/configs/lsp/server-settings/html.lua b/config/nvim/lua/configs/lsp/server-settings/html.lua
new file mode 100644
index 0000000..1c6b4d5
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/html.lua
@@ -0,0 +1 @@
+return { on_attach = astronvim.lsp.disable_formatting }
diff --git a/config/nvim/lua/configs/lsp/server-settings/jsonls.lua b/config/nvim/lua/configs/lsp/server-settings/jsonls.lua
new file mode 100644
index 0000000..b8d05f4
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/jsonls.lua
@@ -0,0 +1,17 @@
+return {
+ on_attach = astronvim.lsp.disable_formatting,
+ settings = {
+ json = {
+ schemas = require("schemastore").json.schemas(),
+ },
+ },
+ setup = {
+ commands = {
+ Format = {
+ function()
+ vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
+ end,
+ },
+ },
+ },
+}
diff --git a/config/nvim/lua/configs/lsp/server-settings/pyright.lua b/config/nvim/lua/configs/lsp/server-settings/pyright.lua
new file mode 100644
index 0000000..c2a518d
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/pyright.lua
@@ -0,0 +1,9 @@
+return {
+ settings = {
+ python = {
+ analysis = {
+ typeCheckingMode = "off",
+ },
+ },
+ },
+}
diff --git a/config/nvim/lua/configs/lsp/server-settings/rust_analyzer.lua b/config/nvim/lua/configs/lsp/server-settings/rust_analyzer.lua
new file mode 100644
index 0000000..f9b89a9
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/rust_analyzer.lua
@@ -0,0 +1,15 @@
+return {
+ settings = {
+ ["rust-analyzer"] = {
+ cargo = {
+ loadOutDirsFromCheck = true,
+ },
+ checkOnSave = {
+ command = "clippy",
+ },
+ experimental = {
+ procAttrMacros = true,
+ },
+ },
+ },
+}
diff --git a/config/nvim/lua/configs/lsp/server-settings/sumneko_lua.lua b/config/nvim/lua/configs/lsp/server-settings/sumneko_lua.lua
new file mode 100644
index 0000000..825a9df
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/sumneko_lua.lua
@@ -0,0 +1,16 @@
+return {
+ on_attach = astronvim.lsp.disable_formatting,
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = { "vim" },
+ },
+ workspace = {
+ library = {
+ [vim.fn.expand "$VIMRUNTIME/lua"] = true,
+ [astronvim.install.home .. "/lua"] = true,
+ },
+ },
+ },
+ },
+}
diff --git a/config/nvim/lua/configs/lsp/server-settings/tsserver.lua b/config/nvim/lua/configs/lsp/server-settings/tsserver.lua
new file mode 100644
index 0000000..1c6b4d5
--- /dev/null
+++ b/config/nvim/lua/configs/lsp/server-settings/tsserver.lua
@@ -0,0 +1 @@
+return { on_attach = astronvim.lsp.disable_formatting }
diff --git a/config/nvim/lua/configs/luasnip.lua b/config/nvim/lua/configs/luasnip.lua
new file mode 100644
index 0000000..38a4b60
--- /dev/null
+++ b/config/nvim/lua/configs/luasnip.lua
@@ -0,0 +1,16 @@
+local user_settings = astronvim.user_plugin_opts "luasnip"
+local loader_avail, loader = pcall(require, "luasnip/loaders/from_vscode")
+if loader_avail then
+ if user_settings.vscode_snippet_paths ~= nil then
+ loader.lazy_load { paths = user_settings.vscode_snippet_paths }
+ end
+ loader.lazy_load()
+end
+local luasnip_avail, luasnip = pcall(require, "luasnip")
+if luasnip_avail then
+ if type(user_settings.filetype_extend) == "table" then
+ for filetype, snippets in pairs(user_settings.filetype_extend) do
+ luasnip.filetype_extend(filetype, snippets)
+ end
+ end
+end
diff --git a/config/nvim/lua/configs/neo-tree.lua b/config/nvim/lua/configs/neo-tree.lua
new file mode 100644
index 0000000..913460e
--- /dev/null
+++ b/config/nvim/lua/configs/neo-tree.lua
@@ -0,0 +1,70 @@
+local status_ok, neotree = pcall(require, "neo-tree")
+if status_ok then
+ neotree.setup(astronvim.user_plugin_opts("plugins.neo-tree", {
+ close_if_last_window = true,
+ popup_border_style = "rounded",
+ enable_diagnostics = false,
+ default_component_configs = {
+ indent = {
+ padding = 0,
+ with_expanders = false,
+ },
+ icon = {
+ folder_closed = "",
+ folder_open = "",
+ folder_empty = "",
+ default = "",
+ },
+ git_status = {
+ symbols = {
+ added = "",
+ deleted = "",
+ modified = "",
+ renamed = "➜",
+ untracked = "★",
+ ignored = "◌",
+ unstaged = "✗",
+ staged = "✓",
+ conflict = "",
+ },
+ },
+ },
+ window = {
+ width = 25,
+ mappings = {
+ ["o"] = "open",
+ },
+ },
+ filesystem = {
+ filtered_items = {
+ visible = false,
+ hide_dotfiles = true,
+ hide_gitignored = false,
+ hide_by_name = {
+ ".DS_Store",
+ "thumbs.db",
+ "node_modules",
+ "__pycache__",
+ },
+ },
+ follow_current_file = true,
+ hijack_netrw_behavior = "open_current",
+ use_libuv_file_watcher = true,
+ },
+ git_status = {
+ window = {
+ position = "float",
+ },
+ },
+ event_handlers = {
+ {
+ event = "vim_buffer_enter",
+ handler = function(_)
+ if vim.bo.filetype == "neo-tree" then
+ vim.wo.signcolumn = "auto"
+ end
+ end,
+ },
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/notify.lua b/config/nvim/lua/configs/notify.lua
new file mode 100644
index 0000000..afa2aca
--- /dev/null
+++ b/config/nvim/lua/configs/notify.lua
@@ -0,0 +1,6 @@
+local status_ok, notify = pcall(require, "notify")
+if status_ok then
+ notify.setup(astronvim.user_plugin_opts("plugins.notify", { stages = "fade" }))
+
+ vim.notify = notify
+end
diff --git a/config/nvim/lua/configs/null-ls.lua b/config/nvim/lua/configs/null-ls.lua
new file mode 100644
index 0000000..38f19f0
--- /dev/null
+++ b/config/nvim/lua/configs/null-ls.lua
@@ -0,0 +1,4 @@
+local status_ok, null_ls = pcall(require, "null-ls")
+if status_ok then
+ null_ls.setup(astronvim.user_plugin_opts "plugins.null-ls")
+end
diff --git a/config/nvim/lua/configs/nvim-lsp-installer.lua b/config/nvim/lua/configs/nvim-lsp-installer.lua
new file mode 100644
index 0000000..bdc48e7
--- /dev/null
+++ b/config/nvim/lua/configs/nvim-lsp-installer.lua
@@ -0,0 +1,12 @@
+local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
+if status_ok then
+ lsp_installer.setup(astronvim.user_plugin_opts("plugins.nvim-lsp-installer", {
+ ui = {
+ icons = {
+ server_installed = "✓",
+ server_uninstalled = "✗",
+ server_pending = "⟳",
+ },
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/session_manager.lua b/config/nvim/lua/configs/session_manager.lua
new file mode 100644
index 0000000..f45b768
--- /dev/null
+++ b/config/nvim/lua/configs/session_manager.lua
@@ -0,0 +1,4 @@
+local status_ok, session_manager = pcall(require, "session_manager")
+if status_ok then
+ session_manager.setup(astronvim.user_plugin_opts("plugins.session_manager", { autosave_last_session = false }))
+end
diff --git a/config/nvim/lua/configs/smart-splits.lua b/config/nvim/lua/configs/smart-splits.lua
new file mode 100644
index 0000000..2cb4812
--- /dev/null
+++ b/config/nvim/lua/configs/smart-splits.lua
@@ -0,0 +1,12 @@
+local status_ok, smart_splits = pcall(require, "smart-splits")
+if status_ok then
+ smart_splits.setup(astronvim.user_plugin_opts("plugins.smart-splits", {
+ ignored_filetypes = {
+ "nofile",
+ "quickfix",
+ "qf",
+ "prompt",
+ },
+ ignored_buftypes = { "nofile" },
+ }))
+end
diff --git a/config/nvim/lua/configs/telescope.lua b/config/nvim/lua/configs/telescope.lua
new file mode 100644
index 0000000..9de40b1
--- /dev/null
+++ b/config/nvim/lua/configs/telescope.lua
@@ -0,0 +1,96 @@
+local status_ok, telescope = pcall(require, "telescope")
+if status_ok then
+ local actions = require "telescope.actions"
+
+ astronvim.conditional_func(telescope.load_extension, pcall(require, "notify"), "notify")
+ astronvim.conditional_func(telescope.load_extension, pcall(require, "aerial"), "aerial")
+
+ telescope.setup(astronvim.user_plugin_opts("plugins.telescope", {
+ defaults = {
+
+ prompt_prefix = " ",
+ selection_caret = "❯ ",
+ path_display = { "truncate" },
+ selection_strategy = "reset",
+ sorting_strategy = "ascending",
+ layout_strategy = "horizontal",
+ layout_config = {
+ horizontal = {
+ prompt_position = "top",
+ preview_width = 0.55,
+ results_width = 0.8,
+ },
+ vertical = {
+ mirror = false,
+ },
+ width = 0.87,
+ height = 0.80,
+ preview_cutoff = 120,
+ },
+
+ mappings = {
+ i = {
+ [""] = actions.cycle_history_next,
+ [""] = actions.cycle_history_prev,
+
+ [""] = actions.move_selection_next,
+ [""] = actions.move_selection_previous,
+
+ [""] = actions.close,
+
+ [""] = actions.move_selection_next,
+ [""] = actions.move_selection_previous,
+
+ [""] = actions.select_default,
+ [""] = actions.select_horizontal,
+ [""] = actions.select_vertical,
+ [""] = actions.select_tab,
+
+ [""] = actions.preview_scrolling_up,
+ [""] = actions.preview_scrolling_down,
+
+ [""] = actions.results_scrolling_up,
+ [""] = actions.results_scrolling_down,
+
+ [""] = actions.toggle_selection + actions.move_selection_worse,
+ [""] = actions.toggle_selection + actions.move_selection_better,
+ [""] = actions.send_to_qflist + actions.open_qflist,
+ [""] = actions.send_selected_to_qflist + actions.open_qflist,
+ [""] = actions.complete_tag,
+ },
+
+ n = {
+ [""] = actions.close,
+ [""] = actions.select_default,
+ [""] = actions.select_horizontal,
+ [""] = actions.select_vertical,
+ [""] = actions.select_tab,
+
+ [""] = actions.toggle_selection + actions.move_selection_worse,
+ [""] = actions.toggle_selection + actions.move_selection_better,
+ [""] = actions.send_to_qflist + actions.open_qflist,
+ [""] = actions.send_selected_to_qflist + actions.open_qflist,
+
+ ["j"] = actions.move_selection_next,
+ ["k"] = actions.move_selection_previous,
+ ["H"] = actions.move_to_top,
+ ["M"] = actions.move_to_middle,
+ ["L"] = actions.move_to_bottom,
+
+ [""] = actions.move_selection_next,
+ [""] = actions.move_selection_previous,
+ ["gg"] = actions.move_to_top,
+ ["G"] = actions.move_to_bottom,
+
+ [""] = actions.preview_scrolling_up,
+ [""] = actions.preview_scrolling_down,
+
+ [""] = actions.results_scrolling_up,
+ [""] = actions.results_scrolling_down,
+ },
+ },
+ },
+ pickers = {},
+ extensions = {},
+ }))
+end
diff --git a/config/nvim/lua/configs/toggleterm.lua b/config/nvim/lua/configs/toggleterm.lua
new file mode 100644
index 0000000..4c6e351
--- /dev/null
+++ b/config/nvim/lua/configs/toggleterm.lua
@@ -0,0 +1,16 @@
+local status_ok, toggleterm = pcall(require, "toggleterm")
+if status_ok then
+ toggleterm.setup(astronvim.user_plugin_opts("plugins.toggleterm", {
+ size = 10,
+ open_mapping = [[]],
+ shading_factor = 2,
+ direction = "float",
+ float_opts = {
+ border = "curved",
+ highlights = {
+ border = "Normal",
+ background = "Normal",
+ },
+ },
+ }))
+end
diff --git a/config/nvim/lua/configs/treesitter.lua b/config/nvim/lua/configs/treesitter.lua
new file mode 100644
index 0000000..01d5cea
--- /dev/null
+++ b/config/nvim/lua/configs/treesitter.lua
@@ -0,0 +1,26 @@
+local status_ok, treesitter = pcall(require, "nvim-treesitter.configs")
+if status_ok then
+ treesitter.setup(astronvim.user_plugin_opts("plugins.treesitter", {
+ ensure_installed = {},
+ sync_install = false,
+ ignore_install = {},
+ highlight = {
+ enable = true,
+ additional_vim_regex_highlighting = false,
+ },
+ context_commentstring = {
+ enable = true,
+ enable_autocmd = false,
+ },
+ rainbow = {
+ enable = true,
+ disable = { "html" },
+ extended_mode = false,
+ max_file_lines = nil,
+ },
+ autopairs = { enable = true },
+ autotag = { enable = true },
+ incremental_selection = { enable = true },
+ indent = { enable = false },
+ }))
+end
diff --git a/config/nvim/lua/configs/which-key-register.lua b/config/nvim/lua/configs/which-key-register.lua
new file mode 100644
index 0000000..0ea8881
--- /dev/null
+++ b/config/nvim/lua/configs/which-key-register.lua
@@ -0,0 +1,61 @@
+local status_ok, which_key = pcall(require, "which-key")
+if status_ok then
+ local is_available = astronvim.is_available
+ local user_plugin_opts = astronvim.user_plugin_opts
+ local mappings = {
+ n = {
+ [""] = {
+ f = { name = "File" },
+ p = { name = "Packer" },
+ l = { name = "LSP" },
+ },
+ },
+ }
+
+ local extra_sections = {
+ g = "Git",
+ s = "Search",
+ S = "Session",
+ t = "Terminal",
+ }
+
+ local function init_table(mode, prefix, idx)
+ if not mappings[mode][prefix][idx] then
+ mappings[mode][prefix][idx] = { name = extra_sections[idx] }
+ end
+ end
+
+ if is_available "neovim-session-manager" then
+ init_table("n", "", "S")
+ end
+
+ if is_available "gitsigns.nvim" then
+ init_table("n", "", "g")
+ end
+
+ if is_available "toggleterm.nvim" then
+ init_table("n", "", "g")
+ init_table("n", "", "t")
+ end
+
+ if is_available "telescope.nvim" then
+ init_table("n", "", "s")
+ init_table("n", "", "g")
+ end
+
+ mappings = user_plugin_opts("which-key.register_mappings", mappings)
+ -- support previous legacy notation, deprecate at some point
+ mappings.n[""] = user_plugin_opts("which-key.register_n_leader", mappings.n[""])
+ for mode, prefixes in pairs(mappings) do
+ for prefix, mapping_table in pairs(prefixes) do
+ which_key.register(mapping_table, {
+ mode = mode,
+ prefix = prefix,
+ buffer = nil,
+ silent = true,
+ noremap = true,
+ nowait = true,
+ })
+ end
+ end
+end
diff --git a/config/nvim/lua/configs/which-key.lua b/config/nvim/lua/configs/which-key.lua
new file mode 100644
index 0000000..617c559
--- /dev/null
+++ b/config/nvim/lua/configs/which-key.lua
@@ -0,0 +1,21 @@
+local status_ok, which_key = pcall(require, "which-key")
+if status_ok then
+ local show = which_key.show
+ local show_override = astronvim.user_plugin_opts("which-key.show", nil, false)
+ which_key.show = type(show_override) == "function" and show_override(show)
+ or function(keys, opts)
+ if vim.bo.filetype ~= "TelescopePrompt" then
+ show(keys, opts)
+ end
+ end
+ which_key.setup(astronvim.user_plugin_opts("plugins.which-key", {
+ plugins = {
+ spelling = { enabled = true },
+ presets = { operators = false },
+ },
+ window = {
+ border = "rounded",
+ padding = { 2, 2, 2, 2 },
+ },
+ }))
+end
diff --git a/config/nvim/lua/core/autocmds.lua b/config/nvim/lua/core/autocmds.lua
new file mode 100644
index 0000000..dc881c3
--- /dev/null
+++ b/config/nvim/lua/core/autocmds.lua
@@ -0,0 +1,104 @@
+local is_available = astronvim.is_available
+local cmd = vim.api.nvim_create_autocmd
+local augroup = vim.api.nvim_create_augroup
+local create_command = vim.api.nvim_create_user_command
+
+augroup("highlighturl", { clear = true })
+cmd({ "VimEnter", "FileType", "BufEnter", "WinEnter" }, {
+ desc = "URL Highlighting",
+ group = "highlighturl",
+ pattern = "*",
+ callback = function()
+ astronvim.set_url_match()
+ end,
+})
+
+if is_available "alpha-nvim" then
+ augroup("alpha_settings", { clear = true })
+ if is_available "bufferline.nvim" then
+ cmd("FileType", {
+ desc = "Disable tabline for alpha",
+ group = "alpha_settings",
+ pattern = "alpha",
+ callback = function()
+ local prev_showtabline = vim.opt.showtabline
+ vim.opt.showtabline = 0
+ cmd("BufUnload", {
+ pattern = "",
+ callback = function()
+ vim.opt.showtabline = prev_showtabline
+ end,
+ })
+ end,
+ })
+ end
+ cmd("FileType", {
+ desc = "Disable statusline for alpha",
+ group = "alpha_settings",
+ pattern = "alpha",
+ callback = function()
+ local prev_status = vim.opt.laststatus
+ vim.opt.laststatus = 0
+ cmd("BufUnload", {
+ pattern = "",
+ callback = function()
+ vim.opt.laststatus = prev_status
+ end,
+ })
+ end,
+ })
+ cmd("VimEnter", {
+ desc = "Start Alpha when vim is opened with no arguments",
+ group = "alpha_settings",
+ callback = function()
+ -- optimized start check from https://github.com/goolord/alpha-nvim
+ local alpha_avail, alpha = pcall(require, "alpha")
+ if alpha_avail then
+ local should_skip = false
+ if vim.fn.argc() > 0 or vim.fn.line2byte "$" ~= -1 or not vim.o.modifiable then
+ should_skip = true
+ else
+ for _, arg in pairs(vim.v.argv) do
+ if arg == "-b" or arg == "-c" or vim.startswith(arg, "+") or arg == "-S" then
+ should_skip = true
+ break
+ end
+ end
+ end
+ if not should_skip then
+ alpha.start(true)
+ end
+ end
+ end,
+ })
+end
+
+if is_available "neo-tree.nvim" then
+ augroup("neotree_start", { clear = true })
+ cmd("BufEnter", {
+ desc = "Open Neo-Tree on startup with directory",
+ group = "neotree_start",
+ callback = function()
+ local stats = vim.loop.fs_stat(vim.api.nvim_buf_get_name(0))
+ if stats and stats.type == "directory" then
+ require("neo-tree.setup.netrw").hijack()
+ end
+ end,
+ })
+end
+
+if is_available "feline.nvim" then
+ augroup("feline_setup", { clear = true })
+ cmd("ColorScheme", {
+ desc = "Reload feline on colorscheme change",
+ group = "feline_setup",
+ callback = function()
+ package.loaded["configs.feline"] = nil
+ require "configs.feline"
+ end,
+ })
+end
+
+create_command("AstroUpdate", astronvim.updater.update, { desc = "Update AstroNvim" })
+create_command("AstroVersion", astronvim.updater.version, { desc = "Check AstroNvim Version" })
+create_command("ToggleHighlightURL", astronvim.toggle_url_match, { desc = "Toggle URL Highlights" })
diff --git a/config/nvim/lua/core/mappings.lua b/config/nvim/lua/core/mappings.lua
new file mode 100644
index 0000000..a52d3eb
--- /dev/null
+++ b/config/nvim/lua/core/mappings.lua
@@ -0,0 +1,420 @@
+local is_available = astronvim.is_available
+
+local maps = { n = {}, v = {}, t = {}, [""] = {} }
+
+maps[""][""] = ""
+
+-- Normal --
+-- Standard Operations
+maps.n["w"] = { "w", desc = "Save" }
+maps.n["q"] = { "q", desc = "Quit" }
+maps.n["h"] = { "nohlsearch", desc = "No Highlight" }
+maps.n["u"] = {
+ function()
+ astronvim.toggle_url_match()
+ end,
+ desc = "Toggle URL Highlights",
+}
+maps.n["fn"] = { "enew", desc = "New File" }
+maps.n["gx"] = {
+ function()
+ astronvim.url_opener()
+ end,
+ desc = "Open the file under cursor with system app",
+}
+maps.n[""] = { "w!", desc = "Force write" }
+maps.n[""] = { "q!", desc = "Force quit" }
+maps.n["Q"] = ""
+
+-- Packer
+maps.n["pc"] = { "PackerCompile", desc = "Packer Compile" }
+maps.n["pi"] = { "PackerInstall", desc = "Packer Install" }
+maps.n["ps"] = { "PackerSync", desc = "Packer Sync" }
+maps.n["pS"] = { "PackerStatus", desc = "Packer Status" }
+maps.n["pu"] = { "PackerUpdate", desc = "Packer Update" }
+
+-- Alpha
+if is_available "alpha-nvim" then
+ maps.n["d"] = { "Alpha", desc = "Alpha Dashboard" }
+end
+
+-- Bufdelete
+if is_available "bufdelete.nvim" then
+ maps.n["c"] = { "Bdelete", desc = "Close buffer" }
+else
+ maps.n["c"] = { "bdelete", desc = "Close buffer" }
+end
+
+-- Navigate buffers
+if is_available "bufferline.nvim" then
+ maps.n[""] = { "BufferLineCycleNext", desc = "Next buffer tab" }
+ maps.n[""] = { "BufferLineCyclePrev", desc = "Previous buffer tab" }
+ maps.n[">b"] = { "BufferLineMoveNext", desc = "Move buffer tab right" }
+ maps.n["BufferLineMovePrev", desc = "Move buffer tab left" }
+else
+ maps.n[""] = { "bnext", desc = "Next buffer" }
+ maps.n[""] = { "bprevious", desc = "Previous buffer" }
+end
+
+-- Comment
+if is_available "Comment.nvim" then
+ maps.n["/"] = {
+ function()
+ require("Comment.api").toggle_current_linewise()
+ end,
+ desc = "Comment line",
+ }
+ maps.v["/"] = {
+ "lua require('Comment.api').toggle_linewise_op(vim.fn.visualmode())",
+ desc = "Toggle comment line",
+ }
+end
+
+-- GitSigns
+if is_available "gitsigns.nvim" then
+ maps.n["gj"] = {
+ function()
+ require("gitsigns").next_hunk()
+ end,
+ desc = "Next git hunk",
+ }
+ maps.n["gk"] = {
+ function()
+ require("gitsigns").prev_hunk()
+ end,
+ desc = "Previous git hunk",
+ }
+ maps.n["gl"] = {
+ function()
+ require("gitsigns").blame_line()
+ end,
+ desc = "View git blame",
+ }
+ maps.n["gp"] = {
+ function()
+ require("gitsigns").preview_hunk()
+ end,
+ desc = "Preview git hunk",
+ }
+ maps.n["gh"] = {
+ function()
+ require("gitsigns").reset_hunk()
+ end,
+ desc = "Reset git hunk",
+ }
+ maps.n["gr"] = {
+ function()
+ require("gitsigns").reset_buffer()
+ end,
+ desc = "Reset git buffer",
+ }
+ maps.n["gs"] = {
+ function()
+ require("gitsigns").stage_hunk()
+ end,
+ desc = "Stage git hunk",
+ }
+ maps.n["gu"] = {
+ function()
+ require("gitsigns").undo_stage_hunk()
+ end,
+ desc = "Unstage git hunk",
+ }
+ maps.n["gd"] = {
+ function()
+ require("gitsigns").diffthis()
+ end,
+ desc = "View git diff",
+ }
+end
+
+-- NeoTree
+if is_available "neo-tree.nvim" then
+ maps.n["e"] = { "Neotree toggle", desc = "Toggle Explorer" }
+ maps.n["o"] = { "Neotree focus", desc = "Focus Explorer" }
+end
+
+-- Session Manager
+if is_available "neovim-session-manager" then
+ maps.n["Sl"] = { "SessionManager! load_last_session", desc = "Load last session" }
+ maps.n["Ss"] = { "SessionManager! save_current_session", desc = "Save this session" }
+ maps.n["Sd"] = { "SessionManager! delete_session", desc = "Delete session" }
+ maps.n["Sf"] = { "SessionManager! load_session", desc = "Search sessions" }
+ maps.n["S."] = {
+ "SessionManager! load_current_dir_session",
+ desc = "Load current directory session",
+ }
+end
+
+-- LSP Installer
+if is_available "nvim-lsp-installer" then
+ maps.n["li"] = { "LspInfo", desc = "LSP information" }
+ maps.n["lI"] = { "LspInstallInfo", desc = "LSP installer" }
+end
+
+-- Smart Splits
+if is_available "smart-splits.nvim" then
+ -- Better window navigation
+ maps.n[""] = {
+ function()
+ require("smart-splits").move_cursor_left()
+ end,
+ desc = "Move to left split",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").move_cursor_down()
+ end,
+ desc = "Move to below split",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").move_cursor_up()
+ end,
+ desc = "Move to above split",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").move_cursor_right()
+ end,
+ desc = "Move to right split",
+ }
+
+ -- Resize with arrows
+ maps.n[""] = {
+ function()
+ require("smart-splits").resize_up()
+ end,
+ desc = "Resize split up",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").resize_down()
+ end,
+ desc = "Resize split down",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").resize_left()
+ end,
+ desc = "Resize split left",
+ }
+ maps.n[""] = {
+ function()
+ require("smart-splits").resize_right()
+ end,
+ desc = "Resize split right",
+ }
+else
+ maps.n[""] = { "h", desc = "Move to left split" }
+ maps.n[""] = { "j", desc = "Move to below split" }
+ maps.n[""] = { "k", desc = "Move to above split" }
+ maps.n[""] = { "l", desc = "Move to right split" }
+ maps.n[""] = { "resize -2", desc = "Resize split up" }
+ maps.n[""] = { "resize +2", desc = "Resize split down" }
+ maps.n[""] = { "vertical resize -2", desc = "Resize split left" }
+ maps.n[""] = { "vertical resize +2", desc = "Resize split right" }
+end
+
+-- SymbolsOutline
+if is_available "aerial.nvim" then
+ maps.n["lS"] = { "AerialToggle", desc = "Symbols outline" }
+end
+
+-- Telescope
+if is_available "telescope.nvim" then
+ maps.n["fw"] = {
+ function()
+ require("telescope.builtin").live_grep()
+ end,
+ desc = "Search words",
+ }
+ maps.n["fW"] = {
+ function()
+ require("telescope.builtin").live_grep {
+ additional_args = function(args)
+ return vim.list_extend(args, { "--hidden", "--no-ignore" })
+ end,
+ }
+ end,
+ desc = "Search words in all files",
+ }
+ maps.n["gt"] = {
+ function()
+ require("telescope.builtin").git_status()
+ end,
+ desc = "Git status",
+ }
+ maps.n["gb"] = {
+ function()
+ require("telescope.builtin").git_branches()
+ end,
+ desc = "Git branches",
+ }
+ maps.n["gc"] = {
+ function()
+ require("telescope.builtin").git_commits()
+ end,
+ desc = "Git commits",
+ }
+ maps.n["ff"] = {
+ function()
+ require("telescope.builtin").find_files()
+ end,
+ desc = "Search files",
+ }
+ maps.n["fF"] = {
+ function()
+ require("telescope.builtin").find_files { hidden = true, no_ignore = true }
+ end,
+ desc = "Search all files",
+ }
+ maps.n["fb"] = {
+ function()
+ require("telescope.builtin").buffers()
+ end,
+ desc = "Search buffers",
+ }
+ maps.n["fh"] = {
+ function()
+ require("telescope.builtin").help_tags()
+ end,
+ desc = "Search help",
+ }
+ maps.n["fm"] = {
+ function()
+ require("telescope.builtin").marks()
+ end,
+ desc = "Search marks",
+ }
+ maps.n["fo"] = {
+ function()
+ require("telescope.builtin").oldfiles()
+ end,
+ desc = "Search history",
+ }
+ maps.n["sb"] = {
+ function()
+ require("telescope.builtin").git_branches()
+ end,
+ desc = "Git branches",
+ }
+ maps.n["sh"] = {
+ function()
+ require("telescope.builtin").help_tags()
+ end,
+ desc = "Search help",
+ }
+ maps.n["sm"] = {
+ function()
+ require("telescope.builtin").man_pages()
+ end,
+ desc = "Search man",
+ }
+ maps.n["sn"] = {
+ function()
+ require("telescope").extensions.notify.notify()
+ end,
+ desc = "Search notifications",
+ }
+ maps.n["sr"] = {
+ function()
+ require("telescope.builtin").registers()
+ end,
+ desc = "Search registers",
+ }
+ maps.n["sk"] = {
+ function()
+ require("telescope.builtin").keymaps()
+ end,
+ desc = "Search keymaps",
+ }
+ maps.n["sc"] = {
+ function()
+ require("telescope.builtin").commands()
+ end,
+ desc = "Search commands",
+ }
+ maps.n["ls"] = {
+ function()
+ local aerial_avail, _ = pcall(require, "aerial")
+ if aerial_avail then
+ require("telescope").extensions.aerial.aerial()
+ else
+ require("telescope.builtin").lsp_document_symbols()
+ end
+ end,
+ desc = "Search symbols",
+ }
+ maps.n["lR"] = {
+ function()
+ require("telescope.builtin").lsp_references()
+ end,
+ desc = "Search references",
+ }
+ maps.n["lD"] = {
+ function()
+ require("telescope.builtin").diagnostics()
+ end,
+ desc = "Search diagnostics",
+ }
+end
+
+-- Terminal
+if is_available "toggleterm.nvim" then
+ local toggle_term_cmd = astronvim.toggle_term_cmd
+ maps.n[""] = { "ToggleTerm", desc = "Toggle terminal" }
+ maps.n["gg"] = {
+ function()
+ toggle_term_cmd "lazygit"
+ end,
+ desc = "ToggleTerm lazygit",
+ }
+ maps.n["tn"] = {
+ function()
+ toggle_term_cmd "node"
+ end,
+ desc = "ToggleTerm node",
+ }
+ maps.n["tu"] = {
+ function()
+ toggle_term_cmd "ncdu"
+ end,
+ desc = "ToggleTerm NCDU",
+ }
+ maps.n["tt"] = {
+ function()
+ toggle_term_cmd "htop"
+ end,
+ desc = "ToggleTerm htop",
+ }
+ maps.n["tp"] = {
+ function()
+ toggle_term_cmd "python"
+ end,
+ desc = "ToggleTerm python",
+ }
+ maps.n["tl"] = {
+ function()
+ toggle_term_cmd "lazygit"
+ end,
+ desc = "ToggleTerm lazygit",
+ }
+ maps.n["tf"] = { "ToggleTerm direction=float", desc = "ToggleTerm float" }
+ maps.n["th"] = { "ToggleTerm size=10 direction=horizontal", desc = "ToggleTerm horizontal split" }
+ maps.n["tv"] = { "ToggleTerm size=80 direction=vertical", desc = "ToggleTerm vertical split" }
+end
+
+-- Stay in indent mode
+maps.v["<"] = { ""] = { ">gv", desc = "indent line" }
+
+-- Improved Terminal Mappings
+maps.t[""] = { "