Перевёл dotfiles на stow
This commit is contained in:
parent
27416cef99
commit
0871b17dcd
172 changed files with 1292 additions and 100 deletions
104
config/hypr/custom/rules.conf
Normal file
104
config/hypr/custom/rules.conf
Normal file
|
@ -0,0 +1,104 @@
|
|||
# ######## Window rules ########
|
||||
|
||||
# Uncomment to apply global transparency to all windows:
|
||||
windowrulev2 = opacity 0.95 override 0.95 override, class:.*
|
||||
|
||||
# Disable blur for XWayland windows (or context menus with shadow would look weird)
|
||||
windowrulev2 = noblur, xwayland:1
|
||||
|
||||
# Floating
|
||||
windowrulev2 = float, class:^(blueberry\.py)$
|
||||
windowrulev2 = float, class:^(steam)$
|
||||
windowrulev2 = float, class:^(guifetch)$ # FlafyDev/guifetch
|
||||
windowrulev2 = float, class:^(pavucontrol)$
|
||||
windowrulev2 = size 45%, class:^(pavucontrol)$
|
||||
windowrulev2 = center, class:^(pavucontrol)$
|
||||
windowrulev2 = float, class:^(org.pulseaudio.pavucontrol)$
|
||||
windowrulev2 = size 45%, class:^(org.pulseaudio.pavucontrol)$
|
||||
windowrulev2 = center, class:^(org.pulseaudio.pavucontrol)$
|
||||
windowrulev2 = float, class:^(nm-connection-editor)$
|
||||
windowrulev2 = size 45%, class:^(nm-connection-editor)$
|
||||
windowrulev2 = center, class:^(nm-connection-editor)$
|
||||
|
||||
# Tiling
|
||||
windowrulev2 = tile, class:^dev\.warp\.Warp$
|
||||
|
||||
# Picture-in-Picture
|
||||
windowrulev2 = float, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
windowrulev2 = keepaspectratio, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
windowrulev2 = move 73% 72%, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
windowrulev2 = size 25%, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
windowrulev2 = float, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
windowrulev2 = pin, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
|
||||
|
||||
# Dialog windows – float+center these windows.
|
||||
windowrulev2 = center, title:^(Open File)(.*)$
|
||||
windowrulev2 = center, title:^(Select a File)(.*)$
|
||||
windowrulev2 = center, title:^(Choose wallpaper)(.*)$
|
||||
windowrulev2 = center, title:^(Open Folder)(.*)$
|
||||
windowrulev2 = center, title:^(Save As)(.*)$
|
||||
windowrulev2 = center, title:^(Library)(.*)$
|
||||
windowrulev2 = center, title:^(File Upload)(.*)$
|
||||
windowrulev2 = float, title:^(Open File)(.*)$
|
||||
windowrulev2 = float, title:^(Select a File)(.*)$
|
||||
windowrulev2 = float, title:^(Choose wallpaper)(.*)$
|
||||
windowrulev2 = float, title:^(Open Folder)(.*)$
|
||||
windowrulev2 = float, title:^(Save As)(.*)$
|
||||
windowrulev2 = float, title:^(Library)(.*)$
|
||||
windowrulev2 = float, title:^(File Upload)(.*)$
|
||||
|
||||
|
||||
# --- Tearing ---
|
||||
windowrulev2 = immediate, title:.*\.exe
|
||||
windowrulev2 = immediate, class:^(steam_app)
|
||||
|
||||
# No shadow for tiled windows (matches windows that are not floating).
|
||||
windowrulev2 = noshadow, floating:0
|
||||
|
||||
# ######## Workspace rules ########
|
||||
workspace = special:special, gapsout:30
|
||||
|
||||
# ######## Layer rules ########
|
||||
layerrule = xray 1, .*
|
||||
# layerrule = noanim, .*
|
||||
layerrule = noanim, walker
|
||||
layerrule = noanim, selection
|
||||
layerrule = noanim, overview
|
||||
layerrule = noanim, anyrun
|
||||
layerrule = noanim, indicator.*
|
||||
layerrule = noanim, osk
|
||||
layerrule = noanim, hyprpicker
|
||||
|
||||
layerrule = noanim, noanim
|
||||
layerrule = blur, gtk-layer-shell
|
||||
layerrule = ignorezero, gtk-layer-shell
|
||||
layerrule = blur, launcher
|
||||
layerrule = ignorealpha 0.5, launcher
|
||||
layerrule = blur, notifications
|
||||
layerrule = ignorealpha 0.69, notifications
|
||||
layerrule = blur, logout_dialog # wlogout
|
||||
|
||||
# ags
|
||||
layerrule = animation slide left, sideleft.*
|
||||
layerrule = animation slide right, sideright.*
|
||||
layerrule = blur, session[0-9]*
|
||||
layerrule = blur, bar[0-9]*
|
||||
layerrule = ignorealpha 0.6, bar[0-9]*
|
||||
layerrule = blur, barcorner.*
|
||||
layerrule = ignorealpha 0.6, barcorner.*
|
||||
layerrule = blur, dock[0-9]*
|
||||
layerrule = ignorealpha 0.6, dock[0-9]*
|
||||
layerrule = blur, indicator.*
|
||||
layerrule = ignorealpha 0.6, indicator.*
|
||||
layerrule = blur, overview[0-9]*
|
||||
layerrule = ignorealpha 0.6, overview[0-9]*
|
||||
layerrule = blur, cheatsheet[0-9]*
|
||||
layerrule = ignorealpha 0.6, cheatsheet[0-9]*
|
||||
layerrule = blur, sideright[0-9]*
|
||||
layerrule = ignorealpha 0.6, sideright[0-9]*
|
||||
layerrule = blur, sideleft[0-9]*
|
||||
layerrule = ignorealpha 0.6, sideleft[0-9]*
|
||||
layerrule = blur, indicator.*
|
||||
layerrule = ignorealpha 0.6, indicator.*
|
||||
layerrule = blur, osk[0-9]*
|
||||
layerrule = ignorealpha 0.6, osk[0-9]*
|
33
config/hypr/hypridle.conf
Normal file
33
config/hypr/hypridle.conf
Normal file
|
@ -0,0 +1,33 @@
|
|||
$suspend_cmd = pidof steam || systemctl suspend || loginctl suspend
|
||||
|
||||
# General_settings
|
||||
general {
|
||||
before_sleep_cmd = hyprlock # command before sleep
|
||||
ignore_dbus_inhibit = false # (used by e.g. firefox or steam)
|
||||
}
|
||||
|
||||
# Screen_brightness
|
||||
listener {
|
||||
timeout = 300
|
||||
on-timeout = brightnessctl s 20%
|
||||
on-resume = brightnessctl s 100%
|
||||
}
|
||||
|
||||
# Screen_lock
|
||||
listener {
|
||||
timeout = 600
|
||||
on-timeout = hyprlock
|
||||
}
|
||||
|
||||
# Screen_off
|
||||
listener {
|
||||
timeout = 780
|
||||
on-timeout = hyprctl dispatch dpms off
|
||||
on-resume = hyprctl dispatch dpms on
|
||||
}
|
||||
|
||||
# Suspend
|
||||
listener {
|
||||
timeout = 1200
|
||||
on-timeout = $suspend_cmd
|
||||
}
|
264
config/hypr/hyprland.conf
Normal file
264
config/hypr/hyprland.conf
Normal file
|
@ -0,0 +1,264 @@
|
|||
|
||||
# #######################################################################################
|
||||
# AUTOGENERATED HYPR CONFIG.
|
||||
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
|
||||
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
|
||||
# #######################################################################################
|
||||
|
||||
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
monitor=DP-7,1920x1080,auto,auto
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = dolphin
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
exec-once = $terminal
|
||||
exec-once = nm-applet &
|
||||
exec-once = waybar & hyprpaper & firefox
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 4
|
||||
gaps_out = 8
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
drop_shadow = true
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = true
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 8, default
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us,ru
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = grp:caps_toggle,misc:typo,lv3:ralt_switch
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = true
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
|
||||
####################
|
||||
### KEYBINDINGSS ###
|
||||
####################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
$shiftMod = SUPER_SHIFT
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, Q, exec, $terminal
|
||||
bind = $mainMod, C, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, L, exec, hyprlock
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
|
||||
# Screenshot a window
|
||||
bind = $mainMod, PRINT, exec, hyprshot -m window
|
||||
# Screenshot a monitor
|
||||
bind = , PRINT, exec, hyprshot -m output
|
||||
# Screenshot a region
|
||||
bind = $shiftMod, PRINT, exec, hyprshot -m region
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
source = ~/.config/hypr/custom/rules.conf
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
||||
|
74
config/hypr/hyprlock.conf
Normal file
74
config/hypr/hyprlock.conf
Normal file
|
@ -0,0 +1,74 @@
|
|||
background {
|
||||
monitor =
|
||||
path = $HOME/.config/hypr/lock.png # only *.png supported for now
|
||||
color = rgba(25, 20, 20, 1.0)
|
||||
blur_passes = 4 # 0 disables blurring
|
||||
blur_size = 2
|
||||
noise = 0.0117
|
||||
contrast = 0.8916
|
||||
brightness = 0.8172
|
||||
vibrancy = 0.1696
|
||||
vibrancy_darkness = 0.0
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 400, 50
|
||||
outline_thickness = 1
|
||||
dots_size = 0.4 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
outer_color = rgb(000000)
|
||||
inner_color = rgb(200, 200, 200)
|
||||
font_color = rgb(10, 10, 10)
|
||||
fade_on_empty = true
|
||||
placeholder_text = <i>Пароль</i> # Text rendered in the input box when it's empty.
|
||||
hide_input = false
|
||||
position = 0, -50
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "<span foreground='##ffffff'>$(date +"%H:%M")</span>"
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 60
|
||||
font_family = Noto Sans
|
||||
position = 0, 150
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "<span foreground='##ffffff'>$(date +"%A, %d %B %Y")</span>"
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 18
|
||||
font_family = Noto Sans
|
||||
position = 0, 100
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 18
|
||||
font_family = Noto Sans
|
||||
position = 0, 50
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = <span foreground='##ffffff'>$USER</span>
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 60
|
||||
font_family = Noto Sans
|
||||
position = 0, 320
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
29
config/hypr/hyprlock/status.sh
Executable file
29
config/hypr/hyprlock/status.sh
Executable file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
############ Variables ############
|
||||
enable_battery=false
|
||||
battery_charging=false
|
||||
|
||||
####### Check availability ########
|
||||
for battery in /sys/class/power_supply/*BAT*; do
|
||||
if [[ -f "$battery/uevent" ]]; then
|
||||
enable_battery=true
|
||||
if [[ $(cat /sys/class/power_supply/*/status | head -1) == "Charging" ]]; then
|
||||
battery_charging=true
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
############# Output #############
|
||||
if [[ $enable_battery == true ]]; then
|
||||
if [[ $battery_charging == true ]]; then
|
||||
echo -n " заряжается"
|
||||
fi
|
||||
echo -n "$(cat /sys/class/power_supply/*/capacity | head -1)"%
|
||||
if [[ $battery_charging == false ]]; then
|
||||
echo -n " осталось"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ''
|
3
config/hypr/hyprpaper.conf
Normal file
3
config/hypr/hyprpaper.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
preload = ~/.config/hypr/wp.jpg
|
||||
wallpaper = , ~/.config/hypr/wp.jpg
|
||||
splash = true
|
BIN
config/hypr/lock.png
Normal file
BIN
config/hypr/lock.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 MiB |
BIN
config/hypr/wp.jpg
Normal file
BIN
config/hypr/wp.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 9 MiB |
18
config/kitty/kitty.conf
Normal file
18
config/kitty/kitty.conf
Normal file
|
@ -0,0 +1,18 @@
|
|||
font_size 10.0
|
||||
background_opacity 1
|
||||
background #0e0e20
|
||||
cursor_shape beam
|
||||
window_margin_width 4
|
||||
confirm_os_window_close 0
|
||||
|
||||
# Zoom
|
||||
map ctrl+plus change_font_size all +1
|
||||
map ctrl+equal change_font_size all +1
|
||||
map ctrl+kp_add change_font_size all +1
|
||||
|
||||
map ctrl+minus change_font_size all -1
|
||||
map ctrl+underscore change_font_size all -1
|
||||
map ctrl+kp_subtract change_font_size all -1
|
||||
|
||||
map ctrl+0 change_font_size all 0
|
||||
map ctrl+kp_0 change_font_size all 0
|
7
config/nvim/.editorconfig
Normal file
7
config/nvim/.editorconfig
Normal file
|
@ -0,0 +1,7 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = tab
|
||||
|
1
config/nvim/.gitignore
vendored
Normal file
1
config/nvim/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
codecompanion.lua
|
54
config/nvim/Session.vim
Normal file
54
config/nvim/Session.vim
Normal file
|
@ -0,0 +1,54 @@
|
|||
let SessionLoad = 1
|
||||
let s:so_save = &g:so | let s:siso_save = &g:siso | setg so=0 siso=0 | setl so=-1 siso=-1
|
||||
let v:this_session=expand("<sfile>:p")
|
||||
silent only
|
||||
silent tabonly
|
||||
cd ~/projects/dotfiles/nvim
|
||||
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
|
||||
let s:wipebuf = bufnr('%')
|
||||
endif
|
||||
let s:shortmess_save = &shortmess
|
||||
if &shortmess =~ 'A'
|
||||
set shortmess=aoOA
|
||||
else
|
||||
set shortmess=aoO
|
||||
endif
|
||||
badd +6 init.lua
|
||||
badd +25 lua/plugins/theme.lua
|
||||
badd +1 lua/plugins/tree.lua
|
||||
argglobal
|
||||
%argdel
|
||||
edit lua/plugins/tree.lua
|
||||
argglobal
|
||||
balt lua/plugins/theme.lua
|
||||
setlocal fdm=expr
|
||||
setlocal fde=nvim_treesitter#foldexpr()
|
||||
setlocal fmr={{{,}}}
|
||||
setlocal fdi=#
|
||||
setlocal fdl=6
|
||||
setlocal fml=1
|
||||
setlocal fdn=20
|
||||
setlocal fen
|
||||
let s:l = 1 - ((0 * winheight(0) + 22) / 44)
|
||||
if s:l < 1 | let s:l = 1 | endif
|
||||
keepjumps exe s:l
|
||||
normal! zt
|
||||
keepjumps 1
|
||||
normal! 0
|
||||
tabnext 1
|
||||
if exists('s:wipebuf') && len(win_findbuf(s:wipebuf)) == 0 && getbufvar(s:wipebuf, '&buftype') isnot# 'terminal'
|
||||
silent exe 'bwipe ' . s:wipebuf
|
||||
endif
|
||||
unlet! s:wipebuf
|
||||
set winheight=1 winwidth=20
|
||||
let &shortmess = s:shortmess_save
|
||||
let s:sx = expand("<sfile>:p:r")."x.vim"
|
||||
if filereadable(s:sx)
|
||||
exe "source " . fnameescape(s:sx)
|
||||
endif
|
||||
let &g:so = s:so_save | let &g:siso = s:siso_save
|
||||
set hlsearch
|
||||
nohlsearch
|
||||
doautoall SessionLoadPost
|
||||
unlet SessionLoad
|
||||
" vim: set ft=vim :
|
5
config/nvim/colors/00Tree.html
Normal file
5
config/nvim/colors/00Tree.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
[01;34m./config/nvim/colors[0m
|
||||
│ 00Tree.html
|
||||
neonxp.lua
|
||||
|
||||
1 directory, 2 files
|
142
config/nvim/colors/neonxp.lua
Normal file
142
config/nvim/colors/neonxp.lua
Normal file
|
@ -0,0 +1,142 @@
|
|||
local function SetHl(group, mod, fg, bg)
|
||||
|
||||
local fmt="highlight %s gui=%s cterm=%s guifg=%s ctermfg=%s guibg=%s ctermbg=%s"
|
||||
vim.cmd(fmt:format(group, mod[1], mod[2], fg[1], fg[2], bg[1], bg[2]))
|
||||
end
|
||||
local colors = require("theme.colors")
|
||||
local mods = require("theme.modifiers")
|
||||
|
||||
vim.cmd([[hi normal guibg=NONE ctermbg=NONE]])
|
||||
|
||||
-- VIM - INTERFACE
|
||||
------------------
|
||||
SetHl("StatusLine", mods["bold"], colors["none"], colors["black_l"])
|
||||
SetHl("StatusLineNC", mods["none"], colors["none"], colors["black_l"])
|
||||
SetHl("TabLineSel", mods["bold"], colors["none"], colors["black_l"])
|
||||
SetHl("WinSeparator", mods["none"], colors["gray"], colors["none"])
|
||||
SetHl("Pmenu", mods["none"], colors["none"], colors["black_l"])
|
||||
SetHl("PmenuSel", mods["bold"], colors["none"], colors["black_l"])
|
||||
SetHl("PmenuThumb", mods["none"], colors["none"], colors["gray_dd"])
|
||||
SetHl("FloatBorder", mods["none"], colors["gray"], colors["none"])
|
||||
|
||||
-- VIM - GENERAL TEXT
|
||||
---------------------
|
||||
SetHl("Visual", mods["bold"], colors["none"], colors["black_l"])
|
||||
SetHl("Normal", mods["none"], colors["white"], colors["none"])
|
||||
SetHl("NormalFloat", mods["none"], colors["white"], colors["none"])
|
||||
SetHl("NonText", mods["none"], colors["gray"], colors["none"])
|
||||
SetHl("SpecialKey", mods["none"], colors["gray"], colors["none"])
|
||||
SetHl("Conceal", mods["none"], colors["gray"], colors["none"])
|
||||
SetHl("Folded", mods["none"], colors["none"], colors["none"])
|
||||
SetHl("MatchParen", mods["bold"], colors["yellow_l"], colors["black_l"])
|
||||
SetHl("Search", mods["bold"], colors["yellow_l"], colors["black_l"])
|
||||
SetHl("CurSearch", mods["bold"], colors["chartreuse_l"], colors["black_l"])
|
||||
SetHl("CursorLine", mods["bold"], colors["none"], colors["black_ll"])
|
||||
SetHl("CursorColumn", mods["bold"], colors["none"], colors["black_l"])
|
||||
SetHl("ColorColumn", mods["bold"], colors["none"], colors["black_ll"])
|
||||
|
||||
-- VIM - INFO TEXT
|
||||
------------------
|
||||
SetHl("LineNr", mods["italic"], colors["gray"], colors["none"])
|
||||
SetHl("SignColumn", mods["bold"], colors["gray"], colors["none"])
|
||||
SetHl("DiagnosticError", mods["none"], colors["red_l"], colors["none"])
|
||||
SetHl("DiagnosticWarn", mods["none"], colors["orange_l"], colors["none"])
|
||||
SetHl("DiagnosticOK", mods["none"], colors["green_l"], colors["none"])
|
||||
SetHl("DiagnosticInfo", mods["none"], colors["royal_l"], colors["none"])
|
||||
SetHl("DiffAdd", mods["none"], colors["green_l"], colors["black_l"])
|
||||
SetHl("DiffChange", mods["none"], colors["orange_l"], colors["black_l"])
|
||||
SetHl("DiffDelete", mods["none"], colors["red_l"], colors["black_l"])
|
||||
SetHl("DiffText", mods["none"], colors["royal_l"], colors["black_l"])
|
||||
SetHl("QuickFixLine", mods["none"], colors["royal_l"], colors["none"])
|
||||
|
||||
-- VIM - MESSAGE TEXT
|
||||
---------------------
|
||||
SetHl("ErrorMsg", mods["none"], colors["red_l"], colors["none"])
|
||||
SetHl("WarningMsg", mods["none"], colors["orange_l"], colors["none"])
|
||||
SetHl("Title", mods["bold"], colors["white"], colors["none"])
|
||||
SetHl("ModeMsg", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("MoreMsg", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("Question", mods["none"], colors["royal_l"], colors["none"])
|
||||
|
||||
-- VIM - FILE SYSTEM
|
||||
--------------------
|
||||
SetHl("Directory", mods["none"], colors["royal_l"], colors["none"])
|
||||
SetHl("netrwClassify", mods["none"], colors["royal_d"], colors["none"])
|
||||
SetHl("netrwExe", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
|
||||
-- CODE - VIM GENERAL
|
||||
---------------------
|
||||
SetHl("PreProc", mods["none"], colors["purple_l"], colors["none"])
|
||||
SetHl("PreCondit", mods["none"], colors["purple_l"], colors["none"])
|
||||
SetHl("Statement", mods["none"], colors["cyan_l"], colors["none"])
|
||||
SetHl("Type", mods["none"], colors["green_l"], colors["none"])
|
||||
SetHl("Identifier", mods["none"], colors["royal_l"], colors["none"])
|
||||
SetHl("Function", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("Delimiter", mods["none"], colors["gray_ll"], colors["none"])
|
||||
SetHl("Operator", mods["none"], colors["white"], colors["none"])
|
||||
SetHl("Constant", mods["none"], colors["white"], colors["none"])
|
||||
SetHl("Special", mods["none"], colors["white_dd"], colors["none"])
|
||||
SetHl("String", mods["italic"], colors["white"], colors["none"])
|
||||
SetHl("Comment", mods["italic"], colors["gray"], colors["none"])
|
||||
SetHl("SpecialComment", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("Todo", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("Debug", mods["italic"], colors["gray"], colors["none"])
|
||||
SetHl("Error", mods["none"], colors["red_l"], colors["none"])
|
||||
SetHl("Added", mods["none"], colors["green_l"], colors["none"])
|
||||
SetHl("Changed", mods["none"], colors["orange_l"], colors["none"])
|
||||
SetHl("Removed", mods["none"], colors["red_l"], colors["none"])
|
||||
|
||||
-- CODE - TREESITTER GENERAL
|
||||
----------------------------
|
||||
SetHl("@variable", mods["none"], colors["royal_l"], colors["none"])
|
||||
SetHl("@constant", mods["none"], colors["royal_l"], colors["none"])
|
||||
SetHl("@function.builtin", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("@variable.builtin", mods["none"], colors["purple_l"], colors["none"])
|
||||
SetHl("@constant.builtin", mods["none"], colors["purple_l"], colors["none"])
|
||||
|
||||
-- CODE - TREESITTER BASH
|
||||
-------------------------
|
||||
SetHl("@variable.parameter.bash", mods["none"], colors["turquoise_d"], colors["none"])
|
||||
SetHl("@punctuation.special.bash", mods["none"], colors["royal_d"], colors["none"])
|
||||
SetHl("@character.special.bash", mods["none"], colors["purple_l"], colors["none"])
|
||||
|
||||
-- ADDON - LAZY
|
||||
---------------
|
||||
SetHl("LazyH1", mods["bold"], colors["purple_l"], colors["none"])
|
||||
SetHl("LazyH2", mods["bold"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("LazyComment", mods["none"], colors["turquoise_d"], colors["none"])
|
||||
SetHl("LazyButton", mods["none"], colors["white"], colors["none"])
|
||||
SetHl("LazyButtonActive", mods["none"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("LazySpecial", mods["bold"], colors["turquoise_l"], colors["none"])
|
||||
|
||||
-- ADDON - LSPCMP
|
||||
-----------------
|
||||
SetHl("CmpItemKind", mods["italic"], colors["gray_l"], colors["none"])
|
||||
SetHl("CmpItemKindKeyword", mods["italic"], colors["cyan_l"], colors["none"])
|
||||
SetHl("CmpItemKindClass", mods["italic"], colors["yellow_l"], colors["none"])
|
||||
SetHl("CmpItemKindStruct", mods["italic"], colors["green_l"], colors["none"])
|
||||
SetHl("CmpItemKindEnum", mods["italic"], colors["salmon_l"], colors["none"])
|
||||
SetHl("CmpItemKindInterface", mods["italic"], colors["blue_l"], colors["none"])
|
||||
SetHl("CmpItemKindField", mods["italic"], colors["green_l"], colors["none"])
|
||||
SetHl("CmpItemKindUnit", mods["italic"], colors["salmon_l"], colors["none"])
|
||||
SetHl("CmpItemKindFile", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindFunction", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindMethod", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindModule", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindConstructor", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindOperator", mods["italic"], colors["turquoise_l"], colors["none"])
|
||||
SetHl("CmpItemKindFolder", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindConstant", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindVariable", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindReference", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindParameter", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindEnumMember", mods["italic"], colors["royal_l"], colors["none"])
|
||||
SetHl("CmpItemKindSnippet", mods["italic"], colors["purple_l"], colors["none"])
|
||||
|
||||
-- ADDON - TELESCOPE
|
||||
--------------------
|
||||
SetHl("TelescopeTitle", mods["bold"], colors["white"], colors["none"])
|
||||
SetHl("TelescopeBorder", mods["none"], colors["gray"], colors["none"])
|
||||
SetHl("TelescopePromptPrefix", mods["none"], colors["purple_l"], colors["none"])
|
||||
|
||||
|
38
config/nvim/init.lua
Normal file
38
config/nvim/init.lua
Normal file
|
@ -0,0 +1,38 @@
|
|||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"--branch=stable",
|
||||
lazyrepo,
|
||||
lazypath,
|
||||
})
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
vim.g.colorcolumn = 120
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.cmd("filetype plugin indent on")
|
||||
|
||||
require("options")
|
||||
require("plugins")
|
||||
require("keymaps")
|
||||
require("commands")
|
||||
require("autocommands")
|
||||
require("lsp")
|
||||
require("syntax")
|
||||
-- require("dap")
|
||||
vim.cmd [[colorscheme nightfly]]
|
35
config/nvim/lazy-lock.json
Normal file
35
config/nvim/lazy-lock.json
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
|
||||
"auto-save.nvim": { "branch": "main", "commit": "37c82fd548e3f5ffc2d9d020a65dac1044584f44" },
|
||||
"blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" },
|
||||
"codecompanion.nvim": { "branch": "main", "commit": "9edf22cb71711cd7fab7671a25ed5424011a379d" },
|
||||
"conform.nvim": { "branch": "master", "commit": "0e93e0d12d2f7ebdea9e3e444dfaff0050cefbe6" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"go.nvim": { "branch": "master", "commit": "a3455f48cff718a86275115523dcc735535a13aa" },
|
||||
"goerr-nvim": { "branch": "main", "commit": "d30ba1cab652e78dbf6a644eb4823be57e9af203" },
|
||||
"goimpl.nvim": { "branch": "main", "commit": "2548d42c4db0645dea14f27e67c4b19b7030f1cf" },
|
||||
"guihua.lua": { "branch": "master", "commit": "87bea7b98429405caf2a0ce4d029b027bb017c70" },
|
||||
"headlines.nvim": { "branch": "master", "commit": "bf17c96a836ea27c0a7a2650ba385a7783ed322e" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"lsp_signature.nvim": { "branch": "master", "commit": "a4e3c15dfdce8783c074539b1835edae75fa63d5" },
|
||||
"lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" },
|
||||
"nightfly": { "branch": "master", "commit": "8c55003e89f321a48a8cd4bb426dd3e7c58f0646" },
|
||||
"nvim-dap": { "branch": "master", "commit": "ea82027c3447dc1a022be9a9884de276c05cd33a" },
|
||||
"nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "036885e8e5456d3907626b634693234f628afef6" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "1c733e8c1957dc67f47580fe9c458a13b5612d5b" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-treesitter-context": { "branch": "master", "commit": "464a443b5a6657f39772b20baa95d02ffe97b268" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
||||
"smartcolumn.nvim": { "branch": "main", "commit": "92f3773af80d674f1eb61e112dca79e2fa449fd1" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
|
||||
"todotxt.nvim": { "branch": "main", "commit": "225ac77fea10a9ad9a48d0247a8d3c23f33cb2ba" }
|
||||
}
|
41
config/nvim/lua/00Tree.html
Normal file
41
config/nvim/lua/00Tree.html
Normal file
|
@ -0,0 +1,41 @@
|
|||
[01;34m./config/nvim/lua[0m
|
||||
│ 00Tree.html
|
||||
│ autocommands.lua
|
||||
│ commands.lua
|
||||
│ keymaps.lua
|
||||
│ lsp.lua
|
||||
│ [01;34mmyplugins[0m
|
||||
│ resize.lua
|
||||
├── options.lua
|
||||
├── [01;34mplugins[0m
|
||||
│ │ autosave.lua
|
||||
│ │ blankline.lua
|
||||
│ │ cmp.lua
|
||||
│ │ codecompanion.lua
|
||||
│ │ columns.lua
|
||||
│ │ conform.lua
|
||||
│ │ dap_go.lua
|
||||
│ │ dap.lua
|
||||
│ │ dapui.lua
|
||||
│ │ goimpl.lua
|
||||
│ │ go.lua
|
||||
│ │ headlines.lua
|
||||
│ │ lsp_saga.lua
|
||||
│ │ lsp_signature.lua
|
||||
│ │ lualine.lua
|
||||
│ │ resize.lua
|
||||
│ │ telescope.lua
|
||||
│ │ todo.lua
|
||||
│ │ tree.lua
|
||||
│ treesitter.lua
|
||||
├── plugins.lua
|
||||
├── [01;34msyntax[0m
|
||||
│ │ hjson.lua
|
||||
│ init.lua
|
||||
└── [01;34mtheme[0m
|
||||
│ [01;34masset[0m
|
||||
│ └── hsv-to-rgb.lua
|
||||
├── colors.lua
|
||||
└── modifiers.lua
|
||||
|
||||
6 directories, 33 files
|
163
config/nvim/lua/autocommands.lua
Normal file
163
config/nvim/lua/autocommands.lua
Normal file
|
@ -0,0 +1,163 @@
|
|||
local function async_cmd(cmd)
|
||||
local job_id = vim.fn.jobstart(cmd, {
|
||||
on_stdout = function(_, data)
|
||||
for _, line in pairs(data or {}) do
|
||||
print(line)
|
||||
end
|
||||
end,
|
||||
on_stderr = function(_, data)
|
||||
for _, line in pairs(data or {}) do
|
||||
print(line)
|
||||
end
|
||||
end,
|
||||
on_exit = function(_, code)
|
||||
if code ~= 0 then
|
||||
vim.notify(
|
||||
string.format("Команда завершилась с ошибкой (%d)", code),
|
||||
vim.log.levels.ERROR
|
||||
)
|
||||
else
|
||||
vim.notify("OK", vim.log.levels.INFO)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
return job_id
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||
pattern = "*.go",
|
||||
callback = function()
|
||||
local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding())
|
||||
params.context = { only = { "source.organizeImports" } }
|
||||
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
|
||||
for _, res in pairs(result or {}) do
|
||||
for _, r in pairs(res.result or {}) do
|
||||
if r.edit then
|
||||
vim.lsp.util.apply_workspace_edit(r.edit, vim.lsp.util._get_offset_encoding())
|
||||
else
|
||||
vim.lsp.buf.execute_command(r.command)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||
pattern = "*.go",
|
||||
callback = function()
|
||||
vim.lsp.buf.format(nil, 3000)
|
||||
end,
|
||||
})
|
||||
|
||||
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = TrimWhiteSpaceGrp,
|
||||
pattern = "*",
|
||||
command = "%s/\\s\\+$//e",
|
||||
})
|
||||
|
||||
local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
group = YankHighlightGrp,
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
vim.highlight.on_yank({
|
||||
higroup = "IncSearch",
|
||||
timeout = 40,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
callback = function()
|
||||
if vim.bo.filetype == "NvimTree" or vim.fn.expand("%") == "" then
|
||||
return
|
||||
end
|
||||
vim.schedule(function()
|
||||
vim.cmd("nohlsearch")
|
||||
local treeapi = require("nvim-tree.api")
|
||||
treeapi.tree.find_file({
|
||||
update_root = false,
|
||||
focus = false,
|
||||
})
|
||||
end)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufAdd", "BufNew", "BufNewFile", "BufWinEnter" }, {
|
||||
group = vim.api.nvim_create_augroup("TS_FOLD_WORKAROUND", {}),
|
||||
callback = function()
|
||||
-- vim.cmd([[normal zR]])
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "*",
|
||||
callback = function(args)
|
||||
local buf = args.buf
|
||||
local ft = vim.bo[buf].filetype
|
||||
|
||||
if ft and ft ~= "" then
|
||||
local has_parser, _ = pcall(vim.treesitter.language.get_lang, ft)
|
||||
if has_parser then
|
||||
pcall(vim.treesitter.start, buf, ft)
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "TSUpdate",
|
||||
callback = function()
|
||||
vim.cmd([[TSEnable highlight]])
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||
pattern = "*.templ",
|
||||
callback = function()
|
||||
local cmd = "templ generate"
|
||||
async_cmd(cmd)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
||||
callback = function(data)
|
||||
local directory = vim.fn.isdirectory(data.file) == 1
|
||||
if not directory then
|
||||
return
|
||||
end
|
||||
vim.cmd.cd(data.file)
|
||||
require("nvim-tree.api").tree.open()
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "go",
|
||||
callback = function()
|
||||
vim.opt_local.expandtab = false
|
||||
vim.opt_local.tabstop = 4
|
||||
vim.opt_local.shiftwidth = 4
|
||||
vim.opt_local.autoindent = true
|
||||
vim.opt_local.smartindent = true
|
||||
vim.opt_local.cindent = false
|
||||
end,
|
||||
})
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
hjson = "hjson",
|
||||
},
|
||||
})
|
||||
vim.api.nvim_create_autocmd("VimResized", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
vim.opt.scrolloff = vim.fn.floor(vim.fn.winheight(0) / 2)
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("InsertEnter", {
|
||||
pattern = "*",
|
||||
command = "set norelativenumber",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("InsertLeave", {
|
||||
pattern = "*",
|
||||
command = "set relativenumber",
|
||||
})
|
6
config/nvim/lua/commands.lua
Normal file
6
config/nvim/lua/commands.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
vim.api.nvim_create_user_command("Lower", function()
|
||||
vim.cmd([[normal! guaw]])
|
||||
end, { force = true })
|
||||
vim.api.nvim_create_user_command("Upper", function()
|
||||
vim.cmd([[normal! gUaw]])
|
||||
end, { force = true })
|
77
config/nvim/lua/keymaps.lua
Normal file
77
config/nvim/lua/keymaps.lua
Normal file
|
@ -0,0 +1,77 @@
|
|||
local map = vim.api.nvim_set_keymap
|
||||
local kmap = vim.keymap.set
|
||||
-- Базовые настройки навигации --
|
||||
map("n", "<Space>", "<Nop>", { noremap = true, silent = true })
|
||||
|
||||
-- Навигация в начало/конец строки
|
||||
map("n", "<Home>", "^", { noremap = true, silent = true })
|
||||
map("n", "<End>", "$", { noremap = true, silent = true })
|
||||
map("v", "<Home>", "^", { noremap = true, silent = true })
|
||||
map("v", "<End>", "$", { noremap = true, silent = true })
|
||||
map("i", "<Home>", "<C-o>^", { noremap = true, silent = true })
|
||||
map("i", "<End>", "<C-o>$", { noremap = true, silent = true })
|
||||
|
||||
-- Фикс для визуального режима
|
||||
map("v", "i", "<S-i>", { noremap = true, silent = true })
|
||||
map("v", "a", "<S-a>", { noremap = true, silent = true })
|
||||
map("v", "J", ":m '>+1<CR>gv=gv", { noremap = true, silent = true })
|
||||
map("v", "K", ":m '<-2<CR>gv=gv", { noremap = true, silent = true })
|
||||
map("v", "<", "<gv", { noremap = true, silent = true })
|
||||
map("v", ">", ">gv", { noremap = true, silent = true })
|
||||
|
||||
-- {{{ Управление буферами --
|
||||
kmap("n", "<leader>bn", "<cmd>bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
||||
kmap("n", "<leader>bp", "<cmd>bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
||||
kmap("n", "<leader>bd", "<cmd>bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
||||
kmap("n", "<C-s>", "<cmd>wa<CR>", { noremap = true, silent = true, desc = "Save all files" })
|
||||
kmap("n", "<leader>q", "<cmd>q<CR>", { noremap = true, silent = true, desc = "Exit" })
|
||||
kmap("n", "<leader>vs", "<cmd>vsplit<CR>", { noremap = true, silent = true, desc = "Vertical split" })
|
||||
-- }}}
|
||||
|
||||
-- {{{ Управление вкладками --
|
||||
kmap("n", "<A-Right>", ":tabnext<CR>", { noremap = true, silent = true, desc = "Next tab" })
|
||||
kmap("n", "<A-Left>", ":tabprevious<CR>", { noremap = true, silent = true, desc = "Previous tab" })
|
||||
kmap("n", "<A-t>", ":tabnew<CR>", { noremap = true, silent = true, desc = "New tab" })
|
||||
kmap("n", "<A-w>", ":tabclose<CR>", { noremap = true, silent = true, desc = "Close tab" })
|
||||
|
||||
-- Быстрый переход по вкладкам --
|
||||
for i = 1, 9 do
|
||||
kmap("n", "<A-" .. i .. ">", ":tabn " .. i .. "<CR>", { noremap = true, silent = true, desc = "Go to tab " .. i })
|
||||
end
|
||||
|
||||
-- }}}
|
||||
|
||||
-- {{{ LSP функции
|
||||
kmap("n", "d[", vim.diagnostic.goto_prev, { noremap = true, silent = true, desc = "Previous diagnostic" })
|
||||
kmap("n", "d]", vim.diagnostic.goto_next, { noremap = true, silent = true, desc = "Next diagnostic" })
|
||||
|
||||
kmap("n", "gD", vim.lsp.buf.declaration, { noremap = true, silent = true, desc = "Go to declaration" })
|
||||
kmap("n", "gd", vim.lsp.buf.definition, { noremap = true, silent = true, desc = "Go to definition" })
|
||||
kmap("n", "K", vim.lsp.buf.hover, { noremap = true, silent = true, desc = "Show documentation" })
|
||||
|
||||
kmap("n", "<C-k>", vim.lsp.buf.signature_help, { noremap = true, silent = true, desc = "Signature help" })
|
||||
|
||||
kmap(
|
||||
"n",
|
||||
"<leader>wa",
|
||||
vim.lsp.buf.add_workspace_folder,
|
||||
{ noremap = true, silent = true, desc = "Add workspace folder" }
|
||||
)
|
||||
|
||||
kmap(
|
||||
"n",
|
||||
"<leader>wr",
|
||||
vim.lsp.buf.remove_workspace_folder,
|
||||
{ noremap = true, silent = true, desc = "Remove workspace folder" }
|
||||
)
|
||||
|
||||
kmap("n", "<leader>wl", function()
|
||||
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||
end, { noremap = true, silent = true, desc = "List workspace folders" })
|
||||
|
||||
--kmap("n", "<A-CR>", vim.lsp.buf.code_action, { noremap = true, silent = true, desc = "Code actions" })
|
||||
kmap("n", "<A-CR>", "<cmd>Lspsaga code_action<cr>", { noremap = true, silent = true, desc = "Code actions" })
|
||||
|
||||
kmap("n", "<F2>", vim.lsp.buf.rename, { noremap = true, silent = true, desc = "Rename symbol" })
|
||||
|
||||
-- }}}
|
31
config/nvim/lua/lsp.lua
Normal file
31
config/nvim/lua/lsp.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
-- инициализация LSP для различных ЯП
|
||||
local lspconfig = require("lspconfig")
|
||||
local util = require("lspconfig/util")
|
||||
|
||||
local function config(_config)
|
||||
return vim.tbl_deep_extend("force", {
|
||||
-- capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
|
||||
}, _config or {})
|
||||
end
|
||||
-- иницализация gopls LSP для Go
|
||||
-- https://github.com/golang/tools/blob/master/gopls/doc/vim.md#neovim-install
|
||||
lspconfig.gopls.setup(config({
|
||||
cmd = { "gopls", "serve" },
|
||||
filetypes = { "go", "go.mod" },
|
||||
root_dir = util.root_pattern("go.work", "go.mod", ".git"),
|
||||
settings = {
|
||||
gopls = {
|
||||
analyses = {
|
||||
unusedparams = true,
|
||||
},
|
||||
staticcheck = true,
|
||||
gofumpt = true,
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
lspconfig.templ.setup(config({
|
||||
cmd = { "templ", "lsp" },
|
||||
filetypes = { "templ" },
|
||||
root_markers = { "go.work", "go.mod", ".git" },
|
||||
}))
|
97
config/nvim/lua/myplugins/resize.lua
Normal file
97
config/nvim/lua/myplugins/resize.lua
Normal file
|
@ -0,0 +1,97 @@
|
|||
local M = {}
|
||||
|
||||
M.setup = function(opts) end
|
||||
|
||||
M.isRightMost = function()
|
||||
local curWin = vim.fn.winnr()
|
||||
vim.cmd([[wincmd l]])
|
||||
local rightWin = vim.fn.winnr()
|
||||
if curWin == rightWin then
|
||||
return true
|
||||
else
|
||||
vim.cmd([[wincmd h]])
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
M.isLeftMost = function()
|
||||
local curWin = vim.fn.winnr()
|
||||
vim.cmd([[wincmd h]])
|
||||
local leftWin = vim.fn.winnr()
|
||||
if curWin == leftWin then
|
||||
return true
|
||||
else
|
||||
vim.cmd([[wincmd l]])
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
M.isBottomMost = function()
|
||||
local curWin = vim.fn.winnr()
|
||||
vim.cmd([[wincmd j]])
|
||||
local bottomWin = vim.fn.winnr()
|
||||
if curWin == bottomWin then
|
||||
return true
|
||||
else
|
||||
vim.cmd([[wincmd k]])
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
M.isTopMost = function()
|
||||
local curWin = vim.fn.winnr()
|
||||
vim.cmd([[wincmd k]])
|
||||
local topWin = vim.fn.winnr()
|
||||
if curWin == topWin then
|
||||
return true
|
||||
else
|
||||
vim.cmd([[wincmd j]])
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
M.ResizeLeft = function()
|
||||
if M.isRightMost() then
|
||||
if not M.isLeftMost() then
|
||||
vim.cmd([[wincmd 5 >]])
|
||||
end
|
||||
else
|
||||
vim.cmd([[wincmd 5 <]])
|
||||
end
|
||||
end
|
||||
|
||||
M.ResizeRight = function()
|
||||
if M.isRightMost() then
|
||||
if not M.isLeftMost() then
|
||||
vim.cmd([[wincmd 5 <]])
|
||||
end
|
||||
else
|
||||
vim.cmd([[wincmd 5 >]])
|
||||
end
|
||||
end
|
||||
|
||||
M.ResizeUp = function()
|
||||
if M.isBottomMost() then
|
||||
if not M.isTopMost() then
|
||||
vim.cmd([[wincmd 5 +]])
|
||||
else
|
||||
vim.cmd([[wincmd 5 -]])
|
||||
end
|
||||
else
|
||||
vim.cmd([[wincmd 5 -]])
|
||||
end
|
||||
end
|
||||
|
||||
M.ResizeDown = function()
|
||||
if M.isBottomMost() then
|
||||
if not M.isTopMost() then
|
||||
vim.cmd([[wincmd 5 -]])
|
||||
else
|
||||
vim.cmd([[wincmd 5 +]])
|
||||
end
|
||||
else
|
||||
vim.cmd([[wincmd 5 +]])
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
68
config/nvim/lua/options.lua
Normal file
68
config/nvim/lua/options.lua
Normal file
|
@ -0,0 +1,68 @@
|
|||
local options = {
|
||||
backup = false,
|
||||
clipboard = "unnamedplus",
|
||||
cmdheight = 2,
|
||||
completeopt = { "menuone", "noselect" },
|
||||
conceallevel = 0,
|
||||
fileencoding = "utf-8",
|
||||
hidden = true,
|
||||
hlsearch = true,
|
||||
ignorecase = true,
|
||||
mouse = "",
|
||||
pumheight = 10,
|
||||
showmode = false,
|
||||
showtabline = 2,
|
||||
smartcase = true,
|
||||
smartindent = true,
|
||||
splitbelow = true,
|
||||
splitright = true,
|
||||
swapfile = false,
|
||||
termguicolors = true,
|
||||
undofile = true,
|
||||
updatetime = 300,
|
||||
writebackup = false,
|
||||
shiftwidth = 4,
|
||||
tabstop = 4,
|
||||
cursorline = true,
|
||||
number = true,
|
||||
relativenumber = true,
|
||||
numberwidth = 4,
|
||||
signcolumn = "yes",
|
||||
wrap = true,
|
||||
scrolloff = 8,
|
||||
sidescrolloff = 8,
|
||||
syntax = "on",
|
||||
foldmethod = "expr",
|
||||
foldexpr = "v:lua.vim.treesitter.foldexpr()",
|
||||
-- foldexpr = "nvim_treesitter#foldexpr()"
|
||||
foldnestmax = 10,
|
||||
foldlevel = 9,
|
||||
-- foldlevelstart = 99,
|
||||
scrolloff = 999,
|
||||
so = vim.fn.floor(vim.fn.winheight(0) / 2),
|
||||
guicursor = "n-v-c:block,i-ci-ve:hor10,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175",
|
||||
langmap = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ;ABCDEFGHIJKLMNOPQRSTUVWXYZ:,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz",
|
||||
spelllang = "en,ru_yo",
|
||||
spell = true,
|
||||
}
|
||||
vim.opt.formatoptions:append({ r = true, o = true })
|
||||
vim.opt.shortmess:append("c")
|
||||
|
||||
for k, v in pairs(options) do
|
||||
vim.opt[k] = v
|
||||
end
|
||||
vim.wo.foldmethod = "expr"
|
||||
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||
vim.cmd("set whichwrap+=<,>,[,],h,l")
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
templ = "templ",
|
||||
},
|
||||
pattern = {
|
||||
[".*/todo.txt"] = "todotxt",
|
||||
},
|
||||
})
|
||||
|
||||
vim.g.nightflyCursorColor = true
|
||||
vim.g.nightflyVirtualTextColor = true
|
||||
vim.g.nightflyTransparent = true
|
45
config/nvim/lua/plugins.lua
Normal file
45
config/nvim/lua/plugins.lua
Normal file
|
@ -0,0 +1,45 @@
|
|||
require("lazy").setup({
|
||||
{ "bluz71/vim-nightfly-colors", name = "nightfly", lazy = false, priority = 1000 },
|
||||
{ "nvim-lua/plenary.nvim" },
|
||||
{
|
||||
"ray-x/guihua.lua",
|
||||
build = "cd lua/fzy && make",
|
||||
},
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
{ "Snyssfx/goerr-nvim" },
|
||||
require("plugins.todo"),
|
||||
require("plugins.codecompanion"),
|
||||
require("plugins.resize"),
|
||||
require("plugins.blankline"),
|
||||
require("plugins.headlines"),
|
||||
require("plugins.lsp_saga"),
|
||||
require("plugins.lsp_signature"),
|
||||
require("plugins.autosave"),
|
||||
require("plugins.cmp"),
|
||||
require("plugins.treesitter"),
|
||||
require("plugins.tree"),
|
||||
require("plugins.conform"),
|
||||
require("plugins.dapui"),
|
||||
require("plugins.dap"),
|
||||
require("plugins.dap_go"),
|
||||
require("plugins.go"),
|
||||
require("plugins.goimpl"),
|
||||
require("plugins.lualine"),
|
||||
require("plugins.telescope"),
|
||||
require("plugins.columns"),
|
||||
}, {
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
69
config/nvim/lua/plugins/autosave.lua
Normal file
69
config/nvim/lua/plugins/autosave.lua
Normal file
|
@ -0,0 +1,69 @@
|
|||
return {
|
||||
"okuuva/auto-save.nvim",
|
||||
enabled = true,
|
||||
cmd = "ASToggle", -- optional for lazy loading on command
|
||||
event = { "InsertLeave", "TextChanged" }, -- optional for lazy loading on trigger events
|
||||
opts = {
|
||||
enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it)
|
||||
trigger_events = { -- See :h events
|
||||
-- -- vim events that trigger an immediate save
|
||||
-- -- I'm disabling this, as it's autosaving when I leave the buffer and
|
||||
-- -- that's autoformatting stuff if on insert mode and following a tutorial
|
||||
-- -- Re-enabling this to only save if NOT in insert mode in the condition below
|
||||
-- immediate_save = { nil },
|
||||
immediate_save = { "BufLeave", "FocusLost", "QuitPre", "VimSuspend" }, -- vim events that trigger an immediate save
|
||||
-- vim events that trigger a deferred save (saves after `debounce_delay`)
|
||||
defer_save = {
|
||||
"InsertLeave",
|
||||
"TextChanged",
|
||||
{ "User", pattern = "VisualLeave" },
|
||||
{ "User", pattern = "FlashJumpEnd" },
|
||||
{ "User", pattern = "SnacksInputLeave" },
|
||||
{ "User", pattern = "SnacksPickerInputLeave" },
|
||||
},
|
||||
cancel_deferred_save = {
|
||||
"InsertEnter",
|
||||
{ "User", pattern = "VisualEnter" },
|
||||
{ "User", pattern = "FlashJumpStart" },
|
||||
{ "User", pattern = "SnacksInputEnter" },
|
||||
{ "User", pattern = "SnacksPickerInputEnter" },
|
||||
},
|
||||
},
|
||||
-- function that takes the buffer handle and determines whether to save the current buffer or not
|
||||
-- return true: if buffer is ok to be saved
|
||||
-- return false: if it's not ok to be saved
|
||||
-- if set to `nil` then no specific condition is applied
|
||||
condition = function(buf)
|
||||
-- Do not save when I'm in insert mode
|
||||
-- Do NOT ADD VISUAL MODE HERE or the cancel_deferred_save wont' work
|
||||
-- If I STAY in insert mode and switch to another app, like YouTube to
|
||||
-- take notes, the BufLeave or FocusLost immediate_save will be ignored
|
||||
-- and the save will not be triggered
|
||||
local mode = vim.fn.mode()
|
||||
if mode == "i" then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Disable auto-save for the harpoon plugin, otherwise it just opens and closes
|
||||
-- https://github.com/ThePrimeagen/harpoon/issues/434
|
||||
--
|
||||
-- don't save for `sql` file types
|
||||
-- I do this so when working with dadbod the file is not saved every time
|
||||
-- I make a change, and a SQL query executed
|
||||
-- Run `:set filetype?` on a dadbod query to make sure of the filetype
|
||||
local filetype = vim.bo[buf].filetype
|
||||
if filetype == "harpoon" or filetype == "mysql" then
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end,
|
||||
write_all_buffers = true, -- write all buffers when the current one meets `condition`
|
||||
noautocmd = false,
|
||||
lockmarks = false, -- lock marks when saving, see `:h lockmarks` for more details
|
||||
-- delay after which a pending save is executed (default 1000)
|
||||
debounce_delay = 2000,
|
||||
-- log debug messages to 'auto-save.log' file in neovim cache directory, set to `true` to enable
|
||||
debug = false,
|
||||
},
|
||||
}
|
7
config/nvim/lua/plugins/blankline.lua
Normal file
7
config/nvim/lua/plugins/blankline.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
main = "ibl",
|
||||
--@module "ibl"
|
||||
--@type ibl.config
|
||||
config = true,
|
||||
}
|
55
config/nvim/lua/plugins/cmp.lua
Normal file
55
config/nvim/lua/plugins/cmp.lua
Normal file
|
@ -0,0 +1,55 @@
|
|||
local source_mapping = {
|
||||
buffer = "[Buffer]",
|
||||
nvim_lsp = "[LSP]",
|
||||
nvim_lua = "[Lua]",
|
||||
luasnip = "[Snip]",
|
||||
path = "[Path]",
|
||||
}
|
||||
return {
|
||||
"saghen/blink.cmp",
|
||||
lazy = false,
|
||||
version = "1.*",
|
||||
dependencies = {
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
version = "v2.*",
|
||||
build = "make install_jsregexp",
|
||||
dependencies = { "rafamadriz/friendly-snippets" },
|
||||
config = function()
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
require("luasnip.loaders.from_vscode").lazy_load("./snippets")
|
||||
end,
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
keymap = {
|
||||
preset = "enter",
|
||||
},
|
||||
completion = {
|
||||
list = {
|
||||
selection = {
|
||||
preselect = false,
|
||||
auto_insert = false,
|
||||
},
|
||||
},
|
||||
ghost_text = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
cmdline = {
|
||||
keymap = {
|
||||
preset = "inherit",
|
||||
['<Tab>'] = { 'show', 'accept' },
|
||||
},
|
||||
completion = {
|
||||
menu = { auto_show = false },
|
||||
ghost_text = { enabled = true },
|
||||
},
|
||||
sources = { "cmdline" },
|
||||
},
|
||||
snippets = { preset = "luasnip" },
|
||||
sources = {
|
||||
default = { "lsp", "path", "snippets", "buffer", "codecompanion" },
|
||||
},
|
||||
},
|
||||
}
|
10
config/nvim/lua/plugins/columns.lua
Normal file
10
config/nvim/lua/plugins/columns.lua
Normal file
|
@ -0,0 +1,10 @@
|
|||
return {
|
||||
"m4xshen/smartcolumn.nvim",
|
||||
opts = {
|
||||
colorcolumn = "80",
|
||||
disabled_filetypes = { "help", "text" },
|
||||
custom_colorcolumn = {},
|
||||
scope = "file",
|
||||
editorconfig = true,
|
||||
},
|
||||
}
|
35
config/nvim/lua/plugins/conform.lua
Normal file
35
config/nvim/lua/plugins/conform.lua
Normal file
|
@ -0,0 +1,35 @@
|
|||
return {
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
javascript = { "prettier" },
|
||||
typescript = { "prettier" },
|
||||
javascriptreact = { "prettier" },
|
||||
typescriptreact = { "prettier" },
|
||||
css = { "prettier" },
|
||||
html = { "prettier" },
|
||||
json = { "prettier" },
|
||||
yaml = { "prettier" },
|
||||
markdown = { "prettier" },
|
||||
graphql = { "prettier" },
|
||||
lua = { "stylua" },
|
||||
python = { "isort", "black" },
|
||||
go = { "gofmt" },
|
||||
templ = { "templ" },
|
||||
},
|
||||
format_on_save = {
|
||||
lsp_fallback = true,
|
||||
async = false,
|
||||
timeout_ms = 500,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>mp",
|
||||
function()
|
||||
require("conform").format({ lsp_fallback = true, async = false, timeout_ms = 500 })
|
||||
end,
|
||||
desc = "Format file or range (in visual mode)",
|
||||
},
|
||||
},
|
||||
}
|
3
config/nvim/lua/plugins/dap.lua
Normal file
3
config/nvim/lua/plugins/dap.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
"mfussenegger/nvim-dap",
|
||||
}
|
159
config/nvim/lua/plugins/dap_go.lua
Normal file
159
config/nvim/lua/plugins/dap_go.lua
Normal file
|
@ -0,0 +1,159 @@
|
|||
local default_config = {
|
||||
delve = {
|
||||
path = "dlv",
|
||||
initialize_timeout_sec = 20,
|
||||
port = "${port}",
|
||||
args = {},
|
||||
build_flags = "",
|
||||
-- Automatically handle the issue on delve Windows versions < 1.24.0
|
||||
-- where delve needs to be run in attched mode or it will fail (actually crashes).
|
||||
detached = vim.fn.has("win32") == 0,
|
||||
output_mode = "remote",
|
||||
cwd = nil,
|
||||
},
|
||||
tests = {
|
||||
verbose = false,
|
||||
},
|
||||
}
|
||||
|
||||
local function setup_go_configuration(dap, configs)
|
||||
local common_debug_configs = {
|
||||
{
|
||||
type = "go",
|
||||
name = "Debug",
|
||||
request = "launch",
|
||||
program = "${workspaceFolder}",
|
||||
args = {},
|
||||
buildFlags = configs.delve.build_flags,
|
||||
outputMode = configs.delve.output_mode,
|
||||
},
|
||||
}
|
||||
|
||||
if dap.configurations.go == nil then
|
||||
dap.configurations.go = {}
|
||||
end
|
||||
|
||||
for _, config in ipairs(common_debug_configs) do
|
||||
table.insert(dap.configurations.go, config)
|
||||
end
|
||||
|
||||
if configs == nil or configs.dap_configurations == nil then
|
||||
return
|
||||
end
|
||||
|
||||
for _, config in ipairs(configs.dap_configurations) do
|
||||
if config.type == "go" then
|
||||
table.insert(dap.configurations.go, config)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
"leoluz/nvim-dap-go",
|
||||
dependencies = { "mfussenegger/nvim-dap" },
|
||||
opts = true,
|
||||
config = function()
|
||||
local dap, dapui = require("dap"), require("dapui")
|
||||
|
||||
dap.adapters.go = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "dlv",
|
||||
args = { "dap", "-l", "127.0.0.1:${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
setup_go_configuration(dap, default_config)
|
||||
|
||||
dap.defaults.fallback.terminal_win_cmd = "enew | set filetype=dap-terminal"
|
||||
dap.listeners.before.attach.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.launch.dapui_config = function()
|
||||
dapui.open()
|
||||
end
|
||||
dap.listeners.before.event_terminated.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
dap.listeners.before.event_exited.dapui_config = function()
|
||||
dapui.close()
|
||||
end
|
||||
|
||||
vim.api.nvim_set_hl(0, "DapBreakpoint", { ctermbg = 0, fg = "#993939", bg = "#31353f" })
|
||||
vim.api.nvim_set_hl(0, "DapLogPoint", { ctermbg = 0, fg = "#61afef", bg = "#31353f" })
|
||||
vim.api.nvim_set_hl(0, "DapStopped", { ctermbg = 0, fg = "#98c379", bg = "#31353f" })
|
||||
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpoint",
|
||||
{ text = "!", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointCondition",
|
||||
{ text = "?", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapBreakpointRejected",
|
||||
{ text = "RJ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapLogPoint",
|
||||
{ text = "i", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" }
|
||||
)
|
||||
vim.fn.sign_define(
|
||||
"DapStopped",
|
||||
{ text = "→", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
|
||||
)
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<F5>",
|
||||
function()
|
||||
require("dap").continue()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F17>", -- S-F5
|
||||
function()
|
||||
require("dap").restart()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F29>", -- C-F5
|
||||
function()
|
||||
require("dap").terminate()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F8>",
|
||||
function()
|
||||
require("dap").step_over()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F7>",
|
||||
function()
|
||||
require("dap").step_into()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F19>", -- S-F7
|
||||
function()
|
||||
require("dap").step_out()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<A-b>",
|
||||
function()
|
||||
require("dap").toggle_breakpoint()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
},
|
||||
}
|
73
config/nvim/lua/plugins/dapui.lua
Normal file
73
config/nvim/lua/plugins/dapui.lua
Normal file
|
@ -0,0 +1,73 @@
|
|||
return {
|
||||
"rcarriga/nvim-dap-ui",
|
||||
dependencies = {
|
||||
"mfussenegger/nvim-dap",
|
||||
"nvim-neotest/nvim-nio",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<F6>",
|
||||
function()
|
||||
require("dapui").toggle()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<Leader>dh",
|
||||
function()
|
||||
require("dap.ui.widgets").hover()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<Leader>dp",
|
||||
function()
|
||||
require("dap.ui.widgets").preview()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<F9>",
|
||||
function()
|
||||
local widgets = require("dap.ui.widgets")
|
||||
widgets.centered_float(widgets.scopes)
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
icons = {
|
||||
expanded = "[-]",
|
||||
collapsed = "[+]",
|
||||
},
|
||||
mappings = {
|
||||
open = "o",
|
||||
remove = "d",
|
||||
edit = "e",
|
||||
repl = "r",
|
||||
toggle = "t",
|
||||
},
|
||||
expand_lines = vim.fn.has("nvim-0.7"),
|
||||
layouts = {
|
||||
{
|
||||
elements = {
|
||||
"repl",
|
||||
},
|
||||
size = 0.3,
|
||||
position = "bottom",
|
||||
},
|
||||
},
|
||||
floating = {
|
||||
max_height = nil,
|
||||
max_width = nil,
|
||||
border = "single",
|
||||
mappings = {
|
||||
close = { "q", "<Esc>" },
|
||||
},
|
||||
},
|
||||
windows = { indent = 1 },
|
||||
render = {
|
||||
max_type_length = nil,
|
||||
},
|
||||
},
|
||||
}
|
12
config/nvim/lua/plugins/go.lua
Normal file
12
config/nvim/lua/plugins/go.lua
Normal file
|
@ -0,0 +1,12 @@
|
|||
return {
|
||||
"ray-x/go.nvim",
|
||||
dependencies = {
|
||||
"ray-x/guihua.lua",
|
||||
"neovim/nvim-lspconfig",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
config = true,
|
||||
event = { "CmdlineEnter" },
|
||||
ft = { "go", "gomod" },
|
||||
build = ':lua require("go.install").update_all_sync()',
|
||||
}
|
21
config/nvim/lua/plugins/goimpl.lua
Normal file
21
config/nvim/lua/plugins/goimpl.lua
Normal file
|
@ -0,0 +1,21 @@
|
|||
return {
|
||||
"edolphin-ydf/goimpl.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-lua/popup.nvim",
|
||||
"nvim-telescope/telescope.nvim",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
config = function()
|
||||
require("telescope").load_extension("goimpl")
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<leader>im",
|
||||
function()
|
||||
require("telescope").extensions.goimpl.goimpl({})
|
||||
end,
|
||||
desc = "Generate stub for interface on a type for golang",
|
||||
},
|
||||
},
|
||||
}
|
5
config/nvim/lua/plugins/headlines.lua
Normal file
5
config/nvim/lua/plugins/headlines.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
return {
|
||||
"lukas-reineke/headlines.nvim",
|
||||
dependencies = "nvim-treesitter/nvim-treesitter",
|
||||
config = true,
|
||||
}
|
8
config/nvim/lua/plugins/lsp_saga.lua
Normal file
8
config/nvim/lua/plugins/lsp_saga.lua
Normal file
|
@ -0,0 +1,8 @@
|
|||
return {
|
||||
"nvimdev/lspsaga.nvim",
|
||||
opts = {
|
||||
lightbulb = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
}
|
15
config/nvim/lua/plugins/lsp_signature.lua
Normal file
15
config/nvim/lua/plugins/lsp_signature.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
return {
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
doc_lines = 1,
|
||||
max_height = 3,
|
||||
hint_prefix = "",
|
||||
hint_prefix = {
|
||||
above = "↙ ",
|
||||
current = "← ",
|
||||
below = "↖ ",
|
||||
},
|
||||
floating_window = true,
|
||||
},
|
||||
}
|
44
config/nvim/lua/plugins/lualine.lua
Normal file
44
config/nvim/lua/plugins/lualine.lua
Normal file
|
@ -0,0 +1,44 @@
|
|||
local colors = require("theme.colors")
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
opts = {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = "nightfly",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
disabled_filetypes = {
|
||||
statusline = {},
|
||||
winbar = {},
|
||||
},
|
||||
ignore_focus = {},
|
||||
always_divide_middle = true,
|
||||
globalstatus = false,
|
||||
refresh = {
|
||||
statusline = 1000,
|
||||
tabline = 1000,
|
||||
winbar = 1000,
|
||||
},
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { "mode" },
|
||||
lualine_b = { "branch", "diff", "diagnostics" },
|
||||
lualine_c = { "filename" },
|
||||
lualine_x = { "filetype" },
|
||||
lualine_y = { "progress", "location" },
|
||||
lualine_z = { "lsp_status", "os.date('%H:%M')" },
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_c = { "filename" },
|
||||
lualine_x = { "location" },
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
},
|
||||
tabline = {},
|
||||
winbar = {},
|
||||
inactive_winbar = {},
|
||||
extensions = {},
|
||||
},
|
||||
}
|
34
config/nvim/lua/plugins/resize.lua
Normal file
34
config/nvim/lua/plugins/resize.lua
Normal file
|
@ -0,0 +1,34 @@
|
|||
return {
|
||||
name = "resize",
|
||||
dir = "~/.config/nvim/lua/myplugins",
|
||||
keys = {
|
||||
{
|
||||
"<C-A-Left>",
|
||||
function()
|
||||
require("myplugins.resize").ResizeLeft()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<C-A-Right>",
|
||||
function()
|
||||
require("myplugins.resize").ResizeRight()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<C-A-Up>",
|
||||
function()
|
||||
require("myplugins.resize").ResizeUp()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
{
|
||||
"<C-A-Down>",
|
||||
function()
|
||||
require("myplugins.resize").ResizeDown()
|
||||
end,
|
||||
silent = true,
|
||||
},
|
||||
},
|
||||
}
|
50
config/nvim/lua/plugins/telescope.lua
Normal file
50
config/nvim/lua/plugins/telescope.lua
Normal file
|
@ -0,0 +1,50 @@
|
|||
return {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
local actions = require("telescope.actions")
|
||||
require("telescope").setup({
|
||||
extensions = {
|
||||
project = {
|
||||
sync_with_nvim_tree = true,
|
||||
},
|
||||
},
|
||||
pickers = {
|
||||
buffers = {
|
||||
initial_mode = "normal",
|
||||
},
|
||||
},
|
||||
defaults = {
|
||||
file_ignore_patterns = { "vendor", "node_modules" },
|
||||
mappings = {
|
||||
i = {
|
||||
["<F4>"] = actions.close,
|
||||
},
|
||||
n = {
|
||||
["<F4>"] = actions.close,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>ff", "<cmd>Telescope find_files<CR>", noremap = true, silent = true, desc = "Find files" },
|
||||
{ "<leader>fg", "<cmd>Telescope live_grep<CR>", noremap = true, silent = true, desc = "Live grep" },
|
||||
{
|
||||
"<leader>fb",
|
||||
"<cmd>Telescope current_buffer_fuzzy_fund<CR>",
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = "Find current file",
|
||||
},
|
||||
{ "<F4>", "<cmd>Telescope buffers<CR>", noremap = true, silent = true, desc = "Find buffers" },
|
||||
{ "<leader>gc", "<cmd>Telescope git_commits<CR>", noremap = true, silent = true },
|
||||
{ "<leader>gs", "<cmd>Telescope git_status<CR>", noremap = true, silent = true },
|
||||
{ "<leader>ch", "<cmd>Telescope commands_history<CR>", noremap = true, silent = true },
|
||||
{ "<leader>e", "<cmd>Telescope diagnostics<CR>", noremap = true, silent = true },
|
||||
{ "gi", "<cmd>Telescope lsp_implementations<CR>", noremap = true, silent = true },
|
||||
{ "gr", "<cmd>Telescope lsp_references<CR>", noremap = true, silent = true },
|
||||
},
|
||||
}
|
69
config/nvim/lua/plugins/todo.lua
Normal file
69
config/nvim/lua/plugins/todo.lua
Normal file
|
@ -0,0 +1,69 @@
|
|||
return {
|
||||
"phrmendes/todotxt.nvim",
|
||||
cmd = { "TodoTxt", "DoneTxt" },
|
||||
opts = {
|
||||
todotxt = "/home/neonxp/Документы/todo.txt",
|
||||
donetxt = "/home/neonxp/Документы/done.txt",
|
||||
},
|
||||
-- suggested keybindings
|
||||
keys = {
|
||||
{
|
||||
"<leader>tp",
|
||||
function() require("todotxt").cycle_priority() end,
|
||||
desc = "todo.txt: cycle priority",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<cr>",
|
||||
function() require("todotxt").toggle_todo_state() end,
|
||||
desc = "todo.txt: toggle task state",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tn",
|
||||
function() require("todotxt").capture_todo() end,
|
||||
desc = "New entry",
|
||||
},
|
||||
{
|
||||
"<leader>tt",
|
||||
function() require("todotxt").toggle_todotxt() end,
|
||||
desc = "Open",
|
||||
},
|
||||
{
|
||||
"<leader>tr",
|
||||
function() require("todotxt").move_done_tasks() end,
|
||||
desc = "Move to done.txt",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tss",
|
||||
function() require("todotxt").sort_tasks() end,
|
||||
desc = "Sort",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tsd",
|
||||
function() require("todotxt").sort_tasks_by_due_date() end,
|
||||
desc = "Sort by due:date",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tsP",
|
||||
function() require("todotxt").sort_tasks_by_priority() end,
|
||||
desc = "Sort by (priority)",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tsc",
|
||||
function() require("todotxt").sort_tasks_by_context() end,
|
||||
desc = "Sort by @context",
|
||||
ft = "todotxt",
|
||||
},
|
||||
{
|
||||
"<leader>tsp",
|
||||
function() require("todotxt").sort_tasks_by_project() end,
|
||||
desc = "Sort by +project",
|
||||
ft = "todotxt",
|
||||
},
|
||||
},
|
||||
}
|
54
config/nvim/lua/plugins/tree.lua
Normal file
54
config/nvim/lua/plugins/tree.lua
Normal file
|
@ -0,0 +1,54 @@
|
|||
local WIDTH_RATIO = 0.25
|
||||
|
||||
return {
|
||||
"nvim-tree/nvim-tree.lua",
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
opts = {
|
||||
disable_netrw = true,
|
||||
hijack_netrw = true,
|
||||
sort = {
|
||||
sorter = "case_sensitive",
|
||||
},
|
||||
view = {
|
||||
width = function()
|
||||
return math.floor(vim.opt.columns:get() * WIDTH_RATIO)
|
||||
end,
|
||||
adaptive_size = true,
|
||||
centralize_selection = true,
|
||||
},
|
||||
git = {
|
||||
enable = true,
|
||||
},
|
||||
renderer = {
|
||||
group_empty = true,
|
||||
highlight_git = true,
|
||||
icons = {
|
||||
show = {
|
||||
git = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
},
|
||||
update_focused_file = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<C-c>",
|
||||
function()
|
||||
local api = require("nvim-tree.api")
|
||||
local global_cwd = vim.fn.getcwd(-1, -1)
|
||||
api.tree.change_root(global_cwd)
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = "Change tree root to CWD",
|
||||
},
|
||||
{ "<F3>", ":NvimTreeToggle<CR>", noremap = true, silent = true, desc = "Toggle file tree" },
|
||||
},
|
||||
}
|
53
config/nvim/lua/plugins/treesitter.lua
Normal file
53
config/nvim/lua/plugins/treesitter.lua
Normal file
|
@ -0,0 +1,53 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
opts = {
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = false,
|
||||
},
|
||||
ensure_installed = "all",
|
||||
ignore_install = { "gdhsader", "phpdoc", "org" },
|
||||
indent = { enable = true },
|
||||
auto_install = true,
|
||||
sync_install = true,
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<C-space>",
|
||||
node_incremental = "<C-space>",
|
||||
scope_incremental = false,
|
||||
node_decremental = "<bs>",
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = { enable = true, lookahead = true },
|
||||
move = {
|
||||
enable = true,
|
||||
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" },
|
||||
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" },
|
||||
goto_previous_start = {
|
||||
["[f"] = "@function.outer",
|
||||
["[c"] = "@class.outer",
|
||||
["[a"] = "@parameter.inner",
|
||||
},
|
||||
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" },
|
||||
},
|
||||
},
|
||||
},
|
||||
build = function()
|
||||
require("nvim-treesitter.install").update({ with_sync = true })()
|
||||
end,
|
||||
dependencies = {
|
||||
{ "nvim-treesitter/nvim-treesitter-textobjects" },
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
opts = {
|
||||
enable = true,
|
||||
mode = "topline",
|
||||
line_numbers = true,
|
||||
},
|
||||
},
|
||||
{ "windwp/nvim-ts-autotag" },
|
||||
},
|
||||
}
|
61
config/nvim/lua/syntax/hjson.lua
Normal file
61
config/nvim/lua/syntax/hjson.lua
Normal file
|
@ -0,0 +1,61 @@
|
|||
-- ~/.config/nvim/after/syntax/hjson.lua
|
||||
-- Или путь плагина: ~/.config/nvim/plugin/hjson.lua
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||
pattern = "*.hjson",
|
||||
callback = function()
|
||||
vim.b.current_syntax = "hjson"
|
||||
|
||||
-- Очистка предыдущих правил
|
||||
vim.cmd("syntax clear")
|
||||
|
||||
-- Комментарии (высший приоритет)
|
||||
vim.cmd([[ syntax match hjsonLineComment "\/\/.*" ]])
|
||||
vim.cmd([[ syntax match hjsonLineComment "#.*" ]])
|
||||
vim.cmd([[ syntax region hjsonComment start="/\*" end="\*/" ]])
|
||||
|
||||
-- Строки
|
||||
vim.cmd([[ syntax region hjsonString matchgroup=hjsonQuote start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hjsonEscape ]])
|
||||
vim.cmd([[ syntax region hjsonString matchgroup=hjsonQuote start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=hjsonEscape ]])
|
||||
vim.cmd([[ syntax region hjsonMLString matchgroup=hjsonQuote start=/'''/ end=/'''/ ]])
|
||||
|
||||
-- Числа
|
||||
vim.cmd([[ syntax match hjsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" ]])
|
||||
|
||||
-- Булевы значения и null
|
||||
vim.cmd([[ syntax keyword hjsonBoolean true false ]])
|
||||
vim.cmd([[ syntax keyword hjsonNull null ]])
|
||||
|
||||
-- Ключи объектов
|
||||
vim.cmd([[ syntax match hjsonKey "[^][{}:,\"'\s]\+" contained ]])
|
||||
vim.cmd([[ syntax match hjsonKeyUnquoted "[^][{}:,\"'\s]\+:"he=e-1 contains=hjsonKey,hjsonNoise ]])
|
||||
|
||||
-- Пунктуация
|
||||
vim.cmd([[ syntax match hjsonNoise "[{}\[\],:]" ]])
|
||||
|
||||
-- Escape-последовательности
|
||||
vim.cmd([[ syntax match hjsonEscape "\\[\\\"'/bfnrt]" contained ]])
|
||||
vim.cmd([[ syntax match hjsonEscape "\\u\x\{4}" contained ]])
|
||||
|
||||
-- Строки без кавычек (низший приоритет)
|
||||
vim.cmd([[ syntax match hjsonStringUQ "[^][{}:,\"'\s]\+" contains=@NoSpell ]])
|
||||
|
||||
-- Сворачивание структур
|
||||
vim.cmd([[ syntax region hjsonObject matchgroup=hjsonBraces start="{" end="}" transparent fold ]])
|
||||
vim.cmd([[ syntax region hjsonArray matchgroup=hjsonBraces start="\[" end="\]" transparent fold ]])
|
||||
|
||||
-- Подсветка
|
||||
vim.cmd([[ highlight default link hjsonComment Comment ]])
|
||||
vim.cmd([[ highlight default link hjsonLineComment Comment ]])
|
||||
vim.cmd([[ highlight default link hjsonString String ]])
|
||||
vim.cmd([[ highlight default link hjsonMLString String ]])
|
||||
vim.cmd([[ highlight default link hjsonStringUQ String ]])
|
||||
vim.cmd([[ highlight default link hjsonEscape SpecialChar ]])
|
||||
vim.cmd([[ highlight default link hjsonNumber Number ]])
|
||||
vim.cmd([[ highlight default link hjsonBoolean Boolean ]])
|
||||
vim.cmd([[ highlight default link hjsonNull Constant ]])
|
||||
vim.cmd([[ highlight default link hjsonKey Label ]])
|
||||
vim.cmd([[ highlight default link hjsonNoise Delimiter ]])
|
||||
vim.cmd([[ highlight default link hjsonBraces Delimiter ]])
|
||||
end
|
||||
})
|
1
config/nvim/lua/syntax/init.lua
Normal file
1
config/nvim/lua/syntax/init.lua
Normal file
|
@ -0,0 +1 @@
|
|||
require("syntax.hjson")
|
29
config/nvim/lua/theme/asset/hsv-to-rgb.lua
Normal file
29
config/nvim/lua/theme/asset/hsv-to-rgb.lua
Normal file
|
@ -0,0 +1,29 @@
|
|||
local function HsvToRgb(h, s, v)
|
||||
|
||||
s = s / 100.0
|
||||
v = v / 100.0
|
||||
h = h / 60.0
|
||||
|
||||
local i = math.floor(h) % 6
|
||||
local f = h - math.floor(h)
|
||||
local p = v * (1.0 - s)
|
||||
local q = v * (1.0 - f * s)
|
||||
local t = v * (1.0 - (1.0 - f) * s)
|
||||
|
||||
local r, g, b = 0, 0, 0
|
||||
|
||||
if i == 0 then r, g, b = v, t, p
|
||||
elseif i == 1 then r, g, b = q, v, p
|
||||
elseif i == 2 then r, g, b = p, v, t
|
||||
elseif i == 3 then r, g, b = p, q, v
|
||||
elseif i == 4 then r, g, b = t, p, v
|
||||
else r, g, b = v, p, q
|
||||
end
|
||||
|
||||
r = math.floor(r * 255 + 0.5)
|
||||
g = math.floor(g * 255 + 0.5)
|
||||
b = math.floor(b * 255 + 0.5)
|
||||
|
||||
return string.format("#%02x%02x%02x", r, g, b)
|
||||
end
|
||||
return HsvToRgb
|
68
config/nvim/lua/theme/colors.lua
Normal file
68
config/nvim/lua/theme/colors.lua
Normal file
|
@ -0,0 +1,68 @@
|
|||
local HsvToRgb = require("theme.asset.hsv-to-rgb")
|
||||
local colors = {
|
||||
|
||||
black = {HsvToRgb(0, 0, 0), 0},--0 Black
|
||||
black_l = {HsvToRgb(0, 0, 10), 0},
|
||||
black_ll = {HsvToRgb(0, 0, 20), 0},
|
||||
|
||||
gray_dd = {HsvToRgb(0, 0, 30), 8},--8 DarkGray
|
||||
gray_d = {HsvToRgb(0, 0, 40), 8},
|
||||
gray = {HsvToRgb(0, 0, 50), 7},--7 Gray
|
||||
gray_l = {HsvToRgb(0, 0, 60), 7},
|
||||
gray_ll = {HsvToRgb(0, 0, 70), 7},
|
||||
|
||||
white_dd = {HsvToRgb(0, 0, 80), 15},--15 White
|
||||
white_d = {HsvToRgb(0, 0, 90), 15},
|
||||
white = {HsvToRgb(0, 0, 100), 15},
|
||||
|
||||
red_d = {HsvToRgb(0, 100, 75), 12},--12 Red
|
||||
red = {HsvToRgb(0, 100, 100), 12},
|
||||
red_l = {HsvToRgb(0, 75, 100), 12},
|
||||
|
||||
orange_d = {HsvToRgb(30, 100, 75), 4},--4 DarkRed
|
||||
orange = {HsvToRgb(30, 100, 100), 4},
|
||||
orange_l = {HsvToRgb(30, 75, 100), 4},
|
||||
|
||||
yellow_d = {HsvToRgb(60, 100, 75), 14},--14 Yellow
|
||||
yellow = {HsvToRgb(60, 100, 100), 14},
|
||||
yellow_l = {HsvToRgb(60, 75, 100), 14},
|
||||
|
||||
chartreuse_d = {HsvToRgb(90, 100, 75), 6},--6 DarkYellow
|
||||
chartreuse = {HsvToRgb(90, 100, 100), 6},
|
||||
chartreuse_l = {HsvToRgb(90, 75, 100), 6},
|
||||
|
||||
green_d = {HsvToRgb(120, 100, 75), 10},--10 Green
|
||||
green = {HsvToRgb(120, 100, 100), 10},
|
||||
green_l = {HsvToRgb(120, 75, 100), 10},
|
||||
|
||||
turquoise_d = {HsvToRgb(150, 100, 75), 2},--2 DarkGreen
|
||||
turquoise = {HsvToRgb(150, 100, 100), 2},
|
||||
turquoise_l = {HsvToRgb(150, 75, 100), 2},
|
||||
|
||||
cyan_d = {HsvToRgb(180, 100, 75), 11},--11 Cyan
|
||||
cyan = {HsvToRgb(180, 100, 100), 11},
|
||||
cyan_l = {HsvToRgb(180, 75, 100), 11},
|
||||
|
||||
royal_d = {HsvToRgb(210, 100, 75), 3},--3 DarkCyan
|
||||
royal = {HsvToRgb(210, 100, 100), 3},
|
||||
royal_l = {HsvToRgb(210, 75, 100), 3},
|
||||
|
||||
blue_d = {HsvToRgb(240, 100, 75), 9},--9 Blue
|
||||
blue = {HsvToRgb(240, 100, 100), 9},
|
||||
blue_l = {HsvToRgb(240, 75, 100), 9},
|
||||
|
||||
purple_d = {HsvToRgb(270, 100, 75), 1},--1 DarkBlue
|
||||
purple = {HsvToRgb(270, 100, 100), 1},
|
||||
purple_l = {HsvToRgb(270, 75, 100), 1},
|
||||
|
||||
pink_d = {HsvToRgb(300, 100, 75), 13},--13 Magenta
|
||||
pink = {HsvToRgb(300, 100, 100), 13},
|
||||
pink_l = {HsvToRgb(300, 75, 100), 13},
|
||||
|
||||
salmon_d = {HsvToRgb(330, 100, 75), 5},--5 DarkMagenta
|
||||
salmon = {HsvToRgb(330, 100, 100), 5},
|
||||
salmon_l = {HsvToRgb(330, 75, 100), 5},
|
||||
|
||||
none = {"NONE", "NONE"}
|
||||
}
|
||||
return colors
|
16
config/nvim/lua/theme/modifiers.lua
Normal file
16
config/nvim/lua/theme/modifiers.lua
Normal file
|
@ -0,0 +1,16 @@
|
|||
local mods = {
|
||||
|
||||
bold = {"bold", "bold"},
|
||||
italic = {"italic", "italic"},
|
||||
underline = {"underline", "underline"},
|
||||
underdouble = {"underdouble", "underdouble"},
|
||||
underdoted = {"underdoted", "underdoted"},
|
||||
underdashed = {"underdashed", "underdashed"},
|
||||
undercurl = {"undercurl", "undercurl"},
|
||||
reverse = {"reverse", "reverse"},
|
||||
standout = {"standout", "standout"},
|
||||
altfont = {"altfont", "altfont"},
|
||||
strikethrough = {"strikethrough", "strikethrough"},
|
||||
none = {"NONE", "NONE"}
|
||||
}
|
||||
return mods
|
6
config/nvim/snippets/00Tree.html
Normal file
6
config/nvim/snippets/00Tree.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
[01;34m./config/nvim/snippets[0m
|
||||
│ 00Tree.html
|
||||
│ go.json
|
||||
package.json
|
||||
|
||||
1 directory, 3 files
|
28
config/nvim/snippets/go.json
Normal file
28
config/nvim/snippets/go.json
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"package line": {
|
||||
"body": ["package ${TM_DIRECTORY/.+\\/(.+)$/${1:/downcase}/}", "", "$0"],
|
||||
"description": "package header",
|
||||
"prefix": "pkg"
|
||||
},
|
||||
"structure constructor": {
|
||||
"body": [
|
||||
"// New$1 returns new $1.",
|
||||
"func New${1:type}(${2}) *$1 {",
|
||||
"\t$3",
|
||||
"\treturn &$1{$4}",
|
||||
"}"
|
||||
],
|
||||
"description": "constructor for structure type",
|
||||
"prefix": "construct"
|
||||
},
|
||||
"if err := ...; err != nil": {
|
||||
"prefix": "iferrr",
|
||||
"body": "if err := ${1}; err != nil {\n\t${2:return ${3:nil, }${4:err}}\n}",
|
||||
"description": "Snippet for if err := ...; err != nil"
|
||||
},
|
||||
"if err != nil": {
|
||||
"prefix": "iferr",
|
||||
"body": "if err != nil {\n\t${1:return ${2:nil, }${3:err}}\n}",
|
||||
"description": "Snippet for if err != nil"
|
||||
}
|
||||
}
|
11
config/nvim/snippets/package.json
Normal file
11
config/nvim/snippets/package.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "gotools",
|
||||
"contributes": {
|
||||
"snippets": [
|
||||
{
|
||||
"language": "go",
|
||||
"path": "./go.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
12
config/nvim/spell/00Tree.html
Normal file
12
config/nvim/spell/00Tree.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
[01;34m./config/nvim/spell[0m
|
||||
│ 00Tree.html
|
||||
│ en.utf-8.add
|
||||
│ en.utf-8.add.spl
|
||||
│ ru.cp1251.spl
|
||||
│ ru.cp1251.sug
|
||||
│ ru.koi8-r.spl
|
||||
│ ru.koi8-r.sug
|
||||
│ ru.utf-8.spl
|
||||
ru.utf-8.sug
|
||||
|
||||
1 directory, 9 files
|
2
config/nvim/spell/en.utf-8.add
Normal file
2
config/nvim/spell/en.utf-8.add
Normal file
|
@ -0,0 +1,2 @@
|
|||
блог
|
||||
блога
|
BIN
config/nvim/spell/en.utf-8.add.spl
Normal file
BIN
config/nvim/spell/en.utf-8.add.spl
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.cp1251.spl
Normal file
BIN
config/nvim/spell/ru.cp1251.spl
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.cp1251.sug
Normal file
BIN
config/nvim/spell/ru.cp1251.sug
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.koi8-r.spl
Normal file
BIN
config/nvim/spell/ru.koi8-r.spl
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.koi8-r.sug
Normal file
BIN
config/nvim/spell/ru.koi8-r.sug
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.utf-8.spl
Normal file
BIN
config/nvim/spell/ru.utf-8.spl
Normal file
Binary file not shown.
BIN
config/nvim/spell/ru.utf-8.sug
Normal file
BIN
config/nvim/spell/ru.utf-8.sug
Normal file
Binary file not shown.
203
config/waybar/config.jsonc
Normal file
203
config/waybar/config.jsonc
Normal file
|
@ -0,0 +1,203 @@
|
|||
// -*- mode: jsonc -*-
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||
"height": 20, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
"spacing": 0, // Gaps between modules (4px)
|
||||
// Choose the order of the modules
|
||||
"modules-left": [
|
||||
"hyprland/workspaces",
|
||||
"custom/media"
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/window"
|
||||
],
|
||||
"modules-right": [
|
||||
"mpd",
|
||||
"idle_inhibitor",
|
||||
"pulseaudio",
|
||||
"network",
|
||||
"power-profiles-daemon",
|
||||
"cpu",
|
||||
"memory",
|
||||
// "temperature",
|
||||
// "backlight",
|
||||
"keyboard-state",
|
||||
"hyprland/language",
|
||||
"battery",
|
||||
"battery#bat2",
|
||||
"clock",
|
||||
"tray"
|
||||
],
|
||||
// Modules configuration
|
||||
// "sway/workspaces": {
|
||||
// "disable-scroll": true,
|
||||
// "all-outputs": true,
|
||||
// "warp-on-scroll": false,
|
||||
// "format": "{name}: {icon}",
|
||||
// "format-icons": {
|
||||
// "1": "",
|
||||
// "2": "",
|
||||
// "3": "",
|
||||
// "4": "",
|
||||
// "5": "",
|
||||
// "urgent": "",
|
||||
// "focused": "",
|
||||
// "default": ""
|
||||
// }
|
||||
// },
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"format": "{name}",
|
||||
"on-click": "activate",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
},
|
||||
"hyprland/window": {
|
||||
"separate-outputs": true
|
||||
},
|
||||
"hyprland/language": {
|
||||
"format": "{short}"
|
||||
},
|
||||
"mpd": {
|
||||
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
|
||||
"format-disconnected": "Disconnected ",
|
||||
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
|
||||
"unknown-tag": "N/A",
|
||||
"interval": 5,
|
||||
"consume-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"random-icons": {
|
||||
"off": "<span color=\"#f53c3c\"> </span> ",
|
||||
"on": " "
|
||||
},
|
||||
"repeat-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"single-icons": {
|
||||
"on": " 1 "
|
||||
},
|
||||
"state-icons": {
|
||||
"paused": "",
|
||||
"playing": ""
|
||||
},
|
||||
"tooltip-format": "MPD (connected)",
|
||||
"tooltip-format-disconnected": "MPD (disconnected)",
|
||||
"on-click": "mpc toggle"
|
||||
},
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
// "icon-size": 21,
|
||||
"spacing": 10
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format-alt": "{:%Y-%m-%d}"
|
||||
},
|
||||
"cpu": {
|
||||
"format": "{usage}%",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": " / {}%"
|
||||
},
|
||||
"temperature": {
|
||||
// "thermal-zone": 2,
|
||||
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
// "format-critical": "{temperatureC}°C {icon}",
|
||||
"format": "{temperatureC}°C {icon}",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
"backlight": {
|
||||
// "device": "acpi_video1",
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
// "good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-full": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
// "format-good": "", // An empty format will hide the module
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"battery#bat2": {
|
||||
"bat": "BAT2"
|
||||
},
|
||||
"power-profiles-daemon": {
|
||||
"format": "{icon}",
|
||||
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
|
||||
"tooltip": true,
|
||||
"format-icons": {
|
||||
"default": "",
|
||||
"performance": "",
|
||||
"balanced": "",
|
||||
"power-saver": ""
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"format-linked": "{ifname} (No IP) ",
|
||||
"format-disconnected": "Disconnected ⚠",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": " ",
|
||||
"hands-free": " ",
|
||||
"headset": " ",
|
||||
"phone": " ",
|
||||
"portable": " ",
|
||||
"car": " ",
|
||||
"default": [" ", " ", " "]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
},
|
||||
"custom/media": {
|
||||
"format": "{icon} {}",
|
||||
"return-type": "json",
|
||||
"max-length": 40,
|
||||
"format-icons": {
|
||||
"spotify": "",
|
||||
"default": "🎜"
|
||||
},
|
||||
"escape": true,
|
||||
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||
}
|
||||
}
|
325
config/waybar/style.css
Normal file
325
config/waybar/style.css
Normal file
|
@ -0,0 +1,325 @@
|
|||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(43, 48, 59, 0.5);
|
||||
border-bottom: 2px solid rgba(51, 204, 256, 238);
|
||||
color: #ffffff;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
/*
|
||||
window#waybar.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
window#waybar.solo {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
*/
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #3F3F3F;
|
||||
}
|
||||
|
||||
window#waybar.chromium {
|
||||
background-color: #000000;
|
||||
border: none;
|
||||
}
|
||||
|
||||
button {
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Avoid rounded borders under each button name */
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
button:hover {
|
||||
background: inherit;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
/* you can set a style on hover for any module like this */
|
||||
#pulseaudio:hover {
|
||||
background-color: #a37800;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: #64727D;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #64727D;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#tray,
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#scratchpad,
|
||||
#power-profiles-daemon,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#clock {
|
||||
/*background-color: #64727D;*/
|
||||
}
|
||||
|
||||
#battery {
|
||||
/*background-color: #ffffff;*/
|
||||
/*color: #000000;*/
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: #ffffff;
|
||||
/*background-color: #26A65B;*/
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: steps(12);
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#power-profiles-daemon {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.performance {
|
||||
/*background-color: #f53c3c;*/
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.balanced {
|
||||
/*background-color: #2980b9;*/
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.power-saver {
|
||||
/*background-color: #2ecc71;*/
|
||||
/*color: #000000;*/
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
/*background-color: #2ecc71;*/
|
||||
/*color: #000000;*/
|
||||
}
|
||||
|
||||
#memory {
|
||||
/*background-color: #9b59b6;*/
|
||||
}
|
||||
|
||||
#disk {
|
||||
/*background-color: #964B00;*/
|
||||
}
|
||||
|
||||
#backlight {
|
||||
/*background-color: #90b1b1;*/
|
||||
}
|
||||
|
||||
#network {
|
||||
/*background-color: #2980b9;*/
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
/*background-color: #f53c3c;*/
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
/*background-color: #f1c40f;*/
|
||||
/*color: #000000;*/
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
/*background-color: #90b1b1;*/
|
||||
/*color: #2a5c45;*/
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
/*background-color: #fff0f5;*/
|
||||
/*color: #000000;*/
|
||||
}
|
||||
|
||||
#wireplumber.muted {
|
||||
/*background-color: #f53c3c;*/
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
/*background-color: #66cc99;*/
|
||||
/*color: #2a5c45;*/
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
#custom-media.custom-spotify {
|
||||
/*background-color: #66cc99;*/
|
||||
}
|
||||
|
||||
#custom-media.custom-vlc {
|
||||
/*background-color: #ffa000;*/
|
||||
}
|
||||
|
||||
#temperature {
|
||||
/*background-color: #f0932b;*/
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#tray {
|
||||
/*background-color: #2980b9;*/
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
/*background-color: #2d3436;*/
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
/*background-color: #ecf0f1;*/
|
||||
color: #cfcfcf;
|
||||
}
|
||||
|
||||
#mpd {
|
||||
/*background-color: #66cc99;*/
|
||||
/*color: #2a5c45;*/
|
||||
}
|
||||
|
||||
#mpd.disconnected {
|
||||
/*background-color: #f53c3c;*/
|
||||
}
|
||||
|
||||
#mpd.stopped {
|
||||
/*background-color: #90b1b1;*/
|
||||
}
|
||||
|
||||
#mpd.paused {
|
||||
/*background-color: #51a37a;*/
|
||||
}
|
||||
|
||||
#language {
|
||||
/*background: #00b093;*/
|
||||
/*color: #740864;*/
|
||||
/*padding: 0 5px;*/
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
background: #97e1ad;
|
||||
color: #000000;
|
||||
padding: 0 0px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#privacy {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#privacy-item {
|
||||
padding: 0 5px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#privacy-item.screenshare {
|
||||
background-color: #cf5700;
|
||||
}
|
||||
|
||||
#privacy-item.audio-in {
|
||||
background-color: #1ca000;
|
||||
}
|
||||
|
||||
#privacy-item.audio-out {
|
||||
background-color: #0069d4;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue