New version: created v3

This commit is contained in:
Keyitdev
2022-07-23 15:08:47 +02:00
parent eb3bdd5962
commit a2d46e7b94
551 changed files with 103679 additions and 4704 deletions
+14 -18
View File
@@ -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,9 +40,10 @@ 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 .."
+163 -159
View File
@@ -1,182 +1,182 @@
<h1 align=center>Keyitdev Dotfiles</h1>
# Keyitdev Dotfiles
<p align="center">My personal build of dotfiles using i3. Color palette is based on the Atom One Dark colorscheme. This configuration also works on dual monitors.</p>
The **Arch Linux** & **i3wm** dotfiles!
<div align="center">
<a href="#-showcase">Showcase</a> · <a href="#%EF%B8%8F-info">Info</a> · <a href="#-dependencies">Dependencies</a> · <a href="#%EF%B8%8F-installation">Installation</a> · <a href="#-keybinds">Keybinds</a> · <a href="#-colors">Colors</a> · <a href="#%EF%B8%8F-troubleshooting">Troubleshooting</a>
</div>
[Showcase](#showcase) ·
[Information](#information) ·
[Installation](#installation) ·
[Cheat sheet](#cheat-sheet) ·
[Support and Thankies](#support-and-thankies)
</br>
**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.
<p align=center>
<img src="https://img.shields.io/github/stars/keyitdev/dotfiles?color=dd864a&labelColor=202328&style=for-the-badge">
<img src="https://img.shields.io/github/forks/keyitdev/dotfiles?color=82aaff&labelColor=202328&style=for-the-badge">
<img src="https://img.shields.io/github/issues/keyitdev/dotfiles?color=bf616a&labelColor=202328&style=for-the-badge">
<img src="https://img.shields.io/github/issues-pr/keyitdev/dotfiles?color=c792ea&labelColor=202328&style=for-the-badge">
<img src="https://img.shields.io/github/license/keyitdev/dotfiles?color=15121C&labelColor=202328&style=for-the-badge">
</p>
This is the third version of my dotfiles, as I gain more experience I am able to create more profesional dotfiles.
<div align="center">
**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)
</div>
### [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)
<details>
<summary><b>
Detailed information and dependencies
</b></summary>
### [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|
|-|-|
|**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)|
### Used 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
**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)
## 🛠️ Installation
**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)
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.
### 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
</details>
## Showcase
|vsc & ncmpcpp & cava|rofi & dunst|
|-|-|
|![](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))
3. Install dependencies.
```sh
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
```
4. Make Light executable
4. Create default directories.
```sh
mkdir -p "$HOME"/.config
mkdir -p /usr/local/bin
mkdir -p /usr/share/themes
mkdir -p "$HOME"/Pictures/wallpapers
```
5. Copy configs, scripts, fonts, gtk theme, wallpaper, vsc configs, zsh config.
```sh
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"
```
6. Make Light executable, set zsh as default shell, update nvim extensions, refresh font cache.
```sh
sudo chmod +s /usr/bin/light
```
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
```sh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```
7. Set Zsh as the default shell
```sh
chsh -s /bin/zsh #user
sudo chsh -s /bin/zsh #root
```
8. Install AstroVim
```sh
git clone --depth 10 https://github.com/kabinspace/AstroVim.git $HOME/.config/nvim
chsh -s /bin/zsh
sudo chsh -s /bin/zsh
nvim +PackerSync
fc-cache -fv
```
9. Install GTK Theme
8. Install sddm flower theme.
```sh
git clone https://github.com/EliverLara/ant.git
sudo mv ./ant /usr/share/themes
```
10. Install SDDM Astronaut 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
Current=sddm-flower-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)
## Cheat sheet
### Automated Install
1. Clone the repository
```
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
```
<details>
<summary>Keybinds</summary>
2. [Install the Firefox theme](https://color.firefox.com/?theme=XQAAAAKGAQAAAAAAAABBqYhm849SCia73laEGccwS-xMDPr5iE6kjVUHIsGRvs0-q94VqJzDmLds0B4GdTFd2KORmhozpED9fKKY97YpmeSVCJcSVB9rwzacQGHhaYG0HJIDBXLbAYUnjpkVXo5LFBoIgdJ4P7MSUoS9tEpFY9l-n8P03V91Kq7BmmKKrjKq9Hi2Jvfl7wBEWz3nWVxnwd4XKskPQ2G_JFlEZFH-xMtfBJ5OSQmfzox2bvycbCOGiDW99yOqfX2u-cPiqZwcshaSPxDSqShJ5_7OhZzPbP5x-BM)
## 🛠️ Uninstall
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
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
</details>
<details>
<summary>Colors</summary>
| 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 |
## ⚙️ Troubleshooting
</details>
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/).
## Support and Thankies
## ✨ Big thanks to
You can support me simply by dropping a **star** on **[github]()** or giving a **subscription** on **[YouTube]()**.
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)
<!-- If you enjoyed it and would like to show your appreciation, you can **tip** using **[kofi]()** or **[paypal]()**. -->
## 🪪 License
**Big thanks to:**
[adi1090x](https://github.com/adi1090x),
[Totoro](https://github.com/totoro-ghost).
Distributed under the [GPLv3+](https://www.gnu.org/licenses/gpl-3.0.html) License.
Thanks to all contributors! :D
## Contributions
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**.
Copyright (C) 2022 Keyitdev.
+37
View File
@@ -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'
-38
View File
@@ -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
-164
View File
@@ -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
+12 -373
View File
@@ -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:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://developer.gnome.org/pango/stable/pango-Markup.html>.
#
# 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 = "<b>%s</b>\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
+1 -1
View File
@@ -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
+27 -20
View File
@@ -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 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
-37
View File
@@ -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
+60 -62
View File
@@ -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
### Directories ###
ncmpcpp_directory = ~/.config/ncmpcpp
lyrics_directory = ~/.config/ncmpcpp/lyrics
mpd_music_dir = ~/Music
mpd_connection_timeout = 5
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 = 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 = ▬▬▬
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
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 = >
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 = >
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)"
current_item_inactive_column_prefix = red
current_item_inactive_column_suffix = red
color1 = "white"
color2 = "red"
+1
View File
@@ -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
+20
View File
@@ -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
}
+6
View File
@@ -0,0 +1,6 @@
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
no_call_parentheses = true
+9
View File
@@ -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"
+21
View File
@@ -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))
+19
View File
@@ -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
+52
View File
@@ -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", "{", "<cmd>AerialPrev<cr>", { buffer = bufnr, desc = "Jump backwards in Aerial" })
vim.keymap.set("n", "}", "<cmd>AerialNext<cr>", { buffer = bufnr, desc = "Jump forwards in Aerial" })
-- Jump up the tree with '[[' or ']]'
vim.keymap.set("n", "[[", "<cmd>AerialPrevUp<cr>", { buffer = bufnr, desc = "Jump up and backwards in Aerial" })
vim.keymap.set("n", "]]", "<cmd>AerialNextUp<cr>", { buffer = bufnr, desc = "Jump up and forwards in Aerial" })
end,
}))
end
+40
View File
@@ -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
+33
View File
@@ -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 = "<M-e>",
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
@@ -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
+19
View File
@@ -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
+4
View File
@@ -0,0 +1,4 @@
local status_ok, cinnamon = pcall(require, "cinnamon")
if status_ok then
cinnamon.setup(astronvim.user_plugin_opts("plugins.cinnamon", {}))
end
+119
View File
@@ -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 = {
["<Up>"] = cmp.mapping.select_prev_item(),
["<Down>"] = cmp.mapping.select_next_item(),
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-k>"] = cmp.mapping.select_prev_item(),
["<C-j>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
["<C-y>"] = cmp.config.disable,
["<C-e>"] = cmp.mapping {
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
},
["<CR>"] = cmp.mapping.confirm { select = false },
["<Tab>"] = 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",
}),
["<S-Tab>"] = 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
+18
View File
@@ -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
+46
View File
@@ -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
+12
View File
@@ -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
+17
View File
@@ -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
+50
View File
@@ -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
@@ -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
+167
View File
@@ -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 = "<buffer>",
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd("CursorMoved", {
group = "lsp_document_highlight",
pattern = "<buffer>",
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,
},
["<leader>la"] = {
function()
vim.lsp.buf.code_action()
end,
desc = "LSP code action",
buffer = bufnr,
},
["<leader>lf"] = {
function()
vim.lsp.buf.formatting_sync()
end,
desc = "Format code",
buffer = bufnr,
},
["<leader>lh"] = {
function()
vim.lsp.buf.signature_help()
end,
desc = "Signature help",
buffer = bufnr,
},
["<leader>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,
},
["<leader>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
+55
View File
@@ -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
@@ -0,0 +1 @@
return { on_attach = astronvim.lsp.disable_formatting }
@@ -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,
},
},
},
}
@@ -0,0 +1,9 @@
return {
settings = {
python = {
analysis = {
typeCheckingMode = "off",
},
},
},
}
@@ -0,0 +1,15 @@
return {
settings = {
["rust-analyzer"] = {
cargo = {
loadOutDirsFromCheck = true,
},
checkOnSave = {
command = "clippy",
},
experimental = {
procAttrMacros = true,
},
},
},
}
@@ -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,
},
},
},
},
}
@@ -0,0 +1 @@
return { on_attach = astronvim.lsp.disable_formatting }
+16
View File
@@ -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
+70
View File
@@ -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
+6
View File
@@ -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
+4
View File
@@ -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
@@ -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
@@ -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
+12
View File
@@ -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
+96
View File
@@ -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 = {
["<C-n>"] = actions.cycle_history_next,
["<C-p>"] = actions.cycle_history_prev,
["<C-j>"] = actions.move_selection_next,
["<C-k>"] = actions.move_selection_previous,
["<C-c>"] = actions.close,
["<Down>"] = actions.move_selection_next,
["<Up>"] = actions.move_selection_previous,
["<CR>"] = actions.select_default,
["<C-x>"] = actions.select_horizontal,
["<C-v>"] = actions.select_vertical,
["<C-t>"] = actions.select_tab,
["<C-u>"] = actions.preview_scrolling_up,
["<C-d>"] = actions.preview_scrolling_down,
["<PageUp>"] = actions.results_scrolling_up,
["<PageDown>"] = actions.results_scrolling_down,
["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
["<C-l>"] = actions.complete_tag,
},
n = {
["<esc>"] = actions.close,
["<CR>"] = actions.select_default,
["<C-x>"] = actions.select_horizontal,
["<C-v>"] = actions.select_vertical,
["<C-t>"] = actions.select_tab,
["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
["<M-q>"] = 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,
["<Down>"] = actions.move_selection_next,
["<Up>"] = actions.move_selection_previous,
["gg"] = actions.move_to_top,
["G"] = actions.move_to_bottom,
["<C-u>"] = actions.preview_scrolling_up,
["<C-d>"] = actions.preview_scrolling_down,
["<PageUp>"] = actions.results_scrolling_up,
["<PageDown>"] = actions.results_scrolling_down,
},
},
},
pickers = {},
extensions = {},
}))
end
+16
View File
@@ -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 = [[<c-\>]],
shading_factor = 2,
direction = "float",
float_opts = {
border = "curved",
highlights = {
border = "Normal",
background = "Normal",
},
},
}))
end
+26
View File
@@ -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
@@ -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 = {
["<leader>"] = {
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", "<leader>", "S")
end
if is_available "gitsigns.nvim" then
init_table("n", "<leader>", "g")
end
if is_available "toggleterm.nvim" then
init_table("n", "<leader>", "g")
init_table("n", "<leader>", "t")
end
if is_available "telescope.nvim" then
init_table("n", "<leader>", "s")
init_table("n", "<leader>", "g")
end
mappings = user_plugin_opts("which-key.register_mappings", mappings)
-- support previous legacy notation, deprecate at some point
mappings.n["<leader>"] = user_plugin_opts("which-key.register_n_leader", mappings.n["<leader>"])
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
+21
View File
@@ -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
+104
View File
@@ -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 = "<buffer>",
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 = "<buffer>",
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" })
+420
View File
@@ -0,0 +1,420 @@
local is_available = astronvim.is_available
local maps = { n = {}, v = {}, t = {}, [""] = {} }
maps[""]["<Space>"] = "<Nop>"
-- Normal --
-- Standard Operations
maps.n["<leader>w"] = { "<cmd>w<cr>", desc = "Save" }
maps.n["<leader>q"] = { "<cmd>q<cr>", desc = "Quit" }
maps.n["<leader>h"] = { "<cmd>nohlsearch<cr>", desc = "No Highlight" }
maps.n["<leader>u"] = {
function()
astronvim.toggle_url_match()
end,
desc = "Toggle URL Highlights",
}
maps.n["<leader>fn"] = { "<cmd>enew<cr>", desc = "New File" }
maps.n["gx"] = {
function()
astronvim.url_opener()
end,
desc = "Open the file under cursor with system app",
}
maps.n["<C-s>"] = { "<cmd>w!<cr>", desc = "Force write" }
maps.n["<C-q>"] = { "<cmd>q!<cr>", desc = "Force quit" }
maps.n["Q"] = "<Nop>"
-- Packer
maps.n["<leader>pc"] = { "<cmd>PackerCompile<cr>", desc = "Packer Compile" }
maps.n["<leader>pi"] = { "<cmd>PackerInstall<cr>", desc = "Packer Install" }
maps.n["<leader>ps"] = { "<cmd>PackerSync<cr>", desc = "Packer Sync" }
maps.n["<leader>pS"] = { "<cmd>PackerStatus<cr>", desc = "Packer Status" }
maps.n["<leader>pu"] = { "<cmd>PackerUpdate<cr>", desc = "Packer Update" }
-- Alpha
if is_available "alpha-nvim" then
maps.n["<leader>d"] = { "<cmd>Alpha<cr>", desc = "Alpha Dashboard" }
end
-- Bufdelete
if is_available "bufdelete.nvim" then
maps.n["<leader>c"] = { "<cmd>Bdelete<cr>", desc = "Close buffer" }
else
maps.n["<leader>c"] = { "<cmd>bdelete<cr>", desc = "Close buffer" }
end
-- Navigate buffers
if is_available "bufferline.nvim" then
maps.n["<S-l>"] = { "<cmd>BufferLineCycleNext<cr>", desc = "Next buffer tab" }
maps.n["<S-h>"] = { "<cmd>BufferLineCyclePrev<cr>", desc = "Previous buffer tab" }
maps.n[">b"] = { "<cmd>BufferLineMoveNext<cr>", desc = "Move buffer tab right" }
maps.n["<b"] = { "<cmd>BufferLineMovePrev<cr>", desc = "Move buffer tab left" }
else
maps.n["<S-l>"] = { "<cmd>bnext<cr>", desc = "Next buffer" }
maps.n["<S-h>"] = { "<cmd>bprevious<cr>", desc = "Previous buffer" }
end
-- Comment
if is_available "Comment.nvim" then
maps.n["<leader>/"] = {
function()
require("Comment.api").toggle_current_linewise()
end,
desc = "Comment line",
}
maps.v["<leader>/"] = {
"<esc><cmd>lua require('Comment.api').toggle_linewise_op(vim.fn.visualmode())<cr>",
desc = "Toggle comment line",
}
end
-- GitSigns
if is_available "gitsigns.nvim" then
maps.n["<leader>gj"] = {
function()
require("gitsigns").next_hunk()
end,
desc = "Next git hunk",
}
maps.n["<leader>gk"] = {
function()
require("gitsigns").prev_hunk()
end,
desc = "Previous git hunk",
}
maps.n["<leader>gl"] = {
function()
require("gitsigns").blame_line()
end,
desc = "View git blame",
}
maps.n["<leader>gp"] = {
function()
require("gitsigns").preview_hunk()
end,
desc = "Preview git hunk",
}
maps.n["<leader>gh"] = {
function()
require("gitsigns").reset_hunk()
end,
desc = "Reset git hunk",
}
maps.n["<leader>gr"] = {
function()
require("gitsigns").reset_buffer()
end,
desc = "Reset git buffer",
}
maps.n["<leader>gs"] = {
function()
require("gitsigns").stage_hunk()
end,
desc = "Stage git hunk",
}
maps.n["<leader>gu"] = {
function()
require("gitsigns").undo_stage_hunk()
end,
desc = "Unstage git hunk",
}
maps.n["<leader>gd"] = {
function()
require("gitsigns").diffthis()
end,
desc = "View git diff",
}
end
-- NeoTree
if is_available "neo-tree.nvim" then
maps.n["<leader>e"] = { "<cmd>Neotree toggle<cr>", desc = "Toggle Explorer" }
maps.n["<leader>o"] = { "<cmd>Neotree focus<cr>", desc = "Focus Explorer" }
end
-- Session Manager
if is_available "neovim-session-manager" then
maps.n["<leader>Sl"] = { "<cmd>SessionManager! load_last_session<cr>", desc = "Load last session" }
maps.n["<leader>Ss"] = { "<cmd>SessionManager! save_current_session<cr>", desc = "Save this session" }
maps.n["<leader>Sd"] = { "<cmd>SessionManager! delete_session<cr>", desc = "Delete session" }
maps.n["<leader>Sf"] = { "<cmd>SessionManager! load_session<cr>", desc = "Search sessions" }
maps.n["<leader>S."] = {
"<cmd>SessionManager! load_current_dir_session<cr>",
desc = "Load current directory session",
}
end
-- LSP Installer
if is_available "nvim-lsp-installer" then
maps.n["<leader>li"] = { "<cmd>LspInfo<cr>", desc = "LSP information" }
maps.n["<leader>lI"] = { "<cmd>LspInstallInfo<cr>", desc = "LSP installer" }
end
-- Smart Splits
if is_available "smart-splits.nvim" then
-- Better window navigation
maps.n["<C-h>"] = {
function()
require("smart-splits").move_cursor_left()
end,
desc = "Move to left split",
}
maps.n["<C-j>"] = {
function()
require("smart-splits").move_cursor_down()
end,
desc = "Move to below split",
}
maps.n["<C-k>"] = {
function()
require("smart-splits").move_cursor_up()
end,
desc = "Move to above split",
}
maps.n["<C-l>"] = {
function()
require("smart-splits").move_cursor_right()
end,
desc = "Move to right split",
}
-- Resize with arrows
maps.n["<C-Up>"] = {
function()
require("smart-splits").resize_up()
end,
desc = "Resize split up",
}
maps.n["<C-Down>"] = {
function()
require("smart-splits").resize_down()
end,
desc = "Resize split down",
}
maps.n["<C-Left>"] = {
function()
require("smart-splits").resize_left()
end,
desc = "Resize split left",
}
maps.n["<C-Right>"] = {
function()
require("smart-splits").resize_right()
end,
desc = "Resize split right",
}
else
maps.n["<C-h>"] = { "<C-w>h", desc = "Move to left split" }
maps.n["<C-j>"] = { "<C-w>j", desc = "Move to below split" }
maps.n["<C-k>"] = { "<C-w>k", desc = "Move to above split" }
maps.n["<C-l>"] = { "<C-w>l", desc = "Move to right split" }
maps.n["<C-Up>"] = { "<cmd>resize -2<CR>", desc = "Resize split up" }
maps.n["<C-Down>"] = { "<cmd>resize +2<CR>", desc = "Resize split down" }
maps.n["<C-Left>"] = { "<cmd>vertical resize -2<CR>", desc = "Resize split left" }
maps.n["<C-Right>"] = { "<cmd>vertical resize +2<CR>", desc = "Resize split right" }
end
-- SymbolsOutline
if is_available "aerial.nvim" then
maps.n["<leader>lS"] = { "<cmd>AerialToggle<cr>", desc = "Symbols outline" }
end
-- Telescope
if is_available "telescope.nvim" then
maps.n["<leader>fw"] = {
function()
require("telescope.builtin").live_grep()
end,
desc = "Search words",
}
maps.n["<leader>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["<leader>gt"] = {
function()
require("telescope.builtin").git_status()
end,
desc = "Git status",
}
maps.n["<leader>gb"] = {
function()
require("telescope.builtin").git_branches()
end,
desc = "Git branches",
}
maps.n["<leader>gc"] = {
function()
require("telescope.builtin").git_commits()
end,
desc = "Git commits",
}
maps.n["<leader>ff"] = {
function()
require("telescope.builtin").find_files()
end,
desc = "Search files",
}
maps.n["<leader>fF"] = {
function()
require("telescope.builtin").find_files { hidden = true, no_ignore = true }
end,
desc = "Search all files",
}
maps.n["<leader>fb"] = {
function()
require("telescope.builtin").buffers()
end,
desc = "Search buffers",
}
maps.n["<leader>fh"] = {
function()
require("telescope.builtin").help_tags()
end,
desc = "Search help",
}
maps.n["<leader>fm"] = {
function()
require("telescope.builtin").marks()
end,
desc = "Search marks",
}
maps.n["<leader>fo"] = {
function()
require("telescope.builtin").oldfiles()
end,
desc = "Search history",
}
maps.n["<leader>sb"] = {
function()
require("telescope.builtin").git_branches()
end,
desc = "Git branches",
}
maps.n["<leader>sh"] = {
function()
require("telescope.builtin").help_tags()
end,
desc = "Search help",
}
maps.n["<leader>sm"] = {
function()
require("telescope.builtin").man_pages()
end,
desc = "Search man",
}
maps.n["<leader>sn"] = {
function()
require("telescope").extensions.notify.notify()
end,
desc = "Search notifications",
}
maps.n["<leader>sr"] = {
function()
require("telescope.builtin").registers()
end,
desc = "Search registers",
}
maps.n["<leader>sk"] = {
function()
require("telescope.builtin").keymaps()
end,
desc = "Search keymaps",
}
maps.n["<leader>sc"] = {
function()
require("telescope.builtin").commands()
end,
desc = "Search commands",
}
maps.n["<leader>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["<leader>lR"] = {
function()
require("telescope.builtin").lsp_references()
end,
desc = "Search references",
}
maps.n["<leader>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["<C-\\>"] = { "<cmd>ToggleTerm<cr>", desc = "Toggle terminal" }
maps.n["<leader>gg"] = {
function()
toggle_term_cmd "lazygit"
end,
desc = "ToggleTerm lazygit",
}
maps.n["<leader>tn"] = {
function()
toggle_term_cmd "node"
end,
desc = "ToggleTerm node",
}
maps.n["<leader>tu"] = {
function()
toggle_term_cmd "ncdu"
end,
desc = "ToggleTerm NCDU",
}
maps.n["<leader>tt"] = {
function()
toggle_term_cmd "htop"
end,
desc = "ToggleTerm htop",
}
maps.n["<leader>tp"] = {
function()
toggle_term_cmd "python"
end,
desc = "ToggleTerm python",
}
maps.n["<leader>tl"] = {
function()
toggle_term_cmd "lazygit"
end,
desc = "ToggleTerm lazygit",
}
maps.n["<leader>tf"] = { "<cmd>ToggleTerm direction=float<cr>", desc = "ToggleTerm float" }
maps.n["<leader>th"] = { "<cmd>ToggleTerm size=10 direction=horizontal<cr>", desc = "ToggleTerm horizontal split" }
maps.n["<leader>tv"] = { "<cmd>ToggleTerm size=80 direction=vertical<cr>", desc = "ToggleTerm vertical split" }
end
-- Stay in indent mode
maps.v["<"] = { "<gv", desc = "unindent line" }
maps.v[">"] = { ">gv", desc = "indent line" }
-- Improved Terminal Mappings
maps.t["<esc>"] = { "<C-\\><C-n>", desc = "Terminal normal mode" }
maps.t["jk"] = { "<C-\\><C-n>", desc = "Terminal normal mode" }
maps.t["<C-h>"] = { "<c-\\><c-n><c-w>h", desc = "Terminal left window navigation" }
maps.t["<C-j>"] = { "<c-\\><c-n><c-w>j", desc = "Terminal down window navigation" }
maps.t["<C-k>"] = { "<c-\\><c-n><c-w>k", desc = "Terminal up window navigation" }
maps.t["<C-l>"] = { "<c-\\><c-n><c-w>l", desc = "Terminal right window naviation" }
astronvim.set_mappings(astronvim.user_plugin_opts("mappings", maps))
+67
View File
@@ -0,0 +1,67 @@
astronvim.vim_opts(astronvim.user_plugin_opts("options", {
opt = {
backspace = vim.opt.backspace + { "nostop" }, -- Don't stop backspace at insert
clipboard = "unnamedplus", -- Connection to the system clipboard
completeopt = { "menuone", "noselect" }, -- Options for insert mode completion
copyindent = true, -- Copy the previous indentation on autoindenting
cursorline = true, -- Highlight the text line of the cursor
expandtab = true, -- Enable the use of space in tab
fileencoding = "utf-8", -- File content encoding for the buffer
fillchars = { eob = " " }, -- Disable `~` on nonexistent lines
history = 100, -- Number of commands to remember in a history table
ignorecase = true, -- Case insensitive searching
laststatus = 3, -- globalstatus
lazyredraw = true, -- lazily redraw screen
mouse = "a", -- Enable mouse support
number = true, -- Show numberline
preserveindent = true, -- Preserve indent structure as much as possible
pumheight = 10, -- Height of the pop up menu
relativenumber = true, -- Show relative numberline
scrolloff = 8, -- Number of lines to keep above and below the cursor
shiftwidth = 2, -- Number of space inserted for indentation
showmode = false, -- Disable showing modes in command line
sidescrolloff = 8, -- Number of columns to keep at the sides of the cursor
signcolumn = "yes", -- Always show the sign column
smartcase = true, -- Case sensitivie searching
splitbelow = true, -- Splitting a new window below the current one
splitright = true, -- Splitting a new window at the right of the current one
swapfile = false, -- Disable use of swapfile for the buffer
tabstop = 2, -- Number of space in a tab
termguicolors = true, -- Enable 24-bit RGB color in the TUI
timeoutlen = 300, -- Length of time to wait for a mapped sequence
undofile = true, -- Enable persistent undo
updatetime = 300, -- Length of time to wait before triggering the plugin
wrap = false, -- Disable wrapping of lines longer than the width of window
writebackup = false, -- Disable making a backup before overwriting a file
},
g = {
do_filetype_lua = 1, -- use filetype.lua
did_load_filetypes = 0, -- don't use filetype.vim
highlighturl_enabled = true, -- highlight URLs by default
mapleader = " ", -- set leader key
zipPlugin = false, -- disable zip
load_black = false, -- disable black
loaded_2html_plugin = true, -- disable 2html
loaded_getscript = true, -- disable getscript
loaded_getscriptPlugin = true, -- disable getscript
loaded_gzip = true, -- disable gzip
loaded_logipat = true, -- disable logipat
loaded_matchit = true, -- disable matchit
loaded_netrwFileHandlers = true, -- disable netrw
loaded_netrwPlugin = true, -- disable netrw
loaded_netrwSettngs = true, -- disable netrw
loaded_remote_plugins = true, -- disable remote plugins
loaded_tar = true, -- disable tar
loaded_tarPlugin = true, -- disable tar
loaded_zip = true, -- disable zip
loaded_zipPlugin = true, -- disable zip
loaded_vimball = true, -- disable vimball
loaded_vimballPlugin = true, -- disable vimball
},
}))
local colorscheme = astronvim.user_plugin_opts("colorscheme", nil, false)
vim.api.nvim_command(
"colorscheme "
.. (vim.tbl_contains(vim.fn.getcompletion("", "color"), colorscheme) and colorscheme or "default_theme")
)
+354
View File
@@ -0,0 +1,354 @@
local astro_plugins = {
-- Plugin manager
["wbthomason/packer.nvim"] = {},
-- Optimiser
["lewis6991/impatient.nvim"] = {},
-- Lua functions
["nvim-lua/plenary.nvim"] = { module = "plenary" },
-- Popup API
["nvim-lua/popup.nvim"] = {},
-- Indent detection
["Darazaki/indent-o-matic"] = {
event = "BufReadPost",
config = function()
require "configs.indent-o-matic"
end,
},
-- Notification Enhancer
["rcarriga/nvim-notify"] = {
event = "VimEnter",
config = function()
require "configs.notify"
end,
},
-- Neovim UI Enhancer
["MunifTanjim/nui.nvim"] = { module = "nui" },
-- Cursorhold fix
["antoinemadec/FixCursorHold.nvim"] = {
event = { "BufRead", "BufNewFile" },
config = function()
vim.g.cursorhold_updatetime = 100
end,
},
-- Smarter Splits
["mrjones2014/smart-splits.nvim"] = {
module = "smart-splits",
config = function()
require "configs.smart-splits"
end,
},
-- Icons
["kyazdani42/nvim-web-devicons"] = {
event = "VimEnter",
config = function()
require "configs.icons"
end,
},
-- Bufferline
["akinsho/bufferline.nvim"] = {
after = "nvim-web-devicons",
config = function()
require "configs.bufferline"
end,
},
-- Better buffer closing
["famiu/bufdelete.nvim"] = { cmd = { "Bdelete", "Bwipeout" } },
-- File explorer
["nvim-neo-tree/neo-tree.nvim"] = {
branch = "v2.x",
module = "neo-tree",
cmd = "Neotree",
requires = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim" },
setup = function()
vim.g.neo_tree_remove_legacy_commands = true
end,
config = function()
require "configs.neo-tree"
end,
},
-- Statusline
["feline-nvim/feline.nvim"] = {
after = "nvim-web-devicons",
config = function()
require "configs.feline"
end,
},
-- Parenthesis highlighting
["p00f/nvim-ts-rainbow"] = { after = "nvim-treesitter" },
-- Autoclose tags
["windwp/nvim-ts-autotag"] = { after = "nvim-treesitter" },
-- Context based commenting
["JoosepAlviste/nvim-ts-context-commentstring"] = { after = "nvim-treesitter" },
-- Syntax highlighting
["nvim-treesitter/nvim-treesitter"] = {
run = ":TSUpdate",
event = { "BufRead", "BufNewFile" },
cmd = {
"TSInstall",
"TSInstallInfo",
"TSInstallSync",
"TSUninstall",
"TSUpdate",
"TSUpdateSync",
"TSDisableAll",
"TSEnableAll",
},
config = function()
require "configs.treesitter"
end,
},
-- Snippet collection
["rafamadriz/friendly-snippets"] = { opt = true },
-- Snippet engine
["L3MON4D3/LuaSnip"] = {
module = "luasnip",
wants = "friendly-snippets",
config = function()
require "configs.luasnip"
end,
},
-- Completion engine
["hrsh7th/nvim-cmp"] = {
event = "InsertEnter",
config = function()
require "configs.cmp"
end,
},
-- Snippet completion source
["saadparwaiz1/cmp_luasnip"] = {
after = "nvim-cmp",
config = function()
astronvim.add_user_cmp_source "luasnip"
end,
},
-- Buffer completion source
["hrsh7th/cmp-buffer"] = {
after = "nvim-cmp",
config = function()
astronvim.add_user_cmp_source "buffer"
end,
},
-- Path completion source
["hrsh7th/cmp-path"] = {
after = "nvim-cmp",
config = function()
astronvim.add_user_cmp_source "path"
end,
},
-- LSP completion source
["hrsh7th/cmp-nvim-lsp"] = {
after = "nvim-cmp",
config = function()
astronvim.add_user_cmp_source "nvim_lsp"
end,
},
-- Built-in LSP
["neovim/nvim-lspconfig"] = { event = "VimEnter" },
-- LSP manager
["williamboman/nvim-lsp-installer"] = {
after = "nvim-lspconfig",
config = function()
require "configs.nvim-lsp-installer"
require "configs.lsp"
end,
},
-- LSP symbols
["stevearc/aerial.nvim"] = {
module = "aerial",
cmd = { "AerialToggle", "AerialOpen", "AerialInfo" },
config = function()
require "configs.aerial"
end,
},
-- Formatting and linting
["jose-elias-alvarez/null-ls.nvim"] = {
event = { "BufRead", "BufNewFile" },
config = function()
require "configs.null-ls"
end,
},
-- Fuzzy finder
["nvim-telescope/telescope.nvim"] = {
cmd = "Telescope",
module = "telescope",
config = function()
require "configs.telescope"
end,
},
-- Fuzzy finder syntax support
[("nvim-telescope/telescope-%s-native.nvim"):format(vim.fn.has "win32" == 1 and "fzy" or "fzf")] = {
after = "telescope.nvim",
run = vim.fn.has "win32" ~= 1 and "make" or nil,
config = function()
require("telescope").load_extension(vim.fn.has "win32" == 1 and "fzy_native" or "fzf")
end,
},
-- Git integration
["lewis6991/gitsigns.nvim"] = {
event = "BufEnter",
config = function()
require "configs.gitsigns"
end,
},
-- Start screen
["goolord/alpha-nvim"] = {
cmd = "Alpha",
module = "alpha",
config = function()
require "configs.alpha"
end,
},
-- Color highlighting
["norcalli/nvim-colorizer.lua"] = {
event = { "BufRead", "BufNewFile" },
config = function()
require "configs.colorizer"
end,
},
-- Autopairs
["windwp/nvim-autopairs"] = {
event = "InsertEnter",
config = function()
require "configs.autopairs"
end,
},
-- Terminal
["akinsho/toggleterm.nvim"] = {
cmd = "ToggleTerm",
module = { "toggleterm", "toggleterm.terminal" },
config = function()
require "configs.toggleterm"
end,
},
-- Commenting
["numToStr/Comment.nvim"] = {
module = { "Comment", "Comment.api" },
keys = { "gc", "gb", "g<", "g>" },
config = function()
require "configs.Comment"
end,
},
-- Indentation
["lukas-reineke/indent-blankline.nvim"] = {
event = "BufRead",
config = function()
require "configs.indent-line"
end,
},
-- Keymaps popup
["folke/which-key.nvim"] = {
module = "which-key",
config = function()
require "configs.which-key"
end,
},
-- Smooth scrolling
["declancm/cinnamon.nvim"] = {
event = { "BufRead", "BufNewFile" },
config = function()
require "configs.cinnamon"
end,
},
-- Smooth escaping
["max397574/better-escape.nvim"] = {
event = "InsertCharPre",
config = function()
require "configs.better_escape"
end,
},
-- Get extra JSON schemas
["b0o/SchemaStore.nvim"] = { module = "schemastore" },
-- Session manager
["Shatur/neovim-session-manager"] = {
module = "session_manager",
cmd = "SessionManager",
event = "BufWritePost",
config = function()
require "configs.session_manager"
end,
},
}
if astronvim.updater.snapshot then
for plugin, options in pairs(astro_plugins) do
local pin = astronvim.updater.snapshot[plugin:match "/([^/]*)$"]
options.commit = pin and pin.commit or options.commit
end
end
local user_plugin_opts = astronvim.user_plugin_opts
local packer = astronvim.initialize_packer()
packer.startup {
function(use)
for key, plugin in pairs(user_plugin_opts("plugins.init", astro_plugins)) do
if type(key) == "string" and not plugin[1] then
plugin[1] = key
end
use(plugin)
end
end,
config = user_plugin_opts("plugins.packer", {
compile_path = astronvim.default_compile_path,
display = {
open_fn = function()
return require("packer.util").float { border = "rounded" }
end,
},
profile = {
enable = true,
threshold = 0.0001,
},
git = {
clone_timeout = 300,
subcommands = {
update = "pull --rebase",
},
},
auto_clean = true,
compile_on_sync = true,
}),
}
astronvim.compiled()
+122
View File
@@ -0,0 +1,122 @@
local M = { hl = {}, provider = {}, conditional = {} }
local C = require "default_theme.colors"
local function hl_by_name(name)
return string.format("#%06x", vim.api.nvim_get_hl_by_name(name.group, true)[name.prop])
end
local function hl_prop(group, prop)
local status_ok, color = pcall(hl_by_name, { group = group, prop = prop })
return status_ok and color or nil
end
M.modes = {
["n"] = { "NORMAL", "Normal", C.blue },
["no"] = { "N-PENDING", "Normal", C.blue },
["i"] = { "INSERT", "Insert", C.green },
["ic"] = { "INSERT", "Insert", C.green },
["t"] = { "TERMINAL", "Insert", C.green },
["v"] = { "VISUAL", "Visual", C.purple },
["V"] = { "V-LINE", "Visual", C.purple },
[""] = { "V-BLOCK", "Visual", C.purple },
["R"] = { "REPLACE", "Replace", C.red_1 },
["Rv"] = { "V-REPLACE", "Replace", C.red_1 },
["s"] = { "SELECT", "Visual", C.orange_1 },
["S"] = { "S-LINE", "Visual", C.orange_1 },
[""] = { "S-BLOCK", "Visual", C.orange_1 },
["c"] = { "COMMAND", "Command", C.yellow_1 },
["cv"] = { "COMMAND", "Command", C.yellow_1 },
["ce"] = { "COMMAND", "Command", C.yellow_1 },
["r"] = { "PROMPT", "Inactive", C.grey_7 },
["rm"] = { "MORE", "Inactive", C.grey_7 },
["r?"] = { "CONFIRM", "Inactive", C.grey_7 },
["!"] = { "SHELL", "Inactive", C.grey_7 },
}
function M.hl.group(hlgroup, base)
return vim.tbl_deep_extend(
"force",
base or {},
{ fg = hl_prop(hlgroup, "foreground"), bg = hl_prop(hlgroup, "background") }
)
end
function M.hl.fg(hlgroup, base)
return vim.tbl_deep_extend("force", base or {}, { fg = hl_prop(hlgroup, "foreground") })
end
function M.hl.mode(base)
local lualine_avail, lualine = pcall(require, "lualine.themes." .. (vim.g.colors_name or "default_theme"))
return function()
local lualine_opts = lualine_avail and lualine[M.modes[vim.fn.mode()][2]:lower()]
return M.hl.group(
"Feline" .. M.modes[vim.fn.mode()][2],
vim.tbl_deep_extend(
"force",
lualine_opts and type(lualine_opts.a) == "table" and lualine_opts.a
or { fg = C.bg_1, bg = M.modes[vim.fn.mode()][3] },
base or {}
)
)
end
end
function M.provider.lsp_progress()
local Lsp = vim.lsp.util.get_progress_messages()[1]
return Lsp
and string.format(
" %%<%s %s %s (%s%%%%) ",
((Lsp.percentage or 0) >= 70 and { "", "", "" } or { "", "", "" })[math.floor(
vim.loop.hrtime() / 12e7
) % 3 + 1],
Lsp.title or "",
Lsp.message or "",
Lsp.percentage or 0
)
or ""
end
function M.provider.lsp_client_names(expand_null_ls)
return function()
local buf_client_names = {}
for _, client in pairs(vim.lsp.buf_get_clients(0)) do
if client.name == "null-ls" and expand_null_ls then
vim.list_extend(buf_client_names, astronvim.null_ls_sources(vim.bo.filetype, "FORMATTING"))
vim.list_extend(buf_client_names, astronvim.null_ls_sources(vim.bo.filetype, "DIAGNOSTICS"))
else
table.insert(buf_client_names, client.name)
end
end
return table.concat(buf_client_names, ", ")
end
end
function M.provider.treesitter_status()
local ts = vim.treesitter.highlighter.active[vim.api.nvim_get_current_buf()]
return (ts and next(ts)) and " 綠TS" or ""
end
function M.provider.spacer(n)
return string.rep(" ", n or 1)
end
function M.conditional.git_available()
return vim.b.gitsigns_head ~= nil
end
function M.conditional.git_changed()
local git_status = vim.b.gitsigns_status_dict
return git_status and (git_status.added or 0) + (git_status.removed or 0) + (git_status.changed or 0) > 0
end
function M.conditional.has_filetype()
return vim.fn.empty(vim.fn.expand "%:t") ~= 1 and vim.bo.filetype and vim.bo.filetype ~= ""
end
function M.conditional.bar_width(n)
return function()
return (vim.opt.laststatus:get() == 3 and vim.opt.columns:get() or vim.fn.winwidth(0)) > (n or 80)
end
end
return M
+143
View File
@@ -0,0 +1,143 @@
local ui = {}
function ui.nui_input()
-- Set up NUI for UI Input
-- From: https://github.com/MunifTanjim/nui.nvim/wiki/vim.ui#vimuiinput
local input_ui
vim.ui.input = function(opts, on_confirm)
local Input = require "nui.input"
local event = require("nui.utils.autocmd").event
if input_ui then
-- ensure single ui.input operation
vim.api.nvim_err_writeln "busy: another input is pending!"
return
end
local function on_done(value)
if input_ui then
-- if it's still mounted, unmount it
input_ui:unmount()
end
-- pass the input value
on_confirm(value)
-- indicate the operation is done
input_ui = nil
end
local border_top_text = opts.prompt or "[Input]"
local default_value = opts.default
input_ui = Input({
relative = "cursor",
position = {
row = 1,
col = 0,
},
size = {
-- minimum width 20
width = math.max(20, type(default_value) == "string" and #default_value or 0),
},
border = {
style = "rounded",
highlight = "Normal",
text = {
top = border_top_text,
top_align = "left",
},
},
win_options = {
winhighlight = "Normal:Normal",
},
}, {
default_value = default_value,
on_close = function()
on_done(nil)
end,
on_submit = function(value)
on_done(value)
end,
})
input_ui:mount()
-- cancel operation if cursor leaves input
input_ui:on(event.BufLeave, function()
on_done(nil)
end, { once = true })
-- cancel operation if <Esc> is pressed
input_ui:map("n", "<Esc>", function()
on_done(nil)
end, { noremap = true, nowait = true })
end
end
function ui.telescope_select()
-- Telescope UI selection
-- From: https://github.com/stevearc/dressing.nvim/blob/master/lua/dressing/select/telescope.lua
vim.ui.select = vim.schedule_wrap(function(items, opts, on_choice)
local themes = require "telescope.themes"
local actions = require "telescope.actions"
local state = require "telescope.actions.state"
local pickers = require "telescope.pickers"
local finders = require "telescope.finders"
local conf = require("telescope.config").values
if opts.format_item then
local format_item = opts.format_item
opts.format_item = function(item)
return tostring(format_item(item))
end
else
opts.format_item = tostring
end
local entry_maker = function(item)
local formatted = opts.format_item(item)
return {
display = formatted,
ordinal = formatted,
value = item,
}
end
local picker_opts = themes.get_dropdown()
pickers.new(picker_opts, {
prompt_title = opts.prompt,
previewer = false,
finder = finders.new_table {
results = items,
entry_maker = entry_maker,
},
sorter = conf.generic_sorter(opts),
attach_mappings = function(prompt_bufnr)
actions.select_default:replace(function()
local selection = state.get_selected_entry()
actions.close(prompt_bufnr)
if not selection then
-- User did not select anything.
on_choice(nil, nil)
return
end
local idx = nil
for i, item in ipairs(items) do
if item == selection.value then
idx = i
break
end
end
on_choice(selection.value, idx)
end)
actions.close:enhance { post = function() end }
return true
end,
}):find()
end)
end
for ui_addition, enabled in pairs(astronvim.user_plugin_opts("ui", { nui_input = true, telescope_select = true })) do
astronvim.conditional_func(ui[ui_addition], enabled)
end
+101
View File
@@ -0,0 +1,101 @@
local git = { url = "https://github.com/" }
function git.cmd(args, ...)
return astronvim.cmd("git -C " .. astronvim.install.home .. " " .. args, ...)
end
function git.is_repo()
return git.cmd("rev-parse --is-inside-work-tree", false)
end
function git.fetch(remote, ...)
return git.cmd("fetch " .. remote, ...)
end
function git.pull(...)
return git.cmd("pull --rebase", ...)
end
function git.checkout(dest, ...)
return git.cmd("checkout " .. dest, ...)
end
function git.hard_reset(dest, ...)
return git.cmd("reset --hard " .. dest, ...)
end
function git.branch_contains(remote, branch, commit, ...)
return git.cmd("merge-base --is-ancestor " .. commit .. " " .. remote .. "/" .. branch, ...) ~= nil
end
function git.remote_add(remote, url, ...)
return git.cmd("remote add " .. remote .. " " .. url, ...)
end
function git.remote_update(remote, url, ...)
return git.cmd("remote set-url " .. remote .. " " .. url, ...)
end
function git.remote_url(remote, ...)
return astronvim.trim_or_nil(git.cmd("remote get-url " .. remote, ...))
end
function git.current_version(...)
return astronvim.trim_or_nil(git.cmd("describe --tags", ...))
end
function git.current_branch(...)
return astronvim.trim_or_nil(git.cmd("rev-parse --abbrev-ref HEAD", ...))
end
function git.local_head(...)
return astronvim.trim_or_nil(git.cmd("rev-parse HEAD", ...))
end
function git.remote_head(remote, branch, ...)
return astronvim.trim_or_nil(git.cmd("rev-list -n 1 " .. remote .. "/" .. branch, ...))
end
function git.tag_commit(tag, ...)
return astronvim.trim_or_nil(git.cmd("rev-list -n 1 " .. tag, ...))
end
function git.get_commit_range(start_hash, end_hash, ...)
local log = git.cmd("log --no-merges --pretty='format:[%h] %s' " .. start_hash .. ".." .. end_hash, ...)
return log and vim.fn.split(log, "\n") or {}
end
function git.get_versions(search, ...)
local tags = git.cmd("tag -l --sort=version:refname '" .. (search == "latest" and "v*" or search) .. "'", ...)
return tags and vim.fn.split(tags, "\n") or {}
end
function git.latest_version(versions, ...)
versions = versions and versions or git.get_versions(...)
return versions[#versions]
end
function git.parse_remote_url(str)
return vim.fn.match(str, astronvim.url_matcher) == -1
and git.url .. str .. (vim.fn.match(str, "/") == -1 and "/AstroNvim.git" or ".git")
or str
end
function git.breaking_changes(commits)
return vim.tbl_filter(function(v)
return vim.fn.match(v, "\\[.*\\]\\s\\+\\w\\+\\((\\w\\+)\\)\\?!:") ~= -1
end, commits)
end
function git.pretty_changelog(commits)
local changelog = {}
for _, commit in ipairs(commits) do
local hash, type, msg = commit:match "(%[.*%])(.*:)(.*)"
if hash and type and msg then
vim.list_extend(changelog, { { hash, "DiffText" }, { type, "Typedef" }, { msg }, { "\n" } })
end
end
return changelog
end
return git
+299
View File
@@ -0,0 +1,299 @@
_G.astronvim = {}
local stdpath = vim.fn.stdpath
local tbl_insert = table.insert
local map = vim.keymap.set
astronvim.install = astronvim_installation or { home = stdpath "config" }
local astronvim_config = stdpath("config"):gsub("nvim$", "astronvim")
vim.opt.rtp:append(astronvim_config)
local supported_configs = { astronvim.install.home, astronvim_config }
local function load_module_file(module)
local found_module = nil
for _, config_path in ipairs(supported_configs) do
local module_path = config_path .. "/lua/" .. module:gsub("%.", "/") .. ".lua"
if vim.fn.filereadable(module_path) == 1 then
found_module = module_path
end
end
if found_module then
local status_ok, loaded_module = pcall(require, module)
if status_ok then
found_module = loaded_module
else
astronvim.notify("Error loading " .. found_module, "error")
end
end
return found_module
end
astronvim.user_settings = load_module_file "user.init"
astronvim.default_compile_path = stdpath "data" .. "/packer_compiled.lua"
astronvim.user_terminals = {}
astronvim.url_matcher =
"\\v\\c%(%(h?ttps?|ftp|file|ssh|git)://|[a-z]+[@][a-z]+[.][a-z]+:)%([&:#*@~%_\\-=?!+;/0-9a-z]+%(%([.;/?]|[.][.]+)[&:#*@~%_\\-=?!+/0-9a-z]+|:\\d+|,%(%(%(h?ttps?|ftp|file|ssh|git)://|[a-z]+[@][a-z]+[.][a-z]+:)@![0-9a-z]+))*|\\([&:#*@~%_\\-=?!+;/.0-9a-z]*\\)|\\[[&:#*@~%_\\-=?!+;/.0-9a-z]*\\]|\\{%([&:#*@~%_\\-=?!+;/.0-9a-z]*|\\{[&:#*@~%_\\-=?!+;/.0-9a-z]*})\\})+"
local function func_or_extend(overrides, default, extend)
if extend then
if type(overrides) == "table" then
default = vim.tbl_deep_extend("force", default, overrides)
elseif type(overrides) == "function" then
default = overrides(default)
end
elseif overrides ~= nil then
default = overrides
end
return default
end
function astronvim.conditional_func(func, condition, ...)
if (condition == nil and true or condition) and type(func) == "function" then
return func(...)
end
end
function astronvim.trim_or_nil(str)
return type(str) == "string" and vim.trim(str) or nil
end
function astronvim.notify(msg, type, opts)
vim.notify(msg, type, vim.tbl_deep_extend("force", { title = "AstroNvim" }, opts or {}))
end
function astronvim.echo(messages)
messages = messages or { { "\n" } }
if type(messages) == "table" then
vim.api.nvim_echo(messages, false, {})
end
end
function astronvim.confirm_prompt(messages)
if messages then
astronvim.echo(messages)
end
local confirmed = string.lower(vim.fn.input "(y/n) ") == "y"
astronvim.echo()
astronvim.echo()
return confirmed
end
local function user_setting_table(module)
local settings = astronvim.user_settings or {}
for tbl in string.gmatch(module, "([^%.]+)") do
settings = settings[tbl]
if settings == nil then
break
end
end
return settings
end
function astronvim.initialize_packer()
local packer_avail, packer = pcall(require, "packer")
if not packer_avail then
local packer_path = stdpath "data" .. "/site/pack/packer/start/packer.nvim"
vim.fn.delete(packer_path, "rf")
vim.fn.system {
"git",
"clone",
"--depth",
"1",
"https://github.com/wbthomason/packer.nvim",
packer_path,
}
astronvim.echo { { "Initializing Packer...\n\n" } }
vim.cmd "packadd packer.nvim"
packer_avail, packer = pcall(require, "packer")
if not packer_avail then
vim.api.nvim_err_writeln("Failed to load packer at:" .. packer_path .. "\n\n" .. packer)
end
end
return packer
end
function astronvim.vim_opts(options)
for scope, table in pairs(options) do
for setting, value in pairs(table) do
vim[scope][setting] = value
end
end
end
function astronvim.user_plugin_opts(module, default, extend, prefix)
if extend == nil then
extend = true
end
default = default or {}
local user_settings = load_module_file((prefix or "user") .. "." .. module)
if user_settings == nil and prefix == nil then
user_settings = user_setting_table(module)
end
if user_settings ~= nil then
default = func_or_extend(user_settings, default, extend)
end
return default
end
function astronvim.compiled()
local run_me, _ = loadfile(
astronvim.user_plugin_opts("plugins.packer", { compile_path = astronvim.default_compile_path }).compile_path
)
if run_me then
run_me()
else
astronvim.echo { { "Please run " }, { ":PackerSync", "Title" } }
end
end
function astronvim.url_opener()
if vim.fn.has "mac" == 1 then
vim.fn.jobstart({ "open", vim.fn.expand "<cfile>" }, { detach = true })
elseif vim.fn.has "unix" == 1 then
vim.fn.jobstart({ "xdg-open", vim.fn.expand "<cfile>" }, { detach = true })
else
astronvim.notify("gx is not supported on this OS!", "error")
end
end
-- term_details can be either a string for just a command or
-- a complete table to provide full access to configuration when calling Terminal:new()
function astronvim.toggle_term_cmd(term_details)
if type(term_details) == "string" then
term_details = { cmd = term_details, hidden = true }
end
local term_key = term_details.cmd
if vim.v.count > 0 and term_details.count == nil then
term_details.count = vim.v.count
term_key = term_key .. vim.v.count
end
if astronvim.user_terminals[term_key] == nil then
astronvim.user_terminals[term_key] = require("toggleterm.terminal").Terminal:new(term_details)
end
astronvim.user_terminals[term_key]:toggle()
end
function astronvim.add_cmp_source(source)
local cmp_avail, cmp = pcall(require, "cmp")
if cmp_avail then
local config = cmp.get_config()
tbl_insert(config.sources, source)
cmp.setup(config)
end
end
function astronvim.get_user_cmp_source(source)
source = type(source) == "string" and { name = source } or source
local priority = astronvim.user_plugin_opts("cmp.source_priority", {
nvim_lsp = 1000,
luasnip = 750,
buffer = 500,
path = 250,
})[source.name]
if priority then
source.priority = priority
end
return source
end
function astronvim.add_user_cmp_source(source)
astronvim.add_cmp_source(astronvim.get_user_cmp_source(source))
end
function astronvim.null_ls_providers(filetype)
local registered = {}
local sources_avail, sources = pcall(require, "null-ls.sources")
if sources_avail then
for _, source in ipairs(sources.get_available(filetype)) do
for method in pairs(source.methods) do
registered[method] = registered[method] or {}
tbl_insert(registered[method], source.name)
end
end
end
return registered
end
function astronvim.null_ls_sources(filetype, source)
local methods_avail, methods = pcall(require, "null-ls.methods")
return methods_avail and astronvim.null_ls_providers(filetype)[methods.internal[source]] or {}
end
function astronvim.alpha_button(sc, txt)
local sc_ = sc:gsub("%s", ""):gsub("LDR", "<leader>")
if vim.g.mapleader then
sc = sc:gsub("LDR", vim.g.mapleader == " " and "SPC" or vim.g.mapleader)
end
return {
type = "button",
val = txt,
on_press = function()
local key = vim.api.nvim_replace_termcodes(sc_, true, false, true)
vim.api.nvim_feedkeys(key, "normal", false)
end,
opts = {
position = "center",
text = txt,
shortcut = sc,
cursor = 5,
width = 36,
align_shortcut = "right",
hl = "DashboardCenter",
hl_shortcut = "DashboardShortcut",
},
}
end
function astronvim.is_available(plugin)
return packer_plugins ~= nil and packer_plugins[plugin] ~= nil
end
function astronvim.set_mappings(map_table, base)
for mode, maps in pairs(map_table) do
for keymap, options in pairs(maps) do
if options then
local cmd = options
if type(options) == "table" then
cmd = options[1]
options[1] = nil
else
options = {}
end
map(mode, keymap, cmd, vim.tbl_deep_extend("force", options, base or {}))
end
end
end
end
function astronvim.delete_url_match()
for _, match in ipairs(vim.fn.getmatches()) do
if match.group == "HighlightURL" then
vim.fn.matchdelete(match.id)
end
end
end
function astronvim.set_url_match()
astronvim.delete_url_match()
if vim.g.highlighturl_enabled then
vim.fn.matchadd("HighlightURL", astronvim.url_matcher, 15)
end
end
function astronvim.toggle_url_match()
vim.g.highlighturl_enabled = not vim.g.highlighturl_enabled
astronvim.set_url_match()
end
function astronvim.cmd(cmd, show_error)
local result = vim.fn.system(cmd)
local success = vim.api.nvim_get_vvar "shell_error" == 0
if not success and (show_error == nil and true or show_error) then
vim.api.nvim_err_writeln("Error running command: " .. cmd .. "\nError message:\n" .. result)
end
return success and result or nil
end
require "core.utils.updater"
return astronvim
+160
View File
@@ -0,0 +1,160 @@
local fn = vim.fn
local git = require "core.utils.git"
local options = astronvim.user_plugin_opts(
"updater",
{ remote = "origin", branch = "main", channel = "nightly", show_changelog = true }
)
if astronvim.install.is_stable ~= nil then
options.channel = astronvim.install.is_stable and "stable" or "nightly"
end
astronvim.updater = { options = options }
if options.pin_plugins == nil and options.channel == "stable" or options.pin_plugins then
local loaded, snapshot = pcall(fn.readfile, astronvim.install.home .. "/packer_snapshot")
if loaded then
loaded, snapshot = pcall(fn.json_decode, snapshot)
astronvim.updater.snapshot = type(snapshot) == "table" and snapshot or nil
end
if not loaded then
vim.api.nvim_err_writeln "Error loading packer snapshot"
end
end
function astronvim.updater.version()
local version = astronvim.install.version or git.current_version(false)
if version then
astronvim.notify("Version: " .. version)
end
end
local function attempt_update(target)
if options.channel == "stable" or options.commit then
return git.checkout(target, false)
else
return git.pull(false)
end
end
local cancelled_message = { { "Update cancelled", "WarningMsg" } }
function astronvim.updater.update()
if not git.is_repo() then
astronvim.notify("Updater not available for non-git installations", "error")
return
end
for remote, entry in pairs(options.remotes and options.remotes or {}) do
local url = git.parse_remote_url(entry)
local current_url = git.remote_url(remote, false)
local check_needed = false
if not current_url then
git.remote_add(remote, url)
check_needed = true
elseif
current_url ~= url
and astronvim.confirm_prompt {
{ "Remote " },
{ remote, "Title" },
{ " is currently set to " },
{ current_url, "WarningMsg" },
{ "\nWould you like us to set it to " },
{ url, "String" },
{ "?" },
}
then
git.remote_update(remote, url)
check_needed = true
end
if check_needed and git.remote_url(remote, false) ~= url then
vim.api.nvim_err_writeln("Error setting up remote " .. remote .. " to " .. url)
return
end
end
local is_stable = options.channel == "stable"
options.branch = is_stable and "main" or options.branch
if not git.fetch(options.remote) then
vim.api.nvim_err_writeln("Error fetching remote: " .. options.remote)
return
end
local local_branch = (options.remote == "origin" and "" or (options.remote .. "_")) .. options.branch
if git.current_branch() ~= local_branch then
astronvim.echo {
{ "Switching to branch: " },
{ options.remote .. "/" .. options.branch .. "\n\n", "String" },
}
if not git.checkout(local_branch, false) then
git.checkout("-b " .. local_branch .. " " .. options.remote .. "/" .. options.branch, false)
end
end
if git.current_branch() ~= local_branch then
vim.api.nvim_err_writeln("Error checking out branch: " .. options.remote .. "/" .. options.branch)
return
end
local source = git.local_head() -- calculate current commit
local target -- calculate target commit
if is_stable then -- if stable get tag commit
options.version = git.latest_version(git.get_versions(options.version or "latest"))
target = git.tag_commit(options.version)
elseif options.commit then -- if commit specified use it
target = git.branch_contains(options.remote, options.branch, options.commit) and options.commit or nil
else -- get most recent commit
target = git.remote_head(options.remote, options.branch)
end
if not source or not target then -- continue if current and target commits were found
vim.api.nvim_err_writeln "Error checking for updates"
return
elseif source == target then
astronvim.echo { { "No updates available", "String" } }
return
elseif -- prompt user if they want to accept update
not options.skip_prompts
and not astronvim.confirm_prompt {
{ "Update available to ", "Title" },
{ is_stable and options.version or target, "String" },
{ "\nContinue?" },
}
then
astronvim.echo(cancelled_message)
return
else -- perform update
local changelog = git.get_commit_range(source, target)
local breaking = git.breaking_changes(changelog)
local breaking_prompt = { { "Update contains the following breaking changes:\n", "WarningMsg" } }
vim.list_extend(breaking_prompt, git.pretty_changelog(breaking))
vim.list_extend(breaking_prompt, { { "\nWould you like to continue?" } })
if #breaking > 0 and not options.skip_prompts and not astronvim.confirm_prompt(breaking_prompt) then
astronvim.echo(cancelled_message)
return
end
local updated = attempt_update(target)
if
not updated
and not options.skip_prompts
and not astronvim.confirm_prompt {
{ "Unable to pull due to local modifications to base files.\n", "ErrorMsg" },
{ "Reset local files and continue?" },
}
then
astronvim.echo(cancelled_message)
return
elseif not updated then
git.hard_reset(source)
updated = attempt_update(target)
end
if not updated then
vim.api.nvim_err_writeln "Error ocurred performing update"
return
end
local summary = {
{ "AstroNvim updated successfully to ", "Title" },
{ git.current_version(), "String" },
{ "!\n", "Title" },
{ "Please restart and run :PackerSync.\n\n", "WarningMsg" },
}
if options.show_changelog and #changelog > 0 then
vim.list_extend(summary, { { "Changelog:\n", "Title" } })
vim.list_extend(summary, git.pretty_changelog(changelog))
end
astronvim.echo(summary)
end
end
+89
View File
@@ -0,0 +1,89 @@
local base = {
Normal = { fg = C.fg, bg = C.bg },
Comment = { fg = C.grey_2, bg = C.none },
Constant = { fg = C.yellow, bg = C.none },
String = { fg = C.green, bg = C.none },
Character = { fg = C.green, bg = C.none },
Number = { fg = C.orange, bg = C.none },
Boolean = { fg = C.blue, bg = C.none },
Float = { fg = C.yellow, bg = C.none },
Identifier = { fg = C.blue, bg = C.none },
Function = { fg = C.yellow, bg = C.none },
Statement = { fg = C.purple, bg = C.none },
Conditional = { fg = C.purple_1, bg = C.none },
Repeat = { fg = C.purple, bg = C.none },
Label = { fg = C.blue, bg = C.none },
Operator = { fg = C.purple, bg = C.none },
Keyword = { fg = C.purple, bg = C.none },
Exception = { fg = C.purple, bg = C.none },
Preproc = { fg = C.yellow, bg = C.none },
Include = { fg = C.purple, bg = C.none },
Define = { fg = C.purple, bg = C.none },
Title = { fg = C.cyan, bg = C.none },
Macro = { fg = C.purple, bg = C.none },
PreCondit = { fg = C.blue, bg = C.none },
Type = { fg = C.blue, bg = C.none },
StorageClass = { fg = C.blue, bg = C.none },
Structure = { fg = C.yellow, bg = C.none },
Typedef = { fg = C.yellow, bg = C.none },
Special = { fg = C.blue, bg = C.none },
SpecialComment = { fg = C.grey, bg = C.none },
Error = { fg = C.red, bg = C.none },
Todo = { fg = C.purple, bg = C.none },
Underlined = { fg = C.cyan, bg = C.none },
Cursor = { fg = C.none, bg = C.none },
ColorColumn = { fg = C.none, bg = C.grey_4 },
CursorLineNr = { fg = C.fg, bg = C.none },
Conceal = { fg = C.grey, bg = C.none },
CursorColumn = { fg = C.none, bg = C.grey_4 },
CursorLine = { fg = C.none, bg = C.grey_8 },
Directory = { fg = C.blue, bg = C.none },
DiffAdd = { fg = C.grey_3, bg = C.green },
DiffChange = { fg = C.yellow, bg = C.none },
DiffDelete = { fg = C.grey_3, bg = C.red },
DiffText = { fg = C.grey_3, bg = C.yellow },
ErrorMsg = { fg = C.red, bg = C.none },
VertSplit = { fg = C.black, bg = C.none },
Folded = { fg = C.grey, bg = C.none },
FoldColumn = { fg = C.none, bg = C.none },
IncSearch = { fg = C.yellow, bg = C.grey },
LineNr = { fg = C.grey_1, bg = C.none },
NonText = { fg = C.grey_1, bg = C.none },
Pmenu = { fg = C.fg, bg = C.black_1 },
PmenuSel = { fg = C.none, bg = C.grey_4 },
PmenuSbar = { fg = C.none, bg = C.grey_3 },
PmenuThumb = { fg = C.none, bg = C.fg },
Question = { fg = C.purple, bg = C.none },
QuickFixLine = { fg = C.grey_3, bg = C.yellow },
Search = { fg = C.grey_3, bg = C.yellow },
SignColumn = { fg = C.none, bg = C.none },
SpecialKey = { fg = C.grey_1, bg = C.none },
SpellBad = { fg = C.red, bg = C.none },
SpellCap = { fg = C.yellow, bg = C.none },
SpellLocal = { fg = C.yellow, bg = C.none },
SpellRare = { fg = C.yellow, bg = C.none },
StatusLine = { fg = C.fg, bg = C.grey_4 },
StatusLineNC = { fg = C.grey, bg = C.none },
StatusLineTerm = { fg = C.fg, bg = C.grey_4 },
StatusLineTermNC = { fg = C.grey_4, bg = C.none },
TabLine = { fg = C.grey, bg = C.none },
TabLineSel = { fg = C.fg, bg = C.none },
TabLineFill = { fg = C.none, bg = C.grey_3 },
Terminal = { fg = C.fg, bg = C.grey_3 },
Visual = { fg = C.none, bg = C.grey_5 },
VisualNOS = { fg = C.grey_5, bg = C.none },
WarningMsg = { fg = C.yellow, bg = C.none },
WildMenu = { fg = C.grey_3, bg = C.blue },
EndOfBuffer = { fg = C.bg, bg = C.none },
CmpItemAbbrDefault = { fg = C.fg },
CmpItemAbbrDeprecatedDefault = { fg = C.grey_2 },
CmpItemAbbrMatchDefault = { fg = C.white },
CmpItemAbbrMatchFuzzyDefault = { fg = C.white },
CmpItemKind = { fg = C.yellow },
CmpItemAbbr = { fg = C.fg },
CmpItemMenuDefault = { fg = C.fg },
FloatBorder = { bg = C.none },
MatchParen = { fg = C.none, bg = C.grey_5 },
}
return base
+76
View File
@@ -0,0 +1,76 @@
local colors = {
none = "NONE",
fg = "#abb2bf",
bg = "",
bg_1 = "#303742",
black = "#181a1f",
black_1 = "#1f1f25",
green = "#98c379",
green_1 = "#89b06d",
green_2 = "#95be76",
white = "#dedede",
white_1 = "#afb2bb",
white_2 = "#c9c9c9",
blue = "#61afef",
blue_1 = "#40d9ff",
blue_2 = "#1b1f27",
blue_3 = "#8094B4",
orange = "#d19a66",
orange_1 = "#ff9640",
orange_2 = "#ff8800",
yellow = "#e5c07b",
yellow_1 = "#ebae34",
yellow_2 = "#d1b071",
red = "#e06c75",
red_1 = "#ec5f67",
red_2 = "#ffbba6",
red_3 = "#cc626a",
red_4 = "#d47d85",
grey = "#5c6370",
grey_1 = "#4b5263",
grey_2 = "#777d86",
grey_3 = "#282c34",
grey_4 = "#2c323c",
grey_5 = "#3e4452",
grey_6 = "#3b4048",
grey_7 = "#5c5c5c",
grey_8 = "#252931",
grey_9 = "#787e87",
grey_10 = "#D3D3D3",
gold = "#ffcc00",
cyan = "#56b6c2",
purple = "#c678dd",
purple_1 = "#a9a1e1",
-- icon colors
c = "#519aba",
css = "#61afef",
deb = "#a1b7ee",
docker = "#384d54",
html = "#de8c92",
jpeg = "#c882e7",
jpg = "#c882e7",
js = "#ebcb8b",
jsx = "#519ab8",
kt = "#7bc99c",
lock = "#c4c720",
lua = "#51a0cf",
mp3 = "#d39ede",
mp4 = "#9ea3de",
out = "#abb2bf",
png = "#c882e7",
py = "#a3b8ef",
rb = "#ff75a0",
robots = "#abb2bf",
rpm = "#fca2aa",
rs = "#dea584",
toml = "#39bf39",
ts = "#519aba",
ttf = "#abb2bf",
vue = "#7bc99c",
woff = "#abb2bf",
woff2 = "#abb2bf",
zip = "#f9d71c",
}
return astronvim.user_plugin_opts("default_theme.colors", colors)
+49
View File
@@ -0,0 +1,49 @@
vim.cmd "highlight clear"
if vim.fn.exists "syntax_on" then
vim.cmd "syntax reset"
end
vim.o.background = "dark"
vim.o.termguicolors = true
vim.g.colors_name = "default_theme"
local user_plugin_opts = astronvim.user_plugin_opts
local utils = require "default_theme.utils"
C = require "default_theme.colors"
local highlights = {}
for _, module in ipairs { "base", "treesitter", "lsp" } do
highlights = vim.tbl_deep_extend("force", highlights, require("default_theme." .. module))
end
for plugin, enabled in
pairs(user_plugin_opts("default_theme.plugins", {
aerial = true,
beacon = false,
bufferline = true,
dashboard = true,
gitsigns = true,
highlighturl = true,
hop = false,
indent_blankline = true,
lightspeed = false,
["neo-tree"] = true,
notify = true,
["nvim-tree"] = false,
["nvim-web-devicons"] = true,
rainbow = true,
symbols_outline = false,
telescope = true,
vimwiki = false,
["which-key"] = true,
}))
do
if enabled then
highlights = vim.tbl_deep_extend("force", highlights, require("default_theme.plugins." .. plugin))
end
end
for group, spec in pairs(user_plugin_opts("default_theme.highlights", highlights)) do
vim.api.nvim_set_hl(0, group, utils.parse_style(spec))
end
+26
View File
@@ -0,0 +1,26 @@
local utils = require "default_theme.utils"
local lsp = {
DiagnosticError = utils.parse_diagnostic_style { fg = C.red_1 },
DiagnosticHint = utils.parse_diagnostic_style { fg = C.yellow_1 },
DiagnosticInfo = utils.parse_diagnostic_style { fg = C.white_2 },
DiagnosticWarn = utils.parse_diagnostic_style { fg = C.orange_1 },
DiagnosticInformation = { fg = C.yellow, bold = true },
DiagnosticTruncateLine = { fg = C.white_1, bold = true },
DiagnosticUnderlineError = { sp = C.red_2, undercurl = true },
DiagnosticUnderlineHint = { sp = C.red_2, undercurl = true },
DiagnosticUnderlineInfo = { sp = C.red_2, undercurl = true },
DiagnosticUnderlineWarn = { sp = C.red_2, undercurl = true },
LspDiagnosticsFloatingError = { fg = C.red_1 },
LspDiagnosticsFloatingHint = { fg = C.yellow_1 },
LspDiagnosticsFloatingInfor = { fg = C.white_2 },
LspDiagnosticsFloatingWarn = { fg = C.orange_1 },
LspFloatWinBorder = { fg = C.white_1 },
LspFloatWinNormal = { fg = C.fg, bg = C.black_1 },
LspReferenceRead = { fg = C.none, bg = C.grey_5 },
LspReferenceText = { fg = C.none, bg = C.grey_5 },
LspReferenceWrite = { fg = C.none, bg = C.grey_5 },
ProviderTruncateLine = { fg = C.white_1 },
}
return lsp
@@ -0,0 +1,30 @@
return {
AerialLine = { fg = C.yellow, bg = C.none },
AerialGuide = { fg = C.grey_2 },
AerialBooleanIcon = { link = "TSBoolean" },
AerialClassIcon = { link = "TSType" },
AerialConstantIcon = { link = "TSConstant" },
AerialConstructorIcon = { link = "TSConstructor" },
AerialFieldIcon = { link = "TSField" },
AerialFunctionIcon = { link = "TSFunction" },
AerialMethodIcon = { link = "TSMethod" },
AerialNamespaceIcon = { link = "TSNamespace" },
AerialNumberIcon = { link = "TSNumber" },
AerialOperatorIcon = { link = "TSOperator" },
AerialTypeParameterIcon = { link = "TSParameter" },
AerialPropertyIcon = { link = "TSProperty" },
AerialStringIcon = { link = "TSString" },
AerialVariableIcon = { link = "TSConstant" },
AerialEnumMemberIcon = { link = "TSField" },
AerialEnumIcon = { link = "TSType" },
AerialFileIcon = { link = "TSURI" },
AerialModuleIcon = { link = "TSNamespace" },
AerialPackageIcon = { link = "TSNamespace" },
AerialInterfaceIcon = { link = "TSType" },
AerialStructIcon = { link = "TSType" },
AerialEventIcon = { link = "TSType" },
AerialArrayIcon = { link = "TSConstant" },
AerialObjectIcon = { link = "TSType" },
AerialKeyIcon = { link = "TSType" },
AerialNullIcon = { link = "TSType" },
}
@@ -0,0 +1 @@
return { Beacon = { bg = C.blue } }
@@ -0,0 +1,21 @@
return {
BufferLineFill = { fg = C.grey_9, bg = C.grey_4 },
BufferLineBackground = { fg = C.grey_9, bg = C.grey_4 },
BufferLineBufferVisible = { fg = C.fg, bg = C.bg },
BufferLineBufferSelected = { fg = C.white, bg = C.bg, bold = true },
BufferLineTab = { fg = C.grey_9, bg = C.bg },
BufferLineTabSelected = { fg = C.fg, bg = C.bg },
BufferLineTabClose = { fg = C.red_4, bg = C.bg },
BufferLineIndicatorSelected = { fg = C.bg, bg = C.bg },
BufferLineSeparator = { fg = C.grey_4, bg = C.grey_4 },
BufferLineSeparatorVisible = { fg = C.bg, bg = C.bg },
BufferLineSeparatorSelected = { fg = C.grey_4, bg = C.grey_4 },
BufferLineCloseButton = { fg = C.grey_9, bg = C.grey_4 },
BufferLineCloseButtonVisible = { fg = C.grey_10, bg = C.bg },
BufferLineCloseButtonSelected = { fg = C.red_4, bg = C.bg },
BufferLineModified = { fg = C.red_4, bg = C.grey_4 },
BufferLineModifiedVisible = { fg = C.fg, bg = C.bg },
BufferLineModifiedSelected = { fg = C.green_2, bg = C.bg },
BufferLineError = { fg = C.red_1, bg = C.red_1 },
BufferLineErrorDiagnostic = { fg = C.red_1, bg = C.red_1 },
}
@@ -0,0 +1,6 @@
return {
DashboardHeader = { fg = C.cyan },
DashboardShortcut = { fg = C.yellow },
DashboardFooter = { fg = C.cyan },
DashboardCenter = { fg = C.blue },
}
@@ -0,0 +1,7 @@
return {
GitSignsAdd = { fg = C.green, bg = C.none },
GitSignsChange = { fg = C.orange_1, bg = C.none },
GitSignsDelete = { fg = C.red_1, bg = C.none },
MoreMsg = { fg = C.green, bold = true },
ModeMsg = { fg = C.grey, bold = true },
}
@@ -0,0 +1 @@
return { HighlightURL = { underline = true } }
@@ -0,0 +1,6 @@
return {
HopNextKey = { fg = C.red, bold = true },
HopNextKey1 = { fg = C.cyan, bold = true },
HopNextKey2 = { fg = C.blue },
HopUnmatched = { fg = C.grey },
}
@@ -0,0 +1,7 @@
return {
IndentBlanklineSpaceChar = { fg = C.grey_6, nocombine = true },
IndentBlanklineChar = { fg = C.grey_6, nocombine = true },
IndentBlanklineContextStart = { fg = C.grey_7, underline = true },
IndentBlanklineContextChar = { fg = C.grey_7, nocombine = true },
IndentBlanklineSpaceCharBlankline = { fg = C.grey_6, nocombine = true },
}
@@ -0,0 +1,14 @@
return {
LightspeedLabel = { fg = C.red_3, underline = true },
LightspeedLabelOverlapped = { fg = C.blue, underline = true },
LightspeedLabelDistant = { fg = C.red_1, underline = true },
LightspeedLabelDistantOverlapped = { fg = C.blue_1, underline = true },
LightspeedShortcut = { fg = C.black, bg = C.red_3, bold = true, underline = true },
LightspeedShortcutOverlapped = { fg = C.black, bg = C.blue, bold = true, underline = true },
LightspeedMaskedChar = { fg = C.green_1 },
LightspeedGreyWash = { fg = C.grey_2, bg = C.none },
LightspeedUnlabeledMatch = { fg = C.white, bold = true },
LightspeedOneCharMatch = { fg = C.green, bg = C.red_3, bold = true },
LightspeedUniqueChar = { fg = C.white, bold = true },
LightspeedPendingOpArea = { fg = C.yellow },
}
@@ -0,0 +1,15 @@
return {
NeoTreeDirectoryIcon = { fg = C.blue },
NeoTreeRootName = { fg = C.fg, bold = true },
NeoTreeFileName = { fg = C.fg },
NeoTreeFileIcon = { fg = C.fg },
NeoTreeFileNameOpened = { fg = C.green },
NeoTreeIndentMarker = { fg = C.blue_3 },
NeoTreeGitAdded = { fg = C.green },
NeoTreeGitConflict = { fg = C.red },
NeoTreeGitModified = { fg = C.orange },
NeoTreeGitUntracked = { fg = C.yellow },
NeoTreeNormal = { bg = C.blue_2 },
NeoTreeNormalNC = { bg = C.blue_2 },
NeoTreeSymbolicLinkTarget = { fg = C.cyan },
}
@@ -0,0 +1,24 @@
return {
NotifyERRORBorder = { fg = C.red },
NotifyWARNBorder = { fg = C.orange_1 },
NotifyINFOBorder = { fg = C.green },
NotifyDEBUGBorder = { fg = C.cyan },
NotifyTRACERBorder = { fg = C.purple },
NotifyERRORIcon = { fg = C.red },
NotifyWARNIcon = { fg = C.orange_1 },
NotifyINFOIcon = { fg = C.green },
NotifyDEBUGIcon = { fg = C.cyan },
NotifyTRACEIcon = { fg = C.purple },
NotifyERRORTitle = { fg = C.red },
NotifyWARNTitle = { fg = C.orange_1 },
NotifyINFOTitle = { fg = C.green },
NotifyDEBUGTitle = { fg = C.cyan },
NotifyTRACETitle = { fg = C.purple },
NotifyERRORBody = { fg = C.fg },
NotifyWARNBody = { fg = C.fg },
NotifyINFOBody = { fg = C.fg },
NotifyDEBUGBody = { fg = C.fg },
NotifyTRACEBody = { fg = C.fg },
NotifyLogTime = { fg = C.grey_2 },
NotifyLogTitle = { fg = C.blue },
}
@@ -0,0 +1,19 @@
return {
NvimTreeFolderIcon = { fg = C.blue },
NvimTreeExecFile = { fg = C.green },
NvimTreeOpenedFile = { fg = C.green },
NvimTreeRootFolder = { fg = C.bg },
NvimTreeEndOfBuffer = { fg = C.bg },
NvimTreeNormal = { bg = C.blue_2 },
NvimTreeNormalNC = { bg = C.blue_2 },
NvimTreeVertSplit = { fg = C.blue_2, bg = C.blue_2 },
NvimTreeImageFile = { fg = C.purple },
NvimTreeSymlink = { fg = C.cyan },
NvimTreeSpecialFile = { fg = C.yellow },
NvimTreeGitDeleted = { fg = C.red },
NvimTreeGitMerge = { fg = C.orange },
NvimTreeGitRenamed = { fg = C.purple },
NvimTreeGitStaged = { fg = C.green },
NvimTreeGitDirty = { fg = C.red },
NvimTreeGitNew = { fg = C.yellow },
}
@@ -0,0 +1,31 @@
return {
DevIconC = { fg = C.c },
DevIconCss = { fg = C.css },
DevIconDeb = { fg = C.deb },
DevIconDockerfile = { fg = C.docker },
DevIconHtml = { fg = C.html },
DevIconJpeg = { fg = C.jpeg },
DevIconJpg = { fg = C.jpg },
DevIconJs = { fg = C.js },
DevIconJsx = { fg = C.jsx },
DevIconKotlin = { fg = C.kt },
DevIconLock = { fg = C.lock },
DevIconLua = { fg = C.lua },
DevIconMp3 = { fg = C.mp3 },
DevIconMp4 = { fg = C.mp4 },
DevIconOut = { fg = C.out },
DevIconPng = { fg = C.png },
DevIconPy = { fg = C.py },
DevIconRb = { fg = C.rb },
DevIconRobots = { fg = C.robots },
DevIconRpm = { fg = C.rpm },
DevIconRs = { fg = C.rs },
DevIconToml = { fg = C.toml },
DevIconTrueTypeFont = { fg = C.ttf },
DevIconTs = { fg = C.ts },
DevIconVue = { fg = C.vue },
DevIconWebOpenFontFormat = { fg = C.woff },
DevIconWebOpenFontFormat2 = { fg = C.woff2 },
DevIconXz = { fg = C.zip },
DevIconZip = { fg = C.zip },
}
@@ -0,0 +1,9 @@
return {
rainbowcol1 = { fg = "Gold" },
rainbowcol2 = { fg = "Orchid" },
rainbowcol3 = { fg = "LightSkyBlue" },
rainbowcol4 = { fg = "Gold" },
rainbowcol5 = { fg = "Orchid" },
rainbowcol6 = { fg = "LightSkyBlue" },
rainbowcol7 = { fg = "Orchid" },
}
@@ -0,0 +1 @@
return { FocusedSymbol = { fg = C.yellow, bg = C.none } }
@@ -0,0 +1,57 @@
return {
TelescopeResultsTitle = { fg = C.green },
TelescopePromptTitle = { fg = C.blue },
TelescopePreviewTitle = { fg = C.purple },
TelescopeResultsBorder = { fg = C.fg },
TelescopePromptBorder = { fg = C.fg },
TelescopePreviewBorder = { fg = C.fg },
TelescopeSelectionCaret = { fg = C.red },
TelescopeMatching = { fg = C.yellow },
TelescopeSelection = { bg = C.grey_5 },
TelescopeMultiSelection = { fg = C.blue },
TelescopeMultiIcon = { fg = C.blue },
TelescopeNormal = { fg = C.fg, bg = C.bg },
TelescopePreviewNormal = { fg = C.fg, bg = C.bg },
TelescopePromptNormal = { fg = C.fg, bg = C.bg },
TelescopeResultsNormal = { fg = C.fg, bg = C.bg },
TelescopeBorder = { fg = C.fg },
TelescopeTitle = { fg = C.fg },
TelescopePromptCounter = { fg = C.grey_1 },
TelescopePromptPrefix = { fg = C.blue },
TelescopePreviewLine = { bg = C.grey_5 },
TelescopePreviewMatch = { fg = C.yellow },
TelescopePreviewPipe = { fg = C.yellow },
TelescopePreviewCharDev = { fg = C.yellow },
TelescopePreviewDirectory = { fg = C.blue },
TelescopePreviewBlock = { fg = C.yellow },
TelescopePreviewLink = { fg = C.blue },
TelescopePreviewSocket = { fg = C.purple },
TelescopePreviewRead = { fg = C.yellow },
TelescopePreviewWrite = { fg = C.purple },
TelescopePreviewExecute = { fg = C.green },
TelescopePreviewHyphen = { fg = C.grey_1 },
TelescopePreviewSticky = { fg = C.blue },
TelescopePreviewSize = { fg = C.green },
TelescopePreviewUser = { fg = C.yellow },
TelescopePreviewGroup = { fg = C.yellow },
TelescopePreviewDate = { fg = C.blue },
TelescopePreviewMessage = { fg = C.fg },
TelescopePreviewMessageFillchar = { fg = C.fg },
TelescopeResultsClass = { fg = C.yellow },
TelescopeResultsConstant = { fg = C.yellow },
TelescopeResultsField = { fg = C.red },
TelescopeResultsFunction = { fg = C.blue },
TelescopeResultsMethod = { fg = C.blue },
TelescopeResultsOperator = { fg = C.cyan },
TelescopeResultsStruct = { fg = C.purple },
TelescopeResultsVariable = { fg = C.red },
TelescopeResultsLineNr = { fg = C.grey_1 },
TelescopeResultsIdentifier = { fg = C.blue },
TelescopeResultsNumber = { fg = C.orange },
TelescopeResultsComment = { fg = C.grey_2 },
TelescopeResultsSpecialComment = { fg = C.grey },
TelescopeResultsDiffChange = { fg = C.none, bg = C.yellow },
TelescopeResultsDiffAdd = { fg = C.none, bg = C.green },
TelescopeResultsDiffDelete = { fg = C.none, bg = C.red },
TelescopeResultsDiffUntracked = { fg = C.none, bg = C.grey_1 },
}
@@ -0,0 +1,14 @@
return {
VimwikiLink = { fg = C.cyan, bg = C.none },
VimwikiHeaderChar = { fg = C.grey, bg = C.none },
VimwikiHR = { fg = C.yellow, bg = C.none },
VimwikiList = { fg = C.orange, bg = C.orange },
VimwikiTag = { fg = C.orange, bg = C.orange },
VimwikiMarkers = { fg = C.grey, bg = C.none },
VimwikiHeader1 = { fg = C.orange, bg = C.none, bold = true },
VimwikiHeader2 = { fg = C.green, bg = C.none, bold = true },
VimwikiHeader3 = { fg = C.blue, bg = C.none, bold = true },
VimwikiHeader4 = { fg = C.cyan, bg = C.none, bold = true },
VimwikiHeader5 = { fg = C.yellow, bg = C.none, bold = true },
VimwikiHeader6 = { fg = C.purple, bg = C.none, bold = true },
}
@@ -0,0 +1,5 @@
return {
WhichKeyFloat = { fg = C.fg },
WhichKeyDesc = { fg = C.blue },
WhichKeyGroup = { fg = C.blue },
}
@@ -0,0 +1,59 @@
local treesitter = {
TSError = { fg = C.red },
TSPunctDelimiter = { fg = C.fg },
TSPunctBracket = { fg = C.fg },
TSPunctSpecial = { fg = C.fg },
TSConstant = { fg = C.yellow },
TSConstBuiltin = { fg = C.orange },
TSConstMacro = { fg = C.red },
TSStringRegex = { fg = C.green },
TSString = { fg = C.green },
TSStringEscap = { fg = C.red },
TSCharacter = { fg = C.green },
TSNumber = { fg = C.orange },
TSBoolean = { fg = C.orange },
TSFloat = { fg = C.green },
TSAnnotation = { fg = C.yellow },
TSAttribute = { fg = C.red },
TSNamespace = { fg = C.purple },
TSFuncBuiltin = { fg = C.blue },
TSFunction = { fg = C.blue },
TSFuncMacro = { fg = C.yellow },
TSParameter = { fg = C.red },
TSParameterReference = { fg = C.cyan },
TSMethod = { fg = C.blue },
TSField = { fg = C.red },
TSProperty = { fg = C.yellow },
TSConstructor = { fg = C.yellow },
TSConditional = { fg = C.purple },
TSRepeat = { fg = C.purple },
TSLabel = { fg = C.blue },
TSKeyword = { fg = C.purple },
TSKeywordFunction = { fg = C.purple },
TSKeywordOperator = { fg = C.purple },
TSOperator = { fg = C.cyan },
TSException = { fg = C.purple },
TSType = { fg = C.blue },
TSTypeBuiltin = { fg = C.blue },
TSStructure = { fg = C.purple },
TSInclude = { fg = C.purple },
TSVariable = { fg = C.red },
TSVariableBuiltin = { fg = C.yellow },
TSText = { fg = C.fg },
TSTextReference = { fg = C.yellow },
TSStrong = { fg = C.blue, style = "bold" },
TSEmphasis = { fg = C.purple, style = "italic" },
TSUnderline = { fg = C.fg },
TSTitle = { fg = C.fg },
TSLiteral = { fg = C.fg },
TSURI = { fg = C.green },
TSTag = { fg = C.red },
TSTagDelimiter = { fg = C.fg },
markdownTSNone = { fg = C.fg },
markdownTSTitle = { fg = C.red },
markdownTSLiteral = { fg = C.green },
markdownTSPunctSpecial = { fg = C.red },
markdownTSPunctDelimiter = { fg = C.fg },
}
return treesitter
+24
View File
@@ -0,0 +1,24 @@
local M = {}
local user_settings = astronvim.user_plugin_opts "default_theme"
function M.parse_diagnostic_style(default)
if type(user_settings.diagnostics_style) == "table" then
default = vim.tbl_deep_extend("force", user_settings.diagnostics_style, default)
elseif type(user_settings.diagnostics_style) == "string" then
default.style = user_settings.diagnostics_style
end
return default
end
function M.parse_style(spec)
if spec.style then
for match in (spec.style .. ","):gmatch "(.-)," do
spec[match] = true
end
spec.style = nil
end
return spec
end
return M
+251
View File
@@ -0,0 +1,251 @@
local config = {
-- Configure AstroNvim updates
updater = {
remote = "origin", -- remote to use
channel = "nightly", -- "stable" or "nightly"
version = "latest", -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY)
branch = "main", -- branch name (NIGHTLY ONLY)
commit = nil, -- commit hash (NIGHTLY ONLY)
pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only)
skip_prompts = false, -- skip prompts about breaking changes
show_changelog = true, -- show the changelog after performing an update
-- remotes = { -- easily add new remotes to track
-- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url
-- ["remote2"] = "github_user/repo", -- GitHub user/repo shortcut,
-- ["remote3"] = "github_user", -- GitHub user assume AstroNvim fork
-- },
},
-- Set colorscheme
colorscheme = "default_theme",
-- set vim options here (vim.<first_key>.<second_key> = value)
options = {
opt = {
relativenumber = true, -- sets vim.opt.relativenumber
},
g = {
mapleader = " ", -- sets vim.g.mapleader
},
},
-- Default theme configuration
default_theme = {
diagnostics_style = { italic = true },
-- Modify the color table
colors = {
fg = "#abb2bf",
},
-- Modify the highlight groups
highlights = function(highlights)
local C = require "default_theme.colors"
highlights.Normal = { fg = C.fg, bg = C.bg }
return highlights
end,
plugins = { -- enable or disable extra plugin highlighting
aerial = true,
beacon = false,
bufferline = true,
dashboard = true,
highlighturl = true,
hop = false,
indent_blankline = true,
lightspeed = false,
["neo-tree"] = true,
notify = true,
["nvim-tree"] = false,
["nvim-web-devicons"] = true,
rainbow = true,
symbols_outline = false,
telescope = true,
vimwiki = false,
["which-key"] = true,
},
},
-- Disable AstroNvim ui features
ui = {
nui_input = true,
telescope_select = true,
},
-- Configure plugins
plugins = {
-- Add plugins, the packer syntax without the "use"
init = {
-- You can disable default plugins as follows:
-- ["goolord/alpha-nvim"] = { disable = true },
-- You can also add new plugins here as well:
-- { "andweeb/presence.nvim" },
-- {
-- "ray-x/lsp_signature.nvim",
-- event = "BufRead",
-- config = function()
-- require("lsp_signature").setup()
-- end,
-- },
},
-- All other entries override the setup() call for default plugins
["null-ls"] = function(config)
local null_ls = require "null-ls"
-- Check supported formatters and linters
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
config.sources = {
-- Set a formatter
null_ls.builtins.formatting.rufo,
-- Set a linter
null_ls.builtins.diagnostics.rubocop,
}
-- set up null-ls's on_attach function
config.on_attach = function(client)
-- NOTE: You can remove this on attach function to disable format on save
if client.resolved_capabilities.document_formatting then
vim.api.nvim_create_autocmd("BufWritePre", {
desc = "Auto format before save",
pattern = "<buffer>",
callback = vim.lsp.buf.formatting_sync,
})
end
end
return config -- return final config table
end,
treesitter = {
ensure_installed = { "lua" },
},
["nvim-lsp-installer"] = {
ensure_installed = { "sumneko_lua" },
},
packer = {
compile_path = vim.fn.stdpath "data" .. "/packer_compiled.lua",
},
},
-- LuaSnip Options
luasnip = {
-- Add paths for including more VS Code style snippets in luasnip
vscode_snippet_paths = {},
-- Extend filetypes
filetype_extend = {
javascript = { "javascriptreact" },
},
},
-- Modify which-key registration
["which-key"] = {
-- Add bindings
register_mappings = {
-- first key is the mode, n == normal mode
n = {
-- second key is the prefix, <leader> prefixes
["<leader>"] = {
-- which-key registration table for normal mode, leader prefix
-- ["N"] = { "<cmd>tabnew<cr>", "New Buffer" },
},
},
},
},
-- CMP Source Priorities
-- modify here the priorities of default cmp sources
-- higher value == higher priority
-- The value can also be set to a boolean for disabling default sources:
-- false == disabled
-- true == 1000
cmp = {
source_priority = {
nvim_lsp = 1000,
luasnip = 750,
buffer = 500,
path = 250,
},
},
-- Extend LSP configuration
lsp = {
-- enable servers that you already have installed without lsp-installer
servers = {
-- "pyright"
},
-- easily add or disable built in mappings added during LSP attaching
mappings = {
n = {
-- ["<leader>lf"] = false -- disable formatting keymap
},
},
-- add to the server on_attach function
-- on_attach = function(client, bufnr)
-- end,
-- override the lsp installer server-registration function
-- server_registration = function(server, opts)
-- require("lspconfig")[server].setup(opts)
-- end,
-- Add overrides for LSP server settings, the keys are the name of the server
["server-settings"] = {
-- example for addings schemas to yamlls
-- yamlls = {
-- settings = {
-- yaml = {
-- schemas = {
-- ["http://json.schemastore.org/github-workflow"] = ".github/workflows/*.{yml,yaml}",
-- ["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}",
-- ["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}",
-- },
-- },
-- },
-- },
},
},
-- Diagnostics configuration (for vim.diagnostics.config({}))
diagnostics = {
virtual_text = true,
underline = true,
},
mappings = {
-- first key is the mode
n = {
-- second key is the lefthand side of the map
["<C-s>"] = { ":w!<cr>", desc = "Save File" },
},
t = {
-- setting a mapping to false will disable it
-- ["<esc>"] = false,
},
},
-- This function is run last
-- good place to configuring augroups/autocommands and custom filetypes
polish = function()
-- Set key binding
-- Set autocommands
vim.api.nvim_create_augroup("packer_conf", { clear = true })
vim.api.nvim_create_autocmd("BufWritePost", {
desc = "Sync packer after modifying plugins.lua",
group = "packer_conf",
pattern = "plugins.lua",
command = "source <afile> | PackerSync",
})
-- Set up custom filetypes
-- vim.filetype.add {
-- extension = {
-- foo = "fooscript",
-- },
-- filename = {
-- ["Foofile"] = "fooscript",
-- },
-- pattern = {
-- ["~/%.config/foo/.*"] = "fooscript",
-- },
-- }
end,
}
return config
+1
View File
@@ -0,0 +1 @@
{"better-escape.nvim": {"commit": "d5ee0ce"}, "FixCursorHold.nvim": {"commit": "1bfb32e"}, "telescope-fzf-native.nvim": {"commit": "6a33ece"}, "packer.nvim": {"commit": "00ec5ad"}, "nvim-notify": {"commit": "7caeaae"}, "nvim-lspconfig": {"commit": "9278dfb"}, "smart-splits.nvim": {"commit": "2af8bc3"}, "null-ls.nvim": {"commit": "ff40739"}, "which-key.nvim": {"commit": "bd4411a"}, "bufferline.nvim": {"commit": "68839d6"}, "cmp-nvim-lsp": {"commit": "affe808"}, "cmp_luasnip": {"commit": "a9de941"}, "friendly-snippets": {"commit": "d27a83a"}, "nvim-colorizer.lua": {"commit": "36c610a"}, "gitsigns.nvim": {"commit": "4883988"}, "SchemaStore.nvim": {"commit": "186e4ad"}, "indent-blankline.nvim": {"commit": "42fe62e"}, "nvim-ts-autotag": {"commit": "044a05c"}, "neo-tree.nvim": {"commit": "c552119"}, "telescope.nvim": {"commit": "d88b44d"}, "nvim-ts-context-commentstring": {"commit": "8834375"}, "Comment.nvim": {"commit": "2c26a00"}, "aerial.nvim": {"commit": "dd35fd7"}, "alpha-nvim": {"commit": "ef27a59"}, "nvim-autopairs": {"commit": "4a95b39"}, "cinnamon.nvim": {"commit": "da5880d"}, "LuaSnip": {"commit": "a12441e"}, "popup.nvim": {"commit": "b7404d3"}, "nvim-web-devicons": {"commit": "8d2c533"}, "neovim-session-manager": {"commit": "4f9129a"}, "nvim-treesitter": {"commit": "f5aa00d"}, "nui.nvim": {"commit": "0f590b7"}, "impatient.nvim": {"commit": "969f2c5"}, "feline.nvim": {"commit": "1ea4267"}, "nvim-lsp-installer": {"commit": "5904749"}, "indent-o-matic": {"commit": "bf37c6e"}, "toggleterm.nvim": {"commit": "8f2e78d"}, "plenary.nvim": {"commit": "968a4b9"}, "bufdelete.nvim": {"commit": "46255e4"}, "nvim-cmp": {"commit": "df6734a"}, "nvim-ts-rainbow": {"commit": "837167f"}, "cmp-path": {"commit": "466b6b8"}, "cmp-buffer": {"commit": "62fc67a"}}
+8
View File
@@ -1,3 +1,7 @@
# Documentation: https://github.com/yshui/picom/wiki
# Config created by Keyitdev https://www.github.com/keyitdev/dotfiles
# Copyright (C) 2022 Keyitdev
fading = true;
fade-in-step = 0.015;
fade-out-step = 0.1;
@@ -12,3 +16,7 @@ refresh-rate = 0
detect-transient = true
log-level = "debug";
opacity-rule: [
"95:class_g = 'Org.gnome.Nautilus'"
];
+11 -13
View File
@@ -1,18 +1,16 @@
[color]
background = #21222C
background2 = #282A36
background3 = #343746
foreground = #F8F8F2
background = #1b1b25
foreground = #dedede
sep = #F8F8F2
white = #FFFFFF
black = #15121C
red = #f07178
green = #c3e88d
yellow = #ffcb6b
blue = #82aaff
purple = #c792ea
cyan = #89ddff
white = #eeffff
black = #15121c
red = #cb5760
green = #999f63
yellow = #d4a067
blue = #6c90a8
purple = #776690
cyan = #528a9b
pink = #ffa8c5
orange = #dd864a
orange = #c87c3e
+541
View File
@@ -0,0 +1,541 @@
; Documentation: https://github.com/polybar/polybar/wiki
; Config created by Keyitdev https://www.github.com/keyitdev/dotfiles
; Copyright (C) 2022 Keyitdev
;; Global WM Settings
[global/wm]
margin-bottom = 0
margin-top = 0
fixed-center = true
include-file = $HOME/.config/polybar/colors.ini
;; Application Settings
[settings]
throttle-output = 5
throttle-output-for = 10
screenchange-reload = true
; Compositing operators
pseudo-transparency = true
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
;; Bar Settings
[bar/main]
modules-left = right1 i3 left1 sep right1 mpd left1 sep right1 network left1
modules-center = right1 date left1
modules-right = right1 temperature sep2 sep2 cpu sep2 sep2 memory left1 sep right1 backlight sep2 sep2 alsa left1 sep right1 battery left1
separator =
monitor =
monitor-fallback =
monitor-strict = false
override-redirect = false
wm-name =
locale =
bottom = false
fixed-center = true
padding = 0
width = 100%
height = 31
offset-x = 0%
offset-y = 0%
radius-top = 0
radius-bottom = 0
background = #002d333f
foreground = ${color.foreground}
dim-value = 1.0
line-size = 2
line-color = ${color.background}
border-top-size = 8
border-top-color = #002d333f
border-left-size = 8
border-left-color = #002d333f
border-right-size = 8
border-right-color = #002d333f
font-0 = "Iosevka Nerd Font:size=12;4"
font-1 = "Iosevka Nerd Font:style=Medium:size=18;4"
font-2 = "feather:size=13;5"
tray-position = right
tray-detached = false
tray-maxsize = 16
tray-background = #002d333f
tray-offset-x = 0
tray-offset-y = 0
tray-padding = 0
tray-scale = 1.0
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
[bar/second]
modules-left = sep2 i3 left1
modules-center = right1 date left1
modules-right =
separator =
; Change it for yourself
monitor = HDMI-1
monitor-fallback =
monitor-strict = false
override-redirect = false
wm-name =
locale =
bottom = false
fixed-center = true
padding = 0
width = 100%
height = 31
offset-x = 0%
offset-y = 0%
radius-top = 0
radius-bottom = 0
background = #002d333f
foreground = ${color.foreground}
dim-value = 1.0
line-size = 2
line-color = ${color.background}
border-top-size = 8
border-top-color = #002d333f
border-left-size = 8
border-left-color = #002d333f
border-right-size = 8
border-right-color = #002d333f
font-0 = "Iosevka Nerd Font:size=12;4"
font-1 = "Iosevka Nerd Font:style=Medium:size=18;4"
font-2 = "feather:size=13;5"
tray-position = right
tray-detached = false
tray-maxsize = 16
tray-background = ${color.background}
tray-offset-x = 0
tray-offset-y = 0
tray-padding = 0
tray-scale = 1.0
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
;; Modules
; Don't delete it, it's important
[glyph]
gleft =
gright =
[module/left1]
type = custom/text
content-background = #002d333f
content-foreground = ${color.background}
content = ${glyph.gleft}
content-font = 2
[module/right1]
type = custom/text
content-background = #002d333f
content-foreground = ${color.background}
content = ${glyph.gright}
content-font = 2
[module/sep]
type = custom/text
content = " "
[module/sep2]
type = custom/text
content = " "
content-foreground = ${color.background}
content-background = ${color.background}
[module/alsa]
type = internal/alsa
interval = 5
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
master-mixer = Master
format-volume = <ramp-volume> <label-volume>
format-volume-background = ${color.background}
format-muted = <label-muted>
format-muted-background = ${color.background}
label-volume = %percentage%%
label-muted =
label-muted-foreground =${color.red}
ramp-volume-0 =
ramp-volume-1 =
ramp-volume-2 =
ramp-headphones-0 =
ramp-volume-foreground = ${color.blue}
[module/backlight]
type = internal/backlight
; Change it for yourself
card = amdgpu_bl0
use-actual-brightness = true
enable-scroll = true
format = <ramp> <label>
format-background = ${color.background}
label =%percentage%%
ramp-0 =
ramp-1 =
ramp-foreground = ${color.yellow}
[module/battery]
type = internal/battery
poll-interval = 2
; Change it for yourself
battery = BAT1
adapter = ADP0
full-at = 99
time-format = %H:%M
format-charging = <label-charging>
format-charging-prefix = ""
format-charging-prefix-foreground = ${color.green}
format-charging-prefix-background = ${color.background}
format-discharging = <label-discharging>
format-discharging-prefix = ""
format-discharging-prefix-foreground = ${color.pink}
format-discharging-prefix-background = ${color.background}
format-full = <label-full>
format-full-prefix =
format-full-prefix-foreground = ${color.red}
format-full-prefix-background = ${color.background}
label-charging = " %percentage%%"
label-charging-background = ${color.background}
label-discharging = " %percentage%%"
label-discharging-background = ${color.background}
label-full = " Full"
label-full-background = ${color.background}
[module/cpu]
type = internal/cpu
interval = 1
format = <label>
format-prefix =
format-prefix-foreground = ${color.green}
format-background = ${color.background}
label = " %percentage%%"
[module/date]
type = internal/date
interval = 1
; Change it for yourself
date = %a %d %b
time = %H:%M
date-alt = %A %d %B %Y
time-alt = %H:%M:%S
format = <label>
format-prefix = " "
format-prefix-foreground = ${color.red}
format-background = ${color.background}
label = %date% %time%
[module/filesystem]
type = internal/fs
interval = 30
mount-0 = /
fixed-values = true
format-mounted = <label-mounted>
format-mounted-prefix =
format-mounted-prefix-foreground = ${color.orange}
format-mounted-background = ${color.background}
format-unmounted = <label-unmounted>
format-unmounted-prefix =
format-unmounted-prefix-foreground = ${color.red}
format-unmounted-background = ${color.background}
label-mounted = " %free%"
label-unmounted = " %mountpoint%: NA"
[module/i3]
type = internal/i3
pin-workspaces = true
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-7 = 8;
ws-icon-8 = 9;
ws-icon-9 = 10;
ws-icon-default =
; Available tags:
; <label-state> (default) - gets replaced with <label-(focused|unfocused|visible|urgent)>
; <label-mode> (default)
format = <label-state><label-mode>
label-mode = %mode%
label-mode-padding = 1
label-mode-background = ${color.background}
label-mode-foreground = ${color.foreground}
label-focused = %icon%
label-focused-foreground = ${color.green}
label-focused-background = ${color.background}
label-focused-underline = ${color.green}
label-focused-padding = 1
label-unfocused = %icon%
label-unfocused-padding = 1
label-unfocused-background = ${color.background}
label-visible = %icon%
label-visible-underline = ${color.purple}
label-visible-padding = 1
label-visible-foreground = ${color.purple}
label-visible-background = ${color.background}
label-urgent = %icon%
label-urgent-foreground = ${color.red}
label-urgent-background = ${color.background}
label-urgent-padding = 1
[module/keyboard]
type = internal/xkeyboard
blacklist-0 = num lock
blacklist-1 = scroll lock
format = <label-layout> <label-indicator>
format-prefix =
format-prefix-foreground = ${color.cyan}
format-foreground = ${color.foreground}
format-background = ${color.background}
label-layout = " %layout%"
label-indicator-on = "%name%"
label-indicator-on-foreground = ${color.cyan}
[module/memory]
type = internal/memory
interval = 1
format = <label>
format-prefix =
format-prefix-foreground = ${color.purple}
format-background = ${color.background}
label = " %gb_used%"
[module/mpd]
type = internal/mpd
interval = 1
format-online = <label-song> <icon-prev> <toggle> <icon-next>
format-online-prefix = " "
format-online-prefix-foreground = ${color.green}
format-online-background = ${color.background}
format-playing = ${self.format-online}
format-paused = ${self.format-online}
format-stopped = ${self.format-online}
format-offline = <label-offline>
format-offline-prefix =
format-offline-prefix-foreground = ${color.red}
format-offline-background = ${color.background}
label-song = " %title%"
label-song-maxlen = 25
label-song-ellipsis = true
label-time = %elapsed% / %total%
label-time-background = ${color.background-alt}
label-time-padding = 1
label-offline = " Offline"
icon-play =
icon-play-foreground = ${color.cyan}
icon-pause =
icon-pause-foreground = ${color.cyan}
icon-stop =
icon-stop-foreground = ${color.red}
icon-next =
icon-next-foreground = ${color.cyan}
icon-prev =
icon-prev-foreground = ${color.cyan}
icon-seekf =
icon-seekb =
icon-random =
icon-repeat =
icon-repeatone =
icon-single =
icon-consume =
toggle-on-foreground = ${color.primary}
toggle-off-foreground = ${color.red}
; Change it for yourself
[module/wired-network]
type = internal/network
interface = eth0
[module/wireless-network]
type = internal/network
interface = wlan0
[module/network]
type = internal/network
interface = wlan0
interval = 1.0
accumulate-stats = true
unknown-as-up = true
format-connected = <label-connected>
format-connected-prefix =
format-connected-prefix-foreground = ${color.orange}
format-connected-background = ${color.background}
format-connected-padding = 0
format-disconnected = <label-disconnected>
format-disconnected-prefix =
format-disconnected-prefix-foreground = ${color.red}
format-disconnected-background = ${color.background}
format-disconnected-padding = 0
label-connected = "%{A1:networkmanager_dmenu &:} %essid% %downspeed%%{A}"
label-disconnected = "%{A1:networkmanager_dmenu &:} Offline%{A}"
; Change it for yourself
[module/wired-network_stats]
type = internal/network
interface = eth0
[module/wireless-network_stats]
type = internal/network
interface = wlan0
[module/network_stats]
type = internal/network
interface = wlan0
interval = 1.0
accumulate-stats = true
unknown-as-up = true
format-connected = <label-connected>
format-connected-prefix =
format-connected-prefix-foreground = ${color.orange}
format-connected-background = ${color.background}
format-connected-padding = 0
format-disconnected = <label-disconnected>
format-disconnected-prefix =
format-disconnected-prefix-foreground = ${color.red}
format-disconnected-background = ${color.background}
format-disconnected-padding = 0
label-connected = "%{A1:networkmanager_dmenu &:} %{F#6C77BB}%{F-} %downspeed%%{A} %{F#6C77BB}%{F-} %upspeed%%{A}"
label-disconnected = "%{A1:networkmanager_dmenu &:} Offline%{A}"
[module/temperature]
type = internal/temperature
interval = 0.5
thermal-zone = 0
warn-temperature = 80
units = true
format = <ramp> <label>
format-background = ${color.background}
format-warn = <ramp> <label-warn>
format-warn-background = ${color.background}
label = %temperature-c%
label-warn = "%temperature-c%"
label-warn-foreground = ${color.red}
ramp-0 =
ramp-1 =
ramp-2 =
ramp-3 =
ramp-4 =
ramp-foreground = ${color.cyan}
[module/title]
type = internal/xwindow
format = <label>
format-prefix =
format-prefix-foreground = ${color.green}
format-foreground = ${color.foreground}
format-background = ${color.background}
label = " %title%"
label-maxlen = 30
label-empty = " Desktop"
[module/uptime]
type = custom/script
exec = ~/.config/polybar/uptime.sh
interval = 1
format-prefix = " "
format-prefix-foreground = ${color.green}
format-foreground = ${color.foreground}
format-background = ${color.background}
+3 -3
View File
@@ -6,8 +6,8 @@ killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch Polybar, using default config location ~/.config/polybar/config.ini
polybar main --config=~/.config/polybar/polybar-square/config.ini &
polybar second --config=~/.config/polybar/polybar-square/config.ini &
# Launch Polybar, using default config location ~/.config/polybar/config
polybar main --config=~/.config/polybar/config.ini &
polybar second --config=~/.config/polybar/config.ini &
echo "Polybar launched..."
-478
View File
@@ -1,478 +0,0 @@
; Documentation: https://github.com/polybar/polybar/wiki
; Config created by Keyitdev https://www.github.com/keyitdev/dotfiles
; Copyright (C) 2022 Keyitdev
;; Global WM Settings
[global/wm]
; Adjust the _NET_WM_STRUT_PARTIAL top value
; Used for top aligned bars
margin-bottom = 0
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
; Used for bottom aligned bars
margin-top = 0
;; File Inclusion
; include an external file, like module file, etc.
include-file = ~/.config/polybar/colors.ini
include-file = ~/.config/polybar/polybar-rounded/modules/glyphs.ini
include-file = ~/.config/polybar/polybar-rounded/modules/battery.ini
include-file = ~/.config/polybar/polybar-rounded/modules/backlight.ini
include-file = ~/.config/polybar/polybar-rounded/modules/cpu.ini
include-file = ~/.config/polybar/polybar-rounded/modules/date.ini
include-file = ~/.config/polybar/polybar-rounded/modules/filesystem.ini
include-file = ~/.config/polybar/polybar-rounded/modules/i3.ini
include-file = ~/.config/polybar/polybar-rounded/modules/memory.ini
include-file = ~/.config/polybar/polybar-rounded/modules/alsa.ini
include-file = ~/.config/polybar/polybar-rounded/modules/sep.ini
include-file = ~/.config/polybar/polybar-rounded/modules/temperature.ini
include-file = ~/.config/polybar/polybar-rounded/modules/network.ini
include-file = ~/.config/polybar/polybar-rounded/modules/network_mini.ini
include-file = ~/.config/polybar/polybar-rounded/modules/mpd.ini
include-file = ~/.config/polybar/polybar-rounded/modules/uptime.ini
include-file = ~/.config/polybar/polybar-rounded/modules/keyboard.ini
fixed-center = true
;; Application Settings
[settings]
; The throttle settings lets the eventloop swallow up til X events
; if they happen within Y millisecond after first event was received.
; This is done to prevent flood of update event.
;
; For example if 5 modules emit an update event at the same time, we really
; just care about the last one. But if we wait too long for events to swallow
; the bar would appear sluggish so we continue if timeout
; expires or limit is reached.
throttle-output = 5
throttle-output-for = 10
; Time in milliseconds that the input handler will wait between processing events
;throttle-input-for = 30
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
screenchange-reload = false
; Compositing operators
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
compositing-background = source
compositing-foreground = over
compositing-overline = over
compositing-underline = over
compositing-border = over
; Define fallback values used by all module formats
;format-foreground =
;format-background =
;format-underline =
;format-overline =
;format-spacing =
;format-padding =
;format-margin =
;format-offset =
; Enables pseudo-transparency for the bar
; If set to true the bar can be transparent without a compositor.
pseudo-transparency = false
;; Bar Settings
[bar/main]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor =
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = false
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 31
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = #002d333f
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${color.foreground}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0
radius-bottom = 0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 2
line-color = ${color.background}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
;border-bottom-size = 0
;border-bottom-color = ${color.foreground}
; adding space on top of polybar
border-top-size = 8
border-top-color = #002d333f
border-left-size = 8
border-left-color = #002d333f
border-right-size = 8
border-right-color = #002d333f
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
;module-margin-left = 1
;module-margin-right = 1
; Fonts are defined using <font-name>;<vertical-offset>
font-0 = "Iosevka Nerd Font:size=12;4"
font-1 = "Iosevka Nerd Font:style=Medium:size=18;4"
font-2 = "feather:size=13;5"
#modules-left = sep2 i3 left1 sep right1 network_mini left1 sep right1 mpd left1 sep right1 uptime left1
#modules-center = right1 date left1
#modules-right = right1 temperature left1 sep right1 cpu left1 sep right1 memory left1 sep right1 filesystem left1 sep right1 backlight left1 sep right1 alsa left1 sep right1 battery left1 sep right1
modules-left = sep2 i3 left1 sep right1 network_mini left1
modules-center = right1 date left1
modules-right = right1 temperature left1 sep right1 cpu left1 sep right1 memory left1 sep right1 filesystem left1 sep right1 backlight left1 sep right1 alsa left1 sep right1 battery left1 sep right1
; The separator will be inserted between the output of each module
separator =
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name =
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.background}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
;;wm-restack =
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click =
cursor-scroll =
[bar/second]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = HDMI-1
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = false
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 31
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = #002d333f
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${color.foreground}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0
radius-bottom = 0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 2
line-color = ${color.background}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
;border-bottom-size = 0
;border-bottom-color = ${color.foreground}
; adding space on top of polybar
border-top-size = 8
border-top-color = #002d333f
border-left-size = 8
border-left-color = #002d333f
border-right-size = 8
border-right-color = #002d333f
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding = 0
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
;module-margin-left = 1
;module-margin-right = 1
; Fonts are defined using <font-name>;<vertical-offset>
font-0 = "Iosevka Nerd Font:size=12;4"
font-1 = "Iosevka Nerd Font:style=Medium:size=18;4"
font-2 = "feather:size=13;5"
#modules-left = sep2 i3 left1 sep right1 network_mini left1 sep right1 mpd left1 sep right1 uptime left1
#modules-center = right1 date left1
#modules-right = right1 temperature left1 sep right1 cpu left1 sep right1 memory left1 sep right1 filesystem left1 sep right1 backlight left1 sep right1 alsa left1 sep right1 battery left1 sep right1
modules-left = sep2 i3 left1
modules-center = right1 date left1
modules-right =
; The separator will be inserted between the output of each module
separator =
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name =
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${color.background}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 0
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
;;wm-restack =
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click =
cursor-scroll =
@@ -1,74 +0,0 @@
[module/alsa]
type = internal/alsa
; Soundcard to be used
; Usually in the format hw:# where # is the card number
; You can find the different card numbers in `/proc/asound/cards`
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
; Name of the master, speaker and headphone mixers
; Use the following command to list available mixer controls:
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
; If master, speaker or headphone-soundcard isn't the default,
; use `amixer -c # scontrols` instead where # is the number
; of the master, speaker or headphone soundcard respectively
;
; Default: Master
master-mixer = Master
; Optionally define speaker and headphone mixers
; Default: none
;;speaker-mixer = Speaker
; Default: none
;;headphone-mixer = Headphone
; NOTE: This is required if headphone_mixer is defined
; Use the following command to list available device controls
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
; You may also need to use `amixer -c # controls` as above for the mixer names
; Default: none
;;headphone-id = 9
; Use volume mapping (similar to amixer -M and alsamixer), where the increase in volume is linear to the ear
; Default: false
;;mapped = true
; Interval for volume increase/decrease (in percent points)
; Default: 5
interval = 5
; Available tags:
; <label-volume> (default)
; <ramp-volume>
; <bar-volume>
format-volume = <ramp-volume> <label-volume>
format-volume-background = ${color.background}
; Available tags:
; <label-muted> (default)
; <ramp-volume>
; <bar-volume>
format-muted = <label-muted>
format-muted-background = ${color.background}
; Available tokens:
; %percentage% (default)
label-volume = %percentage%%
ramp-volume-foreground = ${color.blue}
; Available tokens:
; %percentage% (default
label-muted =
label-muted-foreground =${color.red}
; Only applies if <ramp-volume> is used
ramp-volume-0 =
ramp-volume-1 =
ramp-volume-2 =
; If defined, it will replace <ramp-volume> when
; headphones are plugged in to `headphone_control_numid`
; If undefined, <ramp-volume> will be used for both
; Only applies if <ramp-volume> is used
ramp-headphones-0 =
@@ -1,47 +0,0 @@
[module/backlight]
type = internal/backlight
; Use the following command to list available cards:
; $ ls -1 /sys/class/backlight/
card = amdgpu_bl0
; (unreleased)
; Use the `/sys/class/backlight/actual-brightness` file
; rather than the regular `brightness` file.
; Defaults to true unless the specified card is an amdgpu backlight.
use-actual-brightness = true
; Enable changing the backlight with the scroll wheel
; NOTE: This may require additional configuration on some systems. Polybar will
; write to `/sys/class/backlight/${self.card}/brightness` which requires polybar
; to have write access to that file.
; DO NOT RUN POLYBAR AS ROOT.
; The recommended way is to add the user to the
; `video` group and give that group write-privileges for the `brightness` file.
; See the ArchWiki for more information:
; https://wiki.archlinux.org/index.php/Backlight#ACPI
; Default: false
enable-scroll = true
; Available tags:
; <label> (default)
; <ramp>
; <bar>
format = <ramp> <label>
; Available tokens:
; %percentage% (default)
label =%percentage%%
ramp-foreground = ${color.yellow}
format-background = ${color.background}
; Only applies if <ramp> is used
ramp-0 =
ramp-1 =
; Only applies if <bar> is used
bar-width = 10
bar-indicator = |
bar-fill =
bar-empty =
@@ -1,98 +0,0 @@
[module/battery]
type = internal/battery
; This is useful in case the battery never reports 100% charge
full-at = 99
; Use the following command to list batteries and adapters:
; $ ls -1 /sys/class/power_supply/
battery = BAT1
adapter = ADP0
; If an inotify event haven't been reported in this many
; seconds, manually poll for new values.
;
; Needed as a fallback for systems that don't report events
; on sysfs/procfs.
;
; Disable polling by setting the interval to 0.
;
; Default: 5
poll-interval = 2
; see "man date" for details on how to format the time string
; NOTE: if you want to use syntax tags here you need to use %%{...}
; Default: %H:%M:%S
time-format = %H:%M
; Available tags:
; <label-charging> (default)
; <bar-capacity>
; <ramp-capacity>
; <animation-charging>
format-charging = <label-charging>
format-charging-prefix = ""
format-charging-prefix-foreground = ${color.green}
format-charging-prefix-background = ${color.background}
; Available tags:
; <label-discharging> (default)
; <bar-capacity>
; <ramp-capacity>
; <animation-discharging>
format-discharging = <label-discharging>
format-discharging-prefix = ""
format-discharging-prefix-foreground = ${color.pink}
format-discharging-prefix-background = ${color.background}
; Available tags:
; <label-full> (default)
; <bar-capacity>
; <ramp-capacity>
format-full = <label-full>
format-full-prefix =
format-full-prefix-foreground = ${color.red}
format-full-prefix-background = ${color.background}
; Available tokens:
; %percentage% (default)
; %time%
; %consumption% (shows current charge rate in watts)
label-charging = " %percentage%%"
label-charging-background = ${color.background}
; Available tokens:
; %percentage% (default)
; %time%
; %consumption% (shows current discharge rate in watts)
label-discharging = " %percentage%%"
label-discharging-background = ${color.background}
; Available tokens:
; %percentage% (default)
label-full = " Full"
label-full-background = ${color.background}
; Only applies if <ramp-capacity> is used
ramp-capacity-0 =
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
; Only applies if <bar-capacity> is used
;bar-capacity-width = 10
; Only applies if <animation-charging> is used
animation-charging-0 =
animation-charging-1 =
; Framerate in milliseconds
animation-charging-framerate = 750
; Only applies if <animation-discharging> is used
;;animation-discharging-0 = ${battery.anim0}
;;animation-discharging-1 = ${battery.anim1}
; Framerate in milliseconds
;animation-discharging-framerate = 500
@@ -1,32 +0,0 @@
[module/cpu]
type = internal/cpu
; Seconds to sleep between updates
; Default: 1
interval = 1
; Available tags:
; <label> (default)
; <bar-load>
; <ramp-load>
; <ramp-coreload>
;;format = <label> <ramp-coreload>
format = <label>
format-prefix =
format-prefix-foreground = ${color.green}
format-background = ${color.background}
; Available tokens:
; %percentage% (default) - total cpu load averaged over all cores
; %percentage-sum% - Cumulative load on all cores
; %percentage-cores% - load percentage for each core
; %percentage-core[1-9]% - load percentage for specific core
label = " %percentage%%"
; Spacing between individual per-core ramps
;;ramp-coreload-spacing = 1
;;ramp-coreload-0 = ${cpu.load0}
;;ramp-coreload-1 = ${cpu.load1}
;;ramp-load-0 = ${cpu.load0}
;;ramp-load-1 = ${cpu.load1}
@@ -1,30 +0,0 @@
[module/date]
type = internal/date
; Seconds to sleep between updates
; Default: 1.0
interval = 1
; See "https://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
; NOTE: if you want to use syntax tags here you need to use %%{...}
date = %a %d %b
; Optional time format
time = %H:%M
; if `date-alt` or `time-alt` is defined, clicking
; the module will toggle between formats
date-alt = %A %d %B %Y
time-alt = %H:%M:%S
; Available tags:
; <label> (default)
format = <label>
format-prefix = " "
format-prefix-foreground = ${color.red}
format-background = ${color.background}
; Available tokens:
; %date%
; %time%
; Default: %date%
label = %date% %time%
@@ -1,53 +0,0 @@
[module/filesystem]
type = internal/fs
; Mountpoints to display
mount-0 = /
;;mount-1 = /home
;;mount-2 = /var
; Seconds to sleep between updates
; Default: 30
interval = 30
; Display fixed precision values
; Default: false
fixed-values = true
; Spacing between entries
; Default: 2
;;spacing = 4
; Available tags:
; <label-mounted> (default)
; <bar-free>
; <bar-used>
; <ramp-capacity>
format-mounted = <label-mounted>
format-mounted-prefix =
format-mounted-prefix-foreground = ${color.orange}
format-mounted-background = ${color.background}
; Available tags:
; <label-unmounted> (default)
format-unmounted = <label-unmounted>
format-unmounted-prefix =
format-unmounted-prefix-foreground = ${color.red}
format-unmounted-background = ${color.background}
; Available tokens:
; %mountpoint%
; %type%
; %fsname%
; %percentage_free%
; %percentage_used%
; %total%
; %free%
; %used%
; Default: %mountpoint% %percentage_free%%
label-mounted = " %free%"
; Available tokens:
; %mountpoint%
; Default: %mountpoint% is not mounted
label-unmounted = " %mountpoint%: NA"
@@ -1,17 +0,0 @@
[glyph]
gleft =
gright =
[module/left1]
type = custom/text
content-background = #002d333f
content-foreground = ${color.background}
content = ${glyph.gleft}
content-font = 2
[module/right1]
type = custom/text
content-background = #002d333f
content-foreground = ${color.background}
content = ${glyph.gright}
content-font = 2
@@ -1,120 +0,0 @@
[module/i3]
type = internal/i3
; Only show workspaces defined on the same output as the bar
;
; Useful if you want to show monitor specific workspaces
; on different bars
;
; Default: false
pin-workspaces = true
; This will split the workspace name on ':'
; Default: false
;;strip-wsnumbers = true
; Sort the workspaces by index instead of the default
; sorting that groups the workspaces by output
; Default: false
;;index-sort = true
; Create click handler used to focus workspace
; Default: true
;;enable-click = false
; Create scroll handlers used to cycle workspaces
; Default: true
;;enable-scroll = false
; Wrap around when reaching the first/last workspace
; Default: true
;;wrapping-scroll = false
; Set the scroll cycle direction
; Default: true
;;reverse-scroll = false
; Use fuzzy (partial) matching on labels when assigning
; icons to workspaces
; Example: code;♚ will apply the icon to all workspaces
; containing 'code' in the label
; Default: false
;;fuzzy-match = true
; ws-icon-[0-9]+ = label;icon
; NOTE: The label needs to match the name of the i3 workspace
ws-icon-0 = 1;
ws-icon-1 = 2;
ws-icon-2 = 3;
ws-icon-3 = 4;
ws-icon-4 = 5;
ws-icon-5 = 6;
ws-icon-6 = 7;
ws-icon-7 = 8;
ws-icon-8 = 9;
ws-icon-9 = 10;
ws-icon-default =
; NOTE: You cannot skip icons, e.g. to get a ws-icon-6
; you must also define a ws-icon-5.
; Available tags:
; <label-state> (default) - gets replaced with <label-(focused|unfocused|visible|urgent)>
; <label-mode> (default)
format = <label-state><label-mode>
; Available tokens:
; %mode%
; Default: %mode%
label-mode = %mode%
label-mode-padding = 1
label-mode-background = ${color.background}
label-mode-foreground = ${color.foreground}
; Available tokens:
; %name%
; %icon%
; %index%
; %output%
; Default: %icon% %name%]
label-focused = %icon%
label-focused-foreground = ${color.green}
label-focused-background = ${color.background}
label-focused-underline = ${color.green}
label-focused-padding = 1
; Available tokens:
; %name%
; %icon%
; %index%
; %output%
; Default: %icon% %name%
label-unfocused = %icon%
label-unfocused-padding = 1
label-unfocused-background = ${color.background}
; label-unfocused-underline = ${color.blue}
; Available tokens:
; %name%
; %icon%
; %index%
; %output%
; Default: %icon% %name%
label-visible = %icon%
label-visible-underline = ${color.purple}
label-visible-padding = 1
label-visible-foreground = ${color.purple}
label-visible-background = ${color.background}
; Available tokens:
; %name%
; %icon%
; %index%
; %output%
; Default: %icon% %name%
label-urgent = %icon%
label-urgent-foreground = ${color.red}
label-urgent-background = ${color.background}
label-urgent-padding = 1
; Separator in between workspaces
;;label-separator = |
;;label-separator-padding = 2
;;label-separator-foreground = #ffb52a
@@ -1,27 +0,0 @@
[module/keyboard]
type = internal/xkeyboard
; List of indicators to ignore
blacklist-0 = num lock
blacklist-1 = scroll lock
; Available tags:
; <label-layout> (default)
; <label-indicator> (default)
format = <label-layout> <label-indicator>
format-prefix =
format-prefix-foreground = ${color.cyan}
format-foreground = ${color.foreground}
format-background = ${color.background}
; Available tokens:
; %layout%
; %name%
; %number%
; Default: %layout%
label-layout = " %layout%"
; Available tokens:
; %name%
; Default: %name%
label-indicator-on = "%name%"
label-indicator-on-foreground = ${color.cyan}
@@ -1,51 +0,0 @@
[module/memory]
type = internal/memory
; Seconds to sleep between updates
; Default: 1
interval = 1
; Available tags:
; <label> (default)
; <bar-used>
; <bar-free>
; <ramp-used>
; <ramp-free>
; <bar-swap-used>
; <bar-swap-free>
; <ramp-swap-used>
; <ramp-swap-free>
format = <label>
format-prefix =
format-prefix-foreground = ${color.purple}
format-background = ${color.background}
; Available tokens:
; %percentage_used% (default)
; %percentage_free%
; %gb_used%
; %gb_free%
; %gb_total%
; %mb_used%
; %mb_free%
; %mb_total%
; %percentage_swap_used%
; %percentage_swap_free%
; %mb_swap_total%
; %mb_swap_free%
; %mb_swap_used%
; %gb_swap_total%
; %gb_swap_free%
; %gb_swap_used%
label = " %gb_used%"
; Only applies if <ramp-used> is used
;;ramp-used-0 = ${memory.used0}
;;ramp-used-1 = ${memory.used1}
;;ramp-used-2 = ${memory.used2}
; Only applies if <ramp-free> is used
;;ramp-free-0 = ${memory.free0}
;;ramp-free-1 = ${memory.free1}
;;ramp-free-2 = ${memory.free2}
@@ -1,96 +0,0 @@
[module/mpd]
type = internal/mpd
; Host where mpd is running (either ip or domain name)
; Can also be the full path to a unix socket where mpd is running.
;;host = 127.0.0.1
;;port = 6600
;;password = mysecretpassword
; Seconds to sleep between progressbar/song timer sync
; Default: 1
interval = 1
; Available tags:
; <label-song> (default)
; <label-time>
; <bar-progress>
; <toggle> - gets replaced with <icon-(pause|play)>
; <toggle-stop> - gets replaced with <icon-(stop|play)>
; <icon-random>
; <icon-repeat>
; <icon-repeatone> (deprecated)
; <icon-single> - Toggle playing only a single song. Replaces <icon-repeatone>
; <icon-consume>
; <icon-prev>
; <icon-stop>
; <icon-play>
; <icon-pause>
; <icon-next>
; <icon-seekb>
; <icon-seekf>
format-online = <label-song> <icon-prev> <toggle> <icon-next>
format-online-prefix = " "
format-online-prefix-foreground = ${color.green}
format-online-background = ${color.background}
;format-playing = ${self.format-online}
;format-paused = ${self.format-online}
;fformat-stopped = ${self.format-online}
; Available tags:
; <label-offline>
format-offline = <label-offline>
format-offline-prefix =
format-offline-prefix-foreground = ${color.red}
format-offline-background = ${color.background}
; Available tokens:
; %artist%
; %album-artist%
; %album%
; %date%
; %title%
; Default: %artist% - %title%
label-song = " %title%"
label-song-maxlen = 25
label-song-ellipsis = true
; Available tokens:
; %elapsed%
; %total%
; Default: %elapsed% / %total%
label-time = %elapsed% / %total%
label-time-background = ${color.background-alt}
label-time-padding = 1
; Available tokens:
; None
label-offline = " Offline"
; Only applies if <icon-X> is used
icon-play =
icon-play-foreground = ${color.cyan}
icon-pause =
icon-pause-foreground = ${color.cyan}
icon-stop =
icon-stop-foreground = ${color.red}
icon-next =
icon-next-foreground = ${color.cyan}
icon-prev =
icon-prev-foreground = ${color.cyan}
icon-seekf =
icon-seekb =
icon-random =
icon-repeat =
icon-repeatone =
icon-single =
icon-consume =
; Used to display the state of random/repeat/repeatone/single
; Only applies if <icon-[random|repeat|repeatone|single]> is used
toggle-on-foreground = ${color.primary}
toggle-off-foreground = ${color.red}
; Only applies if <bar-progress> is used
;;bar-progress-width = 45
;;bar-progress-indicator = |
;;bar-progress-fill = ─
;;bar-progress-empty = ─

Some files were not shown because too many files have changed in this diff Show More