summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bashrc19
-rw-r--r--.coloritrc33
-rw-r--r--.config/feh/keys54
-rw-r--r--.config/gedit/accels3
-rw-r--r--.config/go/telemetry/local/asm@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.countbin0 -> 16384 bytes
-rw-r--r--.config/go/telemetry/local/cgo@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.countbin0 -> 16384 bytes
-rw-r--r--.config/go/telemetry/local/compile@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.countbin0 -> 16384 bytes
-rw-r--r--.config/go/telemetry/local/go@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.countbin0 -> 16384 bytes
-rw-r--r--.config/go/telemetry/local/link@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.countbin0 -> 16384 bytes
-rw-r--r--.config/go/telemetry/local/upload.token0
-rw-r--r--.config/go/telemetry/local/weekends1
-rw-r--r--.config/go/telemetry/mode1
-rw-r--r--.config/mpv/mpv.conf6
-rw-r--r--.config/ncmpcpp/error.log0
-rw-r--r--.config/neofetch/config.conf864
-rwxr-xr-x.config/nvim/init.lua10
-rwxr-xr-x.config/nvim/lua/configs.lua396
-rwxr-xr-x.config/nvim/lua/core/autocmds.lua98
-rwxr-xr-x.config/nvim/lua/core/keymaps.lua120
-rwxr-xr-x.config/nvim/lua/core/options.lua37
-rwxr-xr-x.config/nvim/lua/plugins.lua208
-rwxr-xr-x.config/nvim/syntax/codelis.vim47
-rwxr-xr-x.config/nvim/syntax/codev.vim66
-rw-r--r--.config/pulse/cookiebin0 -> 256 bytes
l---------.config/systemd/user/default.target.wants/emacs.service1
l---------.config/systemd/user/default.target.wants/mpd.service1
l---------.config/systemd/user/default.target.wants/syncthing.service1
-rw-r--r--.config/zathura/zathurarc112
-rw-r--r--.emacs.d/init.el322
-rw-r--r--.gitignore3
-rw-r--r--.gnupg/gpg-agent.conf1
-rw-r--r--.gnupg/gpg.conf71
-rw-r--r--.hushlogin0
-rw-r--r--.profile27
-rw-r--r--.selected_editor2
-rw-r--r--.stow-local-ignore2
-rw-r--r--.taskrc27
-rw-r--r--.zshrc70
38 files changed, 2603 insertions, 0 deletions
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..33dc068
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,19 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+
+# Note: PS1 and umask are already set in /etc/profile. You should not
+# need this unless you want different defaults for root.
+# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
+# umask 022
+
+# You may uncomment the following lines if you want `ls' to be colorized:
+export LS_OPTIONS='--color=auto'
+eval "$(dircolors)"
+alias ls='ls $LS_OPTIONS'
+alias ll='ls $LS_OPTIONS -l'
+alias l='ls $LS_OPTIONS -lA'
+# alias dict = 'dict --color=auto'
+#
+# Some more alias to avoid making mistakes:
+# alias rm='rm -i'
+# alias cp='cp -i'
+# alias mv='mv -i'
diff --git a/.coloritrc b/.coloritrc
new file mode 100644
index 0000000..942fd30
--- /dev/null
+++ b/.coloritrc
@@ -0,0 +1,33 @@
+dnl /etc/dictd/colorit.conf vim:ft=m4
+dnl
+dnl Sample configuration file for colorit(1) program
+dnl
+divert(-1)
+dnl
+dnl Define some useful color variables
+dnl
+define(`black', `0')
+define(`red', `1')
+define(`green', `2')
+define(`brown', `3')
+define(`blue', `4')
+define(`magenta', `5')
+define(`cyan', `6')
+define(`white', `7')
+dnl
+dnl Mark macro arguments: regexp foreground-color [background-color]
+dnl
+define(`mark', ``mark "$1"'' `ifelse(`$#', `3', ``"\033[3$2;4$3m"'', ``"\033[3$2m"'')' `"\033[m"')
+dnl
+divert
+mark(`^From.*$',magenta)
+mark(`^ [^ ]+',green)
+mark(`^ *Note:',red)
+mark(`{[^{]+}',green)
+mark(`^ *\[[^\[]+\]', cyan)
+mark(`^[ ]*(adj|n|v|adv)? *[0-9]+[\.:]',cyan)
+mark(`^ *\([a-z]+\)',cyan)
+mark(`(Syn|Ant|syn|ant):', blue)
+mark(`Synonym:', blue)
+mark(` (t|i|a|adj|adv|n|v)\. ',cyan)
+mark(` (t|i|a|adj|adv|n|v)\.$',cyan)
diff --git a/.config/feh/keys b/.config/feh/keys
new file mode 100644
index 0000000..8df056b
--- /dev/null
+++ b/.config/feh/keys
@@ -0,0 +1,54 @@
+# Basic vim navigation
+next_img l Right space
+prev_img h Left BackSpace
+
+# Vertical movement (useful for zoomed images)
+scroll_up k Up
+scroll_down j Down
+
+# Jump to first/last image (vim-style)
+jump_first g
+jump_last G
+
+# Zoom controls (vim-inspired)
+zoom_in plus equal
+zoom_out minus
+zoom_fit 0
+zoom_fill F
+
+# Quit (vim-style)
+quit q Escape
+
+# Toggle fullscreen
+toggle_fullscreen f
+
+# Rotate images
+orient_1 greater
+orient_3 less
+
+# File operations
+delete Delete d
+save_image s
+
+# Menu toggle
+toggle_menu m
+
+# Info toggle
+toggle_info i
+
+# Toggle filename display
+toggle_filename n
+
+# Random/shuffle mode
+toggle_pause p
+
+# Additional vim-style navigation
+# Jump forward/backward by 10 images
+jump_fwd w
+jump_back b
+
+# Reload current image
+reload r R
+
+# Toggle auto-zoom
+toggle_auto_zoom a
diff --git a/.config/gedit/accels b/.config/gedit/accels
new file mode 100644
index 0000000..9c78589
--- /dev/null
+++ b/.config/gedit/accels
@@ -0,0 +1,3 @@
+; org.gnome.gedit GtkAccelMap rc-file -*- scheme -*-
+; this file is an automated accelerator map dump
+;
diff --git a/.config/go/telemetry/local/asm@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count b/.config/go/telemetry/local/asm@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
new file mode 100644
index 0000000..da59569
--- /dev/null
+++ b/.config/go/telemetry/local/asm@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
Binary files differ
diff --git a/.config/go/telemetry/local/cgo@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count b/.config/go/telemetry/local/cgo@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
new file mode 100644
index 0000000..97f747c
--- /dev/null
+++ b/.config/go/telemetry/local/cgo@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
Binary files differ
diff --git a/.config/go/telemetry/local/compile@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count b/.config/go/telemetry/local/compile@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
new file mode 100644
index 0000000..c914480
--- /dev/null
+++ b/.config/go/telemetry/local/compile@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
Binary files differ
diff --git a/.config/go/telemetry/local/go@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count b/.config/go/telemetry/local/go@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
new file mode 100644
index 0000000..8d4a9d9
--- /dev/null
+++ b/.config/go/telemetry/local/go@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
Binary files differ
diff --git a/.config/go/telemetry/local/link@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count b/.config/go/telemetry/local/link@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
new file mode 100644
index 0000000..9257bf9
--- /dev/null
+++ b/.config/go/telemetry/local/link@go1.24.2-go1.24.2-linux-amd64-2025-04-28.v1.count
Binary files differ
diff --git a/.config/go/telemetry/local/upload.token b/.config/go/telemetry/local/upload.token
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/go/telemetry/local/upload.token
diff --git a/.config/go/telemetry/local/weekends b/.config/go/telemetry/local/weekends
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/.config/go/telemetry/local/weekends
@@ -0,0 +1 @@
+6
diff --git a/.config/go/telemetry/mode b/.config/go/telemetry/mode
new file mode 100644
index 0000000..d7b8182
--- /dev/null
+++ b/.config/go/telemetry/mode
@@ -0,0 +1 @@
+off 2025-05-02 \ No newline at end of file
diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf
new file mode 100644
index 0000000..33993b9
--- /dev/null
+++ b/.config/mpv/mpv.conf
@@ -0,0 +1,6 @@
+cache=no
+demuxer-readahead-secs=0
+hwdec=auto-safe
+hwdec-codecs=all
+vo=gpu
+gpu-context=wayland
diff --git a/.config/ncmpcpp/error.log b/.config/ncmpcpp/error.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/ncmpcpp/error.log
diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf
new file mode 100644
index 0000000..cdba4c6
--- /dev/null
+++ b/.config/neofetch/config.conf
@@ -0,0 +1,864 @@
+# See this wiki page for more info:
+# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
+print_info() {
+ info title
+ info underline
+
+ info "OS" distro
+ info "Host" model
+ info "Kernel" kernel
+ info "Uptime" uptime
+ info "Packages" packages
+ info "Shell" shell
+ info "Resolution" resolution
+ info "DE" de
+ info "WM" wm
+ info "WM Theme" wm_theme
+ info "Theme" theme
+ info "Icons" icons
+ info "Terminal" term
+ info "Terminal Font" term_font
+ info "CPU" cpu
+ info "GPU" gpu
+ info "Memory" memory
+
+ # info "GPU Driver" gpu_driver # Linux/macOS only
+ # info "CPU Usage" cpu_usage
+ # info "Disk" disk
+ # info "Battery" battery
+ # info "Font" font
+ # info "Song" song
+ # [[ "$player" ]] && prin "Music Player" "$player"
+ # info "Local IP" local_ip
+ # info "Public IP" public_ip
+ # info "Users" users
+ # info "Locale" locale # This only works on glibc systems.
+
+ info cols
+}
+
+# Title
+
+
+# Hide/Show Fully qualified domain name.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --title_fqdn
+title_fqdn="off"
+
+
+# Kernel
+
+
+# Shorten the output of the kernel function.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --kernel_shorthand
+# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
+#
+# Example:
+# on: '4.8.9-1-ARCH'
+# off: 'Linux 4.8.9-1-ARCH'
+kernel_shorthand="on"
+
+
+# Distro
+
+
+# Shorten the output of the distro function
+#
+# Default: 'off'
+# Values: 'on', 'tiny', 'off'
+# Flag: --distro_shorthand
+# Supports: Everything except Windows and Haiku
+distro_shorthand="off"
+
+# Show/Hide OS Architecture.
+# Show 'x86_64', 'x86' and etc in 'Distro:' output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --os_arch
+#
+# Example:
+# on: 'Arch Linux x86_64'
+# off: 'Arch Linux'
+os_arch="on"
+
+
+# Uptime
+
+
+# Shorten the output of the uptime function
+#
+# Default: 'on'
+# Values: 'on', 'tiny', 'off'
+# Flag: --uptime_shorthand
+#
+# Example:
+# on: '2 days, 10 hours, 3 mins'
+# tiny: '2d 10h 3m'
+# off: '2 days, 10 hours, 3 minutes'
+uptime_shorthand="on"
+
+
+# Memory
+
+
+# Show memory pecentage in output.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --memory_percent
+#
+# Example:
+# on: '1801MiB / 7881MiB (22%)'
+# off: '1801MiB / 7881MiB'
+memory_percent="off"
+
+# Change memory output unit.
+#
+# Default: 'mib'
+# Values: 'kib', 'mib', 'gib'
+# Flag: --memory_unit
+#
+# Example:
+# kib '1020928KiB / 7117824KiB'
+# mib '1042MiB / 6951MiB'
+# gib: ' 0.98GiB / 6.79GiB'
+memory_unit="mib"
+
+
+# Packages
+
+
+# Show/Hide Package Manager names.
+#
+# Default: 'tiny'
+# Values: 'on', 'tiny' 'off'
+# Flag: --package_managers
+#
+# Example:
+# on: '998 (pacman), 8 (flatpak), 4 (snap)'
+# tiny: '908 (pacman, flatpak, snap)'
+# off: '908'
+package_managers="on"
+
+
+# Shell
+
+
+# Show the path to $SHELL
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --shell_path
+#
+# Example:
+# on: '/bin/bash'
+# off: 'bash'
+shell_path="off"
+
+# Show $SHELL version
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --shell_version
+#
+# Example:
+# on: 'bash 4.4.5'
+# off: 'bash'
+shell_version="on"
+
+
+# CPU
+
+
+# CPU speed type
+#
+# Default: 'bios_limit'
+# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
+# Flag: --speed_type
+# Supports: Linux with 'cpufreq'
+# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
+speed_type="bios_limit"
+
+# CPU speed shorthand
+#
+# Default: 'off'
+# Values: 'on', 'off'.
+# Flag: --speed_shorthand
+# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
+#
+# Example:
+# on: 'i7-6500U (4) @ 3.1GHz'
+# off: 'i7-6500U (4) @ 3.100GHz'
+speed_shorthand="off"
+
+# Enable/Disable CPU brand in output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_brand
+#
+# Example:
+# on: 'Intel i7-6500U'
+# off: 'i7-6500U (4)'
+cpu_brand="on"
+
+# CPU Speed
+# Hide/Show CPU speed.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_speed
+#
+# Example:
+# on: 'Intel i7-6500U (4) @ 3.1GHz'
+# off: 'Intel i7-6500U (4)'
+cpu_speed="on"
+
+# CPU Cores
+# Display CPU cores in output
+#
+# Default: 'logical'
+# Values: 'logical', 'physical', 'off'
+# Flag: --cpu_cores
+# Support: 'physical' doesn't work on BSD.
+#
+# Example:
+# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
+# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
+# off: 'Intel i7-6500U @ 3.1GHz'
+cpu_cores="logical"
+
+# CPU Temperature
+# Hide/Show CPU temperature.
+# Note the temperature is added to the regular CPU function.
+#
+# Default: 'off'
+# Values: 'C', 'F', 'off'
+# Flag: --cpu_temp
+# Supports: Linux, BSD
+# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
+# coretemp kernel module. This only supports newer Intel processors.
+#
+# Example:
+# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
+# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
+# off: 'Intel i7-6500U (4) @ 3.1GHz'
+cpu_temp="off"
+
+
+# GPU
+
+
+# Enable/Disable GPU Brand
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gpu_brand
+#
+# Example:
+# on: 'AMD HD 7950'
+# off: 'HD 7950'
+gpu_brand="on"
+
+# Which GPU to display
+#
+# Default: 'all'
+# Values: 'all', 'dedicated', 'integrated'
+# Flag: --gpu_type
+# Supports: Linux
+#
+# Example:
+# all:
+# GPU1: AMD HD 7950
+# GPU2: Intel Integrated Graphics
+#
+# dedicated:
+# GPU1: AMD HD 7950
+#
+# integrated:
+# GPU1: Intel Integrated Graphics
+gpu_type="all"
+
+
+# Resolution
+
+
+# Display refresh rate next to each monitor
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --refresh_rate
+# Supports: Doesn't work on Windows.
+#
+# Example:
+# on: '1920x1080 @ 60Hz'
+# off: '1920x1080'
+refresh_rate="off"
+
+
+# Gtk Theme / Icons / Font
+
+
+# Shorten output of GTK Theme / Icons / Font
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --gtk_shorthand
+#
+# Example:
+# on: 'Numix, Adwaita'
+# off: 'Numix [GTK2], Adwaita [GTK3]'
+gtk_shorthand="off"
+
+
+# Enable/Disable gtk2 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk2
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Adwaita [GTK3]'
+gtk2="on"
+
+# Enable/Disable gtk3 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk3
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Numix [GTK2]'
+gtk3="on"
+
+
+# IP Address
+
+
+# Website to ping for the public IP
+#
+# Default: 'http://ident.me'
+# Values: 'url'
+# Flag: --ip_host
+public_ip_host="http://ident.me"
+
+# Public IP timeout.
+#
+# Default: '2'
+# Values: 'int'
+# Flag: --ip_timeout
+public_ip_timeout=2
+
+
+# Desktop Environment
+
+
+# Show Desktop Environment version
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --de_version
+de_version="on"
+
+
+# Disk
+
+
+# Which disks to display.
+# The values can be any /dev/sdXX, mount point or directory.
+# NOTE: By default we only show the disk info for '/'.
+#
+# Default: '/'
+# Values: '/', '/dev/sdXX', '/path/to/drive'.
+# Flag: --disk_show
+#
+# Example:
+# disk_show=('/' '/dev/sdb1'):
+# 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 823G / 893G (93%)'
+#
+# disk_show=('/'):
+# 'Disk (/): 74G / 118G (66%)'
+#
+disk_show=('/')
+
+# Disk subtitle.
+# What to append to the Disk subtitle.
+#
+# Default: 'mount'
+# Values: 'mount', 'name', 'dir', 'none'
+# Flag: --disk_subtitle
+#
+# Example:
+# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
+# 'Disk (/dev/sdb2): 74G / 118G (66%)'
+#
+# mount: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 74G / 118G (66%)'
+#
+# dir: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (Local Disk): 74G / 118G (66%)'
+# 'Disk (Videos): 74G / 118G (66%)'
+#
+# none: 'Disk: 74G / 118G (66%)'
+# 'Disk: 74G / 118G (66%)'
+# 'Disk: 74G / 118G (66%)'
+disk_subtitle="mount"
+
+# Disk percent.
+# Show/Hide disk percent.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --disk_percent
+#
+# Example:
+# on: 'Disk (/): 74G / 118G (66%)'
+# off: 'Disk (/): 74G / 118G'
+disk_percent="on"
+
+
+# Song
+
+
+# Manually specify a music player.
+#
+# Default: 'auto'
+# Values: 'auto', 'player-name'
+# Flag: --music_player
+#
+# Available values for 'player-name':
+#
+# amarok
+# audacious
+# banshee
+# bluemindo
+# clementine
+# cmus
+# deadbeef
+# deepin-music
+# dragon
+# elisa
+# exaile
+# gnome-music
+# gmusicbrowser
+# gogglesmm
+# guayadeque
+# io.elementary.music
+# iTunes
+# juk
+# lollypop
+# mocp
+# mopidy
+# mpd
+# muine
+# netease-cloud-music
+# olivia
+# playerctl
+# pogo
+# pragha
+# qmmp
+# quodlibet
+# rhythmbox
+# sayonara
+# smplayer
+# spotify
+# strawberry
+# tauonmb
+# tomahawk
+# vlc
+# xmms2d
+# xnoise
+# yarock
+music_player="auto"
+
+# Format to display song information.
+#
+# Default: '%artist% - %album% - %title%'
+# Values: '%artist%', '%album%', '%title%'
+# Flag: --song_format
+#
+# Example:
+# default: 'Song: Jet - Get Born - Sgt Major'
+song_format="%artist% - %album% - %title%"
+
+# Print the Artist, Album and Title on separate lines
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --song_shorthand
+#
+# Example:
+# on: 'Artist: The Fratellis'
+# 'Album: Costello Music'
+# 'Song: Chelsea Dagger'
+#
+# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
+song_shorthand="off"
+
+# 'mpc' arguments (specify a host, password etc).
+#
+# Default: ''
+# Example: mpc_args=(-h HOST -P PASSWORD)
+mpc_args=()
+
+
+# Text Colors
+
+
+# Text Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --colors
+#
+# Each number represents a different part of the text in
+# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
+#
+# Example:
+# colors=(distro) - Text is colored based on Distro colors.
+# colors=(4 6 1 8 8 6) - Text is colored in the order above.
+colors=(distro)
+
+
+# Text Options
+
+
+# Toggle bold text
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bold
+bold="on"
+
+# Enable/Disable Underline
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --underline
+underline_enabled="on"
+
+# Underline character
+#
+# Default: '-'
+# Values: 'string'
+# Flag: --underline_char
+underline_char="-"
+
+
+# Info Separator
+# Replace the default separator with the specified string.
+#
+# Default: ':'
+# Flag: --separator
+#
+# Example:
+# separator="->": 'Shell-> bash'
+# separator=" =": 'WM = dwm'
+separator=":"
+
+
+# Color Blocks
+
+
+# Color block range
+# The range of colors to print.
+#
+# Default: '0', '15'
+# Values: 'num'
+# Flag: --block_range
+#
+# Example:
+#
+# Display colors 0-7 in the blocks. (8 colors)
+# neofetch --block_range 0 7
+#
+# Display colors 0-15 in the blocks. (16 colors)
+# neofetch --block_range 0 15
+block_range=(0 15)
+
+# Toggle color blocks
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --color_blocks
+color_blocks="on"
+
+# Color block width in spaces
+#
+# Default: '3'
+# Values: 'num'
+# Flag: --block_width
+block_width=3
+
+# Color block height in lines
+#
+# Default: '1'
+# Values: 'num'
+# Flag: --block_height
+block_height=1
+
+# Color Alignment
+#
+# Default: 'auto'
+# Values: 'auto', 'num'
+# Flag: --col_offset
+#
+# Number specifies how far from the left side of the terminal (in spaces) to
+# begin printing the columns, in case you want to e.g. center them under your
+# text.
+# Example:
+# col_offset="auto" - Default behavior of neofetch
+# col_offset=7 - Leave 7 spaces then print the colors
+col_offset="auto"
+
+# Progress Bars
+
+
+# Bar characters
+#
+# Default: '-', '='
+# Values: 'string', 'string'
+# Flag: --bar_char
+#
+# Example:
+# neofetch --bar_char 'elapsed' 'total'
+# neofetch --bar_char '-' '='
+bar_char_elapsed="-"
+bar_char_total="="
+
+# Toggle Bar border
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bar_border
+bar_border="on"
+
+# Progress bar length in spaces
+# Number of chars long to make the progress bars.
+#
+# Default: '15'
+# Values: 'num'
+# Flag: --bar_length
+bar_length=15
+
+# Progress bar colors
+# When set to distro, uses your distro's logo colors.
+#
+# Default: 'distro', 'distro'
+# Values: 'distro', 'num'
+# Flag: --bar_colors
+#
+# Example:
+# neofetch --bar_colors 3 4
+# neofetch --bar_colors distro 5
+bar_color_elapsed="distro"
+bar_color_total="distro"
+
+
+# Info display
+# Display a bar with the info.
+#
+# Default: 'off'
+# Values: 'bar', 'infobar', 'barinfo', 'off'
+# Flags: --cpu_display
+# --memory_display
+# --battery_display
+# --disk_display
+#
+# Example:
+# bar: '[---=======]'
+# infobar: 'info [---=======]'
+# barinfo: '[---=======] info'
+# off: 'info'
+cpu_display="off"
+memory_display="off"
+battery_display="off"
+disk_display="off"
+
+
+# Backend Settings
+
+
+# Image backend.
+#
+# Default: 'ascii'
+# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
+# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
+# Flag: --backend
+image_backend="ascii"
+
+# Image Source
+#
+# Which image or ascii file to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
+# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
+# Flag: --source
+#
+# NOTE: 'auto' will pick the best image source for whatever image backend is used.
+# In ascii mode, distro ascii art will be used and in an image mode, your
+# wallpaper will be used.
+image_source="auto"
+
+
+# Ascii Options
+
+
+# Ascii distro
+# Which distro's ascii art to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'distro_name'
+# Flag: --ascii_distro
+# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
+# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
+# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
+# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
+# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
+# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
+# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
+# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
+# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
+# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
+# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
+# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
+# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
+# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
+# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
+# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
+# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
+# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
+# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
+# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
+# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
+# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
+# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
+# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
+# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
+# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
+# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
+# and IRIX have ascii logos
+# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
+# Use '{distro name}_old' to use the old logos.
+# NOTE: Ubuntu has flavor variants.
+# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
+# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
+# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
+# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
+# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
+# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
+# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
+# postmarketOS, and Void have a smaller logo variant.
+# Use '{distro name}_small' to use the small variants.
+ascii_distro="auto"
+
+# Ascii Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --ascii_colors
+#
+# Example:
+# ascii_colors=(distro) - Ascii is colored based on Distro colors.
+# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
+ascii_colors=(distro)
+
+# Bold ascii logo
+# Whether or not to bold the ascii logo.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --ascii_bold
+ascii_bold="on"
+
+
+# Image Options
+
+
+# Image loop
+# Setting this to on will make neofetch redraw the image constantly until
+# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --loop
+image_loop="off"
+
+# Thumbnail directory
+#
+# Default: '~/.cache/thumbnails/neofetch'
+# Values: 'dir'
+thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
+
+# Crop mode
+#
+# Default: 'normal'
+# Values: 'normal', 'fit', 'fill'
+# Flag: --crop_mode
+#
+# See this wiki page to learn about the fit and fill options.
+# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
+crop_mode="normal"
+
+# Crop offset
+# Note: Only affects 'normal' crop mode.
+#
+# Default: 'center'
+# Values: 'northwest', 'north', 'northeast', 'west', 'center'
+# 'east', 'southwest', 'south', 'southeast'
+# Flag: --crop_offset
+crop_offset="center"
+
+# Image size
+# The image is half the terminal width by default.
+#
+# Default: 'auto'
+# Values: 'auto', '00px', '00%', 'none'
+# Flags: --image_size
+# --size
+image_size="auto"
+
+# Gap between image and text
+#
+# Default: '3'
+# Values: 'num', '-num'
+# Flag: --gap
+gap=3
+
+# Image offsets
+# Only works with the w3m backend.
+#
+# Default: '0'
+# Values: 'px'
+# Flags: --xoffset
+# --yoffset
+yoffset=0
+xoffset=0
+
+# Image background color
+# Only works with the w3m backend.
+#
+# Default: ''
+# Values: 'color', 'blue'
+# Flag: --bg_color
+background_color=
+
+
+# Misc Options
+
+# Stdout mode
+# Turn off all colors and disables image backend (ASCII/Image).
+# Useful for piping into another command.
+# Default: 'off'
+# Values: 'on', 'off'
+stdout="off"
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100755
index 0000000..7c8b9e2
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,10 @@
+-- Load core settings
+require('core.options')
+require('core.keymaps')
+require('core.autocmds')
+
+-- Load plugins
+require('plugins')
+
+-- Load plugin configurations
+require('configs')
diff --git a/.config/nvim/lua/configs.lua b/.config/nvim/lua/configs.lua
new file mode 100755
index 0000000..cb8c952
--- /dev/null
+++ b/.config/nvim/lua/configs.lua
@@ -0,0 +1,396 @@
+-- Plugin configurations
+-- All plugin-specific settings are configured here
+
+--------------------------------
+-- TELESCOPE
+--------------------------------
+local function setup_telescope()
+ local actions = require("telescope.actions")
+
+ -- Function to open selected file in external program
+ local function open_in_external_program(prompt_bufnr)
+ local entry = require('telescope.actions.state').get_selected_entry()
+ local file_path = entry.path or entry.filename
+ if file_path then
+ os.execute(string.format('start "" "%s"', file_path))
+ else
+ print("No file selected")
+ end
+ actions.close(prompt_bufnr)
+ end
+
+ require('telescope').setup({
+ defaults = {
+ layout_config = {
+ vertical = { width = 0.5 }
+ },
+ mappings = {
+ n = {
+ ["q"] = actions.close,
+ ["o"] = open_in_external_program,
+ },
+ i = {
+ ["<C-c>"] = actions.close,
+ ["<C-n>"] = actions.cycle_history_next,
+ ["<C-p>"] = actions.cycle_history_prev,
+ ["<C-j>"] = actions.move_selection_next,
+ ["<C-k>"] = actions.move_selection_previous,
+ ["<C-o>"] = open_in_external_program,
+ }
+ },
+ },
+ pickers = {
+ live_grep = {
+ file_ignore_patterns = { 'node_modules', '.git', '.venv' },
+ additional_args = function(_)
+ return { "--hidden" }
+ end
+ },
+ find_files = {
+ file_ignore_patterns = { 'node_modules', '.git', '.venv' },
+ hidden = true
+ }
+ }
+ })
+end
+
+--------------------------------
+-- HARPOON
+--------------------------------
+local function setup_harpoon()
+ local harpoon = require("harpoon")
+ -- Initialize harpoon
+ harpoon:setup({
+ settings = {
+ save_on_toggle = true,
+ sync_on_ui_close = true,
+ }
+ })
+end
+
+--------------------------------
+-- OIL
+--------------------------------
+local function setup_oil()
+ require("oil").setup({
+ -- Default file explorer settings
+ default_file_explorer = true,
+ -- Columns to display
+ columns = { "icon" },
+ -- Buffer options
+ buf_options = {
+ buflisted = false,
+ bufhidden = "hide",
+ },
+ -- Window options
+ win_options = {
+ wrap = false,
+ signcolumn = "no",
+ cursorcolumn = false,
+ foldcolumn = "0",
+ spell = false,
+ list = false,
+ conceallevel = 3,
+ concealcursor = "nvic",
+ },
+ -- File operations
+ delete_to_trash = true,
+ skip_confirm_for_simple_edits = false,
+ prompt_save_on_select_new_entry = true,
+ cleanup_delay_ms = 2000,
+ -- UI behavior
+ constrain_cursor = "editable",
+ watch_for_changes = false,
+ -- Custom keymaps
+ keymaps = {
+ ["g?"] = "actions.show_help",
+ ["<CR>"] = "actions.select",
+ ["<C-S>"] = { "actions.select", opts = { vertical = true } },
+ ["<C-H>"] = { "actions.select", opts = { horizontal = true } },
+ ["<C-p>"] = "actions.preview",
+ ["<C-c>"] = "actions.close",
+ ["<C-l>"] = "actions.refresh",
+ ["-"] = "actions.parent",
+ ["_"] = "actions.open_cwd",
+ ["`"] = "actions.cd",
+ ["~"] = { "actions.cd", opts = { scope = "tab" } },
+ ["gs"] = "actions.change_sort",
+ ["<C-o>"] = "actions.open_external",
+ ["g."] = "actions.toggle_hidden",
+ ["g\\"] = "actions.toggle_trash",
+ ['yp'] = {
+ desc = 'Copy filepath to system clipboard',
+ callback = function ()
+ require('oil.actions').copy_entry_path.callback()
+ vim.fn.setreg("+", vim.fn.getreg(vim.v.register))
+ end,
+ },
+ },
+ -- Disable default keymaps
+ use_default_keymaps = false,
+ -- View options
+ view_options = {
+ show_hidden = false,
+ natural_order = true,
+ case_insensitive = false,
+ sort = {
+ { "type", "asc" },
+ { "name", "asc" },
+ },
+ },
+ -- Preview window settings
+ preview = {
+ max_width = 0.9,
+ min_width = { 40, 0.4 },
+ max_height = 0.9,
+ min_height = { 5, 0.1 },
+ border = "rounded",
+ win_options = { winblend = 0 },
+ },
+ -- Floating window settings
+ float = {
+ padding = 2,
+ max_width = 0,
+ max_height = 0,
+ border = "rounded",
+ win_options = { winblend = 0 },
+ },
+ })
+end
+
+--------------------------------
+-- TOGGLETERM
+--------------------------------
+local function setup_toggleterm()
+ require("toggleterm").setup({
+ -- Shell to use in the terminal
+ shell = "pwsh.exe -NoLogo",
+ -- Display options
+ direction = "float",
+ float_opts = {
+ border = "rounded",
+ },
+ -- Window appearance
+ winbar = {
+ enabled = false
+ },
+ -- Behavior
+ start_in_insert = true,
+ close_on_exit = true,
+ -- Integration with tmux
+ persist_size = true,
+ persist_mode = true,
+ })
+end
+
+--------------------------------
+-- TREESITTER
+--------------------------------
+local function setup_treesitter()
+ require('nvim-treesitter.configs').setup({
+ ensure_installed = { "c", "lua", "vim", "vimdoc", "cpp", "python" },
+ sync_install = false,
+ auto_install = false,
+ highlight = { enable = true },
+ indent = { enable = true },
+ })
+end
+
+--------------------------------
+-- COMMENTS
+--------------------------------
+local function setup_comments()
+ require('Comment').setup({
+ padding = true,
+ sticky = true,
+ ignore = nil,
+ toggler = {
+ line = '<leader>/',
+ block = 'gbc',
+ },
+ opleader = {
+ line = '<leader>/',
+ block = 'gb',
+ }
+ })
+end
+
+--------------------------------
+-- LSP Configuration
+--------------------------------
+local path = require("mason-core.path")
+local function setup_lsp()
+ -- Configure Mason LSP installer/manager
+ require('mason').setup({
+ ---@since 1.0.0
+ -- The directory in which to install packages.
+ install_root_dir = path.concat { vim.fn.stdpath "data", "mason" },
+
+ ---@since 1.0.0
+ -- Where Mason should put its bin location in your PATH. Can be one of:
+ -- - "prepend" (default, Mason's bin location is put first in PATH)
+ -- - "append" (Mason's bin location is put at the end of PATH)
+ -- - "skip" (doesn't modify PATH)
+ ---@type '"prepend"' | '"append"' | '"skip"'
+ PATH = "prepend",
+
+ ---@since 1.0.0
+ -- Controls to which degree logs are written to the log file. It's useful to set this to vim.log.levels.DEBUG when
+ -- debugging issues with package installations.
+ log_level = vim.log.levels.INFO,
+
+ ---@since 1.0.0
+ -- Limit for the maximum amount of packages to be installed at the same time. Once this limit is reached, any further
+ -- packages that are requested to be installed will be put in a queue.
+ max_concurrent_installers = 4,
+
+ ---@since 1.0.0
+ -- [Advanced setting]
+ -- The registries to source packages from. Accepts multiple entries. Should a package with the same name exist in
+ -- multiple registries, the registry listed first will be used.
+ registries = {
+ "github:mason-org/mason-registry",
+ },
+
+ ---@since 1.0.0
+ -- The provider implementations to use for resolving supplementary package metadata (e.g., all available versions).
+ -- Accepts multiple entries, where later entries will be used as fallback should prior providers fail.
+ -- Builtin providers are:
+ -- - mason.providers.registry-api - uses the https://api.mason-registry.dev API
+ -- - mason.providers.client - uses only client-side tooling to resolve metadata
+ providers = {
+ "mason.providers.registry-api",
+ "mason.providers.client",
+ },
+
+ github = {
+ ---@since 1.0.0
+ -- The template URL to use when downloading assets from GitHub.
+ -- The placeholders are the following (in order):
+ -- 1. The repository (e.g. "rust-lang/rust-analyzer")
+ -- 2. The release version (e.g. "v0.3.0")
+ -- 3. The asset name (e.g. "rust-analyzer-v0.3.0-x86_64-unknown-linux-gnu.tar.gz")
+ download_url_template = "https://github.com/%s/releases/download/%s/%s",
+ },
+
+ pip = {
+ ---@since 1.0.0
+ -- Whether to upgrade pip to the latest version in the virtual environment before installing packages.
+ upgrade_pip = false,
+
+ ---@since 1.0.0
+ -- These args will be added to `pip install` calls. Note that setting extra args might impact intended behavior
+ -- and is not recommended.
+ --
+ -- Example: { "--proxy", "https://proxyserver" }
+ install_args = {},
+ },
+
+ ui = {
+ ---@since 1.0.0
+ -- Whether to automatically check for new versions when opening the :Mason window.
+ check_outdated_packages_on_open = true,
+
+ ---@since 1.0.0
+ -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|.
+ -- Defaults to `:h 'winborder'` if nil.
+ border = nil,
+
+ ---@since 1.11.0
+ -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent.
+ backdrop = 60,
+
+ ---@since 1.0.0
+ -- Width of the window. Accepts:
+ -- - Integer greater than 1 for fixed width.
+ -- - Float in the range of 0-1 for a percentage of screen width.
+ width = 0.8,
+
+ ---@since 1.0.0
+ -- Height of the window. Accepts:
+ -- - Integer greater than 1 for fixed height.
+ -- - Float in the range of 0-1 for a percentage of screen height.
+ height = 0.9,
+
+ icons = {
+ ---@since 1.0.0
+ -- The list icon to use for installed packages.
+ package_installed = "◍",
+ ---@since 1.0.0
+ -- The list icon to use for packages that are installing, or queued for installation.
+ package_pending = "◍",
+ ---@since 1.0.0
+ -- The list icon to use for packages that are not installed.
+ package_uninstalled = "◍",
+ },
+
+ keymaps = {
+ ---@since 1.0.0
+ -- Keymap to expand a package
+ toggle_package_expand = "<CR>",
+ ---@since 1.0.0
+ -- Keymap to install the package under the current cursor position
+ install_package = "i",
+ ---@since 1.0.0
+ -- Keymap to reinstall/update the package under the current cursor position
+ update_package = "u",
+ ---@since 1.0.0
+ -- Keymap to check for new version for the package under the current cursor position
+ check_package_version = "c",
+ ---@since 1.0.0
+ -- Keymap to update all installed packages
+ update_all_packages = "U",
+ ---@since 1.0.0
+ -- Keymap to check which installed packages are outdated
+ check_outdated_packages = "C",
+ ---@since 1.0.0
+ -- Keymap to uninstall a package
+ uninstall_package = "X",
+ ---@since 1.0.0
+ -- Keymap to cancel a package installation
+ cancel_installation = "<C-c>",
+ ---@since 1.0.0
+ -- Keymap to apply language filter
+ apply_language_filter = "<C-f>",
+ ---@since 1.1.0
+ -- Keymap to toggle viewing package installation log
+ toggle_package_install_log = "<CR>",
+ ---@since 1.8.0
+ -- Keymap to toggle the help view
+ toggle_help = "g?",
+ },
+ },
+ })
+ require("mason-lspconfig").setup ({
+ ensure_installed = {
+ 'lua_ls', -- Lua
+ 'clangd', -- C/C++
+ 'pyright', -- Python
+ 'marksman', -- Markdown
+ },
+ automatic_enable = true,
+
+ })
+
+ -- Configure diagnostics appearance
+ vim.diagnostic.config({
+ virtual_lines=true,
+ signs = true,
+ underline = true,
+ update_in_insert = false,
+ severity_sort = true,
+ })
+end
+
+--------------------------------
+-- INITIALIZE ALL CONFIGS
+--------------------------------
+
+-- Set up all plugin configurations
+setup_telescope()
+setup_harpoon()
+setup_oil()
+setup_toggleterm()
+setup_treesitter()
+setup_comments()
+setup_lsp()
diff --git a/.config/nvim/lua/core/autocmds.lua b/.config/nvim/lua/core/autocmds.lua
new file mode 100755
index 0000000..898aeb7
--- /dev/null
+++ b/.config/nvim/lua/core/autocmds.lua
@@ -0,0 +1,98 @@
+-- Core autocommands
+-- Centralized place for all autocommands
+
+--------------------------------
+-- FILE DETECTION & RELOADING
+--------------------------------
+
+-- Auto-reload files when changed externally
+local file_change_detect = vim.api.nvim_create_augroup("FileChangeDetect", { clear = true })
+vim.api.nvim_create_autocmd({"FocusGained", "BufEnter", "BufWinEnter", "WinEnter", "CursorHold", "CursorHoldI"}, {
+ group = file_change_detect,
+ callback = function()
+ vim.cmd("checktime")
+ end,
+})
+
+vim.api.nvim_create_autocmd("FileChangedShellPost", {
+ group = file_change_detect,
+ callback = function()
+ vim.notify("File changed on disk. Buffer reloaded.", vim.log.levels.WARN)
+ vim.cmd("checktime")
+ end,
+})
+
+--------------------------------
+-- TERMINAL BEHAVIOR
+--------------------------------
+
+-- Terminal settings and keymaps
+local terminal_settings = vim.api.nvim_create_augroup("TerminalSettings", { clear = true })
+vim.api.nvim_create_autocmd({"TermOpen", "BufEnter"}, {
+ group = terminal_settings,
+ callback = function()
+ if vim.opt.buftype:get() == "terminal" then
+ vim.cmd("startinsert")
+
+ -- Terminal keymaps
+ local opts = { noremap = true, silent = true, buffer = true }
+ vim.keymap.set("t", "<C-d>", [[<C-\><C-n><cmd>ToggleTerm<CR>]], opts)
+ vim.keymap.set("t", "<C-q>", [[<C-\><C-n><cmd>ToggleTerm<CR>]], opts)
+ vim.keymap.set("t", "jk", [[<C-\><C-n>]], opts)
+ vim.keymap.set("t", "<C-h>", [[<C-\><C-n><C-W>h]], opts)
+ vim.keymap.set("t", "<C-j>", [[<C-\><C-n><C-W>j]], opts)
+ vim.keymap.set("t", "<C-k>", [[<C-\><C-n><C-W>k]], opts)
+ vim.keymap.set("t", "<C-l>", [[<C-\><C-n><C-W>l]], opts)
+ end
+ end,
+})
+
+--------------------------------
+-- CUSTOM FILETYPES
+--------------------------------
+
+-- Custom filetype detection
+local filetype_group = vim.api.nvim_create_augroup("CustomFileTypes", { clear = true })
+
+-- Set up .seq files to use codev syntax
+vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
+ group = filetype_group,
+ pattern = "*.seq",
+ callback = function()
+ vim.bo.filetype = "seq"
+ vim.bo.syntax = "codev"
+ vim.bo.commentstring = "!%s"
+ end,
+})
+
+-- Set up .lis files to use codelis syntax
+vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, {
+ group = filetype_group,
+ pattern = "*.lis",
+ callback = function()
+ vim.bo.filetype = "lis"
+ vim.bo.syntax = "codelis"
+ end,
+})
+
+--------------------------------
+-- CUSTOM COMMANDS
+--------------------------------
+
+-- Python docstring helper
+vim.api.nvim_create_user_command("PythonDocstring", function()
+ local docstring = [["""
+
+# Information:
+
+# Arguments:
+
+# Returns:
+
+"""]]
+ -- Insert the docstring at the cursor position
+ local line = vim.api.nvim_win_get_cursor(0)[1]
+ vim.api.nvim_buf_set_lines(0, line-1, line-1, false, vim.split(docstring, "\n"))
+ -- Position cursor at the right spot
+ vim.api.nvim_win_set_cursor(0, {line+1, 0})
+end, {})
diff --git a/.config/nvim/lua/core/keymaps.lua b/.config/nvim/lua/core/keymaps.lua
new file mode 100755
index 0000000..a65133d
--- /dev/null
+++ b/.config/nvim/lua/core/keymaps.lua
@@ -0,0 +1,120 @@
+-- Core keymaps
+-- General key mappings not tied to specific plugins
+
+-- Leader key
+vim.g.mapleader = " "
+
+----------------
+-- NORMAL MODE
+----------------
+
+-- File operations
+vim.keymap.set("n", "<leader>w", "<cmd>w<cr>", { desc = "Save file" })
+vim.keymap.set("n", "<leader>q", "<cmd>q<cr>", { desc = "Quit" })
+vim.keymap.set("n", "<leader>Q", "<cmd>q!<cr>", { desc = "Force quit" })
+vim.keymap.set("n", "<C-c>", "<cmd>bd<cr>", { desc = "Close buffer" })
+
+-- Quick buffer navigation
+vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Move to left window" })
+vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Move to bottom window" })
+vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Move to top window" })
+vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Move to right window" })
+
+-- Quick formatting
+vim.keymap.set("n", "<leader>S", "ggVG=", { desc = "Format entire file" })
+
+-- Quick line operations
+vim.keymap.set("n", "<leader>o", "o<Esc>", { desc = "New line below" })
+vim.keymap.set("n", "<leader>O", "O<Esc>", { desc = "New line above" })
+vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and maintain cursor" })
+
+-- Better vertical navigation
+vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Half page down and center" })
+vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Half page up and center" })
+vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result and center" })
+vim.keymap.set("n", "N", "Nzzzv", { desc = "Prev search result and center" })
+
+-- Clipboard operations
+vim.keymap.set({"n", "v"}, "<leader>y", [["+y]], { desc = "Copy to system clipboard" })
+vim.keymap.set("n", "<leader>Y", [["+Y]], { desc = "Copy line to system clipboard" })
+vim.keymap.set({"n", "v"}, "<leader>d", [["_d]], { desc = "Delete to void register" })
+vim.keymap.set("x", "<leader>p", [["_dP]], { desc = "Paste over selection" })
+
+-- Quickfix navigation
+vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", { desc = "Next quickfix item" })
+vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", { desc = "Previous quickfix item" })
+
+-- Undo remap
+vim.keymap.set("n", "U", "<C-r>", { desc = "Redo" })
+
+-- Search and replace current word
+vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
+ { desc = "Replace current word" })
+
+-- Terminal keymaps
+vim.keymap.set("n", "<leader>t", "<cmd>ToggleTerm<cr>", { desc = "Toggle terminal" })
+vim.keymap.set({"n", "i"},"<C-r><C-k>", "<cmd>ToggleTermSendCurrentLine<cr>j", { desc = "Send line to terminal" })
+vim.keymap.set("n","<C-r><C-j>", "ggVG:'<,'>ToggleTermSendVisualLines<cr>", { desc = "Send file to terminal" })
+vim.keymap.set("i","<C-r><C-j>", "<Esc>ggVG:'<,'>ToggleTermSendVisualLines<cr><Esc>i", { desc = "Send file to terminal" })
+vim.keymap.set("v","<C-r><C-k>", ":ToggleTermSendVisualLines<cr><Esc>", { desc = "Send selection to terminal" })
+
+-- File browser
+vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory with Oil" })
+
+-- LSP
+-- Jump to definition with gd
+vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {noremap=true, silent=true})
+-- Optional: Add other useful LSP keybindings
+vim.keymap.set('n', 'gr', vim.lsp.buf.references, {noremap=true, silent=true})
+vim.keymap.set('n', 'K', vim.lsp.buf.hover, {noremap=true, silent=true})
+vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {noremap=true, silent=true})
+vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, {noremap=true, silent=true})
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, { noremap=true, silent=true, desc = "Show diagnostics" })
+
+-- Python docstring helper
+vim.keymap.set("n", "<leader>dc", ":PythonDocstring<CR>", {
+ silent = true,
+ desc = "Insert Python docstring template"
+})
+
+----------------
+-- INSERT MODE
+----------------
+
+vim.keymap.set("i", "jk", "<Esc>", { desc = "Exit insert mode" })
+vim.keymap.set("i", "<leader>e", "<Space>e", { desc = "Insert e after leader" })
+vim.keymap.set("i", "<C-c>", "<cmd>bd<cr>", { desc = "Close buffer" })
+
+----------------
+-- VISUAL MODE
+----------------
+
+-- Move selected lines
+vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
+vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
+
+-- Telescope keymaps (grouped for related functionality)
+vim.keymap.set("n", "<leader>ff", "<cmd>Telescope find_files theme=dropdown<cr>", { desc = "Find files" })
+vim.keymap.set("n", "<leader>fm", "<cmd>Telescope find_files cwd=D:/Optics/CODEV/Macros theme=dropdown<cr>", { desc = "Find macro files" })
+vim.keymap.set("n", "<leader>fc", "<cmd>Telescope find_files cwd=C:/CODEV202403/macro theme=dropdown<cr>", { desc = "Find CODEV macro files" })
+vim.keymap.set("n", "<leader>fl", "<cmd>Telescope find_files cwd=C:/CODEV202403/lens theme=dropdown<cr>", { desc = "Find lens files" })
+vim.keymap.set("n", "<leader>gg", "<cmd>Telescope live_grep theme=dropdown<cr>", { desc = "Live grep" })
+vim.keymap.set("n", "<leader>gm", "<cmd>Telescope live_grep cwd=D:/Optics/CODEV/Macros theme=dropdown<cr>", { desc = "Grep in macro files" })
+vim.keymap.set("n", "<leader>gc", "<cmd>Telescope live_grep cwd=C:/CODEV202403/macro theme=dropdown<cr>", { desc = "Grep in CODEV macro files" })
+vim.keymap.set("n", "<leader>gl", "<cmd>Telescope live_grep cwd=C:/CODEV202403/lens theme=dropdown<cr>", { desc = "Grep in lens files" })
+vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers theme=dropdown<cr>", { desc = "List buffers" })
+
+-- Harpoon keymaps
+vim.keymap.set("n", "<leader>a", function() require("harpoon"):list():add() end, { desc = "Add file to harpoon" })
+vim.keymap.set("n", "<C-e>", function() require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) end, { desc = "Toggle harpoon menu" })
+vim.keymap.set("n", "<leader>j", function() require("harpoon"):list():select(1) end, { desc = "Harpoon file 1" })
+vim.keymap.set("n", "<leader>k", function() require("harpoon"):list():select(2) end, { desc = "Harpoon file 2" })
+vim.keymap.set("n", "<leader>l", function() require("harpoon"):list():select(3) end, { desc = "Harpoon file 3" })
+vim.keymap.set("n", "<leader>;", function() require("harpoon"):list():select(4) end, { desc = "Harpoon file 4" })
+vim.keymap.set("n", "<leader>N", function() require("harpoon"):list():prev() end, { desc = "Previous harpoon file" })
+vim.keymap.set("n", "<leader>P", function() require("harpoon"):list():next() end, { desc = "Next harpoon file" })
+
+-- Other tool keymaps
+vim.keymap.set("n", "<leader>G", vim.cmd.Git, { desc = "Open Git status" })
+vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle, { desc = "Toggle undo tree" })
+vim.keymap.set("n", "[c", function() require("treesitter-context").go_to_context() end, { desc = "Go to context", silent = true })
diff --git a/.config/nvim/lua/core/options.lua b/.config/nvim/lua/core/options.lua
new file mode 100755
index 0000000..4270949
--- /dev/null
+++ b/.config/nvim/lua/core/options.lua
@@ -0,0 +1,37 @@
+-- Core Neovim settings
+-- General options and settings
+
+-- UI settings
+vim.opt.termguicolors = true -- True color support
+vim.opt.number = true -- Show line numbers
+vim.opt.relativenumber = true -- Show relative line numbers
+vim.opt.scrolloff = 999 -- Keep cursor centered
+vim.opt.splitbelow = true -- Horizontal splits below
+vim.opt.splitright = true -- Vertical splits to the right
+vim.opt.wrap = true -- Line wrapping
+vim.opt.virtualedit = "block" -- Allow cursor beyond text in block mode
+
+-- Search settings
+vim.opt.hlsearch = false -- Don't highlight search results
+vim.opt.incsearch = true -- Incremental search
+vim.opt.ignorecase = true -- Case insensitive search
+
+-- Tab settings
+vim.opt.tabstop = 4 -- Tab width
+vim.opt.softtabstop = 4 -- Soft tab width
+vim.opt.shiftwidth = 4 -- Indentation width
+vim.opt.expandtab = true -- Use spaces instead of tabs
+
+-- File management
+vim.opt.swapfile = false -- No swap files
+vim.opt.backup = false -- No backup files
+vim.opt.undodir = os.getenv("HOME").."/.vim/undodir" -- Undo directory
+vim.opt.undofile = true -- Persistent undo history
+
+-- Performance and usability
+vim.opt.updatetime = 50 -- Faster update time
+vim.opt.inccommand = "split" -- Live substitution preview
+
+-- Status line
+vim.cmd([[set laststatus=2]]) -- Always show statusline
+vim.cmd([[set shortmess=I]]) -- Don't show intro message
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
new file mode 100755
index 0000000..630c934
--- /dev/null
+++ b/.config/nvim/lua/plugins.lua
@@ -0,0 +1,208 @@
+-- Plugin declarations
+-- All plugins used in Neovim are defined here
+
+
+-- Bootstrap lazy.nvim
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.loop.fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable",
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+-- Initialize lazy.nvim with plugins
+require("lazy").setup({
+ ------------------------------------------------------------
+ -- UI
+ ------------------------------------------------------------
+
+ -- Colorscheme
+ {
+ "folke/tokyonight.nvim",
+ lazy = false,
+ priority = 1000,
+ config = function()
+ vim.cmd.colorscheme("tokyonight-night")
+ end,
+ },
+
+ -- File browser
+ {
+ 'stevearc/oil.nvim',
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ cmd = "Oil",
+ },
+
+ -- Terminal
+ {
+ 'akinsho/toggleterm.nvim',
+ version = "*",
+ cmd = {"ToggleTerm", "ToggleTermSendCurrentLine", "ToggleTermSendVisualLines"},
+ },
+
+ ------------------------------------------------------------
+ -- EDITOR ENHANCEMENTS
+ ------------------------------------------------------------
+
+ -- Telescope (fuzzy finder)
+ {
+ 'nvim-telescope/telescope.nvim',
+ dependencies = { 'nvim-lua/plenary.nvim' },
+ cmd = "Telescope",
+ },
+
+ -- Harpoon (quick file navigation)
+ {
+ "ThePrimeagen/harpoon",
+ branch = "harpoon2",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ },
+
+ -- Git integration
+ {
+ 'tpope/vim-fugitive',
+ cmd = {"Git", "Gstatus", "Gblame", "Gdiffsplit", "Gread", "Gwrite", "Ggrep", "GMove", "GDelete"},
+ },
+
+ -- Undo history visualization
+ {
+ 'mbbill/undotree',
+ cmd = "UndotreeToggle",
+ },
+
+ ------------------------------------------------------------
+ -- CODE EDITING
+ ------------------------------------------------------------
+
+ -- Syntax highlighting
+ {
+ 'nvim-treesitter/nvim-treesitter',
+ build = ':TSUpdate',
+ event = { "BufReadPost", "BufNewFile" },
+ cmd = { "TSUpdateSync", "TSUpdate", "TSInstall" },
+ dependencies = {
+ 'nvim-treesitter/nvim-treesitter-context',
+ },
+ },
+
+ -- Comments
+ {
+ 'numToStr/Comment.nvim',
+ event = { "BufReadPost", "BufNewFile" },
+ },
+
+ -- Auto brackets
+ {
+ 'windwp/nvim-autopairs',
+ event = "InsertEnter",
+ config = true,
+ },
+
+ -- LaTeX support
+ {
+ "lervag/vimtex",
+ ft = {"tex", "latex"},
+ init = function()
+ vim.g.vimtex_view_method = "zathura"
+ end
+ },
+
+ ------------------------------------------------------------
+ -- LSP & COMPLETION
+ ------------------------------------------------------------
+ -- LSP Base
+ {
+ "mason-org/mason.nvim",
+ "mason-org/mason-lspconfig.nvim",
+ "neovim/nvim-lspconfig",
+},
+ {
+ "folke/lazydev.nvim",
+ ft = "lua", -- only load on lua files
+ opts = {
+ library = {
+ -- See the configuration section for more details
+ -- Load luvit types when the `vim.uv` word is found
+ { path = "${3rd}/luv/library", words = { "vim%.uv" } },
+ },
+ },
+ },
+
+ -- Autocompletion
+ {
+ 'saghen/blink.cmp',
+ -- optional: provides snippets for the snippet source
+ dependencies = { 'rafamadriz/friendly-snippets' },
+
+ version = '1.*',
+ opts = {
+ -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
+ -- 'super-tab' for mappings similar to vscode (tab to accept)
+ -- 'enter' for enter to accept
+ -- 'none' for no mappings
+ --
+ -- All presets have the following mappings:
+ -- C-space: Open menu or open docs if already open
+ -- C-n/C-p or Up/Down: Select next/previous item
+ -- C-e: Hide menu
+ -- C-k: Toggle signature help (if signature.enabled = true)
+ --
+ -- See :h blink-cmp-config-keymap for defining your own keymap
+ keymap = { preset = 'default' },
+
+ appearance = {
+ -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
+ -- Adjusts spacing to ensure icons are aligned
+ nerd_font_variant = 'mono'
+ },
+
+ -- (Default) Only show the documentation popup when manually triggered
+ completion = { documentation = { auto_show = true} },
+
+ -- Default list of enabled providers defined so that you can extend it
+ -- elsewhere in your config, without redefining it, due to `opts_extend`
+sources = {
+ -- add lazydev to your completion providers
+ default = { "lazydev", "lsp", "path", "snippets", "buffer" },
+ providers = {
+ lazydev = {
+ name = "LazyDev",
+ module = "lazydev.integrations.blink",
+ -- make lazydev completions top priority (see `:h blink.cmp`)
+ score_offset = 100,
+ },
+ },
+ },
+ -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
+ -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
+ -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
+ --
+ -- See the fuzzy documentation for more information
+ fuzzy = { implementation = "prefer_rust_with_warning" }
+ },
+ opts_extend = { "sources.default" }
+},
+
+}, {
+ -- Lazy.nvim options
+ install = { colorscheme = { "tokyonight-night" } },
+ checker = { enabled = true, frequency = 86400 }, -- Check for updates once per day
+ change_detection = { notify = false },
+ performance = {
+ rtp = {
+ disabled_plugins = {
+ "gzip",
+ "tarPlugin",
+ "tohtml",
+ "tutor",
+ "zipPlugin",
+ },
+ },
+ },
+})
diff --git a/.config/nvim/syntax/codelis.vim b/.config/nvim/syntax/codelis.vim
new file mode 100755
index 0000000..2bd4125
--- /dev/null
+++ b/.config/nvim/syntax/codelis.vim
@@ -0,0 +1,47 @@
+:syntax case ignore
+:syntax region lisString start =/"/ end= /"/
+:highlight lisString guifg=#9ece6a
+
+:syntax region lisString start =/'/ end= /'/
+:highlight lisString guifg=#9ece6a
+
+:syntax match lisComment /!.*/
+:highlight lisComment guifg=#535c7e
+
+
+:syntax match lisSurfaceZoom /\<\([szfw][0-9oia]\)\>\|\<[sz]\>/
+:highlight lisSurfaceZoom guifg=#ff9e64 gui=bold
+" :highlight lisSurfaceZoom guifg=#2ac3de gui=bold
+
+:syntax match lisNumber /\<[0-9.e-]\+\>/
+:highlight lisNumber guifg=#ff9e64
+
+:syntax match lisTitle /code v/
+:highlight lisTitle guifg=#1a1b26 guibg=#c0caf5
+
+:syntax match lisRMSSpot /Minimum RMS spot diameter/
+:highlight lisRMSSpot guifg=#3cb371
+
+
+:syntax match lisPerfMetric /Optical System/
+:syntax match lisPerfMetric /First-Order Properties/
+:syntax match lisPerfMetric /Manufacturability Results/
+:syntax match lisPerfMetric /Fifth-Order Results/
+:syntax match lisPerfMetric /Spotsize Results/
+:syntax match lisPerfMetric /Longitudinal Curvature Results/
+:syntax match lisPerfMetric /MTF Results/
+:syntax match lisPerfMetric /FSW Results/
+:highlight lisPerfMetric guifg=#000000 guibg=#008000
+
+:syntax match lisAUTCyc /CYCLE NUMBER/
+:highlight lisAUTCyc guifg=#1a1b26 guibg=#c0caf5
+
+:syntax match lisAUTAddConstr /Constraints added/
+:highlight lisAUTAddConstr guifg=#e00a97
+
+
+:syntax match lisAUTActiveConstr /Active Constraints/
+:highlight lisAUTActiveConstr guifg=#23a08e
+
+:syntax match lisAUTInactiveConstr /Inactive Constraints/
+:highlight lisAUTInactiveConstr guifg=#ffdf4f
diff --git a/.config/nvim/syntax/codev.vim b/.config/nvim/syntax/codev.vim
new file mode 100755
index 0000000..c428f22
--- /dev/null
+++ b/.config/nvim/syntax/codev.vim
@@ -0,0 +1,66 @@
+:syntax case ignore
+:syntax region cvString start =/"/ end= /"/
+:highlight cvString guifg=#9ece6a
+
+:syntax region cvString start =/'/ end= /'/
+:highlight cvString guifg=#9ece6a
+
+:syntax match cvComment /!.*/
+:highlight cvComment guifg=#535c7e
+
+:syntax keyword cvConditional if els and else or
+" :highlight cvConditional guifg=LightGreen gui=italic
+:highlight cvConditional guifg=#bb9af7
+"
+:syntax match cvVariable /\^\w*/
+:highlight cvVariable guifg=#6ad5e8
+" :highlight cvVariable guifg=#27a1b9
+" DarkYellow
+:syntax match cvIdentifier /\$\w*/
+:highlight cvIdentifier guifg=#27a1b9 gui=italic
+
+:syntax keyword cvType str num
+:highlight cvType guifg=#ff9e64
+
+:syntax keyword cvScope lcl gbl
+:highlight cvScope gui=bold guifg=#6ad5e8
+
+:syntax keyword cvCommand sur aut rfd nab eva wri wrl wgf out res sav dif lib fie gcv gra go rfd pth sys rdy rdx can thi cuy cux tit dim ins gla dro mtf yan wl wtw wtf frz rim sto spo vie ver rdm din svl k a b c
+:highlight cvCommand guifg=#9d7cd8 gui=bold
+
+:syntax keyword cvOption lsa ast dst del exp dir mfr ifr pur ssi nrd nbr lns nos ref
+:highlight cvOption guifg=#9d7cd8 gui=italic
+
+:syntax keyword cvDatabase typ ind ucy umy hcy icy hmy imy pcy efx efy erf sd abv et ate atc map tco ptz sas ax lat ct
+:highlight cvDatabase guifg=#89ddff gui=bold
+
+:syntax match cvSurfaceZoom /\<\([sz][0-9oia]\)\>\|\<[sz]\>/
+:highlight cvSurfaceZoom guifg=#ff9e64 gui=bold
+" :highlight cvSurfaceZoom guifg=#2ac3de gui=bold
+
+:syntax match cvNumber /\<[0-9.e-]\+\>/
+:highlight cvNumber guifg=#ff9e64
+
+:syntax keyword cvBoolean yes no y n true false
+:highlight cvBoolean guifg=#1abc9c gui=bold
+
+:syntax keyword cvFunction join concat absf rfstr atanf sagf num_to_str isfct substr upcase
+:highlight cvFunction guifg=#7aa2f7
+
+:syntax match cvUDF /@[a-z0-9_]\+/
+:highlight link cvUDF cvFunction
+
+:syntax keyword cvImport in
+:highlight cvImport guifg=#7dcfff
+
+:syntax keyword cvSpecial buf end fct Q t len new b0
+:highlight cvSpecial guifg=#9d7cd8 gui=bold
+
+:syntax keyword cvRepeat for
+:highlight cvRepeat guifg=#bb9af7
+
+:syntax keyword cvOptimization eft wfr efp int dra rou bfg ext cnv mxc tar tim imp dsp
+:highlight link cvOptimization cvOption
+
+:syntax keyword cvConstraints thc gl1 ccy mxt mnt mne mna mae efl oal imd diy ray
+:highlight link cvConstraints cvOption
diff --git a/.config/pulse/cookie b/.config/pulse/cookie
new file mode 100644
index 0000000..84a9b83
--- /dev/null
+++ b/.config/pulse/cookie
Binary files differ
diff --git a/.config/systemd/user/default.target.wants/emacs.service b/.config/systemd/user/default.target.wants/emacs.service
new file mode 120000
index 0000000..003173b
--- /dev/null
+++ b/.config/systemd/user/default.target.wants/emacs.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/emacs.service \ No newline at end of file
diff --git a/.config/systemd/user/default.target.wants/mpd.service b/.config/systemd/user/default.target.wants/mpd.service
new file mode 120000
index 0000000..0524f66
--- /dev/null
+++ b/.config/systemd/user/default.target.wants/mpd.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/mpd.service \ No newline at end of file
diff --git a/.config/systemd/user/default.target.wants/syncthing.service b/.config/systemd/user/default.target.wants/syncthing.service
new file mode 120000
index 0000000..d55cc27
--- /dev/null
+++ b/.config/systemd/user/default.target.wants/syncthing.service
@@ -0,0 +1 @@
+/usr/lib/systemd/user/syncthing.service \ No newline at end of file
diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc
new file mode 100644
index 0000000..d50135e
--- /dev/null
+++ b/.config/zathura/zathurarc
@@ -0,0 +1,112 @@
+# Zathura configuration with vim keybinds
+# Save as ~/.config/zathura/zathurarc
+
+# Vim-like navigation
+map j scroll down
+map k scroll up
+map h scroll left
+map l scroll right
+
+# Page navigation
+map J navigate next
+map K navigate previous
+map g goto top
+map G goto bottom
+
+# Zoom controls
+map + zoom in
+map - zoom out
+map = zoom in
+map 0 adjust_window best-fit
+map a adjust_window width
+map s adjust_window height
+
+# Search (vim-like)
+map / search forward
+map ? search backward
+map n search next
+map N search previous
+
+# Quit
+map q quit
+map ZZ quit
+map ZQ quit
+
+# Reload
+map r reload
+map R rotate
+
+# Fullscreen/presentation
+map f toggle_fullscreen
+map F5 toggle_presentation
+
+# Page mode
+map d toggle_page_mode
+
+# Index/outline
+map o toggle_index
+map O toggle_index
+
+# Copy to clipboard
+map y feedkeys ":exec echo -n %{filepath} | xclip -selection clipboard<Return>"
+
+# Invert colors (useful for dark mode)
+map i recolor
+
+# Jump to page
+map gg goto top
+map <C-o> jumplist backward
+map <C-i> jumplist forward
+
+# More precise scrolling
+map <C-d> scroll half-down
+map <C-u> scroll half-up
+map <C-f> scroll full-down
+map <C-b> scroll full-up
+
+# Horizontal scrolling
+map H scroll left
+map L scroll right
+
+# Mark positions (vim-like)
+map m mark_add
+
+# Status bar
+set statusbar-h-padding 0
+set statusbar-v-padding 0
+set page-padding 1
+set selection-clipboard clipboard
+
+# Color scheme (optional - dark theme)
+# set notification-error-bg "#282828"
+# set notification-error-fg "#fb4934"
+# set notification-warning-bg "#282828"
+# set notification-warning-fg "#fabd2f"
+# set notification-bg "#282828"
+# set notification-fg "#b8bb26"
+# set completion-bg "#504945"
+# set completion-fg "#ebdbb2"
+# set completion-group-bg "#3c3836"
+# set completion-group-fg "#928374"
+# set completion-highlight-bg "#83a598"
+# set completion-highlight-fg "#504945"
+# set index-bg "#504945"
+# set index-fg "#ebdbb2"
+# set index-active-bg "#83a598"
+# set index-active-fg "#504945"
+# set inputbar-bg "#282828"
+# set inputbar-fg "#ebdbb2"
+# set statusbar-bg "#504945"
+# set statusbar-fg "#ebdbb2"
+# set highlight-color "#fabd2f"
+# set highlight-active-color "#fe8019"
+# set default-bg "#282828"
+# set default-fg "#ebdbb2"
+# set render-loading true
+# set render-loading-bg "#282828"
+# set render-loading-fg "#ebdbb2"
+# set recolor-lightcolor "#282828"
+# set recolor-darkcolor "#ebdbb2"
+
+# Performance
+set scroll-step 50
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
new file mode 100644
index 0000000..2f3f4a4
--- /dev/null
+++ b/.emacs.d/init.el
@@ -0,0 +1,322 @@
+(setq org-dir "~/syncthing/notes/Org")
+;; Disable native compilation
+(setq org-export-with-drawers t)
+
+(setq make-backup-files nil)
+
+(setq default-directory (file-name-as-directory org-dir))
+(add-to-list 'default-frame-alist '(fullscreen . maximized))
+(defun generate-new-file-name () "Ask for a title and generate a file name based on it"
+ (let* ((file-name (read-string "Title: "))
+ (my-path (concat
+ org-dir ; Or whatever path you want
+ (format-time-string "%Y%m%d%H%M%S") "-"
+ (replace-regexp-in-string "[^a-zA-Z0-9-]+" "-" file-name) ".org"))) ; Replace invalid path characters
+ (setq mc/org-capture-filename file-name) ; Save variable to be used later in the template
+ my-path))
+
+
+(setq inhibit-startup-message t)
+(scroll-bar-mode -1)
+(tool-bar-mode -1)
+(tooltip-mode -1)
+(set-fringe-mode 10)
+
+
+(menu-bar-mode -1)
+(setq visible-bell t)
+
+(if (daemonp)
+ (add-hook 'after-make-frame-functions
+ (lambda (frame)
+ (with-selected-frame frame
+ (set-face-attribute 'default nil :font "Hack NF" :height 220))))
+ (set-face-attribute 'default nil :font "Hack NF" :height 220))
+
+
+
+;; Make ESC quit prompts
+(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
+
+;; Initialize package sources
+(require 'package)
+
+(setq package-archives '(("melpa" . "https://melpa.org/packages/")
+ ("org" . "https://orgmode.org/elpa/")
+ ("elpa" . "https://elpa.gnu.org/packages/")))
+
+(package-initialize)
+(unless package-archive-contents
+ (package-refresh-contents))
+
+;; Initialize use-package on non-Linux platforms
+(unless (package-installed-p 'use-package)
+ (package-install 'use-package))
+
+(require 'use-package)
+(setq use-package-always-ensure t)
+
+;;; Enable all 3 for relative number mode
+;; (column-number-mode)
+;; (global-display-line-numbers-mode t)
+;; (setq display-line-numbers-type 'relative)
+
+;; Disable line numbers for some modes
+(dolist (mode '(term-mode-hook
+ eshell-mode-hook))
+ (add-hook mode (lambda () (display-line-numbers-mode 0))))
+
+;; (use-package command-log-mode)
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(org-agenda-files nil)
+ '(package-selected-packages
+ '(counsel doom-modeline doom-themes evil evil-collection evil-escape
+ evil-org general helpful htmlize ivy ivy-rich
+ org-contacts org-download org-roam projectile
+ rainbow-delimiters which-key)))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ )
+
+(use-package ivy
+ :diminish
+ :bind (("C-s" . swiper)
+ :map ivy-minibuffer-map
+ ("TAB" . ivy-alt-done)
+ ("C-l" . ivy-alt-done)
+ ("C-j" . ivy-next-line)
+ ("C-k" . ivy-previous-line)
+ :map ivy-switch-buffer-map
+ ("C-k" . ivy-previous-line)
+ ("C-l" . ivy-done)
+ ("C-d" . ivy-switch-buffer-kill)
+ :map ivy-reverse-i-search-map
+ ("C-k" . ivy-previous-line)
+ ("C-d" . ivy-reverse-i-search-kill))
+ :demand
+ :config
+ (ivy-mode 1))
+
+
+(use-package doom-modeline
+ :ensure t
+ :init (doom-modeline-mode 1)
+ :custom ((doom-modeline-height 15)))
+(use-package rainbow-delimiters
+ :hook (prog-mode . rainbow-delimiters-mode))
+
+(use-package doom-themes)
+:init (load-theme 'doom-dracula t)
+
+(use-package which-key
+ :init (which-key-mode)
+ :diminish which-key-mode
+ :config
+ (setq which-key-idle-delay 1))
+
+(use-package ivy-rich
+ :init
+ (ivy-rich-mode 1))
+
+(use-package counsel
+ :bind (("M-x" . counsel-M-x)
+ ("C-x b" . counsel-ibuffer)
+ ("C-x C-f" . counsel-find-file)
+ :map minibuffer-local-map
+ ("C-r" . 'counsel-minibuffer-history))
+ :config
+ (setq ivy-initial-inputs-alist nil)) ;;Don't start searches with ^
+
+(use-package helpful
+ :ensure t
+ :custom
+ (counsel-describe-function-function #'helpful-callable)
+ (counsel-describe-variable-function #'helpful-variable)
+ :bind
+ ([remap describe-function] . counsel-describe-function)
+ ([remap describe-command] . helpful-command)
+ ([remap describe-variable] . counsel-describe-variable)
+ ([remap describe-key] . helpful-key))
+(global-set-key (kbd "C-q") 'save-buffers-kill-terminal)
+(use-package general)
+(general-create-definer my-leader-def
+ ;; :prefix my-leader
+ :prefix "SPC")
+(my-leader-def
+ :states 'normal
+ :keymaps 'override
+ ;; bind "SPC a"
+ "oa" 'org-agenda
+ "oc" 'org-capture
+ ;; "ot" 'org-todo
+ ;; "ox" 'org-toggle-checkbox
+ "og" 'counsel-org-tag
+ "osg" 'org-tags-view
+ ;; "op" 'org-set-property
+ "oid" 'org-id-get-create
+ "os" 'org-display-inline-images
+ "oh" 'org-remove-inline-images
+ "e" 'ido-find-file
+ "w" 'save-buffer
+ "b" 'ido-switch-buffer
+ "gg" 'counsel-rg
+ "q" 'quit-window
+ "Q" 'kill-buffer-and-window
+ "z" 'org-toggle-link-display
+ "ff" 'projectile-find-file-in-known-projects)
+;; "q" 'kill-this-buffer)
+;; Enable Evil
+(use-package evil
+ :init
+ (setq evil-want-integration t)
+ (setq evil-want-keybinding nil)
+ (setq evil-want-C-u-scroll t)
+ (setq evil-want-C-i-jump nil)
+ :config
+ (define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state)
+ (define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join)
+ (define-key evil-motion-state-map (kbd "C-h h") 'evil-window-left)
+ (define-key evil-motion-state-map (kbd "C-a l") 'evil-window-right)
+ (define-key evil-motion-state-map (kbd "C-a j") 'evil-window-down)
+ (define-key evil-motion-state-map (kbd "C-a k") 'evil-window-up)
+ (evil-mode 1))
+;; Add this to your Evil configuration section, after (evil-mode 1)
+
+;; Configure cursor shapes for different Evil states
+(setq evil-normal-state-cursor '(box "orange"))
+(setq evil-insert-state-cursor '(bar "red"))
+(setq evil-visual-state-cursor '(hollow "purple"))
+(setq evil-replace-state-cursor '(hbar "green"))
+(setq evil-operator-state-cursor '(hbar "yellow"))
+
+;; For terminal emacs, ensure cursor type changes are sent to terminal
+(unless (display-graphic-p)
+ ;; Define cursor change function
+ (defun my/change-cursor-shape (shape)
+ (send-string-to-terminal (format "\033[%d q" shape)))
+
+ ;; Enable cursor shape changes in terminal
+ (add-hook 'evil-insert-state-entry-hook (lambda () (my/change-cursor-shape 6))) ; Bar
+ (add-hook 'evil-normal-state-entry-hook (lambda () (my/change-cursor-shape 2))) ; Block
+ (add-hook 'evil-visual-state-entry-hook (lambda () (my/change-cursor-shape 2))) ; Block
+ (add-hook 'evil-replace-state-entry-hook (lambda () (my/change-cursor-shape 4))) ; Underline
+ (add-hook 'evil-operator-state-entry-hook (lambda () (my/change-cursor-shape 4))) ; Underline
+
+ ;; Reset cursor on exit
+ (add-hook 'kill-emacs-hook (lambda () (my/change-cursor-shape 2))))
+(use-package evil-collection
+ :after evil
+ :config
+ (evil-collection-init))
+
+(use-package evil-escape
+ :config
+ (evil-escape-mode 1))
+(setq-default evil-escape-key-sequence "jk")
+
+(defun mm/org-mode-setup()
+ (org-indent-mode)
+ (variable-pitch-mode 1)
+ (auto-fill-mode 0)
+ (visual-line-mode 1)
+ (global-visual-line-mode 1)
+ (setq evil-auto-indent nil)
+ )
+(evil-define-key 'normal 'global (kbd "g j") 'evil-next-visual-line)
+(evil-define-key 'normal 'global (kbd "g k") 'evil-previous-visual-line)
+(evil-define-key 'normal org-mode-map (kbd "g j") 'evil-next-visual-line)
+(evil-define-key 'normal org-mode-map (kbd "g k") 'evil-previous-visual-line)
+
+(use-package org
+ :hook (org-mode . mm/org-mode-setup)
+ :config
+ ;; Load org configuration from separate file
+ (add-to-list 'load-path org-dir) ;; Adjust path as needed
+ (require 'org-config))
+(use-package org-download)
+
+(setq org-file-apps '((t . "gio open %s"))) ;;For Windows, to open files with an external program
+(add-hook 'dired-mode-hook 'org-download-enable)
+
+;; (setq org-startup-with-inline-images t)
+(use-package htmlize)
+(use-package org-roam
+ :ensure t
+ :custom
+ (org-roam-directory (org-dir))
+ :bind (("C-c n l" . org-roam-buffer-toggle)
+ ("C-c n f" . org-roam-node-find)
+ ("C-c n g" . org-roam-graph)
+ ("C-c n i" . org-roam-node-insert)
+ ("C-c n c" . org-roam-capture)
+ ;; Dailies
+ ("C-c n j" . org-roam-dailies-capture-today))
+ :config
+ ;; If you're using a vertical completion framework, you might want a more informative completion interface
+ (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))
+ (org-roam-db-autosync-mode)
+ ;; If using org-roam-protocol
+ (require 'org-roam-protocol))
+(require 'org-id)
+(setq org-id-link-to-org-use-id t)
+;; (setq org-roam-dailies-capture-templates
+;; '(("d" "default" entry
+;; "* Section 1\n** Section 1.1\n* Section 2\n"
+;; :target (file+head "%<%Y-%m-%d>.org"
+;; "#+title: %<%Y-%m-%d>\n"))
+;; ("n" "default" entry
+;; "* Section 1\n** Section 1.1\n* Section 2\n"
+;; :target (file+head "%<%Y-%m-%d>.org"
+;; "#+title: %<%Y-%m-%d>\n"))
+;; ))
+
+(setq org-agenda-start-on-weekday 1)
+(setq calendar-date-style 'iso)
+(setq calendar-week-start-day 1)
+(setq org-read-date-force-compatible-dates nil)
+
+(use-package projectile)
+(projectile-mode +1)
+(setq projectile-known-projects (list org-dir))
+;; Recommended keymap prefix on Windows/Linux
+(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
+
+(global-set-key (kbd "C-c l") 'org-store-link)
+(global-set-key (kbd "C-c C-l") 'org-insert-link)
+
+;; Disable the annoying mini buffer when inserting a link
+(add-to-list
+ 'display-buffer-alist
+ `("*Org Links*" display-buffer-no-window (allow-no-window . t)))
+
+
+;; (setq org-time-stamp-formats '("%Y-%m-%d %a %H:%M"))
+(setq org-clock-persist 'history)
+(org-clock-persistence-insinuate)
+(defun my/timenow ()
+ (interactive)
+ (let ((current-prefix-arg '(16)))
+ (call-interactively 'org-time-stamp-inactive)))
+
+(define-key org-mode-map (kbd "C-c m") 'my/timenow)
+
+;; Add a direct shortcut for file links with autocomplete
+ (defun my/org-insert-file-link ()
+ "Insert a file link directly, with path autocomplete and description prompt."
+ (interactive)
+ (let* ((org-link-file-path-type 'relative)
+ (file-path (org-link-complete-file))
+ ;; Remove file: prefix if it's already there
+ (path (substring file-path 5))
+ (desc (read-string "Description: " nil nil nil t)))
+ (org-insert-link nil (concat "file:" path) (if (string= desc "") nil desc))))
+
+ ;; Bind it to C-c C-f
+ (define-key org-mode-map (kbd "C-c C-f") 'my/org-insert-file-link)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a58ba07
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.config/nvim/lazy-lock.json
+.config/borg
+.config/mpd
diff --git a/.gnupg/gpg-agent.conf b/.gnupg/gpg-agent.conf
new file mode 100644
index 0000000..54f85d5
--- /dev/null
+++ b/.gnupg/gpg-agent.conf
@@ -0,0 +1 @@
+pinentry-program /usr/bin/pinentry-tty
diff --git a/.gnupg/gpg.conf b/.gnupg/gpg.conf
new file mode 100644
index 0000000..8499dff
--- /dev/null
+++ b/.gnupg/gpg.conf
@@ -0,0 +1,71 @@
+#keyid-format LONG
+#with-fingerprint
+with-keygrip
+# https://github.com/drduh/config/blob/master/gpg.conf
+# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Options.html
+# 'gpg --version' to get capabilities
+# Use AES256, 192, or 128 as cipher
+personal-cipher-preferences AES256 AES192 AES
+# Use SHA512, 384, or 256 as digest
+personal-digest-preferences SHA512 SHA384 SHA256
+# Use ZLIB, BZIP2, ZIP, or no compression
+personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
+# Default preferences for new keys
+default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
+# SHA512 as digest to sign keys
+cert-digest-algo SHA512
+# SHA512 as digest for symmetric ops
+s2k-digest-algo SHA512
+# AES256 as cipher for symmetric ops
+s2k-cipher-algo AES256
+# UTF-8 support for compatibility
+charset utf-8
+# No comments in messages
+no-comments
+# No version in output
+no-emit-version
+# Disable banner
+no-greeting
+# Long key id format
+keyid-format 0xlong
+# Display UID validity
+list-options show-uid-validity
+verify-options show-uid-validity
+# Display all keys and their fingerprints
+with-fingerprint
+# Display key origins and updates
+#with-key-origin
+# Cross-certify subkeys are present and valid
+require-cross-certification
+# Disable caching of passphrase for symmetrical ops
+no-symkey-cache
+# Output ASCII instead of binary
+armor
+# Enable smartcard
+use-agent
+# Disable recipient key ID in messages (breaks Mailvelope)
+throw-keyids
+# Default key ID to use (helpful with throw-keyids)
+#default-key 0xFF00000000000001
+#trusted-key 0xFF00000000000001
+# Group recipient keys (preferred ID last)
+#group keygroup = 0xFF00000000000003 0xFF00000000000002 0xFF00000000000001
+# Keyserver URL
+#keyserver hkps://keys.openpgp.org
+#keyserver hkps://keys.mailvelope.com
+#keyserver hkps://keyserver.ubuntu.com:443
+#keyserver hkps://pgpkeys.eu
+#keyserver hkps://pgp.circl.lu
+#keyserver hkp://zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad.onion
+# Keyserver proxy
+#keyserver-options http-proxy=http://127.0.0.1:8118
+#keyserver-options http-proxy=socks5-hostname://127.0.0.1:9050
+# Enable key retrieval using WKD and DANE
+#auto-key-locate wkd,dane,local
+#auto-key-retrieve
+# Trust delegation mechanism
+#trust-model tofu+pgp
+# Show expired subkeys
+#list-options show-unusable-subkeys
+# Verbose output
+#verbose
diff --git a/.hushlogin b/.hushlogin
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.hushlogin
diff --git a/.profile b/.profile
new file mode 100644
index 0000000..d89ea5a
--- /dev/null
+++ b/.profile
@@ -0,0 +1,27 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+# see /usr/share/doc/bash/examples/startup-files for examples.
+# the files are located in the bash-doc package.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# if running bash
+if [ -n "$BASH_VERSION" ]; then
+ # include .bashrc if it exists
+ if [ -f "$HOME/.bashrc" ]; then
+ . "$HOME/.bashrc"
+ fi
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/bin" ] ; then
+ PATH="$HOME/bin:$PATH"
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/.local/bin" ] ; then
+ PATH="$HOME/.local/bin:$PATH"
+fi
diff --git a/.selected_editor b/.selected_editor
new file mode 100644
index 0000000..d7052d4
--- /dev/null
+++ b/.selected_editor
@@ -0,0 +1,2 @@
+# Generated by /usr/bin/select-editor
+SELECTED_EDITOR="/usr/bin/nvim"
diff --git a/.stow-local-ignore b/.stow-local-ignore
new file mode 100644
index 0000000..24367e6
--- /dev/null
+++ b/.stow-local-ignore
@@ -0,0 +1,2 @@
+.git
+~
diff --git a/.taskrc b/.taskrc
new file mode 100644
index 0000000..a4a1bed
--- /dev/null
+++ b/.taskrc
@@ -0,0 +1,27 @@
+# [Created by task 3.4.1 4/28/2025 20:01:41]
+data.location=~/.task
+news.version=3.4.1
+
+# To use the default location of the XDG directories,
+# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and update location config as follows:
+
+#data.location=~/.local/share/task
+#hooks.location=~/.config/task/hooks
+
+# Color theme (uncomment one to use)
+#include light-16.theme
+#include light-256.theme
+#include bubblegum-256.theme
+#include dark-16.theme
+#include dark-256.theme
+#include dark-red-256.theme
+#include dark-green-256.theme
+#include dark-blue-256.theme
+#include dark-violets-256.theme
+#include dark-yellow-green.theme
+#include dark-gray-256.theme
+#include dark-gray-blue-256.theme
+#include solarized-dark-256.theme
+#include solarized-light-256.theme
+#include no-color.theme
+
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..583421c
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,70 @@
+autoload -U colors && colors
+# PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
+# PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%(4~|…/%2~|%~)%{$fg[red]%}]%{$reset_color%}$%b "
+PS1="%B%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M%{$reset_color%}%b:%B%{$fg[magenta]%}%~%{$reset_color%}%b
+%B%{$fg[yellow]%}$%{$reset_color%}%b "
+# PS1="%{$fg[magenta]%}%~%{$reset_color%}
+# %B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M%{$fg[red]%}]%{$reset_color%}$%b "
+#History in cache directory
+HISTSIZE=10000
+SAVEHIST=10000
+HISTFILE=~/.cache/zsh/history
+
+# Basic auto/tab complete:
+autoload -U compinit
+zstyle ':completion:*' menu select
+zmodload zsh/complist
+compinit
+_comp_options+=(globdots) # Include hidden files
+
+#bindkey -v
+#export KEYTIMEOUT=1
+source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
+
+# Use vim keys in tab complete menu:
+bindkey -M menuselect 'h' vi-backward-char
+bindkey -M menuselect 'k' vi-up-line-or-history
+bindkey -M menuselect 'l' vi-forward-char
+bindkey -M menuselect 'j' vi-down-line-or-history
+bindkey -M menuselect '^?' backward-delete-char
+
+# Use lf to switch directories and bind it to ctrl-o
+
+lfcd () {
+ tmp="$(mktemp)"
+ lf -last-dir-path="$tmp" "$@"
+ if [ -f "$tmp" ]; then
+ dir="$(cat "$tmp")"
+ rm -f "$tmp"
+ [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
+ fi
+}
+bindkey -s '^o' 'lfcd\n'
+
+bindkey '^P' up-line-or-history
+bindkey '^N' down-line-or-history
+bindkey '^ ' autosuggest-accept
+bindkey '^E' end-of-line
+setopt NO_BEEP
+
+alias dict='dict_func'
+alias in='nvim'
+alias emacs='emacsclient -nw'
+alias ls='ls --color=auto'
+dict_func() { command dict "$1" | colorit; }
+alias ytdl='noglob yt-dlp'
+alias ncm='ncmpcpp'
+alias news='newsboat'
+
+#WSL aliases
+alias start='explorer.exe'
+alias pwsh='pwsh.exe'
+alias sup='powershell.exe -Command "scoop update *"'
+
+export GPG_TTY=$(tty)
+
+setopt autocd
+eval "$(zoxide init zsh)"
+alias j='z'
+eval "$(mcfly init zsh)"
Back to https://optics-design.com