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
+15 -19
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,12 +40,13 @@ alias nv="nvim"
alias la="ls -alF"
alias h="history|grep"
alias c="clear" # I know about ctrl l etc.
alias logout="killall -KILL -u key_user"
alias files="nautilus"
alias helpme="cat ~/.zshrc | less"
alias logout="killall -KILL -u $USER"
alias files="nemo"
alias files.="nemo ."
alias help="cat ~/.zshrc | less"
# cd
alias ..="cd .."
alias ....="cd ../.."
alias ......="cd ../../.."
alias ........="cd ../../../.."
alias ........="cd ../../../.."
+164 -160
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|
### Used themes
**Shell Framework:** [Oh-My-Zsh](https://github.com/ohmyzsh/ohmyzsh)
**Vscode Theme:** [One dark pro](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme)
**Neovim Theme:** [AstroNvim](https://github.com/kabinspace/AstroVim)
**Icons:** [Papirus dark](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
**GTK Theme:** [Tokyo night](https://github.com/Fausto-Korpsvart/Tokyo-Night-GTK-Theme)
**Display Manager Theme:** [Sddm-flower-theme](https://github.com/Keyitdev/sddm-flower-theme)
### Fonts
**Icons:** [Feather](https://github.com/AT-UI/feather-font/blob/master/src/fonts/feather.ttf)
**Interface Font:** [Open sans](https://fonts.google.com/specimen/Open+Sans#standard-styles)
**Monospace Font:** [Roboto mono](https://fonts.google.com/specimen/Roboto+Mono#standard-styles)
**Polybar Font:** [Iosevka nerd font](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Iosevka)
### Dependencies
**Base:** acpi alsa-utils base-devel curl git pulseaudio pulseaudio-alsa xorg xorg-xinit
**Required:** alacritty btop code dunst feh ffcast firefox i3-gaps i3lock-color i3-resurrect libnotify light mpc mpd ncmpcpp nemo neofetch neovim oh-my-zsh-git pacman-contrib papirus-icon-theme picom polybar ranger rofi scrot slop xclip zathura zathura-pdf-mupdf zsh
**Sddm:** qt5-graphicaleffects qt5-quickcontrols2 qt5-svg sddm
**Emoji:** fonts: noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
</details>
## Showcase
|vsc & ncmpcpp & cava|rofi & dunst|
|-|-|
|**Window Manager**|[i3-gaps](https://github.com/Airblader/i3)|
|**Terminal Emulator**|[Kitty](https://github.com/kovidgoyal/kitty)|
|**Bar**|[Polybar](https://github.com/polybar/polybar)|
|**Application Launcher**|[Rofi](https://github.com/davatorium/rofi)|
|**Notification Daemon**|[Dunst](https://github.com/dunst-project/dunst)|
|**Display Manager**|[SDDM](https://github.com/sddm/sddm)|
|**Display Manager Theme**|[SDDM-Astronaut-Theme](https://github.com/Keyitdev/sddm-astronaut-theme)|
|**Lockscreen**|[BetterLockscreen](https://github.com/betterlockscreen/betterlockscreen)|
|**Compositor**|[Picom](https://github.com/yshui/picom)
|**Shell**|[Zsh](https://www.zsh.org/)|
|**Shell Framework**|[Oh-My-Zsh](https://github.com/ohmyzsh/ohmyzsh)|
|**Music Player**|[mpd](https://github.com/MusicPlayerDaemon/MPD), [ncmpcpp](https://github.com/ncmpcpp/ncmpcpp)
|**Text Editor**|[Visual Studio Code](https://github.com/Microsoft/vscode), [Neovim](https://github.com/neovim/neovim)|
|**VSC Colorscheme**|[One Dark Pro](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme)|
|**Neovim Theme**|[AstroVim](https://github.com/kabinspace/AstroVim)
|**GTK Theme**|[Ant (Dracula)](https://github.com/EliverLara/ant)|
|**Icons**|[Papirus Dark](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)|
|**Discord Theme**|[Custom](https://github.com/Keyitdev/BetterDiscord-themes)|
|![](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)|
## ⚡ Dependencies
## Installation
### 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
### Using install script
### Fonts
* **Icons:** [Feather](https://github.com/AT-UI/feather-font/blob/master/src/fonts/feather.ttf)
* **Interface Font:** [Open Sans](https://fonts.google.com/specimen/Open+Sans#standard-styles)
* **Monospace Font:** [Roboto Mono](https://fonts.google.com/specimen/Roboto+Mono#standard-styles)
* **Polybar Font:** [Iosevka Nerd Font](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Iosevka)
## 🛠️ Installation
It's recommended to install the dependencies manually, but if you have any issues with the manual installation, or just want to save time, use the installation script.
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
+13 -374
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
timeout = 0
+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
+28 -21
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 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
+64 -66
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
mpd_music_dir = ~/Music
mpd_connection_timeout = 5
visualizer_data_source = /tmp/mpd.fifo
visualizer_output_name = fifo output
visualizer_in_stereo = yes
visualizer_type = spectrum
visualizer_color = blue, cyan, green, yellow, magenta, red
visualizer_look = xs
visualizer_fps = 60
visualizer_autoscale = yes
visualizer_spectrum_smooth_look = yes
playlist_disable_highlight_delay = 3
allow_for_physical_item_deletion = yes
message_delay_time = 8
song_list_format = $(red){%a}$(end) $(blue){%t}$(end) $R $(green){%b}$(end) $(magenta)({%l})$(end)
song_status_format = {$2%a$2} {$3%b$3} {$5%t$5}
song_library_format = %t
song_window_title_format = {%a-%t}
song_columns_list_format = (25)[red]{a} (44)[green]{t} (25)[blue]{b} $R(7)[magenta]{l}
playlist_display_mode = columns
browser_display_mode = columns
titles_visibility = yes
incremental_seeking = yes
autocenter_mode = yes
header_visibility = yes
statusbar_visibility = yes
cyclic_scrolling = yes
display_bitrate = yes
ignore_leading_the = no
enable_window_title = yes
progressbar_look = ▬▬▬
user_interface = alternative
alternative_header_first_line_format = {$b$2%a$9} {$5%t$9}
alternative_header_second_line_format = {$3%b$9} {$4(%y)$9}
alternative_ui_separator_color = blue
playlist_separate_albums = no
colors_enabled = yes
empty_tag_color = blue
header_window_color = white
display_volume_level = yes
state_line_color = cyan
state_flags_color = magenta
main_window_color = green
color1 = white
color2 = blue
progressbar_color = black
statusbar_color = cyan
window_border_color = red
active_window_border = red
follow_now_playing_lyrics = yes
clock_display_seconds = yes
current_item_prefix = >
current_item_suffix = $(end)
current_item_inactive_column_prefix = >
current_item_inactive_column_suffix = $(end)
now_playing_prefix = $b
now_playing_suffix = $/b
selected_item_prefix = $(white)$b
selected_item_suffix = $/b$(end)
browser_playlist_prefix = "$2Playlist$9 "
modified_item_prefix = ">> "
execute_on_song_change = notify-send "Now Playing" "$(mpc current)"
### Directories ###
ncmpcpp_directory = ~/.config/ncmpcpp
lyrics_directory = ~/.config/ncmpcpp/lyrics
mpd_music_dir = ~/Music
mpd_host = "localhost"
mpd_port = "6600"
mpd_crossfade_time = "2"
### Behaviour ###
message_delay_time = 1
autocenter_mode = "yes"
centered_cursor = "yes"
ignore_leading_the = "yes"
playlist_disable_highlight_delay = 2
allow_for_physical_item_deletion = "no"
### Visualizer ###
visualizer_data_source = /tmp/mpd.fifo
visualizer_output_name = "mpd_visualizer"
visualizer_in_stereo = "yes"
visualizer_look = ●●
visualizer_type = "ellipse"
### Appearance ###
playlist_display_mode = "columns"
browser_display_mode = "columns"
colors_enabled = "yes"
#user_interface = classic
user_interface = alternative
volume_color = "white"
### Window ###
song_window_title_format = "{%a - }{%t}|{%f}"
statusbar_visibility = "no"
header_visibility = "no"
titles_visibility = "no"
### Progress bar ###
progressbar_look = "▂▂▂"
progressbar_color = "black"
progressbar_elapsed_color = "red"
### Alternative UI ###
alternative_ui_separator_color = "black"
alternative_header_first_line_format = $b$5$/b $b$8{%t}|{%f}$/b $/b
alternative_header_second_line_format = {$b{$2 %a$9}{ - $7 %b$9}}
### Song list ###
song_status_format = "$7%t"
song_list_format = "$(blue){%a}$(end) $(red){%t}$(end)$(red)({%l})$(end)
song_library_format = {{%a - %t} (%b)}|{%f}
song_columns_list_format = "(49)[white]{tr}$C(5f)[red]{l}(50)[blue]{a}"
### Colors ###
main_window_color = "white"
current_item_prefix = >>
current_item_suffix = $(end)
current_item_inactive_column_prefix = red
current_item_inactive_column_suffix = red
color1 = "white"
color2 = "red"
+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"}}
+9 -1
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;
@@ -11,4 +15,8 @@ refresh-rate = 0
detect-transient = true
log-level = "debug";
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