mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 01:26:46 +00:00
moved to stow
This commit is contained in:
121
.config/alacritty/alacritty.toml
Normal file
121
.config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,121 @@
|
||||
[font]
|
||||
size = 11.0
|
||||
|
||||
[font.bold]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
style = "Bold"
|
||||
|
||||
[font.bold_italic]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
style = "Bold Italic"
|
||||
|
||||
[font.italic]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
style = "Italic"
|
||||
|
||||
[font.normal]
|
||||
family = "JetBrainsMono Nerd Font"
|
||||
style = "Regular"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[selection]
|
||||
save_to_clipboard = true
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
||||
|
||||
[window]
|
||||
decorations = "none"
|
||||
dynamic_title = true
|
||||
startup_mode = "Maximized"
|
||||
|
||||
[window.dimensions]
|
||||
columns = 80
|
||||
lines = 24
|
||||
|
||||
[window.padding]
|
||||
x = 2
|
||||
y = 2
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
# Dracula theme for Alacritty
|
||||
# https://draculatheme.com/alacritty
|
||||
#
|
||||
# Color palette
|
||||
# https://spec.draculatheme.com
|
||||
#
|
||||
# Instructions
|
||||
# https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd
|
||||
|
||||
[colors.primary]
|
||||
|
||||
background = "#282a36"
|
||||
foreground = "#f8f8f2"
|
||||
bright_foreground = "#ffffff"
|
||||
|
||||
[colors.cursor]
|
||||
|
||||
text = "#282a36"
|
||||
cursor = "#f8f8f2"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
|
||||
text = "CellBackground"
|
||||
cursor = "CellForeground"
|
||||
|
||||
[colors.selection]
|
||||
|
||||
text = "CellForeground"
|
||||
background = "#44475a"
|
||||
|
||||
[colors.normal]
|
||||
|
||||
black = "#21222c"
|
||||
red = "#ff5555"
|
||||
green = "#50fa7b"
|
||||
yellow = "#f1fa8c"
|
||||
blue = "#bd93f9"
|
||||
magenta = "#ff79c6"
|
||||
cyan = "#8be9fd"
|
||||
white = "#f8f8f2"
|
||||
|
||||
[colors.bright]
|
||||
|
||||
black = "#6272a4"
|
||||
red = "#ff6e6e"
|
||||
green = "#69ff94"
|
||||
yellow = "#ffffa5"
|
||||
blue = "#d6acff"
|
||||
magenta = "#ff92df"
|
||||
cyan = "#a4ffff"
|
||||
white = "#ffffff"
|
||||
|
||||
[colors.search.matches]
|
||||
|
||||
foreground = "#44475a"
|
||||
background = "#50fa7b"
|
||||
|
||||
[colors.search.focused_match]
|
||||
|
||||
foreground = "#44475a"
|
||||
background = "#ffb86c"
|
||||
|
||||
[colors.footer_bar]
|
||||
|
||||
background = "#282a36"
|
||||
foreground = "#f8f8f2"
|
||||
|
||||
[colors.hints.start]
|
||||
|
||||
foreground = "#282a36"
|
||||
background = "#f1fa8c"
|
||||
|
||||
[colors.hints.end]
|
||||
|
||||
foreground = "#f1fa8c"
|
||||
background = "#282a36"
|
||||
|
||||
[general]
|
||||
live_config_reload = true
|
||||
|
||||
248
.config/btop/btop.conf
Normal file
248
.config/btop/btop.conf
Normal file
@@ -0,0 +1,248 @@
|
||||
#? Config file for btop v. 1.4.0
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "/usr/share/btop/themes/dracula.theme"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = True
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = True
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = False
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = False
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = True
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_gpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||
shown_boxes = "cpu mem net proc"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 100
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "memory"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = False
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = False
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = True
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = True
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = False
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = True
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = True
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = False
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = False
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = False
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = False
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "Auto"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "Auto"
|
||||
|
||||
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||
show_gpu_info = "Auto"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = True
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = False
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = False
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = True
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = True
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = False
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = True
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = True
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = True
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = False
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = True
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = True
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = True
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = True
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = True
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = True
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = False
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = False
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = True
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = False
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = False
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = True
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = True
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = True
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Show power stats of battery next to charge indicator.
|
||||
show_battery_watts = True
|
||||
|
||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
||||
|
||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||
nvml_measure_pcie_speeds = True
|
||||
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = True
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
custom_gpu_name0 = ""
|
||||
|
||||
#* Custom gpu1 model name, empty string to disable.
|
||||
custom_gpu_name1 = ""
|
||||
|
||||
#* Custom gpu2 model name, empty string to disable.
|
||||
custom_gpu_name2 = ""
|
||||
|
||||
#* Custom gpu3 model name, empty string to disable.
|
||||
custom_gpu_name3 = ""
|
||||
|
||||
#* Custom gpu4 model name, empty string to disable.
|
||||
custom_gpu_name4 = ""
|
||||
|
||||
#* Custom gpu5 model name, empty string to disable.
|
||||
custom_gpu_name5 = ""
|
||||
28
.config/btop/btop.log
Normal file
28
.config/btop/btop.log
Normal file
@@ -0,0 +1,28 @@
|
||||
2024/08/03 (10:00:42) | WARNING: NVML: Failed to get PCIe TX throughput: Unknown Error
|
||||
|
||||
2024/08/06 (02:38:32) | ===> btop++ v.1.3.2
|
||||
2024/08/06 (02:38:32) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/06 (02:39:09) | ===> btop++ v.1.3.2
|
||||
2024/08/06 (02:39:09) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/06 (02:39:28) | ===> btop++ v.1.3.2
|
||||
2024/08/06 (02:39:28) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/08 (23:43:40) | ===> btop++ v.1.3.2
|
||||
2024/08/08 (23:43:40) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/15 (10:33:59) | ===> btop++ v.1.3.2
|
||||
2024/08/15 (10:33:59) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/15 (14:49:39) | ===> btop++ v.1.3.2
|
||||
2024/08/15 (14:49:39) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/17 (10:46:39) | ===> btop++ v.1.3.2
|
||||
2024/08/17 (10:46:39) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/18 (10:26:47) | ===> btop++ v.1.3.2
|
||||
2024/08/18 (10:26:47) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
|
||||
2024/08/18 (15:30:20) | ===> btop++ v.1.3.2
|
||||
2024/08/18 (15:30:20) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
|
||||
12467
.config/btop/btop.log.1
Normal file
12467
.config/btop/btop.log.1
Normal file
File diff suppressed because it is too large
Load Diff
89
.config/btop/themes/dracula.theme
Normal file
89
.config/btop/themes/dracula.theme
Normal file
@@ -0,0 +1,89 @@
|
||||
# Main background, empty for terminal default, need to be empty if you want transparent background
|
||||
theme[main_bg]="#282a36"
|
||||
|
||||
# Main text color
|
||||
theme[main_fg]="#f8f8f2"
|
||||
|
||||
# Title color for boxes
|
||||
theme[title]="#f8f8f2"
|
||||
|
||||
# Highlight color for keyboard shortcuts
|
||||
theme[hi_fg]="#6272a4"
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]="#ff79c6"
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]="#f8f8f2"
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]="#44475a"
|
||||
|
||||
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
|
||||
theme[graph_text]="#f8f8f2"
|
||||
|
||||
# Background color of the percentage meters
|
||||
theme[meter_bg]="#44475a"
|
||||
|
||||
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||
theme[proc_misc]="#bd93f9"
|
||||
|
||||
# Cpu box outline color
|
||||
theme[cpu_box]="#bd93f9"
|
||||
|
||||
# Memory/disks box outline color
|
||||
theme[mem_box]="#50fa7b"
|
||||
|
||||
# Net up/down box outline color
|
||||
theme[net_box]="#ff5555"
|
||||
|
||||
# Processes box outline color
|
||||
theme[proc_box]="#8be9fd"
|
||||
|
||||
# Box divider line and small boxes line color
|
||||
theme[div_line]="#44475a"
|
||||
|
||||
# Temperature graph colors
|
||||
theme[temp_start]="#bd93f9"
|
||||
theme[temp_mid]="#ff79c6"
|
||||
theme[temp_end]="#ff33a8"
|
||||
|
||||
# CPU graph colors
|
||||
theme[cpu_start]="#bd93f9"
|
||||
theme[cpu_mid]="#8be9fd"
|
||||
theme[cpu_end]="#50fa7b"
|
||||
|
||||
# Mem/Disk free meter
|
||||
theme[free_start]="#ffa6d9"
|
||||
theme[free_mid]="#ff79c6"
|
||||
theme[free_end]="#ff33a8"
|
||||
|
||||
# Mem/Disk cached meter
|
||||
theme[cached_start]="#b1f0fd"
|
||||
theme[cached_mid]="#8be9fd"
|
||||
theme[cached_end]="#26d7fd"
|
||||
|
||||
# Mem/Disk available meter
|
||||
theme[available_start]="#ffd4a6"
|
||||
theme[available_mid]="#ffb86c"
|
||||
theme[available_end]="#ff9c33"
|
||||
|
||||
# Mem/Disk used meter
|
||||
theme[used_start]="#96faaf"
|
||||
theme[used_mid]="#50fa7b"
|
||||
theme[used_end]="#0dfa49"
|
||||
|
||||
# Download graph colors
|
||||
theme[download_start]="#bd93f9"
|
||||
theme[download_mid]="#50fa7b"
|
||||
theme[download_end]="#8be9fd"
|
||||
|
||||
# Upload graph colors
|
||||
theme[upload_start]="#8c42ab"
|
||||
theme[upload_mid]="#ff79c6"
|
||||
theme[upload_end]="#ff33a8"
|
||||
|
||||
# Process box color gradient for threads, mem and cpu usage
|
||||
theme[process_start]="#50fa7b"
|
||||
theme[process_mid]="#59b690"
|
||||
theme[process_end]="#6272a4"
|
||||
5
.config/hypr/hypridle.conf
Executable file
5
.config/hypr/hypridle.conf
Executable file
@@ -0,0 +1,5 @@
|
||||
listener {
|
||||
timeout = 300 # 5min
|
||||
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
300
.config/hypr/hyprland.conf
Executable file
300
.config/hypr/hyprland.conf
Executable file
@@ -0,0 +1,300 @@
|
||||
|
||||
# #######################################################################################
|
||||
# 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
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = XDG_SESSION_DESKTOP,Hyprland
|
||||
env = XDG_SCREENSHOTS_DIR,$HOME/Pictures/Screenshots
|
||||
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = GBM_BACKEND,nvidia-drm
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
|
||||
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
||||
env = QT_QPA_PLATFORM,wayland;xcb
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
||||
env = QT_QPA_PLATFORMTHEME,qt5ct
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,preferred,auto,1
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = alacritty
|
||||
$fileManager = thunar
|
||||
$menu = hyprlauncher
|
||||
$browser = zen-browser
|
||||
|
||||
#################
|
||||
### 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
|
||||
exec-once = ssh-agent & waybar & hyprpaper & kdeconnect-indicator & hypridle
|
||||
exec-once = systemctl --user start hyprpolkitagent
|
||||
#############################
|
||||
### 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 = 5
|
||||
gaps_out = 20
|
||||
|
||||
border_size = 2
|
||||
col.active_border = rgb(44475a) rgb(bd93f9) 90deg
|
||||
col.inactive_border = rgba(44475aaa)
|
||||
col.nogroup_border = rgba(282a36dd)
|
||||
col.nogroup_border_active = rgb(bd93f9) rgb(44475a) 90deg
|
||||
|
||||
# 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
|
||||
|
||||
}
|
||||
|
||||
cursor {
|
||||
no_hardware_cursors = true
|
||||
}
|
||||
# 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
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1E202966)
|
||||
}
|
||||
# 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
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
#bezier = myBezier, 0.33, 0.82, 0.9, -0.08
|
||||
|
||||
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
|
||||
force_split = 2
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
animate_manual_resizes = true
|
||||
animate_mouse_windowdragging = true
|
||||
enable_swallow = true
|
||||
render_ahead_of_time = false
|
||||
disable_hyprland_logo = true
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us,eg
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = grp:alt_shift_toggle
|
||||
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 = false
|
||||
}
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
exec-once = wl-paste --type text --watch cliphist store
|
||||
exec-once = wl-paste --type image --watch cliphist store
|
||||
bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, Return, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod ALT, Q, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, B, exec, $browser
|
||||
bind = $mainMod, T, togglefloating,
|
||||
bind = $mainMod, F, fullscreen,
|
||||
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
|
||||
|
||||
# Moving windows
|
||||
bind = $mainMod SHIFT, left, swapwindow, l
|
||||
bind = $mainMod SHIFT, right, swapwindow, r
|
||||
bind = $mainMod SHIFT, up, swapwindow, u
|
||||
bind = $mainMod SHIFT, down, swapwindow, d
|
||||
|
||||
# Window resizing X Y
|
||||
bind = $mainMod CTRL, left, resizeactive, -60 0
|
||||
bind = $mainMod CTRL, right, resizeactive, 60 0
|
||||
bind = $mainMod CTRL, up, resizeactive, 0 -60
|
||||
bind = $mainMod CTRL, down, resizeactive, 0 60
|
||||
|
||||
# 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, movetoworkspacesilent, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10
|
||||
|
||||
# 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
|
||||
|
||||
bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
|
||||
bind = , XF86MonBrightnessUp, exec, brightnessctl set 5%+
|
||||
|
||||
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
|
||||
bind = $mainMod SHIFT, H, exec, $terminal -e sh -c "nvim ~/.config/hypr/hyprland.conf"
|
||||
bind = $mainMod SHIFT, W, exec, $terminal -e sh -c "nvim ~/.config/waybar/config"
|
||||
|
||||
bind = $mainMod SHIFT, S, exec, grimblast copysave area
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# 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.
|
||||
4
.config/hypr/hyprpaper.conf
Executable file
4
.config/hypr/hyprpaper.conf
Executable file
@@ -0,0 +1,4 @@
|
||||
$path = ~/Pictures/Wallpapers/dracula-mnt-6272a4.png
|
||||
|
||||
preload = $path
|
||||
wallpaper = ,$path
|
||||
19
.config/kitty/diff.conf
Normal file
19
.config/kitty/diff.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
foreground #f8f8f2
|
||||
background #282a36
|
||||
title_fg #f8f8f2
|
||||
title_bg #282a36
|
||||
margin_bg #6272a4
|
||||
margin_fg #44475a
|
||||
removed_bg #ff5555
|
||||
highlight_removed_bg #ff5555
|
||||
removed_margin_bg #ff5555
|
||||
added_bg #50fa7b
|
||||
highlight_added_bg #50fa7b
|
||||
added_margin_bg #50fa7b
|
||||
filler_bg #44475a
|
||||
hunk_margin_bg #44475a
|
||||
hunk_bg #bd93f9
|
||||
search_bg #8be9fd
|
||||
search_fg #282a36
|
||||
select_bg #f1fa8c
|
||||
select_fg #282a36
|
||||
66
.config/kitty/dracula.conf
Normal file
66
.config/kitty/dracula.conf
Normal file
@@ -0,0 +1,66 @@
|
||||
# https://draculatheme.com/kitty
|
||||
#
|
||||
# Installation instructions:
|
||||
#
|
||||
# cp dracula.conf ~/.config/kitty/
|
||||
# echo "include dracula.conf" >> ~/.config/kitty/kitty.conf
|
||||
#
|
||||
# Then reload kitty for the config to take affect.
|
||||
# Alternatively copy paste below directly into kitty.conf
|
||||
|
||||
foreground #f8f8f2
|
||||
background #282a36
|
||||
selection_foreground #ffffff
|
||||
selection_background #44475a
|
||||
|
||||
url_color #8be9fd
|
||||
|
||||
# black
|
||||
color0 #21222c
|
||||
color8 #6272a4
|
||||
|
||||
# red
|
||||
color1 #ff5555
|
||||
color9 #ff6e6e
|
||||
|
||||
# green
|
||||
color2 #50fa7b
|
||||
color10 #69ff94
|
||||
|
||||
# yellow
|
||||
color3 #f1fa8c
|
||||
color11 #ffffa5
|
||||
|
||||
# blue
|
||||
color4 #bd93f9
|
||||
color12 #d6acff
|
||||
|
||||
# magenta
|
||||
color5 #ff79c6
|
||||
color13 #ff92df
|
||||
|
||||
# cyan
|
||||
color6 #8be9fd
|
||||
color14 #a4ffff
|
||||
|
||||
# white
|
||||
color7 #f8f8f2
|
||||
color15 #ffffff
|
||||
|
||||
# Cursor colors
|
||||
cursor #f8f8f2
|
||||
cursor_text_color background
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground #282a36
|
||||
active_tab_background #f8f8f2
|
||||
inactive_tab_foreground #282a36
|
||||
inactive_tab_background #6272a4
|
||||
|
||||
# Marks
|
||||
mark1_foreground #282a36
|
||||
mark1_background #ff5555
|
||||
|
||||
# Splits/Windows
|
||||
active_border_color #f8f8f2
|
||||
inactive_border_color #6272a4
|
||||
7
.config/kitty/kitty.conf
Normal file
7
.config/kitty/kitty.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
include dracula.conf
|
||||
|
||||
font_family JetBrains Mono
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
|
||||
3
.config/lazygit/config.yml
Normal file
3
.config/lazygit/config.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
git:
|
||||
log:
|
||||
showGraph: always
|
||||
28
.config/nvim/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
28
.config/nvim/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- Any bug report not following this template will be immediately closed. Thanks -->
|
||||
|
||||
## Describe the bug
|
||||
<!-- A clear and concise description of what the bug is. -->
|
||||
|
||||
## To Reproduce
|
||||
<!-- Steps to reproduce the behavior. -->
|
||||
1. ...
|
||||
|
||||
## Desktop
|
||||
<!-- please complete the following information. -->
|
||||
- OS:
|
||||
- Terminal:
|
||||
|
||||
## Neovim Version
|
||||
<!-- Output of running `:version` from inside of neovim. -->
|
||||
|
||||
```
|
||||
```
|
||||
8
.config/nvim/.github/pull_request_template.md
vendored
Normal file
8
.config/nvim/.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
***************************************************************************
|
||||
**NOTE**
|
||||
Please verify that the `base repository` above has the intended destination!
|
||||
Github by default opens Pull Requests against the parent of a forked repository.
|
||||
If this is your personal fork and you didn't intend to open a PR for contribution
|
||||
to the original project then adjust the `base repository` accordingly.
|
||||
**************************************************************************
|
||||
|
||||
21
.config/nvim/.github/workflows/stylua.yml
vendored
Normal file
21
.config/nvim/.github/workflows/stylua.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Check Lua Formatting
|
||||
name: Check Lua Formatting
|
||||
on: pull_request_target
|
||||
|
||||
jobs:
|
||||
stylua-check:
|
||||
if: github.repository == 'nvim-lua/kickstart.nvim'
|
||||
name: Stylua Check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: Stylua Check
|
||||
uses: JohnnyMorganz/stylua-action@v3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
version: latest
|
||||
args: --check .
|
||||
|
||||
7
.config/nvim/.gitignore
vendored
Normal file
7
.config/nvim/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
tags
|
||||
test.sh
|
||||
.luarc.json
|
||||
nvim
|
||||
|
||||
spell/
|
||||
lazy-lock.json
|
||||
6
.config/nvim/.stylua.toml
Normal file
6
.config/nvim/.stylua.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
column_width = 160
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferSingle"
|
||||
call_parentheses = "None"
|
||||
19
.config/nvim/LICENSE.md
Normal file
19
.config/nvim/LICENSE.md
Normal file
@@ -0,0 +1,19 @@
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
233
.config/nvim/README.md
Normal file
233
.config/nvim/README.md
Normal file
@@ -0,0 +1,233 @@
|
||||
# kickstart.nvim
|
||||
|
||||
## Introduction
|
||||
|
||||
A starting point for Neovim that is:
|
||||
|
||||
* Small
|
||||
* Single-file
|
||||
* Completely Documented
|
||||
|
||||
**NOT** a Neovim distribution, but instead a starting point for your configuration.
|
||||
|
||||
## Installation
|
||||
|
||||
### Install Neovim
|
||||
|
||||
Kickstart.nvim targets *only* the latest
|
||||
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
|
||||
['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
|
||||
If you are experiencing issues, please make sure you have the latest versions.
|
||||
|
||||
### Install External Dependencies
|
||||
|
||||
External Requirements:
|
||||
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
|
||||
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation)
|
||||
- Clipboard tool (xclip/xsel/win32yank or other depending on platform)
|
||||
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
|
||||
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
|
||||
- Language Setup:
|
||||
- If you want to write Typescript, you need `npm`
|
||||
- If you want to write Golang, you will need `go`
|
||||
- etc.
|
||||
|
||||
> **NOTE**
|
||||
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
|
||||
> and quick install snippets
|
||||
|
||||
### Install Kickstart
|
||||
|
||||
> **NOTE**
|
||||
> [Backup](#FAQ) your previous configuration (if any exists)
|
||||
|
||||
Neovim's configurations are located under the following paths, depending on your OS:
|
||||
|
||||
| OS | PATH |
|
||||
| :- | :--- |
|
||||
| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
|
||||
| Windows (cmd)| `%localappdata%\nvim\` |
|
||||
| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` |
|
||||
|
||||
#### Recommended Step
|
||||
|
||||
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
|
||||
so that you have your own copy that you can modify, then install by cloning the
|
||||
fork to your machine using one of the commands below, depending on your OS.
|
||||
|
||||
> **NOTE**
|
||||
> Your fork's url will be something like this:
|
||||
> `https://github.com/<your_github_username>/kickstart.nvim.git`
|
||||
|
||||
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file
|
||||
too - it's ignored in the kickstart repo to make maintenance easier, but it's
|
||||
[recommmended to track it in version control](https://lazy.folke.io/usage/lockfile).
|
||||
|
||||
#### Clone kickstart.nvim
|
||||
> **NOTE**
|
||||
> If following the recommended step above (i.e., forking the repo), replace
|
||||
> `nvim-lua` with `<your_github_username>` in the commands below
|
||||
|
||||
<details><summary> Linux and Mac </summary>
|
||||
|
||||
```sh
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details><summary> Windows </summary>
|
||||
|
||||
If you're using `cmd.exe`:
|
||||
|
||||
```
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim"
|
||||
```
|
||||
|
||||
If you're using `powershell.exe`
|
||||
|
||||
```
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim"
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### Post Installation
|
||||
|
||||
Start Neovim
|
||||
|
||||
```sh
|
||||
nvim
|
||||
```
|
||||
|
||||
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
|
||||
current plugin status. Hit `q` to close the window.
|
||||
|
||||
Read through the `init.lua` file in your configuration folder for more
|
||||
information about extending and exploring Neovim. That also includes
|
||||
examples of adding popularly requested plugins.
|
||||
|
||||
|
||||
### Getting Started
|
||||
|
||||
[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
|
||||
|
||||
### FAQ
|
||||
|
||||
* What should I do if I already have a pre-existing neovim configuration?
|
||||
* You should back it up and then delete all associated files.
|
||||
* This includes your existing init.lua and the neovim files in `~/.local`
|
||||
which can be deleted with `rm -rf ~/.local/share/nvim/`
|
||||
* Can I keep my existing configuration in parallel to kickstart?
|
||||
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
|
||||
to maintain multiple configurations. For example, you can install the kickstart
|
||||
configuration in `~/.config/nvim-kickstart` and create an alias:
|
||||
```
|
||||
alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
```
|
||||
When you run Neovim using `nvim-kickstart` alias it will use the alternative
|
||||
config directory and the matching local directory
|
||||
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
|
||||
distribution that you would like to try out.
|
||||
* What if I want to "uninstall" this configuration:
|
||||
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information
|
||||
* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files?
|
||||
* The main purpose of kickstart is to serve as a teaching tool and a reference
|
||||
configuration that someone can easily use to `git clone` as a basis for their own.
|
||||
As you progress in learning Neovim and Lua, you might consider splitting `init.lua`
|
||||
into smaller parts. A fork of kickstart that does this while maintaining the
|
||||
same functionality is available here:
|
||||
* [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
|
||||
* Discussions on this topic can be found here:
|
||||
* [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
|
||||
* [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
|
||||
|
||||
### Install Recipes
|
||||
|
||||
Below you can find OS specific install instructions for Neovim and dependencies.
|
||||
|
||||
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step.
|
||||
|
||||
#### Windows Installation
|
||||
|
||||
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
|
||||
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
|
||||
|
||||
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
|
||||
|
||||
This requires:
|
||||
|
||||
- Install CMake and the Microsoft C++ Build Tools on Windows
|
||||
|
||||
```lua
|
||||
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
|
||||
```
|
||||
</details>
|
||||
<details><summary>Windows with gcc/make using chocolatey</summary>
|
||||
Alternatively, one can install gcc and make which don't require changing the config,
|
||||
the easiest way is to use choco:
|
||||
|
||||
1. install [chocolatey](https://chocolatey.org/install)
|
||||
either follow the instructions on the page or use winget,
|
||||
run in cmd as **admin**:
|
||||
```
|
||||
winget install --accept-source-agreements chocolatey.chocolatey
|
||||
```
|
||||
|
||||
2. install all requirements using choco, exit previous cmd and
|
||||
open a new one so that choco path is set, and run in cmd as **admin**:
|
||||
```
|
||||
choco install -y neovim git ripgrep wget fd unzip gzip mingw make
|
||||
```
|
||||
</details>
|
||||
<details><summary>WSL (Windows Subsystem for Linux)</summary>
|
||||
|
||||
```
|
||||
wsl --install
|
||||
wsl
|
||||
sudo add-apt-repository ppa:neovim-ppa/unstable -y
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip neovim
|
||||
```
|
||||
</details>
|
||||
|
||||
#### Linux Install
|
||||
<details><summary>Ubuntu Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo add-apt-repository ppa:neovim-ppa/unstable -y
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip neovim
|
||||
```
|
||||
</details>
|
||||
<details><summary>Debian Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip curl
|
||||
|
||||
# Now we install nvim
|
||||
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
|
||||
sudo rm -rf /opt/nvim-linux64
|
||||
sudo mkdir -p /opt/nvim-linux64
|
||||
sudo chmod a+rX /opt/nvim-linux64
|
||||
sudo tar -C /opt -xzf nvim-linux64.tar.gz
|
||||
|
||||
# make it available in /usr/local/bin, distro installs to /usr/bin
|
||||
sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/
|
||||
```
|
||||
</details>
|
||||
<details><summary>Fedora Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
|
||||
```
|
||||
</details>
|
||||
|
||||
<details><summary>Arch Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
|
||||
```
|
||||
</details>
|
||||
|
||||
24
.config/nvim/doc/kickstart.txt
Normal file
24
.config/nvim/doc/kickstart.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
================================================================================
|
||||
INTRODUCTION *kickstart.nvim*
|
||||
|
||||
Kickstart.nvim is a project to help you get started on your neovim journey.
|
||||
|
||||
*kickstart-is-not*
|
||||
It is not:
|
||||
- Complete framework for every plugin under the sun
|
||||
- Place to add every plugin that could ever be useful
|
||||
|
||||
*kickstart-is*
|
||||
It is:
|
||||
- Somewhere that has a good start for the most common "IDE" type features:
|
||||
- autocompletion
|
||||
- goto-definition
|
||||
- find references
|
||||
- fuzzy finding
|
||||
- and hinting at what more can be done :)
|
||||
- A place to _kickstart_ your journey.
|
||||
- You should fork this project and use/modify it so that it matches your
|
||||
style and preferences. If you don't want to do that, there are probably
|
||||
other projects that would fit much better for you (and that's great!)!
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
||||
73
.config/nvim/init.lua
Normal file
73
.config/nvim/init.lua
Normal file
@@ -0,0 +1,73 @@
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
vim.g.have_nerd_font = true
|
||||
vim.opt.number = true
|
||||
-- vim.opt.mouse = 'a'
|
||||
vim.opt.showmode = false
|
||||
vim.schedule(function()
|
||||
vim.opt.clipboard = 'unnamedplus'
|
||||
end)
|
||||
vim.opt.breakindent = true
|
||||
vim.opt.undofile = true
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.signcolumn = 'yes'
|
||||
vim.opt.updatetime = 250
|
||||
vim.opt.timeoutlen = 300
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
vim.opt.inccommand = 'split'
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.scrolloff = 10
|
||||
vim.opt.textwidth = 80
|
||||
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
|
||||
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
|
||||
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
|
||||
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
|
||||
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
|
||||
vim.keymap.set('n', '<C-Tab>', ':bnext<CR>', { desc = 'Move focus to the next buffer', noremap = true })
|
||||
vim.keymap.set('n', '<C-S-Tab>', ':bprevious<CR>', { desc = 'Move focus to the previous buffer', noremap = true })
|
||||
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
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', lazyrepo, lazypath }
|
||||
if vim.v.shell_error ~= 0 then
|
||||
error('Error cloning lazy.nvim:\n' .. out)
|
||||
end
|
||||
end
|
||||
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require('lazy').setup({ spec = { import = 'plugins' } }, {
|
||||
ui = {
|
||||
icons = vim.g.have_nerd_font and {} or {
|
||||
cmd = '⌘',
|
||||
config = '🛠',
|
||||
event = '📅',
|
||||
ft = '📂',
|
||||
init = '⚙',
|
||||
keys = '🗝',
|
||||
plugin = '🔌',
|
||||
runtime = '💻',
|
||||
require = '🌙',
|
||||
source = '📄',
|
||||
start = '🚀',
|
||||
task = '📌',
|
||||
lazy = '💤 ',
|
||||
},
|
||||
},
|
||||
})
|
||||
5
.config/nvim/lua/custom/plugins/init.lua
Normal file
5
.config/nvim/lua/custom/plugins/init.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
-- You can add your own plugins here or in other files in this directory!
|
||||
-- I promise not to create any merge conflicts in this directory :)
|
||||
--
|
||||
-- See the kickstart.nvim README for more information
|
||||
return {}
|
||||
52
.config/nvim/lua/kickstart/health.lua
Normal file
52
.config/nvim/lua/kickstart/health.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
--[[
|
||||
--
|
||||
-- This file is not required for your own configuration,
|
||||
-- but helps people determine if their system is setup correctly.
|
||||
--
|
||||
--]]
|
||||
|
||||
local check_version = function()
|
||||
local verstr = tostring(vim.version())
|
||||
if not vim.version.ge then
|
||||
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
||||
return
|
||||
end
|
||||
|
||||
if vim.version.ge(vim.version(), '0.10-dev') then
|
||||
vim.health.ok(string.format("Neovim version is: '%s'", verstr))
|
||||
else
|
||||
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
||||
end
|
||||
end
|
||||
|
||||
local check_external_reqs = function()
|
||||
-- Basic utils: `git`, `make`, `unzip`
|
||||
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
|
||||
local is_executable = vim.fn.executable(exe) == 1
|
||||
if is_executable then
|
||||
vim.health.ok(string.format("Found executable: '%s'", exe))
|
||||
else
|
||||
vim.health.warn(string.format("Could not find executable: '%s'", exe))
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return {
|
||||
check = function()
|
||||
vim.health.start 'kickstart.nvim'
|
||||
|
||||
vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
|
||||
|
||||
Fix only warnings for plugins and languages you intend to use.
|
||||
Mason will give warnings for languages that are not installed.
|
||||
You do not need to install, unless you want to use those languages!]]
|
||||
|
||||
local uv = vim.uv or vim.loop
|
||||
vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
|
||||
|
||||
check_version()
|
||||
check_external_reqs()
|
||||
end,
|
||||
}
|
||||
16
.config/nvim/lua/kickstart/plugins/autopairs.lua
Normal file
16
.config/nvim/lua/kickstart/plugins/autopairs.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
-- autopairs
|
||||
-- https://github.com/windwp/nvim-autopairs
|
||||
|
||||
return {
|
||||
'windwp/nvim-autopairs',
|
||||
event = 'InsertEnter',
|
||||
-- Optional dependency
|
||||
dependencies = { 'hrsh7th/nvim-cmp' },
|
||||
config = function()
|
||||
require('nvim-autopairs').setup {}
|
||||
-- If you want to automatically add `(` after selecting a function or method
|
||||
local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
|
||||
local cmp = require 'cmp'
|
||||
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
|
||||
end,
|
||||
}
|
||||
105
.config/nvim/lua/kickstart/plugins/debug.lua
Normal file
105
.config/nvim/lua/kickstart/plugins/debug.lua
Normal file
@@ -0,0 +1,105 @@
|
||||
-- debug.lua
|
||||
--
|
||||
-- Shows how to use the DAP plugin to debug your code.
|
||||
--
|
||||
-- Primarily focused on configuring the debugger for Go, but can
|
||||
-- be extended to other languages as well. That's why it's called
|
||||
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
||||
|
||||
return {
|
||||
-- NOTE: Yes, you can install new plugins here!
|
||||
'mfussenegger/nvim-dap',
|
||||
-- NOTE: And you can specify dependencies as well
|
||||
dependencies = {
|
||||
-- Creates a beautiful debugger UI
|
||||
'rcarriga/nvim-dap-ui',
|
||||
|
||||
-- Required dependency for nvim-dap-ui
|
||||
'nvim-neotest/nvim-nio',
|
||||
|
||||
-- Installs the debug adapters for you
|
||||
'williamboman/mason.nvim',
|
||||
'jay-babu/mason-nvim-dap.nvim',
|
||||
|
||||
-- Add your own debuggers here
|
||||
'leoluz/nvim-dap-go',
|
||||
},
|
||||
keys = function(_, keys)
|
||||
local dap = require 'dap'
|
||||
local dapui = require 'dapui'
|
||||
return {
|
||||
-- Basic debugging keymaps, feel free to change to your liking!
|
||||
{ '<F5>', dap.continue, desc = 'Debug: Start/Continue' },
|
||||
{ '<F1>', dap.step_into, desc = 'Debug: Step Into' },
|
||||
{ '<F2>', dap.step_over, desc = 'Debug: Step Over' },
|
||||
{ '<F3>', dap.step_out, desc = 'Debug: Step Out' },
|
||||
{ '<leader>b', dap.toggle_breakpoint, desc = 'Debug: Toggle Breakpoint' },
|
||||
{
|
||||
'<leader>B',
|
||||
function()
|
||||
dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
|
||||
end,
|
||||
desc = 'Debug: Set Breakpoint',
|
||||
},
|
||||
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
||||
{ '<F7>', dapui.toggle, desc = 'Debug: See last session result.' },
|
||||
unpack(keys),
|
||||
}
|
||||
end,
|
||||
config = function()
|
||||
local dap = require 'dap'
|
||||
local dapui = require 'dapui'
|
||||
|
||||
require('mason-nvim-dap').setup {
|
||||
-- Makes a best effort to setup the various debuggers with
|
||||
-- reasonable debug configurations
|
||||
automatic_installation = true,
|
||||
|
||||
-- You can provide additional configuration to the handlers,
|
||||
-- see mason-nvim-dap README for more information
|
||||
handlers = {},
|
||||
|
||||
-- You'll need to check that you have the required things installed
|
||||
-- online, please don't ask me how to install them :)
|
||||
ensure_installed = {
|
||||
-- Update this to ensure that you have the debuggers for the langs you want
|
||||
'delve',
|
||||
},
|
||||
}
|
||||
|
||||
-- Dap UI setup
|
||||
-- For more information, see |:help nvim-dap-ui|
|
||||
dapui.setup {
|
||||
-- Set icons to characters that are more likely to work in every terminal.
|
||||
-- Feel free to remove or use ones that you like more! :)
|
||||
-- Don't feel like these are good choices.
|
||||
icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
|
||||
controls = {
|
||||
icons = {
|
||||
pause = '⏸',
|
||||
play = '▶',
|
||||
step_into = '⏎',
|
||||
step_over = '⏭',
|
||||
step_out = '⏮',
|
||||
step_back = 'b',
|
||||
run_last = '▶▶',
|
||||
terminate = '⏹',
|
||||
disconnect = '⏏',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
||||
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||
|
||||
-- Install golang specific config
|
||||
require('dap-go').setup {
|
||||
delve = {
|
||||
-- On Windows delve must be run attached or it crashes.
|
||||
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
|
||||
detached = vim.fn.has 'win32' == 0,
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
61
.config/nvim/lua/kickstart/plugins/gitsigns.lua
Normal file
61
.config/nvim/lua/kickstart/plugins/gitsigns.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||
-- NOTE: gitsigns is already included in init.lua but contains only the base
|
||||
-- config. This will add also the recommended keymaps.
|
||||
|
||||
return {
|
||||
{
|
||||
'lewis6991/gitsigns.nvim',
|
||||
opts = {
|
||||
on_attach = function(bufnr)
|
||||
local gitsigns = require 'gitsigns'
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map('n', ']c', function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal { ']c', bang = true }
|
||||
else
|
||||
gitsigns.nav_hunk 'next'
|
||||
end
|
||||
end, { desc = 'Jump to next git [c]hange' })
|
||||
|
||||
map('n', '[c', function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal { '[c', bang = true }
|
||||
else
|
||||
gitsigns.nav_hunk 'prev'
|
||||
end
|
||||
end, { desc = 'Jump to previous git [c]hange' })
|
||||
|
||||
-- Actions
|
||||
-- visual mode
|
||||
map('v', '<leader>hs', function()
|
||||
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||
end, { desc = 'stage git hunk' })
|
||||
map('v', '<leader>hr', function()
|
||||
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||
end, { desc = 'reset git hunk' })
|
||||
-- normal mode
|
||||
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
|
||||
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
|
||||
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
|
||||
map('n', '<leader>hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' })
|
||||
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
|
||||
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
|
||||
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
|
||||
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
|
||||
map('n', '<leader>hD', function()
|
||||
gitsigns.diffthis '@'
|
||||
end, { desc = 'git [D]iff against last commit' })
|
||||
-- Toggles
|
||||
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
|
||||
map('n', '<leader>tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' })
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
9
.config/nvim/lua/kickstart/plugins/indent_line.lua
Normal file
9
.config/nvim/lua/kickstart/plugins/indent_line.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
return {
|
||||
{ -- Add indentation guides even on blank lines
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
-- Enable `lukas-reineke/indent-blankline.nvim`
|
||||
-- See `:help ibl`
|
||||
main = 'ibl',
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
55
.config/nvim/lua/kickstart/plugins/lint.lua
Normal file
55
.config/nvim/lua/kickstart/plugins/lint.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
return {
|
||||
|
||||
{ -- Linting
|
||||
'mfussenegger/nvim-lint',
|
||||
event = { 'BufReadPre', 'BufNewFile' },
|
||||
config = function()
|
||||
local lint = require 'lint'
|
||||
lint.linters_by_ft = {
|
||||
markdown = { 'markdownlint' },
|
||||
}
|
||||
|
||||
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
||||
-- instead set linters_by_ft like this:
|
||||
-- lint.linters_by_ft = lint.linters_by_ft or {}
|
||||
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
|
||||
--
|
||||
-- However, note that this will enable a set of default linters,
|
||||
-- which will cause errors unless these tools are available:
|
||||
-- {
|
||||
-- clojure = { "clj-kondo" },
|
||||
-- dockerfile = { "hadolint" },
|
||||
-- inko = { "inko" },
|
||||
-- janet = { "janet" },
|
||||
-- json = { "jsonlint" },
|
||||
-- markdown = { "vale" },
|
||||
-- rst = { "vale" },
|
||||
-- ruby = { "ruby" },
|
||||
-- terraform = { "tflint" },
|
||||
-- text = { "vale" }
|
||||
-- }
|
||||
--
|
||||
-- You can disable the default linters by setting their filetypes to nil:
|
||||
-- lint.linters_by_ft['clojure'] = nil
|
||||
-- lint.linters_by_ft['dockerfile'] = nil
|
||||
-- lint.linters_by_ft['inko'] = nil
|
||||
-- lint.linters_by_ft['janet'] = nil
|
||||
-- lint.linters_by_ft['json'] = nil
|
||||
-- lint.linters_by_ft['markdown'] = nil
|
||||
-- lint.linters_by_ft['rst'] = nil
|
||||
-- lint.linters_by_ft['ruby'] = nil
|
||||
-- lint.linters_by_ft['terraform'] = nil
|
||||
-- lint.linters_by_ft['text'] = nil
|
||||
|
||||
-- Create autocommand which carries out the actual linting
|
||||
-- on the specified events.
|
||||
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
|
||||
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
|
||||
group = lint_augroup,
|
||||
callback = function()
|
||||
lint.try_lint()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
25
.config/nvim/lua/kickstart/plugins/neo-tree.lua
Normal file
25
.config/nvim/lua/kickstart/plugins/neo-tree.lua
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Neo-tree is a Neovim plugin to browse the file system
|
||||
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||
|
||||
return {
|
||||
'nvim-neo-tree/neo-tree.nvim',
|
||||
version = '*',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
||||
'MunifTanjim/nui.nvim',
|
||||
},
|
||||
cmd = 'Neotree',
|
||||
keys = {
|
||||
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
||||
},
|
||||
opts = {
|
||||
filesystem = {
|
||||
window = {
|
||||
mappings = {
|
||||
['\\'] = 'close_window',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
51
.config/nvim/lua/plugins/codeium.lua
Normal file
51
.config/nvim/lua/plugins/codeium.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
return {
|
||||
'exafunction/codeium.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'hrsh7th/nvim-cmp',
|
||||
},
|
||||
config = function()
|
||||
require('codeium').setup {
|
||||
-- Optionally disable cmp source if using virtual text only
|
||||
enable_cmp_source = false,
|
||||
virtual_text = {
|
||||
enabled = true,
|
||||
|
||||
-- These are the defaults
|
||||
|
||||
-- Set to true if you never want completions to be shown automatically.
|
||||
manual = false,
|
||||
-- A mapping of filetype to true or false, to enable virtual text.
|
||||
filetypes = {},
|
||||
-- Whether to enable virtual text of not for filetypes not specifically listed above.
|
||||
default_filetype_enabled = true,
|
||||
-- How long to wait (in ms) before requesting completions after typing stops.
|
||||
idle_delay = 75,
|
||||
-- Priority of the virtual text. This usually ensures that the completions appear on top of
|
||||
-- other plugins that also add virtual text, such as LSP inlay hints, but can be modified if
|
||||
-- desired.
|
||||
virtual_text_priority = 65535,
|
||||
-- Set to false to disable all key bindings for managing completions.
|
||||
map_keys = true,
|
||||
-- The key to press when hitting the accept keybinding but no completion is showing.
|
||||
-- Defaults to \t normally or <c-n> when a popup is showing.
|
||||
accept_fallback = nil,
|
||||
-- Key bindings for managing completions in virtual text mode.
|
||||
key_bindings = {
|
||||
-- Accept the current completion.
|
||||
accept = '<Tab>',
|
||||
-- Accept the next word.
|
||||
accept_word = false,
|
||||
-- Accept the next line.
|
||||
accept_line = false,
|
||||
-- Clear the virtual text.
|
||||
clear = false,
|
||||
-- Cycle to the next completion.
|
||||
next = '<M-]>',
|
||||
-- Cycle to the previous completion.
|
||||
prev = '<M-[>',
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
102
.config/nvim/lua/plugins/debugger.lua
Normal file
102
.config/nvim/lua/plugins/debugger.lua
Normal file
@@ -0,0 +1,102 @@
|
||||
local js_based_languages = {
|
||||
'typescript',
|
||||
'javascript',
|
||||
'typescriptreact',
|
||||
'javascriptreact',
|
||||
'vue',
|
||||
}
|
||||
|
||||
return {
|
||||
'mfussenegger/nvim-dap',
|
||||
dependencies = {
|
||||
'rcarriga/nvim-dap-ui',
|
||||
'nvim-neotest/nvim-nio',
|
||||
'theHamsta/nvim-dap-virtual-text',
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
'<leader>db',
|
||||
function()
|
||||
require('dap').toggle_breakpoint()
|
||||
end,
|
||||
},
|
||||
{
|
||||
'<leader>dr',
|
||||
function()
|
||||
require('dap').continue()
|
||||
end,
|
||||
},
|
||||
{
|
||||
"<C-'>",
|
||||
function()
|
||||
require('dap').step_over()
|
||||
end,
|
||||
},
|
||||
{
|
||||
'<C-;>',
|
||||
function()
|
||||
require('dap').step_into()
|
||||
end,
|
||||
},
|
||||
{
|
||||
'<C-:>',
|
||||
function()
|
||||
require('dap').step_out()
|
||||
end,
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local dap = require 'dap'
|
||||
local dapui = require 'dapui'
|
||||
dap.adapters.firefox = {
|
||||
type = 'executable',
|
||||
command = 'node',
|
||||
args = {
|
||||
require('mason-registry').get_package('firefox-debug-adapter'):get_install_path() .. '/dist/adapter.bundle.js',
|
||||
},
|
||||
}
|
||||
-- Configuration for JavaScript/TypeScript languages
|
||||
for _, language in ipairs(js_based_languages) do
|
||||
dap.configurations[language] = {
|
||||
{
|
||||
type = 'firefox',
|
||||
request = 'launch',
|
||||
name = 'Launch & Debug in Firefox',
|
||||
url = function()
|
||||
local co = coroutine.running()
|
||||
return coroutine.create(function()
|
||||
vim.ui.input({
|
||||
prompt = 'Enter URL: ',
|
||||
default = 'http://localhost:8080',
|
||||
}, function(url)
|
||||
if url == nil or url == '' then
|
||||
return
|
||||
else
|
||||
coroutine.resume(co, url)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end,
|
||||
webRoot = vim.fn.getcwd(),
|
||||
firefoxExecutable = '/usr/bin/firefox', -- Adjust if needed
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
-- Set up dap-ui
|
||||
dapui.setup()
|
||||
dap.listeners.after.event_initialized['dapui_config'] = function()
|
||||
dapui.open { reset = true }
|
||||
end
|
||||
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||
require('nvim-dap-virtual-text').setup {
|
||||
enabled = true,
|
||||
enabled_commands = true,
|
||||
highlight_changed_variables = true,
|
||||
highlight_new_as_changed = false,
|
||||
show_stop_reason = true,
|
||||
commented = false,
|
||||
}
|
||||
end,
|
||||
}
|
||||
50
.config/nvim/lua/plugins/formatter.lua
Normal file
50
.config/nvim/lua/plugins/formatter.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
return {
|
||||
'stevearc/conform.nvim',
|
||||
event = { 'BufWritePre' },
|
||||
cmd = { 'ConformInfo' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>cf',
|
||||
function()
|
||||
require('conform').format { async = true, lsp_format = 'fallback' }
|
||||
end,
|
||||
mode = '',
|
||||
desc = '[C]ode [F]ormat',
|
||||
},
|
||||
},
|
||||
opts = {
|
||||
notify_on_error = true,
|
||||
format_on_save = {
|
||||
-- These options will be passed to conform.format()
|
||||
timeout_ms = 1000,
|
||||
},
|
||||
formatters_by_ft = {
|
||||
lua = { 'stylua' },
|
||||
|
||||
go = { 'gofmt' },
|
||||
python = { 'ruff' },
|
||||
javascript = { 'biome', 'prettier', stop_after_first = true },
|
||||
typescript = { 'biome', 'prettier', stop_after_first = true },
|
||||
yaml = { 'prettier' },
|
||||
rust = { 'rustfmt', lsp_format = 'fallback' },
|
||||
json = { 'biome', 'prettier', stop_after_first = true },
|
||||
vue = { 'biome', 'prettier' },
|
||||
php = { 'pint', 'intelephense', stop_after_first = true },
|
||||
},
|
||||
formatters = {
|
||||
biome = {
|
||||
meta = {
|
||||
url = 'https://github.com/biomejs/biome',
|
||||
description = 'A toolchain for web projects, aimed to provide functionalities to maintain them.',
|
||||
},
|
||||
command = 'biome',
|
||||
stdin = true,
|
||||
args = { 'format', '--stdin-file-path', '$FILENAME' },
|
||||
},
|
||||
intelephense = {
|
||||
command = 'intelephense',
|
||||
args = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
19
.config/nvim/lua/plugins/git.lua
Normal file
19
.config/nvim/lua/plugins/git.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
return {
|
||||
'kdheepak/lazygit.nvim',
|
||||
lazy = true,
|
||||
cmd = {
|
||||
'LazyGit',
|
||||
'LazyGitConfig',
|
||||
'LazyGitCurrentFile',
|
||||
'LazyGitFilter',
|
||||
'LazyGitFilterCurrentFile',
|
||||
},
|
||||
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
},
|
||||
|
||||
keys = {
|
||||
{ '<leader>gg', '<cmd>LazyGit<cr>', desc = 'LazyGit' },
|
||||
},
|
||||
}
|
||||
61
.config/nvim/lua/plugins/gitsigns.lua
Normal file
61
.config/nvim/lua/plugins/gitsigns.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||
-- NOTE: gitsigns is already included in init.lua but contains only the base
|
||||
-- config. This will add also the recommended keymaps.
|
||||
|
||||
return {
|
||||
{
|
||||
'lewis6991/gitsigns.nvim',
|
||||
opts = {
|
||||
on_attach = function(bufnr)
|
||||
local gitsigns = require 'gitsigns'
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map('n', ']c', function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal { ']c', bang = true }
|
||||
else
|
||||
gitsigns.nav_hunk 'next'
|
||||
end
|
||||
end, { desc = 'Jump to next git [c]hange' })
|
||||
|
||||
map('n', '[c', function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal { '[c', bang = true }
|
||||
else
|
||||
gitsigns.nav_hunk 'prev'
|
||||
end
|
||||
end, { desc = 'Jump to previous git [c]hange' })
|
||||
|
||||
-- Actions
|
||||
-- visual mode
|
||||
map('v', '<leader>hs', function()
|
||||
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||
end, { desc = 'stage git hunk' })
|
||||
map('v', '<leader>hr', function()
|
||||
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||
end, { desc = 'reset git hunk' })
|
||||
-- normal mode
|
||||
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
|
||||
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
|
||||
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
|
||||
map('n', '<leader>hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' })
|
||||
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
|
||||
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
|
||||
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
|
||||
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
|
||||
map('n', '<leader>hD', function()
|
||||
gitsigns.diffthis '@'
|
||||
end, { desc = 'git [D]iff against last commit' })
|
||||
-- Toggles
|
||||
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
|
||||
map('n', '<leader>tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' })
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
10
.config/nvim/lua/plugins/lazydev.lua
Normal file
10
.config/nvim/lua/plugins/lazydev.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
'folke/lazydev.nvim',
|
||||
ft = 'lua',
|
||||
opts = {
|
||||
library = {
|
||||
|
||||
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||
},
|
||||
},
|
||||
}
|
||||
83
.config/nvim/lua/plugins/linter.lua
Normal file
83
.config/nvim/lua/plugins/linter.lua
Normal file
@@ -0,0 +1,83 @@
|
||||
return {
|
||||
'mfussenegger/nvim-lint',
|
||||
event = { 'BufReadPre', 'BufNewFile' },
|
||||
dependencies = {
|
||||
{ 'williamboman/mason.nvim', config = true },
|
||||
},
|
||||
config = function()
|
||||
local lint = require 'lint'
|
||||
-- Define a custom biome linter
|
||||
local mason_registry = require 'mason-registry'
|
||||
local biome_path = mason_registry.get_package('biome'):get_install_path() .. '/node_modules/@biomejs/biome/bin/biome'
|
||||
lint.linters.biome = {
|
||||
name = 'biome',
|
||||
cmd = biome_path, -- Command to run the linter
|
||||
args = { 'lint' }, -- Arguments for the command
|
||||
stdin = false, -- Send content via stdin
|
||||
append_fname = true, -- Automatically add the current file name to the command arguments
|
||||
stream = 'both', -- Result stream
|
||||
ignore_exitcode = true, -- Treat exit code != 1 as an error
|
||||
parser = function(output)
|
||||
local diagnostics = {}
|
||||
|
||||
-- The diagnostic details we need are spread in the first 3 lines of
|
||||
-- each error report. These variables are declared out of the FOR
|
||||
-- loop because we need to carry their values to parse multiple lines.
|
||||
local fetch_message = false
|
||||
local lnum, col, code, message
|
||||
|
||||
-- When a lnum:col:code line is detected fetch_message is set to true.
|
||||
-- While fetch_message is true we will search for the error message.
|
||||
-- When a error message is detected, we will create the diagnostic and
|
||||
-- set fetch_message to false to restart the process and get the next
|
||||
-- diagnostic.
|
||||
for _, line in ipairs(vim.fn.split(output, '\n')) do
|
||||
if fetch_message then
|
||||
_, _, message = string.find(line, '%s×(.+)')
|
||||
|
||||
if message then
|
||||
message = (message):gsub('^%s+×%s*', '')
|
||||
|
||||
table.insert(diagnostics, {
|
||||
source = 'biomejs',
|
||||
lnum = tonumber(lnum) - 1,
|
||||
col = tonumber(col),
|
||||
message = message,
|
||||
code = code,
|
||||
})
|
||||
|
||||
fetch_message = false
|
||||
end
|
||||
else
|
||||
_, _, lnum, col, code = string.find(line, '[^:]+:(%d+):(%d+)%s([%a%/]+)')
|
||||
|
||||
if lnum then
|
||||
fetch_message = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return diagnostics
|
||||
end, -- Custom parser for output
|
||||
}
|
||||
-- Set up linters by filetype
|
||||
lint.linters_by_ft = {
|
||||
vue = { 'biome' }, -- Lint Vue files using the overridden biome command
|
||||
javascript = { 'biome' },
|
||||
json = { 'biome' },
|
||||
typescript = { 'biome' },
|
||||
javascriptreact = { 'biome' },
|
||||
typescriptreact = { 'biome' },
|
||||
python = { 'ruff', 'mypy' },
|
||||
-- Add more filetypes as needed
|
||||
}
|
||||
|
||||
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
|
||||
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
|
||||
group = lint_augroup,
|
||||
callback = function()
|
||||
lint.try_lint()
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
156
.config/nvim/lua/plugins/lsp.lua
Normal file
156
.config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,156 @@
|
||||
return {
|
||||
|
||||
'neovim/nvim-lspconfig',
|
||||
dependencies = {
|
||||
|
||||
{ 'williamboman/mason.nvim', config = true },
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||
|
||||
{ 'j-hui/fidget.nvim', opts = {} },
|
||||
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
},
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
|
||||
callback = function(event)
|
||||
local map = function(keys, func, desc, mode)
|
||||
mode = mode or 'n'
|
||||
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
||||
end
|
||||
|
||||
map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
|
||||
map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||
map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||
map('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
|
||||
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
||||
map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||
map('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
|
||||
map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
|
||||
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
|
||||
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||
buffer = event.buf,
|
||||
group = highlight_augroup,
|
||||
callback = vim.lsp.buf.document_highlight,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
|
||||
buffer = event.buf,
|
||||
group = highlight_augroup,
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd('LspDetach', {
|
||||
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
|
||||
callback = function(event2)
|
||||
vim.lsp.buf.clear_references()
|
||||
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
||||
map('<leader>th', function()
|
||||
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
|
||||
end, '[T]oggle Inlay [H]ints')
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
|
||||
local mason_registry = require 'mason-registry'
|
||||
local vue_language_server_path = mason_registry.get_package('vue-language-server'):get_install_path() .. '/node_modules/@vue/language-server'
|
||||
local servers = {
|
||||
rust_analyzer = {
|
||||
filetypes = { 'rust' },
|
||||
capabilities = capabilities,
|
||||
},
|
||||
ts_ls = {
|
||||
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' },
|
||||
init_options = {
|
||||
plugins = {
|
||||
{
|
||||
name = '@vue/typescript-plugin',
|
||||
location = vue_language_server_path,
|
||||
languages = { 'javascript', 'typescript', 'vue' },
|
||||
configNamespace = 'javascript',
|
||||
enableForWorkspaceTypeScriptVersions = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
settings = {
|
||||
implicitProjectConfiguration = {
|
||||
checkJs = true,
|
||||
strictNullChecks = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
biome = {
|
||||
capabilities = capabilities,
|
||||
},
|
||||
phpactor = {
|
||||
filetypes = { 'php' },
|
||||
capabilities = capabilities,
|
||||
},
|
||||
volar = {
|
||||
filetypes = { 'vue' },
|
||||
capabilities = capabilities,
|
||||
init_options = {
|
||||
vue = {
|
||||
hybridMode = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
pyright = {
|
||||
settings = {
|
||||
pyright = {
|
||||
disableOrganizeImports = true, -- Using Ruff
|
||||
},
|
||||
python = {
|
||||
analysis = {
|
||||
ignore = { '*' }, -- Using Ruff
|
||||
typeCheckingMode = 'off', -- Using mypy
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
gopls = {
|
||||
capabilities = capabilities,
|
||||
},
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
require('mason').setup()
|
||||
|
||||
local ensure_installed = vim.tbl_keys(servers or {})
|
||||
vim.list_extend(ensure_installed, {
|
||||
'stylua',
|
||||
})
|
||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||
|
||||
require('mason-lspconfig').setup {
|
||||
handlers = {
|
||||
function(server_name)
|
||||
local server = servers[server_name] or {}
|
||||
|
||||
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||
require('lspconfig')[server_name].setup(server)
|
||||
end,
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
22
.config/nvim/lua/plugins/lualine.lua
Normal file
22
.config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
return {
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
opts = {
|
||||
options = {
|
||||
section_separators = { left = '', right = '' },
|
||||
component_separators = { left = '|', right = '|' },
|
||||
theme = vim.g.colors_name,
|
||||
refresh = {
|
||||
statusline = 1000,
|
||||
},
|
||||
},
|
||||
sections = {
|
||||
lualine_c = {
|
||||
{
|
||||
'filename',
|
||||
path = 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
1
.config/nvim/lua/plugins/luvit-meta.lua
Normal file
1
.config/nvim/lua/plugins/luvit-meta.lua
Normal file
@@ -0,0 +1 @@
|
||||
return { 'Bilal2453/luvit-meta', lazy = true }
|
||||
9
.config/nvim/lua/plugins/mason.lua
Normal file
9
.config/nvim/lua/plugins/mason.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
return {
|
||||
'williamboman/mason.nvim',
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
'typescript-language-server',
|
||||
'biome',
|
||||
},
|
||||
},
|
||||
}
|
||||
10
.config/nvim/lua/plugins/mini.lua
Normal file
10
.config/nvim/lua/plugins/mini.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
'echasnovski/mini.nvim',
|
||||
config = function()
|
||||
require('mini.ai').setup { n_lines = 500 }
|
||||
require('mini.surround').setup()
|
||||
require('mini.pairs').setup()
|
||||
require('mini.pick').setup()
|
||||
require('mini.icons').setup()
|
||||
end,
|
||||
}
|
||||
59
.config/nvim/lua/plugins/nvim-cmp.lua
Normal file
59
.config/nvim/lua/plugins/nvim-cmp.lua
Normal file
@@ -0,0 +1,59 @@
|
||||
return {
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
build = (function()
|
||||
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
||||
return
|
||||
end
|
||||
return 'make install_jsregexp'
|
||||
end)(),
|
||||
dependencies = {},
|
||||
},
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-path',
|
||||
},
|
||||
config = function()
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
luasnip.config.setup {}
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-y>'] = cmp.mapping.confirm { select = true },
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
['<C-l>'] = cmp.mapping(function()
|
||||
if luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<C-h>'] = cmp.mapping(function()
|
||||
if luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
sources = {
|
||||
{ name = 'lazydev', priority = 1001 },
|
||||
{ name = 'nvim_lsp', priority = 1000 },
|
||||
{ name = 'luasnip', priority = 750 },
|
||||
{ name = 'buffer', priority = 500 },
|
||||
{ name = 'path', priority = 250 },
|
||||
},
|
||||
}
|
||||
end,
|
||||
}
|
||||
14
.config/nvim/lua/plugins/nvim-treesitter.lua
Normal file
14
.config/nvim/lua/plugins/nvim-treesitter.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
return {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
build = ':TSUpdate',
|
||||
main = 'nvim-treesitter.configs',
|
||||
opts = {
|
||||
ensure_installed = { 'bash', 'c', 'diff', 'html', 'javascript', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc', 'vue' },
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = { 'ruby' },
|
||||
},
|
||||
indent = { enable = true, disable = { 'ruby' } },
|
||||
},
|
||||
}
|
||||
7
.config/nvim/lua/plugins/oil.lua
Normal file
7
.config/nvim/lua/plugins/oil.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
'stevearc/oil.nvim',
|
||||
---@module 'oil'
|
||||
---@type oil.SetupOpts
|
||||
opts = {},
|
||||
dependencies = { { 'echasnovski/mini.icons', opts = {} } },
|
||||
}
|
||||
7
.config/nvim/lua/plugins/snippets.lua
Normal file
7
.config/nvim/lua/plugins/snippets.lua
Normal file
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
'L3MON4D3/LuaSnip',
|
||||
-- follow latest release.
|
||||
version = 'v2.*', -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
||||
-- install jsregexp (optional!).
|
||||
build = 'make install_jsregexp',
|
||||
}
|
||||
63
.config/nvim/lua/plugins/telescope.lua
Normal file
63
.config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,63 @@
|
||||
return {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
event = 'VimEnter',
|
||||
branch = '0.1.x',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
{
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
|
||||
build = 'make',
|
||||
|
||||
cond = function()
|
||||
return vim.fn.executable 'make' == 1
|
||||
end,
|
||||
},
|
||||
{ 'nvim-telescope/telescope-ui-select.nvim' },
|
||||
|
||||
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
|
||||
},
|
||||
config = function()
|
||||
require('telescope').setup {
|
||||
|
||||
extensions = {
|
||||
['ui-select'] = {
|
||||
require('telescope.themes').get_dropdown(),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
pcall(require('telescope').load_extension, 'fzf')
|
||||
pcall(require('telescope').load_extension, 'ui-select')
|
||||
|
||||
local builtin = require 'telescope.builtin'
|
||||
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
|
||||
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
|
||||
vim.keymap.set('n', '<leader><leader>', builtin.find_files, { desc = '[S]earch [F]iles' })
|
||||
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
|
||||
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
|
||||
vim.keymap.set('n', '<leader>/', builtin.live_grep, { desc = '[/] Fuzzy Search the cwd' })
|
||||
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
|
||||
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
|
||||
vim.keymap.set('n', '<leader>b', builtin.buffers, { desc = 'Find existing [B]uffers' })
|
||||
|
||||
vim.keymap.set('n', '<leader>sg', function()
|
||||
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
||||
winblend = 10,
|
||||
previewer = false,
|
||||
})
|
||||
end, { desc = '[S]earch by [G]rep' })
|
||||
|
||||
vim.keymap.set('n', '<leader>s/', function()
|
||||
builtin.live_grep {
|
||||
grep_open_files = true,
|
||||
prompt_title = 'Live Grep in Open Files',
|
||||
}
|
||||
end, { desc = '[S]earch [/] in Open Files' })
|
||||
|
||||
vim.keymap.set('n', '<leader>sn', function()
|
||||
builtin.find_files { cwd = vim.fn.stdpath 'config' }
|
||||
end, { desc = '[S]earch [N]eovim files' })
|
||||
end,
|
||||
}
|
||||
10
.config/nvim/lua/plugins/theme.lua
Normal file
10
.config/nvim/lua/plugins/theme.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
'Mofiqul/dracula.nvim',
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
local dracula = require 'dracula'
|
||||
|
||||
vim.cmd.colorscheme 'dracula'
|
||||
end,
|
||||
}
|
||||
3
.config/nvim/lua/plugins/vim-sleuth.lua
Normal file
3
.config/nvim/lua/plugins/vim-sleuth.lua
Normal file
@@ -0,0 +1,3 @@
|
||||
return {
|
||||
'tpope/vim-sleuth',
|
||||
}
|
||||
51
.config/nvim/lua/plugins/which-key.lua
Normal file
51
.config/nvim/lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
return {
|
||||
'folke/which-key.nvim',
|
||||
event = 'VimEnter',
|
||||
opts = {
|
||||
icons = {
|
||||
|
||||
mappings = vim.g.have_nerd_font,
|
||||
|
||||
keys = vim.g.have_nerd_font and {} or {
|
||||
Up = '<Up> ',
|
||||
Down = '<Down> ',
|
||||
Left = '<Left> ',
|
||||
Right = '<Right> ',
|
||||
C = '<C-…> ',
|
||||
M = '<M-…> ',
|
||||
D = '<D-…> ',
|
||||
S = '<S-…> ',
|
||||
CR = '<CR> ',
|
||||
Esc = '<Esc> ',
|
||||
ScrollWheelDown = '<ScrollWheelDown> ',
|
||||
ScrollWheelUp = '<ScrollWheelUp> ',
|
||||
NL = '<NL> ',
|
||||
BS = '<BS> ',
|
||||
Space = '<Space> ',
|
||||
Tab = '<Tab> ',
|
||||
F1 = '<F1>',
|
||||
F2 = '<F2>',
|
||||
F3 = '<F3>',
|
||||
F4 = '<F4>',
|
||||
F5 = '<F5>',
|
||||
F6 = '<F6>',
|
||||
F7 = '<F7>',
|
||||
F8 = '<F8>',
|
||||
F9 = '<F9>',
|
||||
F10 = '<F10>',
|
||||
F11 = '<F11>',
|
||||
F12 = '<F12>',
|
||||
},
|
||||
},
|
||||
|
||||
spec = {
|
||||
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
|
||||
{ '<leader>d', group = '[D]ocument' },
|
||||
{ '<leader>r', group = '[R]ename' },
|
||||
{ '<leader>s', group = '[S]earch' },
|
||||
{ '<leader>w', group = '[W]orkspace' },
|
||||
{ '<leader>t', group = '[T]oggle' },
|
||||
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
|
||||
},
|
||||
},
|
||||
}
|
||||
46
.config/starship.toml
Normal file
46
.config/starship.toml
Normal file
@@ -0,0 +1,46 @@
|
||||
format = """
|
||||
$username\
|
||||
$hostname\
|
||||
$directory\
|
||||
$git_branch\
|
||||
$git_state\
|
||||
$git_status\
|
||||
$cmd_duration\
|
||||
$line_break\
|
||||
$python\
|
||||
$character"""
|
||||
|
||||
[directory]
|
||||
style = "blue"
|
||||
|
||||
[character]
|
||||
success_symbol = "[>](purple)"
|
||||
error_symbol = "[>](red)"
|
||||
vimcmd_symbol = "[<](green)"
|
||||
|
||||
[git_branch]
|
||||
format = "[$branch]($style)"
|
||||
style = "bright-black"
|
||||
|
||||
[git_status]
|
||||
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)"
|
||||
style = "cyan"
|
||||
conflicted = ""
|
||||
untracked = ""
|
||||
modified = ""
|
||||
staged = ""
|
||||
renamed = ""
|
||||
deleted = ""
|
||||
stashed = "≡"
|
||||
|
||||
[git_state]
|
||||
format = '\([$state( $progress_current/$progress_total)]($style)\) '
|
||||
style = "bright-black"
|
||||
|
||||
[cmd_duration]
|
||||
format = "[$duration]($style) "
|
||||
style = "yellow"
|
||||
|
||||
[python]
|
||||
format = "[$virtualenv]($style) "
|
||||
style = "bright-black"
|
||||
61
.config/tmux/tmux.conf
Normal file
61
.config/tmux/tmux.conf
Normal file
@@ -0,0 +1,61 @@
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||
set -g mouse on
|
||||
|
||||
unbind C-b
|
||||
set -g prefix C-Space
|
||||
bind C-Space send-prefix
|
||||
|
||||
# Vim style pane selection
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
bind l select-pane -R
|
||||
|
||||
# Start windows and panes at 1, not 0
|
||||
set -g base-index 1
|
||||
set -g pane-base-index 1
|
||||
set-window-option -g pane-base-index 1
|
||||
set-option -g renumber-windows on
|
||||
|
||||
# Use Alt-arrow keys without prefix key to switch panes
|
||||
bind -n M-Left select-pane -L
|
||||
bind -n M-Right select-pane -R
|
||||
bind -n M-Up select-pane -U
|
||||
bind -n M-Down select-pane -D
|
||||
|
||||
# Shift arrow to switch windows
|
||||
bind -n S-Left previous-window
|
||||
bind -n S-Right next-window
|
||||
|
||||
# Shift Alt vim keys to switch windows
|
||||
bind -n M-H previous-window
|
||||
bind -n M-L next-window
|
||||
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
set -g @plugin 'dracula/tmux'
|
||||
set -g @plugin 'christoomey/vim-tmux-navigator'
|
||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||
|
||||
# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, tmux-ram-usage, network, network-bandwidth, network-ping, ssh-session, attached-clients, network-vpn, weather, time, mpc, spotify-tui, playerctl, kubernetes-context, synchronize-panes
|
||||
set -g @dracula-plugins "ram-usage time"
|
||||
set -g @dracula-left-icon-padding 1
|
||||
set -g @dracula-show-left-icon "#[bold]#S"
|
||||
set -g @dracula-time-format "%F %R"
|
||||
|
||||
# set vi-mode
|
||||
set-window-option -g mode-keys vi
|
||||
# keybindings
|
||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
||||
|
||||
bind '"' split-window -v -c "#{pane_current_path}"
|
||||
bind % split-window -h -c "#{pane_current_path}"
|
||||
|
||||
set -g allow-passthrough all
|
||||
set -ga update-environment TERM
|
||||
set -ga update-environment TERM_PROGRAM
|
||||
|
||||
run -b '~/.tmux/plugins/tpm/tpm'
|
||||
12
.config/waybar/colors.css
Executable file
12
.config/waybar/colors.css
Executable file
@@ -0,0 +1,12 @@
|
||||
@define-color background-darker rgba(30, 31, 41, 230);
|
||||
@define-color background #282a36;
|
||||
@define-color selection #44475a;
|
||||
@define-color foreground #f8f8f2;
|
||||
@define-color comment #6272a4;
|
||||
@define-color cyan #8be9fd;
|
||||
@define-color green #50fa7b;
|
||||
@define-color orange #ffb86c;
|
||||
@define-color pink #ff79c6;
|
||||
@define-color purple #bd93f9;
|
||||
@define-color red #ff5555;
|
||||
@define-color yellow #f1fa8c;
|
||||
109
.config/waybar/config
Executable file
109
.config/waybar/config
Executable file
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"margin": "9 13 -10 18",
|
||||
"height": 24,
|
||||
"spacing": 4,
|
||||
"output": "eDP-1",
|
||||
"modules-left": [
|
||||
"hyprland/workspaces",
|
||||
|
||||
"hyprland/language",
|
||||
"tray"
|
||||
],
|
||||
"modules-center": [
|
||||
"clock"
|
||||
],
|
||||
"modules-right": [
|
||||
"network",
|
||||
"backlight",
|
||||
"pulseaudio",
|
||||
"cpu",
|
||||
"memory",
|
||||
"battery",
|
||||
],
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
},
|
||||
"hyprland/window": {
|
||||
"max-length": 128
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%a, %d %b, %H:%M}",
|
||||
"tooltip-format": "<tt><small>{calendar}</small></tt>"
|
||||
},
|
||||
"hyprland/language": {
|
||||
"format-en": "US",
|
||||
"format-eg": "AR",
|
||||
"on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"interval": 2,
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", "", ""],
|
||||
},
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"reverse-scrolling": 1,
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": [""],
|
||||
"min-length": 7,
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"spacing": 4
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
"reverse-scrolling": 1,
|
||||
"format": "{volume}% {icon}",
|
||||
"format-bluetooth": "{volume}% {icon}",
|
||||
"format-bluetooth-muted": " {icon}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol",
|
||||
"min-length": 7,
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 2,
|
||||
"format": "{usage}% ",
|
||||
"min-length": 7
|
||||
},
|
||||
"memory": {
|
||||
"interval": 2,
|
||||
"format": "{used:0.1f}G ",
|
||||
"max-length": 10,
|
||||
"min-length": 8
|
||||
},
|
||||
"network": {
|
||||
"interface": "wlp0s20f3",
|
||||
"format": "{ifname}",
|
||||
"format-wifi": "{bandwidthTotalBits} ",
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"format-disconnected": "", //An empty format will hide the module.
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"tooltip-format-wifi": "{essid}",
|
||||
"tooltip-format-ethernet": "{ifname} ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"max-length": 50,
|
||||
"min-length": 12,
|
||||
}
|
||||
|
||||
}
|
||||
242
.config/waybar/style.css
Executable file
242
.config/waybar/style.css
Executable file
@@ -0,0 +1,242 @@
|
||||
@import url("./colors.css");
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: FontAwesome, JetBrains Mono Nerd Font;
|
||||
font-size: 10pt;
|
||||
min-height: 16px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
color: @foreground;
|
||||
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 10px;
|
||||
background: @background;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-image: linear-gradient(0deg, @red, @background-darker);
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding: 4px;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
|
||||
#workspaces {
|
||||
margin-right: 8px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
transition: none;
|
||||
color: #7c818c;
|
||||
background: transparent;
|
||||
padding: 5px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
#workspaces button.persistent {
|
||||
color: #7c818c;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
#workspaces button:hover {
|
||||
transition: none;
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
border-radius: inherit;
|
||||
color: #383c4a;
|
||||
background-image: linear-gradient(0deg, @selection, @background-darker);
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background-image: linear-gradient(0deg, @purple, @selection);
|
||||
color: white;
|
||||
border-radius: inherit;
|
||||
}
|
||||
|
||||
#language {
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
border: 1px solid @purple;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
margin-right: 8px;
|
||||
padding-right: 16px;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#custom-pacman {
|
||||
padding-left: 16px;
|
||||
padding-right: 8px;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#custom-mail {
|
||||
margin-right: 8px;
|
||||
padding-right: 16px;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#submap {
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border: 1px solid @purple;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: @red;
|
||||
color: #2a5c45;
|
||||
}
|
||||
|
||||
#memory {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
margin-right: 8px;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#network {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
#battery {
|
||||
margin-right: 8px;
|
||||
padding: 0 8px;
|
||||
border-radius: 10px;
|
||||
transition: none;
|
||||
color: #ffffff;
|
||||
background: #383c4a;
|
||||
}
|
||||
|
||||
#battery.charging {
|
||||
color: @background;
|
||||
background-color: @green;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
background-color: #ffbe61;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#tray {
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid @purple;
|
||||
transition: none;
|
||||
color: @foreground;
|
||||
background: @background;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
5
.config/waybar/wittr.sh
Executable file
5
.config/waybar/wittr.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/sh
|
||||
req=$(curl -s wttr.in/CITY?format="%t|%l+(%c%f)+%h,+%C")
|
||||
bar=$(echo $req | awk -F "|" '{print $1}')
|
||||
tooltip=$(echo $req | awk -F "|" '{print $2}')
|
||||
echo "{\"text\":\"$bar\", \"tooltip\":\"$tooltip\"}"
|
||||
318
.config/yazi/flavors/dracula.yazi/flavor.toml
Normal file
318
.config/yazi/flavors/dracula.yazi/flavor.toml
Normal file
@@ -0,0 +1,318 @@
|
||||
# Theme Configuration
|
||||
[theme]
|
||||
# Theme metadata
|
||||
name = "Dracula Pro"
|
||||
author = "Enhanced Dracula Theme"
|
||||
version = "2.0.0"
|
||||
description = "A sophisticated dark theme based on Dracula color scheme"
|
||||
|
||||
# Color palette definition
|
||||
[theme.colors]
|
||||
background = "#282a36"
|
||||
current_line = "#44475a"
|
||||
foreground = "#f8f8f2"
|
||||
comment = "#6272a4"
|
||||
purple = "#bd93f9"
|
||||
green = "#50fa7b"
|
||||
orange = "#ffb86c"
|
||||
red = "#ff5555"
|
||||
pink = "#ff79c6"
|
||||
cyan = "#8be9fd"
|
||||
yellow = "#f1fa8c"
|
||||
|
||||
# Animation settings
|
||||
[theme.animation]
|
||||
frames_per_second = 60
|
||||
duration = 0.2
|
||||
easing = "easeInOutCubic"
|
||||
|
||||
# Manager
|
||||
[manager]
|
||||
# Enhanced preview options
|
||||
preview = { tab_size = 2, max_width = 100, max_height = 50, cache_size = 50, scroll_offset = 5 }
|
||||
preview_ratios = [1, 4, 4]
|
||||
preview_shown = true
|
||||
preview_service = { image = "ueberzug", video = "ffmpegthumbnailer", pdf = "pdftoppm" }
|
||||
|
||||
# Sophisticated hover effects
|
||||
hovered = { fg = "#f8f8f2", bg = "#44475a", italic = true }
|
||||
|
||||
# Enhanced markers with animations
|
||||
marker_copied = { fg = "#282a36", bg = "#50fa7b" }
|
||||
|
||||
# Dynamic loading indicators
|
||||
loading_indicator_frames = "⣾⣽⣻⢿⡿⣟⣯⣷"
|
||||
loading_style = { fg = "#bd93f9", bold = true }
|
||||
|
||||
# Enhanced folder icons
|
||||
folder_icons = { default = " ", open = " ", empty = " ", empty_open = " ", symlink = " ", symlink_open = " ", error = " " }
|
||||
|
||||
file_size_units = ["B", "KB", "MB", "GB", "TB", "PB", "EB"]
|
||||
|
||||
# Status
|
||||
[status]
|
||||
# Dynamic status bar
|
||||
refresh_rate = 1000
|
||||
separator_open = ""
|
||||
separator_close = ""
|
||||
|
||||
# Progress bar styling
|
||||
progress_bar_style = { fg = "#bd93f9", bg = "#44475a" }
|
||||
|
||||
# Enhanced modes
|
||||
mode_normal = { fg = "#282a36", bg = "#bd93f9", bold = true }
|
||||
|
||||
# Input
|
||||
[input]
|
||||
# Advanced input styling
|
||||
cursor_style = { fg = "#f8f8f2", bg = "#6272a4", blink = true, blink_interval = 500 }
|
||||
|
||||
# History features
|
||||
history_size = 100
|
||||
history_unique = true
|
||||
|
||||
# Completion styling
|
||||
completion_style = { selected_bg = "#44475a", selected_fg = "#f8f8f2", selected_bold = true, selected_italic = true }
|
||||
|
||||
# Notify
|
||||
[notify]
|
||||
# Enhanced notification system
|
||||
position = "top-right"
|
||||
timeout = 5000
|
||||
max_width = 400
|
||||
max_height = 200
|
||||
margin = 10
|
||||
padding = 8
|
||||
|
||||
[notify.levels]
|
||||
info = { fg = "#50fa7b", bg = "#282a36", icon = " ", timeout = 3000 }
|
||||
warn = { fg = "#f1fa8c", bg = "#282a36", icon = " ", timeout = 5000 }
|
||||
error = { fg = "#ff5555", bg = "#282a36", icon = " ", timeout = 7000 }
|
||||
debug = { fg = "#6272a4", bg = "#282a36", icon = " ", timeout = 2000 }
|
||||
|
||||
[notify.animation]
|
||||
enabled = true
|
||||
duration = 200
|
||||
slide_in = "right"
|
||||
fade_out = true
|
||||
|
||||
[notify.border]
|
||||
fg = "#bd93f9"
|
||||
bg = "#282a36"
|
||||
style = "rounded"
|
||||
|
||||
[notify.overlay]
|
||||
bg = "#282a36"
|
||||
blend = 0.8
|
||||
|
||||
# File-specific styles
|
||||
[filetype]
|
||||
rules = [
|
||||
# Development Environment
|
||||
{ name = ".env*", fg = "#50fa7b", bold = true, prefix = " " },
|
||||
{ name = ".git*", fg = "#ff5555", italic = true, prefix = " " },
|
||||
{ name = ".docker*", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
|
||||
# Configuration Files
|
||||
{ name = "*.{json,yaml,yml,toml,xml}", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
{ name = "*.{ini,conf,cfg}", fg = "#6272a4", italic = true, prefix = " " },
|
||||
|
||||
# Web Development
|
||||
{ name = "*.{html,htm}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
{ name = "*.{css,scss,sass,less}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
{ name = "*.{jsx,tsx}", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
{ name = "*.{js,ts}", fg = "#f1fa8c", italic = true, prefix = " " },
|
||||
{ name = "*.vue", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
{ name = "*.svelte", fg = "#ff5555", italic = true, prefix = " " },
|
||||
|
||||
# Backend Development
|
||||
{ name = "*.{py,pyc}", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
{ name = "*.{rb,erb}", fg = "#ff5555", italic = true, prefix = " " },
|
||||
{ name = "*.{php,phar}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
{ name = "*.{java,jar}", fg = "#ff5555", italic = true, prefix = " " },
|
||||
{ name = "*.go", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
{ name = "*.rs", fg = "#ff7043", italic = true, prefix = " " },
|
||||
|
||||
# System Programming
|
||||
{ name = "*.{c,h}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
{ name = "*.{cpp,hpp}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
{ name = "*.{asm,s}", fg = "#ff5555", italic = true, prefix = " " },
|
||||
|
||||
# Build Systems
|
||||
{ name = "*Makefile", fg = "#ff79c6", bold = true, prefix = " " },
|
||||
{ name = "*CMakeLists.txt", fg = "#ff79c6", bold = true, prefix = " " },
|
||||
{ name = "*.gradle", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
|
||||
# Package Managers
|
||||
{ name = "package.json", fg = "#ff5555", bold = true, prefix = " " },
|
||||
{ name = "package-lock.json", fg = "#ff5555", italic = true, prefix = " " },
|
||||
{ name = "composer.json", fg = "#ff79c6", bold = true, prefix = " " },
|
||||
{ name = "Cargo.toml", fg = "#ff7043", bold = true, prefix = " " },
|
||||
|
||||
# Documentation
|
||||
{ name = "*.{md,mdx}", fg = "#f1fa8c", italic = true, prefix = " " },
|
||||
{ name = "*.rst", fg = "#f1fa8c", italic = true, prefix = " " },
|
||||
{ name = "*.pdf", fg = "#ff5555", bold = true, prefix = " " },
|
||||
{ name = "LICENSE*", fg = "#50fa7b", bold = true, prefix = " " },
|
||||
{ name = "README*", fg = "#50fa7b", bold = true, prefix = " " },
|
||||
|
||||
# Media with size categories
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 1MB", fg = "#8be9fd", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 10MB", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "> 10MB", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Video files with duration indicator
|
||||
{ name = "*.{mp4,mkv}", duration = "< 10:00", fg = "#bd93f9", prefix = " " },
|
||||
{ name = "*.{mp4,mkv}", duration = "< 1:00:00", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{mp4,mkv}", duration = "> 1:00:00", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Archives with compression ratio
|
||||
{ name = "*.{zip,gz,tar}", ratio = "< 0.5", fg = "#50fa7b", prefix = " " },
|
||||
{ name = "*.{zip,gz,tar}", ratio = "< 0.7", fg = "#f1fa8c", prefix = " " },
|
||||
{ name = "*.{zip,gz,tar}", ratio = "> 0.7", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Special Directories
|
||||
{ name = "node_modules", fg = "#6272a4", prefix = " " },
|
||||
{ name = ".git", fg = "#ff5555", prefix = " " },
|
||||
{ name = ".github", fg = "#bd93f9", prefix = " " },
|
||||
{ name = "dist", fg = "#6272a4", prefix = " " },
|
||||
{ name = "build", fg = "#6272a4", prefix = " " },
|
||||
|
||||
# Additional file types
|
||||
# Audio files
|
||||
{ name = "*.{mp3,flac,m4a,wav,ogg}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
|
||||
# Font files
|
||||
{ name = "*.{ttf,otf,woff,woff2}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
|
||||
# Database files
|
||||
{ name = "*.{sql,sqlite,db}", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
|
||||
# Shell scripts
|
||||
{ name = "*.{sh,bash,zsh,fish}", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
|
||||
# Virtual environments
|
||||
{ name = "venv", fg = "#6272a4", prefix = " " },
|
||||
{ name = ".env", fg = "#50fa7b", prefix = " " },
|
||||
|
||||
# Container files
|
||||
{ name = "*.dockerfile", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
{ name = "docker-compose*.{yml,yaml}", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
|
||||
# Security files
|
||||
{ name = "*.{pem,crt,ca,key}", fg = "#ff5555", bold = true, prefix = " " },
|
||||
|
||||
# Improved size-based rules for media
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 100KB", fg = "#8be9fd", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 1MB", fg = "#bd93f9", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 10MB", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "> 10MB", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Default Fallbacks
|
||||
{ name = "*", fg = "#f8f8f2" },
|
||||
{ name = "*/", fg = "#bd93f9", bold = true, prefix = " " },
|
||||
|
||||
# Additional Development Files
|
||||
{ name = "*.{proto}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
{ name = "*.{graphql,gql}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
{ name = "*.{tf,tfvars}", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
|
||||
# Container and Cloud
|
||||
{ name = "*.{yaml,yml}", pattern = "^k8s|^kubernetes", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
{ name = "*.{yaml,yml}", pattern = "^helm", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
|
||||
# Data Files
|
||||
{ name = "*.{csv,tsv}", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
{ name = "*.{parquet,avro}", fg = "#bd93f9", italic = true, prefix = " " },
|
||||
|
||||
# Size-based rules for documents
|
||||
{ name = "*.{pdf,epub,mobi}", size = "< 1MB", fg = "#8be9fd", prefix = " " },
|
||||
{ name = "*.{pdf,epub,mobi}", size = "< 10MB", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{pdf,epub,mobi}", size = "> 10MB", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Additional Development Files
|
||||
{ name = "*.{sol}", fg = "#bd93f9", italic = true, prefix = " " }, # Solidity files
|
||||
{ name = "*.{ex,exs}", fg = "#bd93f9", italic = true, prefix = " " }, # Elixir files
|
||||
{ name = "*.{kt,kts}", fg = "#ff79c6", italic = true, prefix = " " }, # Kotlin files
|
||||
{ name = "*.{swift}", fg = "#ff5555", italic = true, prefix = " " }, # Swift files
|
||||
|
||||
# Config Files
|
||||
{ name = "*.{nginx,nginx.conf}", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
{ name = "*{webpack}*", fg = "#8be9fd", bold = true, prefix = " " },
|
||||
|
||||
# ML/Data Science
|
||||
{ name = "*.{ipynb}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
{ name = "*.{pkl,pickle}", fg = "#50fa7b", italic = true, prefix = " " },
|
||||
|
||||
# 3D/Graphics
|
||||
{ name = "*.{blend}", fg = "#ff79c6", italic = true, prefix = " " },
|
||||
{ name = "*.{fbx,obj,stl}", fg = "#8be9fd", italic = true, prefix = " " },
|
||||
|
||||
# More granular size-based rules for media files
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 50KB", fg = "#8be9fd", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 500KB", fg = "#bd93f9", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 2MB", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "< 20MB", fg = "#ff7043", prefix = " " },
|
||||
{ name = "*.{jpg,jpeg,png,gif}", size = "> 20MB", fg = "#ff5555", prefix = " " },
|
||||
|
||||
# Size categories for video files
|
||||
{ name = "*.{mp4,mkv,avi,mov}", size = "< 100MB", fg = "#8be9fd", prefix = " " },
|
||||
{ name = "*.{mp4,mkv,avi,mov}", size = "< 1GB", fg = "#ffb86c", prefix = " " },
|
||||
{ name = "*.{mp4,mkv,avi,mov}", size = "> 1GB", fg = "#ff5555", prefix = " " },
|
||||
]
|
||||
|
||||
# Keybindings
|
||||
[keys]
|
||||
# Visual key hints
|
||||
show_hints = true
|
||||
hint_style = { fg = "#6272a4", bg = "#44475a", italic = true }
|
||||
|
||||
# Command palette
|
||||
command_palette = { bg = "#282a36", fg = "#f8f8f2", selected_bg = "#44475a", selected_fg = "#f8f8f2", border = "#bd93f9" }
|
||||
|
||||
# Preview
|
||||
[preview]
|
||||
tab_size = 2
|
||||
max_width = 120
|
||||
max_height = 60
|
||||
cache_dir = "/tmp/yazi"
|
||||
|
||||
[preview.image]
|
||||
enabled = true
|
||||
format = "rgb"
|
||||
max_width = 1920
|
||||
max_height = 1080
|
||||
quality = 90
|
||||
animate = true
|
||||
cache = true
|
||||
|
||||
[preview.preview_service]
|
||||
image = "ueberzug"
|
||||
video = "ffmpegthumbnailer"
|
||||
pdf = "pdftoppm"
|
||||
epub = "epub-thumbnailer"
|
||||
office = "libreoffice --headless --convert-to pdf"
|
||||
markdown = "glow"
|
||||
|
||||
[preview.syntax]
|
||||
theme = "Dracula"
|
||||
background = "#282a36"
|
||||
|
||||
# Opener
|
||||
[opener]
|
||||
edit = [
|
||||
{ exec = 'nvim "$@"', desc = "Edit with Neovim" },
|
||||
{ exec = 'code "$@"', desc = "Edit with VS Code" }
|
||||
]
|
||||
open = [
|
||||
{ exec = 'xdg-open "$@"', desc = "Open with system default" },
|
||||
{ exec = 'firefox "$@"', desc = "Open in Firefox" }
|
||||
]
|
||||
reveal = [
|
||||
{ exec = 'nautilus "$@"', desc = "Reveal in file manager" }
|
||||
]
|
||||
|
||||
# Enhanced preview features
|
||||
max_preview_size = 10485760 # 10MB limit for preview
|
||||
scroll_offset = 5
|
||||
scroll_smooth = true
|
||||
5
.config/yazi/package.toml
Normal file
5
.config/yazi/package.toml
Normal file
@@ -0,0 +1,5 @@
|
||||
[plugin]
|
||||
deps = [{ use = "yazi-rs/plugins:git", rev = "7afba3a" }, { use = "yazi-rs/plugins:diff", rev = "7afba3a" }]
|
||||
|
||||
[flavor]
|
||||
deps = []
|
||||
4
.config/yazi/theme.toml
Normal file
4
.config/yazi/theme.toml
Normal file
@@ -0,0 +1,4 @@
|
||||
[flavor]
|
||||
dark = "dracula"
|
||||
use = "dracula"
|
||||
|
||||
2
.config/yazi/yazi.toml
Normal file
2
.config/yazi/yazi.toml
Normal file
@@ -0,0 +1,2 @@
|
||||
[manager]
|
||||
ratio = [2,3,3]
|
||||
21
.config/zed/keymap.json
Normal file
21
.config/zed/keymap.json
Normal file
@@ -0,0 +1,21 @@
|
||||
// Zed keymap
|
||||
//
|
||||
// For information on binding keys, see the Zed
|
||||
// documentation: https://zed.dev/docs/key-bindings
|
||||
//
|
||||
// To see the default key bindings run `zed: open default keymap`
|
||||
// from the command palette.
|
||||
[
|
||||
{
|
||||
"context": "Workspace",
|
||||
"bindings": {
|
||||
"space space": "file_finder::Toggle"
|
||||
}
|
||||
},
|
||||
{
|
||||
"context": "Editor",
|
||||
"bindings": {
|
||||
// "j k": ["workspace::SendKeystrokes", "escape"]
|
||||
}
|
||||
}
|
||||
]
|
||||
18
.config/zed/settings.json
Normal file
18
.config/zed/settings.json
Normal file
@@ -0,0 +1,18 @@
|
||||
// Zed settings
|
||||
//
|
||||
// For information on how to configure Zed, see the Zed
|
||||
// documentation: https://zed.dev/docs/configuring-zed
|
||||
//
|
||||
// To see all of Zed's default settings without changing your
|
||||
// custom settings, run `zed: open default settings` from the
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
"vim_mode": true,
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 14,
|
||||
"theme": {
|
||||
"mode": "system",
|
||||
"light": "Dracula",
|
||||
"dark": "One Dark"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user