aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authordacctal <120422854+dacctal@users.noreply.github.com>2026-03-05 01:21:45 +0000
committerdacctal <120422854+dacctal@users.noreply.github.com>2026-03-05 01:21:45 +0000
commit69a722cfd33076a4d63f1d49e52bed427453eabe (patch)
tree56545e93c12a8232058a0ab2b258546418656e03 /.config
initial commit
Diffstat (limited to '.config')
-rw-r--r--.config/btop/btop.conf266
-rwxr-xr-x.config/btop/btop/btop.conf254
-rwxr-xr-x.config/btop/btop/themes/everpuccin.theme91
-rwxr-xr-x.config/btop/themes/everpuccin.theme91
-rwxr-xr-x.config/fastfetch/config.jsonc69
-rwxr-xr-x.config/fastfetch/ep-wb-icon-trnsp.pngbin0 -> 123310 bytes
-rwxr-xr-x.config/fastfetch/ganymede.pngbin0 -> 438219 bytes
-rwxr-xr-x.config/fastfetch/ganymede2.pngbin0 -> 358659 bytes
-rwxr-xr-x.config/fastfetch/gentoo.pngbin0 -> 14804 bytes
-rwxr-xr-x.config/fastfetch/pluto-trnsp.pngbin0 -> 17361800 bytes
-rwxr-xr-x.config/fish/config.fish27
-rwxr-xr-x.config/foot/foot.ini67
-rw-r--r--.config/fsel/config.toml29
-rw-r--r--.config/nvim/init.lua4
-rw-r--r--.config/nvim/lazy-lock.json29
-rw-r--r--.config/nvim/lua/caelus/init.lua88
-rwxr-xr-x.config/nvim/lua/config/keymaps.lua11
-rw-r--r--.config/nvim/lua/config/lazy.lua35
-rwxr-xr-x.config/nvim/lua/config/options.lua40
-rwxr-xr-x.config/nvim/lua/plugins/auto-pairs.lua24
-rwxr-xr-x.config/nvim/lua/plugins/colorizer.lua6
-rwxr-xr-x.config/nvim/lua/plugins/eslint.lua41
-rw-r--r--.config/nvim/lua/plugins/everpuccin.lua.bkp330
-rwxr-xr-x.config/nvim/lua/plugins/harpoon.lua26
-rwxr-xr-x.config/nvim/lua/plugins/highlight-colors.lua8
-rwxr-xr-x.config/nvim/lua/plugins/lspconfig.lua35
-rwxr-xr-x.config/nvim/lua/plugins/lualine.lua12
-rwxr-xr-x.config/nvim/lua/plugins/markdown.lua9
-rw-r--r--.config/nvim/lua/plugins/mason-lspconfig.lua8
-rw-r--r--.config/nvim/lua/plugins/mason.lua13
-rw-r--r--.config/nvim/lua/plugins/nim.lua3
-rw-r--r--.config/nvim/lua/plugins/oil.lua20
-rwxr-xr-x.config/nvim/lua/plugins/orgmode.lua17
-rwxr-xr-x.config/nvim/lua/plugins/telescope.lua25
-rwxr-xr-x.config/nvim/lua/plugins/treesitter.lua15
-rw-r--r--.config/nvim/lua/plugins/trouble.lua37
-rwxr-xr-x.config/nvim/lua/plugins/undotree.lua8
-rw-r--r--.config/nvim/lua/plugins/vlang.lua7
-rw-r--r--.config/otter-launcher/config.toml126
-rwxr-xr-x.config/otter-launcher/sway-launcher-desktop.sh390
m---------.config/st0
-rwxr-xr-x.config/sway/config103
-rwxr-xr-x.config/sway/exec7
-rwxr-xr-x.config/sway/monitors10
-rwxr-xr-x.config/sway/visuals44
-rw-r--r--.config/sway/walls/caelus.pngbin0 -> 40012 bytes
46 files changed, 2425 insertions, 0 deletions
diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf
new file mode 100644
index 0000000..e26637c
--- /dev/null
+++ b/.config/btop/btop.conf
@@ -0,0 +1,266 @@
+#? Config file for btop v. 1.4.5
+
+#* 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 = "everpuccin"
+
+#* 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 = True
+
+#* Rounded corners on boxes, is ignored if TTY mode is ON.
+rounded_corners = False
+
+#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
+terminal_sync = 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 proc net"
+
+#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
+update_ms = 2000
+
+#* 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 = "cpu direct"
+
+#* 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
+
+#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
+show_cpu_watts = 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
+
+#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
+freq_mode = "first"
+
+#* 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 " ".
+#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", 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 = ""
+
+#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
+base_10_bitrate = "Auto"
+
+#* 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
+
+#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
+rsmi_measure_pcie_speeds = True
+
+#* Horizontally mirror the GPU graph.
+gpu_mirror_graph = True
+
+#* Set which GPU vendors to show. Available values are "nvidia amd intel"
+shown_gpus = "nvidia amd intel"
+
+#* 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 = ""
diff --git a/.config/btop/btop/btop.conf b/.config/btop/btop/btop.conf
new file mode 100755
index 0000000..6df9566
--- /dev/null
+++ b/.config/btop/btop/btop.conf
@@ -0,0 +1,254 @@
+#? Config file for btop v. 1.4.3
+
+#* 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 = "everpuccin"
+
+#* 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 = True
+
+#* Rounded corners on boxes, is ignored if TTY mode is ON.
+rounded_corners = False
+
+#* 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 proc net"
+
+#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
+update_ms = 2000
+
+#* 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 = "cpu direct"
+
+#* 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 = ""
+
+#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
+base_10_bitrate = "Auto"
+
+#* 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
+
+#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
+rsmi_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 = ""
diff --git a/.config/btop/btop/themes/everpuccin.theme b/.config/btop/btop/themes/everpuccin.theme
new file mode 100755
index 0000000..39660d2
--- /dev/null
+++ b/.config/btop/btop/themes/everpuccin.theme
@@ -0,0 +1,91 @@
+# All graphs and meters can be gradients
+# For single color graphs leave "mid" and "end" variable empty.
+# Use "start" and "end" variables for two color gradient
+# Use "start", "mid" and "end" for three color gradient
+
+# Main background, empty for terminal default, need to be empty if you want transparent background
+theme[main_bg]="#141515"
+
+# Main text color
+theme[main_fg]="#f4decd"
+
+# Title color for boxes
+theme[title]="#f4decd"
+
+# Highlight color for keyboard shortcuts
+theme[hi_fg]="#f16e65"
+
+# Background color of selected items
+theme[selected_bg]="#1e1f1e"
+
+# Foreground color of selected items
+theme[selected_fg]="#d9cdb5"
+
+# Color of inactive/disabled text
+theme[inactive_fg]="#3b403c"
+
+# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
+theme[graph_text]="#f4decd"
+
+# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
+theme[proc_misc]="#7ec97e"
+
+# Cpu box outline color
+theme[cpu_box]="#f16e65"
+
+# Memory/disks box outline color
+theme[mem_box]="#ef934d"
+
+# Net up/down box outline color
+theme[net_box]="#7ec97e"
+
+# Processes box outline color
+theme[proc_box]="#71b4d6"
+
+# Box divider line and small boxes line color
+theme[div_line]="#3b403c"
+
+# Temperature graph colors
+theme[temp_start]="#7ec97e"
+theme[temp_mid]="#efbf71"
+theme[temp_end]="#f16e65"
+
+# CPU graph colors
+theme[cpu_start]="#7ec97e"
+theme[cpu_mid]="#efbf71"
+theme[cpu_end]="#f16e65"
+
+# Mem/Disk free meter
+theme[free_start]="#f16e65"
+theme[free_mid]="#efbf71"
+theme[free_end]="#7ec97e"
+
+# Mem/Disk cached meter
+theme[cached_start]="#71b4d6"
+theme[cached_mid]="#7ec9a3"
+theme[cached_end]="#7ec97e"
+
+# Mem/Disk available meter
+theme[available_start]="#f16e65"
+theme[available_mid]="#efbf71"
+theme[available_end]="#7ec97e"
+
+# Mem/Disk used meter
+theme[used_start]="#7ec97e"
+theme[used_mid]="#efbf71"
+theme[used_end]="#f16e65"
+
+# Download graph colors
+theme[download_start]="#7ec97e"
+theme[download_mid]="#7ec9a3"
+theme[download_end]="#71b4d6"
+
+# Upload graph colors
+theme[upload_start]="#efbf71"
+theme[upload_mid]="#ef934d"
+theme[upload_end]="#f16e65"
+
+# Process box color gradient for threads, mem and cpu usage
+theme[process_start]="#7ec97e"
+theme[process_mid]="#ef968f"
+theme[process_end]="#f16e65"
diff --git a/.config/btop/themes/everpuccin.theme b/.config/btop/themes/everpuccin.theme
new file mode 100755
index 0000000..39660d2
--- /dev/null
+++ b/.config/btop/themes/everpuccin.theme
@@ -0,0 +1,91 @@
+# All graphs and meters can be gradients
+# For single color graphs leave "mid" and "end" variable empty.
+# Use "start" and "end" variables for two color gradient
+# Use "start", "mid" and "end" for three color gradient
+
+# Main background, empty for terminal default, need to be empty if you want transparent background
+theme[main_bg]="#141515"
+
+# Main text color
+theme[main_fg]="#f4decd"
+
+# Title color for boxes
+theme[title]="#f4decd"
+
+# Highlight color for keyboard shortcuts
+theme[hi_fg]="#f16e65"
+
+# Background color of selected items
+theme[selected_bg]="#1e1f1e"
+
+# Foreground color of selected items
+theme[selected_fg]="#d9cdb5"
+
+# Color of inactive/disabled text
+theme[inactive_fg]="#3b403c"
+
+# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
+theme[graph_text]="#f4decd"
+
+# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
+theme[proc_misc]="#7ec97e"
+
+# Cpu box outline color
+theme[cpu_box]="#f16e65"
+
+# Memory/disks box outline color
+theme[mem_box]="#ef934d"
+
+# Net up/down box outline color
+theme[net_box]="#7ec97e"
+
+# Processes box outline color
+theme[proc_box]="#71b4d6"
+
+# Box divider line and small boxes line color
+theme[div_line]="#3b403c"
+
+# Temperature graph colors
+theme[temp_start]="#7ec97e"
+theme[temp_mid]="#efbf71"
+theme[temp_end]="#f16e65"
+
+# CPU graph colors
+theme[cpu_start]="#7ec97e"
+theme[cpu_mid]="#efbf71"
+theme[cpu_end]="#f16e65"
+
+# Mem/Disk free meter
+theme[free_start]="#f16e65"
+theme[free_mid]="#efbf71"
+theme[free_end]="#7ec97e"
+
+# Mem/Disk cached meter
+theme[cached_start]="#71b4d6"
+theme[cached_mid]="#7ec9a3"
+theme[cached_end]="#7ec97e"
+
+# Mem/Disk available meter
+theme[available_start]="#f16e65"
+theme[available_mid]="#efbf71"
+theme[available_end]="#7ec97e"
+
+# Mem/Disk used meter
+theme[used_start]="#7ec97e"
+theme[used_mid]="#efbf71"
+theme[used_end]="#f16e65"
+
+# Download graph colors
+theme[download_start]="#7ec97e"
+theme[download_mid]="#7ec9a3"
+theme[download_end]="#71b4d6"
+
+# Upload graph colors
+theme[upload_start]="#efbf71"
+theme[upload_mid]="#ef934d"
+theme[upload_end]="#f16e65"
+
+# Process box color gradient for threads, mem and cpu usage
+theme[process_start]="#7ec97e"
+theme[process_mid]="#ef968f"
+theme[process_end]="#f16e65"
diff --git a/.config/fastfetch/config.jsonc b/.config/fastfetch/config.jsonc
new file mode 100755
index 0000000..d655969
--- /dev/null
+++ b/.config/fastfetch/config.jsonc
@@ -0,0 +1,69 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+ "logo": {
+ "type": "auto",
+ //"source": "~/.config/fastfetch/gentoo.png",
+ "source": "~/.config/fastfetch/ep-wb-icon-trnsp.png",
+ //"source": "~/.config/fastfetch/pluto-trnsp.png",
+ //"source": "~/.config/fastfetch/ganymede2.png",
+ "width": 15,
+ "height": 7,
+ "padding": {
+ "top": 0,
+ "bottom": 0,
+ "right": 3,
+ "left": 2,
+ },
+ },
+ "display": {
+ "separator": " › ",
+ "color": {
+ "title": "light_red",
+ "format": "{host-name}",
+ },
+ },
+ "modules": [
+ {
+ "type": "title",
+ "key": " ",
+ "keyColor": "red",
+ "format": "{#38}{2}",
+ },
+ {
+ "type": "os",
+ "key": " ",
+ "keyColor": "yellow",
+ "format": "{name}",
+ },
+ {
+ "type": "packages",
+ "format": "{}",
+ "key": " ",
+ "keyColor": "light_yellow",
+ },
+ {
+ "type": "shell",
+ "key": ">_",
+ "keyColor": "green",
+ "format": "{}",
+ },
+ {
+ "type": "terminal",
+ "key": " ",
+ "keyColor": "cyan",
+ "format": "{}",
+ },
+ {
+ "type": "wm",
+ "key": " ",
+ "keyColor": "blue",
+ "format": "{}",
+ },
+ {
+ "type": "memory",
+ "key": " ",
+ "keyColor": "magenta",
+ "format": "{}",
+ },
+ ]
+}
diff --git a/.config/fastfetch/ep-wb-icon-trnsp.png b/.config/fastfetch/ep-wb-icon-trnsp.png
new file mode 100755
index 0000000..1d4bed9
--- /dev/null
+++ b/.config/fastfetch/ep-wb-icon-trnsp.png
Binary files differ
diff --git a/.config/fastfetch/ganymede.png b/.config/fastfetch/ganymede.png
new file mode 100755
index 0000000..6d241ec
--- /dev/null
+++ b/.config/fastfetch/ganymede.png
Binary files differ
diff --git a/.config/fastfetch/ganymede2.png b/.config/fastfetch/ganymede2.png
new file mode 100755
index 0000000..52f0fab
--- /dev/null
+++ b/.config/fastfetch/ganymede2.png
Binary files differ
diff --git a/.config/fastfetch/gentoo.png b/.config/fastfetch/gentoo.png
new file mode 100755
index 0000000..c4114f5
--- /dev/null
+++ b/.config/fastfetch/gentoo.png
Binary files differ
diff --git a/.config/fastfetch/pluto-trnsp.png b/.config/fastfetch/pluto-trnsp.png
new file mode 100755
index 0000000..13ba452
--- /dev/null
+++ b/.config/fastfetch/pluto-trnsp.png
Binary files differ
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
new file mode 100755
index 0000000..4279e25
--- /dev/null
+++ b/.config/fish/config.fish
@@ -0,0 +1,27 @@
+if status is-interactive
+ # commands to run in interactive sessions can go here
+
+ # aliases
+ alias nv='nvim'
+ alias ls='eza --icons=always'
+ alias grep='grep --color=auto'
+ alias scsh='grim -g "$(slurp)" - | wl-copy'
+ alias ff='fastfetch'
+ alias dark='sudo ddcutil setvcp 10 5 --display 2 & sudo ddcutil setvcp 10 5 --display 1;'
+ alias bright='sudo ddcutil setvcp 10 100 --display 2 & sudo ddcutil setvcp 10 100 --display 1;'
+ alias kys='exit'
+end
+
+
+
+# yazi
+function y
+ set tmp (mktemp -t "yazi-cwd.XXXXXX")
+ yazi --cwd-file="$tmp" $argv
+ if test -s "$tmp"
+ if test -n (cat -- "$tmp") -a (cat -- "$tmp") != (pwd)
+ cd -- (cat -- "$tmp")
+ end
+ end
+ rm -f -- "$tmp"
+end
diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini
new file mode 100755
index 0000000..f9dedaa
--- /dev/null
+++ b/.config/foot/foot.ini
@@ -0,0 +1,67 @@
+term=foot
+title=foot
+
+#font=Cartograph Mono CF:size=14
+#font=ProFont IIx Nerd Font:size=12
+#font=CaskaydiaCove NF:size=14
+#font=MapleMono NF Medium:size=14
+#font=IBM EGA 8x14:size=19
+#font=Departure Mono:size=14
+#font=Terminess Nerd Font:size=14
+#font=GohuFont 11 Nerd Font:size=13
+#font=GohuFont 14 Nerd Font:size=13
+#font=JetBrains Mono NF:size=14
+#font=IBM VGA 8x16:size=19
+#font=IBM Plex Mono:size=14
+#font=NotoMono NF:size=14
+#font=Monocraft:size=13
+font=B612 Mono:size=14
+font=RobotoMono Nerd Font:size=14
+
+pad=8x8
+
+dpi-aware=yes
+
+[cursor]
+# style=block
+# blink=no
+# blink-rate=500
+# beam-thickness=1.5
+# underline-thickness=<font underline thickness>
+
+[colors]
+alpha=1
+background=0f0f0f
+foreground=f4decd
+
+# black
+regular0 = 1e1f1e
+bright0 = 3b403c
+
+# red
+regular1 = f16e65
+bright1 = ef968f
+
+# green
+regular2 = 7ec97e
+bright2 = a4daa4
+
+# yellow
+regular3 = ef934d
+bright3 = f4b585
+
+# blue
+regular4 = 71b4d6
+bright4 = b0d4e8
+
+# magenta
+regular5 = e28dc6
+bright5 = ebadd6
+
+# cyan
+regular6 = 7ec9a3
+bright6 = abd4bf
+
+# white
+regular7 = d9cdb5
+bright7 = f4decd
diff --git a/.config/fsel/config.toml b/.config/fsel/config.toml
new file mode 100644
index 0000000..40cbfda
--- /dev/null
+++ b/.config/fsel/config.toml
@@ -0,0 +1,29 @@
+# Default values
+highlight_color = "Yellow"
+cursor = "█"
+terminal_launcher = "alacritty -e"
+hard_stop = false
+
+# UI Customization
+rounded_borders = false
+
+# Border Colors (individual colors for each panel)
+main_border_color = "White" # Border color for the main info panel (top)
+apps_border_color = "White" # Border color for the apps list panel (middle)
+input_border_color = "White" # Border color for the input panel (bottom)
+
+# Text Colors (non-highlighted text in each panel)
+main_text_color = "White" # Text color for the main info panel
+apps_text_color = "White" # Text color for the apps list
+input_text_color = "White" # Text color for the input field
+
+# Fancy Mode - Show selected app info in panel titles
+fancy_mode = true # When true: "Apps" becomes selected app name, "Gyr" becomes app description
+
+# Header title color (for panel border titles)
+header_title_color = "Green" # Color for all panel header titles
+
+# Layout Configuration (percentages and sizes)
+title_panel_height_percent = 30 # Height of top panel as percentage (10-70%)
+input_panel_height = 3 # Height of input panel in lines (1-10)
+# Note: Apps panel gets the remaining space automatically
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..c32ed4e
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,4 @@
+require("config.keymaps")
+require("config.options")
+require("config.lazy")
+require("caelus.init").colorscheme()
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
new file mode 100644
index 0000000..3ccc823
--- /dev/null
+++ b/.config/nvim/lazy-lock.json
@@ -0,0 +1,29 @@
+{
+ "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
+ "harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
+ "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
+ "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
+ "mason-lspconfig.nvim": { "branch": "main", "commit": "21c2a84ce368e99b18f52ab348c4c02c32c02fcf" },
+ "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
+ "mini.nvim": { "branch": "main", "commit": "4ca988557786c9a4e41d5e5b6e31b4c9d7379f53" },
+ "nim.nvim": { "branch": "master", "commit": "9ee8fdc04ad3d7fcbd9679e0be3477543f17b9d9" },
+ "nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
+ "nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
+ "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
+ "nvim-highlight-colors": { "branch": "main", "commit": "e2cb22089cc2358b2b995c09578224f142de6039" },
+ "nvim-lint": { "branch": "master", "commit": "bcd1a44edbea8cd473af7e7582d3f7ffc60d8e81" },
+ "nvim-lsp-file-operations": { "branch": "master", "commit": "b9c795d3973e8eec22706af14959bc60c579e771" },
+ "nvim-lspconfig": { "branch": "master", "commit": "44acfe887d4056f704ccc4f17513ed41c9e2b2e6" },
+ "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
+ "nvim-web-devicons": { "branch": "master", "commit": "746ffbb17975ebd6c40142362eee1b0249969c5c" },
+ "oil.nvim": { "branch": "master", "commit": "f55b25e493a7df76371cfadd0ded5004cb9cd48a" },
+ "org-bullets.nvim": { "branch": "main", "commit": "21437cfa99c70f2c18977bffd423f912a7b832ea" },
+ "orgmode": { "branch": "master", "commit": "26aa4fa26c570da6eb6798fb1b8df364204c3d99" },
+ "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
+ "render-markdown.nvim": { "branch": "main", "commit": "48b4175dbca8439d30c1f52231cbe5a712c8f9d9" },
+ "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
+ "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
+ "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
+ "undotree": { "branch": "main", "commit": "f68aed28c8ff1294b012dfadaced2084dc045870" },
+ "v-vim": { "branch": "master", "commit": "1dc1388bafb89072f8349dbd96f9462ae22237cb" }
+}
diff --git a/.config/nvim/lua/caelus/init.lua b/.config/nvim/lua/caelus/init.lua
new file mode 100644
index 0000000..3aa029e
--- /dev/null
+++ b/.config/nvim/lua/caelus/init.lua
@@ -0,0 +1,88 @@
+local M = {};
+
+local colors = {
+ bg = "#0f0f0f",
+ gray0 = "#141514";
+ gray1 = "#1e1f1e";
+ gray2 = "#272a28";
+ gray3 = "#3b403c";
+ gray4 = "#585f5b";
+ gray5 = "#6c756f";
+ gray6 = "#888e7b";
+ gray7 = "#9a9c8b";
+ gray8 = "#b6b69a";
+ gray9 = "#d9cdb5";
+ gray10 = "#e3d6c9";
+ fg = "#f4decd",
+ red = "#f16e65";
+ lred = "#ef968f";
+ orange = "#ef934d";
+ yellow = "#efbf71";
+ green = "#7ec97e";
+ lgreen = "#a4daa4";
+ cyan = "#7ec9a3";
+ lcyan = "#abd4bf";
+ blue = "#71b4d6";
+ lblue = "#b0d4e8";
+ magenta = "#e28dc6";
+ lmagenta = "#ebadd6";
+}
+
+function M.colorscheme()
+ vim.cmd("highlight clear")
+ vim.cmd("syntax reset")
+
+ vim.o.background = "dark";
+ vim.g.colors_name = "caelus";
+
+ local set = vim.api.nvim_set_hl
+
+ -- ui
+ set(0, "Normal", { fg = colors.fg, bg = colors.bg })
+ set(0, "NormalFloat", { fg = colors.fg, bg = colors.bg })
+ set(0, "FloatBorder", { fg = colors.fg, bg = colors.bg })
+ set(0, "CursorLine", { bg = colors.gray2 })
+ set(0, "Visual", { bg = colors.gray3 })
+ set(0, "Search", { fg = colors.bg, bg = colors.orange })
+ set(0, "IncSearch", { fg = colors.bg, bg = colors.orange })
+ set(0, "StatusLine", { bg = colors.gray2 })
+ set(0, "StatusLineNC", { bg = colors.orange })
+ set(0, "VertSplit", { fg = colors.gray8 })
+ set(0, "WinSeparator", { fg = colors.gray8 })
+ set(0, "LineNr", { fg = colors.gray6 })
+ set(0, "CursorLineNr", { fg = colors.orange, bold = true })
+ set(0, "SignColumn", { bg = colors.bg })
+ set(0, "Folded", { fg = colors.gray8, bg = colors.gray3 })
+
+ -- popup
+ set(0, "Pmenu", { fg = colors.fg, bg = colors.gray10 })
+ set(0, "PmenuSel", { fg = colors.bg, bg = colors.orange })
+ set(0, "PmenuSbar", { bg = colors.gray10 })
+ set(0, "PmenuThumb", { bg = colors.orange })
+
+ -- syntax
+ set(0, "Comment", { fg = colors.gray8, italic = true })
+ set(0, "Constant", { fg = colors.magenta })
+ set(0, "String", { fg = colors.green })
+ set(0, "Identifier", { fg = colors.blue })
+ set(0, "Function", { fg = colors.yellow })
+ set(0, "Statement", { fg = colors.red })
+ set(0, "Type", { fg = colors.cyan, bold = true })
+ set(0, "Special", { fg = colors.yellow })
+ set(0, "Error", { fg = colors.red, bold = true })
+ set(0, "Keyword", { fg = colors.red })
+ set(0, "Variable", { fg = colors.fg })
+ set(0, "TSKeyword", { fg = colors.red })
+ set(0, "TSFunction", { fg = colors.yellow })
+ set(0, "TSVariable", { fg = colors.fg })
+ set(0, "TSType", { fg = colors.cyan })
+
+ if package.loaded['lualine'] then
+ require('lualine').setup({
+ options = { theme = 'caelus' },
+ })
+ end
+
+end
+
+return M
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100755
index 0000000..a6a9a9e
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,11 @@
+localopts = { noremap = true, silent = true }
+
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
+
+vim.keymap.set({"n", "v"}, "y", '"+y', { noremap = true, silent = true })
+
+vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "moves lines down in visual selection" })
+vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "moves lines up in visual selection" })
+
+vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..c381a4b
--- /dev/null
+++ b/.config/nvim/lua/config/lazy.lua
@@ -0,0 +1,35 @@
+-- Bootstrap lazy.nvim
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+vim.opt.rtp:prepend(lazypath)
+
+-- Make sure to setup `mapleader` and `maplocalleader` before
+-- loading lazy.nvim so that mappings are correct.
+-- This is also a good place to setup other settings (vim.opt)
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+-- Setup lazy.nvim
+require("lazy").setup({
+ spec = {
+ -- import your plugins
+ { import = "plugins" },
+ },
+ -- Configure any other settings here. See the documentation for more details.
+ -- colorscheme that will be used when installing plugins.
+ install = { colorscheme = { "habamax" } },
+ -- automatically check for plugin updates
+ checker = { enabled = true },
+})
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
new file mode 100755
index 0000000..03cdf88
--- /dev/null
+++ b/.config/nvim/lua/config/options.lua
@@ -0,0 +1,40 @@
+vim.cmd("let g:netrw_banner = 0")
+vim.cmd("set termguicolors")
+
+vim.opt.guicursor = ""
+vim.opt.nu = true
+vim.opt.relativenumber = true
+
+vim.opt.tabstop = 2
+vim.opt.softtabstop = 2
+vim.opt.shiftwidth = 2
+vim.opt.expandtab = true
+vim.opt.autoindent = true
+vim.opt.smartindent = true
+vim.opt.wrap = true
+
+vim.opt.swapfile = false
+vim.opt.backup = false
+vim.opt.undofile = true
+
+vim.opt.incsearch = true
+vim.opt.inccommand = "split"
+vim.opt.ignorecase = true
+vim.opt.smartcase = true
+
+vim.opt.termguicolors = true
+vim.opt.background = "dark"
+vim.opt.scrolloff = 8
+vim.opt.signcolumn = "yes"
+
+vim.opt.backspace = { "start", "eol", "indent" }
+
+vim.opt.splitright = true
+vim.opt.splitbelow = true
+
+vim.opt.hlsearch = true
+
+vim.opt.mouse = "a"
+vim.g.editorconfig = true
+
+vim.g.markdown_folding = 1
diff --git a/.config/nvim/lua/plugins/auto-pairs.lua b/.config/nvim/lua/plugins/auto-pairs.lua
new file mode 100755
index 0000000..db98da2
--- /dev/null
+++ b/.config/nvim/lua/plugins/auto-pairs.lua
@@ -0,0 +1,24 @@
+return {
+ "windwp/nvim-autopairs",
+ event = { "InsertEnter" },
+ dependencies = {
+ "hrsh7th/nvim-cmp",
+ },
+ config = function()
+ local autopairs = require("nvim-autopairs")
+
+ autopairs.setup({
+ check_ts = true,
+ ts_config = {
+ lua = { "string" },
+ javascript = { "template_string" },
+ java = false,
+ },
+ })
+
+ local cmp_autopairs = require("nvim-autopairs.completion.cmp")
+ local cmp = require("cmp")
+
+ cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
+ end,
+}
diff --git a/.config/nvim/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua
new file mode 100755
index 0000000..dee6b43
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorizer.lua
@@ -0,0 +1,6 @@
+return {
+ "norcalli/nvim-colorizer.lua",
+ config = function()
+ require("colorizer").setup()
+ end,
+}
diff --git a/.config/nvim/lua/plugins/eslint.lua b/.config/nvim/lua/plugins/eslint.lua
new file mode 100755
index 0000000..ba74b8a
--- /dev/null
+++ b/.config/nvim/lua/plugins/eslint.lua
@@ -0,0 +1,41 @@
+return {
+ "mfussenegger/nvim-lint",
+ event = { "BufReadPre", "BufNewFile" },
+ config = function()
+ local lint = require("lint")
+ local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
+ local eslint = lint.linters.eslint_d
+
+ -- if Eslint error configuration not found : change MasonInstall eslint@version or npm i -g eslint at a specific version
+ lint.linters_by_ft = {
+ javascript = { "eslint_d" },
+ typescript = { "eslint_d" },
+ javascriptreact = { "eslint_d" },
+ typescriptreact = { "eslint_d" },
+ svelte = { "eslint_d" },
+ python = { "pylint" },
+ }
+
+ eslint.args = {
+ "--no-warn-ignored",
+ "--format",
+ "json",
+ "--stdin",
+ "--stdin-filename",
+ function()
+ return vim.fn.expand("%:p")
+ end,
+ }
+
+ vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
+ group = lint_augroup,
+ callback = function()
+ lint.try_lint()
+ end,
+ })
+
+ vim.keymap.set("n", "<leader>l", function()
+ lint.try_lint()
+ end, { desc = "Trigger linting for current file" })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/everpuccin.lua.bkp b/.config/nvim/lua/plugins/everpuccin.lua.bkp
new file mode 100644
index 0000000..876c20a
--- /dev/null
+++ b/.config/nvim/lua/plugins/everpuccin.lua.bkp
@@ -0,0 +1,330 @@
+return {
+ "catppuccin/nvim",
+ name = "catppuccin",
+ lazy = false,
+ priority = 1000,
+ config = function()
+ require("catppuccin").setup({
+ background = {
+ light = "latte",
+ dark = "mocha",
+ },
+ color_overrides = {
+ macchiato = {
+ rosewater = "#ef958f",
+ flamingo = "#ef958f",
+ red = "#f16e65",
+ maroon = "#f16e65",
+ pink = "#ebadd6",
+ mauve = "#e28dc6",
+ peach = "#ef944d",
+ yellow = "#efbe71",
+ green = "#7dc97d",
+ teal = "#a4daa4",
+ sky = "#7dc9a3",
+ sapphire = "#abd4bf",
+ blue = "#b0d4e8",
+ lavender = "#72b4d6",
+ text = "#F9EEE5",
+ subtext1 = "#E3DAC9",
+ subtext0 = "#D8CCB4",
+ overlay2 = "#B6B69A",
+ overlay1 = "#999C8B",
+ overlay0 = "#878E7A",
+ surface2 = "#6B746E",
+ surface1 = "#585F5A",
+ surface0 = "#3A3F3C",
+ crust = "#272A28",
+ mantle = "#1D1F1E",
+ base = "#131414",
+ none = "#0f0f0f",
+ },
+ },
+ transparent_background = true,
+ show_end_of_buffer = false,
+ integration_default = false,
+ integrations = {
+ barbecue = { dim_dirname = true, bold_basename = true, dim_context = false, alt_background = false },
+ cmp = true,
+ gitsigns = true,
+ hop = true,
+ illuminate = { enabled = true },
+ native_lsp = { enabled = true, inlay_hints = { background = true } },
+ neogit = true,
+ neotree = true,
+ semantic_tokens = true,
+ treesitter = true,
+ treesitter_context = true,
+ vimwiki = true,
+ which_key = true,
+ },
+ highlight_overrides = {
+ all = function(colors)
+ return {
+ CmpItemMenu = { fg = colors.surface2 },
+ CursorLineNr = { fg = colors.text },
+ FloatBorder = { bg = colors.base, fg = colors.surface0 },
+ GitSignsChange = { fg = colors.peach },
+ LineNr = { fg = colors.overlay0 },
+ LspInfoBorder = { link = "FloatBorder" },
+ NeoTreeDirectoryIcon = { fg = colors.subtext1 },
+ NeoTreeDirectoryName = { fg = colors.subtext1 },
+ NeoTreeFloatBorder = { bg = colors.mantle, fg = colors.mantle },
+ -- NeoTreeFloatBorder = { bg = "None" },
+ NeoTreeGitConflict = { fg = colors.red },
+ NeoTreeGitDeleted = { fg = colors.red },
+ NeoTreeGitIgnored = { fg = colors.overlay0 },
+ NeoTreeGitModified = { fg = colors.peach },
+ NeoTreeGitStaged = { fg = colors.green },
+ NeoTreeGitUnstaged = { fg = colors.red },
+ NeoTreeGitUntracked = { fg = colors.green },
+ NeoTreeIndent = { fg = colors.surface1 },
+ NeoTreeNormal = { bg = colors.mantle },
+ NeoTreeNormalNC = { bg = colors.mantle },
+ NeoTreeRootName = { fg = colors.subtext1, style = { "bold" } },
+ NeoTreeTabActive = { fg = colors.text, bg = colors.mantle },
+ NeoTreeTabInactive = { fg = colors.surface2, bg = colors.crust },
+ NeoTreeTabSeparatorActive = { fg = colors.mantle, bg = colors.mantle },
+ NeoTreeTabSeparatorInactive = { fg = colors.crust, bg = colors.crust },
+ NeoTreeWinSeparator = { fg = colors.base, bg = colors.base },
+ NormalFloat = { bg = colors.base },
+ Pmenu = { bg = colors.mantle, fg = "" },
+ -- telescope prompt
+ TelescopePromptTitle = { fg = colors.mantle, bg = "#39fd9c", style = { "bold" } },
+ TelescopePromptCounter = { fg = colors.red, style = { "bold" } },
+ TelescopePromptBorder = { bg = colors.base },
+ -- telescope results
+ TelescopeResultsTitle = { link = "TelescopePromptTitle" },
+ TelescopeResultsBorder = { link = "TelescopePromptBorder" },
+ -- telescope preview
+ TelescopePreviewTitle = { link = "TelescopePromptTitle" },
+ TelescopePreviewBorder = { link = "TelescopePromptBorder" },
+ VertSplit = { bg = colors.base, fg = colors.surface0 },
+ WhichKeyFloat = { bg = colors.mantle },
+ YankHighlight = { bg = colors.surface2 },
+ FidgetTask = { fg = colors.subtext2 },
+ FidgetTitle = { fg = colors.peach },
+
+ IblIndent = { fg = colors.surface0 },
+ IblScope = { fg = colors.overlay0 },
+
+ Boolean = { fg = colors.mauve },
+ Number = { fg = colors.mauve },
+ Float = { fg = colors.mauve },
+
+ PreProc = { fg = colors.mauve },
+ PreCondit = { fg = colors.mauve },
+ Include = { fg = colors.mauve },
+ Define = { fg = colors.mauve },
+ Conditional = { fg = colors.red },
+ Repeat = { fg = colors.red },
+ Keyword = { fg = colors.red },
+ Typedef = { fg = colors.red },
+ Exception = { fg = colors.red },
+ Statement = { fg = colors.red },
+
+ Error = { fg = colors.red },
+ StorageClass = { fg = colors.peach },
+ Tag = { fg = colors.peach },
+ Label = { fg = colors.peach },
+ Structure = { fg = colors.peach },
+ Operator = { fg = colors.peach },
+ Title = { fg = colors.peach },
+ Special = { fg = colors.yellow },
+ SpecialChar = { fg = colors.yellow },
+ Type = { fg = colors.yellow, style = { "bold" } },
+ Function = { fg = colors.green, style = { "bold" } },
+ Delimiter = { fg = colors.subtext2 },
+ Ignore = { fg = colors.subtext2 },
+ Macro = { fg = colors.teal },
+
+ TSAnnotation = { fg = colors.mauve },
+ TSAttribute = { fg = colors.mauve },
+ TSBoolean = { fg = colors.mauve },
+ TSCharacter = { fg = colors.teal },
+ TSCharacterSpecial = { link = "SpecialChar" },
+ TSComment = { link = "Comment" },
+ TSConditional = { fg = colors.red },
+ TSConstBuiltin = { fg = colors.mauve },
+ TSConstMacro = { fg = colors.mauve },
+ TSConstant = { fg = colors.text },
+ TSConstructor = { fg = colors.green },
+ TSDebug = { link = "Debug" },
+ TSDefine = { link = "Define" },
+ TSEnvironment = { link = "Macro" },
+ TSEnvironmentName = { link = "Type" },
+ TSError = { link = "Error" },
+ TSException = { fg = colors.red },
+ TSField = { fg = colors.blue },
+ TSFloat = { fg = colors.mauve },
+ TSFuncBuiltin = { fg = colors.green },
+ TSFuncMacro = { fg = colors.green },
+ TSFunction = { fg = colors.green },
+ TSFunctionCall = { fg = colors.lavender },
+ TSInclude = { fg = colors.red },
+ TSKeyword = { fg = colors.red },
+ TSKeywordFunction = { fg = colors.red },
+ TSKeywordOperator = { fg = colors.peach },
+ TSKeywordReturn = { fg = colors.red },
+ TSLabel = { fg = colors.peach },
+ TSLiteral = { link = "String" },
+ TSMath = { fg = colors.blue },
+ TSMethod = { fg = colors.green },
+ TSMethodCall = { fg = colors.green },
+ TSNamespace = { fg = colors.yellow },
+ TSNone = { fg = colors.text },
+ TSNumber = { fg = colors.mauve },
+ TSOperator = { fg = colors.peach },
+ TSParameter = { fg = colors.text },
+ TSParameterReference = { fg = colors.text },
+ TSPreProc = { link = "PreProc" },
+ TSProperty = { fg = colors.blue },
+ TSPunctBracket = { fg = colors.text },
+ TSPunctDelimiter = { link = "Delimiter" },
+ TSPunctSpecial = { fg = colors.blue },
+ TSRepeat = { fg = colors.red },
+ TSStorageClass = { fg = colors.peach },
+ TSStorageClassLifetime = { fg = colors.peach },
+ TSStrike = { fg = colors.subtext2 },
+ TSString = { fg = colors.green },
+ TSStringEscape = { fg = colors.mauve },
+ TSStringRegex = { fg = colors.green },
+ TSStringSpecial = { link = "SpecialChar" },
+ TSSymbol = { fg = colors.text },
+ TSTag = { fg = colors.peach },
+ TSTagAttribute = { fg = colors.green },
+ TSTagDelimiter = { fg = colors.green },
+ TSText = { fg = colors.green },
+ TSTextReference = { link = "Constant" },
+ TSTitle = { link = "Title" },
+ TSTodo = { link = "Todo" },
+ TSType = { fg = colors.yellow, style = { "bold" } },
+ TSTypeBuiltin = { fg = colors.yellow, style = { "bold" } },
+ TSTypeDefinition = { fg = colors.yellow, style = { "bold" } },
+ TSTypeQualifier = { fg = colors.peach, style = { "bold" } },
+ TSURI = { fg = colors.blue },
+ TSVariable = { fg = colors.text },
+ TSVariableBuiltin = { fg = colors.mauve },
+
+ ["@annotation"] = { link = "TSAnnotation" },
+ ["@attribute"] = { link = "TSAttribute" },
+ ["@boolean"] = { link = "TSBoolean" },
+ ["@character"] = { link = "TSCharacter" },
+ ["@character.special"] = { link = "TSCharacterSpecial" },
+ ["@comment"] = { link = "TSComment" },
+ ["@conceal"] = { link = "Grey" },
+ ["@conditional"] = { link = "TSConditional" },
+ ["@constant"] = { link = "TSConstant" },
+ ["@constant.builtin"] = { link = "TSConstBuiltin" },
+ ["@constant.macro"] = { link = "TSConstMacro" },
+ ["@constructor"] = { link = "TSConstructor" },
+ ["@debug"] = { link = "TSDebug" },
+ ["@define"] = { link = "TSDefine" },
+ ["@error"] = { link = "TSError" },
+ ["@exception"] = { link = "TSException" },
+ ["@field"] = { link = "TSField" },
+ ["@float"] = { link = "TSFloat" },
+ ["@function"] = { link = "TSFunction" },
+ ["@function.builtin"] = { link = "TSFuncBuiltin" },
+ ["@function.call"] = { link = "TSFunctionCall" },
+ ["@function.macro"] = { link = "TSFuncMacro" },
+ ["@include"] = { link = "TSInclude" },
+ ["@keyword"] = { link = "TSKeyword" },
+ ["@keyword.function"] = { link = "TSKeywordFunction" },
+ ["@keyword.operator"] = { link = "TSKeywordOperator" },
+ ["@keyword.return"] = { link = "TSKeywordReturn" },
+ ["@label"] = { link = "TSLabel" },
+ ["@math"] = { link = "TSMath" },
+ ["@method"] = { link = "TSMethod" },
+ ["@method.call"] = { link = "TSMethodCall" },
+ ["@namespace"] = { link = "TSNamespace" },
+ ["@none"] = { link = "TSNone" },
+ ["@number"] = { link = "TSNumber" },
+ ["@operator"] = { link = "TSOperator" },
+ ["@parameter"] = { link = "TSParameter" },
+ ["@parameter.reference"] = { link = "TSParameterReference" },
+ ["@preproc"] = { link = "TSPreProc" },
+ ["@property"] = { link = "TSProperty" },
+ ["@punctuation.bracket"] = { link = "TSPunctBracket" },
+ ["@punctuation.delimiter"] = { link = "TSPunctDelimiter" },
+ ["@punctuation.special"] = { link = "TSPunctSpecial" },
+ ["@repeat"] = { link = "TSRepeat" },
+ ["@storageclass"] = { link = "TSStorageClass" },
+ ["@storageclass.lifetime"] = { link = "TSStorageClassLifetime" },
+ ["@strike"] = { link = "TSStrike" },
+ ["@string"] = { link = "TSString" },
+ ["@string.escape"] = { link = "TSStringEscape" },
+ ["@string.regex"] = { link = "TSStringRegex" },
+ ["@string.special"] = { link = "TSStringSpecial" },
+ ["@symbol"] = { link = "TSSymbol" },
+ ["@tag"] = { link = "TSTag" },
+ ["@tag.attribute"] = { link = "TSTagAttribute" },
+ ["@tag.delimiter"] = { link = "TSTagDelimiter" },
+ ["@text"] = { link = "TSText" },
+ ["@text.danger"] = { link = "TSDanger" },
+ ["@text.diff.add"] = { link = "diffAdded" },
+ ["@text.diff.delete"] = { link = "diffRemoved" },
+ ["@text.emphasis"] = { link = "TSEmphasis" },
+ ["@text.environment"] = { link = "TSEnvironment" },
+ ["@text.environment.name"] = { link = "TSEnvironmentName" },
+ ["@text.literal"] = { link = "TSLiteral" },
+ ["@text.math"] = { link = "TSMath" },
+ ["@text.note"] = { link = "TSNote" },
+ ["@text.reference"] = { link = "TSTextReference" },
+ ["@text.strike"] = { link = "TSStrike" },
+ ["@text.strong"] = { link = "TSStrong" },
+ ["@text.title"] = { link = "TSTitle" },
+ ["@text.todo"] = { link = "TSTodo" },
+ ["@text.todo.checked"] = { link = "Green" },
+ ["@text.todo.unchecked"] = { link = "Ignore" },
+ ["@text.underline"] = { link = "TSUnderline" },
+ ["@text.uri"] = { link = "TSURI" },
+ ["@text.warning"] = { link = "TSWarning" },
+ ["@todo"] = { link = "TSTodo" },
+ ["@type"] = { link = "TSType" },
+ ["@type.builtin"] = { link = "TSTypeBuiltin" },
+ ["@type.definition"] = { link = "TSTypeDefinition" },
+ ["@type.qualifier"] = { link = "TSTypeQualifier" },
+ ["@uri"] = { link = "TSURI" },
+ ["@variable"] = { link = "TSVariable" },
+ ["@variable.builtin"] = { link = "TSVariableBuiltin" },
+
+ ["@lsp.type.class"] = { link = "TSType" },
+ ["@lsp.type.comment"] = { link = "TSComment" },
+ ["@lsp.type.decorator"] = { link = "TSFunction" },
+ ["@lsp.type.enum"] = { link = "TSType" },
+ ["@lsp.type.enumMember"] = { link = "TSProperty" },
+ ["@lsp.type.events"] = { link = "TSLabel" },
+ ["@lsp.type.function"] = { link = "TSFunction" },
+ ["@lsp.type.interface"] = { link = "TSType" },
+ ["@lsp.type.keyword"] = { link = "TSKeyword" },
+ ["@lsp.type.macro"] = { link = "TSConstMacro" },
+ ["@lsp.type.method"] = { link = "TSMethod" },
+ ["@lsp.type.modifier"] = { link = "TSTypeQualifier" },
+ ["@lsp.type.namespace"] = { link = "TSNamespace" },
+ ["@lsp.type.number"] = { link = "TSNumber" },
+ ["@lsp.type.operator"] = { link = "TSOperator" },
+ ["@lsp.type.parameter"] = { link = "TSParameter" },
+ ["@lsp.type.property"] = { link = "TSProperty" },
+ ["@lsp.type.regexp"] = { link = "TSStringRegex" },
+ ["@lsp.type.string"] = { link = "TSString" },
+ ["@lsp.type.struct"] = { link = "TSType" },
+ ["@lsp.type.type"] = { link = "TSType" },
+ ["@lsp.type.typeParameter"] = { link = "TSTypeDefinition" },
+ ["@lsp.type.variable"] = { link = "TSVariable" },
+ }
+ end,
+ latte = function(colors)
+ return {
+ IblIndent = { fg = colors.mantle },
+ IblScope = { fg = colors.surface1 },
+
+ LineNr = { fg = colors.surface1 },
+ }
+ end,
+ },
+ })
+
+ vim.api.nvim_command("colorscheme catppuccin-macchiato")
+ end,
+}
diff --git a/.config/nvim/lua/plugins/harpoon.lua b/.config/nvim/lua/plugins/harpoon.lua
new file mode 100755
index 0000000..407b7f0
--- /dev/null
+++ b/.config/nvim/lua/plugins/harpoon.lua
@@ -0,0 +1,26 @@
+return {
+ "thePrimeagen/harpoon",
+ enabled = true,
+ branch = "harpoon2",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ },
+
+ config = function()
+ local harpoon = require("harpoon")
+
+ harpoon:setup({
+ global_settings = {
+ save_on_toggle = true,
+ save_on_change = true,
+ },
+ })
+
+ vim.keymap.set("n", "<leader>ad", function()
+ harpoon:list():add()
+ end, { desc = "Harpoon add file" })
+ vim.keymap.set("n", "<C-e>", function()
+ harpoon.ui:toggle_quick_menu(harpoon:list())
+ end)
+ end,
+}
diff --git a/.config/nvim/lua/plugins/highlight-colors.lua b/.config/nvim/lua/plugins/highlight-colors.lua
new file mode 100755
index 0000000..5c97573
--- /dev/null
+++ b/.config/nvim/lua/plugins/highlight-colors.lua
@@ -0,0 +1,8 @@
+return {
+ "brenoprata10/nvim-highlight-colors",
+ config = function()
+ vim.opt.termguicolors = true
+
+ require("nvim-highlight-colors").setup({})
+ end,
+}
diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua
new file mode 100755
index 0000000..bd748fc
--- /dev/null
+++ b/.config/nvim/lua/plugins/lspconfig.lua
@@ -0,0 +1,35 @@
+return {
+ "neovim/nvim-lspconfig",
+ event = { "BufReadPre", "BufNewFile" },
+ dependencies = {
+ "hrsh7th/cmp-nvim-lsp",
+ { "antosha417/nvim-lsp-file-operations", config = true },
+ },
+ config = function()
+ vim.diagnostic.config({
+ update_in_insert = true,
+ float = {
+ focusable = false,
+ style = "minimal",
+ border = "rounded",
+ source = "always",
+ header = "",
+ prefix = "",
+ }
+ })
+
+ vim.diagnostic.config({ virtual_text = true })
+
+ local lsp_configurations = require('lspconfig.configs')
+
+ local capabilities = vim.tbl_deep_extend(
+ "force",
+ {},
+ vim.lsp.protocol.make_client_capabilities(),
+ require('cmp_nvim_lsp').default_capabilities()
+ )
+ end,
+ vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts),
+ vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts),
+ vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
+}
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
new file mode 100755
index 0000000..34ec658
--- /dev/null
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,12 @@
+return {
+ 'nvim-lualine/lualine.nvim',
+ dependencies = { 'nvim-tree/nvim-web-devicons' },
+ config = function()
+ require('lualine').setup {
+ options = {
+ icons_enabled = true,
+ theme = 'auto',
+ }
+ }
+ end,
+}
diff --git a/.config/nvim/lua/plugins/markdown.lua b/.config/nvim/lua/plugins/markdown.lua
new file mode 100755
index 0000000..01af860
--- /dev/null
+++ b/.config/nvim/lua/plugins/markdown.lua
@@ -0,0 +1,9 @@
+return {
+ "MeanderingProgrammer/render-markdown.nvim",
+ dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-mini/mini.nvim" }, -- if you use the mini.nvim suite
+ -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
+ -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
+ ---@module 'render-markdown'
+ ---@type render.md.UserConfig
+ opts = {},
+}
diff --git a/.config/nvim/lua/plugins/mason-lspconfig.lua b/.config/nvim/lua/plugins/mason-lspconfig.lua
new file mode 100644
index 0000000..aed1bd5
--- /dev/null
+++ b/.config/nvim/lua/plugins/mason-lspconfig.lua
@@ -0,0 +1,8 @@
+return {
+ "mason-org/mason-lspconfig.nvim",
+ opts = {},
+ dependencies = {
+ { "mason-org/mason.nvim", opts = {} },
+ "neovim/nvim-lspconfig",
+ },
+}
diff --git a/.config/nvim/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua
new file mode 100644
index 0000000..9188cda
--- /dev/null
+++ b/.config/nvim/lua/plugins/mason.lua
@@ -0,0 +1,13 @@
+return{
+ "mason-org/mason.nvim",
+ opts = {
+ ui = {
+ icons = {
+ package_installed = "✓",
+ package_pending = "➜",
+ package_uninstalled = "✗"
+ }
+ }
+ }
+}
+
diff --git a/.config/nvim/lua/plugins/nim.lua b/.config/nvim/lua/plugins/nim.lua
new file mode 100644
index 0000000..d079f68
--- /dev/null
+++ b/.config/nvim/lua/plugins/nim.lua
@@ -0,0 +1,3 @@
+return{
+ "alaviss/nim.nvim"
+}
diff --git a/.config/nvim/lua/plugins/oil.lua b/.config/nvim/lua/plugins/oil.lua
new file mode 100644
index 0000000..5d153fd
--- /dev/null
+++ b/.config/nvim/lua/plugins/oil.lua
@@ -0,0 +1,20 @@
+return {
+ "stevearc/oil.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("oil").setup({
+ default_file_explorer = true,
+ columns = {},
+ keymaps = {
+ ["q"] = "actions.close",
+ },
+ delete_to_trash = true,
+ view_options = {
+ show_hidden = true,
+ },
+ skip_confirm_for_simple_edits = true,
+ })
+
+ vim.keymap.set("n", "<leader>fm", "<CMD>Oil<CR>", { desc = "Open parent directory" })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/orgmode.lua b/.config/nvim/lua/plugins/orgmode.lua
new file mode 100755
index 0000000..0945852
--- /dev/null
+++ b/.config/nvim/lua/plugins/orgmode.lua
@@ -0,0 +1,17 @@
+return {
+ {
+ "nvim-orgmode/orgmode",
+ config = function()
+ require("orgmode").setup({
+ org_agenda_files = "~/orgfiles/**/*",
+ org_default_notes_file = "~/orgfiles/refile.org",
+ })
+ end,
+ },
+ {
+ "akinsho/org-bullets.nvim",
+ config = function()
+ require("org-bullets").setup()
+ end,
+ },
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100755
index 0000000..99f1f5b
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,25 @@
+return {
+ {
+ "nvim-telescope/telescope.nvim",
+ tag = "0.1.8",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ config = function()
+ local builtin = require("telescope.builtin")
+ vim.keymap.set("n", "<leader>fj", builtin.find_files, {})
+ vim.keymap.set("n", "<leader>fl", builtin.live_grep, {})
+ end,
+ },
+ {
+ "nvim-telescope/telescope-ui-select.nvim",
+ config = function()
+ require("telescope").setup({
+ extensions = {
+ ["ui-select"] = {
+ require("telescope.themes").get_dropdown({}),
+ },
+ },
+ })
+ require("telescope").load_extension("ui-select")
+ end,
+ },
+}
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100755
index 0000000..90b57fb
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,15 @@
+return {
+ "nvim-treesitter/nvim-treesitter",
+ branch = "master",
+ lazy = false,
+ build = ":TSUpdate",
+ config = function()
+ local config = require("lazy")
+ config.setup({
+ auto_install = true,
+ highlight = { enable = true },
+ ensure_installed = { "v", "c", "lua", "vim", "markeown" },
+ indent = { enable = true },
+ })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua
new file mode 100644
index 0000000..3741f30
--- /dev/null
+++ b/.config/nvim/lua/plugins/trouble.lua
@@ -0,0 +1,37 @@
+return {
+ "folke/trouble.nvim",
+ opts = {}, -- for default options, refer to the configuration section for custom setup.
+ cmd = "Trouble",
+ keys = {
+ {
+ "<leader>xx",
+ "<cmd>Trouble diagnostics toggle<cr>",
+ desc = "Diagnostics (Trouble)",
+ },
+ {
+ "<leader>xX",
+ "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
+ desc = "Buffer Diagnostics (Trouble)",
+ },
+ {
+ "<leader>cs",
+ "<cmd>Trouble symbols toggle focus=false<cr>",
+ desc = "Symbols (Trouble)",
+ },
+ {
+ "<leader>cl",
+ "<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
+ desc = "LSP Definitions / references / ... (Trouble)",
+ },
+ {
+ "<leader>xL",
+ "<cmd>Trouble loclist toggle<cr>",
+ desc = "Location List (Trouble)",
+ },
+ {
+ "<leader>xQ",
+ "<cmd>Trouble qflist toggle<cr>",
+ desc = "Quickfix List (Trouble)",
+ },
+ },
+}
diff --git a/.config/nvim/lua/plugins/undotree.lua b/.config/nvim/lua/plugins/undotree.lua
new file mode 100755
index 0000000..88a2038
--- /dev/null
+++ b/.config/nvim/lua/plugins/undotree.lua
@@ -0,0 +1,8 @@
+return {
+ "jiaoshijie/undotree",
+ dependencies = "nvim-lua/plenary.nvim",
+ config = true,
+ keys = {
+ { "<leader>u", "<cmd>lua require('undotree').toggle()<cr>" },
+ },
+}
diff --git a/.config/nvim/lua/plugins/vlang.lua b/.config/nvim/lua/plugins/vlang.lua
new file mode 100644
index 0000000..8199b3c
--- /dev/null
+++ b/.config/nvim/lua/plugins/vlang.lua
@@ -0,0 +1,7 @@
+return {
+ 'neovim/nvim-lspconfig',
+ config = function()
+ require('lspconfig').vlang.setup({})
+ end,
+ 'ollykel/v-vim'
+}
diff --git a/.config/otter-launcher/config.toml b/.config/otter-launcher/config.toml
new file mode 100644
index 0000000..a0a53ab
--- /dev/null
+++ b/.config/otter-launcher/config.toml
@@ -0,0 +1,126 @@
+[general]
+default_module = "app" # The module to run when no prefix is matched
+empty_module = "a" # run with an empty prompt
+exec_cmd = "sh -c" # The exec command of your shell, default to sh
+# for example: "bach -c" for bash; "zsh -c" for zsh. This can also runs wm exec commands, like hyprctl dispatch exec
+vi_mode = true # set true to use vi keybinds, false to use emacs keybinds; default to emacs
+esc_to_abort = true # allow to quit with esc keypress; a useful option for vi users
+cheatsheet_entry = "?" # when entered, otter-launcher will show a list of configured modules
+cheatsheet_viewer = "less -R; clear" # the program that otter-launcher will pipe cheatsheet into
+clear_screen_after_execution = false # useful when chafa image flash back after module execution
+loop_mode = false # in loop mode, otter-launcher won't quit after running a module, useful when using scratchpad
+external_editor = "" # if set, pressing ctrl+e (or pressing v in vi normal mode) will edit the input field in the specified program; default to no external editor
+#callback = "" # if set, otter-launcher will run the command after a module is executed; for example, it can call swaymsg to adjust window size
+
+# ASCII color codes are allowed with these options. However, \x1b should be replaced with \u001B (unicode escape) because the rust toml crate cannot read \x as an escaped character...
+[interface]
+# use three quotes to write longer commands
+header = """
+ \u001B[34;1m >\u001B[0m $USER@$(echo $HOSTNAME) \u001B[31m\u001B[0m $(cat /proc/loadavg | cut -d ' ' -f 1) \u001B[33m󰍛\u001B[0m $(free -h | awk 'FNR == 2 {print $3}' | sed 's/i//')
+ \u001B[34;1m>\u001B[0;1m """
+# Run a shell command and make the stdout printed above the header
+header_cmd = ""
+header_cmd_trimmed_lines = 0 # Remove a number of lines from header_cmd output, in case of some programs printing excessive empty lines at the end of its output
+header_concatenate = false # print header and header_cmd output at the same line, default to false
+list_prefix = " "
+selection_prefix = " \u001B[31;1m> "
+place_holder = "type and search"
+default_module_message = " \u001B[33msearch\u001B[0m the internet" # if set, the text will be shown when the default module is in use
+empty_module_message = "" # the text to show when empty module is in use
+suggestion_mode = "list" # available options: list, hint
+suggestion_lines = 12 # length of the suggestion list, set to 0 to disable suggestions and tab completion
+indicator_with_arg_module = "\u001B[31m^\u001B[0m " # a sign showing whether the module should run with an argument
+indicator_no_arg_module = "\u001B[31m$\u001B[0m "
+prefix_padding = 3 # format prefixes to have a uniformed width; prefixes will be padded with spaces to have a least specified number of chars
+# below color options affect all modules; per-module coloring is allowed by using ascii color codes at each module's configurations
+prefix_color = "\u001B[33m"
+description_color = "\u001B[39m"
+place_holder_color = "\u001B[30m"
+hint_color = "\u001B[30m" # the color of hint mode suggestions
+# move the whole interface rightward or upward, easier for styling with chafa image
+move_right = 0
+move_up = 0
+
+
+[[modules]]
+description = "search with brave"
+prefix = "br"
+cmd = "setsid -f xdg-open 'https://search.brave.com/search?q={}'"
+with_argument = true
+url_encode = true
+
+[[modules]]
+description = "kill a runing app"
+prefix = "k"
+cmd = 'ps -u "$USER" -o comm= | sort -u | fsel --dmenu | xargs -r pkill -9'
+with_argument = true
+url_encode = true
+
+[[modules]]
+description = "launch apps with fsel"
+prefix = "a"
+cmd = "fsel -vv -r -d -ss \"{}\""
+with_argument = true
+
+[[modules]]
+description = "launch apps instantly"
+prefix = "app"
+cmd = "fsel -vv -r -d -p {}"
+with_argument = true
+
+[[modules]]
+description = "manage clipboard with fsel"
+prefix = "cl"
+cmd = """
+fsel --cclip
+"""
+
+[[modules]]
+description = "find pkgs"
+prefix = "pm"
+cmd = "pmux -SD {}"
+with_argument = true
+
+[[modules]]
+description = "install pkgs"
+prefix = "i"
+cmd = "pmux -S {}"
+with_argument = true
+
+[[modules]]
+description = "power menu with fzf"
+prefix = "p"
+cmd = """
+function power {
+if [[ -n $1 ]]; then
+case $1 in
+"logout") session=`loginctl session-status | head -n 1 | awk '{print $1}'`; loginctl terminate-session $session ;;
+"suspend") systemctl suspend ;;
+"hibernate") systemctl hibernate ;;
+"reboot") systemctl reboot ;;
+"shutdown") systemctl poweroff ;;
+esac fi }
+power $(echo -e 'reboot\nshutdown\nlogout\nsuspend\nhibernate' | fzf --reverse --no-scrollbar --padding 1,3 --prompt 'Power Menu: ' | tail -1)
+"""
+
+[[modules]]
+description = "run command in terminal"
+prefix = "s"
+cmd = """
+setsid -f "$(echo $TERM | sed 's/xterm-//g')" -e {}
+"""
+with_argument = true
+
+[[modules]]
+description = "search archwiki"
+prefix = "w"
+cmd = "setsid -f xdg-open https://wiki.archlinux.org/index.php?search='{}'"
+with_argument = true
+url_encode = true
+
+[[modules]]
+description = "cambridge dictionary"
+prefix = "dc"
+cmd = "setsid -f xdg-open 'https://dictionary.cambridge.org/dictionary/english/{}'"
+with_argument = true
+url_encode = true
diff --git a/.config/otter-launcher/sway-launcher-desktop.sh b/.config/otter-launcher/sway-launcher-desktop.sh
new file mode 100755
index 0000000..0153175
--- /dev/null
+++ b/.config/otter-launcher/sway-launcher-desktop.sh
@@ -0,0 +1,390 @@
+#!/usr/bin/env bash
+# terminal application launcher for sway, using fzf
+# Based on: https://gitlab.com/FlyingWombat/my-scripts/blob/master/sway-launcher
+# https://gist.github.com/Biont/40ef59652acf3673520c7a03c9f22d2a
+shopt -s nullglob globstar
+set -o pipefail
+if ! { exec 0>&3; } 1>/dev/null 2>&1; then
+ exec 3>/dev/null # If file descriptor 3 is unused in parent shell, output to /dev/null
+fi
+# shellcheck disable=SC2154
+trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
+IFS=$'\n\t'
+DEL=$'\34'
+
+FZF_COMMAND="${FZF_COMMAND:=fzf}"
+TERMINAL_COMMAND="${TERMINAL_COMMAND:="$TERMINAL -e"}"
+GLYPH_COMMAND="${GLYPH_COMMAND- }"
+GLYPH_DESKTOP="${GLYPH_DESKTOP- }"
+CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/sway-launcher-desktop"
+PROVIDERS_FILE="${PROVIDERS_FILE:=providers.conf}"
+if [[ "${PROVIDERS_FILE#/}" == "${PROVIDERS_FILE}" ]]; then
+ # $PROVIDERS_FILE is a relative path, prepend $CONFIG_DIR
+ PROVIDERS_FILE="${CONFIG_DIR}/${PROVIDERS_FILE}"
+fi
+if [[ ! -v PREVIEW_WINDOW ]]; then
+ PREVIEW_WINDOW=up:2:noborder
+fi
+
+# Provider config entries are separated by the field separator \034 and have the following structure:
+# list_cmd,preview_cmd,launch_cmd,purge_cmd
+declare -A PROVIDERS
+if [ -f "${PROVIDERS_FILE}" ]; then
+ eval "$(awk -F= '
+ BEGINFILE{ provider=""; }
+ /^\[.*\]/{sub("^\\[", "");sub("\\]$", "");provider=$0}
+ /^(launch|list|preview|purge)_cmd/{st = index($0,"=");providers[provider][$1] = substr($0,st+1)}
+ ENDFILE{
+ for (key in providers){
+ if(!("list_cmd" in providers[key])){continue;}
+ if(!("launch_cmd" in providers[key])){continue;}
+ if(!("preview_cmd" in providers[key])){continue;}
+ if(!("purge_cmd" in providers[key])){providers[key]["purge_cmd"] = "exit 0";}
+ for (entry in providers[key]){
+ gsub(/[\x27,\047]/,"\x27\"\x27\"\x27", providers[key][entry])
+ }
+ print "PROVIDERS[\x27" key "\x27]=\x27" providers[key]["list_cmd"] "\034" providers[key]["preview_cmd"] "\034" providers[key]["launch_cmd"] "\034" providers[key]["purge_cmd"] "\x27\n"
+ }
+ }' "${PROVIDERS_FILE}")"
+ if [[ ! -v HIST_FILE ]]; then
+ HIST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/${0##*/}-${PROVIDERS_FILE##*/}-history.txt"
+ fi
+else
+ PROVIDERS['desktop']="${0} list-entries${DEL}${0} describe-desktop \"{1}\"${DEL}${0} run-desktop '{1}' {2}${DEL}test -f '{1}' || exit 43"
+ PROVIDERS['command']="${0} list-commands${DEL}${0} describe-command \"{1}\"${DEL}${TERMINAL_COMMAND} {1}${DEL}command -v '{1}' || exit 43"
+ if [[ ! -v HIST_FILE ]]; then
+ HIST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/${0##*/}-history.txt"
+ fi
+fi
+PROVIDERS['user']="exit${DEL}exit${DEL}{1}" # Fallback provider that simply executes the exact command if there were no matches
+
+if [[ -n "${HIST_FILE}" ]]; then
+ mkdir -p "${HIST_FILE%/*}" && touch "$HIST_FILE"
+ readarray HIST_LINES <"$HIST_FILE"
+fi
+
+function describe() {
+ # shellcheck disable=SC2086
+ readarray -d ${DEL} -t PROVIDER_ARGS <<<${PROVIDERS[${1}]}
+ # shellcheck disable=SC2086
+ [ -n "${PROVIDER_ARGS[1]}" ] && eval "${PROVIDER_ARGS[1]//\{1\}/${2}}"
+}
+function describe-desktop() {
+ description=$(sed -ne '/^Comment=/{s/^Comment=//;p;q}' "$1")
+ echo -e "\033[33m$(sed -ne '/^Name=/{s/^Name=//;p;q}' "$1")\033[0m"
+ echo "${description:-No description}"
+}
+function describe-command() {
+ readarray arr < <(whatis -l "$1" 2>/dev/null)
+ description="${arr[0]}"
+ description="${description#* - }"
+ echo -e "\033[33m${1}\033[0m"
+ echo "${description:-No description}"
+}
+
+function provide() {
+ # shellcheck disable=SC2086
+ readarray -d ${DEL} -t PROVIDER_ARGS <<<${PROVIDERS[$1]}
+ eval "${PROVIDER_ARGS[0]}"
+}
+#function list-commands() {
+# IFS=: read -ra path <<<"$PATH"
+# for dir in "${path[@]}"; do
+# printf '%s\n' "$dir/"* |
+# awk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}'
+# done | sort -u
+#}
+function list-commands() {
+ # Add your path
+ CUSTOM_BIN_DIR="$HOME/.local/share/uspm/bin/"
+
+ # Og PATH directories
+ IFS=: read -ra path <<<"$PATH"
+
+ # directory
+ if [[ -d "$CUSTOM_BIN_DIR" ]]; then
+ path+=("$CUSTOM_BIN_DIR")
+ fi
+
+ for dir in "${path[@]}"; do
+ printf '%s\n' "$dir/"* |
+ awk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}'
+ done | sort -u
+}
+function list-entries() {
+ # Get locations of desktop application folders according to spec
+ # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+ IFS=':' read -ra DIRS <<<"${XDG_DATA_HOME-${HOME}/.local/share}:${XDG_DATA_DIRS-/usr/local/share:/usr/share}"
+ for i in "${!DIRS[@]}"; do
+ if [[ ! -d "${DIRS[i]}" ]]; then
+ unset -v 'DIRS[$i]'
+ else
+ DIRS[$i]="${DIRS[i]}/applications/**/*.desktop"
+ fi
+ done
+
+ # shellcheck disable=SC2068
+ entries ${DIRS[@]} | sort -k2
+}
+function entries() {
+ # shellcheck disable=SC2068
+ awk -v pre="$GLYPH_DESKTOP" -F= '
+ function desktopFileID(filename){
+ sub("^.*applications/", "", filename);
+ sub("/", "-", filename);
+ return filename
+ }
+ BEGINFILE{
+ application=0;
+ hidden=0;
+ block="";
+ a=0
+
+ id=desktopFileID(FILENAME)
+ if(id in fileIds){
+ nextfile;
+ }else{
+ fileIds[id]=0
+ }
+ }
+ /^\[Desktop Entry\]/{block="entry"}
+ /^Type=Application/{application=1}
+ /^\[Desktop Action/{
+ sub("^\\[Desktop Action ", "");
+ sub("\\]$", "");
+ block="action";
+ a++;
+ actions[a,"key"]=$0
+ }
+ /^\[X-/{
+ sub("^\\[X-", "");
+ sub("\\]$", "");
+ block="action";
+ a++;
+ actions[a,"key"]=$0
+ }
+ /^Name=/{ (block=="action")? actions[a,"name"]=$2 : name=$2 }
+ /^NoDisplay=true/{ (block=="action")? actions[a,"hidden"]=1 : hidden=1 }
+ ENDFILE{
+ if (application){
+ if (!hidden)
+ print FILENAME "\034desktop\034\033[33m" pre name "\033[0m";
+ if (a>0)
+ for (i=1; i<=a; i++)
+ if (!actions[i, "hidden"])
+ print FILENAME "\034desktop\034\033[33m" pre name "\033[0m (" actions[i, "name"] ")\034" actions[i, "key"]
+ }
+ }' \
+ $@ </dev/null
+ # the empty stdin is needed in case no *.desktop files
+}
+function run-desktop() {
+ CMD="$("${0}" generate-command "$@" 2>&3)"
+ echo "Generated Launch command from .desktop file: ${CMD}" >&3
+ eval "${CMD}"
+}
+function generate-command() {
+ # Define the search pattern that specifies the block to search for within the .desktop file
+ PATTERN="^\\\\[Desktop Entry\\\\]"
+ if [[ -n $2 ]]; then
+ PATTERN="^\\\\[Desktop Action ${2}\\\\]"
+ fi
+ echo "Searching for pattern: ${PATTERN}" >&3
+ # 1. We see a line starting [Desktop, but we're already searching: deactivate search again
+ # 2. We see the specified pattern: start search
+ # 3. We see an Exec= line during search: remove field codes and set variable
+ # 3. We see a Path= line during search: set variable
+ # 4. Finally, build command line
+ awk -v pattern="${PATTERN}" -v terminal_cmd="${TERMINAL_COMMAND}" -F= '
+ BEGIN{a=0;exec=0;path=0}
+ /^\[Desktop/{
+ if(a){ a=0 }
+ }
+ $0 ~ pattern{ a=1 }
+ /^Terminal=/{
+ sub("^Terminal=", "");
+ if ($0 == "true") { terminal=1 }
+ }
+ /^Exec=/{
+ if(a && !exec){
+ sub("^Exec=", "");
+ gsub(" ?%[cDdFfikmNnUuv]", "");
+ exec=$0;
+ }
+ }
+ /^Path=/{
+ if(a && !path){ path=$2 }
+ }
+ END{
+ if(path){ printf "cd " path " && " }
+ printf "exec "
+ if (terminal){ printf terminal_cmd " " }
+ print exec
+ }' "$1"
+}
+
+function shouldAutostart() {
+ local condition="$(cat $1 | grep "AutostartCondition" | cut -d'=' -f2)"
+ local filename="${XDG_CONFIG_HOME-${HOME}/.config}/${condition#* }"
+ case $condition in
+ if-exists*)
+ [[ -e $filename ]]
+ ;;
+ unless-exists*)
+ [[ ! -e $filename ]]
+ ;;
+ *)
+ return 0
+ ;;
+ esac
+}
+
+function autostart() {
+ for application in $(list-autostart); do
+ if shouldAutostart "$application"; then
+ (exec setsid /bin/sh -c "$(run-desktop "${application}")" &>/dev/null &)
+ fi
+ done
+}
+
+function list-autostart() {
+ # Get locations of desktop application folders according to spec
+ # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+ IFS=':' read -ra DIRS <<<"${XDG_CONFIG_HOME-${HOME}/.config}:${XDG_CONFIG_DIRS-/etc/xdg}"
+ for i in "${!DIRS[@]}"; do
+ if [[ ! -d "${DIRS[i]}" ]]; then
+ unset -v 'DIRS[$i]'
+ else
+ DIRS[$i]="${DIRS[i]}/autostart/*.desktop"
+ fi
+ done
+
+ # shellcheck disable=SC2068
+ awk -v pre="$GLYPH_DESKTOP" -F= '
+ function desktopFileID(filename){
+ sub("^.*autostart/", "", filename);
+ sub("/", "-", filename);
+ return filename
+ }
+ BEGINFILE{
+ application=0;
+ block="";
+ disabled=0;
+ a=0
+
+ id=desktopFileID(FILENAME)
+ if(id in fileIds){
+ nextfile;
+ }else{
+ fileIds[id]=0
+ }
+ }
+ /^\[Desktop Entry\]/{block="entry"}
+ /^Type=Application/{application=1}
+ /^Name=/{ iname=$2 }
+ /^Hidden=true/{disabled=1}
+ ENDFILE{
+ if (application && !disabled){
+ print FILENAME;
+ }
+ }' \
+ ${DIRS[@]} </dev/null
+}
+
+purge() {
+ # shellcheck disable=SC2188
+ >"${HIST_FILE}"
+ declare -A PURGE_CMDS
+ for PROVIDER_NAME in "${!PROVIDERS[@]}"; do
+ readarray -td ${DEL} PROVIDER_ARGS <<<${PROVIDERS[${PROVIDER_NAME}]}
+ PURGE_CMD=${PROVIDER_ARGS[3]}
+ [ -z "${PURGE_CMD}" ] && PURGE_CMD='test -f "{1}" || exit 43'
+ PURGE_CMDS[$PROVIDER_NAME]="${PURGE_CMD%$'\n'}"
+ done
+ for HIST_LINE in "${HIST_LINES[@]#*' '}"; do
+ readarray -td $'\034' HIST_ENTRY <<<${HIST_LINE}
+ ENTRY=${HIST_ENTRY[1]}
+ readarray -td ' ' FILTER <<<${PURGE_CMDS[$ENTRY]//\{1\}/${HIST_ENTRY[0]}}
+ (eval "${FILTER[@]}" 1>/dev/null) # Run filter command discarding output. We only want the exit status
+ if [[ $? -ne 43 ]]; then
+ echo "1 ${HIST_LINE[@]%$'\n'}" >>"${HIST_FILE}"
+ fi
+ done
+}
+
+case "$1" in
+describe | describe-desktop | describe-command | entries | list-entries | list-commands | list-autostart | generate-command | autostart | run-desktop | provide | purge)
+ "$@"
+ exit
+ ;;
+esac
+echo "Starting launcher instance with the following providers:" "${!PROVIDERS[@]}" >&3
+
+FZFPIPE=$(mktemp -u)
+mkfifo "$FZFPIPE"
+trap 'rm "$FZFPIPE"' EXIT INT
+
+# Append Launcher History, removing usage count
+(printf '%s' "${HIST_LINES[@]#* }" >>"$FZFPIPE") &
+
+# Iterate over providers and run their list-command
+for PROVIDER_NAME in "${!PROVIDERS[@]}"; do
+ (bash -c "${0} provide ${PROVIDER_NAME}" >>"$FZFPIPE") &
+done
+
+readarray -t COMMAND_STR <<<$(
+ ${FZF_COMMAND} --ansi +s -x -d '\034' --nth ..3 --with-nth 3 \
+ --print-query \
+ --preview "$0 describe {2} {1}" \
+ --preview-window="${PREVIEW_WINDOW}" \
+ --no-multi --cycle \
+ --prompt="${GLYPH_PROMPT-# }" \
+ --header='' --no-info --margin='1,2' \
+ --color='16,gutter:-1' \
+ <"$FZFPIPE"
+) || exit 1
+# Get the last line of the fzf output. If there were no matches, it contains the query which we'll treat as a custom command
+# If there were matches, it contains the selected item
+COMMAND_STR=$(printf '%s\n' "${COMMAND_STR[@]: -1}")
+# We still need to format the query to conform to our fallback provider.
+# We check for the presence of field separator character to determine if we're dealing with a custom command
+if [[ $COMMAND_STR != *$'\034'* ]]; then
+ COMMAND_STR="${COMMAND_STR}"$'\034user\034'"${COMMAND_STR}"$'\034'
+ SKIP_HIST=1 # I chose not to include custom commands in the history. If this is a bad idea, open an issue please
+fi
+
+[ -z "$COMMAND_STR" ] && exit 1
+
+if [[ -n "${HIST_FILE}" && ! "$SKIP_HIST" ]]; then
+ # update history
+ for i in "${!HIST_LINES[@]}"; do
+ if [[ "${HIST_LINES[i]}" == *" $COMMAND_STR"$'\n' ]]; then
+ HIST_COUNT=${HIST_LINES[i]%% *}
+ HIST_LINES[$i]="$((HIST_COUNT + 1)) $COMMAND_STR"$'\n'
+ match=1
+ break
+ fi
+ done
+ if ! ((match)); then
+ HIST_LINES+=("1 $COMMAND_STR"$'\n')
+ fi
+
+ printf '%s' "${HIST_LINES[@]}" | sort -nr >"$HIST_FILE"
+fi
+
+# shellcheck disable=SC2086
+readarray -d $'\034' -t PARAMS <<<${COMMAND_STR}
+# shellcheck disable=SC2086
+readarray -d ${DEL} -t PROVIDER_ARGS <<<${PROVIDERS[${PARAMS[1]}]}
+# Substitute {1}, {2} etc with the correct values
+COMMAND=${PROVIDER_ARGS[2]//\{1\}/${PARAMS[0]}}
+COMMAND=${COMMAND//\{2\}/${PARAMS[3]}}
+COMMAND=${COMMAND%%[[:space:]]}
+
+if [ -t 1 ]; then
+ echo "Launching command: ${COMMAND}" >&3
+ setsid /bin/sh -c "${COMMAND}" >&/dev/null </dev/null &
+ sleep 0.01
+else
+ echo "${COMMAND}"
+fi
diff --git a/.config/st b/.config/st
new file mode 160000
+Subproject 688f70add0d1da8a416bf7df763328d694a24a3
diff --git a/.config/sway/config b/.config/sway/config
new file mode 100755
index 0000000..6230e4c
--- /dev/null
+++ b/.config/sway/config
@@ -0,0 +1,103 @@
+include ./monitors
+include ./exec
+include ./visuals
+
+set $mod Mod4
+
+# direction keys
+set $left h
+set $down j
+set $up k
+set $right l
+
+set $term foot
+set $menu foot --app-id otter-launcher -T foot otter-launcher
+for_window [app_id="otter-launcher"] floating enable
+
+# Screenshots
+set $scsh grim -g "$(slurp)" - | wl-copy
+set $fullscsh grim - | wl-copy
+
+### Input configuration
+# input "2:14:SynPS/2_Synaptics_TouchPad" {
+# dwt enabled
+# tap enabled
+# natural_scroll enabled
+# middle_emulation enabled
+# }
+#
+# You can get the names of your inputs by running: swaymsg -t get_inputs
+
+# -Key bindings-
+# Basics:
+ bindsym $mod+Return exec $term
+ bindsym $mod+c kill
+ bindsym $mod+r exec $menu
+ floating_modifier $mod normal
+ bindsym $mod+Shift+r reload
+ bindsym $mod+Shift+e exit
+
+# Moving around:
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+
+# Workspaces:
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ bindsym $mod+n workspace number 11
+ bindsym $mod+m workspace number 12
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 10
+ bindsym $mod+Shift+n move container to workspace number 11
+ bindsym $mod+Shift+m move container to workspace number 12
+# You might want to change the keybinds for 11 and 12 ^
+
+# Layout stuff:
+ bindsym $mod+b splith
+ bindsym $mod+v splitv
+ bindsym $mod+s layout stacking
+ bindsym $mod+w layout tabbed
+ bindsym $mod+e layout toggle split
+
+ bindsym $mod+f fullscreen
+
+ # Toggle the current focus between tiling and floating mode
+ bindsym $mod+space floating toggle
+
+# Utilities:
+ # Volume
+ bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
+ bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
+ bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
+ bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
+ # Brightness
+ bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
+ bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
+ # Screenshots
+ bindsym Print exec grim -g "$(slurp)" - | wl-copy
+ bindsym Shift+Print exec grim - | wl-copy
+
+include @sysconfdir@/sway/config.d/*
diff --git a/.config/sway/exec b/.config/sway/exec
new file mode 100755
index 0000000..8d21cb7
--- /dev/null
+++ b/.config/sway/exec
@@ -0,0 +1,7 @@
+exec export QT_QPA_PLATFORMTHEME=qt6ct
+exec export XDG_CURRENT_DESKTOP=sway
+exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway
+exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP
+exec systemctl --user start xdg-desktop-portal-wlr.service
+exec syncthing
+exec $term
diff --git a/.config/sway/monitors b/.config/sway/monitors
new file mode 100755
index 0000000..2eb991e
--- /dev/null
+++ b/.config/sway/monitors
@@ -0,0 +1,10 @@
+# Wallpaper
+output * bg ~/.config/sway/walls/caelus.png fill
+
+# My monitors (change to work for yours):
+output DP-2 res 1920x1080@143.981Hz pos 0,0
+output DP-1 res 1920x1080@74.973Hz pos 1920,0
+output HDMI-A-1 modeline 141.50 1920 2032 2232 2544 1080 1083 1088 1114 -hsync +vsync
+output HDMI-A-1 pos 960,-1080
+
+# You can get the names of your outputs by running: swaymsg -t get_outputs
diff --git a/.config/sway/visuals b/.config/sway/visuals
new file mode 100755
index 0000000..7d8f3de
--- /dev/null
+++ b/.config/sway/visuals
@@ -0,0 +1,44 @@
+gaps inner 2px
+gaps outer 2px
+
+default_border pixel 2px
+default_floating_border pixel 2px
+
+# cursor
+seat seat0 xcursor_theme Bibata-Original-Ice 14
+
+# Status Bar:
+bar {
+ swaybar_command swaybar
+ font Terminess Nerd Font Bold Regular 12
+ position top
+ workspace_min_width 36
+ tray_padding 4
+ colors {
+ background #141514
+ statusline #ef934d
+ separator #ef934d
+ focused_background #1e1f1e
+ focused_statusline #ef934d
+ focused_separator #ef934d
+ focused_workspace #ef934d #ef934d #141514
+ active_workspace #7ec97e #7ec97e #141514
+ inactive_workspace #3b403c #3b403c #f4decd
+ urgent_workspace #f16e65 #f16e65 #141514
+ binding_mode #71b4d6 #71b4d6 #141514
+ }
+}
+
+# -Colors-
+# name border bg text ind child_border
+client.focused #ef944d #141514 #f4decd #ef944d #ef944d
+client.focused_inactive #1e1f1e #141514 #f4decd #1e1f1e #1e1f1e
+client.unfocused #1e1f1e #141514 #f4decd #1e1f1e #1e1f1e
+client.urgent #f16e65 #141514 #f4decd #f16e65 #f16e65
+client.placeholder #1e1f1e #141514 #f4decd #1e1f1e #1e1f1e
+
+# Swayfx
+# comment these out if you don't use swayfx
+#blur enable
+#corner_radius 6
+#shadows enable
diff --git a/.config/sway/walls/caelus.png b/.config/sway/walls/caelus.png
new file mode 100644
index 0000000..7e8033d
--- /dev/null
+++ b/.config/sway/walls/caelus.png
Binary files differ