aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryo <ryo@nopwd.lol>2024-10-30 20:10:03 +0000
committerryo <ryo@nopwd.lol>2024-10-30 20:10:03 +0000
commitcc6d6fcfc6e8403e87dae9f092e61f0edf8e3cc6 (patch)
treef7f751a92c30b5ef7cf8770004c30479c516fdca
Initial commit
-rw-r--r--README80
-rwxr-xr-xbin/blind.sh12
-rwxr-xr-xbin/record.sh16
-rwxr-xr-xbin/scshot.sh21
-rwxr-xr-xbin/xray.sh9
-rw-r--r--config/alacritty/alacritty.toml13
-rw-r--r--config/i3/config170
-rw-r--r--config/i3blocks/config41
-rwxr-xr-xconfig/i3blocks/scripts/battery10
-rwxr-xr-xconfig/i3blocks/scripts/brightness7
-rwxr-xr-xconfig/i3blocks/scripts/iface10
-rwxr-xr-xconfig/i3blocks/scripts/key_layout4
-rwxr-xr-xconfig/i3blocks/scripts/keymapbin0 -> 6472 bytes
-rwxr-xr-xconfig/i3blocks/scripts/ram14
-rwxr-xr-xconfig/i3blocks/scripts/volume10
-rw-r--r--config/nvim/after/ftplugin/help.vim1
-rw-r--r--config/nvim/after/ftplugin/html.vim11
-rw-r--r--config/nvim/after/ftplugin/man.vim1
-rw-r--r--config/nvim/after/ftplugin/netrw.vim1
-rw-r--r--config/nvim/after/ftplugin/sql.vim1
-rw-r--r--config/nvim/after/ftplugin/tex.vim17
-rw-r--r--config/nvim/after/ftplugin/typst.vim1
-rw-r--r--config/nvim/after/ftplugin/xml.vim2
-rw-r--r--config/nvim/colors/gruvbox.vim1418
-rw-r--r--config/nvim/colors/iceberg.vim502
-rw-r--r--config/nvim/init.vim48
-rw-r--r--config/nvim/spell/en.utf-8.add137
-rw-r--r--config/nvim/spell/en.utf-8.add.splbin0 -> 1346 bytes
-rw-r--r--config/shell/alias60
-rw-r--r--config/shell/func24
-rw-r--r--config/tmux/tmux.conf17
-rw-r--r--config/x11/xinitrc8
-rw-r--r--config/zsh/zshrc77
-rw-r--r--zprofile64
34 files changed, 2807 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..78e8f94
--- /dev/null
+++ b/README
@@ -0,0 +1,80 @@
+Requirements
+------------
+Setup contains some programs so you should install them.
+All of them are included in many linux distros like Arch and Void.
+
+zsh: main shell
+dash: run scripts faster
+i3: window manager
+i3blocks: i3 status bar
+alacritty: terminal emulator
+neovim: best editor
+opendoas: sudo replacement
+brightnessctl: adjust brightness
+firefox: web browser
+pulseaudio: sound server
+pamixer: pulseaudio mixer
+dunst: notification daemon
+setxkbmap: set keyboard map
+unclutter: hide mouse cursor
+
+
+Installation
+------------
+You should copy and rename files to specific places.
+Make a backup from same files in my config and yours then continue.
+
+$ cp -ir config/* ~/.config
+$ cp -i zprofile ~/.zprofile
+$ cp -i bin/* ~/.local/bin
+
+Read '.zprofile' and create directories that you see in variables
+so programs can use them.
+
+
+Folders Structure
+-----------------
+It's not necessary but just to know how my home looks like.
+
+- src
+- doc
+- media
+- pocket
+- proj
+
+
+Zsh config
+----------
+For autosuggestion and syntax highlighting to this steps.
+
+I assume the place for them is 'src' so:
+$ cd ~/src
+
+You need to clone:
+url1 - https://github.com/zsh-users/zsh-autosuggestions
+url2 - https://github.com/zdharma-continuum/fast-syntax-highlighting
+I change the names because they are long
+$ alias hgit='git clone --depth=1 --no-tags --single-branch'
+$ hgit <url1> zsh-as
+$ hgit <url2> zsh-fsh
+
+
+Good to have
+------------
+This programs are not required but I recommend you to install.
+
+tmux: terminal multiplexer
+mpv: media player
+curl: download/upload data
+scrot: screenshot utility
+xclip: clipboard for x11
+ffmpeg: record and convert video
+pulsemixer: tui pulseaudio mixer
+nsxiv: image viewer
+fzf: fuzzy finder
+
+
+Donate
+------
+If you have found my setup interesting feel free to donate.
+https://ryo.nopwd.lol/pub/donate.html
diff --git a/bin/blind.sh b/bin/blind.sh
new file mode 100755
index 0000000..431967c
--- /dev/null
+++ b/bin/blind.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env dash
+
+now=$(TZ=Iran date +%H)
+night=21
+morning=5
+
+if [ "$now" -ge "$night" ] || [ "$now" -le "$morning" ]
+then
+ brightnessctl -q set 200
+else
+ brightnessctl -q set 900
+fi
diff --git a/bin/record.sh b/bin/record.sh
new file mode 100755
index 0000000..be85a2f
--- /dev/null
+++ b/bin/record.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env dash
+
+if [ $# -ne 1 ]; then
+ echo "bad usage"
+ exit
+fi
+
+if [ -n "$(pgrep ffmpeg)" ]; then
+ echo "Already recording"
+ exit
+fi
+
+dunstify "Recording Sarted"
+ffmpeg -v warning -f x11grab -probesize 10M -framerate 25 -i $DISPLAY -crf 30 $1.mkv
+
+dunstify "Recording Stopped"
diff --git a/bin/scshot.sh b/bin/scshot.sh
new file mode 100755
index 0000000..e789c6e
--- /dev/null
+++ b/bin/scshot.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env dash
+
+sspath="$HOME/media"
+ssname="$(date +"%F_%I%M").png"
+
+cd $sspath
+
+if [ "$1" = "a" ]; then
+ scrot $ssname
+else
+ scrot -s $ssname
+fi
+if [ $? -ne 0 ]; then
+ dunstify -t 2000 "Screenshot aborted"
+ exit 0
+fi
+
+xclip -selection clipboard -t image/png $ssname
+
+sleep 1
+dunstify "Screenshot taked" "$sspath\n$ssname"
diff --git a/bin/xray.sh b/bin/xray.sh
new file mode 100755
index 0000000..faf4c0b
--- /dev/null
+++ b/bin/xray.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env dash
+
+if [ -n "$(pgrep xray)" ]; then
+ pkill xray
+ notify-send "Proxy disabled"
+else
+ xray -c $HOME/.config/xray/config.json &
+ notify-send "Proxy enabled"
+fi
diff --git a/config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml
new file mode 100644
index 0000000..69374b7
--- /dev/null
+++ b/config/alacritty/alacritty.toml
@@ -0,0 +1,13 @@
+[colors.normal]
+black = '#707070'
+
+[colors.bright]
+black = '#707070'
+
+[font]
+normal = { family = "Liberation Mono", style = "Regular" }
+size = 8.5
+
+[window]
+dimensions = { columns = 190, lines = 47 }
+padding = { x = 2, y = 2 }
diff --git a/config/i3/config b/config/i3/config
new file mode 100644
index 0000000..46146e2
--- /dev/null
+++ b/config/i3/config
@@ -0,0 +1,170 @@
+# Ryo i3 config
+# https://ryo.nopwd.lol
+# version: alpha
+#
+# i3 userguide:
+# https://i3wm.org/docs/userguide.html
+
+set $mod Mod4
+
+font pango:monospace 8
+
+# =========== for you ===================
+
+# custom shortcuts
+bindsym $mod+Return exec alacritty
+bindsym $mod+d exec rofi -show drun
+bindsym $mod+Shift+b exec firefox
+bindsym $mod+Shift+p exec firefox -P proxy
+bindsym $mod+Shift+x exec xray.sh
+bindsym $mod+Shift+s --release exec scshot.sh
+bindsym $mod+Ctrl+s --release exec scshot.sh a
+
+# custom startups
+exec --no-startup-id alacritty
+exec --no-startup-id nm-applet
+
+exec --no-startup-id alacritty -n dropdown -e tmux new -s drop
+
+# =======================================
+
+floating_modifier $mod
+tiling_drag modifier titlebar
+
+gaps inner 5px
+
+# scratchpad
+for_window [instance="dropdown"] move scratchpad
+
+bindsym $mod+minus scratchpad show
+bindsym $mod+Shift+minus move scratchpad
+
+# fn + function keys
+bindsym XF86AudioRaiseVolume exec pamixer --increase 5 && pkill -SIGRTMIN+2 i3blocks
+bindsym XF86AudioLowerVolume exec pamixer --decrease 5 && pkill -SIGRTMIN+2 i3blocks
+bindsym XF86AudioMute exec pamixer --toggle-mute && pkill -SIGRTMIN+2 i3blocks
+
+bindsym XF86MonBrightnessUp exec brightnessctl set +5% && pkill -SIGRTMIN+3 i3blocks
+bindsym XF86MonBrightnessDown exec brightnessctl set 5%- && pkill -SIGRTMIN+3 i3blocks
+
+# close focused window
+bindsym $mod+Shift+q kill
+
+# change focus
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
+bindsym $mod+h focus left
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+j move left
+bindsym $mod+Shift+k move down
+bindsym $mod+Shift+l move up
+bindsym $mod+Shift+semicolon move right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# split horizontal/vertical
+bindsym $mod+x split h
+bindsym $mod+z split v
+
+# enter fullscreen mode for the focused container
+bindsym $mod+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# workspaces
+set $ws1 "1"
+set $ws2 "2"
+set $ws3 "3"
+set $ws4 "4"
+set $ws5 "5"
+set $ws6 "6"
+set $ws7 "7"
+set $ws8 "8"
+set $ws9 "9"
+set $ws10 "10"
+
+# switch to workspace
+bindsym $mod+1 workspace number $ws1
+bindsym $mod+2 workspace number $ws2
+bindsym $mod+3 workspace number $ws3
+bindsym $mod+4 workspace number $ws4
+bindsym $mod+5 workspace number $ws5
+bindsym $mod+6 workspace number $ws6
+bindsym $mod+7 workspace number $ws7
+bindsym $mod+8 workspace number $ws8
+bindsym $mod+9 workspace number $ws9
+bindsym $mod+0 workspace number $ws10
+bindsym $mod+Tab workspace back_and_forth
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace number $ws1
+bindsym $mod+Shift+2 move container to workspace number $ws2
+bindsym $mod+Shift+3 move container to workspace number $ws3
+bindsym $mod+Shift+4 move container to workspace number $ws4
+bindsym $mod+Shift+5 move container to workspace number $ws5
+bindsym $mod+Shift+6 move container to workspace number $ws6
+bindsym $mod+Shift+7 move container to workspace number $ws7
+bindsym $mod+Shift+8 move container to workspace number $ws8
+bindsym $mod+Shift+9 move container to workspace number $ws9
+bindsym $mod+Shift+0 move container to workspace number $ws10
+
+# restart and reload
+bindsym $mod+Shift+c reload
+bindsym $mod+Shift+r restart
+
+# exit i3
+mode "exit" {
+ bindsym y exec i3-msg exit
+ bindsym Return mode "default"; exec pkill i3-nagbar
+ bindsym Escape mode "default"; exec pkill i3-nagbar
+}
+bindsym $mod+Shift+e mode "exit" exec ~/.local/script/i3nag.sh
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ bindsym j resize shrink width 10 px or 10 ppt
+ bindsym k resize grow height 10 px or 10 ppt
+ bindsym l resize shrink height 10 px or 10 ppt
+ bindsym semicolon resize grow width 10 px or 10 ppt
+
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Right resize grow width 10 px or 10 ppt
+
+ # back to normal
+ bindsym Return mode "default"
+ bindsym Caps_Lock mode "default"
+ bindsym $mod+r mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+# start i3bar
+bar {
+ status_command i3blocks
+}
diff --git a/config/i3blocks/config b/config/i3blocks/config
new file mode 100644
index 0000000..85d0168
--- /dev/null
+++ b/config/i3blocks/config
@@ -0,0 +1,41 @@
+# Ryo i3blocks config
+# https://ryo.nopwd.lol
+# version: alpha
+#
+# i3blocks website:
+# https://vivien.github.io/i3blocks
+
+
+# global properties
+command=scripts/$BLOCK_NAME
+separator=true
+separator_block_width=15
+
+[key_layout]
+label=Lay
+interval=1
+
+[battery]
+label=Bat
+interval=60
+
+[time]
+command=TZ=Iran date '+%H:%M'
+interval=60
+
+[ram]
+label=Ram
+interval=5
+
+[volume]
+label=Vol
+signal=2
+interval=once
+
+[brightness]
+label=Bri
+signal=3
+interval=once
+
+[iface]
+interval=10
diff --git a/config/i3blocks/scripts/battery b/config/i3blocks/scripts/battery
new file mode 100755
index 0000000..c10b7f0
--- /dev/null
+++ b/config/i3blocks/scripts/battery
@@ -0,0 +1,10 @@
+#!/usr/bin/env dash
+
+bat=$(cat /sys/class/power_supply/BAT0/capacity)
+
+echo ": $bat"
+echo "B: $bat"
+
+if [ $bat -lt 10 ]; then
+ echo "#FF0000"
+fi
diff --git a/config/i3blocks/scripts/brightness b/config/i3blocks/scripts/brightness
new file mode 100755
index 0000000..9dc4e5b
--- /dev/null
+++ b/config/i3blocks/scripts/brightness
@@ -0,0 +1,7 @@
+#!/usr/bin/env dash
+
+bcur=$(brightnessctl get)
+bmax=$(brightnessctl max)
+percent=$(echo "$bcur $bmax" | awk '{print int(($1/$2)*100)}')
+
+echo ": $percent%"
diff --git a/config/i3blocks/scripts/iface b/config/i3blocks/scripts/iface
new file mode 100755
index 0000000..cc11a07
--- /dev/null
+++ b/config/i3blocks/scripts/iface
@@ -0,0 +1,10 @@
+#!/usr/bin/env dash
+
+table=$(ip route get 1)
+if [ $? -ne 0 ]; then
+ echo "Offline"
+ exit 0
+fi
+
+ip=$(echo $table | sed -n 's/.*src \([0-9.]\+\).*/\1/p')
+echo $ip
diff --git a/config/i3blocks/scripts/key_layout b/config/i3blocks/scripts/key_layout
new file mode 100755
index 0000000..93fb604
--- /dev/null
+++ b/config/i3blocks/scripts/key_layout
@@ -0,0 +1,4 @@
+#!/usr/bin/env dash
+
+layout=$(~/.config/i3blocks/scripts/keymap | tr '[:lower:]' '[:upper:]')
+echo ": $layout"
diff --git a/config/i3blocks/scripts/keymap b/config/i3blocks/scripts/keymap
new file mode 100755
index 0000000..4d3866d
--- /dev/null
+++ b/config/i3blocks/scripts/keymap
Binary files differ
diff --git a/config/i3blocks/scripts/ram b/config/i3blocks/scripts/ram
new file mode 100755
index 0000000..ebf8309
--- /dev/null
+++ b/config/i3blocks/scripts/ram
@@ -0,0 +1,14 @@
+#!/usr/bin/env dash
+
+ram=$(awk '
+/MemTotal/ { total = $2 }
+/Active:/ { active = $2 }
+END {print int((active/total)*100)}
+' /proc/meminfo)
+
+echo ": $ram%"
+echo "R: $ram"
+
+if [ "$ram" -gt 80 ]; then
+ echo "#FF0000"
+fi
diff --git a/config/i3blocks/scripts/volume b/config/i3blocks/scripts/volume
new file mode 100755
index 0000000..5ad42f3
--- /dev/null
+++ b/config/i3blocks/scripts/volume
@@ -0,0 +1,10 @@
+#!/usr/bin/env dash
+
+case $BLOCK_BUTTON in
+ 3) pamixer --toggle-mute ;; # right click
+ 4) pamixer --increase 5 ;; # scroll up
+ 5) pamixer --decrease 5 ;; # scroll down
+esac
+
+volume=`pamixer --get-volume-human`
+echo ": $volume"
diff --git a/config/nvim/after/ftplugin/help.vim b/config/nvim/after/ftplugin/help.vim
new file mode 100644
index 0000000..2ff5142
--- /dev/null
+++ b/config/nvim/after/ftplugin/help.vim
@@ -0,0 +1 @@
+nnoremap <buffer> q :helpclose<cr>
diff --git a/config/nvim/after/ftplugin/html.vim b/config/nvim/after/ftplugin/html.vim
new file mode 100644
index 0000000..b6e6e3b
--- /dev/null
+++ b/config/nvim/after/ftplugin/html.vim
@@ -0,0 +1,11 @@
+imap <buffer> ;h <h2 id=""></h2><esc>F"i
+imap <buffer> ;p <p><return></p><esc>O
+imap <buffer> ;c <code></code><esc>2b i
+imap <buffer> ;l <ul><cr></ul><esc>O<li></li><esc>2b i
+imap <buffer> ;a <a href=""></a><esc>F"i
+imap <buffer> ;i <li></li><esc>2b i
+imap <buffer> ;! <!-- --><esc>bhi
+imap <buffer> ;g &lt;&gt;<esc>F;a
+imap <buffer> ;s <span class=""></span><esc>F>a
+
+nmap <buffer> <space>c I<!-- <esc>A --><esc>0
diff --git a/config/nvim/after/ftplugin/man.vim b/config/nvim/after/ftplugin/man.vim
new file mode 100644
index 0000000..b1ca580
--- /dev/null
+++ b/config/nvim/after/ftplugin/man.vim
@@ -0,0 +1 @@
+nnoremap <buffer> q <cmd>quit<cr>
diff --git a/config/nvim/after/ftplugin/netrw.vim b/config/nvim/after/ftplugin/netrw.vim
new file mode 100644
index 0000000..1c4acff
--- /dev/null
+++ b/config/nvim/after/ftplugin/netrw.vim
@@ -0,0 +1 @@
+nnoremap <silent> <buffer> x <cmd>q<cr>
diff --git a/config/nvim/after/ftplugin/sql.vim b/config/nvim/after/ftplugin/sql.vim
new file mode 100644
index 0000000..f19b1dc
--- /dev/null
+++ b/config/nvim/after/ftplugin/sql.vim
@@ -0,0 +1 @@
+map <buffer> <Leader>r <cmd>'<,'>w !sqlite3 test.db<cr>
diff --git a/config/nvim/after/ftplugin/tex.vim b/config/nvim/after/ftplugin/tex.vim
new file mode 100644
index 0000000..361d1eb
--- /dev/null
+++ b/config/nvim/after/ftplugin/tex.vim
@@ -0,0 +1,17 @@
+function SetLatexVar()
+ if !exists('b:compit')
+ let b:compit = 1
+ else
+ unlet b:compit
+ endif
+endfunction
+function LatexCompile()
+ if exists('b:compit')
+ call system('pdflatex ' .. expand('%'))
+ endif
+endfunction
+nmap <buffer> <Leader>z <cmd>call system("zathura " .. expand("%:r") .. ".pdf &")<cr>
+nmap <buffer> <Leader>l <Cmd>call SetLatexVar()<Cr>
+imap <buffer> 'l <esc>byei\begin{<esc>A}<cr>\end{}<esc>hpO
+au BufWritePost <buffer> call LatexCompile()
+setlocal indentexpr=""
diff --git a/config/nvim/after/ftplugin/typst.vim b/config/nvim/after/ftplugin/typst.vim
new file mode 100644
index 0000000..365f107
--- /dev/null
+++ b/config/nvim/after/ftplugin/typst.vim
@@ -0,0 +1 @@
+nmap <buffer> <Leader>z <cmd>call system("zathura " .. expand("%:r") .. ".pdf &")<cr>
diff --git a/config/nvim/after/ftplugin/xml.vim b/config/nvim/after/ftplugin/xml.vim
new file mode 100644
index 0000000..38bfb9f
--- /dev/null
+++ b/config/nvim/after/ftplugin/xml.vim
@@ -0,0 +1,2 @@
+imap <buffer> ;n <item><cr><title></title><cr><link>https://nopwd.lol/note/small.html#</link><esc>yyo<pubDate><esc>:r!date -R<cr>d$k$pa</pubDate><esc>"0p:s/link/guid/g<cr><esc>o<description><cr><![CDATA[<cr>]]><cr></description><cr></item><esc>08kf>
+imap <buffer> ;l <esc>vT<yA></<esc>pa><esc>F>a
diff --git a/config/nvim/colors/gruvbox.vim b/config/nvim/colors/gruvbox.vim
new file mode 100644
index 0000000..66246fb
--- /dev/null
+++ b/config/nvim/colors/gruvbox.vim
@@ -0,0 +1,1418 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Retro groove color scheme for Vim
+" Author: morhetz <morhetz@gmail.com>
+" Source: https://github.com/morhetz/gruvbox
+" Last Modified: 12 Aug 2017
+" -----------------------------------------------------------------------------
+
+" Supporting code -------------------------------------------------------------
+" Initialisation: {{{
+
+if version > 580
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+
+let g:colors_name='gruvbox'
+
+if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256
+ finish
+endif
+
+" }}}
+" Global Settings: {{{
+
+if !exists('g:gruvbox_bold')
+ let g:gruvbox_bold=1
+endif
+if !exists('g:gruvbox_italic')
+ if has('gui_running') || $TERM_ITALICS == 'true'
+ let g:gruvbox_italic=1
+ else
+ let g:gruvbox_italic=0
+ endif
+endif
+if !exists('g:gruvbox_undercurl')
+ let g:gruvbox_undercurl=1
+endif
+if !exists('g:gruvbox_underline')
+ let g:gruvbox_underline=1
+endif
+if !exists('g:gruvbox_inverse')
+ let g:gruvbox_inverse=1
+endif
+
+if !exists('g:gruvbox_guisp_fallback') || index(['fg', 'bg'], g:gruvbox_guisp_fallback) == -1
+ let g:gruvbox_guisp_fallback='NONE'
+endif
+
+if !exists('g:gruvbox_improved_strings')
+ let g:gruvbox_improved_strings=0
+endif
+
+if !exists('g:gruvbox_improved_warnings')
+ let g:gruvbox_improved_warnings=0
+endif
+
+if !exists('g:gruvbox_termcolors')
+ let g:gruvbox_termcolors=256
+endif
+
+if !exists('g:gruvbox_invert_indent_guides')
+ let g:gruvbox_invert_indent_guides=0
+endif
+
+if exists('g:gruvbox_contrast')
+ echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead'
+endif
+
+if !exists('g:gruvbox_contrast_dark')
+ let g:gruvbox_contrast_dark='medium'
+endif
+
+if !exists('g:gruvbox_contrast_light')
+ let g:gruvbox_contrast_light='medium'
+endif
+
+let s:is_dark=(&background == 'dark')
+
+" }}}
+" Palette: {{{
+
+" setup palette dictionary
+let s:gb = {}
+
+" fill it with absolute colors
+let s:gb.dark0_hard = ['#1d2021', 234] " 29-32-33
+let s:gb.dark0 = ['#282828', 235] " 40-40-40
+let s:gb.dark0_soft = ['#32302f', 236] " 50-48-47
+let s:gb.dark1 = ['#3c3836', 237] " 60-56-54
+let s:gb.dark2 = ['#504945', 239] " 80-73-69
+let s:gb.dark3 = ['#665c54', 241] " 102-92-84
+let s:gb.dark4 = ['#7c6f64', 243] " 124-111-100
+let s:gb.dark4_256 = ['#7c6f64', 243] " 124-111-100
+
+let s:gb.gray_245 = ['#928374', 245] " 146-131-116
+let s:gb.gray_244 = ['#928374', 244] " 146-131-116
+
+let s:gb.light0_hard = ['#f9f5d7', 230] " 249-245-215
+let s:gb.light0 = ['#fbf1c7', 229] " 253-244-193
+let s:gb.light0_soft = ['#f2e5bc', 228] " 242-229-188
+let s:gb.light1 = ['#ebdbb2', 223] " 235-219-178
+let s:gb.light2 = ['#d5c4a1', 250] " 213-196-161
+let s:gb.light3 = ['#bdae93', 248] " 189-174-147
+let s:gb.light4 = ['#a89984', 246] " 168-153-132
+let s:gb.light4_256 = ['#a89984', 246] " 168-153-132
+
+let s:gb.bright_red = ['#fb4934', 167] " 251-73-52
+let s:gb.bright_green = ['#b8bb26', 142] " 184-187-38
+let s:gb.bright_yellow = ['#fabd2f', 214] " 250-189-47
+let s:gb.bright_blue = ['#83a598', 109] " 131-165-152
+let s:gb.bright_purple = ['#d3869b', 175] " 211-134-155
+let s:gb.bright_aqua = ['#8ec07c', 108] " 142-192-124
+let s:gb.bright_orange = ['#fe8019', 208] " 254-128-25
+
+let s:gb.neutral_red = ['#cc241d', 124] " 204-36-29
+let s:gb.neutral_green = ['#98971a', 106] " 152-151-26
+let s:gb.neutral_yellow = ['#d79921', 172] " 215-153-33
+let s:gb.neutral_blue = ['#458588', 66] " 69-133-136
+let s:gb.neutral_purple = ['#b16286', 132] " 177-98-134
+let s:gb.neutral_aqua = ['#689d6a', 72] " 104-157-106
+let s:gb.neutral_orange = ['#d65d0e', 166] " 214-93-14
+
+let s:gb.faded_red = ['#9d0006', 88] " 157-0-6
+let s:gb.faded_green = ['#79740e', 100] " 121-116-14
+let s:gb.faded_yellow = ['#b57614', 136] " 181-118-20
+let s:gb.faded_blue = ['#076678', 24] " 7-102-120
+let s:gb.faded_purple = ['#8f3f71', 96] " 143-63-113
+let s:gb.faded_aqua = ['#427b58', 66] " 66-123-88
+let s:gb.faded_orange = ['#af3a03', 130] " 175-58-3
+
+" }}}
+" Setup Emphasis: {{{
+
+let s:bold = 'bold,'
+if g:gruvbox_bold == 0
+ let s:bold = ''
+endif
+
+let s:italic = 'italic,'
+if g:gruvbox_italic == 0
+ let s:italic = ''
+endif
+
+let s:underline = 'underline,'
+if g:gruvbox_underline == 0
+ let s:underline = ''
+endif
+
+let s:undercurl = 'undercurl,'
+if g:gruvbox_undercurl == 0
+ let s:undercurl = ''
+endif
+
+let s:inverse = 'inverse,'
+if g:gruvbox_inverse == 0
+ let s:inverse = ''
+endif
+
+" }}}
+" Setup Colors: {{{
+
+let s:vim_bg = ['bg', 'bg']
+let s:vim_fg = ['fg', 'fg']
+let s:none = ['NONE', 'NONE']
+
+" determine relative colors
+if s:is_dark
+ let s:bg0 = s:gb.dark0
+ if g:gruvbox_contrast_dark == 'soft'
+ let s:bg0 = s:gb.dark0_soft
+ elseif g:gruvbox_contrast_dark == 'hard'
+ let s:bg0 = s:gb.dark0_hard
+ endif
+
+ let s:bg1 = s:gb.dark1
+ let s:bg2 = s:gb.dark2
+ let s:bg3 = s:gb.dark3
+ let s:bg4 = s:gb.dark4
+
+ let s:gray = s:gb.gray_245
+
+ let s:fg0 = s:gb.light0
+ let s:fg1 = s:gb.light1
+ let s:fg2 = s:gb.light2
+ let s:fg3 = s:gb.light3
+ let s:fg4 = s:gb.light4
+
+ let s:fg4_256 = s:gb.light4_256
+
+ let s:red = s:gb.bright_red
+ let s:green = s:gb.bright_green
+ let s:yellow = s:gb.bright_yellow
+ let s:blue = s:gb.bright_blue
+ let s:purple = s:gb.bright_purple
+ let s:aqua = s:gb.bright_aqua
+ let s:orange = s:gb.bright_orange
+else
+ let s:bg0 = s:gb.light0
+ if g:gruvbox_contrast_light == 'soft'
+ let s:bg0 = s:gb.light0_soft
+ elseif g:gruvbox_contrast_light == 'hard'
+ let s:bg0 = s:gb.light0_hard
+ endif
+
+ let s:bg1 = s:gb.light1
+ let s:bg2 = s:gb.light2
+ let s:bg3 = s:gb.light3
+ let s:bg4 = s:gb.light4
+
+ let s:gray = s:gb.gray_244
+
+ let s:fg0 = s:gb.dark0
+ let s:fg1 = s:gb.dark1
+ let s:fg2 = s:gb.dark2
+ let s:fg3 = s:gb.dark3
+ let s:fg4 = s:gb.dark4
+
+ let s:fg4_256 = s:gb.dark4_256
+
+ let s:red = s:gb.faded_red
+ let s:green = s:gb.faded_green
+ let s:yellow = s:gb.faded_yellow
+ let s:blue = s:gb.faded_blue
+ let s:purple = s:gb.faded_purple
+ let s:aqua = s:gb.faded_aqua
+ let s:orange = s:gb.faded_orange
+endif
+
+" reset to 16 colors fallback
+if g:gruvbox_termcolors == 16
+ let s:bg0[1] = 0
+ let s:fg4[1] = 7
+ let s:gray[1] = 8
+ let s:red[1] = 9
+ let s:green[1] = 10
+ let s:yellow[1] = 11
+ let s:blue[1] = 12
+ let s:purple[1] = 13
+ let s:aqua[1] = 14
+ let s:fg1[1] = 15
+endif
+
+" save current relative colors back to palette dictionary
+let s:gb.bg0 = s:bg0
+let s:gb.bg1 = s:bg1
+let s:gb.bg2 = s:bg2
+let s:gb.bg3 = s:bg3
+let s:gb.bg4 = s:bg4
+
+let s:gb.gray = s:gray
+
+let s:gb.fg0 = s:fg0
+let s:gb.fg1 = s:fg1
+let s:gb.fg2 = s:fg2
+let s:gb.fg3 = s:fg3
+let s:gb.fg4 = s:fg4
+
+let s:gb.fg4_256 = s:fg4_256
+
+let s:gb.red = s:red
+let s:gb.green = s:green
+let s:gb.yellow = s:yellow
+let s:gb.blue = s:blue
+let s:gb.purple = s:purple
+let s:gb.aqua = s:aqua
+let s:gb.orange = s:orange
+
+" }}}
+" Setup Terminal Colors For Neovim: {{{
+
+if has('nvim')
+ let g:terminal_color_0 = s:bg0[0]
+ let g:terminal_color_8 = s:gray[0]
+
+ let g:terminal_color_1 = s:gb.neutral_red[0]
+ let g:terminal_color_9 = s:red[0]
+
+ let g:terminal_color_2 = s:gb.neutral_green[0]
+ let g:terminal_color_10 = s:green[0]
+
+ let g:terminal_color_3 = s:gb.neutral_yellow[0]
+ let g:terminal_color_11 = s:yellow[0]
+
+ let g:terminal_color_4 = s:gb.neutral_blue[0]
+ let g:terminal_color_12 = s:blue[0]
+
+ let g:terminal_color_5 = s:gb.neutral_purple[0]
+ let g:terminal_color_13 = s:purple[0]
+
+ let g:terminal_color_6 = s:gb.neutral_aqua[0]
+ let g:terminal_color_14 = s:aqua[0]
+
+ let g:terminal_color_7 = s:fg4[0]
+ let g:terminal_color_15 = s:fg1[0]
+endif
+
+" }}}
+" Overload Setting: {{{
+
+let s:hls_cursor = s:orange
+if exists('g:gruvbox_hls_cursor')
+ let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor)
+endif
+
+let s:number_column = s:none
+if exists('g:gruvbox_number_column')
+ let s:number_column = get(s:gb, g:gruvbox_number_column)
+endif
+
+let s:sign_column = s:bg1
+
+if exists('g:gitgutter_override_sign_column_highlight') &&
+ \ g:gitgutter_override_sign_column_highlight == 1
+ let s:sign_column = s:number_column
+else
+ let g:gitgutter_override_sign_column_highlight = 0
+
+ if exists('g:gruvbox_sign_column')
+ let s:sign_column = get(s:gb, g:gruvbox_sign_column)
+ endif
+endif
+
+let s:color_column = s:bg1
+if exists('g:gruvbox_color_column')
+ let s:color_column = get(s:gb, g:gruvbox_color_column)
+endif
+
+let s:vert_split = s:bg0
+if exists('g:gruvbox_vert_split')
+ let s:vert_split = get(s:gb, g:gruvbox_vert_split)
+endif
+
+let s:invert_signs = ''
+if exists('g:gruvbox_invert_signs')
+ if g:gruvbox_invert_signs == 1
+ let s:invert_signs = s:inverse
+ endif
+endif
+
+let s:invert_selection = s:inverse
+if exists('g:gruvbox_invert_selection')
+ if g:gruvbox_invert_selection == 0
+ let s:invert_selection = ''
+ endif
+endif
+
+let s:invert_tabline = ''
+if exists('g:gruvbox_invert_tabline')
+ if g:gruvbox_invert_tabline == 1
+ let s:invert_tabline = s:inverse
+ endif
+endif
+
+let s:italicize_comments = s:italic
+if exists('g:gruvbox_italicize_comments')
+ if g:gruvbox_italicize_comments == 0
+ let s:italicize_comments = ''
+ endif
+endif
+
+let s:italicize_strings = ''
+if exists('g:gruvbox_italicize_strings')
+ if g:gruvbox_italicize_strings == 1
+ let s:italicize_strings = s:italic
+ endif
+endif
+
+" }}}
+" Highlighting Function: {{{
+
+function! s:HL(group, fg, ...)
+ " Arguments: group, guifg, guibg, gui, guisp
+
+ " foreground
+ let fg = a:fg
+
+ " background
+ if a:0 >= 1
+ let bg = a:1
+ else
+ let bg = s:none
+ endif
+
+ " emphasis
+ if a:0 >= 2 && strlen(a:2)
+ let emstr = a:2
+ else
+ let emstr = 'NONE,'
+ endif
+
+ " special fallback
+ if a:0 >= 3
+ if g:gruvbox_guisp_fallback != 'NONE'
+ let fg = a:3
+ endif
+
+ " bg fallback mode should invert higlighting
+ if g:gruvbox_guisp_fallback == 'bg'
+ let emstr .= 'inverse,'
+ endif
+ endif
+
+ let histring = [ 'hi', a:group,
+ \ 'guifg=' . fg[0], 'ctermfg=' . fg[1],
+ \ 'guibg=' . bg[0], 'ctermbg=' . bg[1],
+ \ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2]
+ \ ]
+
+ " special
+ if a:0 >= 3
+ call add(histring, 'guisp=' . a:3[0])
+ endif
+
+ execute join(histring, ' ')
+endfunction
+
+" }}}
+" Gruvbox Hi Groups: {{{
+
+" memoize common hi groups
+call s:HL('GruvboxFg0', s:fg0)
+call s:HL('GruvboxFg1', s:fg1)
+call s:HL('GruvboxFg2', s:fg2)
+call s:HL('GruvboxFg3', s:fg3)
+call s:HL('GruvboxFg4', s:fg4)
+call s:HL('GruvboxGray', s:gray)
+call s:HL('GruvboxBg0', s:bg0)
+call s:HL('GruvboxBg1', s:bg1)
+call s:HL('GruvboxBg2', s:bg2)
+call s:HL('GruvboxBg3', s:bg3)
+call s:HL('GruvboxBg4', s:bg4)
+
+call s:HL('GruvboxRed', s:red)
+call s:HL('GruvboxRedBold', s:red, s:none, s:bold)
+call s:HL('GruvboxGreen', s:green)
+call s:HL('GruvboxGreenBold', s:green, s:none, s:bold)
+call s:HL('GruvboxYellow', s:yellow)
+call s:HL('GruvboxYellowBold', s:yellow, s:none, s:bold)
+call s:HL('GruvboxBlue', s:blue)
+call s:HL('GruvboxBlueBold', s:blue, s:none, s:bold)
+call s:HL('GruvboxPurple', s:purple)
+call s:HL('GruvboxPurpleBold', s:purple, s:none, s:bold)
+call s:HL('GruvboxAqua', s:aqua)
+call s:HL('GruvboxAquaBold', s:aqua, s:none, s:bold)
+call s:HL('GruvboxOrange', s:orange)
+call s:HL('GruvboxOrangeBold', s:orange, s:none, s:bold)
+
+call s:HL('GruvboxRedSign', s:red, s:sign_column, s:invert_signs)
+call s:HL('GruvboxGreenSign', s:green, s:sign_column, s:invert_signs)
+call s:HL('GruvboxYellowSign', s:yellow, s:sign_column, s:invert_signs)
+call s:HL('GruvboxBlueSign', s:blue, s:sign_column, s:invert_signs)
+call s:HL('GruvboxPurpleSign', s:purple, s:sign_column, s:invert_signs)
+call s:HL('GruvboxAquaSign', s:aqua, s:sign_column, s:invert_signs)
+call s:HL('GruvboxOrangeSign', s:orange, s:sign_column, s:invert_signs)
+
+" }}}
+
+" Vanilla colorscheme ---------------------------------------------------------
+" General UI: {{{
+
+" Normal text
+call s:HL('Normal', s:fg1, s:bg0)
+
+" Correct background (see issue #7):
+" --- Problem with changing between dark and light on 256 color terminal
+" --- https://github.com/morhetz/gruvbox/issues/7
+if s:is_dark
+ set background=dark
+else
+ set background=light
+endif
+
+if version >= 700
+ " Screen line that the cursor is
+ call s:HL('CursorLine', s:none, s:bg1)
+ " Screen column that the cursor is
+ hi! link CursorColumn CursorLine
+
+ " Tab pages line filler
+ call s:HL('TabLineFill', s:bg4, s:bg1, s:invert_tabline)
+ " Active tab page label
+ call s:HL('TabLineSel', s:green, s:bg1, s:invert_tabline)
+ " Not active tab page label
+ hi! link TabLine TabLineFill
+
+ " Match paired bracket under the cursor
+ call s:HL('MatchParen', s:none, s:bg3, s:bold)
+endif
+
+if version >= 703
+ " Highlighted screen columns
+ call s:HL('ColorColumn', s:none, s:color_column)
+
+ " Concealed element: \lambda → λ
+ call s:HL('Conceal', s:blue, s:none)
+
+ " Line number of CursorLine
+ call s:HL('CursorLineNr', s:yellow, s:bg1)
+endif
+
+hi! link NonText GruvboxBg2
+hi! link SpecialKey GruvboxBg2
+
+call s:HL('Visual', s:none, s:bg3, s:invert_selection)
+hi! link VisualNOS Visual
+
+call s:HL('Search', s:yellow, s:bg0, s:inverse)
+call s:HL('IncSearch', s:hls_cursor, s:bg0, s:inverse)
+
+call s:HL('Underlined', s:blue, s:none, s:underline)
+
+call s:HL('StatusLine', s:bg2, s:fg1, s:inverse)
+call s:HL('StatusLineNC', s:bg1, s:fg4, s:inverse)
+
+" The column separating vertically split windows
+call s:HL('VertSplit', s:bg3, s:vert_split)
+
+" Current match in wildmenu completion
+call s:HL('WildMenu', s:blue, s:bg2, s:bold)
+
+" Directory names, special names in listing
+hi! link Directory GruvboxGreenBold
+
+" Titles for output from :set all, :autocmd, etc.
+hi! link Title GruvboxGreenBold
+
+" Error messages on the command line
+call s:HL('ErrorMsg', s:bg0, s:red, s:bold)
+" More prompt: -- More --
+hi! link MoreMsg GruvboxYellowBold
+" Current mode message: -- INSERT --
+hi! link ModeMsg GruvboxYellowBold
+" 'Press enter' prompt and yes/no questions
+hi! link Question GruvboxOrangeBold
+" Warning messages
+hi! link WarningMsg GruvboxRedBold
+
+" }}}
+" Gutter: {{{
+
+" Line number for :number and :# commands
+call s:HL('LineNr', s:bg4, s:number_column)
+
+" Column where signs are displayed
+call s:HL('SignColumn', s:none, s:sign_column)
+
+" Line used for closed folds
+call s:HL('Folded', s:gray, s:bg1, s:italic)
+" Column where folds are displayed
+call s:HL('FoldColumn', s:gray, s:bg1)
+
+" }}}
+" Cursor: {{{
+
+" Character under cursor
+call s:HL('Cursor', s:none, s:none, s:inverse)
+" Visual mode cursor, selection
+hi! link vCursor Cursor
+" Input moder cursor
+hi! link iCursor Cursor
+" Language mapping cursor
+hi! link lCursor Cursor
+
+" }}}
+" Syntax Highlighting: {{{
+
+if g:gruvbox_improved_strings == 0
+ hi! link Special GruvboxOrange
+else
+ call s:HL('Special', s:orange, s:bg1, s:italicize_strings)
+endif
+
+call s:HL('Comment', s:gray, s:none, s:italicize_comments)
+call s:HL('Todo', s:vim_fg, s:vim_bg, s:bold . s:italic)
+call s:HL('Error', s:red, s:vim_bg, s:bold . s:inverse)
+
+" Generic statement
+hi! link Statement GruvboxRed
+" if, then, else, endif, swicth, etc.
+hi! link Conditional GruvboxRed
+" for, do, while, etc.
+hi! link Repeat GruvboxRed
+" case, default, etc.
+hi! link Label GruvboxRed
+" try, catch, throw
+hi! link Exception GruvboxRed
+" sizeof, "+", "*", etc.
+hi! link Operator Normal
+" Any other keyword
+hi! link Keyword GruvboxRed
+
+" Variable name
+hi! link Identifier GruvboxBlue
+" Function name
+hi! link Function GruvboxGreenBold
+
+" Generic preprocessor
+hi! link PreProc GruvboxAqua
+" Preprocessor #include
+hi! link Include GruvboxAqua
+" Preprocessor #define
+hi! link Define GruvboxAqua
+" Same as Define
+hi! link Macro GruvboxAqua
+" Preprocessor #if, #else, #endif, etc.
+hi! link PreCondit GruvboxAqua
+
+" Generic constant
+hi! link Constant GruvboxPurple
+" Character constant: 'c', '/n'
+hi! link Character GruvboxPurple
+" String constant: "this is a string"
+if g:gruvbox_improved_strings == 0
+ call s:HL('String', s:green, s:none, s:italicize_strings)
+else
+ call s:HL('String', s:fg1, s:bg1, s:italicize_strings)
+endif
+" Boolean constant: TRUE, false
+hi! link Boolean GruvboxPurple
+" Number constant: 234, 0xff
+hi! link Number GruvboxPurple
+" Floating point constant: 2.3e10
+hi! link Float GruvboxPurple
+
+" Generic type
+hi! link Type GruvboxYellow
+" static, register, volatile, etc
+hi! link StorageClass GruvboxOrange
+" struct, union, enum, etc.
+hi! link Structure GruvboxAqua
+" typedef
+hi! link Typedef GruvboxYellow
+
+" }}}
+" Completion Menu: {{{
+
+if version >= 700
+ " Popup menu: normal item
+ call s:HL('Pmenu', s:fg1, s:bg2)
+ " Popup menu: selected item
+ call s:HL('PmenuSel', s:bg2, s:blue, s:bold)
+ " Popup menu: scrollbar
+ call s:HL('PmenuSbar', s:none, s:bg2)
+ " Popup menu: scrollbar thumb
+ call s:HL('PmenuThumb', s:none, s:bg4)
+endif
+
+" }}}
+" Diffs: {{{
+
+call s:HL('DiffDelete', s:red, s:bg0, s:inverse)
+call s:HL('DiffAdd', s:green, s:bg0, s:inverse)
+"call s:HL('DiffChange', s:bg0, s:blue)
+"call s:HL('DiffText', s:bg0, s:yellow)
+
+" Alternative setting
+call s:HL('DiffChange', s:aqua, s:bg0, s:inverse)
+call s:HL('DiffText', s:yellow, s:bg0, s:inverse)
+
+" }}}
+" Spelling: {{{
+
+if has("spell")
+ " Not capitalised word, or compile warnings
+ if g:gruvbox_improved_warnings == 0
+ call s:HL('SpellCap', s:none, s:none, s:undercurl, s:red)
+ else
+ call s:HL('SpellCap', s:green, s:none, s:bold . s:italic)
+ endif
+ " Not recognized word
+ call s:HL('SpellBad', s:none, s:none, s:undercurl, s:blue)
+ " Wrong spelling for selected region
+ call s:HL('SpellLocal', s:none, s:none, s:undercurl, s:aqua)
+ " Rare word
+ call s:HL('SpellRare', s:none, s:none, s:undercurl, s:purple)
+endif
+
+" }}}
+
+" Plugin specific -------------------------------------------------------------
+" EasyMotion: {{{
+
+hi! link EasyMotionTarget Search
+hi! link EasyMotionShade Comment
+
+" }}}
+" Sneak: {{{
+
+hi! link Sneak Search
+hi! link SneakLabel Search
+
+" }}}
+" Indent Guides: {{{
+
+if !exists('g:indent_guides_auto_colors')
+ let g:indent_guides_auto_colors = 0
+endif
+
+if g:indent_guides_auto_colors == 0
+ if g:gruvbox_invert_indent_guides == 0
+ call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2)
+ call s:HL('IndentGuidesEven', s:vim_bg, s:bg1)
+ else
+ call s:HL('IndentGuidesOdd', s:vim_bg, s:bg2, s:inverse)
+ call s:HL('IndentGuidesEven', s:vim_bg, s:bg3, s:inverse)
+ endif
+endif
+
+" }}}
+" IndentLine: {{{
+
+if !exists('g:indentLine_color_term')
+ let g:indentLine_color_term = s:bg2[1]
+endif
+if !exists('g:indentLine_color_gui')
+ let g:indentLine_color_gui = s:bg2[0]
+endif
+
+" }}}
+" Rainbow Parentheses: {{{
+
+if !exists('g:rbpt_colorpairs')
+ let g:rbpt_colorpairs =
+ \ [
+ \ ['blue', '#458588'], ['magenta', '#b16286'],
+ \ ['red', '#cc241d'], ['166', '#d65d0e']
+ \ ]
+endif
+
+let g:rainbow_guifgs = [ '#d65d0e', '#cc241d', '#b16286', '#458588' ]
+let g:rainbow_ctermfgs = [ '166', 'red', 'magenta', 'blue' ]
+
+if !exists('g:rainbow_conf')
+ let g:rainbow_conf = {}
+endif
+if !has_key(g:rainbow_conf, 'guifgs')
+ let g:rainbow_conf['guifgs'] = g:rainbow_guifgs
+endif
+if !has_key(g:rainbow_conf, 'ctermfgs')
+ let g:rainbow_conf['ctermfgs'] = g:rainbow_ctermfgs
+endif
+
+let g:niji_dark_colours = g:rbpt_colorpairs
+let g:niji_light_colours = g:rbpt_colorpairs
+
+"}}}
+" GitGutter: {{{
+
+hi! link GitGutterAdd GruvboxGreenSign
+hi! link GitGutterChange GruvboxAquaSign
+hi! link GitGutterDelete GruvboxRedSign
+hi! link GitGutterChangeDelete GruvboxAquaSign
+
+" }}}
+" GitCommit: "{{{
+
+hi! link gitcommitSelectedFile GruvboxGreen
+hi! link gitcommitDiscardedFile GruvboxRed
+
+" }}}
+" Signify: {{{
+
+hi! link SignifySignAdd GruvboxGreenSign
+hi! link SignifySignChange GruvboxAquaSign
+hi! link SignifySignDelete GruvboxRedSign
+
+" }}}
+" Syntastic: {{{
+
+call s:HL('SyntasticError', s:none, s:none, s:undercurl, s:red)
+call s:HL('SyntasticWarning', s:none, s:none, s:undercurl, s:yellow)
+
+hi! link SyntasticErrorSign GruvboxRedSign
+hi! link SyntasticWarningSign GruvboxYellowSign
+
+" }}}
+" Signature: {{{
+hi! link SignatureMarkText GruvboxBlueSign
+hi! link SignatureMarkerText GruvboxPurpleSign
+
+" }}}
+" ShowMarks: {{{
+
+hi! link ShowMarksHLl GruvboxBlueSign
+hi! link ShowMarksHLu GruvboxBlueSign
+hi! link ShowMarksHLo GruvboxBlueSign
+hi! link ShowMarksHLm GruvboxBlueSign
+
+" }}}
+" CtrlP: {{{
+
+hi! link CtrlPMatch GruvboxYellow
+hi! link CtrlPNoEntries GruvboxRed
+hi! link CtrlPPrtBase GruvboxBg2
+hi! link CtrlPPrtCursor GruvboxBlue
+hi! link CtrlPLinePre GruvboxBg2
+
+call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold)
+call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold)
+call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold)
+
+" }}}
+" Startify: {{{
+
+hi! link StartifyBracket GruvboxFg3
+hi! link StartifyFile GruvboxFg1
+hi! link StartifyNumber GruvboxBlue
+hi! link StartifyPath GruvboxGray
+hi! link StartifySlash GruvboxGray
+hi! link StartifySection GruvboxYellow
+hi! link StartifySpecial GruvboxBg2
+hi! link StartifyHeader GruvboxOrange
+hi! link StartifyFooter GruvboxBg2
+
+" }}}
+" Vimshell: {{{
+
+let g:vimshell_escape_colors = [
+ \ s:bg4[0], s:red[0], s:green[0], s:yellow[0],
+ \ s:blue[0], s:purple[0], s:aqua[0], s:fg4[0],
+ \ s:bg0[0], s:red[0], s:green[0], s:orange[0],
+ \ s:blue[0], s:purple[0], s:aqua[0], s:fg0[0]
+ \ ]
+
+" }}}
+" BufTabLine: {{{
+
+call s:HL('BufTabLineCurrent', s:bg0, s:fg4)
+call s:HL('BufTabLineActive', s:fg4, s:bg2)
+call s:HL('BufTabLineHidden', s:bg4, s:bg1)
+call s:HL('BufTabLineFill', s:bg0, s:bg0)
+
+" }}}
+" Asynchronous Lint Engine: {{{
+
+call s:HL('ALEError', s:none, s:none, s:undercurl, s:red)
+call s:HL('ALEWarning', s:none, s:none, s:undercurl, s:yellow)
+call s:HL('ALEInfo', s:none, s:none, s:undercurl, s:blue)
+
+hi! link ALEErrorSign GruvboxRedSign
+hi! link ALEWarningSign GruvboxYellowSign
+hi! link ALEInfoSign GruvboxBlueSign
+
+" }}}
+" Dirvish: {{{
+
+hi! link DirvishPathTail GruvboxAqua
+hi! link DirvishArg GruvboxYellow
+
+" }}}
+" Netrw: {{{
+
+hi! link netrwDir GruvboxAqua
+hi! link netrwClassify GruvboxAqua
+hi! link netrwLink GruvboxGray
+hi! link netrwSymLink GruvboxFg1
+hi! link netrwExe GruvboxYellow
+hi! link netrwComment GruvboxGray
+hi! link netrwList GruvboxBlue
+hi! link netrwHelpCmd GruvboxAqua
+hi! link netrwCmdSep GruvboxFg3
+hi! link netrwVersion GruvboxGreen
+
+" }}}
+" NERDTree: {{{
+
+hi! link NERDTreeDir GruvboxAqua
+hi! link NERDTreeDirSlash GruvboxAqua
+
+hi! link NERDTreeOpenable GruvboxOrange
+hi! link NERDTreeClosable GruvboxOrange
+
+hi! link NERDTreeFile GruvboxFg1
+hi! link NERDTreeExecFile GruvboxYellow
+
+hi! link NERDTreeUp GruvboxGray
+hi! link NERDTreeCWD GruvboxGreen
+hi! link NERDTreeHelp GruvboxFg1
+
+hi! link NERDTreeToggleOn GruvboxGreen
+hi! link NERDTreeToggleOff GruvboxRed
+
+" }}}
+" Vim Multiple Cursors: {{{
+
+call s:HL('multiple_cursors_cursor', s:none, s:none, s:inverse)
+call s:HL('multiple_cursors_visual', s:none, s:bg2)
+
+" }}}
+" coc.nvim: {{{
+
+hi! link CocErrorSign GruvboxRedSign
+hi! link CocWarningSign GruvboxOrangeSign
+hi! link CocInfoSign GruvboxYellowSign
+hi! link CocHintSign GruvboxBlueSign
+hi! link CocErrorFloat GruvboxRed
+hi! link CocWarningFloat GruvboxOrange
+hi! link CocInfoFloat GruvboxYellow
+hi! link CocHintFloat GruvboxBlue
+hi! link CocDiagnosticsError GruvboxRed
+hi! link CocDiagnosticsWarning GruvboxOrange
+hi! link CocDiagnosticsInfo GruvboxYellow
+hi! link CocDiagnosticsHint GruvboxBlue
+
+hi! link CocSelectedText GruvboxRed
+hi! link CocCodeLens GruvboxGray
+
+call s:HL('CocErrorHighlight', s:none, s:none, s:undercurl, s:red)
+call s:HL('CocWarningHighlight', s:none, s:none, s:undercurl, s:orange)
+call s:HL('CocInfoHighlight', s:none, s:none, s:undercurl, s:yellow)
+call s:HL('CocHintHighlight', s:none, s:none, s:undercurl, s:blue)
+
+" }}}
+
+" Filetype specific -----------------------------------------------------------
+" Diff: {{{
+
+hi! link diffAdded GruvboxGreen
+hi! link diffRemoved GruvboxRed
+hi! link diffChanged GruvboxAqua
+
+hi! link diffFile GruvboxOrange
+hi! link diffNewFile GruvboxYellow
+
+hi! link diffLine GruvboxBlue
+
+" }}}
+" Html: {{{
+
+hi! link htmlTag GruvboxBlue
+hi! link htmlEndTag GruvboxBlue
+
+hi! link htmlTagName GruvboxAquaBold
+hi! link htmlArg GruvboxAqua
+
+hi! link htmlScriptTag GruvboxPurple
+hi! link htmlTagN GruvboxFg1
+hi! link htmlSpecialTagName GruvboxAquaBold
+
+call s:HL('htmlLink', s:fg4, s:none, s:underline)
+
+hi! link htmlSpecialChar GruvboxOrange
+
+call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold)
+call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline)
+call s:HL('htmlBoldItalic', s:vim_fg, s:vim_bg, s:bold . s:italic)
+call s:HL('htmlBoldUnderlineItalic', s:vim_fg, s:vim_bg, s:bold . s:underline . s:italic)
+
+call s:HL('htmlUnderline', s:vim_fg, s:vim_bg, s:underline)
+call s:HL('htmlUnderlineItalic', s:vim_fg, s:vim_bg, s:underline . s:italic)
+call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic)
+
+" }}}
+" Xml: {{{
+
+hi! link xmlTag GruvboxBlue
+hi! link xmlEndTag GruvboxBlue
+hi! link xmlTagName GruvboxBlue
+hi! link xmlEqual GruvboxBlue
+hi! link docbkKeyword GruvboxAquaBold
+
+hi! link xmlDocTypeDecl GruvboxGray
+hi! link xmlDocTypeKeyword GruvboxPurple
+hi! link xmlCdataStart GruvboxGray
+hi! link xmlCdataCdata GruvboxPurple
+hi! link dtdFunction GruvboxGray
+hi! link dtdTagName GruvboxPurple
+
+hi! link xmlAttrib GruvboxAqua
+hi! link xmlProcessingDelim GruvboxGray
+hi! link dtdParamEntityPunct GruvboxGray
+hi! link dtdParamEntityDPunct GruvboxGray
+hi! link xmlAttribPunct GruvboxGray
+
+hi! link xmlEntity GruvboxOrange
+hi! link xmlEntityPunct GruvboxOrange
+" }}}
+" Vim: {{{
+
+call s:HL('vimCommentTitle', s:fg4_256, s:none, s:bold . s:italicize_comments)
+
+hi! link vimNotation GruvboxOrange
+hi! link vimBracket GruvboxOrange
+hi! link vimMapModKey GruvboxOrange
+hi! link vimFuncSID GruvboxFg3
+hi! link vimSetSep GruvboxFg3
+hi! link vimSep GruvboxFg3
+hi! link vimContinue GruvboxFg3
+
+" }}}
+" Clojure: {{{
+
+hi! link clojureKeyword GruvboxBlue
+hi! link clojureCond GruvboxOrange
+hi! link clojureSpecial GruvboxOrange
+hi! link clojureDefine GruvboxOrange
+
+hi! link clojureFunc GruvboxYellow
+hi! link clojureRepeat GruvboxYellow
+hi! link clojureCharacter GruvboxAqua
+hi! link clojureStringEscape GruvboxAqua
+hi! link clojureException GruvboxRed
+
+hi! link clojureRegexp GruvboxAqua
+hi! link clojureRegexpEscape GruvboxAqua
+call s:HL('clojureRegexpCharClass', s:fg3, s:none, s:bold)
+hi! link clojureRegexpMod clojureRegexpCharClass
+hi! link clojureRegexpQuantifier clojureRegexpCharClass
+
+hi! link clojureParen GruvboxFg3
+hi! link clojureAnonArg GruvboxYellow
+hi! link clojureVariable GruvboxBlue
+hi! link clojureMacro GruvboxOrange
+
+hi! link clojureMeta GruvboxYellow
+hi! link clojureDeref GruvboxYellow
+hi! link clojureQuote GruvboxYellow
+hi! link clojureUnquote GruvboxYellow
+
+" }}}
+" C: {{{
+
+hi! link cOperator GruvboxPurple
+hi! link cStructure GruvboxOrange
+
+" }}}
+" Python: {{{
+
+hi! link pythonBuiltin GruvboxOrange
+hi! link pythonBuiltinObj GruvboxOrange
+hi! link pythonBuiltinFunc GruvboxOrange
+hi! link pythonFunction GruvboxAqua
+hi! link pythonDecorator GruvboxRed
+hi! link pythonInclude GruvboxBlue
+hi! link pythonImport GruvboxBlue
+hi! link pythonRun GruvboxBlue
+hi! link pythonCoding GruvboxBlue
+hi! link pythonOperator GruvboxRed
+hi! link pythonException GruvboxRed
+hi! link pythonExceptions GruvboxPurple
+hi! link pythonBoolean GruvboxPurple
+hi! link pythonDot GruvboxFg3
+hi! link pythonConditional GruvboxRed
+hi! link pythonRepeat GruvboxRed
+hi! link pythonDottedName GruvboxGreenBold
+
+" }}}
+" CSS: {{{
+
+hi! link cssBraces GruvboxBlue
+hi! link cssFunctionName GruvboxYellow
+hi! link cssIdentifier GruvboxOrange
+hi! link cssClassName GruvboxGreen
+hi! link cssColor GruvboxBlue
+hi! link cssSelectorOp GruvboxBlue
+hi! link cssSelectorOp2 GruvboxBlue
+hi! link cssImportant GruvboxGreen
+hi! link cssVendor GruvboxFg1
+
+hi! link cssTextProp GruvboxAqua
+hi! link cssAnimationProp GruvboxAqua
+hi! link cssUIProp GruvboxYellow
+hi! link cssTransformProp GruvboxAqua
+hi! link cssTransitionProp GruvboxAqua
+hi! link cssPrintProp GruvboxAqua
+hi! link cssPositioningProp GruvboxYellow
+hi! link cssBoxProp GruvboxAqua
+hi! link cssFontDescriptorProp GruvboxAqua
+hi! link cssFlexibleBoxProp GruvboxAqua
+hi! link cssBorderOutlineProp GruvboxAqua
+hi! link cssBackgroundProp GruvboxAqua
+hi! link cssMarginProp GruvboxAqua
+hi! link cssListProp GruvboxAqua
+hi! link cssTableProp GruvboxAqua
+hi! link cssFontProp GruvboxAqua
+hi! link cssPaddingProp GruvboxAqua
+hi! link cssDimensionProp GruvboxAqua
+hi! link cssRenderProp GruvboxAqua
+hi! link cssColorProp GruvboxAqua
+hi! link cssGeneratedContentProp GruvboxAqua
+
+" }}}
+" JavaScript: {{{
+
+hi! link javaScriptBraces GruvboxFg1
+hi! link javaScriptFunction GruvboxAqua
+hi! link javaScriptIdentifier GruvboxRed
+hi! link javaScriptMember GruvboxBlue
+hi! link javaScriptNumber GruvboxPurple
+hi! link javaScriptNull GruvboxPurple
+hi! link javaScriptParens GruvboxFg3
+
+" }}}
+" YAJS: {{{
+
+hi! link javascriptImport GruvboxAqua
+hi! link javascriptExport GruvboxAqua
+hi! link javascriptClassKeyword GruvboxAqua
+hi! link javascriptClassExtends GruvboxAqua
+hi! link javascriptDefault GruvboxAqua
+
+hi! link javascriptClassName GruvboxYellow
+hi! link javascriptClassSuperName GruvboxYellow
+hi! link javascriptGlobal GruvboxYellow
+
+hi! link javascriptEndColons GruvboxFg1
+hi! link javascriptFuncArg GruvboxFg1
+hi! link javascriptGlobalMethod GruvboxFg1
+hi! link javascriptNodeGlobal GruvboxFg1
+hi! link javascriptBOMWindowProp GruvboxFg1
+hi! link javascriptArrayMethod GruvboxFg1
+hi! link javascriptArrayStaticMethod GruvboxFg1
+hi! link javascriptCacheMethod GruvboxFg1
+hi! link javascriptDateMethod GruvboxFg1
+hi! link javascriptMathStaticMethod GruvboxFg1
+
+" hi! link javascriptProp GruvboxFg1
+hi! link javascriptURLUtilsProp GruvboxFg1
+hi! link javascriptBOMNavigatorProp GruvboxFg1
+hi! link javascriptDOMDocMethod GruvboxFg1
+hi! link javascriptDOMDocProp GruvboxFg1
+hi! link javascriptBOMLocationMethod GruvboxFg1
+hi! link javascriptBOMWindowMethod GruvboxFg1
+hi! link javascriptStringMethod GruvboxFg1
+
+hi! link javascriptVariable GruvboxOrange
+" hi! link javascriptVariable GruvboxRed
+" hi! link javascriptIdentifier GruvboxOrange
+" hi! link javascriptClassSuper GruvboxOrange
+hi! link javascriptIdentifier GruvboxOrange
+hi! link javascriptClassSuper GruvboxOrange
+
+" hi! link javascriptFuncKeyword GruvboxOrange
+" hi! link javascriptAsyncFunc GruvboxOrange
+hi! link javascriptFuncKeyword GruvboxAqua
+hi! link javascriptAsyncFunc GruvboxAqua
+hi! link javascriptClassStatic GruvboxOrange
+
+hi! link javascriptOperator GruvboxRed
+hi! link javascriptForOperator GruvboxRed
+hi! link javascriptYield GruvboxRed
+hi! link javascriptExceptions GruvboxRed
+hi! link javascriptMessage GruvboxRed
+
+hi! link javascriptTemplateSB GruvboxAqua
+hi! link javascriptTemplateSubstitution GruvboxFg1
+
+" hi! link javascriptLabel GruvboxBlue
+" hi! link javascriptObjectLabel GruvboxBlue
+" hi! link javascriptPropertyName GruvboxBlue
+hi! link javascriptLabel GruvboxFg1
+hi! link javascriptObjectLabel GruvboxFg1
+hi! link javascriptPropertyName GruvboxFg1
+
+hi! link javascriptLogicSymbols GruvboxFg1
+hi! link javascriptArrowFunc GruvboxYellow
+
+hi! link javascriptDocParamName GruvboxFg4
+hi! link javascriptDocTags GruvboxFg4
+hi! link javascriptDocNotation GruvboxFg4
+hi! link javascriptDocParamType GruvboxFg4
+hi! link javascriptDocNamedParamType GruvboxFg4
+
+hi! link javascriptBrackets GruvboxFg1
+hi! link javascriptDOMElemAttrs GruvboxFg1
+hi! link javascriptDOMEventMethod GruvboxFg1
+hi! link javascriptDOMNodeMethod GruvboxFg1
+hi! link javascriptDOMStorageMethod GruvboxFg1
+hi! link javascriptHeadersMethod GruvboxFg1
+
+hi! link javascriptAsyncFuncKeyword GruvboxRed
+hi! link javascriptAwaitFuncKeyword GruvboxRed
+
+" }}}
+" PanglossJS: {{{
+
+hi! link jsClassKeyword GruvboxAqua
+hi! link jsExtendsKeyword GruvboxAqua
+hi! link jsExportDefault GruvboxAqua
+hi! link jsTemplateBraces GruvboxAqua
+hi! link jsGlobalNodeObjects GruvboxFg1
+hi! link jsGlobalObjects GruvboxFg1
+hi! link jsFunction GruvboxAqua
+hi! link jsFuncParens GruvboxFg3
+hi! link jsParens GruvboxFg3
+hi! link jsNull GruvboxPurple
+hi! link jsUndefined GruvboxPurple
+hi! link jsClassDefinition GruvboxYellow
+
+" }}}
+" TypeScript: {{{
+
+hi! link typeScriptReserved GruvboxAqua
+hi! link typeScriptLabel GruvboxAqua
+hi! link typeScriptFuncKeyword GruvboxAqua
+hi! link typeScriptIdentifier GruvboxOrange
+hi! link typeScriptBraces GruvboxFg1
+hi! link typeScriptEndColons GruvboxFg1
+hi! link typeScriptDOMObjects GruvboxFg1
+hi! link typeScriptAjaxMethods GruvboxFg1
+hi! link typeScriptLogicSymbols GruvboxFg1
+hi! link typeScriptDocSeeTag Comment
+hi! link typeScriptDocParam Comment
+hi! link typeScriptDocTags vimCommentTitle
+hi! link typeScriptGlobalObjects GruvboxFg1
+hi! link typeScriptParens GruvboxFg3
+hi! link typeScriptOpSymbols GruvboxFg3
+hi! link typeScriptHtmlElemProperties GruvboxFg1
+hi! link typeScriptNull GruvboxPurple
+hi! link typeScriptInterpolationDelimiter GruvboxAqua
+
+" }}}
+" PureScript: {{{
+
+hi! link purescriptModuleKeyword GruvboxAqua
+hi! link purescriptModuleName GruvboxFg1
+hi! link purescriptWhere GruvboxAqua
+hi! link purescriptDelimiter GruvboxFg4
+hi! link purescriptType GruvboxFg1
+hi! link purescriptImportKeyword GruvboxAqua
+hi! link purescriptHidingKeyword GruvboxAqua
+hi! link purescriptAsKeyword GruvboxAqua
+hi! link purescriptStructure GruvboxAqua
+hi! link purescriptOperator GruvboxBlue
+
+hi! link purescriptTypeVar GruvboxFg1
+hi! link purescriptConstructor GruvboxFg1
+hi! link purescriptFunction GruvboxFg1
+hi! link purescriptConditional GruvboxOrange
+hi! link purescriptBacktick GruvboxOrange
+
+" }}}
+" CoffeeScript: {{{
+
+hi! link coffeeExtendedOp GruvboxFg3
+hi! link coffeeSpecialOp GruvboxFg3
+hi! link coffeeCurly GruvboxOrange
+hi! link coffeeParen GruvboxFg3
+hi! link coffeeBracket GruvboxOrange
+
+" }}}
+" Ruby: {{{
+
+hi! link rubyStringDelimiter GruvboxGreen
+hi! link rubyInterpolationDelimiter GruvboxAqua
+
+" }}}
+" ObjectiveC: {{{
+
+hi! link objcTypeModifier GruvboxRed
+hi! link objcDirective GruvboxBlue
+
+" }}}
+" Go: {{{
+
+hi! link goDirective GruvboxAqua
+hi! link goConstants GruvboxPurple
+hi! link goDeclaration GruvboxRed
+hi! link goDeclType GruvboxBlue
+hi! link goBuiltins GruvboxOrange
+
+" }}}
+" Lua: {{{
+
+hi! link luaIn GruvboxRed
+hi! link luaFunction GruvboxAqua
+hi! link luaTable GruvboxOrange
+
+" }}}
+" MoonScript: {{{
+
+hi! link moonSpecialOp GruvboxFg3
+hi! link moonExtendedOp GruvboxFg3
+hi! link moonFunction GruvboxFg3
+hi! link moonObject GruvboxYellow
+
+" }}}
+" Java: {{{
+
+hi! link javaAnnotation GruvboxBlue
+hi! link javaDocTags GruvboxAqua
+hi! link javaCommentTitle vimCommentTitle
+hi! link javaParen GruvboxFg3
+hi! link javaParen1 GruvboxFg3
+hi! link javaParen2 GruvboxFg3
+hi! link javaParen3 GruvboxFg3
+hi! link javaParen4 GruvboxFg3
+hi! link javaParen5 GruvboxFg3
+hi! link javaOperator GruvboxOrange
+
+hi! link javaVarArg GruvboxGreen
+
+" }}}
+" Elixir: {{{
+
+hi! link elixirDocString Comment
+
+hi! link elixirStringDelimiter GruvboxGreen
+hi! link elixirInterpolationDelimiter GruvboxAqua
+
+hi! link elixirModuleDeclaration GruvboxYellow
+
+" }}}
+" Scala: {{{
+
+" NB: scala vim syntax file is kinda horrible
+hi! link scalaNameDefinition GruvboxFg1
+hi! link scalaCaseFollowing GruvboxFg1
+hi! link scalaCapitalWord GruvboxFg1
+hi! link scalaTypeExtension GruvboxFg1
+
+hi! link scalaKeyword GruvboxRed
+hi! link scalaKeywordModifier GruvboxRed
+
+hi! link scalaSpecial GruvboxAqua
+hi! link scalaOperator GruvboxFg1
+
+hi! link scalaTypeDeclaration GruvboxYellow
+hi! link scalaTypeTypePostDeclaration GruvboxYellow
+
+hi! link scalaInstanceDeclaration GruvboxFg1
+hi! link scalaInterpolation GruvboxAqua
+
+" }}}
+" Markdown: {{{
+
+call s:HL('markdownItalic', s:fg3, s:none, s:italic)
+
+hi! link markdownH1 GruvboxGreenBold
+hi! link markdownH2 GruvboxGreenBold
+hi! link markdownH3 GruvboxYellowBold
+hi! link markdownH4 GruvboxYellowBold
+hi! link markdownH5 GruvboxYellow
+hi! link markdownH6 GruvboxYellow
+
+hi! link markdownCode GruvboxAqua
+hi! link markdownCodeBlock GruvboxAqua
+hi! link markdownCodeDelimiter GruvboxAqua
+
+hi! link markdownBlockquote GruvboxGray
+hi! link markdownListMarker GruvboxGray
+hi! link markdownOrderedListMarker GruvboxGray
+hi! link markdownRule GruvboxGray
+hi! link markdownHeadingRule GruvboxGray
+
+hi! link markdownUrlDelimiter GruvboxFg3
+hi! link markdownLinkDelimiter GruvboxFg3
+hi! link markdownLinkTextDelimiter GruvboxFg3
+
+hi! link markdownHeadingDelimiter GruvboxOrange
+hi! link markdownUrl GruvboxPurple
+hi! link markdownUrlTitleDelimiter GruvboxGreen
+
+call s:HL('markdownLinkText', s:gray, s:none, s:underline)
+hi! link markdownIdDeclaration markdownLinkText
+
+" }}}
+" Haskell: {{{
+
+" hi! link haskellType GruvboxYellow
+" hi! link haskellOperators GruvboxOrange
+" hi! link haskellConditional GruvboxAqua
+" hi! link haskellLet GruvboxOrange
+"
+hi! link haskellType GruvboxFg1
+hi! link haskellIdentifier GruvboxFg1
+hi! link haskellSeparator GruvboxFg1
+hi! link haskellDelimiter GruvboxFg4
+hi! link haskellOperators GruvboxBlue
+"
+hi! link haskellBacktick GruvboxOrange
+hi! link haskellStatement GruvboxOrange
+hi! link haskellConditional GruvboxOrange
+
+hi! link haskellLet GruvboxAqua
+hi! link haskellDefault GruvboxAqua
+hi! link haskellWhere GruvboxAqua
+hi! link haskellBottom GruvboxAqua
+hi! link haskellBlockKeywords GruvboxAqua
+hi! link haskellImportKeywords GruvboxAqua
+hi! link haskellDeclKeyword GruvboxAqua
+hi! link haskellDeriving GruvboxAqua
+hi! link haskellAssocType GruvboxAqua
+
+hi! link haskellNumber GruvboxPurple
+hi! link haskellPragma GruvboxPurple
+
+hi! link haskellString GruvboxGreen
+hi! link haskellChar GruvboxGreen
+
+" }}}
+" Json: {{{
+
+hi! link jsonKeyword GruvboxGreen
+hi! link jsonQuote GruvboxGreen
+hi! link jsonBraces GruvboxFg1
+hi! link jsonString GruvboxFg1
+
+" }}}
+
+
+" Functions -------------------------------------------------------------------
+" Search Highlighting Cursor {{{
+
+function! GruvboxHlsShowCursor()
+ call s:HL('Cursor', s:bg0, s:hls_cursor)
+endfunction
+
+function! GruvboxHlsHideCursor()
+ call s:HL('Cursor', s:none, s:none, s:inverse)
+endfunction
+
+" }}}
+
+" vim: set sw=2 ts=2 sts=2 et tw=80 ft=vim fdm=marker:
diff --git a/config/nvim/colors/iceberg.vim b/config/nvim/colors/iceberg.vim
new file mode 100644
index 0000000..dac4fe7
--- /dev/null
+++ b/config/nvim/colors/iceberg.vim
@@ -0,0 +1,502 @@
+" _________________________________________
+" \_ _/ ____| ____| ___ \ ____| ___ \ ___/
+" | | |____| ____| ___ < ____| __ / |__ \
+" /___\_____|_____|_____/_____|_| \_\_____/
+"
+" File: iceberg.vim
+" Maintainer: cocopon <cocopon@me.com>
+" Modified: 2022-11-16 22:13+0900
+" License: MIT
+
+
+if !has('gui_running') && &t_Co < 256
+ finish
+endif
+
+hi clear
+if exists('syntax_on')
+ syntax reset
+endif
+
+let g:colors_name = 'iceberg'
+
+if &background == 'light'
+ hi Normal ctermbg=254 ctermfg=237 guibg=#e8e9ec guifg=#33374c
+ hi ColorColumn cterm=NONE ctermbg=253 ctermfg=NONE guibg=#dcdfe7 guifg=NONE
+ hi CursorColumn cterm=NONE ctermbg=253 ctermfg=NONE guibg=#dcdfe7 guifg=NONE
+ hi CursorLine cterm=NONE ctermbg=253 ctermfg=NONE guibg=#dcdfe7 guifg=NONE
+ hi Comment ctermfg=244 guifg=#8389a3
+ hi Conceal ctermbg=254 ctermfg=244 guibg=#e8e9ec guifg=#8389a3
+ hi Constant ctermfg=97 guifg=#7759b4
+ hi Cursor ctermbg=237 ctermfg=254 guibg=#33374c guifg=#e8e9ec
+ hi CursorLineNr cterm=NONE ctermbg=251 ctermfg=237 guibg=#cad0de guifg=#576a9e
+ hi Delimiter ctermfg=237 guifg=#33374c
+ hi DiffAdd ctermbg=79 ctermfg=23 guibg=#d4dbd1 guifg=#475946
+ hi DiffChange ctermbg=116 ctermfg=24 guibg=#ced9e1 guifg=#375570
+ hi DiffDelete cterm=NONE ctermbg=181 ctermfg=89 gui=NONE guibg=#e3d2da guifg=#70415e
+ hi DiffText cterm=NONE ctermbg=73 ctermfg=24 gui=NONE guibg=#acc5d3 guifg=#33374c
+ hi Directory ctermfg=31 guifg=#3f83a6
+ hi Error ctermbg=254 ctermfg=125 guibg=#e8e9ec guifg=#cc517a
+ hi ErrorMsg ctermbg=254 ctermfg=125 guibg=#e8e9ec guifg=#cc517a
+ hi WarningMsg ctermbg=254 ctermfg=125 guibg=#e8e9ec guifg=#cc517a
+ hi EndOfBuffer ctermfg=251 guifg=#cbcfda
+ hi NonText ctermfg=251 guifg=#cbcfda
+ hi Whitespace ctermfg=251 guifg=#cbcfda
+ hi Folded ctermbg=253 ctermfg=243 guibg=#dcdfe7 guifg=#788098
+ hi FoldColumn ctermbg=253 ctermfg=248 guibg=#dcdfe7 guifg=#9fa7bd
+ hi Function ctermfg=25 guifg=#2d539e
+ hi Identifier cterm=NONE ctermfg=31 guifg=#3f83a6
+ hi Ignore ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
+ hi Include ctermfg=25 guifg=#2d539e
+ hi IncSearch cterm=reverse ctermfg=NONE gui=reverse guifg=NONE term=reverse
+ hi LineNr ctermbg=253 ctermfg=248 guibg=#dcdfe7 guifg=#9fa7bd
+ hi MatchParen ctermbg=250 ctermfg=0 guibg=#bec0c9 guifg=#33374c
+ hi ModeMsg ctermfg=244 guifg=#8389a3
+ hi MoreMsg ctermfg=64 guifg=#668e3d
+ hi Operator ctermfg=25 guifg=#2d539e
+ hi Pmenu ctermbg=251 ctermfg=237 guibg=#cad0de guifg=#33374c
+ hi PmenuSbar ctermbg=251 ctermfg=NONE guibg=#cad0de guifg=NONE
+ hi PmenuSel ctermbg=248 ctermfg=235 guibg=#a7b2cd guifg=#33374c
+ hi PmenuThumb ctermbg=237 ctermfg=NONE guibg=#33374c guifg=NONE
+ hi PreProc ctermfg=64 guifg=#668e3d
+ hi Question ctermfg=64 guifg=#668e3d
+ hi QuickFixLine ctermbg=251 ctermfg=237 guibg=#c9cdd7 guifg=#33374c
+ hi Search ctermbg=180 ctermfg=94 guibg=#eac6ad guifg=#85512c
+ hi SignColumn ctermbg=253 ctermfg=248 guibg=#dcdfe7 guifg=#9fa7bd
+ hi Special ctermfg=64 guifg=#668e3d
+ hi SpecialKey ctermfg=248 guifg=#a5b0d3
+ hi SpellBad ctermbg=181 ctermfg=237 gui=undercurl guifg=NONE guisp=#cc517a
+ hi SpellCap ctermbg=117 ctermfg=237 gui=undercurl guifg=NONE guisp=#2d539e
+ hi SpellLocal ctermbg=116 ctermfg=237 gui=undercurl guifg=NONE guisp=#3f83a6
+ hi SpellRare ctermbg=110 ctermfg=237 gui=undercurl guifg=NONE guisp=#7759b4
+ hi Statement ctermfg=25 gui=NONE guifg=#2d539e
+ hi StatusLine cterm=reverse ctermbg=252 ctermfg=243 gui=reverse guibg=#e8e9ec guifg=#757ca3 term=reverse
+ hi StatusLineTerm cterm=reverse ctermbg=252 ctermfg=243 gui=reverse guibg=#e8e9ec guifg=#757ca3 term=reverse
+ hi StatusLineNC cterm=reverse ctermbg=244 ctermfg=251 gui=reverse guibg=#8b98b6 guifg=#cad0de
+ hi StatusLineTermNC cterm=reverse ctermbg=244 ctermfg=251 gui=reverse guibg=#8b98b6 guifg=#cad0de
+ hi StorageClass ctermfg=25 guifg=#2d539e
+ hi String ctermfg=31 guifg=#3f83a6
+ hi Structure ctermfg=25 guifg=#2d539e
+ hi TabLine cterm=NONE ctermbg=251 ctermfg=244 gui=NONE guibg=#cad0de guifg=#8b98b6
+ hi TabLineFill cterm=reverse ctermbg=244 ctermfg=251 gui=reverse guibg=#8b98b6 guifg=#cad0de
+ hi TabLineSel cterm=NONE ctermbg=254 ctermfg=237 gui=NONE guibg=#e8e9ec guifg=#606374
+ hi TermCursorNC ctermbg=244 ctermfg=254 guibg=#8389a3 guifg=#e8e9ec
+ hi Title ctermfg=130 gui=NONE guifg=#c57339
+ hi Todo ctermbg=254 ctermfg=64 guibg=#d4dbd1 guifg=#668e3d
+ hi Type ctermfg=25 gui=NONE guifg=#2d539e
+ hi Underlined cterm=underline ctermfg=25 gui=underline guifg=#2d539e term=underline
+ hi VertSplit cterm=NONE ctermbg=251 ctermfg=251 gui=NONE guibg=#cad0de guifg=#cad0de
+ hi Visual ctermbg=251 ctermfg=NONE guibg=#c9cdd7 guifg=NONE
+ hi VisualNOS ctermbg=251 ctermfg=NONE guibg=#c9cdd7 guifg=NONE
+ hi WildMenu ctermbg=235 ctermfg=252 guibg=#32364c guifg=#e8e9ec
+ hi icebergNormalFg ctermfg=237 guifg=#33374c
+ hi diffAdded ctermfg=64 guifg=#668e3d
+ hi diffRemoved ctermfg=125 guifg=#cc517a
+ hi ALEErrorSign ctermbg=253 ctermfg=125 guibg=#dcdfe7 guifg=#cc517a
+ hi ALEWarningSign ctermbg=253 ctermfg=130 guibg=#dcdfe7 guifg=#c57339
+ hi ALEVirtualTextError ctermfg=125 guifg=#cc517a
+ hi ALEVirtualTextWarning ctermfg=130 guifg=#c57339
+ hi CtrlPMode1 ctermbg=247 ctermfg=252 guibg=#9fa6c0 guifg=#e8e9ec
+ hi EasyMotionShade ctermfg=250 guifg=#bbbecd
+ hi EasyMotionTarget ctermfg=64 guifg=#668e3d
+ hi EasyMotionTarget2First ctermfg=130 guifg=#c57339
+ hi EasyMotionTarget2Second ctermfg=130 guifg=#c57339
+ hi GitGutterAdd ctermbg=253 ctermfg=64 guibg=#dcdfe7 guifg=#668e3d
+ hi GitGutterChange ctermbg=253 ctermfg=31 guibg=#dcdfe7 guifg=#3f83a6
+ hi GitGutterChangeDelete ctermbg=253 ctermfg=31 guibg=#dcdfe7 guifg=#3f83a6
+ hi GitGutterDelete ctermbg=253 ctermfg=125 guibg=#dcdfe7 guifg=#cc517a
+ hi gitmessengerEndOfBuffer ctermbg=253 ctermfg=248 guibg=#dcdfe7 guifg=#9fa7bd
+ hi gitmessengerPopupNormal ctermbg=253 ctermfg=237 guibg=#dcdfe7 guifg=#33374c
+ hi Sneak ctermbg=97 ctermfg=254 guibg=#7759b4 guifg=#e8e9ec
+ hi SneakScope ctermbg=251 ctermfg=244 guibg=#c9cdd7 guifg=#8389a3
+ hi SyntasticErrorSign ctermbg=253 ctermfg=125 guibg=#dcdfe7 guifg=#cc517a
+ hi SyntasticStyleErrorSign ctermbg=253 ctermfg=125 guibg=#dcdfe7 guifg=#cc517a
+ hi SyntasticStyleWarningSign ctermbg=253 ctermfg=130 guibg=#dcdfe7 guifg=#c57339
+ hi SyntasticWarningSign ctermbg=253 ctermfg=130 guibg=#dcdfe7 guifg=#c57339
+ hi ZenSpace ctermbg=125 guibg=#cc517a
+ hi TSFunction ctermfg=237 guifg=#505695
+ hi TSFunctionBuiltin ctermfg=237 guifg=#505695
+ hi TSFunctionMacro ctermfg=237 guifg=#505695
+ hi TSMethod ctermfg=237 guifg=#505695
+ hi TSURI cterm=underline ctermfg=31 gui=underline guifg=#3f83a6 term=underline
+ hi DiagnosticUnderlineInfo cterm=underline ctermfg=31 gui=underline guisp=#3f83a6 term=underline
+ hi DiagnosticInfo ctermfg=31 guifg=#3f83a6
+ hi DiagnosticSignInfo ctermbg=253 ctermfg=31 guibg=#dcdfe7 guifg=#3f83a6
+ hi DiagnosticUnderlineHint cterm=underline ctermfg=244 gui=underline guisp=#8389a3 term=underline
+ hi DiagnosticHint ctermfg=244 guifg=#8389a3
+ hi DiagnosticSignHint ctermbg=253 ctermfg=244 guibg=#dcdfe7 guifg=#8389a3
+ hi DiagnosticUnderlineWarn cterm=underline ctermfg=130 gui=underline guisp=#c57339 term=underline
+ hi DiagnosticWarn ctermfg=130 guifg=#c57339
+ hi DiagnosticSignWarn ctermbg=253 ctermfg=130 guibg=#dcdfe7 guifg=#c57339
+ hi DiagnosticUnderlineError cterm=underline ctermfg=125 gui=underline guisp=#cc517a term=underline
+ hi DiagnosticError ctermfg=125 guifg=#cc517a
+ hi DiagnosticSignError ctermbg=253 ctermfg=125 guibg=#dcdfe7 guifg=#cc517a
+ hi DiagnosticFloatingHint ctermbg=251 ctermfg=237 guibg=#cad0de guifg=#33374c
+ hi icebergALAccentRed ctermfg=125 guifg=#cc517a
+
+ if has('nvim')
+ let g:terminal_color_0 = '#dcdfe7'
+ let g:terminal_color_1 = '#cc517a'
+ let g:terminal_color_2 = '#668e3d'
+ let g:terminal_color_3 = '#c57339'
+ let g:terminal_color_4 = '#2d539e'
+ let g:terminal_color_5 = '#7759b4'
+ let g:terminal_color_6 = '#3f83a6'
+ let g:terminal_color_7 = '#33374c'
+ let g:terminal_color_8 = '#8389a3'
+ let g:terminal_color_9 = '#cc3768'
+ let g:terminal_color_10 = '#598030'
+ let g:terminal_color_11 = '#b6662d'
+ let g:terminal_color_12 = '#22478e'
+ let g:terminal_color_13 = '#6845ad'
+ let g:terminal_color_14 = '#327698'
+ let g:terminal_color_15 = '#262a3f'
+ else
+ let g:terminal_ansi_colors = ['#dcdfe7', '#cc517a', '#668e3d', '#c57339', '#2d539e', '#7759b4', '#3f83a6', '#33374c', '#8389a3', '#cc3768', '#598030', '#b6662d', '#22478e', '#6845ad', '#327698', '#262a3f']
+ endif
+else
+ hi Normal ctermbg=234 ctermfg=252 guibg=#161821 guifg=#c6c8d1
+ hi ColorColumn cterm=NONE ctermbg=235 ctermfg=NONE guibg=#1e2132 guifg=NONE
+ hi CursorColumn cterm=NONE ctermbg=235 ctermfg=NONE guibg=#1e2132 guifg=NONE
+ hi CursorLine cterm=NONE ctermbg=235 ctermfg=NONE guibg=#1e2132 guifg=NONE
+ hi Comment ctermfg=242 guifg=#6b7089
+ hi Conceal ctermbg=234 ctermfg=242 guibg=#161821 guifg=#6b7089
+ hi Constant ctermfg=140 guifg=#a093c7
+ hi Cursor ctermbg=252 ctermfg=234 guibg=#c6c8d1 guifg=#161821
+ hi CursorLineNr cterm=NONE ctermbg=237 ctermfg=253 guibg=#2a3158 guifg=#cdd1e6
+ hi Delimiter ctermfg=252 guifg=#c6c8d1
+ hi DiffAdd ctermbg=29 ctermfg=158 guibg=#45493e guifg=#c0c5b9
+ hi DiffChange ctermbg=23 ctermfg=159 guibg=#384851 guifg=#b3c3cc
+ hi DiffDelete cterm=NONE ctermbg=95 ctermfg=224 gui=NONE guibg=#53343b guifg=#ceb0b6
+ hi DiffText cterm=NONE ctermbg=30 ctermfg=195 gui=NONE guibg=#5b7881 guifg=#c6c8d1
+ hi Directory ctermfg=109 guifg=#89b8c2
+ hi Error ctermbg=234 ctermfg=203 guibg=#161821 guifg=#e27878
+ hi ErrorMsg ctermbg=234 ctermfg=203 guibg=#161821 guifg=#e27878
+ hi WarningMsg ctermbg=234 ctermfg=203 guibg=#161821 guifg=#e27878
+ hi EndOfBuffer ctermfg=236 guifg=#242940
+ hi NonText ctermfg=236 guifg=#242940
+ hi Whitespace ctermfg=236 guifg=#242940
+ hi Folded ctermbg=235 ctermfg=245 guibg=#1e2132 guifg=#686f9a
+ hi FoldColumn ctermbg=235 ctermfg=239 guibg=#1e2132 guifg=#444b71
+ hi Function ctermfg=110 guifg=#84a0c6
+ hi Identifier cterm=NONE ctermfg=109 guifg=#89b8c2
+ hi Ignore ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
+ hi Include ctermfg=110 guifg=#84a0c6
+ hi IncSearch cterm=reverse ctermfg=NONE gui=reverse guifg=NONE term=reverse
+ hi LineNr ctermbg=235 ctermfg=239 guibg=#1e2132 guifg=#444b71
+ hi MatchParen ctermbg=237 ctermfg=255 guibg=#3e445e guifg=#ffffff
+ hi ModeMsg ctermfg=242 guifg=#6b7089
+ hi MoreMsg ctermfg=150 guifg=#b4be82
+ hi Operator ctermfg=110 guifg=#84a0c6
+ hi Pmenu ctermbg=236 ctermfg=251 guibg=#3d425b guifg=#c6c8d1
+ hi PmenuSbar ctermbg=236 ctermfg=NONE guibg=#3d425b guifg=NONE
+ hi PmenuSel ctermbg=240 ctermfg=255 guibg=#5b6389 guifg=#eff0f4
+ hi PmenuThumb ctermbg=251 ctermfg=NONE guibg=#c6c8d1 guifg=NONE
+ hi PreProc ctermfg=150 guifg=#b4be82
+ hi Question ctermfg=150 guifg=#b4be82
+ hi QuickFixLine ctermbg=236 ctermfg=252 guibg=#272c42 guifg=#c6c8d1
+ hi Search ctermbg=216 ctermfg=234 guibg=#e4aa80 guifg=#392313
+ hi SignColumn ctermbg=235 ctermfg=239 guibg=#1e2132 guifg=#444b71
+ hi Special ctermfg=150 guifg=#b4be82
+ hi SpecialKey ctermfg=240 guifg=#515e97
+ hi SpellBad ctermbg=95 ctermfg=252 gui=undercurl guifg=NONE guisp=#e27878
+ hi SpellCap ctermbg=24 ctermfg=252 gui=undercurl guifg=NONE guisp=#84a0c6
+ hi SpellLocal ctermbg=23 ctermfg=252 gui=undercurl guifg=NONE guisp=#89b8c2
+ hi SpellRare ctermbg=97 ctermfg=252 gui=undercurl guifg=NONE guisp=#a093c7
+ hi Statement ctermfg=110 gui=NONE guifg=#84a0c6
+ hi StatusLine cterm=reverse ctermbg=234 ctermfg=245 gui=reverse guibg=#17171b guifg=#818596 term=reverse
+ hi StatusLineTerm cterm=reverse ctermbg=234 ctermfg=245 gui=reverse guibg=#17171b guifg=#818596 term=reverse
+ hi StatusLineNC cterm=reverse ctermbg=238 ctermfg=233 gui=reverse guibg=#3e445e guifg=#0f1117
+ hi StatusLineTermNC cterm=reverse ctermbg=238 ctermfg=233 gui=reverse guibg=#3e445e guifg=#0f1117
+ hi StorageClass ctermfg=110 guifg=#84a0c6
+ hi String ctermfg=109 guifg=#89b8c2
+ hi Structure ctermfg=110 guifg=#84a0c6
+ hi TabLine cterm=NONE ctermbg=233 ctermfg=238 gui=NONE guibg=#0f1117 guifg=#3e445e
+ hi TabLineFill cterm=reverse ctermbg=238 ctermfg=233 gui=reverse guibg=#3e445e guifg=#0f1117
+ hi TabLineSel cterm=NONE ctermbg=234 ctermfg=252 gui=NONE guibg=#161821 guifg=#9a9ca5
+ hi TermCursorNC ctermbg=242 ctermfg=234 guibg=#6b7089 guifg=#161821
+ hi Title ctermfg=216 gui=NONE guifg=#e2a478
+ hi Todo ctermbg=234 ctermfg=150 guibg=#45493e guifg=#b4be82
+ hi Type ctermfg=110 gui=NONE guifg=#84a0c6
+ hi Underlined cterm=underline ctermfg=110 gui=underline guifg=#84a0c6 term=underline
+ hi VertSplit cterm=NONE ctermbg=233 ctermfg=233 gui=NONE guibg=#0f1117 guifg=#0f1117
+ hi Visual ctermbg=236 ctermfg=NONE guibg=#272c42 guifg=NONE
+ hi VisualNOS ctermbg=236 ctermfg=NONE guibg=#272c42 guifg=NONE
+ hi WildMenu ctermbg=255 ctermfg=234 guibg=#d4d5db guifg=#17171b
+ hi icebergNormalFg ctermfg=252 guifg=#c6c8d1
+ hi diffAdded ctermfg=150 guifg=#b4be82
+ hi diffRemoved ctermfg=203 guifg=#e27878
+ hi ALEErrorSign ctermbg=235 ctermfg=203 guibg=#1e2132 guifg=#e27878
+ hi ALEWarningSign ctermbg=235 ctermfg=216 guibg=#1e2132 guifg=#e2a478
+ hi ALEVirtualTextError ctermfg=203 guifg=#e27878
+ hi ALEVirtualTextWarning ctermfg=216 guifg=#e2a478
+ hi CtrlPMode1 ctermbg=236 ctermfg=242 guibg=#2e313f guifg=#6b7089
+ hi EasyMotionShade ctermfg=239 guifg=#3d425b
+ hi EasyMotionTarget ctermfg=150 guifg=#b4be82
+ hi EasyMotionTarget2First ctermfg=216 guifg=#e2a478
+ hi EasyMotionTarget2Second ctermfg=216 guifg=#e2a478
+ hi GitGutterAdd ctermbg=235 ctermfg=150 guibg=#1e2132 guifg=#b4be82
+ hi GitGutterChange ctermbg=235 ctermfg=109 guibg=#1e2132 guifg=#89b8c2
+ hi GitGutterChangeDelete ctermbg=235 ctermfg=109 guibg=#1e2132 guifg=#89b8c2
+ hi GitGutterDelete ctermbg=235 ctermfg=203 guibg=#1e2132 guifg=#e27878
+ hi gitmessengerEndOfBuffer ctermbg=235 ctermfg=239 guibg=#1e2132 guifg=#444b71
+ hi gitmessengerPopupNormal ctermbg=235 ctermfg=252 guibg=#1e2132 guifg=#c6c8d1
+ hi Sneak ctermbg=140 ctermfg=234 guibg=#a093c7 guifg=#161821
+ hi SneakScope ctermbg=236 ctermfg=242 guibg=#272c42 guifg=#6b7089
+ hi SyntasticErrorSign ctermbg=235 ctermfg=203 guibg=#1e2132 guifg=#e27878
+ hi SyntasticStyleErrorSign ctermbg=235 ctermfg=203 guibg=#1e2132 guifg=#e27878
+ hi SyntasticStyleWarningSign ctermbg=235 ctermfg=216 guibg=#1e2132 guifg=#e2a478
+ hi SyntasticWarningSign ctermbg=235 ctermfg=216 guibg=#1e2132 guifg=#e2a478
+ hi ZenSpace ctermbg=203 guibg=#e27878
+ hi TSFunction ctermfg=252 guifg=#a3adcb
+ hi TSFunctionBuiltin ctermfg=252 guifg=#a3adcb
+ hi TSFunctionMacro ctermfg=252 guifg=#a3adcb
+ hi TSMethod ctermfg=252 guifg=#a3adcb
+ hi TSURI cterm=underline ctermfg=109 gui=underline guifg=#89b8c2 term=underline
+ hi DiagnosticUnderlineInfo cterm=underline ctermfg=109 gui=underline guisp=#89b8c2 term=underline
+ hi DiagnosticInfo ctermfg=109 guifg=#89b8c2
+ hi DiagnosticSignInfo ctermbg=235 ctermfg=109 guibg=#1e2132 guifg=#89b8c2
+ hi DiagnosticUnderlineHint cterm=underline ctermfg=242 gui=underline guisp=#6b7089 term=underline
+ hi DiagnosticHint ctermfg=242 guifg=#6b7089
+ hi DiagnosticSignHint ctermbg=235 ctermfg=242 guibg=#1e2132 guifg=#6b7089
+ hi DiagnosticUnderlineWarn cterm=underline ctermfg=216 gui=underline guisp=#e2a478 term=underline
+ hi DiagnosticWarn ctermfg=216 guifg=#e2a478
+ hi DiagnosticSignWarn ctermbg=235 ctermfg=216 guibg=#1e2132 guifg=#e2a478
+ hi DiagnosticUnderlineError cterm=underline ctermfg=203 gui=underline guisp=#e27878 term=underline
+ hi DiagnosticError ctermfg=203 guifg=#e27878
+ hi DiagnosticSignError ctermbg=235 ctermfg=203 guibg=#1e2132 guifg=#e27878
+ hi DiagnosticFloatingHint ctermbg=236 ctermfg=251 guibg=#3d425b guifg=#c6c8d1
+ hi icebergALAccentRed ctermfg=203 guifg=#e27878
+
+ if has('nvim')
+ let g:terminal_color_0 = '#1e2132'
+ let g:terminal_color_1 = '#e27878'
+ let g:terminal_color_2 = '#b4be82'
+ let g:terminal_color_3 = '#e2a478'
+ let g:terminal_color_4 = '#84a0c6'
+ let g:terminal_color_5 = '#a093c7'
+ let g:terminal_color_6 = '#89b8c2'
+ let g:terminal_color_7 = '#c6c8d1'
+ let g:terminal_color_8 = '#6b7089'
+ let g:terminal_color_9 = '#e98989'
+ let g:terminal_color_10 = '#c0ca8e'
+ let g:terminal_color_11 = '#e9b189'
+ let g:terminal_color_12 = '#91acd1'
+ let g:terminal_color_13 = '#ada0d3'
+ let g:terminal_color_14 = '#95c4ce'
+ let g:terminal_color_15 = '#d2d4de'
+ else
+ let g:terminal_ansi_colors = ['#1e2132', '#e27878', '#b4be82', '#e2a478', '#84a0c6', '#a093c7', '#89b8c2', '#c6c8d1', '#6b7089', '#e98989', '#c0ca8e', '#e9b189', '#91acd1', '#ada0d3', '#95c4ce', '#d2d4de']
+ endif
+endif
+
+hi! link TermCursor Cursor
+hi! link ToolbarButton TabLineSel
+hi! link ToolbarLine TabLineFill
+hi! link cssBraces Delimiter
+hi! link cssClassName Special
+hi! link cssClassNameDot icebergNormalFg
+hi! link cssPseudoClassId Special
+hi! link cssTagName Statement
+hi! link helpHyperTextJump Constant
+hi! link htmlArg Constant
+hi! link htmlEndTag Statement
+hi! link htmlTag Statement
+hi! link jsonQuote icebergNormalFg
+hi! link phpVarSelector Identifier
+hi! link pythonFunction Title
+hi! link rubyDefine Statement
+hi! link rubyFunction Title
+hi! link rubyInterpolationDelimiter String
+hi! link rubySharpBang Comment
+hi! link rubyStringDelimiter String
+hi! link rustFuncCall icebergNormalFg
+hi! link rustFuncName Title
+hi! link rustType Constant
+hi! link sassClass Special
+hi! link shFunction icebergNormalFg
+hi! link vimContinue Comment
+hi! link vimFuncSID vimFunction
+hi! link vimFuncVar icebergNormalFg
+hi! link vimFunction Title
+hi! link vimGroup Statement
+hi! link vimHiGroup Statement
+hi! link vimHiTerm Identifier
+hi! link vimMapModKey Special
+hi! link vimOption Identifier
+hi! link vimVar icebergNormalFg
+hi! link xmlAttrib Constant
+hi! link xmlAttribPunct Statement
+hi! link xmlEndTag Statement
+hi! link xmlNamespace Statement
+hi! link xmlTag Statement
+hi! link xmlTagName Statement
+hi! link yamlKeyValueDelimiter Delimiter
+hi! link CtrlPPrtCursor Cursor
+hi! link CtrlPMatch Title
+hi! link CtrlPMode2 StatusLine
+hi! link deniteMatched icebergNormalFg
+hi! link deniteMatchedChar Title
+hi! link elixirBlockDefinition Statement
+hi! link elixirDefine Statement
+hi! link elixirDocSigilDelimiter String
+hi! link elixirDocTest String
+hi! link elixirExUnitMacro Statement
+hi! link elixirExceptionDefine Statement
+hi! link elixirFunctionDeclaration Title
+hi! link elixirKeyword Statement
+hi! link elixirModuleDeclaration icebergNormalFg
+hi! link elixirModuleDefine Statement
+hi! link elixirPrivateDefine Statement
+hi! link elixirStringDelimiter String
+hi! link jsFlowMaybe icebergNormalFg
+hi! link jsFlowObject icebergNormalFg
+hi! link jsFlowType PreProc
+hi! link graphqlName icebergNormalFg
+hi! link graphqlOperator icebergNormalFg
+hi! link gitmessengerHash Comment
+hi! link gitmessengerHeader Statement
+hi! link gitmessengerHistory Constant
+hi! link jsArrowFunction Operator
+hi! link jsClassDefinition icebergNormalFg
+hi! link jsClassFuncName Title
+hi! link jsExport Statement
+hi! link jsFuncName Title
+hi! link jsFutureKeys Statement
+hi! link jsFuncCall icebergNormalFg
+hi! link jsGlobalObjects Statement
+hi! link jsModuleKeywords Statement
+hi! link jsModuleOperators Statement
+hi! link jsNull Constant
+hi! link jsObjectFuncName Title
+hi! link jsObjectKey Identifier
+hi! link jsSuper Statement
+hi! link jsTemplateBraces Special
+hi! link jsUndefined Constant
+hi! link markdownBold Special
+hi! link markdownCode String
+hi! link markdownCodeDelimiter String
+hi! link markdownHeadingDelimiter Comment
+hi! link markdownRule Comment
+hi! link ngxDirective Statement
+hi! link plug1 icebergNormalFg
+hi! link plug2 Identifier
+hi! link plugDash Comment
+hi! link plugMessage Special
+hi! link SignifySignAdd GitGutterAdd
+hi! link SignifySignChange GitGutterChange
+hi! link SignifySignChangeDelete GitGutterChangeDelete
+hi! link SignifySignDelete GitGutterDelete
+hi! link SignifySignDeleteFirstLine SignifySignDelete
+hi! link StartifyBracket Comment
+hi! link StartifyFile Identifier
+hi! link StartifyFooter Constant
+hi! link StartifyHeader Constant
+hi! link StartifyNumber Special
+hi! link StartifyPath Comment
+hi! link StartifySection Statement
+hi! link StartifySlash Comment
+hi! link StartifySpecial icebergNormalFg
+hi! link svssBraces Delimiter
+hi! link swiftIdentifier icebergNormalFg
+hi! link TSAttribute Special
+hi! link TSBoolean Constant
+hi! link TSCharacter Constant
+hi! link TSComment Comment
+hi! link TSConstructor icebergNormalFg
+hi! link TSConditional Statement
+hi! link TSConstant Constant
+hi! link TSConstBuiltin Constant
+hi! link TSConstMacro Constant
+hi! link TSError Error
+hi! link TSException Statement
+hi! link TSField icebergNormalFg
+hi! link TSFloat Constant
+hi! link TSInclude Statement
+hi! link TSKeyword Statement
+hi! link TSKeywordFunction Function
+hi! link TSLabel Special
+hi! link TSNamespace Statement
+hi! link TSNumber Constant
+hi! link TSOperator icebergNormalFg
+hi! link TSParameter icebergNormalFg
+hi! link TSParameterReference icebergNormalFg
+hi! link TSProperty icebergNormalFg
+hi! link TSPunctDelimiter icebergNormalFg
+hi! link TSPunctBracket icebergNormalFg
+hi! link TSPunctSpecial Special
+hi! link TSRepeat Statement
+hi! link TSString String
+hi! link TSStringRegex String
+hi! link TSStringEscape Special
+hi! link TSTag htmlTagName
+hi! link TSTagAttribute htmlArg
+hi! link TSTagDelimiter htmlTagName
+hi! link TSText icebergNormalFg
+hi! link TSTitle Title
+hi! link TSType Type
+hi! link TSTypeBuiltin Type
+hi! link TSVariable icebergNormalFg
+hi! link TSVariableBuiltin Statement
+hi! link typescriptAjaxMethods icebergNormalFg
+hi! link typescriptBraces icebergNormalFg
+hi! link typescriptEndColons icebergNormalFg
+hi! link typescriptFuncKeyword Statement
+hi! link typescriptGlobalObjects Statement
+hi! link typescriptHtmlElemProperties icebergNormalFg
+hi! link typescriptIdentifier Statement
+hi! link typescriptMessage icebergNormalFg
+hi! link typescriptNull Constant
+hi! link typescriptParens icebergNormalFg
+
+if has('nvim-0.8')
+ hi! link @attribute TSAttribute
+ hi! link @boolean TSBoolean
+ hi! link @character TSCharacter
+ hi! link @comment TSComment
+ hi! link @constructor TSConstructor
+ hi! link @conditional TSConditional
+ hi! link @constant TSConstant
+ hi! link @constant.builtin TSConstBuiltin
+ hi! link @constant.macro TSConstMacro
+ hi! link @error TSError
+ hi! link @exception TSException
+ hi! link @field TSField
+ hi! link @float TSFloat
+ hi! link @function TSFunction
+ hi! link @function.builtin TSFunctionBuiltin
+ hi! link @function.macro TSFunctionMacro
+ hi! link @include TSInclude
+ hi! link @keyword TSKeyword
+ hi! link @keyword.function TSKeywordFunction
+ hi! link @label TSLabel
+ hi! link @method TSMethod
+ hi! link @namespace TSNamespace
+ hi! link @number TSNumber
+ hi! link @operator TSOperator
+ hi! link @parameter TSParameter
+ hi! link @parameter.reference TSParameterReference
+ hi! link @property TSProperty
+ hi! link @punctuation.delimiter TSPunctDelimiter
+ hi! link @punctuation.bracket TSPunctBracket
+ hi! link @punctuation.special TSPunctSpecial
+ hi! link @repeat TSRepeat
+ hi! link @string TSString
+ hi! link @string.regex TSStringRegex
+ hi! link @string.escape TSStringEscape
+ hi! link @tag TSTag
+ hi! link @tag.attribute TSTagAttribute
+ hi! link @tag.delimiter TSTagDelimiter
+ hi! link @text TSText
+ hi! link @text.note Todo
+ hi! link @text.title TSTitle
+ hi! link @text.uri TSURI
+ hi! link @type TSType
+ hi! link @type.builtin TSTypeBuiltin
+ hi! link @variable TSVariable
+ hi! link @variable.builtin TSVariableBuiltin
+endif
+
+if !has('nvim')
+ hi! link SpecialKey Whitespace
+endif
diff --git a/config/nvim/init.vim b/config/nvim/init.vim
new file mode 100644
index 0000000..3c27767
--- /dev/null
+++ b/config/nvim/init.vim
@@ -0,0 +1,48 @@
+" Ryo neovim config
+" https://ryo.nopwd.lol
+" version: alpha
+
+syntax on
+colorscheme iceberg
+set spelllang=en_us
+set spellfile=~/.config/nvim/spell/en.utf-8.add
+set termguicolors
+set background=dark
+set tabstop=4 shiftwidth=4
+set autoindent
+set relativenumber
+set hlsearch incsearch
+set scrolloff=10
+set ignorecase smartcase
+set autochdir
+
+abbreviate W w
+abbreviate E e
+
+let g:netrw_banner = 0
+let g:netrw_winsize = 16
+
+nnoremap <silent> <ESC> <cmd>nohls<cr>
+nnoremap U <C-r>
+nmap <space>w <C-w>w
+nmap <space>h <C-w>h
+nmap <space>j <C-w>j
+nmap <space>k <C-w>k
+nmap <space>l <C-w>l
+nmap <space>o <C-w>o
+nmap <space>q <C-w>q
+nmap <space>s <C-w>s
+nmap <space>v <C-w>v
+nmap zj :bp<cr>
+nmap zk :bn<cr>
+nmap z0 :bd<cr>
+nmap z1 :bd#<cr>
+nmap zb :ls<cr>:b<space>
+nmap <Leader>e :Lexplore!<cr>
+nmap <Leader>c :e $MYVIMRC<cr>
+nmap <Leader>r :w<bar>so %<cr>
+nmap <Leader>m :w<bar>:!make<cr><cr>
+nmap <Leader>f <cmd>e ~/.config/nvim/after/ftplugin<cr>
+nmap <Leader>o <cmd>browse oldfiles<cr>
+nmap <Leader>t <cmd>belowright ter<cr>
+nmap <Leader>s <cmd>setlocal spell!<cr>
diff --git a/config/nvim/spell/en.utf-8.add b/config/nvim/spell/en.utf-8.add
new file mode 100644
index 0000000..bb39977
--- /dev/null
+++ b/config/nvim/spell/en.utf-8.add
@@ -0,0 +1,137 @@
+NN
+VL
+HL
+linux
+foss
+nopwd
+lol
+Ryo
+Ryo's
+xml
+rss
+utf
+unix
+signame
+pid
+signum
+pgrep
+usr
+Suckless
+suckless
+href
+SIGHUP
+manpage
+wayland
+x11
+github
+flashbanged
+TZ
+if
+fi
+xinitrc
+F11
+F12
+brightness
+brightness
+GTK
+pre
+brightnessctl
+html
+gtk
+https
+xfwm
+archlinux
+ini
+config
+ubuntu
+mkdir
+cd
+buildtype
+bittorrent
+br
+cli
+voidlinux
+lt
+Capslock
+capslock
+swapescape
+setxkbmap
+png
+src
+img
+newsboat
+urls
+lukesmith
+xyz
+brycevandegrift
+Qemu
+qemu
+youtube
+qcow2
+vga
+iso
+cdrom
+kvm
+cpu
+fullscreen
+Ctrl
+zathura
+mpv
+runit
+systemd
+xsettingsd
+bspwm
+dwm
+Emojis
+LaTeX
+Neatroff
+Raylib
+dash
+exec
+super
+respawned
+xdg
+xfce
+glibc
+musl
+TTY
+root
+Hostname
+DHCP
+hostname
+ctrl
+cfdisk
+sda
+dev
+MBR
+Solaris
+ext4
+OTF
+qemu
+manpager
+vimrc
+Cmake
+pacman
+executables
+http
+pdf
+emojis
+sdl
+virtio
+vga
+NetworkManager
+NetworkManager
+POSIX
+CloudFlare
+DNS
+dns
+nmcli
+sudo
+uncomplemented
+minterm
+Minterms
+unprimed
+minterms
+oneside
+Kicad
+Arduino
diff --git a/config/nvim/spell/en.utf-8.add.spl b/config/nvim/spell/en.utf-8.add.spl
new file mode 100644
index 0000000..c2d0461
--- /dev/null
+++ b/config/nvim/spell/en.utf-8.add.spl
Binary files differ
diff --git a/config/shell/alias b/config/shell/alias
new file mode 100644
index 0000000..0b6287a
--- /dev/null
+++ b/config/shell/alias
@@ -0,0 +1,60 @@
+#!/usr/bin/env zsh
+
+# Ryo aliases
+# https://ryo.nopwd.lol
+#
+# fork of Luke's config
+# https://github.com/lukesmithxyz/voidrice
+
+# only if variables exists
+[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
+[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC"
+
+# be careful
+alias \
+ cp="cp -i" \
+ mv="mv -i" \
+ rm="rm -I" \
+ bc="bc -ql" \
+ d='doas'
+
+# colorize commands when possible.
+alias \
+ ls="ls -hN --color=auto --group-directories-first" \
+ grep="grep --color=auto" \
+ diff="diff --color=auto" \
+ ccat="highlight --out-format=ansi" \
+ ip="ip -color=auto"
+
+# Arch pacman
+alias \
+ p="pacman" \
+ pacins='doas pacman -S' \
+ pacinf='pacman -Si' \
+ pacsch='pacman -Ss'
+
+# Void xbps
+alias \
+ xi="doas xbps-install" \
+ xr="sudo xbps-remove -R" \
+ xq="xbps-query"
+
+
+alias \
+ ll='ls -lh' \
+ g="git" \
+ i='nsxiv' \
+ v="$EDITOR" \
+ re='source $ZDOTDIR/.zshrc' \
+ a='mpv --no-video' \
+ mkd="mkdir -pv" \
+ hmpv='mpv --really-quiet' \
+ hcurl='curl -L -O' \
+ hgit='git clone --depth=1 --no-tags --single-branch' \
+ hfont='fc-list | grep -i' \
+ hfind='find . -name' \
+ xclip='xclip -selection clipboard -r' \
+ idate='TZ=Iran date' \
+ hxkb='setxkbmap -option caps:swapescape -layout us,ir -option grp:shifts_toggle' \
+ ffmpeg="ffmpeg -hide_banner"
+
diff --git a/config/shell/func b/config/shell/func
new file mode 100644
index 0000000..7788689
--- /dev/null
+++ b/config/shell/func
@@ -0,0 +1,24 @@
+#!/usr/bin/env zsh
+
+proxy_connect=0
+toggle_proxy() {
+ if [[ "$proxy_connect" -eq 0 ]]; then
+ export http_proxy="http://127.0.0.1:2081"
+ export https_proxy=$http_proxy
+ proxy_connect=1
+ echo "vpn activated"
+ else
+ unset http_proxy
+ unset https_proxy
+ proxy_connect=0
+ echo "vpn deactivated"
+ fi
+}
+
+generate_pass() {
+ local len=8
+ if [ $# -eq 1 ]; then
+ len=$1
+ fi
+ tr -cd '[:graph:]' < /dev/urandom | head -c $len | xargs -0
+}
diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf
new file mode 100644
index 0000000..1a79303
--- /dev/null
+++ b/config/tmux/tmux.conf
@@ -0,0 +1,17 @@
+# Ryo i3 config
+# https://ryo.nopwd.lol
+# version: alpha
+
+set-option -sg escape-time 25
+set-option -g mode-keys vi
+set-option -g status-keys vi
+
+bind-key r source-file ~/.config/tmux/tmux.conf
+bind-key y set-option synchronize-panes
+
+bind-key l select-pane -R
+bind-key h select-pane -L
+bind-key j select-pane -D
+bind-key k select-pane -U
+
+bind-key v select-window -l
diff --git a/config/x11/xinitrc b/config/x11/xinitrc
new file mode 100644
index 0000000..dda415a
--- /dev/null
+++ b/config/x11/xinitrc
@@ -0,0 +1,8 @@
+#!/usr/bin/env dash
+
+setxkbmap -layout us,ir -option grp:shifts_toggle -option caps:swapescape
+unclutter &
+dunst &
+blind.sh &
+
+exec i3
diff --git a/config/zsh/zshrc b/config/zsh/zshrc
new file mode 100644
index 0000000..230a150
--- /dev/null
+++ b/config/zsh/zshrc
@@ -0,0 +1,77 @@
+# Ryo's zsh config
+# https://ryo.nopwd.lol
+#
+# literally Luke's config
+# https://github.com/lukesmithxyz/voidrice
+
+
+# enable colors and change prompt
+autoload -U colors && colors
+setopt autocd
+stty stop undef
+setopt interactive_comments
+PS1="%B%{$fg[blue]%}[%{$fg[cyan]%}%~%{$fg[blue]%}]%{$reset_color%}$%b "
+
+# history in cache directory
+HISTSIZE=10000000
+SAVEHIST=10000000
+HISTFILE="$XDG_CACHE_HOME/zsh/history"
+setopt inc_append_history
+
+# load aliases and functions if existent
+source $HOME/.config/shell/aliasrc
+source $HOME/.config/shell/funcrc
+
+# basic auto/tab complete
+autoload -U compinit
+zstyle ':completion:*' menu select
+zmodload zsh/complist
+compinit
+_comp_options+=(globdots)
+
+# vi mode
+bindkey -v
+export KEYTIMEOUT=1
+
+# use vim keys in tab complete menu
+bindkey -M menuselect 'h' vi-backward-char
+bindkey -M menuselect 'k' vi-up-line-or-history
+bindkey -M menuselect 'l' vi-forward-char
+bindkey -M menuselect 'j' vi-down-line-or-history
+bindkey -v '^?' backward-delete-char
+
+# change cursor shape for different vi modes
+function zle-keymap-select () {
+ case $KEYMAP in
+ vicmd) echo -ne '\e[1 q';; # block
+ viins|main) echo -ne '\e[5 q';; # beam
+ esac
+}
+zle -N zle-keymap-select
+zle-line-init() {
+ zle -K viins
+ echo -ne "\e[5 q"
+}
+zle -N zle-line-init
+echo -ne '\e[1 q' # beam cursor on startup
+preexec() { echo -ne '\e[1 q' ;} # also for each new prompt
+
+bindkey '^[[P' delete-char
+
+bindkey -s '^f' '^ucd "$(dirname "$(fzf)")"\n'
+
+# edit line in vim with ctrl-e:
+autoload edit-command-line; zle -N edit-command-line
+bindkey '^e' edit-command-line
+bindkey -M vicmd '^[[P' vi-delete-char
+bindkey -M vicmd '^e' edit-command-line
+bindkey -M visual '^[[P' vi-delete
+
+# autosuggestion and syntax highlighting
+source $HOME/src/zsh-as/zsh-autosuggestions.zsh 2> /dev/null
+source $HOME/src/zsh-fsh/fast-syntax-highlighting.plugin.zsh 2>/dev/null
+
+bindkey '^s' autosuggest-accept
+
+# put your configs here
+
diff --git a/zprofile b/zprofile
new file mode 100644
index 0000000..26d6d04
--- /dev/null
+++ b/zprofile
@@ -0,0 +1,64 @@
+#!/usr/bin/env dash
+
+# Ryo's zsh profile
+# https://ryo.nopwd.lol
+# version: alpha
+#
+# literally Luke's config
+# https://github.com/lukesmithxyz/voidrice
+
+
+# Add all directories in `~/.local/bin` to $PATH
+export PATH="$PATH:$(find ~/.local/bin -type d | paste -sd ':' -)"
+
+unsetopt PROMPT_SP 2>/dev/null
+
+# Default programs:
+export EDITOR="nvim"
+export TERMINAL="st"
+export BROWSER="firefox"
+
+# ~/ Clean-up:
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME="$HOME/.local/cache"
+export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
+export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+export FPATH="$XDG_DATA_HOME/zsh/site-functions:$FPATH"
+export GNUPGHOME="$XDG_DATA_HOME/gnupg"
+export WINEPREFIX="$XDG_DATA_HOME/wine/default"
+export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
+export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
+export CARGO_HOME="$XDG_DATA_HOME/cargo"
+export GOPATH="$XDG_DATA_HOME/go"
+export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
+export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config"
+export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"
+export NODE_PATH="$XDG_DATA_HOME/node_modules"
+
+# Other program settings:
+export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
+export LESS="R"
+export LESS_TERMCAP_mb="$(printf '%b' '')"
+export LESS_TERMCAP_md="$(printf '%b' '')"
+export LESS_TERMCAP_me="$(printf '%b' '')"
+export LESS_TERMCAP_so="$(printf '%b' '')"
+export LESS_TERMCAP_se="$(printf '%b' '')"
+export LESS_TERMCAP_us="$(printf '%b' '')"
+export LESS_TERMCAP_ue="$(printf '%b' '')"
+export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
+export MOZ_USE_XINPUT2=1
+export _JAVA_AWT_WM_NONREPARENTING=1
+export MANPAGER='nvim +Man!'
+export PAGER=less
+export WINEDEBUG="fixme-all"
+export C_INCLUDE_PATH=$HOME/.local/include
+export LD_LIBRARY_PATH=$HOME/.local/lib
+export LIBRARY_PATH=$HOME/.local/lib
+export MANPATH=$XDG_DATA_HOME/man:
+
+# Run startx only in tty1
+if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
+ startx
+fi